Linux 缺乏一個好的按鍵重映射解決方案。為了獲得滿意的結果,需要使用多種工具(例如 xcape、xmodmap),最終結果通常與指定的環境(X11)相關。 keyd 試圖透過提供一個靈活的系統範圍守護程序來解決這個問題,該程序使用核心級輸入原語(evdev、uinput)重新映射鍵。
自第一個版本以來,配置格式已經經歷了多次迭代。對於那些從 v1 遷移配置的人,最好重新閱讀手冊頁。
另請參閱:變更日誌。
keyd 具有幾個獨特的功能,其中許多功能傳統上僅在 QMK 等自訂鍵盤韌體中才能找到,還有一些是 keyd 獨有的。
一些更有趣的包括:
C-1
。注意: master 作為開發分支,版本之間偶爾可能會出現問題。版本已標記,並應被視為穩定。
git clone https://github.com/rvaiya/keyd
cd keyd
make && sudo make install
sudo systemctl enable keyd && sudo systemctl start keyd
安裝並啟動 keyd (例如sudo systemctl enable keyd
)
將以下內容放入/etc/keyd/default.conf
中:
[ids]
*
[main]
# Maps capslock to escape when pressed and control when held.
capslock = overload(control, esc)
# Remaps the escape key to capslock
esc = capslock
可以使用keyd monitor
指令取得鍵名稱。請注意,當 keyd 運作時,此指令的輸出將與 keyd 的輸出相對應。先停止 keyd 然後執行指令可以看到原始的輸入事件。有關更多詳細信息,請參閱手冊頁。
執行sudo keyd reload
以重新載入配置集。
請參閱手冊頁 ( man keyd
) 以取得更全面的描述。
配置錯誤將出現在日誌輸出中,並且可以使用系統的服務管理器(例如sudo journalctl -eu keyd
)以常規方式進行存取。
注意:錯誤的設定檔可能會導致您的電腦無法使用。如果您發現自己處於這種位置,特殊的按鍵序列backspace+escape+enter
應該會導致 keyd 終止。
某些滑鼠(例如 Logitech MX Master)能夠發出按鍵,因此可以透過通配符 ID 進行比對。可能有必要明確將這些列入黑名單。
將自己加入 keyd 群組:
usermod -aG keyd <user>
填入~/.config/keyd/app.conf
:
例如
[alacritty]
alt.] = macro(C-g n)
alt.[ = macro(C-g p)
[chromium]
alt.[ = C-S-tab
alt.] = macro(C-tab)
跑步:
keyd-application-mapper
您可能想要將keyd-application-mapper -d
放在顯示伺服器初始化邏輯中的某個位置(例如 ~/.xinitrc),除非您正在執行 Gnome。
有關更多詳細信息,請參閱手冊頁。
Giorgi Chavchanidze 透過 usb-gadget 增加了對單板計算機 (SBC) 的實驗性支援。
有關詳細信息,請參閱 usb-gadget.md。
某些發行版的第三方軟體包也存在。如果您希望將您的添加到清單中,請提交 PR。這些由社區成員善意維護,個人不承擔任何責任。
keyd 套件由@jirutka 維護。
Arch Linux 軟體套件由 Arch 打包者維護。
實驗性的keyd
和keyd-application-mapper
套件可以在正在進行的 Debian 套件儲存庫的 CI 建置工件中找到:
我們鼓勵任何願意審查 debian 化工作並贊助其上傳的 Debian 開發人員聯繫@rhansen(另請參閱 Debian ITP bug)。
COPR 套件由@alternateved 維護。
opensuse 套件由@bubbleguuum 維護。
使用sudo zypper in keyd
輕鬆安裝。
實驗性的keyd
和keyd-application-mapper
套件可以在ppa:keyd-team/ppa
檔案中找到。
如果您希望協助維護此 PPA,請聯絡@rhansen。
[ids]
*
[main]
leftshift = oneshot(shift)
capslock = overload(symbols, esc)
[symbols]
d = ~
f = /
...
許多用戶可能對充分利用 keyd 不感興趣。對於那些尋求簡單的生活品質改善的人,我可以推薦以下配置:
[ids]
*
[main]
shift = oneshot(shift)
meta = oneshot(meta)
control = oneshot(control)
leftalt = oneshot(alt)
rightalt = oneshot(altgr)
capslock = overload(control, esc)
insert = S-insert
這會重載大寫鎖定鍵,使其同時充當轉義鍵(輕按時)和控制鍵(按住時),並將所有修飾符重新映射到「一次性」鍵。因此,要產生字母 A,您現在只需點擊 Shift,然後點擊 a,而不必按住它。最後它將 insert 重新映射到 S-insert(貼到 X11 上)。
xmodmap 和朋友是功能有限的顯示伺服器級工具。 keyd 是一個系統級解決方案,它實現了分層和一次性修改器等高級功能。雖然一些 X 工具提供了類似的功能,但我不知道有什麼東西像 keyd 一樣靈活。
keyd 是幾年前寫的,讓我可以在我不斷增長的鍵盤收藏上輕鬆嘗試不同的佈局。當時 kmonad 還不存在,像 QMK(它啟發了 keyd)這樣的定制鍵盤韌體是獲得類似功能的唯一方法。我在發布 keyd 後才知道 kmonad。雖然 kmonad 是一個具有相似目標的優秀項目,但它採用了不同的方法並具有不同的設計理念。
值得注意的是 keyd 完全用 C 編寫,考慮到效能和簡單性,並且可能永遠不會像 kmonad (在 Haskell 中可擴展)那樣可配置。話雖如此,它在不到 2000 行 C 程式碼中提供了(在作者看來)最有價值的功能,同時提供了簡單的與語言無關的配置格式。
如果您覺得缺少某些內容或發現錯誤,歡迎在 github 上提出問題。 keyd 具有極簡主義(但理性)的設計理念,故意省略某些功能(例如,以 root 身分執行任意執行檔)。自訂鍵盤韌體(例如 QMK)中已經存在的內容是包含在內的良好候選者。
請參閱貢獻。 IRC 頻道:oftc 上的 #keyd