在虛擬終端中交換密鑰
注意:大約一個月前我在超級使用者中問過這個問題,但直到那時還沒有回复,而且這個問題與linux有關,所以我在這裡發布它。
我想交換鍵盤上的 esc 和 caps_lock 鍵。
setxkbmap -option caps:swapescape
完成工作,但僅適用於 X。鍵在虛擬控制台上以原始方式執行。如何使它們在 vc 上以所需的方式執行?
使用
loadkeys
.要交換
Esc
和Caps Lock
在控制台中,執行printf 'keycode 1 = Caps_Lock Caps_Lock\nkeycode 58 = Escape Escape\n' | sudo loadkeys -
Debian 和
console-setup
在 Debian Linux 和 Debian FreeBSD 上,設計是為了讓 X 伺服器和核心虛擬終端共享一組配置資訊。該
console-setup
軟體包提供了工具和啟動腳本,它們採用 X 伺服器的鍵盤/字型配置,對其進行轉換,並使用它來配置核心虛擬終端。具體來說:
console-setup
服務呼叫該setupcon --save
命令,該命令生成/etc/console-setup
包含轉換後的鍵盤和字型設置指令的腳本,這些腳本通過 udev 規則針對核心虛擬終端設備執行。鍵盤映射從 XKB 轉換為loadkeys
format byckbcomp
,並執行從 udev 規則呼叫的生成腳本loadkeys
。所以在 Debian Linux 和 Debian FreeBSD 上,你需要確保你的
XKBMODEL
,XKBLAYOUT
,XKBVARIANT
,XKBOPTIONS
變數在/etc/default/keyboard
. 特別是在您的情況下,您需要確保XKBOPTIONS
變數具有caps:swapescape
. 然後,您需要確保已console-setup
正確安裝該軟體包。系統化 Linux
在 systemd 作業系統上,與 Debian 相比,集成度要低一些。有一個名為的配置文件
/etc/vconsole.conf
和一個名為的服務systemd-vconsole-setup.service
在系統引導時對其進行處理(以響應宣布存在核心虛擬終端子系統的 udev 規則)。但這根本沒有與 X 伺服器配置相結合。該
vconsole.conf
文件有一個KEYMAP
設置,表示傳遞給的鍵盤映射,loadkeys
同樣不需要顯式執行自己。但是創建一個(定制的)鍵盤映射完全取決於您Caps Lock
,它可以交換並將Escape
其放在loadkeys
可以找到它的地方。要獲得更多聯合設置,必須涉及另外兩項服務
systemd-localed
和桌面匯流排。一個人跑,說,localectl set-x11-keymap pl pc105 "" "caps:swapescape"
並且區域設置 D-BUS 服務會根據其對核心虛擬終端最近的等效
/etc/vconsole.conf
映射的最佳猜測進行重寫。不過,這個最接近的等價物可能並不完全等價,您可能會發現它完全忽略了選項等。當然,您也可以隨時使用 Debian
ckbcomp
手動直接轉換 XKB 鍵盤映射。☺進一步閱讀
- https://superuser.com/questions/709616/
- https://wiki.debian.org/Keyboard
systemd-vconsole-setup-service
. systemd 手冊頁。自由桌面.org。vconsole.conf
. systemd 手冊頁。自由桌面.org。- 卡斯滕·希爾伯特 (2014-08-29)。 帶有 systemd 的控制台設置忘記了字型設置。#759657。Debian 錯誤跟踪器。
localectl
. systemd 手冊頁。自由桌面.org。- https://unix.stackexchange.com/a/479720/5132