Пересмотрите CapsLock для Escape и управления всей системой


18

Можно ли переназначить всю систему клавиш CapsLock так, чтобы при нажатии кнопки CapsLock она действовала как клавиша выхода, а при нажатии другой клавиши она действовала как клавиша управления?


5
Кажется, это будет очень сложно. Например, он не может генерировать события нажатия клавиши, потому что вы не знаете, какая клавиша была просто нажата. Если он был отпущен без нажатия другой клавиши, это был Escape, в противном случае это был Control.
CJM

Ответы:


16

Я нашел очень хорошее решение под названием xcape . Из README:

xcape работает как демон и перехватывает управляющий ключ. Если клавиша управления нажата и отпущена сама по себе, она генерирует событие клавиши Escape.

Это имеет больше смысла, если вы переназначили свою клавишу Caps Lock на Control. Будущие версии этой программы могут сделать это для вас, но сейчас это то, что вы должны сделать сами.


Я сделал хакерский скрипт для этого: github.com/cmatheson/super-caps
cam

6

Я сопоставил Caps с Escape, чтобы мне было удобнее печатать на Vim. Я использовал xmodmapи вставил это ~/.Xmodmap.

clear Lock
keycode 0x42 = Escape

Для применения: xmodmap ~/.Xmodmap. Вы можете поместить это в файл, такой как ~ / .bash_profile (я вставил в ~ / .xinitrc, потому что я не использую менеджер входа в систему.

Чтобы отобразить CapsLock + [другой ключ], рассмотрите возможность использования xbindkeys.


4

Единственное решение Linux для переназначения ключей в масштабе всей системы - написать простое правило udev. Он не будет зависеть от X, будет работать на любом терминале или приложении и переносится между любыми недавними установками Linux, просто копируя два файла.

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

Используя этот метод, я переназначил всю свою клавиатуру, может быть, код полезен для вдохновения http://git.adirat.com/carpalx-keyboard


ссылка мертва, не могли бы вы обновить ее? Благодарность!
Цед

Я обновил его, извините за задержку
gimmesudo

Bitbucket говорит: «У вас нет доступа к этому хранилищу». Вы можете сделать это снова публично? Благодарность!
Тяньи Цуй

@TianyiCui проверьте ссылку сейчас
gimmesudo

1
Ссылка мертва или заблокирована для меня. Есть ли шанс, что вы могли бы поднять фактические файлы в своем ответе?
Лабиринт


1

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

В соответствии с комментариями Луи и Сергея, я придумал это решение, которое работает для меня на Ubuntu 16.04 (Xenial), и я перенесу его с собой в другие системы Linux, которые я использую.

Я установил xcape и поместил следующие строки кода в мой .profileфайл в моем домашнем каталоге.

ОБНОВЛЕННЫЙ МЕТОД:

Из-за того, что различные дисплеи (gdm / kdm / sddm / etc) ведут себя странным образом и сбрасывают setxbmapпосле приостановки / возобновления или блокировки / разблокировки, я обнаружил, как установить параметры таким образом, чтобы они наследовали его и не Сбросить это все время. Поскольку я приостанавливаю и возобновляю много, мне нужно было убедиться, что я не получил много копий xcapeработы, что решено в новом скрипте ниже.

Сначала измените конфигурацию клавиатуры с помощью sudo gedit /etc/default/keyboardи установите, XKBOPTIONS="ctrl:nocaps"а затем ~/.xprofileвставьте одну строку ниже.

ps aux | grep -i '[x]cape' && killall -9 xcape; hash xcape 2>&1 >/dev/null && xcape -e 'Control_L=Escape' -t 100 &

Надеемся, что различные разделы скрипта сэкономят вам время / проблемы и предотвратят застревание логинов. Сначала он проверяет, есть ли уже запущенный экземпляр, и убивает его, поскольку единственное, что xcapeнужно сделать, это сопоставить Ctrl с Esc, это безопасно, затем hashчасть гарантирует, что вы xcape установили, иначе ваша система может зависнуть при попытке входа в систему, потому что все запускаются ожидается, что скрипты завершатся чисто.

Старый способ:

setxkbmap -option 'caps:ctrl_modifier'; xcape -e '#66=Escape'

Сергий:

Я использовал gnome-tweak-tool для привязки Caps Lock к Ctrl, поскольку в Системных настройках Ubuntu 14.04 нет раскладки клавиатуры. Тогда xcape -e 'Control_L = Escape' не работал, но после использования xcape -d я обнаружил, что Caps Lock генерирует код клавиши 66 и переназначает его соответственно: xcape -e '# 66 = Escape'. - Сергей Белозёров 4 сентября '14 в 10:08

Луи:

Согласно этому сообщению в блоге, это можно сделать только с помощью 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' - Луи Симоне 4 августа '15 в 10:06

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.