在 Linux 上重新映射你的大寫(xiě)鎖定鍵
對(duì)我來(lái)說(shuō),有許多改變生活的 Linux 時(shí)刻,但大多數(shù)都在成為現(xiàn)狀后淡忘了。有一個(gè) Linux 教給我的鍵盤小技巧,每次我使用它的時(shí)候(也許每天有 1000 次),我都會(huì)想起這件事,那就是把大寫(xiě)鎖定鍵轉(zhuǎn)換為 Ctrl 鍵。
我從不使用大寫(xiě)鎖定鍵,但我整天使用 Ctrl 鍵進(jìn)行復(fù)制、粘貼、在 Emacs 內(nèi)導(dǎo)航,以及 調(diào)用 Bash、GNU Screen 或 tmux 等操作。大寫(xiě)鎖定鍵在我的鍵盤上占據(jù)了寶貴的空間,而將實(shí)際上有用的 Ctrl 鍵擠到了難以觸及的底部角落。
重新映射 Ctrl 提高了我的打字和導(dǎo)航速度,并可能使我免受重復(fù)性壓力傷害。
消失的控制
系好安全帶,這是個(gè)過(guò)山車式的歷史課。
對(duì)于像我這樣的大寫(xiě)鎖定鍵交換者來(lái)說(shuō),不幸的是,當(dāng) GNOME 3 問(wèn)世時(shí),它幾乎刪除了改變 Ctrl 鍵位置的功能。
幸運(yùn)的是,優(yōu)秀的 GNOME Tweaks 應(yīng)用程序帶回了這些 “失蹤” 的控制面板。
不幸的是,GNOME 40 沒(méi)有 GNOME Tweaks 應(yīng)用程序(還沒(méi)有?)
另外,不幸的是,過(guò)去在 X11 上可以工作的老的 xmodmap 技巧在新的 Wayland 顯示服務(wù)器 上沒(méi)有用。
有一小段時(shí)間(最多一個(gè)下午),我覺(jué)得對(duì)于那些討厭大寫(xiě)鎖定鍵的人來(lái)說(shuō)人生都灰暗了。然后我想起我是一個(gè)開(kāi)源的用戶,總有一種方法可以解決諸如被忽略的 GUI 控制面板之類的簡(jiǎn)單問(wèn)題。
dconf
GNOME 桌面使用 dconf,這是一個(gè)存儲(chǔ)重要配置選項(xiàng)的數(shù)據(jù)庫(kù)。它是 GSettings 的后端,GSettings 是 GNOME 系統(tǒng)應(yīng)用程序需要發(fā)現(xiàn)系統(tǒng)偏好時(shí)的接口。你可以使用 gsetting 命令查詢 dconf 數(shù)據(jù)庫(kù),也可以使用 dconf 命令直接設(shè)置 dconf 的鍵值。
GSettings
dconf 數(shù)據(jù)庫(kù)不一定是你可能稱為可發(fā)現(xiàn)的數(shù)據(jù)庫(kù)。它是一個(gè)不起眼的數(shù)據(jù)庫(kù),你通常不需要去考慮它,它包含了許多通常無(wú)需直接交互的數(shù)據(jù)。然而,如果你想更好地了解 GNOME 所要管理的所有偏好選項(xiàng),那么瀏覽它是很有趣的。
你可以用 list-schemas 子命令列出所有 dconf 的模式。在瀏覽了數(shù)百個(gè)模式之后,你可以使用 grep 將你的注意力縮小到一些看起來(lái)特別相關(guān)的東西上,比如 org.gnome.desktop。
- $ gsettings list-schemas | grep ^org.gnome.desktop
- [...]
- org.gnome.desktop.background
- org.gnome.desktop.privacy
- org.gnome.desktop.remote-desktop.vnc
- org.gnome.desktop.interface
- org.gnome.desktop.default-applications.terminal
- org.gnome.desktop.session
- org.gnome.desktop.thumbnailers
- org.gnome.desktop.app-folders
- org.gnome.desktop.notifications
- org.gnome.desktop.sound
- org.gnome.desktop.lockdown
- org.gnome.desktop.default-applications.office
無(wú)論是通過(guò)手動(dòng)搜索還是通過(guò) 閱讀 GSetting 文檔,你可能會(huì)注意到 org.gnome.desktop.input-sources 模式,它有助于定義鍵盤布局。從設(shè)計(jì)上來(lái)說(shuō),GSetting 模式包含了鍵和值。
用 dconf 重新映射大寫(xiě)字母鎖
xkb-options 鍵包含了可選的鍵盤覆寫(xiě)。要設(shè)置這個(gè)鍵值,請(qǐng)使用dconf,將上面模式中的點(diǎn)(.)轉(zhuǎn)換為斜線(/),因?yàn)?dconf 數(shù)據(jù)庫(kù)需要使用 /。
- $ dconf write /org/gnome/desktop/input-sources/xkb-options "['caps:ctrl_modifier']"
我把 caps 設(shè)置為 ctrl_modifier,因?yàn)槲沂褂?Ctrl 修飾鍵的次數(shù)多于其他修飾鍵,但 Vim 用戶可能喜歡把它設(shè)置為 escape。
查看你的設(shè)置
這個(gè)改變會(huì)立即生效,并在重啟后仍然生效。這是你在 GNOME 中定義的首選項(xiàng),在你改變它之前一直有效。
你可以通過(guò) gsettings 查看 dconf 中的新值。首先,查看可用的鍵:
- $ gsettings list-keys \
- org.gnome.desktop.input-sources
- xkb-options
- mru-sources
- show-all-sources
- current
- per-window
- sources
然后用 xkb-options 鍵名查看設(shè)置:
- $ gsettings get \
- org.gnome.desktop.input-sources \
- xkb-options
- ['caps:ctrl_modifier']
選項(xiàng)豐富
我在我的 GNOME 3.4 系統(tǒng)上使用這個(gè)小技巧來(lái)設(shè)置大寫(xiě)鎖定鍵以及 Compose 鍵(compose:ralt)。雖然我相信正在開(kāi)發(fā)中的 GUI 控件可以控制這些選項(xiàng),但我也不得不承認(rèn),能以編程方式設(shè)置這些選項(xiàng)的能力是我的榮幸。作為以前沒(méi)有可靠方法來(lái)調(diào)整桌面設(shè)置的系統(tǒng)的管理員,能夠用命令修改我的首選項(xiàng)使得設(shè)置新桌面變得快速而容易。
GSettings 提供了很多有用的選項(xiàng),而且文檔也很詳盡。如果你有想要改變的東西,可以看看有什么可用的。