Что это значит, когда 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 SpaceReadKey возвращается 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

Другие вопросы по тегам