Как навсегда поменять местами Caps Lock и Esc

Вопрос или проблема

Как я могу навсегда поменять функции клавиш Caps Lock и Esc в Saucy? Я могу использовать эту команду для временной замены (до перезагрузки):

/usr/bin/setxkbmap -option "caps:swapescape"

Я пытался добавить эту команду в Запуск приложений, но она, похоже, ничего не делает.

Другой способ сделать это — через dconf-editor. Этот метод имеет несколько дополнительных шагов по сравнению с gnome-tweak-tool, но полезен, если вы не хотите использовать зависимости инструмента настройки.

Это позволит вам использовать синтаксис caps:swapescape и автоматически сделать изменение постоянным.

sudo apt-get install dconf-tools

На Ubuntu >20.04 вам нужно выполнить следующее – см. этот пост:

sudo apt install dconf-cli dconf-editor

После запуска dconf-editor перейдите в org >> gnome >> desktop >> input-sources

Добавьте нужные вам параметры в xkb-options. Строки опций заключены в одинарные кавычки и разделены запятыми. Будьте осторожны, чтобы не удалить скобки на концах.

xkb-options in dconf-editor

Вы можете использовать этот метод, чтобы ввести большинство традиционных опций xkb, которые больше недоступны в Системные настройки >> Ввод текста. Исключение составляют настройки для переключения раскладок клавиатуры, которые в настоящее время не работают из-за ошибки.

Для списка опций и синтаксиса используйте man 7 xkeyboard-config в терминале.

Еще одной распространенной опцией, которая может быть использована, является terminate:ctrl_alt_bksp, чтобы разрешить ctrl+alt+backspace завершить сеанс X.

Решение, которое должно работать для большинства дистрибутивов linux:

setxkbmap -option caps:swapescape

Другие опции тоже возможны:

  • caps:none для деактивации
  • caps:escape для добавления дополнительного эскапа
  • caps:super для добавления дополнительной клавиши супер (windows).

Чтобы это работало при запуске, вы можете поместить это в ~/.profile, так как это будет выполняться только после интерактивного входа.

Если переключение не сохраняется между входами (например, при приостановке компьютера), вы также можете создать файл .xinitrc в вашем домашнем каталоге и поместить его туда. Linux mint 20 на ноутбуке работает безупречно с этой опцией.


Если вышеуказанное не сохраняется, используйте /etc/X11/xorg.conf.d/00-keyboard.conf (см. man xorg.conf DESCRIPTION для всех доступных путей). Это должно работать с Bluetooth-клавиатурами, которые переподключаются после сна.

Section "InputClass"
        MatchIsKeyboard "on"
        Option "XkbOptions" "caps:escape"
EndSection

Смотрите man xkeyboard-config

Хорошо, я нашел способ сделать это с помощью gnome-tweak-tool.

Из терминала выполните

sudo apt-get install gnome-tweak-tool -y && gnome-tweak-tool

Вы можете найти опцию для замены Caps Lock и Esc в “Печать -> Поведение клавиши Caps Lock”.

Обновление: В Ubuntu 18.04 и 20.04 это можно найти в Клавиатура и мышь > Дополнительные параметры раскладки > Поведение Caps Lock (Спасибо за комментарий Adracus ниже)

Вы можете использовать xmodmap в терминале, чтобы поменять Caps Lock и Esc:

xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"   #это заставит Esc работать как Caps Lock
xmodmap -e "keycode 66 = Escape NoSymbol Escape"        #это заставит Caps Lock работать как Esc

Чтобы сохранить это изменение для каждой сессии, после того как вы выполнили предыдущие команды, создайте файл под названием .xmodmap с новыми ключевыми карты, используя следующую команду:

xmodmap -pke > ~/.xmodmap

Затем создайте файл с именем .xinitrc в вашем домашнем каталоге, содержащий следующую строку/команду:

xmodmap .xmodmap

Похожий на ответ @Radu ответ, но совместимый с 14.04 (см. также этот ответ).

xmodmap -e "remove Lock = Caps_Lock"
xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"
xmodmap -e "keycode 66 = Escape NoSymbol Escape"
xmodmap -pke > ~/.xmodmap

Если это не работает, замените:

xmodmap -e "remove Lock = Caps_Lock"

на:

xmodmap -e "clear Lock"

Перейдите к значку настроек в правом верхнем углу экрана и выполните следующее:

  • Нажмите Системные настройки → Раскладка клавиатурыОпции… (в правом нижнем углу) → Поведение клавиши Caps Lock (четвертый сверху).

  • Затем прокрутите вниз и выберите Поменять местами ESC и Caps Lock.

Готово!

Ответ Раскладка клавиатуры с Переключить Escape и Capslock выше больше не актуален на Ubuntu 16.04 и позже (было ли это ранее? не знаю).

