如何將 AltGr+key 綁定到符號?
我想將
AltGr
+綁定W
到æ
以及其他一些組合,我該怎麼做?我也需要AltGr
++Shift
到.W``Æ
我通常
setxkbmap
用來更改鍵盤映射。
您可以使用自定義 XKB 映射來實現這一點。我建議您使用 轉儲目前地圖
xkbcomp $DISPLAY dump.xkb
,對其進行編輯並使用xkbcomp newmap.xkb $DISPLAY
. 轉儲文件非常大,並且有很多多餘的資訊。進行編輯的最簡單方法是查看 altgr 在目前地圖中的使用方式。它通常是 ISO_LEVEL3 修飾符。如果您目前的鍵盤映射不使用 altgr,您可以嘗試載入一個這樣做的,看看它是如何完成的。例如
-layout us -variant altgr-intl
,它非常廣泛,並且即使不是所有的歐洲鍵也綁定了大多數。以下是正在發生的事情的簡短介紹。xkb 從核心獲取鍵碼,為每個鍵碼設置一個標籤,並使用該標籤和修飾鍵來決定它應該輸出什麼鍵符。每個鍵都有一個分配給它的類型,它定義了它期望的修飾鍵以及每個組合的輸出。查看您獲得的轉儲
xkbcomp
:標籤定義在 中xkb_keycodes
,類型輸入xkb_types
和標籤到密鑰在中xkb_symbols
。其中,xkb_symbols
您要編輯並參考其他兩個以了解要更改的內容。您也可以只查看xkb_symbols
並找到它目前是如何完成的,並根據需要進行編輯。
xkb_types
部分為鍵定義保存不同的修飾符級別,您會想要一個具有 altgr 和 shift 模式的修飾符。例子:type "FOUR_LEVEL_ALPHABETIC" { modifiers= Shift+Lock+LevelThree; map[Shift]= Level2; map[Lock]= Level2; map[LevelThree]= Level3; map[Shift+LevelThree]= Level4; map[Lock+LevelThree]= Level4; map[Shift+Lock+LevelThree]= Level3; level_name[Level1]= "Base"; level_name[Level2]= "Shift"; level_name[Level3]= "Alt Base"; level_name[Level4]= "Shift Alt"; };
這意味著標記為的鍵
FOUR_LEVEL_ALPHABETIC
有四種模式。Normal, shift/caps, altgr, altgr-shift 這聽起來像你要找的。現在你想知道 w 的鍵碼是什麼,如果你還不知道的話。
xev | grep -A2 --line-buffered '^KeyRelease' | sed -n '/keycode /s/^.*keycode \([0-9]*\).* (.*, \(.*\)).*$/\1 \2/p'
為您提供您按下的鍵的鍵碼。grep
是否可以使輸出更具可讀性。
xkb_keycodes
將您獲得的鍵碼與您之前獲得的轉儲映射部分交叉引用。對我來說, w 給出了 keycode 25.less
轉儲並以 example 的形式找到正確的<LABEL> = ##;
keycode<AD02> = 25;
。或者cat dump.xkb| grep ' = 25;'
Label 只是 xkb 用於在後面的部分中引用密鑰的名稱。既然您有了標籤,請轉到
xkb_symbols
實際上將標籤映射到鍵符的標籤。格式是key <AD02> { type= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ w, W, aring, Aring ] };
type=
是您想要從xkb_types
部分中獲得的類型symbols[Group1]=
,對於該類型所需的每種模式都有一個鍵符。同樣,這種類型的 normal、shift/caps、altgr、shift-altgr。[Group1]
,據我所知,這是一種使用多個鍵盤映射的方法,您可以使用您設置的鎖定鍵即時更改。我自己不使用組,所以對我來說一切都是 group1。要查找您可以在此處使用的所有不同鍵符,請檢查
/usr/include/X11/keysymdef.h
. 您要查找的兩個符號是ae
æ 和AE
Æ。key <AD02> { type= "FOUR_LEVEL_ALPHABETIC", symbols[Group1]= [ w, W, ae, AE ] };
我可能有點囉嗦了。查看Arch Wiki在 XKB 上的頁面,無論您使用什麼作業系統或發行版,它都是好東西。
這很容易做到
xmodmap
。您可以使用keysym
指令來更改與鍵關聯的鍵符。這會影響目前使用任何修飾符組合發送此鍵符的所有鍵。對於普通的可列印字元,四個鍵符分別是裸鍵、帶有Shift
的鍵、帶有AltGr
的鍵和帶有AltGr
+的鍵Shift
。keysym A = a A aring Aring keysym O = o O oslash Ooblique keysym W = w W ae AE
將這些指令放在一個文件中,例如
~/.Xmodmap
,然後用 . 載入它們xmodmap ~/.Xmodmap
。當您在某些環境中登錄時,呼叫的文件~/.Xmodmap
會自動載入(這取決於您的 unix 變體和桌面環境)。
/usr/share/X11/locale/en_US.UTF-8/Compose
您可以在或中找到鍵符名稱/usr/include/X11/keysymdef.h
(Debian 位置,可能在其他系統上有所不同)。如果您不知道符號的鍵符名稱,您可以使用它的 Unicode 數字:U
後跟十六進制數字,例如keysym W = w W U00e6 U00c6