#!/usr/bin/perl -w
use strict;
use warnings;
use IO::Handle;
eval {
my $stdin = new IO::Handle;
$stdin->fdopen( fileno( STDIN ), "r" ) || die "Cannot open STDIN";
system "stty -icanon -isig -echo min 1 time 0";
while ( my $char = $stdin->getc() ) {
print "Up\n" if ( ord( $char ) == 65 ); # up
print "Down\n" if ( ord( $char ) == 66 ); # down
print "Right\n" if ( ord( $char ) == 67 ); # right arrow
print "Left\n" if ( ord( $char ) == 68 ); # left arrow
print "Return\n" if ( ord( $char ) == 10 ); # return key
print "Delete\n" if ( ord( $char ) == 127 ); # delete key
print "Esc\n" if ( ord( $char ) == 27 ); # escape key
print "Tab\n" if ( ord( $char ) == 9 ); # tab key
next if ( ord( $char ) == 32 ); # skip on space key
last if ( $char =~ /q/ ); # break on q
last if ( $char =~ /\003/ ); # break on Ctrl-C
last if ( $char =~ /\032/ ); # break on Ctrl-Z
print "ord: " . ord($char) . "\n";
}
system "stty icanon echo isig";
exit(0);
};
if ( $@ ) {
print "$@\n";
system "stty icanon echo isig";
exit(1);
}
In reply to Re^2: Arrow Keys
by Anonymous Monk
in thread Arrow Keys
by mbond
| For: | Use: | ||
| & | & | ||
| < | < | ||
| > | > | ||
| [ | [ | ||
| ] | ] |