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

nrs*_*ser 9 macos hotkeys plist

TL;博士

第一个parameterscom.apple.symbolichotkeys:AppleSymbolicHotKeys代表什么?

细节...

AppleSymbolicHotKeys结构

OS X符号热键plist文件位于

~/Library/Preferences/com.apple.symbolichotkeys.plist
Run Code Online (Sandbox Code Playgroud)

将热键存储在名为'AppleSymbolicHotKeys'的dict中,其条目看起来像

<action:int> = Dict {
    enabled = <enabled:bool>
    value = Dict {
        type = <type:string>
        parameters = Array {
            <param_1:int>
            <param_2:int>
            <param_3:int>
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

例:

10 = Dict {
    enabled = true
    value = Dict {
        type = standard
        parameters = Array {
            56
            28
            1572864
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

专业提示:你可以看看

/usr/libexec/PlistBuddy -c "Print :AppleSymbolicHotKeys" ~/Library/Preferences/com.apple.symbolichotkeys.plist
Run Code Online (Sandbox Code Playgroud)

价值

action:int

这是热键将采取的行动的ID.网络上有相当完整的列表,做一些谷歌搜索因为我没有足够的点来发布链接或其他什么.

enabled:bool

是否启用了热键.

type:string

似乎总是"标准".

param_1:int

这是我无法得到的.它似乎并不一定与第2和第3段相关,尽管它经常在其他参数更改时发生变化.例如...

我可以Restore DefaultsSystem Preferences -> Keyboard -> Shortcuts -> Mission Control视图中单击,它会将"切换到桌面1"设置为"ctrl + 1".读取该动作的值(编号118),我看到param_1设置为65535.如果我在UI中手动将键组合设置为"ctrl + 1",我将param_1设置为49.整个价值观param_2param_3保持不变.

param_2:int

这似乎是关键代码

/System/Library/Frameworks/Carbon.framework/Versions/A/Frameworks/HIToolbox.framework/Versions/A/Headers/Events.h
Run Code Online (Sandbox Code Playgroud)

对于要修改的非修改键,除了65535非常常见的值param_1,并param_2在我的本地机器上显示动作160,163和175.

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",
}
Run Code Online (Sandbox Code Playgroud)

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

"Shift + Control" = 393216 = 131072 + 262144 = "Shift" + "Control"
Run Code Online (Sandbox Code Playgroud)

所以...

我将非常感谢任何见解,并希望这可以作为我挖掘到接触该主题的任何其他人的信息的参考.

dra*_*ard 6

它是键上字母的ASCII码,如果没有ASCII码,则为-1(65535)。注意字母是小写的,所以 D 是 100(小写的 d)。

有时,通常具有 ascii 代码的密钥使用 65535 代替。这似乎发生在使用控制键修饰符时,例如使用特定空间的热键。

这里有一个很好的 2011 年的键和值列表,以及其他一些很好的细节:

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

  • 提示链接现已损坏,但可通过 archive.org 访问:https://web.archive.org/web/20141112224103/http://hintsforums.macworld.com/showthread.php?t=114785 (5认同)

小智 5

以十六进制形式查看时,nrser 答案中的数值更有意义:

0x000000 => "No modifier",
0x020000 => "Shift",
0x040000 => "Control",
0x080000 => "Option",
0x100000 => "Command",
Run Code Online (Sandbox Code Playgroud)

其他的只是上述值的按位或,例如:

0x060000 => "Shift + Control",
0x180000 => "Command + Option",
Run Code Online (Sandbox Code Playgroud)