2016-01-02 115 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

相關問題