Пересмотрите CapsLock для Escape и управления всей системой
18
Можно ли переназначить всю систему клавиш CapsLock так, чтобы при нажатии кнопки CapsLock она действовала как клавиша выхода, а при нажатии другой клавиши она действовала как клавиша управления?
Кажется, это будет очень сложно. Например, он не может генерировать события нажатия клавиши, потому что вы не знаете, какая клавиша была просто нажата. Если он был отпущен без нажатия другой клавиши, это был Escape, в противном случае это был Control.
CJM
Ответы:
16
Я нашел очень хорошее решение под названием xcape . Из README:
xcape работает как демон и перехватывает управляющий ключ. Если клавиша управления нажата и отпущена сама по себе, она генерирует событие клавиши Escape.
Это имеет больше смысла, если вы переназначили свою клавишу Caps Lock на Control. Будущие версии этой программы могут сделать это для вас, но сейчас это то, что вы должны сделать сами.
Я сопоставил Caps с Escape, чтобы мне было удобнее печатать на Vim. Я использовал xmodmapи вставил это ~/.Xmodmap.
clear Lock
keycode 0x42 = Escape
Для применения: xmodmap ~/.Xmodmap. Вы можете поместить это в файл, такой как ~ / .bash_profile (я вставил в ~ / .xinitrc, потому что я не использую менеджер входа в систему.
Чтобы отобразить CapsLock + [другой ключ], рассмотрите возможность использования xbindkeys.
Единственное решение Linux для переназначения ключей в масштабе всей системы - написать простое правило udev. Он не будет зависеть от X, будет работать на любом терминале или приложении и переносится между любыми недавними установками Linux, просто копируя два файла.
Вам нужно написать 2 файла: один, содержащий правило udev, которое сообщает ядру о необходимости переназначения ключей, и другой, содержащий фактические сопоставления, которые вам нужны.
Я столкнулся с другим вопросом в AskUbuntu, на который был дан хороший ответ , но мне пришлось немного изменить его, чтобы он работал на моих системах.
В соответствии с комментариями Луи и Сергея, я придумал это решение, которое работает для меня на Ubuntu 16.04 (Xenial), и я перенесу его с собой в другие системы Linux, которые я использую.
Я установил xcape и поместил следующие строки кода в мой .profileфайл в моем домашнем каталоге.
ОБНОВЛЕННЫЙ МЕТОД:
Из-за того, что различные дисплеи (gdm / kdm / sddm / etc) ведут себя странным образом и сбрасывают setxbmapпосле приостановки / возобновления или блокировки / разблокировки, я обнаружил, как установить параметры таким образом, чтобы они наследовали его и не Сбросить это все время. Поскольку я приостанавливаю и возобновляю много, мне нужно было убедиться, что я не получил много копий xcapeработы, что решено в новом скрипте ниже.
Сначала измените конфигурацию клавиатуры с помощью sudo gedit /etc/default/keyboardи установите, XKBOPTIONS="ctrl:nocaps"а затем ~/.xprofileвставьте одну строку ниже.
Надеемся, что различные разделы скрипта сэкономят вам время / проблемы и предотвратят застревание логинов. Сначала он проверяет, есть ли уже запущенный экземпляр, и убивает его, поскольку единственное, что xcapeнужно сделать, это сопоставить Ctrl с Esc, это безопасно, затем hashчасть гарантирует, что вы xcape
установили, иначе ваша система может зависнуть при попытке входа в систему, потому что все запускаются ожидается, что скрипты завершатся чисто.
Я использовал 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
Ответы:
Я нашел очень хорошее решение под названием xcape . Из README:
источник
Я сопоставил Caps с Escape, чтобы мне было удобнее печатать на Vim. Я использовал
xmodmap
и вставил это~/.Xmodmap
.Для применения:
xmodmap ~/.Xmodmap
. Вы можете поместить это в файл, такой как ~ / .bash_profile (я вставил в ~ / .xinitrc, потому что я не использую менеджер входа в систему.Чтобы отобразить CapsLock + [другой ключ], рассмотрите возможность использования
xbindkeys
.источник
Единственное решение Linux для переназначения ключей в масштабе всей системы - написать простое правило udev. Он не будет зависеть от X, будет работать на любом терминале или приложении и переносится между любыми недавними установками Linux, просто копируя два файла.
Вам нужно написать 2 файла: один, содержащий правило udev, которое сообщает ядру о необходимости переназначения ключей, и другой, содержащий фактические сопоставления, которые вам нужны.
Используя этот метод, я переназначил всю свою клавиатуру, может быть, код полезен для вдохновения http://git.adirat.com/carpalx-keyboard
источник
Специально для этой цели я создал инструмент на C, который решает многие проблемы с решением xcape / xmodmap :
источник
Я столкнулся с другим вопросом в AskUbuntu, на который был дан хороший ответ , но мне пришлось немного изменить его, чтобы он работал на моих системах.
В соответствии с комментариями Луи и Сергея, я придумал это решение, которое работает для меня на Ubuntu 16.04 (Xenial), и я перенесу его с собой в другие системы Linux, которые я использую.
Я установил xcape и поместил следующие строки кода в мой
.profile
файл в моем домашнем каталоге.ОБНОВЛЕННЫЙ МЕТОД:
Из-за того, что различные дисплеи (gdm / kdm / sddm / etc) ведут себя странным образом и сбрасывают
setxbmap
после приостановки / возобновления или блокировки / разблокировки, я обнаружил, как установить параметры таким образом, чтобы они наследовали его и не Сбросить это все время. Поскольку я приостанавливаю и возобновляю много, мне нужно было убедиться, что я не получил много копийxcape
работы, что решено в новом скрипте ниже.Сначала измените конфигурацию клавиатуры с помощью
sudo gedit /etc/default/keyboard
и установите,XKBOPTIONS="ctrl:nocaps"
а затем~/.xprofile
вставьте одну строку ниже.Надеемся, что различные разделы скрипта сэкономят вам время / проблемы и предотвратят застревание логинов. Сначала он проверяет, есть ли уже запущенный экземпляр, и убивает его, поскольку единственное, что
xcape
нужно сделать, это сопоставить Ctrl с Esc, это безопасно, затемhash
часть гарантирует, что выxcape
установили, иначе ваша система может зависнуть при попытке входа в систему, потому что все запускаются ожидается, что скрипты завершатся чисто.Старый способ:
Сергий:
Луи:
источник