我显然不是唯一想知道的人 ( How can I change modifier keys in "System Preferences > Keyboard > Modifier Keys..." )。我试过用 dtruss 观看系统偏好设置应用程序,但这在 10.10.3 上似乎是不可能的(这就是我现在正在使用的),我什至不确定那会是什么如果系统偏好设置只是从 cfprefsd 获取设置,则很有用。用 dtruss 观看 cfprefsd 似乎没有捕捉到相关的文件访问。
有谁知道获取这些信息的 API?也许是格式塔?
最佳答案
好的 - 回答我自己的问题。我拼凑了一个使用 kqueues 来观察文件系统变化的小程序。当我更改系统偏好设置中的设置时,我查看了我的文件系统进行了修改,我看到:
'/Users/ted/Library/Preferences/ByHost/.GlobalPreferences.3F1C...9C34.plist.V1Ut9hp' kevent: ident=44, filter=KQ_FILTER_VNODE, flags=KQ_EV_ADD|KQ_EV_CLEAR, fflags=KQ_NOTE_WRITE|KQ_NOTE_CHILD|KQ_NOTE_PDATAMASK
所以设置在
~/Library/Preferences/ByHost/.GlobalPreferences.<UUID>.plist
.我不确定 UUID 是什么 - 与 OpenDirectory 有什么关系? (更新:显然这个 UUID 是您机器的标识符)。无论如何,在
.GlobalPreferences.<UUID>.plist
,我们看到如下条目:<key>com.apple.keyboard.modifiermapping.1452-610-0</key>
<array>
<dict>
<key>HIDKeyboardModifierMappingDst</key>
<integer>2</integer>
<key>HIDKeyboardModifierMappingSrc</key>
<integer>0</integer>
</dict>
</array>
1452:610 是我的 2012 Macbook Pro 中 USB 键盘/触控板组合的十进制 VID:PID,任何其他插入我的计算机并重新映射修改器设置的键盘都将具有类似的条目。
0
似乎是 Caps Lock 键,2
和 10
好像是左右CTRL,3
和 11
好像是左右选项,还有4
和 12
似乎是左右命令。所以从上面,你可以看到我的 Caps Lock 键映射到左 CTRL。
看起来像
.GlobalPreferences.<UUID>.plist
中的设置是标准用户默认设置的一部分。因此,您只需执行以下操作即可轻松获得这些设置[[NSUserDefaults standardUserDefaults] objectForKey:@"com.apple.keyboard.modifiermapping-1452-610-0"];
关于macos - 有谁知道 OSX 将系统偏好设置 > 键盘 > 修饰键中的设置存储在哪里?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37581090/