Что это значит, когда Term::ReadKey::ReadKey возвращает "0"?
С dumpkeys --long-info
При вызове в Linux-терминале я получаю следующие значения:
# ...
0x0000 nul
0x0001 Control_a
0x0002 Control_b
0x0003 Control_c
0x0004 Control_d
# ...
Когда я запускаю этот скрипт и нажимаю Ctrl a
или же Ctrl b
Я получаю соответствующие значения.
Когда я нажимаю Ctrl Space
ReadKey
возвращается 0
,
Означает ли это ноль, что это значение Ctrl Space
или это означает, что что-то не установлено или пусто?
#!/usr/bin/env perl
use warnings;
use strict;
use Term::ReadKey;
ReadMode('cbreak');
print "Press keys to see their ASCII values. Use Ctrl-C to quit.\n";
while (1) {
my $char = ReadKey(0);
last unless defined $char;
printf("$char -> Hex: %x\n", ord($char), ord($char));
}
ReadMode('normal');
# -> Hex: 1 # Ctrl a
# -> Hex: 2 # Ctrl b
# -> Hex: 4 # Ctrl d
# -> Hex: 0 # Ctrl Space
1 ответ
Решение
showkey -a
показывает мне
^A 1 0001 0x01 # Ctrl a
^B 2 0002 0x02 # Ctrl b
^@ 0 0000 0x00 # Ctrl Space
и в этом ответе сказано, что CtrlSpace отправляет ASCII NUL, поэтому я предполагаю, что 0 для CtrlSpace, что 1 для Ctrla