- ベストアンサー
ポインターの位置を検知する方法は?
毛色の変わった質問で済みません。WINDOWS XPです。 ポインターはディスプレーの何処にあるかによって矢印、指先、Iの字、砂時計、掌などに変化します。 これは、 1 ポインターがどの領域にあるかをキャッチする 2領域に応じてポインターのデザインを決める という2つの手順を踏んでいるのだと思います。 2はアプリケーションソフトで処理していそうですが、1はどんな方法でポインターの位置を知るのですか。常時ポインターの移動距離から座標を算出する機能をOSに組み込んであるのですか。それとも他に何か方法があるのですか。また、その方法には特許など個人なり法人なり権利の所有者がいるのですか。 困っていることが有る訳ではありません。知っていても悪くない程度の知識で十分です。 よろしくお願いします。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
>常時ポインターの移動距離から座標を算出する 一般的にはポーリングと呼ばれるような方法は取られていません。 概略だけ説明しますと、光学式マウスの場合、LEDの反射光から画像を読み取りRAMに記憶して前の画像と比較します。この2つをDSPで計算比較を行い移動情報を決まったプロトコルにより送出します。 これをPICと呼ばれる割込みコントローラが検知しCPUの割込み端子に辿り着きます(PICはサウスブリッジに内蔵されていることが多い)。割込み番号が予め決められているのでOS側はマウスからの信号だとわかります。その後に移動情報を読み取りマウスポインタを更新します。 ざっとこんな感じですかね。 特許などについては詳しくは知りませんが以下が役立つかもしれません。 http://pc.watch.impress.co.jp/docs/2006/0322/engelbart.htm
その他の回答 (1)
Delphiなら、Mouse.CursorPos.X でデスクトップ上のマウスの位置を検知できます。 私も、詳しい訳ではないのですが、基本Win系は、Win32APIというものが用意されていて、プログラムの作成の手助けとなります。 要は、関数で、これを実行すると自動的に、Win側でマウスの位置を返してくれる訳です。 http://www.activebasic.com/help_center/Pages/API/Window/Cursor/GetCursorPos.htm マウスポインタのデザインが、どこに格納されているかは、ちとつっこんで調べたことがありません。
お礼
こちらは原理を掴んだ後の具体的な使用法の話ですね。将来、細かいことを聞きたくなるときが来るものやら、来ないものやら。 有り難うございました。またの機会にもよろしくお願いします。 今後、特段のご回答がなければ今夜中に締め切ります。
お礼
早々のご返事、ありがとうございます。本当に分かった訳ではありませんが、改めて「光学式マウスの原理」を通読したのと「PICと呼ばれる割込みコントローラ」の存在を知った事によって、とても分かり易くなりました。今はこれで十分です。 ダグラス・エンゲルバートの業績は読んでおきました。まことに画期的なアイデァだったと思います。 有り難うございました。またの機会にもよろしくお願いします。