Как предотвратить эффект переключения колпачков, без переназначения или отключения его?

У меня есть программа X11, которая захватывает cap-lock и использует ее. Проблема в том, что я хочу отключить обычное переключение кеш-блокировок, но, похоже, это отключает ключ.

Таким образом, независимо от того, что X11 получает за нажатие клавиши блокировки, он все равно должен получать (не отключать ключ или переназначать его на какой-либо другой ключ), но без каких-либо изменений нажатия клавиш в шапку (который может быть на уровне ядра? ).

Я попытался изменить scancode, но это просто переделало ключ. Я также удалил запись с помощью xmodmap , но также отключил кепки.

Как я могу сказать ядру игнорировать кеп-ключ (по его обычной функции), но все равно передать сообщение X?

Просто добавим немного подробней:

«Программа», которую я пытаюсь запустить, гуманизирована «enso». Когда нет ключа, я получаю сообщение об ошибке «CRITICAL: root: Не удалось найти ключ квазимода». Когда нет ошибки, я могу использовать enso с шапками, но sofar не выяснил, как отключить функциональные возможности кешков, в то время как enso все еще может это получить.

3 Solutions collect form web for “Как предотвратить эффект переключения колпачков, без переназначения или отключения его?”

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

Если вы используете команду:

 setxkbmap -option caps:none 

Клавиатура больше не будет переключаться. Я подтвердил это на своем ноутбуке, работающем на Fedora 14, светодиод больше не загорается, и нормальная функциональность Capslock не прошла.

Однако использование xev по-прежнему показывает, что клавиша нажата:

 $ xev ... ... KeyPress event, serial 35, synthetic NO, window 0x6800001, root 0xb1, subw 0x0, time 261504852, (167,-15), root:(353,268), state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 35, synthetic NO, window 0x6800001, root 0xb1, subw 0x0, time 261504971, (167,-15), root:(353,268), state 0x10, keycode 66 (keysym 0xffffff, VoidSymbol), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False ... 

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

setxkbmap

Файл /usr/share/X11/xkb/rules/xorg.lst содержит полный список параметров, которые вы можете предоставить setxkbmap .

Грепируя через этот файл для «cap», я заметил эту строку:

 caps:none CapsLock is disabled 

В этом файле есть другие значения, поэтому, если это не то, что вы после, возможно, вместо одного из этих альтернативных значений.

 $ grep cap /usr/share/X11/xkb/rules/xorg.lst grp:caps_switch CapsLock (while pressed), Alt+CapsLock does the original capslock action grp:caps_toggle CapsLock grp:shift_caps_toggle Shift+CapsLock grp:shift_caps_switch CapsLock (to first layout), Shift+CapsLock (to last layout) grp:alt_caps_toggle Alt+CapsLock lv3:caps_switch CapsLock lv3:caps_switch_latch CapsLock (chooses 3rd level, latches when pressed together with another 3rd-level-chooser) ctrl:nocaps Make CapsLock an additional Ctrl ctrl:swapcaps Swap Ctrl and CapsLock grp_led:caps CapsLock caps CapsLock key behavior caps:internal CapsLock uses internal capitalization. Shift "pauses" CapsLock caps:internal_nocancel CapsLock uses internal capitalization. Shift doesn't affect CapsLock caps:shift CapsLock acts as Shift with locking. Shift "pauses" CapsLock caps:shift_nocancel CapsLock acts as Shift with locking. Shift doesn't affect CapsLock caps:capslock CapsLock toggles normal capitalization of alphabetic characters caps:numlock Make CapsLock an additional NumLock caps:swapescape Swap ESC and CapsLock caps:escape Make CapsLock an additional ESC caps:backspace Make CapsLock an additional Backspace caps:super Make CapsLock an additional Super caps:hyper Make CapsLock an additional Hyper caps:shiftlock CapsLock toggles Shift so all keys are affected caps:none CapsLock is disabled compose:caps CapsLock shift:breaks_caps Shift cancels CapsLock shift:both_capslock Both Shift-Keys together toggle CapsLock shift:both_capslock_cancel Both Shift-Keys together activate CapsLock, one Shift-Key deactivates 

Рекомендации

  • Отключить Caps Lock и переназначить меню на Super_R с помощью xmodmap больше не работает
  • Отключить и включить Caps Lock в Ubuntu
  • Отключить ключ Caps Lock в Linux
  • Клавиатура – изменение или отключение Caps Lock

Если вы не хотите, чтобы ключ Caps Lock имел обычный эффект, вы можете отключить модификатор Lock , сохраняя при этом Caps_Lock Caps_Lock.

 xmodmap -e 'clear Lock' 

Это очень похоже на ответ, который я дал для другого вопроса . Этот фрагмент кода xkb должен сделать трюк.

 partial modifier_keys xkb_symbols "capsoff" { key <CAPS> { type[Group1] = "ONE_LEVEL", symbols[Group1] = [ Caps_Lock ], actions[Group1] = [ NoAction() ] }; }; 
  • запускать команды xmodmap после входа в систему
  • Как связать ключ AltGr + с символом?
  • Отсутствует событие KeyPress
  • Команды командной строки xfce swap и управления
  • Map Caps Lock для управления в Linux Mint
  • xkbmap remap PrtScr и Insert Keys to Home и Escape
  • Повторное нажатие клавиши включения
  • xmodmap shift + keycode для создания keyym
  • xmodmap Событие KeyPress для события ButtonPress
  • как назначить другой модификатор клавише Alt для X11?
  • Создайте конфигурацию xkb из xmodmap
  • Linux и Unix - лучшая ОС в мире.