我找到了一种似乎可行的方法。首先,我创建一个 .khotkeys 文件,将其命名为 zzz.khotkeys,并将其存储在 /usr/hsare/apps/khotkeys 下。一个很好的起点是 printscreen.khotkeys 文件。
这个 .khotkeys 文件有两个部分,一个带有热键定义的 [Data] 部分和一个 [Main] 部分,其中我们有其他键
Id=zzz
它用于记住已经导入了哪些键定义。
要使 zzz.khotkeys 中的定义生效,您可以使用它
/usr/lib/kconf_update_bin/khotkeys_update --id zzz
这似乎调用了与“输入操作”用户界面中的“导入”按钮等效的功能。
这一步在我的场景中遇到了许多障碍,它正在运行 RPM 安装的 %post 脚本中的所有上述内容。
首先,如果无法联系 X 服务器,khotkeys_update 会失败;从表面上看,这似乎很愚蠢,因为它应该只需要执行文本整理,但这可以通过将其调用放在 .kde/Autostart 中的 .desktop 文件中来解决。
其次,khotkeys_update 看起来并不完全像一个可以长期依赖的已发布接口;因为这是针对 CentOS/KDE 3.5 的环境,预计不会有什么进化,所以我有幸认为这是一个小问题。如果有一个发布的(shell)接口来执行导入,我找不到它(我没有调查 DCOP)。
最后,直接自定义 .kde/share/config 下的其他配置文件的同一脚本还在 .kde/Autostart 下添加了一个名为 zzz-keys.desktop 的文件,如下所示
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=ZZZ Hotkeys
Comment=Ensure ZZZ keyboard shortctus are available
Exec=/usr/lib/kconf_update_bin/khotkeys_update --id zzz
第一次添加热键(它们最终在 khotkeysrc 中)并在后续调用中被跳过,因为 khotkeysrc 包含一个键名 AlreadyInstalled,它也更新为包含“zzz”,因此在后续运行 khotkeys_update 找到它并且不添加重复。