Как навсегда переключить Caps Lock и Esc

116

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

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

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

Исаак Донтже Линделл
источник
1
Я поместил эту команду в мою, ~/.bashrcчтобы она сохранялась между перезапусками системы. ( ctrl:nocapsдля меня, правда, для tmux)
опять
2
@opyate Я бы поместил эту команду в ~ / .profile, чтобы она запускалась только один раз после интерактивного входа в систему.
suzanshakya

Ответы:

126

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

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

sudo apt-get install dconf-tools

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

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

Опции xkb в dconf-редакторе

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

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

Другой распространенный вариант, который можно использовать, - terminate:ctrl_alt_bkspразрешить ctrl+ alt+ backspaceзавершить X-сеанс.

chaskes
источник
5
+1 за ссылки keyboard-config(7), это было то, что я искал.
ulidtko
61
Вы также можете сделать это из командной строки, не устанавливая dconf-editor:dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:escape']"
Pi Delport
4
Не запускайте указанную выше команду, используя 'sudo', так как этот параметр кажется для каждого пользователя.
Бор,
11
Обратите внимание , что вам нужно использовать , 'caps:swapescape'если вам нужно поменять местами две клавиши (вместо того , чтобы просто назначая Escк Caps Lock).
thameera
1
или вы можете сделатьgsettings set org.gnome.desktop.input-sources xkb-options "['caps:escape']"
ACyclic
50

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

setxkbmap -option caps:swapescape

Возможны и другие варианты:

  • caps:none дезактивировать
  • caps:escape чтобы сделать это дополнительным побегом
  • caps:super сделать его дополнительным супер (Windows) ключом.

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

Jojo
источник
1
Это работает в Ubuntu 14.04, Unity.
Чад
2
У меня тоже работал в Ubuntu 16.04
Джесси Чан,
4
по состоянию на 18.04 ввод setxkbmapкоманд ~/.xsessionrcи ~/.profileбольше не отображаются, чтобы сохранить настройки между
входами в
2
@ Conrad.Dean Я использую это в Монетном дворе 19, который основан на 18.04 LTS: здесь нет проблем. Настройки не должны сохраняться, но загружаются при входе в систему.
Jojo
~/.profileэто плохое место, чтобы поместить это - этот файл читается на каждой оболочке входа в систему. Поместите его в файл, используемый при запуске X11, например ~/.xinitrcили ~/.xsession.
Сарнольд
39

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

Из терминала беги

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

Вы можете найти опцию, чтобы поменять Caps Lock и Esc в «Печатание -> Поведение ключа Caps Lock».

Исаак Донтже Линделл
источник
5
На Ubuntu 14 расположение окна очень странное, но все равно работает.
увасал
1
Да, я думаю, что gnome-tweak-toolне следует использовать для этой задачи, потому что есть инструменты по умолчанию для этого.
Лео Леопольд Герц
Это, безусловно, лучшее решение.
Джейсон МакВетта
2
Для Ubuntu> 18.04 его можно найти в Keyboard & Mouse> Additional Layout Options>Caps Lock Behavior
Adracus
Это сработало для меня 19.04. Я не мог получить ни одно из xmodmapили setxkbmapрешений для сохранения 19.04.
ахморрис
23

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

xmodmap -e "keycode 9 = Caps_Lock NoSymbol Caps_Lock"   #this will make Esc to act as Caps Lock
xmodmap -e "keycode 66 = Escape NoSymbol Escape"        #this will make Caps Lock to act as Esc

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

xmodmap -pke > ~/.xmodmap

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

xmodmap .xmodmap
Раду Рэдяну
источник
6
Это не работает под Ubuntu 14.04. Я также попробовал файл .xsessionrc, и он также не работал.
miguel.martin
Как вы отменяете настройки?
hlin117
@ hlin117 Просто очистите содержимое ~/.xmodmapфайла (запустив его только > ~/.xmodmapв своем терминале), затем перезапустите сеанс.
Раду Рэдяну
2
В Ubuntu 14.04 это позволяет отображать Escape в Caps_Lock, но Caps_Lock не отображает Escape.
user1691145
1
Привет, я сделал это, и это работает. Однако, помимо того, что esc привязан к capslock, caps-lock теперь привязан и к capslock, и к escape. Возможно ли, что окружение рабочего стола каким-то образом все еще отвергает это? Я использую KDE
xor
18

