Переназначение 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
задан 28.01.2020, 10:21

6 ответов

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

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

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

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

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

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

-2
ответ дан 28.01.2020, 10:22
  • 1
    Как непринятый ответ ниже, конечно, можно сделать вторую часть с многочисленными утилитами, такими как xcape или Дома-модификатор. – knksmith57 28.01.2020, 10:22
  • 2
    Спасибо за подтверждение, которое X не разработано, чтобы сделать то, что я хочу. Если X гуру хотят взломать что-то, чтобы заставить его работать, свяжитесь со мной. – Adam Rackis 28.01.2020, 10:23

Я ищу это также. С неделю назад я нашел мой сам частичное решение с помощью 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
ответ дан 28.01.2020, 10:23
  • 1
    Другой опцией является Дома-модификатор. It' s не в активной разработке, и отличается немного от xcape путем установки в корне. Однако это инициировало через xorg.conf и следовательно может действовать только на определенные клавиатуры при использовании других клавиатур одновременно. – falvojr 28.01.2020, 10:23

Установка 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
ответ дан 28.01.2020, 10:23

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

На 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
ответ дан 28.01.2020, 10:24

У меня есть эта установка на моем 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
ответ дан 28.01.2020, 10:24
  • 1
    Согласно это сообщение в блоге , возможно сделать это с одним только xcape: setxkbmap -option 'caps:ctrl_modifier' xcape -e 'Caps_Lock=Escape' setxkbmap -option 'caps:ctrl_modifier' xcape -e 'Caps_Lock=Escape;Control_L=Escape;Control_R=Escape' – Adam Rackis 28.01.2020, 10:25
  • 2
    Это должно было действительно быть принятым ответом @user372737 – knksmith57 28.01.2020, 10:26
  • 3
    @LouisSimoneau это это тысячу раз это. – Adam Rackis 28.01.2020, 10:26
  • 4
    I' ve привык gnome-tweak-tool для карты Caps Lock к Ctrl, поскольку нет никакого Keyboard layout в System Settings на Ubuntu 14.04. Затем xcape -e 'Control_L=Escape' didn' t работа, но после использования xcape -d I' ve обнаружил, что Caps Lock генерирует код клавиши 66 и повторно отобразил его соответственно: xcape -e '#66=Escape'. – knksmith57 28.01.2020, 10:26
  • 5
    Какой-либо прогресс с проблемой задержки? – thepoosh 28.01.2020, 10:27

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

1
ответ дан 28.01.2020, 10:25
  • 1
  • 2
    Есть ли любой способ выключить " swap" из Esc к заглавным буквам я предпочитаю не иметь заглавные буквы вообще и сохранять старый и новый Esc обоими поведениями как Escape. – Alex Churchill 28.01.2020, 10:26
  • 3
    @dragon788 прибывают к Arch (Вы могли даже попробовать Antergos). I' ve, перемещенный из лет Ubuntu назад и, никогда не будет возвращаться, it' s просто путь лучше. – codekaizen 28.01.2020, 10:26
  • 4
    Спасибо, I' m оказывающийся перед необходимостью помещать ссылку на автоматическую компиляцию это в мой dotfiles. Я могу также PR README.md как на Ubuntu 16.04, это потребовало libudev-dev и libevdev-dev для компиляции. – Tshepang 28.01.2020, 10:26

Теги

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