Как заставить 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 в 00:45

1 ответ

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

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

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

Эмуляторы терминала не распознают эти последовательности, о которых Вы говорите. Они испускают их, и на терминальном основанные приложения (текстовые редакторы, файловые менеджеры и т.д.) распознают их.

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

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

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

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

2
ответ дан 2 December 2019 в 03:36

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

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