Аналогично ответу @ 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"
Джилли
источник
Не работает в Linux Mint 17.1 (который основан на Ubuntu) :(
Jan Warchoł
3
пришлось изменить "удалить Lock = Caps_Lock" на "очистить замок", чтобы он работал
София
13

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

  • нажмите Настройки системы
  • раскладка клавиатуры
  • варианты ... (нижний правый угол)
  • Поведение клавиши Caps Lock (4-й вниз)
  • Прокрутите вниз и выберите «Swap ESC and Caps Lock».

Готово!

Джо
источник
Джо . Добро пожаловать, Спроси Ubuntu! ;-) Не могли бы вы просмотреть мои правки, а также просмотреть справку по редактированию, чтобы улучшить читаемость ваших ответов в будущем ... ;-)
Fabby
2
Это должно быть лучшим ответом для Ubuntu и Mint
Прасад
Делает ли это что-нибудь в дополнение к скриптовым обновлениям, упомянутым здесь? Предпочитаю делать это в скрипте.
Бен Криси
7

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

dconf write "/org/gnome/desktop/input-sources/xkb-options" "['caps:swapescape']"
Чад Скитерс
источник
Это решение только что прошло проверку на RedHat Enterprise Linux 7.
Чад Скитерс
3

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

Гейб Моутарт
источник
Это не доступно по крайней мере в 13.10.
Исаак Донтже Линделл
2

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

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

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

dotancohen
источник
это не сработало на Ubuntu 16.04. Не могли бы вы рассказать подробнее?
MaikoID
@MaikoID: Это в значительной степени канонический способ смешать CapsLock и Esc. Я понимаю, что более новые версии Ubuntu с Unity ломают множество «канонических юниксов» вещей, поэтому кажется, что все остальные ответы здесь касаются какого-то метода, зависящего от версии или DE (Unity). Для чего это стоит, это действительно работает на Kubuntu, который я лично использую.
dotancohen
2

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

gsettings set org.gnome.desktop.input-sources xkb-options "['caps:swapescape']"
Модесто
источник
все еще работает на 19.04.
Exeleration-G
1

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

Фархад Гударзи
источник
Здорово, что вы дали ответ на этот вопрос. Не могли бы вы отредактировать свой вопрос, чтобы немного расширить его, возможно, с желаемым результатом, выбрав «Swap ESC and Caps Lock». выбран.
Phil UK
Привет и добро пожаловать в Ask Ubuntu! В своем текущем состоянии этот ответ на самом деле не является полным, и поэтому рискует быть удаленным. Пожалуйста, прочитайте нашу справочную страницу « Как ответить» , а затем вернитесь и отредактируйте свой ответ, чтобы включить более подробную информацию, в частности, как это решает вопрос ОП. Кроме того, пожалуйста, прочитайте наш тур, чтобы получить значок и лучше понять, как работает наш сайт. Увидимся!
Каз Вулф
благодаря вашим советам. Я хочу, чтобы это редактирование было именно таким, как вы хотите.
Фархад Гударзи
К вашему сведению, связь с вашим доменом не работает (по крайней мере, для меня), но предыдущий домен IP-адресов работает.
Эндрю Т.
1

Ответ «Раскладка клавиатуры» с «Switch Escape and Capslock», приведенный выше, больше не действует в Ubuntu 16.04 и далее (это было раньше? Не знаю). Ответ: во избежание суеты с разрешениями и т. Д. Просто переключитесь на root, прежде чем начать делать все это, suвведя свой пароль root. Затем:

    cd /etc/default/
    vim keyboard

Там вы увидите строку:

    XKBOPTIONS=""

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

    XKBOPTIONS="caps:swapescape"

Выйдите из vim с помощью save:

    :wqa

Перезагрузка.

И это будет навсегда , я обещаю. :)

Алекс Федотов
источник
0

Примечание: это не меняет местами, только привязывает заглавные буквы к esc (Это было достаточно хорошо для моего vim usecase.)

Для Ubuntu 16:04 (со средой i3): создан файл ~ / .xessionrc с содержимым

xmodmap -e "clear lock" #disable caps lock switch
xmodmap -e "keysym Caps_Lock = Escape" #set caps_lock as escape
Маной Бишт
источник
1
Хотя этот ответ действительно может решить 1/2 проблемы, о которой спрашивал ОП, он появляется в очереди ответов низкого качества из-за (я полагаю) длины. Вы можете рассмотреть возможность его расширения с дальнейшими подробностями. Как и почему это работает, возможно.
Старейшина Гик