Чтобы избежать хлопот с разрешениями и т.д., просто переключитесь на пользователя root, прежде чем начинать выполнять следующие шаги, запустив su в терминале и введя пароль root. Затем:

  1. Запустите:

    cd /etc/default/
    vim keyboard
    
  2. Там вы увидите строку:

    XKBOPTIONS=""
    

    Измените ее на:

    XKBOPTIONS="caps:swapescape"
    
  3. Выйдите из Vim с сохранением:

    :wqa
    
  4. Перезагрузите.

И это будет постоянным, обещаю. 🙂

Выполните эту команду один раз в терминале. dconf должен уже быть установлен с gnome 3.

dconf write "/org/gnome/desktop/input-sources/xkb-options" "['caps:swapescape']"

Для Ubuntu 18.04 и Gnome 3.30 это работает для меня:

gsettings set org.gnome.desktop.input-sources xkb-options "['caps:swapescape']"

Я создал инструмент на C специально для этой цели, который решает многие проблемы с решением xcape/xmodmap:

Он делает немного больше, так как также превращает CAPSLOCK как Esc и CTRL.

Я опаздываю с ответом, но обычный способ поменять местами Esc и Ctrl — это следующие строки в файле ~/.Xmodmap:

clear Lock
keysym Caps_Lock = Escape
keysym Escape = Caps_Lock
add Lock = Caps_Lock

Это должно работать со всеми рабочими средами (KDE, Gnome) на большинстве распространенных дистрибутивов (семья Ubuntu и Debian, семья Fedora и RH).

Это можно сделать через настройку системы “Раскладка клавиатуры”. Нажмите “опции” для раскладки, которую вы используете, затем в разделе “Поведение клавиши Caps Lock” выберите “менять местами Escape и Capslock”.

Предполагая, что вы используете раскладку us с моделью и вариантом по умолчанию, вы можете использовать эту команду:
sudo localectl --no-convert set-x11-keymap us "" "" "caps:swapescape"

В отличие от ~/.Xmodmap, который применяется после входа, эта команда изменяет раскладку системы по умолчанию и применяется к экрану входа, что полезно, если вы используете альтернативную раскладку, такую как dvorak.

Для получения дополнительной информации/примеров команды смотрите эту статью в вики arch: https://wiki.archlinux.org/title/Xorg/Keyboard_configuration#Using_localectl

Если кто-то ищет эквивалент KUbuntu, он находится по адресу:

Системные настройки -> Устройства ввода -> Клавиатура -> Вкладка “Дополнительно” -> Поведение Caps Lock -> Сделать Caps Lock дополнительным Esc

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

Примечание: Это не меняет местами, только отображает caps lock на esc. (Это было достаточно для моего использования vim.)

Для ubuntu 16:04 (с окружением i3):
создайте файл ~/.xsessionrc с содержимым

xmodmap -e "clear lock" #деактивировать переключатель caps lock
xmodmap -e "keysym Caps_Lock = Escape" #установить caps_lock как escape

В графическом интерфейсе KDE это можно сделать через Раскладку клавиатуры в Системных настройках. Нажмите “Устройства ввода”. В верхнем левом углу нажмите Клавиатура. Затем нажмите вкладку “Дополнительно”. В разделе “Поведение клавиши Caps Lock” выберите “менять местами Escape и Capslock”.

Для Ubuntu 18.04:

Создайте файл ~/.xmodmaprc

xmodmap -e "clear lock"
xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"
xmodmap -e "keycode 66 = Escape NoSymbol Escape"

Подключите этот файл, чтобы привязать ключи к вашей текущей сессии:

$ . "$HOME/.xmodmaprc"

Добавьте эту команду в ~/.bashrc, чтобы ключи были связаны каждый раз, когда вы входите в систему.

Этот ответ похож на ответ Гилли, но с маленькой буквой “l” в “clear lock”.

Другой подход — изменить отображение от скан-кодов к кодам клавиш с помощью udev. Мне нужно было это более низкоуровневое изменение, чтобы заставить мой capslock-escape работать в VS Code. Этот ответ основан на https://wiki.archlinux.org/title/Map_scancodes_to_keycodes

Сбор информации о клавиатуре

Сначала определите устройство клавиатуры. Я использовал cat /proc/bus/input/devices, который выводит:

I: Bus=0011 Vendor=0001 Product=0001 Version=ab83
N: Name="AT Translated Set 2 keyboard"
P: Phys=isa0060/serio0/input0
S: Sysfs=/devices/platform/i8042/serio0/input/input3
U: Uniq=
H: Handlers=sysrq kbd event3 leds 
B: PROP=0
B: EV=120013
B: KEY=402000000 3803078f800d001 feffffdfffefffff fbfffffffffffffe
B: MSC=10
B: LED=7

Обратите внимание на eventX здесь. Затем мы можем получить модальный идентификатор устройства с помощью cat /sys/class/input/event3/device/modalias:

input:b0011v0001p0001eAB83-e0,1,4,11,14,k71,72,73,74,75,76,77,79,7A,7B,7C,7D,7E,7F,80,8C,8E,8F,9B,9C,9D,9E,9F,A3,A4,A5,A6,AC,AD,B7,B8,B9,D9,E2,ram4,l0,1,2,sfw

