Змініть шапки-блокування для управління у віртуальній консолі на Ubuntu 17


10

Я хотів би змінити поведінку Caps Lock у віртуальних терміналах (наприклад, tty CtrlAltF3), щоб вона діяла як модифікатор управління. В ідеалі, я також хотів би, щоб він діяв як «Втеча», коли натискав один, але просто отримати поведінку управління виявляється складно.

Я запускаю 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жодна з них не існує в моїй системі.

Я повністю в збитку. Чи може хтось вказати мене в правильному напрямку?


Чи потрібна вам ця зміна, щоб бути активною для всіх користувачів або лише для вашого власного?
acer

@acer Так чи інакше мені підійде, оскільки я справді єдиний користувач на цій машині.
ivan

Хм ... Ви додаєте рядок у ~ / .profile, loadkeys caps_control.kmapякий би виконувався під час входу в систему.
acer

@acer Виклик loadkeysз ~ / .profile видається проблематичним. Коли я входжу в систему, я отримую помилку із записом "Не вдалося отримати дескриптор файлу, що стосується консолі".
ivan

Відповіді:


11

Щоб перетворити Caps Lock в додатковий модифікатор Ctrl, який також ефективний на консолях tty, відкрийте /etc/default/keyboardдля редагування та встановлення:

XKBOPTIONS=ctrl:nocaps

Якщо ви вже XKBOPTIONSвстановили, додайте ctrl:nocapsйого до існуючого значення, використовуючи кому для роздільника, наприклад:

XKBOPTIONS="terminate:ctrl_alt_bksp,ctrl:nocaps"

Має бути ефективним після наступної перезавантаження або видачі setupconкоманди.

Параметр повинен бути при запуску localectl status:

$ localectl status | grep caps
     X11 Options: ctrl:nocaps

А в X-сеансі ще один спосіб переконатися, що він встановлений:

$ gsettings get org.gnome.desktop.input-sources xkb-options
['ctrl:nocaps']

1
інший варіант XKB є "ctrl:nocaps". в X різниця непомітна: з ctrlопцією xevта іншими інструментами буде відображено Control_Lсимвол при натисканні клавіші CapsLock, в той час як capsпараметр все ще буде показувати Caps_Lockклавішу. Я не впевнений, що ця різниця перетвориться на ключову карту віртуальної консолі.
кіхотично

@quixotic: Дякую за згадку ctrl:nocaps. Я додав це до своєї відповіді.
Gunnar Hjalmarsson

Будь-яка ідея, чому це не працює для мене? Це насправді одне з перших речей, які я спробував, і мені подобається підхід. На жаль, це не впливає на мою систему.
ivan

1
@ivan: Я просто перевірив себе і виявив, що моя перша пропозиція ( caps:ctrl_modifier) не ефективна в tty. Однак для мене (17.10) ctrl:nocapsє. Будь ласка, дивіться мою відредаговану відповідь.
Gunnar Hjalmarsson

1
@GunnarHjalmarsson Я не надто знайомий з методом debian / ubuntu для перекладу карт XKB на консольні карти (це передбачає ckbcomp, я думаю?). Я не пам’ятав caps:ctrl_modifierваріант, про який ви вперше згадували, тому подивився його на порівняння з тим, що ctrl:nocapsзазвичай використовую, і подумав, що тут варто згадати різницю. рада, що це було корисно.
кіхото
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.