Как сопоставить ключ 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 ответов

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

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

    setxkbmap -option caps:escape
    

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

  2. dconf-editor > org.gnome.desktop.input-sources.xkb-options > Добавить caps:escape на вышеупомянутое поле.

  3. gnome-session-settings > Автозагрузка программ> Добавить> Имя = Переопределить прописные буквы, чтобы выйти, команда =setxkbmap -option caps:escape
  4. Создать собственную раскладку клавиатуры

К вашему сведению, я получил правило 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)

  1. Установить через (если вы используете другой дистрибутив, установите для своего дистрибутива или соберите из исходного кода ):

            $ sudo pacman -S interception-caps2esc
    
  2. Создайте и при необходимости укажите режим . Здесь,-m 1указывает «минимальный» режим:

            - JOB: intercept -g $DEVNODE | caps2esc -m 1 | uinput -d $DEVNODE
      DEVICE:
        EVENTS:
          EV_KEY: [KEY_CAPSLOCK, KEY_ESC]
    
  3. Включите и запустите:

     

двойные функциональные клавишидвойные функциональные клавиши (настраиваемые переназначения)

  1. Установить черезpacman(если вы используете другой дистрибутив, установите его для своего дистрибутива или соберите из исходного кода ):

            $ sudo pacman -S interception-dual-function-keys
    
  2. Создавать/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
    
  3. Создавать/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]
    
  4. Включить и начать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 $)
  • Ctrl+Alt+Backspace убивает X

Еще один отличный вариант — https://github.com/maricn/interception-vimproved плагин перехвата.

Он выполняет Esc при нажатии, CTRL при удержании, а также:

  • Возврат становится правым CTRL на удержании
  • Удерживайте пробел, чтобы изменить клавиши hjkl в главном ряду на клавиши со стрелками, b на возврат, d на удаление и многое другое.

Чтобы поменять Caps Lock на Escape, вы можете использовать следующую команду:

      setxkbmap -option caps:swapescape
Другие вопросы по тегам