3

我可以使用控制中心界面的输入操作部分为 Ctrl-F1 和 Ctrl-F2 创建键盘快捷键,使它们启动脚本。目前感兴趣的平台是 CentOS 5 上的 KDE 3.5,但 4.x 也没有那么直接的兴趣。

然而,我需要的是从 shell 脚本创建相同的快捷方式,在安装 RPM 后运行:这个 RPM 创建一个用户,然后完全预配置其 KDE 环境。到目前为止,我已经能够做类似的事情

cat > kdesktoprc <<- EOM
[Desktop0]
WallpaperMode=NoWallpaper
EOM

然后在第一次登录时,KDE 设置将从那里开始就好了。我想我想要做的是预置这个特定帐户,但我不想干扰同一主机上的任何其他当前或未来帐户。

不幸的是,我无法使用 Input Actions 进行相同的工作,其配置涉及更多。在尝试进一步解开它之前,我决定询问是否有更好的方法。

换句话说,是否有创建键盘快捷键的命令(我认为我不能使用 DCOP,因为当时 KDE 不会运行)?

我浏览了 kconf_update 机制的提示,但无法确定它是否适合我的用例:是否有可用的参考?

先感谢您,

4

1 回答 1

4

我找到了一种似乎可行的方法。首先,我创建一个 .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 找到它并且不添加重复。

于 2010-07-22T08:21:33.310 回答