AppleSymbolicHotKeys的plist字典中的参数值代表什么?

17

简述

com.apple.symbolichotkeys:AppleSymbolicHotKeys中的第一个parameters值代表什么?

详情...

AppleSymbolicHotKeys结构

位于OS X符号热键plist文件的...

~/Library/Preferences/com.apple.symbolichotkeys.plist

将快捷键存储在一个名为“AppleSymbolicHotKeys”的字典中,其条目看起来像

<action:int> = Dict {
    enabled = <enabled:bool>
    value = Dict {
        type = <type:string>
        parameters = Array {
            <param_1:int>
            <param_2:int>
            <param_3:int>
        }
    }
}

例子:

10 = Dict {
    enabled = true
    value = Dict {
        type = standard
        parameters = Array {
            56
            28
            1572864
        }
    }
}
< p > < em > 专业提示: 您可以使用< /p >观看。Translated:

专业提示:您可以使用

观看。
/usr/libexec/PlistBuddy -c "Print :AppleSymbolicHotKeys" ~/Library/Preferences/com.apple.symbolichotkeys.plist

数值

action:int

这是热键将执行的操作的ID。网络上有相对完整的列表,可以搜索一下,因为我没有足够的积分发布链接或其他内容。

enabled:bool

热键是否启用。

type:string

似乎总是“标准”。

param_1:int

这个我得不到。它似乎并不一定与参数2和3相关,尽管在更改其他参数时经常会改变。例如...

我可以在“系统偏好设置 -> 键盘 -> 快捷键 ->任务控制”视图中单击“恢复默认设置”,它将把“切换到桌面1”设置为“ctrl + 1”。读取该操作(编号118)的值,我看到param_1被设为65535。如果我手动在UI中将键组合设置为“ctrl + 1”,则param_1设置为49param_2param_3的值保持不变。

param_2:int

这似乎是来自

/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h

对于非修改键的按下操作,除了值为65535之外,这在param_1中非常常见,并且在我的本地机器上出现在160、163和175操作的param_2中。

param_3:int

似乎表示需要按下修改键,根据……

MODS = {
  0=>"No modifier",
  131072=>"Shift",
  262144=>"Control",
  524288=>"Option",
  1048576=>"Command",
  393216=>"Shift + Control",
  655360=>"Shift + Option",
  1179648=>"Shift + Command",
  786432=>"Control + Option",
  1310720=>"Control + Command",
  1572864=>"Option + Command",
  917504=>"Shift + Control + Option",
  1441792=>"Shift + Control + Command",
  1703936=>"Shift + Option + Command",
  1835008=>"Control + Option + Command",
  1966080=>"Shift + Control + Option + Command",
}

你会注意到代表多个修饰语的数字是它们所代表的修饰语的总和,例如:

"Shift + Control" = 393216 = 131072 + 262144 = "Shift" + "Control"

那么...

非常感谢任何见解,并希望这可以成为我所发掘的信息对其他接触该主题的人的参考。


2
你能提供这些操作的链接吗?我无法确定键盘快捷键首选项窗格中哪个操作 ID 对应哪个操作 :( - Michał Ziobro
它如何与函数CopySymbolicHotKeys()相连接? - Michał Ziobro
对于修饰符,请在IOLLEvent.h中搜索NX_SHIFTMASK。对于操作(“param_2”),我认为逆向工程的CGSHotKeys.h可能会有所帮助。键码似乎来自HIToolbox的Events.h - Dale
3个回答

7
这是键上字母的ASCII码,如果没有ASCII码,则为-1(65535)。请注意,字母都是小写的,因此D是100(小写d)。
有时,本应具有ASCII码的按键使用65535代替。似乎这发生在使用控制键修饰符时,例如与特定空间的热键一起使用时。
这里有一个2011年的很好的键和值列表以及其他一些细节:

http://hintsforums.macworld.com/showthread.php?t=114785


5
提示链接现在已经失效,但可以通过archive.org访问:https://web.archive.org/web/20141112224103/http://hintsforums.macworld.com/showthread.php?t=114785 - Ashley

6

在十六进制形式下,nrser答案中的数字值更容易理解:

0x000000 => "No modifier",
0x020000 => "Shift",
0x040000 => "Control",
0x080000 => "Option",
0x100000 => "Command",

其他的值只是以上值的按位或(bit-wise-ORs),例如:
0x060000 => "Shift + Control",
0x180000 => "Command + Option",

0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接