【问题标题】:How do I create keyboard shortcuts programmatically in KDE?如何在 KDE 中以编程方式创建键盘快捷键?
【发布时间】:2011-03-15 21:56:49
【问题描述】:

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

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

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

然后在第一次登录时,KDE 设置就会从那里正常启动。 我想我想要做的是预置这个特定的帐户,但我 不想干扰任何其他现在或未来的帐户 同一主机。

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

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

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

提前谢谢你,

【问题讨论】:

    标签: installation shell kde kde4


    【解决方案1】:

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

    【讨论】:

    • 这在KDE4中似乎还是类似的,但是我还没有找到导入文件的方法。 /usr/share/kde4/apps/khotkeys 确实包含您提到的文件。我也想知道将它们放入用户家中的“共享”文件夹是否可行...
    猜你喜欢
    • 2017-01-10
    • 1970-01-01
    • 2015-03-28
    • 2014-12-30
    • 1970-01-01
    • 2012-10-11
    • 1970-01-01
    • 1970-01-01
    • 2020-07-07
    相关资源
    最近更新 更多