Как мне переназначить ключ блокировки шапки?

69

Раньше я использовал, xmodmapчтобы запретить работу Caps Lockкнопки, а затем велел Launchy обработать нажатие клавиши. Кажется, я больше не могу этого делать.

Каков наилучший способ отключить Caps Lockнормальное поведение и заставить его делать что-то еще?

Mehrdad
источник
1
Для Ubuntu 14.04 см. Askubuntu.com/q/444714/25388
Лео Леопольд Герц 준영

Ответы:

71

От howtogeek.com, который имеет хороший ответ для любой ОС.

Для Linux (включая Ubuntu):

setxkbmap -option <OPTION>

Где <OPTION>может быть например:

  • caps:none - Отключает Caps Lock.
  • caps:super- Caps Lock становится дополнительным Super (он же ключ Win).
  • caps:ctrl_modifier- Caps Lock становится дополнительным Ctrl .
  • caps:numlock- Caps Lock становится дополнительным Num Lock .
  • caps:escape- Caps Lock становится дополнительным Escape .
  • caps:backspace- Caps Lock становится дополнительным Backspace .
  • caps:swapescape - Caps Lock становится Escape, а Escape становится Caps Lock

Примечание: Xmodmap не рекомендуется в пользу setxkbmap.

Wernight
источник
3
люблю тебя, мужик, спасибо, это работает на убутну 14.10
Анджей Реманн
2
работает и в Ubuntu 15.10! Спасибо!
donatello
6
красиво и просто, работает в 16.04
chepyle
4
Чтобы восстановить любые setxkbmapизменения (т. setxkbmap -option
Е.
1
Если вы переназначили клавишу Capslock на backspace, и теперь вы удивляетесь, почему она не удаляет слова, если вы удерживаете ее нажатой, это потому, что вам нужно использовать дополнительную команду. После setxkbmap -option caps:backspaceвхода xset r 66и вуаля.
Габриэль
19

Вы можете отключить его, зайдя в клавиатуру-> Layouts-> options-> caps lock и выбрав «отключить caps lock».


Редактировать :

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

Но Launchy отлично работает со мной после попытки с CTRL+ Super+ Space.

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

И вам нужно занести белый список launchyв трее значков. См. Как получить доступ и включить дополнительные значки в системном трее? , Также вам нужно добавить его в приложения Startup, так как он не будет работать, когда он не открыт.


В конце концов, в качестве альтернативы Launcy, попробуйте Synapse для его лучшей интеграции с gnome и unity.

Binarylife
источник
Эта опция не доступна для меня в Ubuntu 15.04.
MichielB
19

В Ubuntu 11.10 - 13.04

  1. Откройте приложение « Раскладка клавиатуры» и нажмите кнопку «Параметры».
  2. Список вариантов переплета появится. Выберите «Поведение ключа Caps Lock».
  3. Выберите предпочтительный вариант перепрофилирования Caps Lock.

Скриншот доступных опций

Jjed
источник
1
@JacobJohanEdwards Примечание для себя, проверьте, xmodmap -e 'clear Lock' -e 'keycode 0x42 = Escape'все еще работает.
Джед
Для пользователей vim «Practical Vim» рекомендует сопоставить блокировку прописных букв ctrl на системном уровне. Раскладка клавиатуры> Параметры> Положение клавиши Ctrl> Caps Lock, когда Ctrl делает свое дело.
rpattabi
12
Эти настройки больше не существуют в 13.10. Установите gnome-tweak-tool, там у вас будут похожие настройки в разделе «Набор текста».
pcworld
Это не работает для меня в Ubuntu 12.10. Неправильное использование этих настроек в центре управления гномами, похоже, не имеет никакого эффекта.
Эндрю Вагнер
4
Почему они убрали эти опции с 14.04?
Лео Леопольд Герц 준영
16

В основном это модификация ответа, представленного на https://askubuntu.com/a/223674/22073 .

Вы также можете изменить поведение Caps Lock, используя XKBOption. Эти изменения распространяются даже на виртуальные консоли (/ dev / tty [1-6] или Ctrl-Alt-F [1-6]).

Например, чтобы отключить Caps Lock, вы должны иметь следующее /etc/default/keyboard:

# Check /usr/share/doc/keyboard-configuration/README.Debian for
# documentation on what to do after having modified this file.

# The following variables describe your keyboard and can have the same
# values as the XkbModel, XkbLayout, XkbVariant and XkbOptions options
# in /etc/X11/xorg.conf.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="caps:none"

# If you don't want to use the XKB layout on the console, you can
# specify an alternative keymap.  Make sure it will be accessible
# before /usr is mounted.
# KMAP=/etc/console-setup/defkeymap.kmap.gz

Тогда вы бы запустить:

sudo dpkg-reconfigure keyboard-configuration

Для получения полного списка настроек XKBOPTIONS, посмотрите на /usr/share/X11/xkb/rules/base.lst. Вот полный список с моей машины Ubuntu 13.10: http://sprunge.us/cUZO

Еще больше информации можно найти в вики ArchLinux: https://wiki.archlinux.org/index.php/Keyboard_Configuration_in_Xorg

Этеш Чоудхури
источник
Отлично, я использую, XKBOPTIONS="ctrl:swapcaps"чтобы поменять местами левый Ctrl с Caps.
Марсио
Работает 16.04 в X и виртуальных консолях.
JFS
11

Чтобы перенести бесполезный caps_lock в базовую смену, сделайте

xmodmap -e "keycode 66 = Shift_L"
jobwat
источник
Это не сохраняется после перезапуска.
Чарек Томчак
3
Чтобы сохранить его после перезагрузки, выполните следующие действия: Ubuntu Dash Home> Автозагрузка приложений> Добавить> Введите команду выше.
Чарек Томчак,
7

Следующий метод использует комбинацию Compiz для запуска приложения при нажатии клавиши.

В итоге -

  1. измените поведение клавиши Caps Lock, чтобы имитировать другую клавишу.
  2. Сконфигурируйте compiz для прослушивания нового ключа mimic'd и запустите пользовательский скрипт.

Замените заглавные буквы

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

  • создать файл, например "capslock"
  • скопируйте и вставьте следующее в файл
keycode 66 = cent
clear Lock
add Control = cent
  • Теперь запустите xmodmap, чтобы распознать ваши изменения:

xmodmap capslock

Для постоянного запуска добавьте эту команду в автозагрузку приложения.

Нажатие Caps Lock теперь только имитирует нажатие клавиши «цент» - обратите внимание, что это не та клавиша, которая фактически существует на моей клавиатуре.

Вы можете получить список имен KeySym здесь .

Настроить Compiz

Запустите менеджер настроек CompizConfig

В общем разделе убедитесь, что «Команды» включены, и настройте команду, как показано:

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

NB включите привязку клавиш и используйте «комбинацию клавиш для захвата», чтобы распознать ваш «центовый» ключ. К сожалению, вы не можете получить compiz для распознавания ключа блокировки крышки.

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

Очевидно - замените «firefox» на любую команду, которую вы используете для запуска «launchy»

Теперь, когда вы нажмете клавишу Caps Lock, compiz распознает сопоставленную клавишу «цент» и запустит команду - в данном случае firefox - в вашем случае «launchy».

fossfreedom
источник
Через несколько минут настройки возвращаются - и снова Caps Lock ведет себя как обычно.
Виталий Зданевич
5
  1. Используйте команду xev. Когда вы нажмете Enter, xev запустится. xev принимает все ваши данные и выводит информацию о ключе в командную строку. Я рекомендую навести курсор мыши на клавишу выхода в окне xev, нажать клавишу caps (или любую другую клавишу, о которой вы хотите узнать) и немедленно выйти из xev. Соответствующие строки в моей системе для заглавных букв выглядят примерно так:

    KeyPress event, serial 36, synthetic NO, window 0x4400001,
        root 0x27a, subw 0x0, time 19164277, (16,-9), root:(1156,46),
        state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
        XLookupString gives 0 bytes: 
        XmbLookupString gives 0 bytes: 
        XFilterEvent returns: False
    
    KeyRelease event, serial 36, synthetic NO, window 0x4400001,
        root 0x27a, subw 0x0, time 19164397, (16,-9), root:(1156,46),
        state 0x2, keycode 66 (keysym 0xffe5, Caps_Lock), same_screen YES,
        XLookupString gives 0 bytes: 
        XFilterEvent returns: False
    

    Обратите внимание keycode(66) и keysym(0xffe5).

    Теперь вы также можете получить данные для другого ключа - который вы на самом деле не используете, и который, в контексте которого вы хотите использовать кнопку блокировки заглавных букв, ничего не делает. Итак, если вы хотите, чтобы caps lock активировал окно поиска Unity (как обычно делает super), возможно, используйте `, например. На моей машине:

    keycode 49 (keysym 0x60, grave)
    
  2. Свяжите функцию нового ключа с кнопкой Caps Lock, используя xmodmap. Я уверен, что вы хотите использовать такую ​​команду:

    xmodmap -e "keycode 66=0x60"
    

    Теперь, если вы нажмете кнопку блокировки физического регистра в текстовом поле, появится серьезный символ (`). Но если вы назначите ему комбинацию клавиш, она сделает что-то еще. Если вы хотите иметь возможность использовать его в текстовом поле, возможно, замените заглавные буквы на левое смещение, или f10, или что-то еще, что не похоже на то, что это будет мешать команде, которую вы хотите использовать.

  3. Проверьте это, чтобы убедиться, что команда, которую я вам дал, работает так, как вы хотите.

  4. Перейдите в автозагрузку приложений и добавьте эту команду в свои автозагрузки. Таким образом, ключ будет правильно переключаться при каждом запуске.

  5. Танец.

