X11
如何將未充分利用的鍵盤鍵更改為修飾鍵
我有一個看起來像這樣的韓語鍵盤:
한자
左側的漢字(space
_ 這將在我的程式碼編輯器中釋放出來使用。Alt
我的問題是:如何將漢字鍵變成修飾鍵?
我驗證了密鑰
xev
:KeyPress event, serial 32, synthetic NO, window 0x2200001, root 0x281, subw 0x0, time 11955968, (-132,626), root:(491,646), state 0x0, keycode 131 (keysym 0xff34, Hangul_Hanja), same_screen YES, XLookupString gives 0 bytes: XmbLookupString gives 0 bytes: XFilterEvent returns: False KeyRelease event, serial 32, synthetic NO, window 0x2200001, root 0x281, subw 0x0, time 11955968, (-132,626), root:(491,646), state 0x20, keycode 131 (keysym 0xff34, Hangul_Hanja), same_screen YES, XLookupString gives 0 bytes: XFilterEvent returns: False
鍵碼 131 = 0x83
從 的輸出中
xmodmap
,我看到這mod3
是可用的。shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
我嘗試
xmodmap -e "add mod3 = Hangul_Hanja"
導致以下結果…shift Shift_L (0x32), Shift_R (0x3e) lock Caps_Lock (0x42) control Control_L (0x25), Control_R (0x69) mod1 Alt_L (0x40), Alt_R (0x6c), Meta_L (0xcd) mod2 Num_Lock (0x4d) mod3 Hangul_Hanja (0x83) mod4 Super_L (0x85), Super_R (0x86), Super_L (0xce), Hyper_L (0xcf) mod5 ISO_Level3_Shift (0x5c), Mode_switch (0xcb)
…添加
set $mod Mod3
到我的 i3 配置文件並重新啟動後,我最終沒有任何修飾鍵,即它不起作用。此外,漢字鍵的行為與典型的修飾鍵不同。如果我按住該鍵,它會創建重複的擊鍵,而典型的修飾鍵則不會。
我希望房子裡有一些鍵盤專家可以提供他們的一些專業知識。
Linux Mint 18 (Cinnamon) i3 視窗管理器
X11 修飾符處理有點奇怪。您不能使用任何鍵並將其聲明為修飾符:修飾符設置和鍵符設置之間必須保持一致。
經典的修飾符是
Shift
,Control
,Alt
,Meta
,Hyper
andSuper
(每個有兩個鍵符,例如Shift_L
和Shift_R
)(加上 Caps Lock 和 Num Lock ,它們的行為有些不同)。大多數應用程序不能與用作修飾符的其他鍵符一起使用。因此,要將漢字鍵用作修飾符,請使其成為
Hyper_L
(例如)。keycode 131 = Hyper_L remove Mod4 = Hyper_L add Mod3 = Hyper_L
這使得密鑰不再用作漢字密鑰。如果您使用 XKB 而不是 xmodmap,可能有一種方法可以保留這兩個功能,但我不知道如何。