2

Я хочу перепривязать Caps Lock, чтобы скрыться в z-shell, чтобы лучше использовать vi-режим в редакторе строк z-shell. Я не хочу связывать это для всей системы. Это возможно?

(если это имеет значение, я на Debian)

1 ответ1

1

Нет, потому что это не делается оболочкой Z.

Исходные события создания / прерывания клавиатуры поступают с устройства клавиатуры. Они обрабатываются эмулятором терминала - встроенным в ядро операционной системы или графическим интерфейсом, таким как xterm , gnome-terminal , lxterminal и так далее. Эмулятор терминала преобразует события клавиатуры в последовательности символов и помещает их в "ведущую" сторону псевдотерминала или (обычно скрытую) "ведущую" сторону виртуальной консоли. Они проходят через дисциплину терминальной линии, и только тогда Z-оболочка увидит результат, как ввод, считанный со стороны "ведомого" псевдотерминала / виртуальной консоли.

Клавиши "блокировка" и "модификатор" не обрабатываются в дисциплине линии. Вспомните времена реальных терминалов (а не "псевдо" и "виртуальных" терминалов), подключенных через последовательные линии, чтобы понять это. Символы, которые проходят по последовательной линии от терминала к системе, уже имеют примененные модификаторы. caps lock plus a уже переведен терминалом в "A", и это то, что отправляется терминалом, а что поступает в дисциплину линии. (Точно так же, control и c уже были переведены терминалом в символ ASCII ETX .)

Таким образом, чтобы настроить то, что делает caps lock - или вообще любой другой модификатор - вы должны настроить терминал. В вашем случае вам нужно настроить эмулятор терминала, который вы используете.

  • С эмуляторами терминалов на основе X Window System вы можете получить фантазию с отображениями клавиатуры X, так как существует слой X между необработанным клавиатурным устройством и программой эмулятора терминала.
  • С эмуляторами терминала, встроенными в операционные системы, обычно существует совершенно другая система сопоставления клавиатуры, включающая в себя слой сопоставления клавиш и символов операционной системы в ядре операционной системы, с которым вы можете играть. Он сильно варьируется от ядра к ядру (то есть от Linux до BSD), и то, какие инструменты вы используете для его настройки, сильно различается даже от дистрибутива Linux до дистрибутива Linux (например, от localectl через dpkg- reconfigure dpkg-reconfigure console-setup до invoke-rc.d console-screen.sh).

Но поскольку это меняет поведение вашего терминала, это повлияет на каждую программу, которая получает данные от этого терминала. Для эмулятора терминала с графическим интерфейсом это повлияет на каждую программу, которую вы запускаете, и которая получает данные от этого псевдотерминала. Для эмулятора терминала в ядре, которое обрабатывает виртуальные консоли, это повлияет на каждую программу, которая получает данные от этой виртуальной консоли.

Это не повлияет на всю систему, но повлияет гораздо больше, чем вы хотите, а именно на оболочку Z.

дальнейшее чтение

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