Позже мы будем использовать идентификатор input:b0011v0001p0001eAB83.

Теперь мы хотим выяснить, какой скан-код мы хотим сопоставить с каким кодом клавиши. Мой пример будет отображать capslock на escape (скан-код может зависеть от аппаратного обеспечения клавиатуры). Запустите evtest /dev/input/event3, а затем нажмите клавишу (например, capslock):

Event: time 1732003836.156077, type 4 (EV_MSC), code 4 (MSC_SCAN), value 3a
Event: time 1732003836.156077, type 1 (EV_KEY), code 58 (KEY_CAPSLOCK), value 0
Event: time 1732003836.156077, -------------- SYN_REPORT ------------

Мы записываем значение MSC_SCAN, в этом случае скан-код равен 3a.

В моем примере целевой код клавиши — это esc, здесь есть список других кодов клавиш.

Обновление отображения скан-кода на код клавиши

Имеется файл отображения по умолчанию в /usr/lib/udev/hwdb.d/60-keyboard.hwdb. Создайте новый файл с более высоким номером, например /usr/lib/udev/hwdb.d/70-keyboard-custom.hwdb:

# evdev:<modalias identifier>*
#   KEYBOARD_KEY_<scancode>=<target keycode>

evdev:input:b0011v0001p0001eAB83*
  KEYBOARD_KEY_3a=esc

После сохранения файла выполните systemd-hwdb update и udevadm trigger, чтобы пересобрать и перезагрузить индекс аппаратной базы данных.

Теперь, когда нажатие capslock дает скан-код 3a, udev преобразует его в код клавиши esc. Фактически, у нас теперь есть две клавиши escape. Чтобы добиться обратного сопоставления (escape на capslock), выполните те же шаги, чтобы определить скан-код escape и сопоставить его с кодом клавиши capslock.

В Linux Mint 19.3 из меню:
Параметры
Клавиатура
Раскладки
Опции
Поведение Caps Lock
Поменять местами ESC и Caps Lock

Ответ или решение

Для того чтобы навсегда поменять местами функции клавиш Caps Lock и Esc на системе, подобной Ubuntu (в том числе и Saucy), существуют несколько методов. Рассмотрим их подробно.

Использование setxkbmap

Первый шаг – использование команды, которая временно переключает клавиши:

/usr/bin/setxkbmap -option "caps:swapescape"

Однако данный метод не сохраняет изменения после перезагрузки системы. Для того чтобы изменения были постоянными, нужно применить другие подходы.

Способы постоянного переключения

1. Использование dconf-editor

Если вы предпочитаете изменить системные настройки через графический интерфейс, вы можете воспользоваться dconf-editor, который можно установить с помощью команды:

sudo apt-get install dconf-tools

Для систем на базе Ubuntu версии 20.04 и выше выполните:

sudo apt install dconf-cli dconf-editor

После установки запустите dconf-editor и выполните следующие шаги:

  1. Перейдите в путь: org > gnome > desktop > input-sources.
  2. Найдите опцию xkb-options и добавьте строку 'caps:swapescape', убедившись, что вы не удаляете квадратные скобки в начале и в конце.

2. Конфигурация через .profile

Вы можете добавить команду setxkbmap в файл ~/.profile, чтобы она выполнялась при каждом входе в систему:

echo "/usr/bin/setxkbmap -option 'caps:swapescape'" >> ~/.profile

3. Использование xmodmap

Еще один способ реализовать это состоит в использовании xmodmap:

  1. Выполните следующие команды в терминале:
    xmodmap -e "clear Lock"
    xmodmap -e "keysym Caps_Lock = Escape"
    xmodmap -e "keysym Escape = Caps_Lock"
  2. Создайте файл ~/.xmodmap с этими командами:
    xmodmap -pke > ~/.xmodmap
  3. Обновите файл ~/.xinitrc, добавив строку:
    echo "xmodmap .xmodmap" >> ~/.xinitrc

4. Изменение конфигурационного файла X

Для постоянного изменения вы можете редактировать файл конфигурации X:

  1. Создайте файл, если он не существует: /etc/X11/xorg.conf.d/00-keyboard.conf.
  2. Добавьте следующий код:
    Section "InputClass"
    MatchIsKeyboard "on"
    Option "XkbOptions" "caps:swapescape"
    EndSection

5. Использование localectl

Если вы хотите изменить настройки на уровне системы, вы можете использовать localectl:

sudo localectl set-x11-keymap us "" "" "caps:swapescape"

Эта команда применит изменения даже на экране входа в систему.

Заключение

Выбор подходящего способа зависит от ваших предпочтений и потребностей. Можете пользоваться как графическими утилитами, так и командной строкой. Главное – убедиться, что изменения сохраняются при перезагрузке системы. Используя описанные методы, вы сможете легко и эффективно переключить функции клавиш Caps Lock и Esc на вашей системе.

Оцените материал
Добавить комментарий

Капча загружается...