Я хочу перепривязать Caps Lock, чтобы скрыться в z-shell, чтобы лучше использовать vi-режим в редакторе строк z-shell. Я не хочу связывать это для всей системы. Это возможно?
(если это имеет значение, я на Debian)
Я хочу перепривязать Caps Lock, чтобы скрыться в z-shell, чтобы лучше использовать vi-режим в редакторе строк z-shell. Я не хочу связывать это для всей системы. Это возможно?
(если это имеет значение, я на Debian)
Исходные события создания / прерывания клавиатуры поступают с устройства клавиатуры. Они обрабатываются эмулятором терминала - встроенным в ядро операционной системы или графическим интерфейсом, таким как xterm
, gnome-terminal
, lxterminal
и так далее. Эмулятор терминала преобразует события клавиатуры в последовательности символов и помещает их в "ведущую" сторону псевдотерминала или (обычно скрытую) "ведущую" сторону виртуальной консоли. Они проходят через дисциплину терминальной линии, и только тогда Z-оболочка увидит результат, как ввод, считанный со стороны "ведомого" псевдотерминала / виртуальной консоли.
Клавиши "блокировка" и "модификатор" не обрабатываются в дисциплине линии. Вспомните времена реальных терминалов (а не "псевдо" и "виртуальных" терминалов), подключенных через последовательные линии, чтобы понять это. Символы, которые проходят по последовательной линии от терминала к системе, уже имеют примененные модификаторы. caps lock plus a уже переведен терминалом в "A", и это то, что отправляется терминалом, а что поступает в дисциплину линии. (Точно так же, control и c уже были переведены терминалом в символ ASCII ETX
.)
Таким образом, чтобы настроить то, что делает caps lock - или вообще любой другой модификатор - вы должны настроить терминал. В вашем случае вам нужно настроить эмулятор терминала, который вы используете.
localectl
через dpkg- reconfigure dpkg-reconfigure console-setup
до invoke-rc.d console-screen.sh
).Но поскольку это меняет поведение вашего терминала, это повлияет на каждую программу, которая получает данные от этого терминала. Для эмулятора терминала с графическим интерфейсом это повлияет на каждую программу, которую вы запускаете, и которая получает данные от этого псевдотерминала. Для эмулятора терминала в ядре, которое обрабатывает виртуальные консоли, это повлияет на каждую программу, которая получает данные от этой виртуальной консоли.
Это не повлияет на всю систему, но повлияет гораздо больше, чем вы хотите, а именно на оболочку Z.