-
Notifications
You must be signed in to change notification settings - Fork 5
/
typingspeed.pl
69 lines (62 loc) · 2 KB
/
typingspeed.pl
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
use strict;
use Irssi::TextUI;
use Time::HiRes;
# SETTINGS:
# [Log]
# typingspeedlog_file
# The path to the logfile. For example: /home/dude/typingspeed.log
#
# Changelog:
#
# 2007-11-11 (version 0.2.5)
# * File logging! Thanks to the three lines of code from Jeroen van Nieuwenhuizen (http://www.jeroen.se/blog/).
#
# 2007-11-10 (version 0.2)
# * Fix: Changed from Irssi::timeout to Time::HiRes. Irssi::timeout leaks memory. Thanks to Bas Zoetekouw for the solution. (no blog)
use vars qw($VERSION %IRSSI);
$VERSION = '0.2.5';
%IRSSI = (
authors => 'Tijmen Ruizendaal',
contact => 'tijmen.ruizendaal@gmail.com',
name => 'typingspeed.pl',
description => 'Adds a statusbar item (typing_speed) which shows the number of chars per minute in the last message',
license => 'GPLv2',
url => 'http://the-timing.nl',
changed => '2007-11-11'
);
my $length;
my $chars_per_minute;
my $seconds;
Irssi::signal_add_last 'gui key pressed' => sub {
my $key = shift;
if($key == 10){
$seconds = Time::HiRes::gettimeofday() - $seconds;
if($seconds != 0){
$chars_per_minute = int((($length-1)*60)/$seconds);
Irssi::statusbar_items_redraw('typing_speed');
if (Irssi::settings_get_str('typingspeedlog_file') ne '' && $chars_per_minute > 0 && $chars_per_minute < 1000 ) {
my $filename = Irssi::settings_get_str('typingspeedlog_file');
open (F,">>$filename") ;
print F time()." ".$chars_per_minute."\n" ;
close F ;
}
}
$seconds=0;
}else{
my $width = 0;
my $padChar = "";
$length = Irssi::parse_special ( "\$[-!$width$padChar]\@L" );
}
if($length == 1){
$seconds = Time::HiRes::gettimeofday();
}elsif($length == 0){
$seconds=0;
}
};
sub typing_speed {
my ($item, $get_size_only) = @_;
$item->default_handler($get_size_only, "{sb chars/minute: $chars_per_minute}", undef, 1);
}
Irssi::settings_add_str("log","typingspeedlog_file",'');
Irssi::statusbar_item_register('typing_speed', undef, 'typing_speed');
Irssi::statusbars_recreate_items();