macOS High Sierra下Touch Bar fn键与应用控制切换脚本编写求助
切换Touch Bar全局模式的脚本实现(macOS High Sierra)
既然你已经有了调整键盘亮度的脚本基础,那直接操作系统底层的defaults配置来切换Touch Bar模式会比模拟系统偏好设置操作更可靠——毕竟第三方应用适配不了的情况下,直接读改系统配置是最稳妥的方案。
核心思路
Touch Bar的全局显示模式存储在com.apple.touchbar.agent这个plist文件里,我们可以用defaults命令读写对应的键值,再重启相关进程让设置立即生效,完全不需要手动打开系统偏好设置。
完整切换脚本
把下面的代码保存成toggle-touchbar-mode.sh,给它加执行权限(chmod +x toggle-touchbar-mode.sh)就能直接运行了:
#!/bin/bash # 获取当前Touch Bar的全局显示模式,屏蔽首次运行时的键值不存在错误 current_mode=$(defaults read com.apple.touchbar.agent PresentationModeGlobal 2>/dev/null) # 处理默认状态或当前为应用控制模式的情况 if [ -z "$current_mode" ] || [ "$current_mode" = "appWithControlStrip" ]; then # 切换到Fn功能键模式 defaults write com.apple.touchbar.agent PresentationModeGlobal functionKeys echo "Switched to Function Keys mode" else # 切换回应用控制+控制条模式 defaults write com.apple.touchbar.agent PresentationModeGlobal appWithControlStrip echo "Switched to App Control mode" fi # 重启Touch Bar相关进程,让设置立即生效,屏蔽进程不存在的错误输出 killall TouchBarAgent >/dev/null 2>&1 killall ControlStrip >/dev/null 2>&1
关键细节说明
PresentationModeGlobal对应的就是系统偏好设置→键盘→Touch Bar选项里的全局模式:appWithControlStrip:默认的「应用控制+控制条」模式functionKeys:显示F1-F12等Fn功能键的模式
- 脚本里的错误输出屏蔽是为了避免首次运行或进程未启动时出现无关报错,让脚本运行更流畅
- 必须重启
TouchBarAgent和ControlStrip进程,否则系统不会立即加载新的设置
进阶拓展(可选)
如果之后你想给特定应用单独设置Touch Bar模式(比如在终端里自动切换到Fn键),可以修改com.apple.touchbar.agent里的PresentationModePerApp字典,示例命令:
defaults write com.apple.touchbar.agent PresentationModePerApp -dict-add "com.apple.Terminal" functionKeys
不过这属于进阶需求,你的核心全局切换需求用上面的基础脚本就完全满足了。
内容的提问来源于stack exchange,提问作者Nick Huntsman
相关产品推荐
相关产品推荐

