Преобразование caps-lock для выхода и меню для составления на консоли linux


9

При запуске XI используйте .xmodmaprc для переназначения определенных ключей таким образом:

! Make it so that both Caps Lock and Escape do Escape
clear Lock
keysym Caps_Lock = Escape
! Remap the menu key as Compose
keysym Menu = Multi_key

Как я могу сделать то же самое на консоли?

Обновить

В дополнение к частичному решению, приведенному в моем ответе, я узнал, что консоль сопоставляет CTRL- .с Compose. Так что я могу привыкнуть к этому. Настроить клавишу «Меню» в качестве «Составить» не так просто, поскольку существует тонна назначенных нулями кодов клавиш и нет очевидного претендента на альтернативное имя для «Меню».

Я также понял, что сами составные привязки намного более ограничены, чем те, к которым я привык в X, и что большинство специальных символов, которые я часто использую, отсутствуют. Возможно, есть утилита, которая переведет составные привязки X-синтаксиса во что-то, что loadkeysможет читать?


1
Традиционно: с loadkeys. Я думаю, что в настоящее время вы можете заставить консоль Linux читать конфигурацию X, но я не знаю, как это работает.
Жиль "ТАК - перестань быть злым"

Ответы:


8

Вам нужно будет отредактировать вашу таблицу ключей консоли. На моей консоли я отобразил Escape для Caps Lock и Caps Lock для Escape. Вот как это работает.

  1. Сначала вам нужно найти свою раскладку. Я использую стандартную американскую раскладку. В моей системе он находится под /usr/share/keymaps/i386/qwerty/us.map.gz.
  2. Например, сделайте копию файла под новым именем us-nocaps.map.gz.
  3. Распакуйте файл и откройте его в текстовом редакторе: gunzip us-nocaps.map.gz && vim us-nocaps.map
  4. Измените сопоставления в файле по своему вкусу, например, keycode 58 = Caps_Lockя изменил на keycode 58 = Escape.
  5. GZIP файл и загрузить его: gzip us-nocaps.map && loadkeys us-nocaps.

Еще одна вещь: вам, вероятно, придется каким-то образом настроить свой дистрибутив, чтобы новые загрузочные таблицы всегда загружались при загрузке, в противном случае вам придется загружать вашу раскладку вручную loadkeysвсе время. Как вы это сделаете, зависит от того, какой дистрибутив вы используете.


1
Шаг с огнестрельным оружием здесь на самом деле не нужен - в большинстве версий vimвы должны просто быть в состоянииvim us-nocaps.map.gz
блестящая

3

Для более новых дистрибутивов Debian вам все это больше не нужно.

Файл клавиатуры описывает свойства клавиатуры. Это прочитано setupcon(1), чтобы настроить клавиатуру на консоли. В системах Debian описана раскладка клавиатуры по умолчанию, /etc/default/keyboardи она является общей для X и консоли. (мужская клавиатура)

В /etc/default/keyboardнаборе, XKBOPTIONS="caps:escape"а затем сделать:

~$ sudo setupcon

Описание всех доступных моделей клавиатур, раскладок, вариантов и опций доступно в /usr/share/X11/xkb/rules/xorg.lst. "(Клавиатура man)


1

С некоторой помощью Седрика я обнаружил, что Ubuntu не установил сопоставления клавиш, где $ man loadkeysуказано, что они должны быть ( /usr/share/keymaps). Это совершенно новая установка, поэтому, возможно, мне просто нужно установить пакет, чтобы получить сопоставления клавиш, отличные от того, который я выбрал во время установки.

Вместо того, чтобы придерживаться этого угла и сделать решение более надежным и удобным, я делаю следующее:

    $ sudo dumpkeys | sed 's/CtrlL_Lock/Escape/' | sudo loadkeys

Хотя я немного озадачен тем, почему система Cedric использует Caps_Lockблокировку заглавных букв и мою CtrlL_Lock, она работает независимо.


Это интересно, я не знал, где есть различия между дистрибутивами с этими раскладками. Лично я использую Gentoo, раскладки для ключей из пакета sys-apps / kbd-1.15.
Седрик

2
Начиная с Ubuntu 10.04, раскладки находятся в console-dataпакете. Они не установлены по умолчанию. Вы можете узнать, в какой пакет устанавливаются файлы /usr/share/keymaps, запустив apt-file search /usr/share/keymaps.
Жиль "ТАК - перестань быть злым"
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.