(крикнуть компании) Изменить привязку клавиш (аппаратное обеспечение к программному)

Кроме того, для получения дополнительной помощи на xmodmap:

http://www.xfree86.org/4.2.0/xmodmap.1.html

http://www.in-ulm.de/~mascheck/X11/xmodmap.html

Даниил
источник
5

Ubuntu 16.04

setxkbmap -option <OPTION> от ответа Wernight мне показалось, что он сразу работает

Однако он уйдет на перезагрузку. Для решения этой проблемы я добавил в свои автозагрузку приложения

  1. Поиск и запуск Startup Applications>> Нажмите Добавить
  2. Введите в /usr/bin/setxkbmap -option <OPTION>качестве команды (Примечание: полный путь важен)

Заменить <OPTION>на что-то вроде caps:escape(я использую это для vi)

Фон

Я только что обновился с 15.10 до 16.04, и все, что я использовал для сопоставления, прежде чем перестал работать.

Энтони Астидж
источник
2

Опция, которую я нашел лучшей для меня (в любом X-совместимом wm / de), добавляет

Option "XkbOptions" "caps:swapescape"

внутри

Section "InputClass"
    Identifier "system-keyboard"
    MatchIsKeyboard "on"
    Option "XkbLayout" "US"
    Option "XkbOptions" "caps:swapescape" # << is what you want
EndSection

блок в /etc/X11/xorg.conf.d/00-keyboard.conf (создать при необходимости).

Роман Ризен
источник
1

Хотя, конечно, опция xmodmap будет работать, я хотел найти вариант, который использует графический интерфейс. Это доступно для меня (используя Ubuntu 15.10):

  • установить gnome-tweak-tool
  • перейти к «типу»
  • в разделе «Поведение Caps Lock» выберите «Caps Lock отключен»
MichielB
источник
-1

Самое надежное решение - купить клавиатуру, которая позволяет переназначать клавиши в прошивке, то есть профессиональную программируемую клавиатуру.

Они обычно стоят около 200 долларов, а также имеют высококачественные механические ключи. Они дорогие, но это единственный способ избежать необходимости бороться с этим на каждой новой машине, на которой вы сидите, и каждый раз, когда разработчики вносят принципиальные изменения в инфраструктуру ОС, такие же фундаментальные, как раскладка клавиатуры.

Эндрю Вагнер
источник
1
Это не помогает с ноутбуком.
Wallyk