我正在嘗試設定快捷鍵來鍵入常見的變音符號。我可以讓 xdotool 在終端機或從icewm命令列(甚至從gmrun)中輸入變音符號:
xdotool key Aacute
但以下鍵映射(在icewm鍵檔中)不起作用:
key "Ctrl+Alt+a" xdotool key Aacute
key "Ctrl+Alt+a" xdotool --delay 1000 key Aacute
相反,當我鍵入快捷方式時(如果在終端或文字編輯器中),我只看到遊標閃爍一次,但沒有其他反應。以下確實顯示了一個彈出窗口,因此密鑰代碼本身是正確的:
key "Ctrl+Alt+a" zenity --info --text="shortcut works"
有沒有人有辦法註冊鍵綁定,以便在活動應用程式中實際鍵入變音符號?
答案1
使用setxkbmap
orxmodmap
似乎是正確的做法,但 FWIW 和 FTR 在我遇到這個問題後,我發現以下內容對我有用。我希望這可以幫助其他想要使用的人xdotool
。
我有 xdotool 模擬這些按鍵,因為我的鍵盤上沒有它們。請注意使用&
在背景執行該命令,以便 IceWM 可以從處理熱鍵中返回並避免干擾 xdotool。
200 毫秒是我可以使用且仍能可靠工作的最短延遲。我不確定--clearmodifiers
對您的用例是否有意義。
key "Ctrl+Up" xdotool sleep 0.2 key --clearmodifiers Page_Up &
key "Ctrl+Down" xdotool sleep 0.2 key --clearmodifiers Page_Down &
key "Ctrl+Shift+Up" xdotool sleep 0.2 key --clearmodifiers Home &
key "Ctrl+Shift+Down" xdotool sleep 0.2 key --clearmodifiers End &
另請注意,按住這些鍵不會導致預期的重複行為(因為 IceWM 熱鍵不是最佳選擇),但這對我的目的來說很好。
答案2
我無法讓原始的解決方案發揮作用,因此我更改了鍵盤映射。預設的美國鍵盤映射沒有我需要的變音符號,但國際版本有。試試一下:
setxkbmap -layout 'us(intl)'
但國際版本預設對某些按鍵使用組合。例如,' 字元不再立即回應。因此,我選擇基於美國鍵盤建立自己的鍵盤映射。
我建立了一個新檔案:/usr/share/X11/xkb/symbols/erik
partial default alphanumeric_keys
xkb_symbols "basic" {
include "us"
include "eurosign(5)"
key <AC01> { [ a, A, aacute, Aacute ] };
key <AD03> { [ e, E, eacute, Eacute ] };
key <AD08> { [ i, I, iacute, Iacute ] };
key <AD09> { [ o, O, oacute, Oacute ] };
key <AD07> { [ u, U, uacute, Uacute ] };
key <RALT> { type[Group1]="TWO_LEVEL", [ ISO_Level3_Shift, Multi_key ] };
modifier_map Mod5 { <RALT> };
};
讓 xkb 接受更改:
sudo dpkg-reconfigure xkb-data
嘗試鍵盤映射:
setxkbmap -layout erik
現在 alt_gr + [aeiou] 應該輸入 [áéíóú]。
我透過使用icewm啟動檔案在啟動時呼叫上述命令來使更改永久化。我認為應該可以使用您的發行版鍵盤切換器來選擇佈局,但我還沒有對此進行測試。請隨意將該文件命名為其他名稱,除非您想給我以我的名字命名您的鍵盤映射的巨大榮譽。請務必避免使用 2 個字母代碼,因為所有預設國家/地區映射都是如此命名的。
注意:
您可以查看符號目錄中的其他映射檔案作為範例。
可以在此處找到一些用於了解文件格式的資源:
https://www.x.org/wiki/XKB/