(57)【特許請求の範囲】
【請求項１】
ポインティングデバイスの動きに伴うポインティングデバイスの位置変化を示す位置差情報と、そのデバイスボタンの操作状態を示すボタン操作情報をもつ移動情報に基づいて、使用者が意図した当該ポインティングデバイスの位置座標を決定する方法であって、上記ポインティングデバイスの動きに伴う移動情報を蓄積するとともに、ボタン操作が、予め設定された補正処理時間内に行われ、かつ、当該ポインティングデバイスの動き始めと同時にあるいは所定時間内に行われた場合、そのボタン操作に変化があったことを示す移動情報を生成した後、上記蓄積された移動情報を生成し、この蓄積された移動情報の位置差情報に基づいて、上記位置座標を決定することを特徴とするポインティングデバイスのデ−タ処理方法。
【請求項２】
ポインティングデバイスの動きに伴うポインティングデバイスの位置変化を示す位置差情報と、そのデバイスボタンの操作状態を示すボタン操作情報をもつ移動情報に基づいて、使用者が意図した当該ポインティングデバイスの位置座標を決定する方法であって、上記ポインティングデバイスの動きに伴う移動情報を順次記録するとともに、ボタン操作が、当該ポインティングデバイスが動き始めてから所定時間内に発生した場合、その記録された移動情報の移動量の合計を打ち消す第１の移動情報を生成した後、上記ボタン操作に変化があったことを示す移動情報を生成し、その後、第１の移動情報を打ち消す第２の移動情報を生成することを特徴とするポインティングデバイスのデ−タ処理方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、グラフィカルユーザーインターフェース（ＧＵＩ：Graphical UserInterface)システムにおける、マウス等のポインティングデバイスからの入力デ−タを処理する方法に関する。
【０００２】
【従来の技術】
ポインティングデバイスは、図８に示すように、ＧＵＩシステムでは広く利用されている。この種のデバイスでは、例えばシリアスマウス１０が主流である。シリアスマウス１０は、３バイトあるいは４バイトの長さのデータバケットがコンピュータ１２に送られる構成となっており、このデータに基づいてシリアスマウス１０が示す位置情報が与えられる。このデータの構成は、起点とする位置からの位置の差分を示す位置差情報（ΔＸ，ΔＹ）と、シリアスマウス１０のボタンが「押されている」あるいは「押されていない」というボタンの操作状態を示すボタン操作情報を含む構成となっており、この位置変化やボタンの状態に変化があるとデータバケットが発生するようになっている。この変化が連続的に起こっている間、このデータバケットは連続的に発生するが、その頻度は通信速度の限界の数分の一程度の一定時間（サンプリング間隔）毎である。このサンプリング間隔は、十数ｍｓ〜数十ｍｓである。また、シリアスマウスの操作におけるイベントは、マウスの移動、マウスボタンが押されたことを示すもの、マウスボタンが放されたことを示すものの３種がある。なお、位置変化もボタンの状態の変化もない場合は何も送らない。この従来の技術では、ボタンの状態の変化と位置変化がサンプリング間隔以下の時間内に起きた場合、一つのデータバケットに両方の情報が盛り込まれた状態でコンピュータ１２に送られる。
【０００３】
このようなマウスを用いて入力するシステムにおいては、ジッタの除去処理や、クリックやダブルクリックの際にマウスが数カウント移動してもそれを短距離ドラッグと誤認しないようにする処理が、多くのこうしたシステムに実装されている。
【０００４】
【発明が解決しようとする課題】
ところが、上記のような従来技術においては、位置変化とボタンの操作状態の変化が同時に起こった場合、一つのデータバケットでその両方が送られるため、どちらのイベントが先に起こったのか、あるいは実際に移動しながらマウスボタンを操作したのかが識別できず、使用者が意図した位置と実際に入力されたポイント位置とのずれ、すなわち、ポイントエラーが起こることがあり、このような場合の対応がなされていない。つまり、使用者がマウスのドラッグによって領域選択を行い、その状況を目で確認した後、マウスボタンを放したにもかかわらず、選択エラーが発生する状況がそれである。この原因として、手ぶれ、あるいは使用者がマウスボタンを離してからマウスを他の位置に向けて動かし始めているつもりだが、実際には指の応答が遅れ、マウスボタンを放し終わらないうちに腕が動き始めるといった使用者が無意識のうちに行ってしまう、指と腕の同期のずれが考えられる。こうした領域選択のドラッグ終了後直ちにマウスカーソルを他の位置に動かす場合、選択された領域が意図と異なることがあるといった現象は、前者の手ぶれによる操作ミスとは異なり、人間の手指や腕の動きとマウス操作からその発生のメカニズムを予測することが可能であり、これを解消することが臨まれている。さらに、他の問題としてマウスボタンを押す反動でマウスが動いてしまうこともあり、これはピクセル単位の高精度のポインティングの際には問題となっている。
【０００５】
本発明はこれらの問題を鑑みてなされたものであり、上記のようなポイントエラーの発生を低減することができるポインティングデバイスからの入力データを処理する方法を提供することを目的とする。
【０００６】
【課題を解決するための手段】
本発明の目的を達成するために、本発明の請求項１に対応するポインティングデバイスのデ−タ処理方法（以下、発明１という）は、ポインティングデバイスの動きに伴うポインティングデバイスの位置変化を示す位置差情報と、そのデバイスボタンの操作状態を示すボタン操作情報をもつ移動情報に基づいて、使用者が意図した当該ポインティングデバイスの位置座標を決定する方法であって、上記ポインティングデバイスの動きに伴う移動情報を蓄積するとともに、ボタン操作が、予め設定された補正処理時間内に行われ、かつ、当該ポインティングデバイスの動き始めと同時にあるいは所定時間内に行われた場合、そのボタン操作に変化があったことを示す移動情報を生成した後、上記蓄積された移動情報を生成し、この蓄積された移動情報の位置差情報に基づいて、上記位置座標を決定することによって特徴つけられる。
【０００７】
また、本発明の請求項２に対応するポインティングデバイスのデ−タ処理方法（以下、発明２という）は、ポインティングデバイスの動きに伴うポインティングデバイスの位置変化を示す位置差情報と、そのデバイスボタンの操作状態を示すボタン操作情報をもつ移動情報に基づいて、使用者が意図した当該ポインティングデバイスの位置座標を決定する方法であって、上記ポインティングデバイスの動きに伴う移動情報を順次記録するとともに、ボタン操作が、当該ポインティングデバイスが動き始めてから所定時間内に発生した場合、その記録された移動情報の移動量の合計を打ち消す第１の移動情報を生成した後、上記ボタン操作に変化があったことを示す移動情報を生成し、その後、第１の移動情報を打ち消す第２の移動情報を生成することによって特徴付けられる。
【０００８】
以上の発明１および発明２の構成において、ポインティングデバイスが動き始めてから所定時間内のボタン操作イベントをその後の処理対象としているが、この所定時間は０〜３００ｍｓ程度の範囲とすることが好ましい。この所定時間の上限を３００ｍｓ程度とする根拠は、ポインティングデバイスを移動させた後、それに対してカーソルが動いた先を目で確認した後、さらに指を動かしてデバイスボタンを押す（あるいは放す）には概ね３００ｍｓ要すると考えられることによる。
【０００９】
発明１および発明２の構成により、静止していたポインティングデバイスが動き始めた直後にあるいは動き始めと同時に行われたボタン操作は、使用者がポインティングデバイスがその静止中に行うことを意図していたものと考えられることから、処理の対象とすることが好ましく、使用者が意図したポイント位置は、このボタン操作に先立つ静止位置が特定できる。
【００１０】
以上の発明１および発明２において、ポインティングデバイスを静止させずにボタン操作を行った場合には処理の対象とはならない。よって、いづれの発明も利用するアプリケーションの種類に関わりなく適用することができる。
【００１１】
【発明の実施の形態】
以下に図面を参照しながら、本発明の実施の形態について説明する。以下の形態では、ポインティングデバイスとしてマウスを用いて説明する。
【００１２】
図１は、発明１の実施の形態を示すフローチャートである。
まず、マウスが静止した状態から動き始めたとき、その位置差情報およびボタン操作情報を含む移動情報を所定のサンプリングの時間間隔をおいて、蓄積する。そして、マウスが動き始めてから経過した時間（ｔ）が、補正処理時間幅（Ｔ）を超えた場合は蓄積した移動情報を出力する。一方、時間（ｔ）が、補正処理時間幅（Ｔ）以内の場合、ボタン操作が行われていない場合は、蓄積した移動情報を出力し、ボタン操作が行われた場合は、そのボタン操作がマウスの動き始めと同時か、あるいは、例えば１０〜３００ｍｓの範囲の時間に行われた場合を補正処理対象とし、下記に示す補正処理を行う。なお、補正処理の対象とならなかった場合は、マウスの動き始めを待つステップとなる。この方法における補正処理は、まずボタン操作に変化があったこと（ボタンイベント）を示す移動情報を生成した後、このボタン操作が行われた以前の蓄積された移動情報を生成し、これらの生成された移動情報を順次出力する。ここで、上記の補正処理時間幅（Ｔ）においては、移動情報が発生しても次のアプリケーションには渡さず、ボタン操作が行われない場合の移動情報を蓄積する最大時間が設定されている。この補正処理時間幅（Ｔ）のタイムアウト処理のために、この方法においてはタイマが使用されている。
【００１３】
この方法を用いた実施例として、図４に示すマウスからの信号例の場合、図５に示すような補正結果を得ることができる。図４に示す信号例は、（ａ）に示すようにマウスの動き始めと同時にボタン操作はＯＮ状態かつ位置差情報が発生し、１５０ｍｓの静止後、（ｃ），（ｄ）の移動情報が発生し、その後、（ｅ）に示すように、ボタン操作はＯＦＦ状態となったことが示されている。この例では１５０ｍｓの静止状態はこの間移動イベントが発生していないことを示すものでマウスが一旦停止したものとみなすことができる。従って、（ｅ）の時点でのボタン操作はこの静止中に行うことを意図したものであり、（ｃ），（ｄ）の移動情報は補正の対象となるので、図５に示すようにこのボタンイベントを示す移動情報（ｆ）を生成した後、蓄積した（ｃ），（ｄ）の移動情報すなわち（ｇ），（ｈ）の移動情報を生成する。そして、これらの移動情報はこの順序で出力される。この方法によって補正処理する場合としない場合について、実際にポイントエラー率を求めたところ、図７に示す結果が得られた。この結果からも、明らかなようにボタンイベントにおいて発生するポイントエラー率は大幅に改善された。
【００１４】
次に、発明２の実施の形態を、図２に示すフローチャートを参照しながら説明する。
【００１５】
この方法では、マウスの発生する移動情報はすべてアプリケーションにそのまま渡される。また、移動情報はアプリケーションに渡すと同時に最近の十数回分を記録しておく。マウスボタン操作が行われた場合、記録した移動情報を調べる。マウスが動き始めてから一定時間（０〜３００ｍｓ）以内に起こったボタン操作である場合には補正対象とし、下記に示す補正処理を行う。なお、補正処理の対象とならなかった場合にはボタン操作を示す移動情報をそのままアプリケーションに渡す。
【００１６】
この方法における補正処理は、このボタンイベントが起こるまでの間の移動情報における位置差情報とボタンイベントにおける位置差情報と誤差を解消するように位置差情報の補正データ、すなわち、記録した移動情報の合計を打ち消す第１の移動情報を、このボタンイベントの移動情報を生成する前に生成し、その後そのボタンイベントを示す移動情報を生成した後、この第１の移動情報を打ち消すための第２の移動情報を生成する。そして、これらの移動情報を順次に出力する。この構成においては、移動情報は逐次アプリケーションに渡されるので、補正処理時間幅（Ｔ）のタイムアウト処理の必要はなくタイマを設置する必要はない。
【００１７】
この方法を用いた実施例として、図４に示すマウスからの信号例の場合、図６に示すような補正結果を得ることができる。図４に示す信号例の説明は上記と同様であるので、ここでは省略する。
【００１８】
１５０ｍｓの静止後発生した（ｃ），（ｄ）の移動情報をそのまま（ｉ），（ｊ）に示すように出力する。この例では移動情報が発生しない１５０ｍｓの時間はマウスが一旦停止したものとみなすことができる。したがって、（ｅ）の時点でのボタン操作はこの静止中に行うことを意図したものであり、（ｃ），（ｄ）の移動情報は補正の対象となるので、図６に示すように、これら（ｃ），（ｄ）の移動量の合計を打ち消す第１の移動情報（ｋ）を、このボタンイベントにおける移動情報（ｌ）を生成する前に生成する。移動情報（ｌ）に引き続いて第１の移動情報（ｋ）を打ち消す第２の移動情報（ｍ）を生成する。
【００１９】
以上のように、この方法においても使用者が意図したポイント点を推定し、補正を行うので、ポイントエラーを打ち消すことができる。
【００２０】
以上説明した実施の形態におけるシステムのハード構成は、図３に示すように、前者の構成はマウスに組み込まれた位置情報処理部３あるいはコンピュータのGUI 処理プログラム４に組み込む構成（図３（Ａ），（Ｂ））とすることができ、また、後者の構成はコンピュータのＧＵＩ処理プログラム４に組み込む構成（図３（Ａ））とすることができる。本実施の形態はいずれも、例えば、Ｃ言語で１００〜２００行程度の処理プログラムをＧＵＩ処理プログラム４に組み込むだけの簡単な実装で実現することができる。
【００２１】
本実施の形態はマウスの静止を検出することにより、その静止していたマウスが動き始めた直後あるいは動き始めと同時に行われたボタン操作は使用者がその静止中にボタン操作を行うことを意図したものとの見地から、補正処理を組み立てたが、本発明はこれに限ることなく、静止と略等しい低速度のマウスの移動やマウスの移動方向の変化点あるいは移動速度が極小となる時点を検出するなどの手法を追加することも可能であり、このような構成とすれば補正範囲をさらに広げることができ、有効である。
【００２２】
【発明の効果】
以上説明したように、本発明のポインティングデバイスのデ−タ処理方法
によれば、ポインティングデバイスの動きに伴う移動情報を蓄積するとともに、ボタン操作が、所定の補正処理時間内に行われ、かつポインティングデバイスの動き始めと同時にあるいは所定時間内に行われるボタンイベントが発生した場合、そのボタンイベントを示す移動情報を生成した後、蓄積された移動情報を生成し、この蓄積された移動情報の位置差情報に基づいて、使用者が意図した位置座標を決定する構成、あるいは、ポインティングデバイスの動きに伴う移動情報を順次記録するとともに、ボタン操作が、このポインティングデバイスが動き始めてから所定時間内に発生した場合、その記録された移動情報の移動量の合計を打ち消す第１の移動情報を生成した後、ボタン操作が行われたボタンイベントを示す移動情報を生成し、その後、第１の移動情報を打ち消す第２の移動情報を生成する構成としたので、ボタンイベント時において使用者が意図したポイント点を推定し、補正を行うことができ、ポイントエラーを解消することができる。
【００２３】
また、この方法の実装は、このアルゴリズムをポインティングデバイスあるいはコンピュータにプログラムとして組み込むだけであり、簡単に行うことができる。
【図面の簡単な説明】
【図１】発明１の実施の形態を示すフローチャート
【図２】発明２の実施の形態を示すフローチャート
【図３】本発明が適用されるＧＵＩシステムの構成図
【図４】本発明の実施の形態の実施例に用いられる移動情報を示す図
【図５】図４に示す移動情報が発明１の実施の形態により補正された移動情報を示す図
【図６】図４に示す移動情報が発明２の実施の形態により補正された移動情報を示す図
【図７】発明１の実施の形態により得られるエラー率の従来技術との比較図
【図８】従来技術が適用されるＧＵＩシステムの構成図
【符号の説明】
１      ポインティングデバイス本体
２      コンピュータ
３      位置情報処理部
４      ＧＵＩ処理プログラム
【図１】
0004010350.tif 000002
【図２】
0004010350.tif 000003
【図３】
0004010350.tif 000004
【図４】
0004010350.tif 000005
【図５】
0004010350.tif 000006
【図６】
0004010350.tif 000007
【図７】
0004010350.tif 000008
【図８】
0004010350.tif 000009