私は2つの共有ライブラリを持っています:1つは、ウィンドウを設定し、それらをOpenGLでレンダリングし、別の独立した入力ライブラリは、レンダリングライブラリで作成されたウィンドウのマウスとキーボードの入力を集めます。X11 MotionNotifyイベントは、別の共有ライブラリに表示されませんか?
これで、マウス、キーボード、その他のイベントなど、レンダリングライブラリで適切にイベントを受け取ることができます。入力ライブラリーでキーイベントを取得することもできますが、マウスイベントは送信されません。私はXPending()
の戻り値を示すデバッグ出力を設定しました。待ち行列内のイベントの数、およびレンダリング・ライブラリー上には一連のイベントが表示されます。マウスを動かすかクリックすると、より多くのイベントがキューに入れられます。入力ライブラリには、そのデバッグ出力もあります。キーボードは、キーが押された/離されたときに1つのイベントのみを表示し、それ以外の場合はゼロを表示します。マウスは常にゼロイベントを表示します。
私のXウィンドウハンドルを取得するには、私のライブラリがクロスプラットフォームなので、X11とWindowsでウィンドウハンドルを格納するのに十分な大きさの64ビット整数を返すウィンドウクラスの関数があります。入力ライブラリでは、それをXウィンドウハンドルにキャストします。私のXディスプレイを得るために、私はXOpenDisplay(0)
をマウス/キーボードコンストラクタで呼び出します。
なぜ私のレンダリングライブラリではマウスイベントが発生しますが、入力ライブラリでは発生しませんか?
EDIT:Here問題(コードの〜200行)を示し、ソースコードで複数のディスプレイのオープンを持つ
問題の本質を2つの30行プログラムにまで減らすことはできますか? – sarnold