X11
如何為 Linux 創建自定義鍵盤佈局?
理想情況下,我正在尋找一個 GUI 工具,也許是一個 Web 應用程序,但是關於為鍵盤佈局創建文本定義的良好文件也會很棒。這裡的正常程序是什麼?
在這個問題中,提問者已經決定使用“setxkbmap”。這是推薦的方式嗎?我可以將佈局添加到例如 git repo 中,以便我可以根據需要隨時間對其進行更改嗎?
您可以使用XKeyCaps編輯鍵盤映射。從好的方面來說,XKeyCaps 是一個 GUI,而且非常成熟。XKeyCaps 的一個缺點是它只是舊式 X 視窗鍵盤映射界面xmodmap的前端,而不是現代界面XKB的前端。
如果您願意,可以使用 xmodmap,但它沒有 XKB 強大。xmodmap 缺少的 XKB 特性包括:
- 更好地處理修飾符。X11 有許多與修飾符相關的怪癖,包括 CapsLock 和 NumLock 被視為修飾符這一事實。我用 XKB 做的一個不能用 xmodmap 做的事情的一個例子是我 make
Alt
+CapsLock
beLock
(這就是 X11 拼寫 Caps Lock 的方式),但不是CapsLock
它本身。xmodmap 不能做的另一件事是讓不同的修飾符集影響不同的鍵,例如具有Shift
並AltGr
影響可列印字元但Ctrl
影響Alt
功能鍵。- XKB 由可組合的模組組成。Xmodmap 是單片的。這對於想要組合預定義設置的人來說非常有用(“給我一個匈牙利語鍵盤,Ctrl 和 CapsLock 交換並且
Alt
+Windows
是Menu
,以及 Sun 5 鍵盤的鍵碼”),但你不會在意,因為你是製作自己的佈局。- 如果您熱插拔鍵盤,則會重新應用 XKB 系統預設設置。這也是 XKB 限制,因為系統預設值被重新應用,而不是您的使用者設置。
- XKB 對非字母語言或多腳本輸入有更好的支持。我不能提供細節,因為這不是我熟悉的話題。
- 有一些工具可以在佈局之間快速切換(例如具有特定於視窗的佈局)或指示僅適用於 XKB 的目前鍵盤佈局。
- 我不確定 Wayland 是否支持 xmodmap。
網上有一些 XKB GUI 編輯器,但我能找到的都是那些很快就被放棄並且不像 XKeyCaps 那樣易於安裝的項目。例如,我找不到一個帶有 Ubuntu 軟體包的軟體包。
如果您決定手動編寫鍵盤映射,xmodmap 的優勢在於它非常簡單。您可以閱讀手冊頁,或者查看一個範例,您將很快理解除了修飾符的微妙之處之外的所有內容。如果你不知道如何用 xmodmap 來做,那可能是不可能的。XKB 的優勢再次在於它更強大。XKB 的缺點是它很複雜,而且文件很少。如果你想走這條路,一些建議閱讀:
- 與往常一樣,Arch Wiki。
- Unix Stack Exchange 上的XKB問題。
- An Unreliable Guide to XKB Configuration,儘管它的名稱和年代久遠,但它是該主題的最佳資源之一。xkb 編譯是如何工作的?可能是一個有用的補充。
- 從X11 wiki連結的其他資源可能有幫助,也可能沒有幫助。
xkbcomp -a :0 current.xkb
將您目前的佈局轉儲到文件中。無論您選擇哪種方式,keymap 源都是文本文件或文本文件集合,可以很好地與版本控製配合使用。