Как сопоставить ключ Caps Lock с ключом Escape в Arch Linux
Моя ОС - Arch Linux amd64, Gnome ENV.
Я хочу сопоставить ключ Caps Lock с Esc (escape) в Arch Linux. Я запускаю команду:
xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'
Это работает хорошо, но мгновение спустя клавиша Caps Lock снова работает. И я должен снова запустить команду.
Я уверен, что это решение сработало, может быть, год назад. В чем моя проблема? Может ли кто-нибудь помочь мне навсегда сопоставить ключ Caps Lock с ключом Escape в моей Arch Linux OS?
9 ответов
Любое из следующего (в порядке возрастания сложности):
Используйте setxkbmap для переназначения ключа (не требует демона и не зависит от среды рабочего стола или оконного менеджера). Не забудьте добавить команду до
exec gnome-session(или похожая) строка в вашем~/.xinitrcили же~/.xsession,setxkbmap -option caps:escapesetxkbmapможно найти в extra / xorg-setxkbmap.dconf-editor>org.gnome.desktop.input-sources.xkb-options> Добавитьcaps:escapeна вышеупомянутое поле.gnome-session-settings> Автозагрузка программ> Добавить> Имя = Переопределить прописные буквы, чтобы выйти, команда =setxkbmap -option caps:escape- Создать собственную раскладку клавиатуры
К вашему сведению, я получил правило XKB путем grepping /usr/share/X11/xkb/rules за caps а также esc,
Xorg.conf
Вы можете достичь этого, отредактировав файл /etc/X11/xorg.conf.d/00-keyboard.conf,
Пример файла:
Section "InputClass"
Identifier "system-keyboard"
MatchIsKeyboard "on"
Option "XkbLayout" "us"
Option "XkbModel" "pc104"
Option "XkbOptions" "caps:swapescape"
EndSection
Вы можете указать несколько XkbOptions, например caps:swapcaps,terminate:ctrl_alt_bksp за то, что поменяли esc и caps, но также позволили убить X с помощью Ctrl Alt Backspace. Вы можете найти больше информации об этом в man xkeyboard-config,
графический интерфейс пользователя
Вы также можете использовать GNOME Tweak Tool (пакет gnome-tweak-tool). Просто нажмите на Typing а затем выберите все, что вам нравится из Ctrl position меню (см. изображение ниже).
Для использования в XНа странице Arch Wiki Gnome есть инструкции по изменению клавиатуры с помощью XkbOptions:
Используя редактор dconf, перейдите к ключу org.gnome.desktop.input-sources.xkb-options и добавьте нужные XkbOptions (например, "caps: swapescape") в список.
В консоли вы можете создать пользовательскую раскладку клавиш для того же эффекта. Создайте свою личную таблицу ключей с необходимыми изменениями для CapsLock и Escape на /usr/share/kbd/keymaps/i386/qwerty/yourmap затем tar это и включить строку в /etc/vconsole.conf чтобы назвать это:
KEYMAP=yourmap
Вы можете использовать xmodmap. Положить ваши ~/.Xmodmap:
remove Lock=Caps_Lock
keysym Escape=Caps_Lock
keysym Caps_Lock=Escape
add Lock=Caps_Lock
(убедитесь, что при запуске X будет использовать ваш ~/.Xmodmap)
! Я не знаю, почему ответы выше не работают. Вот рабочий для меня. В вашем ~/.Xmodmap
! 66 is the keycode of Caps_Lock
clear Lock
keycode 66 = Escape
а потом
$ xmodmap ~/.Xmodmap
Я использую Fedora и не оконный менеджер Gnome. НТН
Репозитории Arch теперь включают в себя два соответствующих инструмента перехвата :
- (нажмите=, удерживайте=)
- (полностью настраиваемое переназначение касания/удержания)
caps2esccaps2esc (нажмите =esc, удерживать=ctrl)
Установить через (если вы используете другой дистрибутив, установите для своего дистрибутива или соберите из исходного кода ):
$ sudo pacman -S interception-caps2escСоздайте и при необходимости укажите режим . Здесь,
-m 1указывает «минимальный» режим:- JOB: intercept -g $DEVNODE | caps2esc -m 1 | uinput -d $DEVNODE DEVICE: EVENTS: EV_KEY: [KEY_CAPSLOCK, KEY_ESC]Включите и запустите:
двойные функциональные клавишидвойные функциональные клавиши (настраиваемые переназначения)
Установить через
pacman(если вы используете другой дистрибутив, установите его для своего дистрибутива или соберите из исходного кода ):$ sudo pacman -S interception-dual-function-keysСоздавать
/etc/interception/dual-function-keys/my-mappings.yaml, например, чтобы переназначить действия касания/удержания дляcapsиshift:MAPPINGS: - KEY: KEY_CAPSLOCK TAP: KEY_ESC HOLD: KEY_BACKSPACE - KEY: KEY_LEFTSHIFT TAP: KEY_ENTER HOLD: KEY_LEFTSHIFTСоздавать
/etc/interception/udevmon.yaml:- JOB: intercept -g $DEVNODE | dual-function-keys -c /etc/interception/dual-function-keys/my-mappings.yaml | uinput -d $DEVNODE DEVICE: EVENTS: EV_KEY: [KEY_CAPSLOCK, KEY_LEFTSHIFT]Включить и начать
udevmon:$ sudo systemctl enable udevmon $ sudo systemctl start udevmon
Файл /etc/X11/xorg.conf.d/00-keyboard.conf также может быть сгенерирован автоматически systemd-localed, Используйте следующую команду:
localectl set-x11-keymap us "" "" caps:escape
Или, включая некоторые другие полезные опции:
localectl set-x11-keymap us,de "" "" caps:escape,grp:alt_caps_toggle,grp_led:caps,lv3:ralt_switch_multikey,terminate:ctrl_alt_bksp,eurosign:e,rupeesign:4
Быстрые объяснения:
- CapsLk функционирует как Esc
- Переключение между двумя раскладками клавиатуры
us/deс Alt+CapsLk - Светодиод CapsLk указывает, какая раскладка активна
- Right Alt (RAlt) - это "мультиключ" (см. " Compose Key")
- RAlt+e генерирует
€ - RAlt+4 генерирует
₹(аналогично тому, как генерирует Shift+4$)
- RAlt+e генерирует
- Ctrl+Alt+Backspace убивает X
Еще один отличный вариант — https://github.com/maricn/interception-vimproved плагин перехвата.
Он выполняет Esc при нажатии, CTRL при удержании, а также:
- Возврат становится правым CTRL на удержании
- Удерживайте пробел, чтобы изменить клавиши hjkl в главном ряду на клавиши со стрелками, b на возврат, d на удаление и многое другое.
Чтобы поменять Caps Lock на Escape, вы можете использовать следующую команду:
setxkbmap -option caps:swapescape
