отдельные отображения для TAB и Ci в .inputrc

отдельные отображения для TAB и Ci в .inputrc

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

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

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

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

решение1

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

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

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

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

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

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

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

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

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

Связанный контент