web-dev-qa-db-ja.com

グローバルショートカットキーを使用してアプリウィンドウをプログラムで表示/非表示にするにはどうすればよいですか?

Quickly(PyGI)を使用してGnome/UbuntuのNotational Velocityクローンを作成し、ユーザーがアプリの実行時にアプリウィンドウの可視性を切り替えるグローバルショートカットキーを設定できるようにします(Tildaが端末エミュレータ)。つまり、アプリが起動したら、ユーザーはF2を押してウィンドウを非表示にし、次にF2をもう一度押すと表示されて前面に表示されます。外部のホットキーアプリやアプリ外の設定が必要なものは使いたくありません。これについてどうすればいいですか?

ここにも同様の質問があります: グローバルキープレスイベントをリッスンするにはどうすればよいですか? あるコメンターは「キーボードをX api呼び出しでつかむ」と言っていますが、どこから始めればいいのかわかりません。

6
monotasker

Keybinderライブラリは、正確に this を実行します。プルリクエストをチェックすると、pygiを使用した例のリクエストがあります。そのうちの1つがpy3kのリクエストです。

4
RobotHumans

これはアプリではなく外部設定であることに気付きましたが、オンラインでドキュメントを見つけることができなかったので、これを行う方法を書きたいと思いました。

最近、私のプログラムのいくつかのcompiz設定を読む必要があったので、それらを変更する方法を見つけるのはかなり簡単でした。 python-compizconfigを使用して、プログラムでcompiz設定をpythonで設定できます。少し試しましたが、次のように値を設定できます。

_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

2
Ian B.