2016-01-02 154 views
2

我已经编写了一些默认脚本,以便可以将一些标准设置移植到其他系统或在计算机崩溃的情况下重新安装。有没有办法在OS X中使用shell更改键盘快捷方式

是否有默认域或其他方式来在OS X上以编程方式添加/删除键盘快捷键?

编辑:

OK,我知道有com.apple.symbolichotkeys,但我怎么写呢? 我知道,我必须使用-string将一个字符串写入一个选项,如下所示:

defaults write com.yourdomain.appname variable -string value 

但是,这似乎是一个数组,其中包含几个值,其中之一也是一个数组。 当然,我可以复制该内容并写入默认文件本身,但我希望以shell命令的形式执行此操作。

ALSO:

这真的会是可携带的吗?由于我不了解com.apple.symbolichotkeys的内容,因此它可能不可移植。

+1

写com.apple.symbolichotkeys.plist默认情况下,它可以添加/修改信息,就像它通过系统偏好设置一样,但它不会完成所有通过GUI完成的操作,并且需要在Objective-C中为实际发生的变化。在这种情况下,导出/导入建议的rob mayoff不起作用。 – user3439894

+0

我在.GlobalPreferences中找到了一些其他设置 – hgiesel

+1

请参阅[Apple.SE上的这个问题](http://apple.stackexchange.com/questions/201816/how-do-i-change-mission-control-shortcuts-from - 命令行)和[这个SO问题](http://stackoverflow.com/questions/21878482/what-do-the-parameter-values-in-applesymbolichotkeys-plist-dict-represent)。 –

回答

1

由于com.apple.symbolichotkeys结构不记录,并充满了神秘的数字,最好的办法是使用系统偏好设置>键盘>快捷方式来配置你的热键,然后导出配置XML:

defaults export com.apple.symbolichotkeys symbolichotkeys.plist 

symbolichotkeys.plist添加到您的安装脚本集合中。加载它:

defaults import com.apple.symbolichotkeys symbolichotkeys.plist 
+0

由于绝大多数默认子系统都非常简单,所以对我来说似乎是任意的,但是请多加注意 – hgiesel

+1

++的实用解决方案,但需要注销或重新引导才能使更改生效。你知道这个方法吗? – mklement0

+0

Quibble:'defaults export com.apple.symbolichotkeys symbolichotkeys.plist'创建一个_binary_ plist文件(至少在OSX 10.11中);使用'defaults export com.apple.symbolichotkeys - > symbolichotkeys.plist'来创建一个XML文件。 – mklement0

0

要写入com.apple.symbolichotkeys默认你可以从终端这样的命令使用:

defaults write com.apple.symbolichotkeys AppleSymbolicHotKeys 
-dict-add 73 "{enabled =1; value = { parameters = (65535, 53, 1048576); 
type = 'standard';}; }" 

您也可以在Objective-C使用NSUserDefaults(我想也斯威夫特)

而且还有等价的C:

CFPreferencesSetAppValue(KEY, VALUE, CFSTR("com.apple.symbolichotkeys")); 
CFPreferencesAppSynchronize(CFSTR("com.apple.symbolichotkeys")); 
+1

OP正在寻找一个可以从_shell script_中使用的命令,而'defaults'命令应该可以工作 - 假设你计算出所有神秘的常量 - 你仍然需要注销或者重启才能使更改生效。 – mklement0

+0

为什么注销或重启?是不是在实时更改,我会在今天进行测试,但我认为这种更改反映在.plist中的默认命令执行后首选项文件和快捷方式可以从那时起使用 –

+0

使用'defaults'将更改提交给_disk_,但您还需要_notify process_默认值已被更改以便获取更改 - 我不知道该是什么过程,以及如何让它重新读取其首选项,同时_running_(使用应用程序调用“CFPreferenceAppSynchronize” ID'com.apple.symbolichotkeys'似乎不工作)。然而,注销/重新启动会导致进程(通过'cfprefsd'守护进程/代理程序)从磁盘获取更改。 – mklement0

相关问题