macos - 有谁知道 OSX 将系统偏好设置 > 键盘 > 修饰键中的设置存储在哪里?

标签 macos keyboard preferences capslock system-preferences

Where are these stored?!?

我显然不是唯一想知道的人 ( 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 键,210好像是左右CTRL,311好像是左右选项,还有412似乎是左右命令。

所以从上面,你可以看到我的 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/

相关文章:

cocoa - 如何以编程方式排列窗口,就像用 Cocoa 公开一样?

java - 获取键在键盘上的位置

android - 我如何在 Eclipse 中查看我的 Android 应用首选项

python - 从关键事件中获取特殊字符

Java Swing Mac OSX 首选项菜单

java - 首选项管理器问题

java - 如何保存应用程序数据以供 OS X 中的用户使用

mysql - 无法与 MacOS 上运行的 MySQL 建立连接

php - 如何在 Mac/OSX 中将预加载的 php 版本更改为 MAMP

javascript - Vanilla JavaScript : Disable all key combos whatsoever in an entire website