Переназначение Caps Lock на Control и Escape (не обычным способом)

Я знаю, как использовать xmodmap для переназначения ключа блокировки Caps, чтобы он действовал как управляющий ключ или как Escape-ключ. Я хотел бы объединить обе функции следующим образом:

Когда я нажимаю, а затем отпускаю клавишу Caps Lock, она отправляет Escape. Когда я удерживаю Caps Lock и нажимаю другую клавишу (скажем, A), он отправляет Control-A.

Существует ли какая-либо комбинация xkb, xmodmap и чего-то еще, что могло бы заставить Caps Lock вести себя таким образом в X?

Я использую Ubuntu Precise на Macbook Air 3,1.

27
задан 19 August 2012 в 21:18

6 ответов

Можно сделать первое (отображающийся Caps Lock к Esc ), но Вы не можете сделать второго.

Простое Объяснение: Caps Lock просто не разработана, чтобы сделать что-то при нажатии.

Тщательно продуманное Объяснение: существует много типов ключей. Два из них Ключи Блокировки Модифицирующих клавиш и .

Caps Lock Ключ Блокировки , в то время как ключи, такие как Ctrl , Высокий звук и , который Сдвиг Модифицирующие клавиши .

, очевидно из их имен, что Модифицирующие клавиши изменяют функцию следующей клавиши, нажатой, и Ключи Блокировки действие как переключатель для включения или выключения некоторой конкретной функции.

Теперь, с тех пор Caps Lock Ключ Блокировки , у Вас не может быть его, ведут себя как Модифицирующая клавиша , не отображая его на один. Caps Lock отдельно не может функционировать как Модифицирующая клавиша .

-2
ответ дан 19 August 2012 в 21:18

У меня есть эта установка на моем Mac, и я попытался найти путь к Ubuntu без удачи.

ну, это теперь работает. Спасибо tungd для ponting меня к xcape. То, что я сделал, действительно просто и просто.

  1. Под Установками системы> Раскладка клавиатуры> Опции...> положение клавиши Ctrl, я проверил 'Caps Lock как Ctrl'.

  2. Сделанный xcape-e 'Control_L=Escape'

, Caps Lock работает Ctrl при использовании как модификатор и как Esc при одном только нажатии (существует небольшая задержка нескольких сотен миллисекунд, как отмечено на xcape README файл, таким образом, это все еще не столь оптимально как решение Mac, которое использует KeyRemap4MacBook.)

34
ответ дан 19 August 2012 в 21:18

Я ищу это также. С неделю назад я нашел мой сам частичное решение с помощью xmodmap:

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

Это, конечно, не работает отлично, это эффективно отправляет и Escape и Ctrl одновременно, когда я нажимаю CapsLock, но я был доволен им некоторое время.

Наконец я нашел эту небольшую утилиту https://github.com/alols/xcape. Таким образом, теперь я могу просто повторно отобразить CapsLock на Ctrl и позволить xcape сделать свое задание.

6
ответ дан 19 August 2012 в 21:18

Установка xcape

sudo apt-get install xcape

Добавляет эти две строки в Вашем ~/.bashrc

/usr/bin/setxkbmap -option 'caps:ctrl_modifier'⏎
/usr/bin/xcape -e 'Caps_Lock=Escape' -t 100

Уведомление часть -t 100, если Вы не устанавливаете его, можно заметить задержку Esc при использовании энергии.

3
ответ дан 19 August 2012 в 21:18

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

1
ответ дан 19 August 2012 в 21:18

РЕДАКТИРОВАНИЕ: Зафиксированный это для самых умных (более новых) менеджеров по оформлению.

На Louis и комментарии Sergiy я предложил это решение, которое работает на меня на Ubuntu 16.04 (Гостеприимной) с LightDM и Единицей.

я поместил следующую строку кода в мой .xprofile файл в моем корневом каталоге.

setxkbmap -option 'caps:ctrl_modifier' && xcape -e 'Caps_Lock=Escape' &

запаздывание & помещает команду xcape в фон так, чтобы это не блокировало Вашу сессию. setxkbmap сразу вносит свое изменение.

Sergiy:

я использовал инструмент тонкой настройки гнома для отображения Caps Lock на Ctrl, поскольку нет никакой Раскладки клавиатуры в Параметрах настройки системы на Ubuntu 14.04. Затем xcape-e 'Control_L=Escape' не работал, но после использования xcape-d я обнаружил, что Caps Lock генерирует код клавиши 66 и повторно отобразила его соответственно: xcape-e '#66=Escape'. †“Sergiy Byelozyorov 4 сентября '14 в 10:08

Louis:

Согласно этому сообщению в блоге, возможно сделать это с одним только xcape: setxkbmap - опция 'caps:ctrl_modifier' xcape-e 'Caps_Lock=Escape' setxkbmap - опция 'caps:ctrl_modifier' xcape-e 'Caps_Lock=Escape; Control_L=Escape; Control_R=Escape' †“Louis Simoneau 4 августа '15 в 10:06

4
ответ дан 19 August 2012 в 21:18

Другие вопросы по тегам:

Похожие вопросы: