5 |
## $Id$ |
## $Id$ |
6 |
## |
## |
7 |
## $Log$ |
## $Log$ |
8 |
|
## Revision 1.8 2002/06/15 08:08:51 cvsjoko |
9 |
|
## + modifications in Term::ReadKey behaviour |
10 |
|
## |
11 |
|
## Revision 1.7 2002/06/15 07:56:40 cvsjoko |
12 |
|
## + bugfixes for win32 (additional keys) |
13 |
|
## |
14 |
## Revision 1.6 2002/06/15 07:46:11 cvsjoko |
## Revision 1.6 2002/06/15 07:46:11 cvsjoko |
15 |
## + bugfixes for linux |
## + bugfixes for linux |
16 |
## |
## |
88 |
map { $self->{$_} = $args->{$_}; } keys %{$args}; |
map { $self->{$_} = $args->{$_}; } keys %{$args}; |
89 |
|
|
90 |
if ( RUNNING_IN_HELL () ) { |
if ( RUNNING_IN_HELL () ) { |
91 |
$self->{conf}{EnterKey} = "\r"; |
$self->{conf}{KeyEnter} = 13; |
92 |
|
$self->{conf}{KeyBackspace} = 8; |
93 |
|
$self->{conf}{KeyCTRLC} = 3; |
94 |
} else { |
} else { |
95 |
$self->{conf}{EnterKey} = "\n"; |
$self->{conf}{KeyEnter} = 10; |
96 |
|
$self->{conf}{KeyBackspace} = 127; |
97 |
|
$self->{conf}{KeyCTRLC} = 3; |
98 |
} |
} |
99 |
|
|
100 |
## Make our session. See $states defined up above . . . |
## Make our session. See $states defined up above . . . |
126 |
$heap->{state}{RequestPending} = 0; |
$heap->{state}{RequestPending} = 0; |
127 |
|
|
128 |
# initially call worker-state |
# initially call worker-state |
129 |
ReadMode 4; |
ReadMode 3; |
130 |
$kernel->post($session, "pollForKey"); |
$kernel->post($session, "pollForKey"); |
131 |
|
|
132 |
return; |
return; |
221 |
#print "key: ", ord($key), "\n"; |
#print "key: ", ord($key), "\n"; |
222 |
|
|
223 |
# CTRL+C pressed? |
# CTRL+C pressed? |
224 |
if (ord($key) == 3) { |
if (ord($key) == $self->{conf}{KeyCTRLC}) { |
225 |
ReadMode 1; |
ReadMode 0; |
226 |
print "\n"; |
print "\n"; |
227 |
exit; |
exit; |
228 |
} |
} |
229 |
|
|
230 |
# enter pressed? |
# enter pressed? |
231 |
if (ord($key) == 10) { |
if (ord($key) == $self->{conf}{KeyEnter}) { |
232 |
|
|
233 |
# if enter was pressed while request was pending, |
# if enter was pressed while request was pending, |
234 |
# we should stop waiting for output and come back to prompt again, |
# we should stop waiting for output and come back to prompt again, |
254 |
} |
} |
255 |
|
|
256 |
# backspace pressed? |
# backspace pressed? |
257 |
elsif (ord($key) == 127) { |
elsif (ord($key) == $self->{conf}{KeyBackspace}) { |
258 |
$heap->{state}{InputBuffer} = substr($heap->{state}{InputBuffer}, 0, -1); |
$heap->{state}{InputBuffer} = substr($heap->{state}{InputBuffer}, 0, -1); |
259 |
} |
} |
260 |
|
|
261 |
|
# unknown key? |
262 |
|
elsif (ord($key) == 0) { |
263 |
|
} |
264 |
|
|
265 |
# normal key? |
# normal key? |
266 |
#elsif ($key =~ m/[a-zA-Z? ]/) { |
#elsif ($key =~ m/[a-zA-Z? ]/) { |
267 |
else { |
else { |
274 |
|
|
275 |
} |
} |
276 |
|
|
277 |
|
#$kernel->post($session, "pollForKey"); |
278 |
#$kernel->run_one_timeslice(); |
#$kernel->run_one_timeslice(); |
279 |
$kernel->post($session, "pollForKey"); |
#$kernel->post($session, "pollForKey"); |
280 |
#$kernel->yield($session, "pollForKey"); |
#$kernel->yield($session, "pollForKey"); |
281 |
#$kernel->delay("pollForKey", 0.1); |
#$kernel->delay("pollForKey", 0.1); |
282 |
#$kernel->delay("pollForKey", 0.01); |
$kernel->delay("pollForKey", 0.001); |
283 |
|
|
284 |
} |
} |
285 |
|
|