2012-05-02 16 views
0

現在、動的ロードライブラリプラグインの開発に取り組んでいます。プラグインは他のアプリケーションによってロードされます。プログラミング言語はC++です。Unix上でマウスの状態を検出する方法

私はMacOSXやLinux durning runtimeのようなUnix上でマウスボタンの状態を検出する必要があります。左マウスボタンがアプリケーションで現在保持されているか解放されているかどうかを示します。アプリケーション自体は、ライブラリがそうするための機能を提供していません。 Windowsではマウスフックを使用してそのことをキャプチャしていますが、Unixシステムの回答が見つかりませんでした。

+1

"アプリケーションでマウスボタンを押したままにする"とはどういう意味ですか? "マウスを使用する"環境では、アプリケーションはマウスイベントを受け取ることができます(そうしないとアプリケーションで使用できません)。 –

+0

こんにちは、それはプラグインです、そして、プラグインがロードされているアプリケーションは、マウスボタンの保持/解放条件を取得するためのAPIを公開していません。 – miguel

+0

申し訳ありませんが、私はプラグインで何をやっていますか:if(マウスボタンが押されている){何かをする;} else {何かをやる;}これはGUIのない​​プラグインです。 – miguel

答えて

0

ホストアプリケーションがコンピュータのGUIと対話するために使用している方法については言及していません。 Raw X11? GTK+(とりわけGnomeアプリケーションによって使用される)またはQtKDEアプリケーションで使用される)のようなツールキット? MacOSの場合、ネイティブGUIまたはX11を使用しているホストアプリケーションはありますか?実際には、ホストアプリケーションにGUIが全くないと仮定できるかどうかは明らかではありません。

ホストアプリケーションがツールキットを使用していて、それがどのツールキットか分かっている場合は、ツールキットが提供する機能を使用してマウスイベントを取得する必要があります。

ホストアプリケーションがそのGUIに対して何をしているのかわかっていない場合でも、X11をバイパスして直接マウスにアクセスできますが、これには大きな注意点があります。あなたが正しいマウスにアクセスしている場合は?ホスト・ホスト・アプリケーションは、リモートX11ディスプレイで実行されているか、またはSSH接続を介してリモート・マシン上で実行されている非GUIアプリケーションである可能性があることに注意してください。マウスがアプリケーションを実行しているコンピュータに接続されていますか(もしあれば)本当に必要なマウスですか?

あなたはまだ、このアプローチを継続するために、Linuxであなたはあなたの中のデータを提供します。このデバイスから読み取っています...仮想デバイス/dev/input/miceを開く...または/dev/input/mouse0または/dev/input/mouse1、などを使用して、特定のマウスを開くことができますしたい場合PS/2 format

+0

ありがとうございます。申し訳ありませんが、私はまだこれを十分に明確にしていませんでした。しかし、これはマウスを捕まえるのをやめ、いくつかの方法で回避することで解決されています。ありがとう! – miguel

関連する問題