Как сопоставить ключ 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:escape
setxkbmap
можно найти в 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