C # ServiceDescriptionImporter NoCodeGenerated Я не могу найти проблему

Не уверен, что это ответ на вопрос напрямую, но я думаю, что это связано - я блуждал, откуда берутся эти коды, и я наконец нашел:

Сначало немного сложно читать; для левой стрелки найдите «LEFT 4» в столбце «Key», а для последовательности, которую видит bash, найдите пятый столбец «keymap» - «normal»), где он написан как «[D 1b 5b 44 "- это три байта (27, 91, 68), представляющие этот ключ.

Поиск потока Как читать клавиши со стрелками по действительно старому bash? - Форумы UNIX и Linux вдохновили меня написать короткий однострочный вкладыш, который сбрасывает коды клавиш нажатых клавиш. В основном, вы нажимаете клавишу, затем Enter (для запуска окончания read), а затем используйте hexdump для вывода того, что read сохранил (и, наконец, нажмите Ctrl-C, чтобы выйти из цикла):

$ while true; do read -p?; echo -n $REPLY | hexdump -C; done
?^[[D     
00000000  1b 5b 44                                          |.[D| # left arrow
00000003
?^[[C
00000000  1b 5b 43                                          |.[C| # right arrow
00000003
?^[[1;2D
00000000  1b 5b 31 3b 32 44                                 |.[1;2D| # Shift+left arrow
00000006
?^[[1;2C
00000000  1b 5b 31 3b 32 43                                 |.[1;2C| # Shift+right arrow
00000006
?^C

Итак, в то время как клавиши со стрелками требуют 3 байта - клавиши Shift + стрелки требуют 6! Однако, казалось бы, все эти последовательности начинаются с 0x1b (27), поэтому можно проверить это значение для read -n1, прежде чем читать больше байтов; также 5b остается вторым байтом в многобайтовой последовательности для столбцов «normal» и «shift / NUM-Lock» в таблице выше.


Изменить: намного проще и правильнее сканирование терминальных кодов нажатых клавиш в Linux осуществляется через showkey :

$ showkey 
Couldn't get a file descriptor referring to the console

$ showkey -h
showkey version 1.15

usage: showkey [options...]

valid options are:

    -h --help   display this help text
    -a --ascii  display the decimal/octal/hex values of the keys
    -s --scancodes  display only the raw scan-codes
    -k --keycodes   display only the interpreted keycodes (default)

$ sudo showkey -a

Press any keys - Ctrl-D will terminate this program

^[[A     27 0033 0x1b
         91 0133 0x5b
         65 0101 0x41
^[[B     27 0033 0x1b
         91 0133 0x5b
         66 0102 0x42
^[[A     27 0033 0x1b
         91 0133 0x5b
         65 0101 0x41
^[[D     27 0033 0x1b
         91 0133 0x5b
         68 0104 0x44
^[[C     27 0033 0x1b
         91 0133 0x5b
         67 0103 0x43
^C       3 0003 0x03
^M       13 0015 0x0d
^D       4 0004 0x04

0
задан Paul Kertscher 27 February 2019 в 14:34
поделиться