![如何使用全局快捷键以编程方式显示/隐藏我的应用程序窗口?](https://linux22.com/image/821557/%E5%A6%82%E4%BD%95%E4%BD%BF%E7%94%A8%E5%85%A8%E5%B1%80%E5%BF%AB%E6%8D%B7%E9%94%AE%E4%BB%A5%E7%BC%96%E7%A8%8B%E6%96%B9%E5%BC%8F%E6%98%BE%E7%A4%BA%2F%E9%9A%90%E8%97%8F%E6%88%91%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%E7%AA%97%E5%8F%A3%EF%BC%9F.png)
我正在使用 Quickly (PyGI) 为 Gnome/Ubuntu 编写 Notational Velocity 克隆,我想允许用户设置一个全局快捷键,该快捷键将在应用程序运行时切换应用程序窗口的可见性(类似于 Tilda 对其终端仿真器所做的操作)。即,一旦启动应用程序,用户可以按 F2 隐藏窗口,然后再次按 F2 使其可见并将其置于最前面。我不想使用外部热键应用程序或任何需要应用程序外设置的东西。我该怎么做?
这里有一个类似的问题:我如何监听全局按键事件?但主要的答案是笨拙的非编程解决方案。一位评论者提到“使用 X api 调用来获取键盘”,但我不知道从哪里开始。
答案1
Keybinder 库确实这。如果你检查拉取请求,你会发现其中有使用 pygi 的示例请求,其中一个是我对 py3k 的请求。
答案2
我意识到这是一个外部设置,而不是在应用程序中,但我想我会写下如何做到这一点,因为我在网上找不到文档。
我最近需要为我的程序读取一些 compiz 设置,因此弄清楚如何更改它们相当简单。您可以使用 python-compizconfig 在 python 中以编程方式设置 compiz 设置。我试了一下,您可以像这样设置值:
import compizconfig
context=compizconfig.Context()
commandplugin=context.Plugins['commands']
c0=commandplugin.Screen['command0']
c0.Value='xeyes'
key0=commandplugin.Screen['run_command0_key']
key0.Value='<Control><Primary>g'
context.Write() #Note that sometimes you have to pass False to get it to update settings
以上设置了 compiz 的命令插件,使用 control-g 组合键运行 xeyes。您可能需要检查以确保插件正在运行(我的插件在 ccsm 中默认关闭)。请注意,要获取许多设置,您可以使用该keys()
函数列出它们(即)context.Plugins.keys()
这里有一个代码链接,它帮助我弄清楚了这是如何工作的,因为我找不到任何文档:http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/precise/compizconfig-python/precise/view/head:/src/compizconfig.pyx