5 |
## $Id$ |
## $Id$ |
6 |
## |
## |
7 |
## $Log$ |
## $Log$ |
8 |
|
## Revision 1.4 2002/06/15 04:28:10 cvsjoko |
9 |
|
## immediate polling, no delay |
10 |
|
## |
11 |
|
## Revision 1.3 2002/06/15 04:24:15 cvsjoko |
12 |
|
## + added modifier for running in linux or win32 |
13 |
|
## + modified order of some commands in core key-polling |
14 |
|
## |
15 |
## Revision 1.2 2002/06/15 03:45:21 cvsjoko |
## Revision 1.2 2002/06/15 03:45:21 cvsjoko |
16 |
## + cvs id & log |
## + cvs id & log |
17 |
## + clearing inputbuffer just after getting the "enter"-key |
## + clearing inputbuffer just after getting the "enter"-key |
55 |
recieveResponse => 'recieveResponse', |
recieveResponse => 'recieveResponse', |
56 |
}; |
}; |
57 |
|
|
58 |
|
sub RUNNING_IN_HELL () { $^O eq 'MSWin32' } |
59 |
|
|
60 |
sub new { |
sub new { |
61 |
my $class = shift; |
my $class = shift; |
62 |
$class = ref( $class ) || $class; |
$class = ref( $class ) || $class; |
75 |
# store entries from args to object ($self) |
# store entries from args to object ($self) |
76 |
map { $self->{$_} = $args->{$_}; } keys %{$args}; |
map { $self->{$_} = $args->{$_}; } keys %{$args}; |
77 |
|
|
78 |
|
if ( RUNNING_IN_HELL () ) { |
79 |
|
$self->{conf}{EnterKey} = "\r"; |
80 |
|
} else { |
81 |
|
$self->{conf}{EnterKey} = "\n"; |
82 |
|
} |
83 |
|
|
84 |
## Make our session. See $states defined up above . . . |
## Make our session. See $states defined up above . . . |
85 |
POE::Session->create( object_states => [ $self => $states, ], ); |
POE::Session->create( object_states => [ $self => $states, ], ); |
86 |
|
|
196 |
my $key = ReadKey(-1); |
my $key = ReadKey(-1); |
197 |
if ($key) { |
if ($key) { |
198 |
|
|
|
$heap->{state}{KeyPressed} = 1; |
|
|
|
|
199 |
# normal key? |
# normal key? |
200 |
if ($key =~ m/[a-zA-Z? ]/) { |
if ($key =~ m/[a-zA-Z? ]/) { |
201 |
$heap->{state}{InputBuffer} .= $key; |
$heap->{state}{InputBuffer} .= $key; |
203 |
} |
} |
204 |
|
|
205 |
# enter pressed? |
# enter pressed? |
206 |
if ($key eq "\r") { |
if ($key eq $self->{conf}{EnterKey}) { |
207 |
# send command |
# send command |
208 |
my $buf = $heap->{state}{InputBuffer}; |
my $buf = $heap->{state}{InputBuffer}; |
209 |
if ($buf) { |
if ($buf) { |
226 |
$heap->{state}{InputBuffer} = substr($heap->{state}{InputBuffer}, 0, -1); |
$heap->{state}{InputBuffer} = substr($heap->{state}{InputBuffer}, 0, -1); |
227 |
} |
} |
228 |
|
|
229 |
|
# mark "KeyPressed" for next poll |
230 |
|
$heap->{state}{KeyPressed} = 1; |
231 |
|
|
232 |
} |
} |
233 |
|
|
|
|
|
234 |
$kernel->post($session, "pollForKey"); |
$kernel->post($session, "pollForKey"); |
235 |
#$kernel->delay("term_work", 0.1); |
#$kernel->delay("pollForKey", 0.1); |
236 |
|
#$kernel->delay("pollForKey", 0.01); |
237 |
|
|
238 |
} |
} |
239 |
|
|