Keyboard-Layout
如何將修飾鍵與 X 上的字元鍵交換?
我正在嘗試將我
left Windows
的 -key 與<>|
-key 交換。這在 vterm 上工作得非常好,使用的鍵盤映射文件就是這樣做的。但是,我不能讓它在 X 上工作(在 KDE 和 Mate 上都試過——兩者都表現出相同的行為)無論是我使用
xmodmap
還是 xkb 符號配置,結果都是一樣的:<>|
-key 停止工作, -key 繼續作為那個鍵,但在按下時left Windows
還會發出 a 。<
xev
我確定我的-key有<>|
程式碼 94 而我的left Windows
-key 有 133,所以我試過這個:xmodmap -e "keycode 133 = less greater bar NoSymbol U0149 brokenbar U266A NoSymbol" xmodmap -e "keycode 94 = Super_L"
我嘗試過的 xkb 符號配置看起來像這樣,並且具有與上述相同的效果:
partial alphanumeric_keys xkb_symbols "defoo" { include "de(basic)" name[Group1] = "German (foo)"; key <LWIN> { [ less, greater, bar, NoSymbol, U0149, brokenbar, U266A, NoSymbol ] }; key <LSGT> { [ Super_L ] }; };
怎麼辦?我真的需要交換那些鑰匙。
編輯:我在 Ubuntu 18.04
編輯:也嘗試擺弄修飾鍵。
xmodmap -pm
說我的超級鍵分配給 mod4,所以:xmodmap -e "clear mod4"
但是,這沒有任何效果,即 Windows 鍵的作用與以前完全相同。
儘管我想避免這種情況,但我最終將密鑰程式碼文件中的密鑰交換為 evdev,這具有預期的效果。
臨:
- 透明地與任何佈局和應用程序一起工作,因為它更改了鍵的事件程式碼
和:
- 適用於所有 evdev 鍵盤
- 應用於系統文件的更改(稍後可能會中斷)
差異:
$ diff /usr/share/X11/xkb/keycodes/evdev{,.bak} 8c8 < <LWIN> = 94; --- > <LSGT> = 94; 74c74 < <LSGT> = 133; --- > <LWIN> = 133;