Как получить tty для распознавания shift-F2 (и других комбинаций клавиш)?

Во-первых, извиняюсь, если мой вопрос или терминология не имеет смысла - я все еще обертываю голову вокруг терминала, консоли, оболочки и т. д.

Я могу использовать ярлык Shift + F2 в приложении в терминале, запущенном на рабочем столе, но я не могу использовать его в терминале tty. Некоторые другие ярлыки тоже не работают, например Ctrl + F6. Используя Ctrl + V, а затем F1, чтобы напечатать его значение символа, я вижу, что они отличаются - на настольном терминале с TERM=xterm-256color, Shift + F2 возвращает ^[[1;2Q, тогда как в tty1 с TERM=linux он возвращает ^[[26~. Установка tty в качестве xterm с export TERM=xterm-256color заставляет клавиши F возвращать буквы (даже не нажимая сначала Ctrl + V), а нажатие Shift + F2 просто печатает ~.

Есть ли способ виртуальные терминалы tty распознают все те же ярлыки и комбинации клавиш, что и X-терминал?

2
задан 12 November 2017 в 01:45

1 ответ

Во-первых, вы не должны устанавливать TERM=xterm-256color в консоли Linux, большинство приложений не смогут работать должным образом. Stick TERM=linux.

Во-вторых, давайте поясним, что изменение значения TERM не изменяет escape-последовательности, сгенерированные нажатием клавиши. Графический эмулятор или ядро ​​Linux в случае, если вы используете консоль, не можете увидеть, измените ли вы переменную окружения в процессе, запущенном «внутри» эмулятора терминала; на самом деле в этом терминале (их стандартный вход, подключенный там) может быть несколько процессов с различными переменными TERM. Изменение TERM может измениться, но как приложение реагирует на эти нажатия клавиш.

Есть ли способ, чтобы виртуальные терминалы tty распознавали все те же ярлыки и комбинации клавиш, что и терминал X?

Терминальные эмуляторы не не эти последовательности, о которых вы говорите.

Запустите infocmp (или infocmp [terminal-name], например, infocmp linux), чтобы указать возможности / функции терминала, включая последовательности, сгенерированные функциональными клавишами. Найдите kf2 для F2 и kf14 для Shift + F2. Как правило, Shift должен приводить к смещению 12.

Насколько я помню из нескольких лет назад, некоторые из клавиш на консоли Linux имеют смещение 10 вместо этого, и это расхождение потенциально вызывает все

Вы не упомянули, как (например, в каком приложении) вы пытаетесь поймать эти нажатия клавиш. Если вы настраиваете существующую часть программного обеспечения, которая требует конкретных последовательностей, вам, вероятно, придется научить ее (по крайней мере) двум различным значениям: одному для xterm и друзей, а одному для linux.

Если вы разрабатываете собственное приложение и не хотите, чтобы escape-последовательности были жестко закодированы или указаны в конфигурационном файле, вы должны, вероятно, полагаться на libtinfo для чтения возможностей terminfo или использовать экран и клавиатуру более высокого уровня например, ncurses или slang.

2
ответ дан 18 July 2018 в 03:26

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

Похожие вопросы: