Я хотел бы обменять Escи CapsLockв консоли (не в X, а использовать xev
), как я могу это сделать?
Моя ОС - Ubuntu.
Инструменты для управления раскладкой клавиатуры на виртуальных консолях являются loadkeys
, dumpkeys
и showkey
. Прочитайте их страницы и узнайте об их тонкостях.
Обратите внимание, что эти инструменты работают только в виртуальной консоли, а не в эмуляторе терминала в графической среде, такой как gnome. Узнайте о разнице прочитайте этот вопрос и ответы: https://askubuntu.com/questions/14284/why-is-a-virtual-terminal-virtual-and-what-why-where-is-the-real-terminal ,
Вот краткое руководство, чтобы сделать то, что вы хотите:
Сохраните текущую раскладку клавиатуры:
$ dumpkeys > backup.kmap
В случае, если что-то пойдет не так, вы можете восстановить свою раскладку с помощью команды:
$ sudo loadkeys backup.kmap
Если клавиатура настолько испорчена, что вы даже не можете этого сделать, то единственный вариант, не включающий древнюю магию ядра, - это перезагрузить компьютер.
Проверьте, какие коды клавиш назначены вашим клавишам:
$ showkey
Теперь нажмите клавишу ESC и клавишу CAPSLOCK. Коды клавиш должны отображаться на экране. Обратите внимание на коды клавиш. В моей системе ESC имеет код ключа 1, а CAPSLOCK - код ключа 58. showkey
завершится через 10 секунд бездействия (по крайней мере, в моем Ubuntu 10.04).
Обратите внимание на имена ключей ESC и CAPSLOCK из dumpkeys:
$ dumpkeys | grep 1
...
keycode 1 = Escape
...
$ dumpkeys | grep 58
...
keycode 58 = CtrlL_Lock
...
Обратите внимание на строку раскладки клавиатуры из dumpkeys:
$ dumpkeys | head -1
keymaps 0-127
Создайте файл раскладки, который переключает ESC и CAPSLOCK:
keymaps 0-127
keycode 1 = CtrlL_Lock
keycode 58 = Escape
Загрузите раскладку:
$ sudo loadkeys swap_esc_capslock.kmap
Тест: Тестирование ключа CAPSLOCK очевидно. Просто нажмите клавишу CAPSLOCK и проверьте, не заглавные ли другие клавиши. Для проверки клавиши ESC вы можете использовать CTRL + V, а затем ESC. Это должно напечатать ^[
. CTRL + V заставляет оболочку печатать следующий ключ дословно, а не интерпретировать его.
Чтобы эта модификация загружалась при каждой перезагрузке, добавьте следующую строку в ваш /etc/rc.local
файл:
/usr/bin/loadkeys /path/to/swap_esc_capslock.kmap
Информация, собранная с разных страниц, включая, но не ограничиваясь:
sudo setupcon --save
чтобы сделать изменения постоянными, а не редактировать rc.local. Это по сути так же, какdumpkeys < /dev/tty1 | gzip > /etc/console-setup/cached.kmap.gz
/usr/bin/loadkeys
в/etc/rc.local
так переменной среды путь не гарантируется быть установлена на данном этапе. Иsudo
не нужен вrc.local
.rc.local
выполняется каждый раз, когда система загружается. @ bukzor - хsudo setupcon
это не вrc.local
, это команда установки разовой, который заменяет раскладку системы по умолчанию, без добавления какого - либо кода запуска среды выполнения. Добавлениеloadkeys
кrc.local
, добавляет дополнительный запуск кода и дубликаты , что уже было сделано по loadkeys системы по умолчанию.rc.local
Метод может быть на самом деле менее безопасно , потому что это зависит от нестандартного пути к раскладке клавиатуре.setupcon
метод. Добавьте свой ответ или отредактируйте мой, если хотите.setupcon
. Оказывается , что Август сделал предположение о том , чтоsudo setupcon --save
будет идти вrc.local
который я не думаю , что это правда, но если это произойдет, вам не нужноsudo
вrc.local
. Я думаю, что нам нужно больше информации, прежде чем обновлять ваш ответ. Основной вопрос: «Как установить измененную таблицу ключей, чтобы она автоматически загружалась во время процесса загрузки?» Я действительно не знаю, какой из них лучше,rc.local
или установка карты ключей, или даже если установка карты ключей будет работать. Я изучал это в последнее время, и я проверю здесь.Используйте 'ctrl: nocaps' вместо 'ctrl: swapcaps', если вы просто хотите получить ключ с двумя capslocks (capslock под другим именем по-прежнему бесполезен).
X11: (смотри также:
/usr/share/X11/xkb/rules/base.lst
)Текстовая консоль: (украдено из setupcon)
источник