Xorg
xkb:使用鍵更改班次級別而不顯示為修飾符
我想將 XKB 配置
Caps Lock
為生成不同密鑰的一種方式,但我不希望它顯示為修飾符。例如:
F1
產生F21
按鍵Caps Lock
+F1
產生F1
按鍵(即沒有修飾符)Shift
++產生按鍵(僅算作修飾符Caps Lock
)F1``Shift + F1``Shift
我通過分配
Caps Lock
to部分成功了Hyper_R
,但問題是這僅在Hyper_R
也設置為修飾符時才有效,例如Mod3
. 這意味著Shift
++Caps Lock
實際上F1
會產生Shift + Mod3 + F1
,因此任何監聽的熱鍵Shift + F1
都不起作用,因為它們不喜歡Mod3
在場。有什麼方法可以
Caps Lock
用來改變某些鍵的行為,而實際上不會讓它作為修飾鍵出現在 X 應用程序中?我讀過的文件暗示這可以通過高級 XKB 配置實現,但我找不到任何細節。
抱歉,這是古老的,但即使對你來說為時已晚,其他人可能會發現這個提示很有用:
在您的
types
中,添加:type "CapsShiftSpecial" { modifiers= Shift+Hyper; map[Shift]= Level2; preserve[Shift]= Shift; map[Hyper]= Level3; map[Shift+Hyper]= Level4; preserve[Shift+Hyper]= Shift; level_name[Level1]= "Base"; level_name[Level2]= "Shift"; level_name[Level3]= "Hyper"; level_name[Level4]= "Shift Hyper"; };
然後,在
symbols
文件中,有類似的東西key <FK01> { type[group1]="CapsShiftSpecial", symbols[group1]=[ F21, F21, F1, F1 ]};
監視擊鍵的程序(例如
xev
或emacs
)將看到按鍵,就像您按下了F21、Shift+F21、F1和Shift+F1一樣。