Chr*_*048 23 keyboard x11 xmodmap xkb
我有一个 X11 程序可以获取大写锁定并使用它。问题是,我想禁用常规的大写锁定切换,但这样做似乎禁用了密钥。
因此,无论 X11 为大写锁定按键获得什么,它仍然必须获得(不禁用该键,或将其重新映射到其他键),但没有任何将按键转换为大写切换(可能在内核级别? )。
我尝试更改扫描码,但这只是重新映射了密钥。我也删除了大写锁定条目xmodmap,但这也禁用了大写。
如何告诉内核忽略大写键(与其常规功能有关),但仍将消息传递给 X?
只是添加更多细节:
我试图运行的“程序”是人性化的“enso”。当没有密钥时,我收到错误“CRITICAL:root:Couldn't find quasimode key”。如果没有错误,我可以将 enso 与 caps 一起使用,但是到目前为止还没有想出如何在 enso 仍然能够实现的情况下禁用 caps 功能。
slm*_*slm 30
我想我有一种技术可以禁用Capslock键的切换,但不能完全禁用键,或者将其重新映射到键盘上的另一个键。
如果使用命令:
setxkbmap -option caps:none
Run Code Online (Sandbox Code Playgroud)
键盘将不再切换。我已经在运行 Fedora 14 的笔记本电脑上确认了这一点,LED 不再亮起,正常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
...
Run Code Online (Sandbox Code Playgroud)
因此,按键事件仍然完好无损,供其他应用程序拾取。
该文件/usr/share/X11/xkb/rules/xorg.lst包含您可以提供的选项的完整列表setxkbmap。
通过此文件查找“上限”,我注意到这一行:
caps:none CapsLock is disabled
Run Code Online (Sandbox Code Playgroud)
此文件中还有其他值,因此如果这不是您所追求的,那么这些替代值之一可能会适合。
$ 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
Run Code Online (Sandbox Code Playgroud)