对于命令行爱好者,很多人会选择将黄金键盘位置CapsLock替换成Ctrl,有些人选择仅仅是和默认的Ctrl进行替换,有些人更极端,相当于去掉CapsLock键增加一个Ctrl位置。我选择后者。有时候会想。假如需要输入大段文字的时候一直按住Shift岂不是蛋疼。搜索了下,网上真有这个问题。而且有人还给出了答案。我就转发一下好了-_-

  • 首先你要知道在你的system preferences→keyboard→modifiers keys是可以修改CapsLock映射
    到Ctrl的
  • 其次使用applescript可以编辑脚本对GUI界面进行操作(系统还自带一个Script Editor,不得不吐槽一下,脚本真不美观)
  • 脚本编写后执行需要到安全设置里面添加许可权限(system preferences→security&privacy→accessibility,由于我使用的是iTerm,将它加入就好了)

最后奉上脚本(添加至~/.zshrc,!!!!仅对英文系统有效,中文估计改一下也能用)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
caps () {
osascript > /dev/null <<EOF
tell application "System Preferences"
reveal anchor "keyboardTab" of pane "com.apple.preference.keyboard"
end tell
tell application "System Events" to tell window 1 of process "System Preferences"
click button 1 of tab group 1
tell sheet 1
tell pop up button 4
click
delay 0.1
if value is "⇪ Caps Lock" then
click menu item 2 of menu 1
log "Change Caps Lock"
else
click menu item 1 of menu 1
log "Restore Caps Lock"
end if
end tell
click button "OK"
end tell
end tell
quit application "System Preferences"
EOF
}

参考

Controlling modifier key behavior via the terminal on mac
Run AppleScript from bash script