Как сопоставить ключ Caps Lock с ключом Escape в Arch Linux


23

Моя ОС - 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?

Ответы:


47

Любое из следующего (в порядке возрастания сложности):

  1. Используется setxkbmapдля переназначения ключа (не требует демона и не зависит от среды рабочего стола или оконного менеджера). Не забудьте добавить команду перед exec gnome-session(или аналогичной) строкой в ​​вашем ~/.xinitrcили ~/.xsession:

    setxkbmap -option caps:escape
    

setxkbmapможно найти в пакете extra / xorg-setxkbmap .

  1. dconf-editororg.gnome.desktop.input-sources.xkb-options→ Добавить caps:escapeв указанное поле.
  2. gnome-session-settings → Автозагрузка программ → Добавить → Имя = Перезаписать прописные буквы, чтобы выйти, команда =setxkbmap -option caps:escape
  3. Создать собственную раскладку клавиатуры

К вашему сведению, я получил правило XKB с помощью команды grep ping /usr/share/X11/xkb/rulesдля capsи esc.


2
Метод dconf отлично сработал, спасибо!
Кит Смайли

Спасибо, что нет. 2. Я искал эту информацию целую вечность. Нет, я могу установить это в командной строке черезgsettings org.gnome.desktop.input-sources xkb-options ['caps:none', 'numpad:pc', 'numpad:mac']
Оливер Ян Крылов

Относительно нет. 1: если вы хотите поменять его местами, а не два управляющих ключа, вы можете запустить setxkbmap -option caps:swapescape.
Comfreak

5

Для использования 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

3

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 с помощью CtrlAlt Backspace. Вы можете найти больше информации об этом в man xkeyboard-config.

графический интерфейс пользователя

Вы также можете использовать GNOME Tweak Tool (пакет gnome-tweak-tool). Просто нажмите, Typingа затем выберите все, что вам нравится из Ctrl positionменю (см. Изображение ниже).

введите описание изображения здесь


2

Вы можете использовать xmodmap. Поместите ваш ~/.Xmodmap:

remove Lock = Caps_Lock
keysym Escape = Caps_Lock
keysym Caps_Lock = Escape
add Lock = Caps_Lock

(убедитесь, что при запуске X будет использовать ваш ~/.Xmodmap)


Это правильный, дистро-агностический и настольный-независимый ответ.
dotancohen

Когда я вставляю это ~/.Xmodmap, ничего не происходит :(
Jan Warchoł

Поставь линию xmodmap ~/.Xmodmapна свой ~/.xinitrc!
uzsolt

Когда я вставляю это ~/.Xmodmapи затем запускаю, xmodmap ~/.Xmodmapя получаю ошибки:xmodmap: .Xmodmap:1: bad remove modifier name 'lock=caps_lock', not allowed xmodmap: .Xmodmap:2: bad keysym target key symbol 'Escape=Caps_Lock' xmodmap: .Xmodmap:3: bad keysym target key symbol 'Caps_Lock=Escape' xmodmap: .Xmodmap:4: bad add modifier name 'lock=caps_lock', not allowed xmodmap: 4 errors encountered, aborting
comfreak

Вам понадобятся пробелы вокруг знака равенства. Я изменил ответ.
uzsolt

0

! Я не знаю, почему ответы выше не работают. Вот рабочий для меня. В вашем ~ / .Xmodmap

! 66 is the keycode of Caps_Lock
clear    Lock
keycode  66 = Escape 

а потом

$ xmodmap ~/.Xmodmap

Я использую Fedora и не оконный менеджер Gnome. НТН


0

Файл /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генерирует $)
  • Ctrl+ Alt+ Backspaceубивает Х
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.