Как программно показать / скрыть окно моего приложения с помощью глобальной комбинации клавиш?

Я пишу клон Notational Velocity для Gnome / Ubuntu, используя Quickly (PyGI), и я хочу позволить пользователям устанавливать глобальную комбинацию клавиш, которая будет переключать видимость окна приложения при запуске приложения (что-то вроде Tilda делает для своего терминала эмулятор). То есть, после запуска приложения пользователь может нажать F2, чтобы скрыть окно, а затем снова нажать F2, чтобы сделать его видимым и вывести его на передний план. Я не хочу использовать внешнее приложение горячих клавиш или что-либо, что требует настроек вне приложения. Как мне поступить об этом?

Здесь есть похожий вопрос: Как я могу прослушать событие глобального нажатия клавиши? , но основной ответ - это громоздкое непрограммное решение. Один комментатор упоминает «захват клавиатуры с помощью вызова X api», но я не уверен, с чего начать.

6
задан 13 April 2017 в 15:23

2 ответа

Библиотека Keybinder делает именно это . Если вы проверяете pull-запросы, то есть запросы на примеры, использующие pygi, один из которых я для py3k.

0
ответ дан 13 April 2017 в 15:23

Я понимаю, что это внешняя настройка, а не приложение, но я решил написать, как это сделать, так как не могу найти документацию в Интернете.

Недавно мне пришлось прочитать некоторые настройки compiz для моей программы, поэтому выяснить, как их изменить, было довольно просто. Вы можете программно установить настройки compiz в python, используя python-compizconfig. Я немного поиграл с этим, и вы можете установить значения следующим образом:

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 для запуска xeyes с использованием комбинации клавиш control-g. Вам, вероятно, придется сделать проверку, чтобы убедиться, что плагин запущен (по умолчанию мой был отключен в ccsm). Обратите внимание, что для получения многих настроек вы можете использовать функцию keys() для их перечисления (т.е.) context.Plugins.keys()

Вот ссылка на код, который помог мне понять, как это работает, так как я не могу найти любую документацию: http://bazaar.launchpad.net/~ubuntu-branches/ubuntu/precise/compizconfig-python/precise/view/head:/src/compizconfig.pyx

0
ответ дан 13 April 2017 в 15:23

Другие вопросы по тегам:

Похожие вопросы: