我在 ReadMode('cbreak') 中使用 Term::ReadKey 读取单个字符并根据输入执行操作。这适用于除箭头键之外的所有其他键。按下箭头键时,该动作执行了 3 次,我理解这是因为箭头键转换为 '^[[A' 等...
如何将箭头键转换为 ReadKey 可以解释的任意单个值?
我尝试了以下代码,但它不起作用:
use Term::ReadKey;
ReadMode('cbreak');
my $keystroke = '';
while ($keystroke ne 'h') {
print "Enter key: ";
#Read user keystroke
$keystroke = ReadKey(0);
chomp($keystroke);
if(ord($keystroke) == 27) {
$keystroke = ('0');
}
}
这是我基于建议的代码:
use Term::RawInput;
use strict;
use warnings;
my $keystroke = '';
my $special = '';
while(lc($keystroke) ne 'i' && lc($keystroke) ne 't'){
my $promptp = "Enter key: ";
($keystroke,$special) = rawInput($promptp, 1);
if ($keystroke ne '') {
print "You hit the normal '$keystroke' key\n";
} else {
print "You hit the special '$special' key\n";
}
chomp($keystroke);
$keystroke = lc($keystroke);
}
if($keystroke eq 'i') {
#Do something
}
if($keystroke eq 't') {
#Do something
}
现在,无论我按什么,我都无法退出这个循环
这是输出:
Enter key:
Enter key:
Enter key: You hit the normal 't' key
#Proceeds to function