X11
鍵或鍵碼如何映射到 X 鍵符號?
我正在嘗試將功能鍵組合映射到 XF86 鍵符號。組合鍵是
Fn
+F1
,我可以使用它showkey
來獲取原始鍵碼。jason@io ~ $ showkey kb mode was RAW [ if you are trying this under X, it might not work since the X server is also reading /dev/console ] press any key (program terminates 10s after last keypress)... keycode 28 release keycode 466 press keycode 466 release keycode 113 press keycode 113 release keycode 114 press keycode 114 release
showkey
如另一個問題中所述,將 8 添加到鍵碼中會得到 474 的 X 鍵碼。儘管,執行xev
似乎並沒有捕捉到按鍵的按下或釋放。它確實擷取了接下來的兩個功能鍵組合(Fn
+F2
,Fn
+F3
)。jason@io ~ $ xev -root FocusIn event, serial 18, synthetic NO, window 0x71, mode NotifyGrab, detail NotifyInferior KeymapNotify event, serial 18, synthetic NO, window 0x0, keys: 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 2 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FocusOut event, serial 18, synthetic NO, window 0x71, mode NotifyUngrab, detail NotifyInferior FocusIn event, serial 18, synthetic NO, window 0x71, mode NotifyGrab, detail NotifyInferior KeymapNotify event, serial 18, synthetic NO, window 0x0, keys: 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 4 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 FocusOut event, serial 18, synthetic NO, window 0x71, mode NotifyUngrab, detail NotifyInferior
我正在嘗試處理視窗管理器中的組合鍵,其中我有許多其他工作綁定,包括
Fn
+F2
和Fn
+F3
。但是,似乎 X 沒有收到按鍵,或者.Xmodmap
沒有正確綁定鍵碼。我做的不對嗎?還有另一種方法可以做到這一點嗎?
經過研究,我發現這是X11協議的一個根本限制。具體來說,用於表示鍵碼的數據類型是字節,它將值限制在 8 到 255 之間(+8 偏差)。這是一個旨在在X12協議中解決的問題(請參閱資源限制)。
一種解決方法是使用xorg.conf 中的修補evdev將鍵碼重新映射到有效範圍。
Section "InputDevice" Identifier "keyboard" Driver "evdev" Option "event_key_remap" "474=247" EndSection
密鑰程式碼也可以在核心中重新映射。
jason@io ~ $ sudo setkeycodes e0xx 266