6

次のことを行いたいと思います。HTMLを表示するWebkitウィジェットを使用して、常に上部のpygtkウィンドウにフルスクリーンを作成しますが、完全に透明なボックスを使用して、下のウィンドウが表示されるようにします。(これは可能のようです: WebKitを使用してクリアな背景の上にWebコンテンツをレンダリングすることは可能ですか?

私が望んでいるのは、(時々)透明なボックスで発生するすべてのマウスイベントをアプリケーションのウィンドウの下のウィンドウに渡して、それらと正常に対話できるようにすることです。したがって、視覚的に透過的であるだけでなく、マウスイベントに対しても透過的です。

理論的には、pygtk Eventboxを使用して関心のあるすべてのイベントをキャッチし、wnckを使用して私の真下のウィンドウを見つけ、python-xlibを使用してこのイベントを渡すことができると思います。

これは、最も洗練されたソリューションのようには思えません。もっと良い方法はありますか?

4

1 に答える 1

6

イベントの転送は、ご想像のとおりうまく機能しません。それは多くの競合状態を作り出し、いくつかのアプリはXSendEventとにかくものを無視します。

できることは、入力形状マスクを設定することです。http://www.x.org/releases/current/doc/xextproto/shape.htmlを参照してから、形状の「種類」を指定できる場所を確認しXFixesSetWindowShapeRegion()てください(ここでは必要です)。/usr/include/X11/extensions/Xfixes.hShapeInput

何かのようなもの:

XRectangle rect;
XserverRegion region = XFixesCreateRegion(display, &rect, 1);
XFixesSetWindowShapeRegion(display, window, ShapeInput, 0, 0, region);
XFixesDestroyRegion(display, region);

設定する機能ShapeInputは「たった」5〜6歳なので、X11の本当にくだらない古いバージョンを気にする場合は、うんざりするかもしれません。

于 2012-02-14T15:41:27.150 に答える