如何在KDE中以编程方式创建键盘快捷键?

3
我可以通过控制中心界面的“输入操作”部分,为Ctrl-F1和Ctrl-F2创建键盘快捷键,并使它们启动脚本。目前感兴趣的平台是运行在CentOS 5上的KDE 3.5,但4.x也不太紧要。
然而,我需要从一个shell脚本创建相同的快捷方式,在安装RPM后运行:该RPM创建一个用户,然后完全预配置其KDE环境。到目前为止,我已经能够做一些事情了。
cat > kdesktoprc <<- EOM
[Desktop0]
WallpaperMode=NoWallpaper
EOM

在第一次登录后,KDE设置会很好地继续使用。我想做的是预置这个特定的帐户,但是我不想干扰同一主机上任何现有或未来的帐户。

不幸的是,我无法通过输入操作使其工作,因为其配置要复杂得多。在进一步解决它之前,我决定问问是否有更好的方法。

换句话说,是否有一个命令可以创建一个键盘快捷方式(我认为我不能使用DCOP,因为此时KDE不会运行)?

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

提前感谢您的帮助!

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脚本中运行所有上述步骤会引发多个障碍。

首先,如果khotkeys_update无法联系X服务器,则会失败;表面上看起来这很愚蠢,因为它只需要执行文本整理,但是可以通过将其调用放在.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会找到它并不会重复添加。


这在KDE4中似乎仍然相似,但我还没有找到导入文件的方法。 /usr/share/kde4/apps/khotkeys 包含您提到的文件。我也想知道将它们放入用户主目录中的“share”文件夹是否可行... - exhuma

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接