在macOS上,使用英文鍵盤時,組合鍵CMD+Backtick
用於在應用程序的打開窗口中循環。例如德國鍵盤上的組合是CMD+<
。這個快捷方式甚至可以使用System Preferences
→Keyboard
→Shortcuts
→Keyboard
→Move focus to next window
配置。如何以編程方式在系統偏好設置中設置macOS鍵盤快捷鍵?
對於我使用FLTK的多窗口GUI應用程序,我想利用這個快捷方式,但不知道如何獲取用戶在他或她的系統上設置的組合。所以我在尋找的是一個macOS系統調用,它爲我提供了在這臺Mac上用於Move focus to next window
的組合鍵。
當然,如果會有一些內置的方式使用FLTK我寧願通過本地系統調用。
谷歌搜索這個問題是一個噩夢......
更新2017年8月10日 OO的answer給了我一些想法,更多的研究。因爲我已經瞭解到,首選項存儲在com.apple.symbolichotkeys
,更準確地在關鍵27.
27 = {
enabled = 1;
value = {
parameters = (
98,
11,
524288
);
type = standard;
};
};
參數1(98):這是ASCII碼爲「B」。第一個參數具有使用的快捷方式的ascii代碼,如果是非ascii字符,則爲65535。
參數2(11):這是kVK_ANSI_B(source)的鍵盤代碼。這些代碼與鍵盤有關。在US鍵盤上,kVK_ANSI_Z是0x06,而在德語鍵盤上是0x10。
參數3(524288):這對修正鍵:
0x000000 => "No modifier",
0x020000 => "Shift",
0x040000 => "Control",
0x080000 => "Option",
0x100000 => "Command",
(0x80000等於524288)
所以我的任務只是似乎是要分析defaults read com.apple.symbolichotkeys
輸出,得到參數字典中的組合鍵,根據鍵盤佈局正確解釋這些組合,並使用這些信息在我的FLTK應用程序中設置回調。
可能使用AppleScript。快速谷歌搜索產量[this](http://www.macosxautomation.com/applescript/features/system-prefs.html)。您可以在bash中使用[osascript](https://developer.apple.com/legacy/library/documentation/Darwin/Reference/ManPages/man1/osascript.1.html)調用AppleScript代碼(使用C++中的系統調用) 。 – scohe001