Я хотел бы изменить поведение Caps Lock в виртуальных терминалах (например, tty CtrlAltF3), чтобы он действовал как модификатор Control. В идеале, я бы хотел, чтобы он действовал как Escape, когда нажимается один, но просто получить поведение Control оказывается трудным.
Я использую Ubuntu 17.04. Я прочитал и попробовал множество подходов к внесению этого изменения, но ни один из них, похоже, не применим к моей системе, как описано. Я чувствую, что systemd играет в этом роль, но детали неясны.
Я написал файл caps_control.kmap
, который отображает заглавные буквы для контроля,
keymaps 0-255
keycode 58 = Control
Если я запускаю loadkeys caps_control.kmap
с виртуальной консоли, это работает. Теперь я хочу, чтобы он загружался автоматически при загрузке / входе в систему / что угодно ...
Я нашел ссылки на использование , /etc/rc.local
чтобы сделать это, но моя система не имеет такого файла, хотя у него есть несколько каталогов , например /etc/rc0.d/
, /etc/rc1.d/
...
Похоже, так как Ubuntu 17 использует sytemd, я должен использовать localectl
для управления такими вещами, но мне не ясно, как это сделать. Например,
$ localectl status
System Locale: LANG=en_US.UTF-8
VC Keymap: n/a
X11 Layout: us
X11 Model: pc105
$ localectl list-keymaps
Couldn't find any console keymaps.
Страница localectl
справочника для упоминаний /etc/locale.conf
и /etc/vconsole.conf
ни одна из которых не существует в моей системе.
Я в полном недоумении. Может кто-то указать мне верное направление?
loadkeys caps_control.kmap
которая будет выполняться при входе в систему.loadkeys
из ~ / .profile кажется проблематичным. Когда я вхожу в систему, я получаю сообщение об ошибке «Не удалось получить дескриптор файла, ссылающийся на консоль».Ответы:
Чтобы включить Caps Lock в дополнительный модификатор Ctrl, который также эффективен в консолях tty, откройте его
/etc/default/keyboard
для редактирования и установите:Если вы уже
XKBOPTIONS
установили, добавьтеctrl:nocaps
к его существующему значению запятую для разделителя, например:Должен быть активен после следующей перезагрузки или выдачи
setupcon
команды.Опция должна присутствовать при запуске
localectl status
:А в сеансе X еще один способ убедиться, что он установлен:
источник
"ctrl:nocaps"
. в X разница невелика: с помощью этойctrl
опцииxev
другие инструменты будут видетьControl_L
символ при нажатии клавиши CapsLock, в то время как этаcaps
опция все равно будет показыватьCaps_Lock
клавиатуру. Я не уверен, что это различие преобразуется в раскладку виртуальной консоли.ctrl:nocaps
. Я добавил это в свой ответ.caps:ctrl_modifier
) неэффективно в tty. Однако для меня (17.10)ctrl:nocaps
это. Пожалуйста, смотрите мой отредактированный ответ.ckbcomp
я думаю, что он включает в себя ?). я не помнилcaps:ctrl_modifier
вариант, который вы впервые упомянули, поэтому посмотрел его, чтобы сравнить с тем, которыйctrl:nocaps
я обычно использую, и подумал, что здесь стоит упомянуть разницу. рад, что это было полезно.