2014-12-06 51 views
0

我正在做一些简单的项目,我希望使用箭头在控制台菜单中导航。我需要向下和向上的箭头让我改变选定的菜单项(我用一些颜色绘制菜单)。我不想通过输入来确认每个箭头(atm我正在使用需要输入的简单印章,而且我甚至不知道如何允许箭头印刷)。我需要某种自动检测箭头有没有什么好的解决方案?允许在控制台菜单中使用箭头的Perl

+1

“没有箭头键(终端窗口中的敏感键代码)。使用cat -vet可以知道键的期望顺序。” (来自http://www.perlmonks.org/?node_id=798213) – DavidO 2014-12-06 19:12:43

+0

查看'Term :: ReadKey'。 – dgw 2014-12-07 13:35:20

+0

我是使用Term:ReadKey,但是在阅读密钥后,我需要知道如何创建条件。 if(readedKey ==?keyup?){...} if(readedKey ==?keydown?){...} – user2771738 2015-01-14 10:10:14

回答

0

我需要知道如何使条件。如果(readedKey == KEYUP?){...} 如果(readedKey ==的keydown?){...}

你可以use Curses;例如:

#!/usr/bin/perl -w 
use Curses; 
initscr; refresh; 
keypad(1); # enable arrow keys to return a single value 
noecho; 
print "Press Esc to end.\r\n"; 
while (($readedKey = getch()) ne "\e") 
{ 
    if ($readedKey eq KEY_UP) { print "You pressed the up arrow.\r\n"; } 
    elsif ($readedKey eq KEY_DOWN) { print "You pressed the down arrow.\r\n"; } 
    else 
    { 
     ($printable = $readedKey) =~ s'[[:cntrl:]]'"^".chr(ord($&)^64)'e; 
     print "You pressed the key '$printable'.\r\n"; 
    } 
} 
endwin;