如何為 X11 的 Alt 鍵分配另一個修飾符?
目的:
我想將 Alt 分配給 CapsLock 鍵,將 Meta 分配給 Alt 鍵。但是這樣一來,Alt-key 將不再被辨識為 Alt,CapsLock-key 將不再被辨識為 CapsLock。
openSUSE 11.4
之前:
openSUSE 11.1——因為我是我電腦的唯一使用者,所以我“簡單地”編輯了 /usr/share/X11/xkb/keycodes/xfree86 文件,它沒有問題。鍵在最低級別連接到它們的符號。
問題:
- xkb
我創建了波蘭佈局(pl_ext)的變體,它(用於測試)由以下條目組成:
key <CAPS> { [ Alt_L ] }; modifier_map Mod1 { Alt_L, Alt_R };
然而,這根本沒有任何作用,xev 中的 CapsLock 鍵被辨識(符號)為 Alt_L,但是當我按下 CapsLock 鍵時,它的行為就像 CapsLock(例如,假設您在菜單中有文件,Alt+F 應該打開這個菜單,它不會)。
**問題:**如何定義一個佈局文件將CapsLock-key設置為Alt,Alt-key設置為Meta?
**編輯:**這裡成功了一半!現在我有這樣的條目:
key <CAPS> { [ Alt_L ] }; modifier_map Mod1 { <CAPS> }; // this is a difference
這可以按需要工作。這不會:
key <LALT> { [ Meta_L ] } ; key <RALT> { [ Meta_R ] } ; modifier_map Mod5 { <LALT>,<RALT> };
Alt 鍵被 xev 辨識為 Meta,但我仍然可以使用 Alt+F 打開菜單、切換視窗,但我不應該這樣做。另一方面,我不能輸入任何民族字元,我應該輸入。 2. xfree86
但是現在這不起作用,我猜是讀取其他文件表而不是 xfree86。
**問題:**如何找出系統(X/Gnome)使用的是哪個鍵碼表文件?
**編輯:**對我來說最好的選擇——編輯鍵碼表——由 macias 的回答解決了! 3. xmodmap
這裡成功了一半。這部分按需要工作:
刪除 Lock = Caps_Lock 鍵符 Caps_Lock = Alt_L
現在,我有真正映射到 Alt 的 CapsLock 鍵。但是這個:
鍵符 Alt_L = Meta_L
……做奇怪的事情。xev 顯示 Alt 鍵映射到 Meta,但是當我按下 Alt+F(這應該映射到 Meta+F –> 什麼都不做)時,文件菜單被打開。更重要的是,當我按下 Alt+Tab 時,我得到了視窗切換器(我不應該 – Alt 現在是 Meta)。
**問題:**如何“刪除” Alt 鍵的舊行為?
**編輯:**這部分由Gilles 的回答解決。
概括:
回答任何問題都會(希望)解決我的問題,但是我更喜歡完全使用 xkb,因為我可以將所有文件打包為 xkb 並在一個地方更改佈局。預先感謝您的任何幫助!
(這個答案僅關於 xmodmap。我確信可以使用 XKB 來做到這一點,我只是不知道怎麼做。)
修飾符和鍵符是獨立分配的。但是,如果您不始終如一地設置它們,您會得到奇怪的效果。我認為您所缺少的只是
add
將修飾符分配給的命令Meta_L
,儘管您可能還需要清除並重新分配修飾鍵。您可以將Mod1
and替換Mod2
為Mod3
,Mod4
andMod5
:它們是可以互換的,只要確保不要將一個用於兩個不同的目的。clear Mod1 clear Mod2 remove Lock = Caps_Lock keysym Caps_Lock = Alt_L keysym Alt_L = Meta_L add Mod1 = Alt_L Alt_R add Mod2 = Meta_L Meta_R
編輯鍵碼方法
我在波蘭語 Ubuntu 論壇上找到了答案。現在不是編輯“xfree86”文件而是“evdev”文件。通過這種方式,您可以進行適用於所有佈局的永久更改。
範例(根據 Gilles 請求)- 以 root 身份登錄,轉到
/usr/share/X11/xkb/keycodes
備份“evdev”文件,然後編輯它。根據您的喜好更改程式碼,例如在我的情況下:
<LALT> = 66; // when I press CapsLock (66 code) system will report pressing LeftAlt <LMTA> = 64; // I will get LeftMeta when pressing LeftAlt (64 code)
您可以通過執行命令“xev”找到程式碼,但您可以簡單地查看原始“evdev”文件。
註銷,登錄,享受您的新鍵盤:-)。