不帶 X 的多功能 CapsLock
我想重新映射
CapsLock
到Esc
當自己按下時以及在不使用 XCtrl
的情況下用另一個鍵按下時。這類似於上一個問題(將 CapsLock 重新映射到 Escape 和 Control System Wide),但我專門尋找沒有 X 的解決方案。
此keymod程序從設備讀取鍵盤事件,
/dev/input/eventX
並使用該設備最直接地註入回核心/dev/uinput
。這種caps lock
行為是特殊的:如果按鍵被按下和釋放而不接觸另一個按鍵,則一個Esc
按鍵被發送到核心中。如果在按住 的同時按下另一個鍵,則會模擬caps lock
按住(左)鍵。control
由於程序控制了指定的事件設備,因此在測試時能夠使案例如 SSH 訪問電腦非常方便。例如,暫停這個程序(例如使用 ctrl-z)將確保您不能再使用您的鍵盤(它已經完全控制它並且現在不再活動)。
Linux 控制台鍵盤映射
要更改虛擬終端 (
alt
+f1
-alt
+f6
) 的鍵盤映射,請使用載入鍵。這只會影響虛擬終端登錄,不會更改X 或 X 終端應用程序(如Xterm或*urxvt )*中的鍵盤映射。loadkeys 命令需要以 root 身份執行,否則您將收到以下錯誤:
Couldn't get a file descriptor referring to the console
要交換
escape
,caps_lock
您將執行以下操作:# echo keycode 58 = Escape | loadkeys - # echo keycode 1 = Caps_Lock | loadkeys -
另一種選擇是重新映射
Caps_Lock
到shift
+Scroll Lock
# echo keycode 69 = Num_Lock Caps_Lock | loadkeys -
鍵盤映射的格式可能有點混亂。它使用加權系統,具體取決於按下的修飾符。(Ctrl、Alt、Shift 等)。作為鍵盤映射手冊頁的範例。
keycode 30 = a A VoidSymbol VoidSymbol VoidSymbol .....
當
shift
and a 被按下時,我們執行第二列中的操作,因為 shift 的權重為 1。control
另一方面,權重為 4。這可能會在映射修改器時導致問題。舉個例子,如果一個鍵碼是第一個也是唯一的列
control
作為它的動作。現在,自從您按下它以來的權重現在是 4,當您釋放鍵時,它control
不會顯示釋放,因為現在要執行第 5 列操作,但它沒有定義任何操作。所以control
密鑰永遠不會被釋放。這就是為什麼大多數修飾符沒有分配其他動作的原因。如果在鍵盤映射中只定義了一個動作,那麼它將應用於所有動作。
我一直在嘗試解決這個問題,但只得到不一致的結果。有時修飾符會釋放,有時不會。
澄清
更改 Caps Lock 以作為轉義或控制執行此方法效果很好。映射到兩者,不是那麼多。
重要的
如果您搞砸了鍵盤映射,請執行以下操作來重置它。
# loadkeys -d
參考