我有一个大型、复杂的控制台程序,通过终端执行,它要求用户做出许多响应。用户可能习惯使用 command-q 退出程序。该程序有自己的用户关闭信号(ESC 键),执行“干净”关闭 - 文件已完成并关闭、日志消息已发布等。如果用户通过 command-Q 对退出提示做出积极响应,则关闭过程可能会很混乱。
我可以使用这里建议的命令 -如何在 OSX 上禁用终端的 command + q- (默认写入等)命令使其成为零,但我需要在程序开始和结束时获取并恢复其默认值。
我使用默认读取命令来尝试确定恢复的正确值,或者尝试删除 nil,但各种标识符的组合(com.apple.Terminal NSUserKeyEquivalents -dict-add“Quit Terminal”)都被拒绝。
有人能提供恢复原始状态的正确参数吗?谢谢!
答案1
从链接的问题中,建议删除终端的退出键命令如下......
defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "Quit Terminal" nil
这实际上似乎是偶然起作用的。它实际上将可见的键命令更改为 N。它有效地禁用了 Cmd/Q,但格式不正确。您无法完全清除默认键,您必须用其他键替换它。
尝试一些没有人会意外按下的东西, Cmd ⌘ Ctrl ⌃ Opt ⌥ Shift ⇧ Q
比如
defaults write com.apple.Terminal NSUserKeyEquivalents -dict-add "Quit Terminal" @^~$Q
您可以使用以下命令再次删除它
defaults delete com.apple.Terminal NSUserKeyEquivalents
我找不到按名称删除单个键的方法,因此这将清除用户添加的所有非默认值。
这样做的主要缺点是,与许多应用程序一样,终端仅在启动时读取此 plist [然后在退出时可能会根据会话期间采取的操作自行重写它。]
因此,在终端运行时尝试删除然后返回键命令将不会产生任何效果。