Perlで矢印キーを取得する
Perlで矢印キーを取得するにはTerm::ReadKeyを使えば良いらしい。
Term::ReadKeyをインストール
cpan Term::ReadKey
を実行してイントールする。
インストールが完了したらPerlでキー入力を取得してみる。
1 #!/usr/local/bin/perl 2 3 use Term::ReadKey; 4 5 ReadMode 4; 6 7 while( (my $key = ReadKey(0)) ne 'q') { 8 #カーソルキー入力 9 my $arrowkey = 0; 10 if (ord($key) == 27) { 11 my $code = ord(ReadKey -1); 12 if ($code == 91) { 13 my $arrowkey = ord(ReadKey -1); 14 print "Press-Key Left\n" if ( $arrowkey == 68 ); 15 print "Press-Key Right\n" if ( $arrowkey == 67 ); 16 print "Press-Key Up\n" if ( $arrowkey == 65 ); 17 print "Press-Key Down\n" if ( $arrowkey == 66 ); 18 } 19 } else { 20 print "Press-Key $key\n"; 21 } 22 }
7行目 $key=ReadKey(0)で$keyにキー入力データが入る。アルファベットや数字はそのまま文字として$keyに格納されるので(q)キーが押されるまでループする。
10-12行目は矢印キーが入力されたかのチェック。矢印キーはエスケープ文字であるのでこのように順に処理していくらしい。
実行して、a b c カーソル右 カーソル上 カーソル左 カーソル下を入力すると、
Press-Key a Press-Key b Press-Key c Press-Key Right Press-Key Up Press-Key Left Press-Key Down