Для того, что я пробовал, "TAB" и "Ci" в .inputrc, кажется, означают одно и то же, все, что я связываю с одним, связано с другим. Я знаю, что первоначально это было то же самое, и что это поведение отчасти унаследовано от старых времен, но в настоящее время, кроме эмуляторов терминалов, все X-приложения делают разницу между Ci и TAB-прессом.

Так есть ли способ запустить команду терминала (например, "завершить"), когда я нажимаю клавишу TAB, и запустить другую команду, когда я нажимаю "Ci"?

(тот же вопрос относится к Cm и ENTER, Cz, Cd и ко всем этим управляющим последовательностям, которые я хотел бы отправить другими способами, кроме их первоначальной привязки, и применить мои собственные команды к этим драгоценным сочетаниям клавиш)

И, кстати, если бы вы могли немного объяснить процесс от нажатия клавиши до интерпретации оболочки, это помогло бы мне понять. На данный момент я понял, что события клавиатуры транслируются Xmodmap, а затем .inputrc, и что результат интерпретируется оболочкой или чем-то вроде этого.

1 ответ1

0

Нет прямой связи между xmodmap и .inputrc .

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

  • изменение конфигурации клавиатуры X (xkb)
  • изменение кодов клавиш, отправляемых для данного события (xmodmap)
  • специфичные для терминала вещи, такие как ресурс translations используемый xterm.

Однако в обычной ситуации, control/I отправляет символ табуляции, потому что так настроены почти все терминалы.

С xkb вы можете (в принципе) изменить то, что делает клавиатура. В свою очередь, приложения X обнаруживают события нажатия и отпускания клавиш и переводят их в символы клавиш. xev полезен для отображения событий. Эмулятор терминала, работающий в X, получает серию событий, которые (используя вызовы библиотеки X) он может преобразовывать в символы. В этом случае tab - это просто еще один символ.

Роль xmodmap в этом процессе будет заключаться в специальном изменении конфигурации клавиатуры X.

Если вы используете xterm , ресурс translations предоставляет много возможностей для конфигурирования. Это особенность X Toolkit , которая позволяет связывать различные комбинации клавиш со встроенными действиями xterm. Привязки клавиш по умолчанию перечислены в руководстве. Вы можете переопределить или добавить эти привязки. Есть несколько мест, где вы можете установить информацию ($HOME/.Xdefaults например, хотя это может легко загромождаться). Например, я установил переменную среды XAPPLRESDIR чтобы она указывала на мой пользовательский каталог, который содержит настроенные по умолчанию файлы приложения. В одном из них с именем XTerm я мог бы поместить это, чтобы изменить результат ctrl/I:

*VT100*translations:    #override \n\ 
    Ctrl ~Shift<Key>I:string("??")

Поскольку клавиша табуляции имеет свой собственный специальный символ клавиши, этот перевод не затрагивает ее.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .