試著把 Caps Lock 當成 Ctrl 使用吧

一直以來聽說過很多高手──尤其是重度依賴鍵盤的程式設計師們──會把美式鍵盤上的 Caps Lock 設定成 Ctrl(Mac 上的 Control),於是今年開始我也決定來試著多按幾下 Caps Lock 看看。

Why Caps Lock ?

一般寫程式碼的時候不太會遇到長時間輸入全大寫的情況,就算有,頂多按住 Shift 幾秒就行(甚至各種 IDE 都有自動補完功能),Caps Lock 幾乎無用武之地。

除此之外,而且還能得到各種組合鍵更順手的按法,常用的 Ctrl + CCtrl + VCtrl + A 不會按到小指抽筋發麻了(傳統 Unix 系統鍵盤的 Control 是在 A 旁邊的)。

各種系統的設定方式

以下是我在手邊各作業系統的設定方式,僅供參考。

macOS

macOS 的設定很簡單,到「系統偏好設定(System Preferences)」裡的「鍵盤(Keyboard)」>「變更鍵(Modifier Keys)」就可以修改 ControlCaps Lock 的對應了。

Windows

方法一:官方小工具

微軟官方有提供「Ctrl2cap」這個小工具可以讓 Caps Lock 變成 Ctrl。下載後解壓縮、在命令提示字元執行 ctrl2cap /install 安裝即可。如果要還原則執行 ctrl2cap /uninstall

方法二:編輯登錄檔

就算不安裝上述的小工具,光靠編輯登錄檔的方式也可以修改鍵盤對應:在 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout 新增一個二進位值 Scancode Map,數值為 00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

可以寫成登錄檔(.reg)存起來:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,02,00,00,00,1d,00,3a,00,00,00,00,00

如果要還原,刪除或還原到原本的 Scancode Map 就好。記得都要重新開機或登入。

以上兩種方法都會維持 Ctrl 原本的功能,因此就算一開始不習慣按 Caps Lock 也沒關係,Ctrl 依然是熟悉的 Ctrl

Ubuntu / Debian

Ubuntu / Debian 的 Xorg 鍵盤設定在 /etc/default/keyboard 這個檔案,在 XKBOPTIONS 加入:

  • ctrl:nocaps:讓 Caps Lock 變成 Ctrl,同時維持 Ctrl 原本的功能。
  • ctrl:swapcaps:交換 Caps LockCtrl 兩個按鍵的功能 。

/etc/default/keyboard 的範例:

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="us"
XKBVARIANT=""
XKBOPTIONS="ctrl:nocaps"

BACKSPACE="guess"

Arch Linux

Arch Linux 是在 /etc/X11/xorg.conf.d/00-keyboard.conf 裡(乾淨的系統裡應該沒有這個檔案,要自己建立)設定 XkbOptions 的值。

/etc/X11/xorg.conf.d/00-keyboard.conf 的範例:

Section "InputClass"
	Identifier "system-keyboard"
	MatchIsKeyboard "on"
	Option "XkbOptions" "ctrl:nocaps"
EndSection

參考資料