(57)【要約】【課題】マウスによる移動距離を減らしてユーザの負担を軽減する。【解決手段】１つの選択状態ポインタと１つ以上の非選択状態ポインタを含む複数のポインタを、マウスの移動指示にあわせて相対位置を保ったまま移動させる。クリック等の操作指示は、選択状態ポインタに対してのみ有効とする。また、複数のポインタの相対位置を算出するための基準点から各ポインタへの方向がそれぞれ異なるようにしておく。そして、基準点からあるポインタへの方向と同一方向のマウスの移動指示が所定の回数行われたら、そのポインタを選択状態に切り換える。【選択図】図１
2007257371.tif 000002
【特許請求の範囲】
【請求項１】
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示するコンピュータで実行されるプログラムであって、
入力装置による移動指示があったとき、前記複数のポインタの位置の基準を示すポインタ基準点の座標を、該移動指示の移動ベクトルを加算することにより更新し、前記複数のポインタの各々について、予め記憶された当該ポインタと前記ポインタ基準点との相対座標を読み込み、更新された前記ポインタ基準点の前記座標と該相対座標を加算して当該ポインタの実座標を算出し、当該ポインタを前記画面上の該実座標の位置に移動させる移動ステップと、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ、該操作指示に対応する操作を行う操作実行ステップと、
を前記コンピュータに実行させることを特徴とするプログラム。
【請求項２】
前記入力装置による前記移動指示があったとき、前記複数のポインタの各々に対して、前記ポインタ基準点から当該ポインタへの方向にもとづき前記複数のポインタの各々で異なるように定められた方向および回数の組み合わせにより予め定義された選択指示パターンを該移動指示と比較し、該移動指示が前記選択指示パターンのいずれかに合致する場合、該選択指示パターンに対応する一つのポインタを選択状態にし、それ以外のすべてのポインタを非選択状態にする選択状態切換ステップをさらに前記コンピュータに実行させることを特徴とする請求項１に記載のプログラム。
【請求項３】
前記選択状態ポインタによりオブジェクトをドラッグするドラッグ操作中に、前記非選択状態ポインタのうちの一つに対応する前記選択指示パターンに合致する前記移動指示が前記入力装置によりなされたとき、前記選択状態切換ステップを前記コンピュータに実行させるとともに、
前記画面上で前記オブジェクトを表す画像を、前記選択状態切換ステップによる切換後の選択状態ポインタの位置に移動させ、切換前の選択状態ポインタが前記オブジェクトをドラッグ中であることを示す情報を、前記切換後の選択状態ポインタが前記オブジェクトをドラッグ中であることを示す情報に書き換えるドラッグオブジェクト引き渡しステップをさらに前記コンピュータに実行させる、
ことを特徴とする請求項２に記載のプログラム。
【請求項４】
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示させるコンピュータで用いられる方法であって、
入力装置による移動指示があったとき、前記複数のポインタの相対位置を保ったまま前記複数のポインタを該移動指示に応じて移動させ、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ該操作指示に対応する操作を行う、
ことを特徴とする方法。
【請求項５】
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示させる装置であって、
前記複数のポインタの位置の基準を示すポインタ基準点の座標を格納するポインタ基準点座標格納手段と、
前記複数のポインタの各々について、当該ポインタと前記ポインタ基準点との相対座標を格納する相対座標格納手段と、
入力装置による移動指示があったとき、前記ポインタ基準点座標格納手段に格納された座標を、該移動指示の移動ベクトルを加算することにより更新し、前記複数のポインタの各々について、前記相対座標格納手段から前記相対座標を読み込み、更新された前記ポインタ基準点の前記座標と該相対座標を加算することにより当該ポインタの実座標を算出し、当該ポインタを前記画面上の該実座標の位置に移動させる移動手段と、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ、該操作指示に対応する操作を行う操作実行手段と、
を備えることを特徴とする装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ポインティングデバイスよるポインタ操作に関する。
【背景技術】
【０００２】
コンピュータの画面操作・指示入力装置としてポインティングデバイスが広く使われている。ポインティングデバイスにはマウス、トラックパッド、トラックボール、タッチスクリーンなどがある。いずれも、画面に表示される１つのポインタ（マウスポインタまたはマウスカーソルなどともいう）をユーザの指示にしたがって移動させ、マウスボタン押下（クリック）や画面タッチなどの操作によって画面上の指示位置を決定し操作するものである。
【０００３】
ところで、各種のコンピュータシステムが高度化するにつれ、システムの画面構造もオペレータ（ユーザ）の操作も複雑なものになってきている。例えば、電子カルテシステムなどでは、より多くの情報を表示するために画面が大型化し、複数のディスプレイを連結して利用することもある。画面上には様々な情報が詰め込まれ、多くのボタン、アイコン、入力欄などが画面上に並び、オペレータの操作パターン（次の処理分岐、処理順序）も複雑になっている。
【０００４】
オペレータは操作を行う度に、現在のポインタの位置から次の指示位置まで、ポインティングデバイスなどを用いてポインタを移動させる必要がある。複雑化した画面構造のシステムにおいてオペレータが一連の処理を行うためには、画面上のあらゆる位置に配置されたボタンなどにポインタを移動させる必要がある。しかし、その移動距離が長ければ長いほど、ポインタの移動に時間がかかり、作業効率が悪化し、オペレータはストレスを感じている。しかも、そのような長距離のポインタの移動は、頻繁に生じ得る。
【０００５】
かかる課題に対して、画面上に複数のポインタを配し、操作対象（ボタンなど）に近いポインタを利用して指示位置を決定し操作することが考えられる。
複数のポインタを利用した操作方式自体は、特許文献１や特許文献２に開示されている。特許文献２はさらに、各ポインタの形状を異ならせ、視認により区別可能としている。ただし、これらの文献は、複数のユーザが同一コンピュータ上でそれぞれポインティングデバイスを利用して作業を行う場合に、コンピュータが、各ユーザに対応する複数のポインタを画面上に表示し、各ポインタに対応する操作をそれぞれ行う方式に関するものである。つまり、各ユーザに対応するポインタは各ユーザによって独立に操作される。
【０００６】
しかし、１人のユーザが１台のコンピュータで操作する場合は、例えば５個のポインタを利用するとしても、ユーザがマウスなどのポインティングデバイスを５つ使い、それぞれに対する処理をコンピュータに行わせるのは現実的ではない。ユーザは１つのポインティングデバイスのみを使うのが自然である。
【０００７】
しかし、この場合、ユーザが例えばマウスでクリックしたときに、全てのポインタに対してクリック操作が実行されたものとしてコンピュータが処理を行うと、不都合が生じることがある。例えば、複数のポインタがそれぞれ異なるアイコン上にある場合、ユーザはクリックによってそのうちの１つのアイコンを選択したいのに、複数のアイコンが選択されてしまうという不都合が生じる。そこで、所望の１つのポインタのみをアクティブな状態とし、アクティブなポインタに対してのみクリック操作が行われたものとして処理を行う必要がある。しかし、今度は、どのようにしてアクティブなポインタを指定するのか、つまり、どのようにしてアクティブな状態とアクティブでない状態を切り換えるのか、という問題が生じる。
【０００８】
特許文献３は、そのような問題を解決するために、ユーザに特定のキー操作を行わせる例である。特許文献３では、主カーソルと補助カーソルが設けられている（カーソルはポインタに該当し、主カーソルのみがアクティブである）。ユーザが所定のキーを押すと、主カーソルと補助カーソルが切り換えられる。カーソルの移動は主カーソルに対してのみ行われ、操作指示は主カーソルの位置に対してなされたものとして処理される。補助カーソルが複数ある場合は、所定のキーが押される度に、所定の順序にしたがっていずれかのカーソルを主カーソルとして選択する。
【０００９】
特許文献３の手法では、主カーソルと補助カーソルが独立に移動される。よって、ユーザは、どの補助カーソルが次の操作対象に近いのか、どの補助カーソルを次に主カーソルとして選択すべきかを考えるのに、各カーソルの位置を頭に記憶したり画面上で探したりする必要がある。さらに、補助カーソルが複数ある場合、所望のカーソルを主カーソルとして指定するためには、何回も所定のキーを押さなくてはならない。このようなユーザの負担は、カーソルの個数の増加につれて増える。一方、画面が大型化し、画面構造も複雑化したシステムにおいて、ポインタの移動距離を減らすためには、ある程度の個数のポインタが画面上に適当に分散されて配置されていることが好ましい。しかし、特許文献３の手法を採用すると、ユーザの負担との兼ね合いで、ポインタの個数に制約を受けてしまう。
【特許文献１】特開平５−１０８７８３号公報
【特許文献２】特許３７４４４１８号公報
【特許文献３】特開平８−２４９１２６号公報
【発明の開示】
【発明が解決しようとする課題】
【００１０】
本発明の課題は、長距離のポインタ移動によるユーザの負担を減らすために、複数のポインタを利用可能とするとともに、ポインタの個数が多くてもユーザが容易にアクティブなポインタを指定することができるようにすることである。
【課題を解決するための手段】
【００１１】
上記の課題を解決するために、本発明では、１つの選択状態ポインタと１つ以上の非選択状態ポインタとを含む複数のポインタを画面に表示する。そして、ポインティングデバイスからの移動指示があると、それらの複数のポインタを、相対位置を保ったまま移動指示に応じて移動させる。具体的には、複数のポインタの位置の基準を示すポインタ基準点を設け、複数のポインタの各々について当該ポインタとポインタ基準点との相対座標を予め記憶しておく。そして、移動指示があったときは、当該移動指示の移動ベクトルを加算することによりポインタ基準点の座標を更新し、複数のポインタの各々について、更新後のポインタ基準点の座標と相対座標から実座標を算出してその位置に当該ポインタを移動させる。また、クリックなどの操作指示が行われたとき、選択状態ポインタが示す画面上の指示位置に対してのみ、その操作指示に対応する操作を行う。つまり、選択状態ポインタは移動指示と操作指示の両方に反応するアクティブなポインタであり、非選択状態ポインタは、移動指示には反応するが操作指示には反応しないポインタである。
【００１２】
また、ユーザが選択状態ポインタを切り換えられるようにするために、まず、ポインティングデバイスによる移動指示の方向と回数の組み合わせにより定義される選択指示パターンを、各ポインタに対して、それぞれ異なるように予め定めておく。そして、ポインティングデバイスからの移動指示がいずれかの選択指示パターンに合致したとき、その選択指示パターンに対応するポインタを選択状態とし、それ以外のポインタを非選択状態とする。
【００１３】
また、ポインタ基準点から各ポインタへの方向が各々異なるようにしておき、その方向により一意に定まる方向（例えば、その方向自体や、その方向と１８０度逆の方向など）を選択指示パターンの定義に利用してもよい。また、ポインタ基準点から各ポインタへの方向をユーザが視認可能な画像（例えば、その方向の矢印形状の画像）で各ポインタを表示することが好ましい。
【００１４】
さらに、選択状態ポインタを用いてオブジェクトをドラッグしているときに、いずれかのポインタに対応する選択指示パターンに合致した移動指示がなされたときは、選択状態ポインタを切り換えるだけでなく、ドラッグ中のオブジェクトを切換後の選択状態ポインタに引き渡し、切換後の選択状態ポインタでドラッグを続けられるようにすることが望ましい。
【００１５】
また、ポインタの配置パターンを、ユーザが任意に作成・登録し、切り換えられるようにすることが望ましい。
【発明の効果】
【００１６】
本発明によれば、ユーザは、自分が指示したい位置に近いポインタを見つけ、そのポインタを指示位置まで移動させて選択状態にし、指示位置で所望の操作を行えば良い。あるいは、先にそのポインタを選択状態にしてから指示位置まで移動させても良い。いずれにしろ、長距離の移動が不要となる。
【００１７】
また、本発明では、各ポインタの位置を個別にユーザが記憶しておく必要もなく、ユーザは指示したい位置に近いポインタを容易に見つけられる。ポインタの表示画像を工夫した実施形態では、ある１つのポインタを見れば、それが全体の中でどの位置にあるのか、他のポインタはどの方向にあるのか、ということを直感的にユーザが把握可能である。よって、ユーザがより容易に目的の位置に近いポインタを見つけることができる。
【００１８】
以上から、ユーザは素早く操作することができ、従来のシステムで感じていたストレスが解消される。
また、本発明における選択状態ポインタの切換は、ポインタの数が増えても操作が複雑化しない。さらに、選択指示パターンの定義の仕方によっては、各ポインタに対する選択指示パターンをユーザが直感的に把握可能なため、ユーザは各選択指示パターンを覚えておく必要もない。
【発明を実施するための最良の形態】
【００１９】
以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、以下の説明ではポインティングデバイスとしてマウスを利用する場合を例として説明するが、その他のポインティングデバイスを利用する場合も同様である。
【００２０】
以下では、まず画面表示例を説明し、それを実現するためのシステム構成、データ構成、処理内容について順に説明する。
図１は、本発明によるポインタの連動と切換の例を説明する図である。図１では、ポインタＰａ（１０２）、ポインタＰｂ（１０３）、ポインタＰｃ（１０４）という３つのポインタを利用する場合を例として説明する。以下では、この３つのポインタをまとめてポインタ群ともいう。
【００２１】
図１の（ａ）で、画面１００には、ボタン１（１０５）、ボタン２（１０６）、ボタン３（１０７）というオブジェクトが表示されている。また、ポインタＰａ（１０２）、ポインタＰｂ（１０３）、ポインタＰｃ（１０４）が表示されている。このうちポインタＰｂ（１０３）が選択状態ポインタである。ポインタＰａ（１０２）とポインタＰｃ（１０４）は非選択状態ポインタである。図１では、選択状態ポインタを太い矢印で示し、非選択状態ポインタを細い矢印で示している。例えばユーザがマウスをクリックした場合、そのクリックに対応する操作は選択状態ポインタＰｂ（１０３）の指示位置に対してなされる。
【００２２】
また、これら３つのポインタの指示位置により形成される三角形の内部には、ポインタ基準座標ＢＡＳＥ（１０１）が設定されている。ポインタ基準座標ＢＡＳＥ（１０１）の位置は、例えば、３つのポインタの指示位置により形成される三角形の重心に設定してもよい。しかし、実際の画面では、図１の（ｂ）に示すように、ポインタ基準座標ＢＡＳＥ（１０１）は非表示である。
【００２３】
また、本実施形態では、各ポインタは矢印形状の画像で表現されているが、矢印の向きは、ポインタ基準座標ＢＡＳＥ（１０１）からそれぞれのポインタへの方向と一致するように設定されている。また、本発明では各ポインタ同士の相対位置が保たれる。よって、ユーザは、ある１つのポインタを見た場合、その矢印の向きから、そのポインタからポインタ基準座標ＢＡＳＥ（１０１）への向きや、そのポインタがポインタ群の中でどの方向に位置するポインタなのか、他のポインタはどの方向に位置しているか、などを容易に把握することができる。
【００２４】
例えば、たまたまポインタＰａ（１０２）が目に入れば、その矢印の向きから、ポインタＰａ（１０２）が全体の中で左下方向に位置していると直感的に理解可能である。また、ポインタＰａ（１０２）の矢印と逆の方向を見ることにより、ポインタＰｂ（１０３）やポインタＰｃ（１０４）を容易に見つけることができる。そのため、ユーザは、所望のオブジェクト（例えばボタン１（１０５））に最も近いポインタを容易に見つけることが可能である。
【００２５】
図１の（ｃ）から（ｅ）は、ユーザがボタン１（１０５）をクリックしたい場合を例として、本発明によるポインタの連動と切換を示している。図１の（ｂ）から分かるとおり、ボタン１（１０５）に最も近く、最も移動距離が短くて済むポインタはポインタＰｃ（１０４）である。上述のとおり、ユーザは、画面１００を見ただけで容易にそのことを把握可能である。
【００２６】
そこで、ユーザはマウスを用いてポインタＰｃ（１０４）をボタン１（１０５）の位置に移動させる。本発明ではこの時、ポインタＰｂ（１０３）とポインタＰａ（１０２）も連動して移動する。つまり、マウスによる移動指示にしたがって、３つのポインタが相対位置を保ったまま移動する。後述するように、非表示のポインタ基準座標ＢＡＳＥ（１０１）は、相対位置を保って移動させるために利用される。ここで、ポインタ基準座標ＢＡＳＥ（１０１）も、非表示ではあるが、ともに移動している。
【００２７】
ポインタＰｃ（１０４）をボタン１（１０５）の位置まで移動させたら、ユーザは、ポインタＰｃ（１０４）を選択状態にするための操作を行う。本発明では、所定の選択指示パターンに合致するマウスの操作をユーザが行うことにより、選択状態ポインタを切り換える。本実施形態での選択指示パターンとは、ポインタ基準座標ＢＡＳＥ（１０１）から選択状態にしたいポインタへの方向と同じ方向に、所定の回数（例えば２回）、マウスによる移動指示を行うことである。本実施形態では、ポインタ基準座標ＢＡＳＥ（１０１）から各ポインタへの方向は、そのポインタの矢印の向きと同じである。よって、選択状態にしたいポインタ（ここではポインタＰｃ（１０４））の矢印の向きに所定の回数ユーザがマウスを動かせば、そのポインタが選択状態となり、残りのポインタは非選択状態となる。例えば所定の回数が２回の場合は、選択状態にしたいポインタの矢印の方向と同じ方向にマウスを小さく２往復させるつもりで動かせば（図１の（ｄ））、１往復半したところで選択状態ポインタが切り換わる（図１の（ｅ））。もちろん、選択状態にしたいポインタの矢印の方向と同じ方向にマウスを動かし、１度停止して、もう１度その方向に動かしても、同様に選択状態ポインタが切り換わる。
【００２８】
選択状態ポインタを切り換える操作を行うと、図１の（ｅ）に示すように、画面１００上でも、ポインタＰｃ（１０４）が選択状態を示す太い矢印で表示され、ポインタＰａ（１０２）とポインタＰｂ（１０３）が非選択状態を示す細い矢印で表示されるので、ユーザは、切換操作が成功したか否かを容易に確認することができる。ユーザは、所望のポインタＰｃ（１０４）が選択状態になっており、その指示位置がボタン１（１０５）であると目で確認したら、マウスをクリックする。これにより、ユーザの所望の操作が実行される。
【００２９】
なお、実施の形態によっては、選択状態ポインタがポインタＰｂ（１０３）からポインタＰｃ（１０４）へ切り換わる際、ポインタＰｂ（１０３）からポインタＰｃ（１０４）に向かって移動する何らかのアニメーション表示をさらに行ってもよい。このようにすることで、切換操作が成功したか否かをユーザがさらに容易に視認することができる。
【００３０】
また、上記の例ではポインタＰｃ（１０４）をボタン１（１０５）の位置に移動させた後、選択状態ポインタを切り換えるとして説明したが、先に切り換えてから移動するのでも構わない。
【００３１】
図２は、本発明によるドラッグオブジェクトの引き渡しの例を説明する図である。図２は、選択状態ポインタを用いてオブジェクトをドラッグしている最中に、選択状態ポインタが切り換えられた場合、ドラッグオブジェクトを新しく選択されたポインタに引き渡すことを示している。
【００３２】
図２の（ａ）において、画面１００には、ポインタＰａ（１０２）、ポインタＰｂ（１０３）、ポインタＰｃ（１０４）という３つのポインタがあり、このうちポインタＰｂ（１０３）が選択状態である。選択状態ポインタＰｂ（１０３）を用いて、マウスのクリックなどによりドラッグ対象のアイコン１０８を選択し、移動方向１０９の矢印で示される移動先の目標点１１０までドラッグしてドロップする場合を例として説明する（もちろん、アイコン以外の任意のオブジェクトのドラッグ・アンド・ドロップ操作に関しても同様である）。
【００３３】
ポインタＰｂ（１０３）を用いてドラッグし始めると、１つのポインタを用いる従来の方式と同様に、図２の（ｂ）に示すようなドラッグ中のアイコン１１１が表示される。
ところで、ドラッグ対象のアイコン１０８に最も近いポインタはポインタＰｂ（１０３）だが、移動先の目標点１１０に最も近いポインタは、ポインタＰａ（１０２）である。そこで、図２の（ｃ）において、ドラッグ操作の移動距離を少なくするためには、選択状態ポインタをポインタＰｂ（１０３）からポインタＰａ（１０２）に切り換えるとともに、ポインタＰｂ（１０３）からポインタＰａ（１０２）にドラッグオブジェクトを引き渡す必要がある。本発明では、図１で説明したようなポインタ切換操作をユーザが行うと、切換前に選択状態だったポインタ（この例ではポインタＰｂ（１０３））がオブジェクトをドラッグ中だったか否かを判定し、ドラッグ中であれば、ドラッグオブジェクトを新しく選択状態になったポインタ（この例ではポインタＰａ（１０２））に引き渡す処理が行われる。これにより、ユーザはポインタＰａ（１０２）をわずかに移動させるだけで、ドラッグ中のアイコン１１１を移動先の目標点１１０にドロップすることができる。
【００３４】
なお、実施の態様によって、ドラッグオブジェクトを引き渡す際に、ドラッグ中のアイコン１１１がポインタＰｂ（１０３）からポインタＰａ（１０２）に瞬間的に移動したように表示してもよく、ポインタＰｂ（１０３）からポインタＰａ（１０２）に向かってドラッグ中のアイコン１１１が移動するアニメーション表示を行ってもよい。アニメーション表示を行うことにより、ドラッグオブジェクトの引き渡しや選択状態ポインタの切換を、ユーザがより容易に視認することができる。
【００３５】
図３は、本発明による複数のポインタの配置パターンの切換の例を説明する図である。複数のポインタをどのような配置で画面上に分散させたら効率的であるかは、ユーザの状況（作業画面の構成、ユーザの癖や好み）によって異なる。そこで、複数の配置パターンを登録しておき、登録されたものの中から随時ユーザが最も使いやすい配置を選択できるようにすることが好ましい。
【００３６】
例えば、図３の（ａ）の画面１００には、ボタン１（１０５）、ボタン２（１０６）、ボタン３（１０７）という３つのボタンと、ポインタＰａ（１０２）、ポインタＰｂ（１０３）、ポインタＰｃ（１０４）という３つのポインタが表示されている。この図には、実際には画面１００に表示されないポインタ基準座標ＢＡＳＥ（１０１）も示してある。
【００３７】
ところで、図３の（ａ）におけるボタンの配置には偏りがある。例えば、ボタン１（１０５）やボタン２（１０６）には、比較的近くにポインタＰｃ（１０４）が存在するが、ボタン３（１０７）を操作しようとすると、最も近いポインタＰｂ（１０３）でもある程度の距離を移動させる必要がある。また、ポインタＰａ（１０２）はいずれのボタンからも遠いため、有効に利用されそうにない。
【００３８】
このような構成の作業画面で、この３つのボタンを頻繁に操作する場合、図３の（ａ）の配置パターンよりも、図３の（ｂ）の配置パターンの方が、作業全体としてのマウスの移動距離を少なくすることができる。図３の（ｂ）の配置パターンでは、３つのボタンのそれぞれの近傍に１つずつポインタが存在するような配置になっている。
【００３９】
そこで、本発明の好ましい実施形態においては、図３の（ａ）や（ｂ）のようにいくつかの配置パターンを登録しておき、ユーザが随時、画面構成に見合った使いやすい配置パターンを切り換えて使えるようにしている。
【００４０】
詳しくは後述するが、ポインタ自体の座標は移動指示によって常に変動するため、このような配置パターンとして登録しておくべき情報は、各ポインタおよびポインタ基準座標ＢＡＳＥ（１０１）の相対的な位置関係である。また、ポインタ群の初期表示位置をさらに登録しておくことが望ましい。
【００４１】
なお、図３ではどちらの配置パターンのポインタ数も同じだが、もちろん、ポインタの数もユーザが使いやすいように任意に設定可能とすることが望ましい。
図４は、本発明の一実施形態におけるシステム構成図である。図４では機能別にブロックを表示しているが、実施の形態においては、図４の異なるブロックの機能が同一のハードウェア（ＣＰＵ（Central Processing Unit）、メモリ、ハードディスクなど）により実現されてもよい。
【００４２】
本発明を実施するコンピュータ２００は、通常のオペレーティングシステム２０１がインストールされており、オペレーティングシステム２０１中の画面表示機能２０２やポインティングデバイス制御機能２０３を本発明で利用する。ここで画面表示機能２０２とは、画面上のどこに何を表示するかの指示にしたがって画面表示を行う機能である。また、ポインティングデバイス制御機能２０３とは、ポインティングデバイスからの入力を監視し、各種プログラムがポインティングデバイスからの入力をイベントとして検知することができるようにする機能である。これにより、各種プログラムは、例えば、マウスによる移動指示が行われたらＸ方向とＹ方向それぞれの移動距離を、マウスがクリックされたらクリックされたということを、それぞれ検知することが可能となる。
【００４３】
本発明で利用する各種の情報には、基本設定情報２０４、前回停止位置情報２０５、ポインタ相関情報２０６、配置パターン情報２０７、配置パターン詳細情報２０８がある。これらの情報は、コンピュータ２００のハードディスクに格納されたものがメモリに読み出されて使われる場合もあり、プログラムの実行によって生成されてメモリ上に記憶される場合もある。物理的な格納場所は本発明と直接関係がないので、図４では情報の物理的な格納場所を示していない。情報の詳細は後述する。
【００４４】
図中に太枠で示したのが、本発明の処理を行う各処理部である。具体的には、画面出力処理部２０９、マウス操作キャプチャ部２１０、ポインタ切換判断処理部２１１、操作モード切換処理部２１２、ポインタ数編集処理部２１３、配置パターン切換処理部２１４、新規配置パターン登録処理部２１５である。これらの動作はフローチャートとあわせて後述する。
【００４５】
本発明によるポインタの連動と切換の制御は、マウス操作キャプチャ部２１０とポインタ切換判断処理部２１１により実現される。マウス操作キャプチャ部２１０は、オペレーティングシステム２０１内のポインティングデバイス制御機能２０３を利用している。操作モード切換処理部２１２、ポインタ数編集処理部２１３、配置パターン切換処理部２１４、新規配置パターン登録処理部２１５は、ユーザの便宜を図るための付加的機能を実現する処理部である。画面出力処理部２０９は他の処理部による処理を行った後の画面出力を行う処理部であり、オペレーティングシステム２０１内の画面表示機能２０２を利用している。
【００４６】
図５は、図４に示した基本設定情報２０４の例を示す図である。基本設定情報２０４は、本発明のプログラム自体の基本設定を示す情報なので、図５のように表形式で表現した場合、データは１行のみである。図５には、「操作モード」、「切換回数」、「無操作監視時間」という３つの列がある。
【００４７】
「操作モード」は、現在の操作モードを示し、ユーザからの明示的な指示により随時変更される項目である。操作モードには、ポインティングデバイスから入力された移動指示を、画面上の全ポインタに反映する「集団操作モード」と、選択状態ポインタのみに反映する「独立操作モード」がある。２つのモードの意味や動作は後述する。
【００４８】
「切換回数」は、選択状態ポインタが切り換わるまでに必要な、同一方向への移動指示の回数を示す。例えば図１の（ｄ）では、この回数が２回の例について述べた。ユーザからの明示的な指示により切換回数を変更可能としてもよい。例えば切換回数が１回だと、偶然の操作によって選択状態ポインタが切り換わる可能性が高まる。しかし、あまり大きな値を設定するとユーザの負担が大きくなるので、実施の態様に応じて適切な値を設定する必要がある。
【００４９】
「無操作監視時間」は、マウスの無操作状態が続いた場合に、操作履歴をクリアする時間を秒数で示したものである。ユーザからの明示的な指示により無操作監視時間を変更可能としてもよい。
【００５０】
図５の例では、切換回数が３で無操作監視時間が２である。この場合のポインタ切換の例を、図６を参照して説明する。
図６の例では、（ａ）に示したように、ポインタ基準座標ＢＡＳＥ（１０１）に対して上、右、下、左の位置にポインタＰｄ（１１２）、ポインタＰｅ（１１３）、ポインタＰｆ（１１４）、ポインタＰｇ（１１５）があるものとし、ポインタＰｅ（１１３）が選択状態とする。基本設定情報２０４の内容が図５のとおりの場合、ポインタＰｄ（１１２）を選択状態にするためには、ポインタ基準座標ＢＡＳＥ（１０１）からポインタＰｄ（１１２）への方向、つまり上向きに３回マウスを動かす必要がある。ただし、上向きの移動指示が連続して行われる必要はなく、例えば、マウスを往復移動させるなど、上向きの移動指示の間に他の方向への移動指示を挟んでもよい。
【００５１】
図６の（ｂ）は、マウスを往復移動させて選択状態ポインタを切り換える例である。ステップＳ１において、マウスによる移動指示の回数は初期状態の０である。ステップＳ２からステップＳ７で、ユーザがマウスを上、下、上、下、上、下と３往復させたとする。ポインタＰｄ（１１２）が選択状態になるか否かの判定は、上向きの移動指示の回数により判定される。図６の（ｂ）の表にはその回数が示してある。
【００５２】
ユーザはマウスを往復移動させるが、上向きの移動のときのみ、ポインタＰｄ（１１２）の選択指示パターンに対応する移動指示の回数として数えられる。よって、ステップＳ６で２往復半した（３回目の上向きの移動指示を行った）時点で、図５の切換回数で定められた回数（３回）に達し、ポインタＰｄ（１１２）が選択状態となる。ただし、図５では無操作監視時間が２秒と設定されているので、ステップＳ２とＳ３、Ｓ３とＳ４、Ｓ４とＳ５、Ｓ５とＳ６の間は各々２秒以下でなくてはならない。
【００５３】
ところで、このようにマウスの往復移動によって選択状態ポインタを切り換えようとする場合、図６の（ａ）のように、１８０度逆向きのポインタが存在していると、往復移動をどちらの向きから始めるかによって、どのポインタが選択状態になるかが異なる。
【００５４】
例えば、図６の（ａ）において、ポインタＰｆ（１１４）はポインタ基準座標ＢＡＳＥ（１０１）に対して下の方向に位置している。よって、下向きの移動指示の回数が３回に達したら、ポインタＰｆ（１１４）が選択状態となる。図６の（ｂ）のステップＳ２からステップＳ７で、ユーザがマウスを上、下、上、下、上、下と３往復させたとき、ポインタＰｆ（１１４）に対しては、下向きの移動のみがカウントされる。よって、ステップＳ５で２往復終えた時点で回数は２、ステップＳ６で２往復半した時点でも回数は２のままである。よって、このステップＳ６で回数が先に３に達したポインタＰｄ（１１２）が選択状態となり、ポインタＰｆ（１１４）は非選択状態のままである。逆に、ユーザが往復移動を下、上、下、上、下、上の順で行っていれば、ポインタＰｄ（１１２）ではなくポインタＰｆ（１１４）が選択状態となる。
【００５５】
なお、詳しくは後述するが、ステップＳ６で選択状態ポインタを切り換えると、その時点で全てのポインタに対する回数のカウントは０にクリアされるので、ステップＳ７の下向きのマウス移動指示は、改めて１から数えなおすことになる。
【００５６】
また、選択状態ポインタを切り換えるためには、別にマウスを往復移動させる必要はない。例えば、ユーザの好みなどによっては、図６の（ｃ）に示すように、ポインタＰｄ（１１２）を選択したいときは、単純に上への移動指示を３回連続して行うのでもよい。
【００５７】
図７は、図４に示した前回停止位置情報２０５の例を示す図である。前回停止位置情報２０５も、表形式で表現した場合にはデータが１行のみとなる。図７には「前回Ｘ座標」、「前回Ｙ座標」という２つの列がある。
【００５８】
前回停止位置情報２０５は、移動指示の度に変更され、マウスが停止した時点でのポインタ基準座標ＢＡＳＥ（１０１）の座標を表す情報である。すなわち、「前回Ｘ座標」は、前回マウスが停止した時のポインタ基準座標ＢＡＳＥ（１０１）のＸ座標を示し、「前回Ｙ座標」は、前回マウスが停止した時のポインタ基準座標ＢＡＳＥ（１０１）のＹ座標を示す。前回停止位置情報２０５を利用することにより、マウスによる移動指示が行われる度に、その移動指示の方向を把握することができる。
【００５９】
図８は、図４に示したポインタ相関情報２０６の例を示す図である。ポインタ相関情報２０６は、図３に示したようないくつかのポインタの配置パターンのうち、現在使われている配置パターンに含まれるポインタとポインタ基準座標ＢＡＳＥ（１０１）に関する情報である。よって、図８のような表形式で表した場合、データは、（現在使われている配置パターンに含まれるポインタの数＋１）行である。図８には、「ポインタ名」、「相対Ｘ座標」、「相対Ｙ座標」、「選択状態フラグ」、「Ｘ方向成分」、「Ｙ方向成分」、「操作発生回数」、「リンクパス」という８つの列がある。このうち、「選択状態フラグ」、「操作発生回数」、「リンクパス」が、ユーザによるマウス操作に応じて随時書き換えられる。
【００６０】
「ポインタ名」は、各配置パターン内でポインタおよびポインタ基準座標ＢＡＳＥ（１０１）を一意に識別するコードである。例えば、図８からは、ポインタ基準座標ＢＡＳＥ（１０１）に対するコードが「ＢＡＳＥ」であり、他に「Ｐａ」、「Ｐｂ」、「Ｐｃ」という３つのポインタがこの配置パターンに含まれることが分かる。
【００６１】
「ポインタ名」が「ＢＡＳＥ」の行は特別な行であり、「選択状態フラグ」、「Ｘ方向成分」、「Ｙ方向成分」、「操作発生回数」、「リンクパス」は使わない。「相対Ｘ座標」と「相対Ｙ座標」も他の行とは異なる意味で利用する。具体的には、「相対Ｘ座標」と「相対Ｙ座標」は、ポインタ基準座標ＢＡＳＥ（１０１）の実座標の、それぞれ水平方向成分と垂直方向成分を示す。
【００６２】
「ポインタ名」が「ＢＡＳＥ」以外の行は、各ポインタに対応する行である。これらの行において、「相対Ｘ座標」と「相対Ｙ座標」は、当該ポインタのポインタ基準座標ＢＡＳＥ（１０１）に対する相対座標のそれぞれ水平方向成分と垂直方向成分を示す。
【００６３】
「選択状態フラグ」は、そのポインタが選択状態か否かを識別するフラグであり、０が非選択状態、１が選択状態を示す。選択状態ポインタが１つだけ存在し、残りのポインタは全て非選択状態である。
【００６４】
「Ｘ方向成分」と「Ｙ方向成分」は、ポインタ基準座標ＢＡＳＥ（１０１）からそのポインタへの方向と同じ方向の単位ベクトルの、それぞれ水平方向成分と垂直方向成分を示す。「Ｘ方向成分」と「Ｙ方向成分」は、「相対Ｘ座標」と「相対Ｙ座標」から算出することができる。
【００６５】
「操作発生回数」は、Ｘ方向成分とＹ方向成分により表される方向と同じ方向の移動指示が発生した回数を示す。操作発生回数が図５の基本設定情報２０４の切換回数に達したポインタが選択状態に切り換えられる（同時に他のポインタは非選択状態に切り換えられる）。操作発生回数は、図６の（ｂ）や（ｃ）に示した回数に該当し、選択状態ポインタが切り換えられる際などに０にクリアされる。
【００６６】
「リンクパス」は、そのポインタを用いてオブジェクトをドラッグ中のとき（例えば図２の（ｂ）や（ｃ）のとき）、そのオブジェクトへのパスを示す。パスの表現形式は実施の態様に応じて任意の形式を採用することができる。リンクパスはその性質上、選択状態フラグが１の行でのみ意味がある項目である。
【００６７】
図９は、図４に示した配置パターン情報２０７の例を示す図である。配置パターン情報２０７を表形式で表現した場合には、データの数は、登録されているポインタの配置パターンの数である。例えば図３の２つの配置パターンしか登録されていなければ、データは２行のみである。図９には、「パターンコード」、「ＢＡＳＥ初期Ｘ座標」、「ＢＡＳＥ初期Ｙ座標」、「初期表示フラグ」という４つの列がある。
【００６８】
「パターンコード」は、配置パターンを識別する一意のコードである。「ＢＡＳＥ初期Ｘ座標」と「ＢＡＳＥ初期Ｙ座標」は、配置パターンを切り換えた直後のポインタ基準座標ＢＡＳＥ（１０１）の座標の初期値の、それぞれ水平方向成分と垂直方向成分である。「初期表示フラグ」は、本発明のプログラムが起動された直後、最初にデフォルトで選択される配置パターンを指定するフラグである。初期表示フラグが１の配置パターンがデフォルトとして選択される。すなわち、初期表示フラグが１となる行は１行のみで、残りの行では０となる。
【００６９】
図１０は、図４に示した配置パターン詳細情報２０８の例を示す図である。配置パターン詳細情報２０８は、図９の配置パターン情報２０７に登録されている各配置パターンに含まれるポインタとポインタ基準座標ＢＡＳＥ（１０１）に関する詳細情報である。配置パターン詳細情報２０８を表形式で表現した場合には、データの数は、登録されている各配置パターンに含まれるポインタの総数に、登録されている配置パターンの数を足したものとなる（それぞれの配置パターンにおけるポインタ基準座標ＢＡＳＥ（１０１）を含むため）。図１０には、「パターンコード」、「ポインタ名」、「相対Ｘ座標」、「相対Ｙ座標」、「選択状態フラグ」、「Ｘ方向成分」、「Ｙ方向成分」という７つの列がある。
【００７０】
「パターンコード」は、配置パターンを識別する一意のコードであり、図９の配置パターン情報２０７と同様である。「ポインタ名」は、配置パターン内で一意にポインタを識別するコードであり、図８のポインタ相関情報２０６と同様である。「相対Ｘ座標」と「相対Ｙ座標」は、ポインタ名が「ＢＡＳＥ」の行では特に利用されず、それ以外の行では、図８のポインタ相関情報２０６と同様に、当該ポインタのポインタ基準座標ＢＡＳＥ（１０１）に対する相対座標のそれぞれ水平方向成分と垂直方向成分を示す。「選択状態フラグ」は、ポインタ相関情報２０６の選択状態フラグと似ているが、その配置パターンが選択された時に最初にデフォルトで選択状態となるポインタは１、それ以外は０となるフラグである。配置パターンごとに、「選択状態フラグ」が１となる行が１つだけ存在する。「Ｘ方向成分」と「Ｙ方向成分」は、ポインタ名が「ＢＡＳＥ」の行では特に利用されず、それ以外の行では、ポインタ基準座標ＢＡＳＥ（１０１）からそのポインタへの方向と同じ方向の単位ベクトルの、それぞれ水平方向成分と垂直方向成分を示し、ポインタ相関情報２０６と同様である。つまり、「Ｘ方向成分」と「Ｙ方向成分」は、「相対Ｘ座標」と「相対Ｙ座標」から算出することができる。
【００７１】
なお、上記において、説明の便宜上、基本設定情報２０４（図５）、前回停止位置情報２０５（図７）、ポインタ相関情報２０６（図８）、配置パターン情報２０７（図９）、配置パターン詳細情報２０８（図１０）のそれぞれを表形式で表現して説明したが、これらの情報は、表形式以外のデータ形式で表現してもよい。また、表形式のデータとそれ以外の形式のデータを組み合わせてもよい。例えば、前回停止位置情報２０５は、実施の形態によって、本発明のプログラムを実行するコンピュータ２００のＣＰＵ内の特定の２つのレジスタに格納される２つの変数であってもよく、コンピュータ２００のメモリ上の２つの変数でもよい。また、実施の形態によっては、ポインタ相関情報２０６のうちポインタ名、相対Ｘ座標、相対Ｙ座標、Ｘ方向成分、Ｙ方向成分、操作発生回数のみを図８に示したような表形式で表現し、選択状態フラグとリンクパスに相当する内容は、例えば、コンピュータ２００のメモリ上に値が格納される２つの変数により表現してもよい。つまり、図８の表の行数分の選択状態フラグとリンクパスのかわりに、図８の表中で選択状態ポインタに対応する行の番号を記憶する１つの変数と、選択状態ポインタに対応するリンクパスを記憶する１つの変数を利用してもよい。
【００７２】
図１１は、本発明の一実施形態における処理を示すフローチャートである。本発明のプログラムは、ポインティングデバイスの操作に関するものであるから、コンピュータ２００の起動中は常に稼動させることが望ましい。そこで、オペレーティングシステム２０１が起動されると図１１の本発明のプログラムが呼び出され、コンピュータ２００がシャットダウンされるまで本発明のプログラムが実行され続けるものとして、以下では説明する。
【００７３】
図１１の処理全体の流れは、ステップＳ１０１とステップＳ１０２で初期化した後、ステップＳ１０３でイベントの発生を待ち、発生したイベントに応じて各種処理を行ってはステップＳ１０３に戻り、コンピュータ２００をシャットダウンさせるなどの終了指示のイベントが発生するまでそれを繰り返す、という流れである。これは一般的なイベント駆動型のプログラムと同様である。
【００７４】
ステップＳ１０１では、図９の配置パターン情報２０７を検索し、初期表示フラグが１の行を検索する。初期表示フラグが１の行は、デフォルトで選択されるポインタの配置パターンを示す。そしてこの行のパターンコードを変数Ｐｔに記憶する。Ｐｔの値は、物理的にはコンピュータ２００のメモリなどに格納される。Ｐｔの記憶後、ステップＳ１０２に移行する。
【００７５】
ステップＳ１０２では、Ｐｔを引数として与えて配置パターン切換処理を呼び出し、Ｐｔに対応するポインタの配置パターンを画面上に表示する。配置パターン切換処理の詳細は後述する。配置パターン切換処理の実行後、ステップＳ１０３に移行する。
【００７６】
ステップＳ１０３では、所定のイベントの発生を待ち、イベントが発生したらイベントの種類に応じた処理を行う。ユーザからの終了指示イベント（コンピュータ２００をシャットダウンさせる明示的な指示など）が検知された場合、処理を終える。配置パターン切換処理の実行を指示するイベントが検知された場合、ステップＳ１０４に移行する。操作モード切換処理の実行を指示するイベントが検知された場合、ステップＳ１０６に移行する。新規配置パターン登録処理の実行を指示するイベントが検知された場合、ステップＳ１０７に移行する。ポインタ数編集処理の実行を指示するイベントが検知された場合、ステップＳ１０９に移行する。ユーザが何らかのマウス操作を行い、オペレーティングシステム２０１のポインティングデバイス制御機能２０３を通じてマウス操作イベントの発生が検知された場合、ステップＳ１１１に移行する。検知可能なマウス操作の種類には、例えば、移動、移動停止、マウスボタンの押下、ドラッグ開始、ドロップ（ドラッグ終了）などがある。また、ポインティングデバイス制御機能２０３はごく短い周期（例えば０．１秒以下の周期）でマウス操作の発生の有無を監視している。この監視はタイムイベントの一種だが、これもステップＳ１１１に移行するためのトリガとなっている。
【００７７】
なお、本発明によるポインタの連動および選択状態ポインタの切換は、マウス操作イベントまたはタイムイベントが発生したときに実行されるステップＳ１１１の処理により実現されるが、以下では説明の都合上、他の付加的機能から先に説明する。また、上述の配置パターン切換処理、操作モード切換処理、新規配置パターン登録処理、ポインタ数編集処理の実行を指示するイベントとは、具体的には、キーボード上の所定のキーを押す操作や、画面上に表示された所定のメニューの選択指示操作などである。
【００７８】
ステップＳ１０４は、配置パターン切換処理の実行が指示されたときに実行される。よって、ユーザが好みの配置パターンを選択することができるように、図９の配置パターン情報２０７から全行を検索し、コンピュータ２００の画面上にそれらの配置パターンの一覧を表示する。ユーザが配置パターンのうち１つをこの一覧から選択すると、選択された配置パターンのパターンコードを変数Ｐｔに格納する。そしてステップＳ１０５に移行する。
【００７９】
ステップＳ１０５では、Ｐｔを引数として与えて配置パターン切換処理を呼び出す。これはステップＳ１０２と同様であり、詳しい処理は後述する。その後、ステップＳ１０３に戻る。
【００８０】
ステップＳ１０４とステップＳ１０５により、ユーザは、予め登録されている様々な配置パターンの中から、画面構成や作業状況に応じて好みの配置パターンを選ぶことができる。
【００８１】
ステップＳ１０６は、操作モード切換処理の実行が指示されたときに実行される。操作モード切換処理は、図５の基本設定情報２０４の操作モードを書き換える処理である。ユーザは、操作モード切換処理の実行を指示する際、切換後の操作モードも指定する。その指定された操作モードに対応する変数Ｍｏｄｅを引数として与え、ステップＳ１０６では操作モード切換処理を呼び出し、操作モード切換処理が終了するとステップＳ１０３に戻る。
【００８２】
操作モードは、通常は集団操作モードを利用する。集団操作モードでは、移動指示が全ポインタに反映される。つまり、マウスをある方向に動かせば、全部のポインタが同じ方向に同じだけ移動する。一方、独立操作モードでは、移動指示が選択状態ポインタのみに反映される。独立操作モードは、新しい配置パターンを編集する場合など、例外的な場合に利用される操作モードである。
【００８３】
ステップＳ１０７からステップＳ１１０の処理は、どちらか一方の操作モードでのみ実行すべき処理を含む。本実施形態では、ユーザが無意識に間違って指示してしまうのを防ぐため、まずユーザに明示的に操作モードを切り換えさせるようにしている。そのため、ステップＳ１０６の操作モード切換処理を提供している。
【００８４】
ステップＳ１０７は、新規配置パターン登録処理の実行が指示されたときに実行される。新規配置パターン登録処理は、集団操作モードのときのみ実行されるべき処理なので、ステップＳ１０７では、図５の基本設定情報２０４の操作モードを読み込んで現在の操作モードを判断する。そして、現在の操作モードが集団操作モードならステップＳ１０８に移行し、独立操作モードならステップＳ１０３に戻る。
【００８５】
ステップＳ１０８では、新規配置パターン登録処理を呼び出して実行する。新規配置パターン登録処理は、ユーザによって編集されてできた新しい配置パターンを、次回以降に利用可能とするために登録する処理である。処理の詳細と、集団操作モードでしか実行されない理由は、後述する。新規配置パターン登録処理を終えるとステップＳ１０３に戻る。
【００８６】
ステップＳ１０９は、ポインタ数編集処理の実行が指示されたときに実行される。ポインタ数編集処理は、独立操作モードのときのみ実行されるべき処理なので、ステップＳ１０９では、図５の基本設定情報２０４の操作モードを読み込んで現在の操作モードを判断する。そして、現在の操作モードが独立操作モードならステップＳ１１０に移行し、集団操作モードならステップＳ１０３に戻る。
【００８７】
ステップＳ１１０では、ポインタ数編集処理を呼び出して実行する。ユーザは、ポインタ数編集処理の実行を指示する際、ポインタの追加と削除のいずれを行うのかも指定する。ステップＳ１１０では、その指定内容を示す変数ＥｄｉｔＭｏｄｅを引数として与え、ポインタ数編集処理を呼び出す。ポインタ数編集処理は、ユーザが新しい配置パターンを作成するために、ポインタの追加・削除を指示したときに行う処理である。処理の詳細と、独立操作モードでしか実行されない理由は、後述する。ポインタ数編集処理を終えるとステップＳ１０３に戻る。
【００８８】
ステップＳ１１１は、マウスが操作された場合または、マウス操作の有無を監視するタイムイベントが発生した場合に実行される。
マウス操作を追跡し、特定の移動指示（例えば左への移動）がされたときに、アプリケーション（例えばブラウザ）の特定の操作（例えば直前に表示していたＷｅｂページに戻る操作）を実行させる、マウスジェスチャと呼ばれる技術が従来から知られている。マウス操作イベントをトリガとしてステップＳ１１１を呼び出すのも、これと同様である。ただし、呼び出す処理（ステップＳ１１１で行う処理）が、従来にはない処理である。
【００８９】
ステップＳ１１１から呼び出すマウス操作キャプチャ処理により、選択状態ポインタを切り換えたり、マウスの動きに連動させてポインタを画面上で移動させたりしている。詳細は後述する。マウス操作キャプチャ処理を終えるとステップＳ１０３に戻る。
【００９０】
以上のようにして、イベントの発生を検知してはそのイベントに対応する処理を行うことを繰り返す。
なお、図には示していないが、シングルクリックやダブルクリックなど、何らかの操作指示が行われたときも、イベントとして検知される。このとき、選択状態ポインタが示す画面上の指示位置に対してのみ、その操作指示に対応する操作を行う。
【００９１】
つまり、操作指示のイベントが検知されると、本発明のプログラムは以下のように動作する。まず、図８のポインタ相関情報２０６で選択状態フラグが１の行を検索して選択状態ポインタを見つけ、その行の相対Ｘ座標と相対Ｙ座標から選択状態ポインタのポインタ基準座標ＢＡＳＥ（１０１）に対する相対座標を得る。そして、ポインタ名が「ＢＡＳＥ」の行を検索して、その行の相対Ｘ座標と相対Ｙ座標からポインタ基準座標ＢＡＳＥ（１０１）の実座標を得る。ポインタ基準座標ＢＡＳＥ（１０１）の実座標と選択状態ポインタの相対座標から、選択状態ポインタの実座標を算出し、その実座標の位置で操作指示が行われたものとして、対応する操作を実行する。これにより、例えば、選択状態ポインタがあるアイコン上にあり、そこでダブルクリック（操作指示）が行われた場合、そのアイコンに対応するファイルを開くという操作が実行される。
【００９２】
なお、ユーザが任意の配置パターンを好みなどに応じて作成して登録するには、以下の手順で行う必要がある。まず、操作モード切換処理（ステップＳ１０６）により、操作モードを集団操作モードから独立操作モードに切り換える。その後、ポインタ数編集処理（ステップＳ１１０）によってポインタ数を増減させたり、各ポインタを任意の位置に移動させたりして、新たな配置パターンを作成する。作成したら、再度操作モード切換処理（ステップＳ１０６）の実行を指示し、操作モードを独立操作モードから集団操作モードに戻す。そして、新規配置パターン登録処理（ステップＳ１０８）によりその配置パターンを登録する。こうして登録された配置パターンは、随時、配置パターン切換処理（ステップＳ１０５）により利用可能となる。
【００９３】
この手順は多少煩雑だが、後述するとおり、本発明におけるポインタ基準座標ＢＡＳＥ（１０１）に関する前提条件が崩れるのを防ぐためには有効である。
次に、図１２を参照して、図１１のステップＳ１０２およびステップＳ１０５で呼び出されて実行される配置パターン切換処理について説明する。配置パターン切換処理は、引数として切り換えたい配置パターンのパターンコードＰｔを与えられ、呼び出される。また、配置パターン切換処理は、図４の配置パターン切換処理部２１４が実行する。
【００９４】
ステップＳ２０１では、図９の配置パターン情報２０７内でパターンコードがＰｔと等しいレコード（行）を検索する。パターンコードは配置パターン情報２０７内で一意のコードなので、ここでは１つのレコードだけが検索される。検索されたレコードのＢＡＳＥ初期Ｘ座標およびＢＡＳＥ初期Ｙ座標を抽出し、それぞれ変数ＳｔａｒｔＢｘとＳｔａｒｔＢｙに代入してから、ステップＳ２０２に移行する。
【００９５】
ステップＳ２０２では、パターンコードがＰｔと等しいレコードを図１０の配置パターン詳細情報２０８内で検索する。そのようなレコードは図１０に示すように配置パターン詳細情報２０８に複数ある。なぜなら、各配置パターンは、１つ以上のポインタと１つのポインタ基準座標ＢＡＳＥ（１０１）に関する情報により表されるからである。これら検索された複数のレコードをレコード群Ｇｒｐ１として抽出し、コンピュータ２００のメモリなどに内容を記憶してから、ステップＳ２０３に移行する。
【００９６】
ステップＳ２０３では、図８のポインタ相関情報２０６として記憶されているデータを全て削除する。ポインタ相関情報２０６は、現在使われている配置パターンに含まれるポインタとポインタ基準座標ＢＡＳＥ（１０１）に関する情報なので、配置パターン切換処理によって配置パターンを切り換える際には、内容を書き換える。そのために、まず切換前の配置パターンに関する情報をステップＳ２０３で削除する。削除後、ステップＳ２０４に移行する。
【００９７】
ステップＳ２０４では、図８のポインタ相関情報２０６にステップＳ２０２で記憶したＧｒｐ１の内容をコピーする。なお、図１０の配置パターン詳細情報２０８と図８のポインタ相関情報２０６では、データの項目に若干の差異がある。具体的には、図８と図１０の比較から分かるとおり、ポインタ名、相対Ｘ座標、相対Ｙ座標、選択状態フラグ、Ｘ方向成分、Ｙ方向成分の６列は両者で一致しているが、操作発生回数、リンクパスの２列はポインタ相関情報２０６にしかない列である。そこで、前記の６列はＧｒｐ１の内容をそのままポインタ相関情報２０６にコピーし、残りの２列は全レコードに対して適当な初期値を代入する。例えば操作発生回数は０に初期化するのが望ましい。リンクパスは、採用するパスの表現形式に応じて、例えば、空文字列などで初期化する。コピーと初期化の後、ステップＳ２０５に移行する。
【００９８】
ステップＳ２０５では、ステップＳ２０１で記憶したＳｔａｒｔＢｘとＳｔａｒｔＢｙの値を、図８のポインタ相関情報２０６でポインタ名が「ＢＡＳＥ」の行の相対Ｘ座標、相対Ｙ座標にそれぞれコピーする。ポインタ名が「ＢＡＳＥ」の行の相対Ｘ座標と相対Ｙ座標は、ポインタ基準座標ＢＡＳＥ（１０１）の実座標を示すので、これによって、ポインタ基準座標ＢＡＳＥ（１０１）を点（ＳｔａｒｔＢｘ，ＳｔａｒｔＢｙ）に位置させることができる。以上により、ポインタ相関情報２０６が、パターンコードがＰｔの配置パターンの情報に書き換えられたことになるので、ステップＳ２０６に移行する。
【００９９】
ステップＳ２０６では、書き換えられたポインタ相関情報２０６にもとづいて画面に各ポインタを表示するために画面出力処理を呼び出して実行する。画面出力処理の詳細は後述するが、これにより、パターンコードがＰｔの配置パターンの各ポインタが、点（ＳｔａｒｔＢｘ，ＳｔａｒｔＢｙ）にポインタ基準座標ＢＡＳＥ（１０１）が位置した状態で、画面上に表示される。画面出力処理の実行後、配置パターン切換処理は終了する。
【０１００】
なお、別の実施形態では、図９の配置パターン情報２０７のＢＡＳＥ初期Ｘ座標とＢＡＳＥ初期Ｙ座標の列をなくしてもよい。かわりに、図１０の配置パターン詳細情報２０８でポインタ名が「ＢＡＳＥ」の行の相対Ｘ座標と相対Ｙ座標に、配置パターンが切り換わったときのポインタ基準座標ＢＡＳＥ（１０１）の初期座標を記憶すればよい。この場合、ステップＳ２０１とステップＳ２０５は不要となる。
【０１０１】
次に図１３を参照して、図１２のステップＳ２０６で呼び出された画面出力処理について説明する。画面出力処理は、後述のように、操作モード切換処理（図１４）、ポインタ数編集処理（図１６）、マウス操作キャプチャ処理（図１７と図２０）からも呼び出される。また、画面出力処理は図４の画面出力処理部２０９が実行する。
【０１０２】
画面出力処理は画面上に各ポインタを表示する処理だが、図１３では、各ポインタの座標変換（図８のポインタ相関情報２０６の相対Ｘ座標と相対Ｙ座標から実座標を求める）と表示属性の変更のみを行い、一般的な各種表示機能は図４のオペレーティングシステム２０１の画面表示機能２０２を利用して実現している。
【０１０３】
なお、以後のフローチャートで説明する実施の形態において、選択状態ポインタは、非選択状態ポインタよりも高輝度で表示して区別可能にしているとする。また、各ポインタの形状は、ポインタ基準座標ＢＡＳＥ（１０１）からそのポインタへの方向の矢印形状だとする。
【０１０４】
ステップＳ３０１では、ポインタ名が「ＢＡＳＥ」以外のレコード（行）を図８のポインタ相関情報２０６内で検索する。つまり、画面上に表示すべき全ポインタの情報を検索する。これら検索されたレコードをレコード群Ｇｒｐ４として抽出し、ステップＳ３０２に移行する。
【０１０５】
ステップＳ３０２からステップＳ３０８までは繰り返しループを形成しており、レコード群Ｇｒｐ４に含まれる各レコードに対して１回ずつ実行される。
ステップＳ３０２では、レコード群Ｇｒｐ４の全てのレコードについて処理したかどうか判定する。全てを処理し終えていれば判定が「はい」となって、画面出力処理を終了する。それ以外のとき判定が「いいえ」となって、ステップＳ３０３に移行する。
【０１０６】
ステップＳ３０３では、未処理のレコードをＧｒｐ４の中から１つ選んでコンピュータ２００のメモリなどに当該レコードの内容を読み込む。そしてステップＳ３０４に移行する。
【０１０７】
ステップＳ３０４からステップＳ３０６では、ステップＳ３０３で選んだレコード（現在処理中のポインタ）が選択状態ポインタか否かによって、そのポインタの表示属性を設定する。具体的には、ステップＳ３０４でそのレコードの選択状態フラグが１（選択状態ポインタ）か０（非選択状態ポインタ）かを判断し、選択状態ポインタの場合はステップＳ３０５を、非選択状態ポインタの場合はステップＳ３０６をそれぞれ実行する。
【０１０８】
ステップＳ３０５では、現在処理中のポインタが選択状態なので、当該ポインタを高輝度表示に設定し、ステップＳ３０７に移行する。
ステップＳ３０６では、現在処理中のポインタが非選択状態なので、当該ポインタを通常の輝度の表示に設定し、ステップＳ３０７に移行する。
【０１０９】
ステップＳ３０７では、現在処理中のポインタの形状を設定する。本実施形態において、各ポインタの形状は、ポインタ基準座標ＢＡＳＥ（１０１）からそのポインタへの向きの矢印形状である。よって、ステップＳ３０３で読み込んだデータのＸ方向成分とＹ方向成分によって示される単位ベクトルと同じ方向の矢印を、当該ポインタを表す形状として設定する。設定後、ステップＳ３０８に移行する。
【０１１０】
ステップＳ３０８では、ステップＳ３０３で読み込んだデータの相対Ｘ座標と相対Ｙ座標を実座標に変換し、その座標に現在処理中のポインタを表示する。
実座標への変換は、次のように行う。図８のポインタ相関情報２０６内でポインタ名が「ＢＡＳＥ」の行を検索し、その相対Ｘ座標と相対Ｙ座標として記憶されている座標をコンピュータ２００のメモリなどに読み込む。この座標はポインタ基準座標ＢＡＳＥ（１０１）の実座標なので、これに現在処理中のポインタの相対Ｘ座標と相対Ｙ座標を加算し、現在処理中のポインタの実座標を算出する。
【０１１１】
そして、図４のオペレーティングシステム２０１の画面表示機能２０２を利用して、算出した実座標の位置に、設定済みの表示属性と形状で、現在処理中のポインタを表示する。表示後、ステップＳ３０２に戻る。
【０１１２】
以上のようにして、Ｇｒｐ４に含まれる全てのポインタについて処理し終えたら、画面出力処理を終了する。
次に、図１４を参照して、図１１のステップＳ１０６で呼び出されて実行される操作モード切換処理について説明する。操作モード切換処理は、切り換えたい操作モードＭｏｄｅを引数として与えられ、呼び出される。また、操作モード切換処理は図４の操作モード切換処理部２１２が実行する。
【０１１３】
ステップＳ４０１では、図５の基本設定情報２０４から現在の操作モードを抽出し、変数ＮｏｗＭｏｄｅに代入し、ステップＳ４０２に移行する。
ステップＳ４０２では、ＭｏｄｅとＮｏｗＭｏｄｅが等しいか否かを判定する。等しい場合、判定は「はい」となり、操作モードを変更する必要がないため、操作モード切換処理を終了する。等しくない場合、判定は「いいえ」となり、ステップＳ４０３に移行する。
【０１１４】
ステップＳ４０３では、Ｍｏｄｅが集団操作モードか否かを判定する。Ｍｏｄｅが集団操作モードの場合（独立操作モードから集団操作モードに切り換える場合）、判定は「はい」となり、ステップＳ４０４に移行する。Ｍｏｄｅが独立操作モードの場合（集団操作モードから独立操作モードに切り換える場合）、判定は「いいえ」となり、ステップＳ４０８に移行する。
【０１１５】
ステップＳ４０４からステップＳ４０７は、独立操作モードから集団操作モードに切り換える場合にのみ実行される。
ステップＳ４０４では、図８のポインタ相関情報２０６でポインタ名が「ＢＡＳＥ」以外の全ての行の相対Ｘ座標と相対Ｙ座標をコンピュータ２００のメモリなどに読み込み、図１３のステップＳ３０８と同様の方法で全ポインタの実座標を算出する。算出後、それらの実座標から基準点の実座標を算出する。ここで基準点とは、操作モード切換処理後、新たにポインタ基準座標ＢＡＳＥ（１０１）とする点を指す。基準点の実座標は、実施の態様に応じて所定の方法により算出する。
【０１１６】
例えば、基準点のＸ座標は各ポインタのＸ座標（実座標）の算術平均、基準点のＹ座標は各ポインタのＹ座標（実座標）の算術平均、としてもよい。また、Ｎ個のポインタにより形成されるＮ角形の重心を基準点としてもよい。なお、基準点は、ポインタの総数がＮのとき、全ポインタの位置により定まるＮ角形の内部にあることが好ましいので、そうなるように基準点の座標の算出方法を定めることが望ましい。基準点がＮ角形の内部にあると、本実施形態のように各ポインタを矢印形状で表現した場合に、一般的に各矢印が基準点に対して放射状に外側を向く（図１など）。よって、ユーザが画面上であるポインタを見たときに、ポインタ群内でのそのポインタの位置などを視認することが容易だという利点がある。基準点の座標の算出後、ステップＳ４０５に移行する。
【０１１７】
ステップＳ４０５では、ステップＳ４０４で算出された各ポインタと基準点の実座標をもとに、基準点から各ポインタへの方向ベクトルを算出する。そして、基準点からの方向が重複するポインタの組が存在するか否かを判定する。そのような組が存在すれば判定は「はい」となってステップＳ４１０に移行し、存在しなければ判定は「いいえ」となってステップＳ４０６に移行する。
【０１１８】
本発明では、選択状態にすべきポインタをマウスの移動指示の方向によって選ぶため、各ポインタは、ポインタ基準座標ＢＡＳＥ（１０１）からの方向が異なるという条件を満たさなくてはならない。しかし、独立操作モードでユーザが任意に配置パターンを編集した場合、編集前のもとのポインタ基準座標ＢＡＳＥ（１０１）の座標が、編集後の各ポインタに対してもそのような条件を満たしているとは限らない。そこで、独立操作モードから集団操作モードに切り換えようとする場合は、ステップＳ４０４のように基準点を算出し、ステップＳ４０５でその基準点を新たにポインタ基準座標ＢＡＳＥ（１０１）として利用できるか否かを判定し、利用できる場合はステップＳ４０６からステップＳ４０９の処理を行う。
【０１１９】
なお、算出した基準点がいずれかのポインタと一致する座標の場合、基準点から当該ポインタへの方向ベクトルは０ベクトルとなる。この場合、当該ポインタを選択状態にするための選択指示パターンは定義不能となってしまうため、本発明の前提条件が崩れてしまう。そこで、この場合は、たとえ基準点からの方向が重複するポインタの組が存在しなくても、ステップＳ４０５で「はい」と判定してステップＳ４１０に移行する。
【０１２０】
ステップＳ４０６では、図８のポインタ相関情報２０６でポインタ名が「ＢＡＳＥ」の行を更新する。前述のとおり、基準点は、この操作モード切換処理終了後、ポインタ基準座標ＢＡＳＥ（１０１）として利用される点なので、相対Ｘ座標と相対Ｙ座標に、ステップＳ４０４で算出した基準点の実座標を設定する。その他の項目は、もともとポインタ名が「ＢＡＳＥ」の行では利用していないので更新不要である。更新後、ステップＳ４０７に移行する。
【０１２１】
ステップＳ４０７では、図８のポインタ相関情報２０６でポインタ名が「ＢＡＳＥ」以外の各行（各ポインタに対応する行）を更新する。具体的には、ステップＳ４０４で算出した基準点の実座標と各ポインタの実座標から、基準点に対するそのポインタの相対座標を算出して相対Ｘ座標と相対Ｙ座標に設定する。また、相対座標をもとに、基準点からそのポインタへの方向と同じ方向の単位ベクトルのＸ方向成分とＹ方向成分を算出してＸ方向成分とＹ方向成分に設定する。その他の項目は、実施の態様に応じて適宜設定してよい。例えば、操作発生回数を全て０にクリアしてもよく、現状のままとしてもよい。全ポインタについてポインタ相関情報２０６を更新したら、ステップＳ４０８に移行する。
【０１２２】
ステップＳ４０８とステップＳ４０９は、独立操作モードから集団操作モードに切り換える場合と、集団操作モードから独立操作モードに切り換える場合で共通の処理である。
ステップＳ４０８では、図５の基本設定情報２０４の操作モードにＭｏｄｅを代入して操作モードを切り換える。そしてステップＳ４０９に移行する。
【０１２３】
ステップＳ４０９では、前述の画面出力処理（図１３）を呼び出して実行し、操作モード切換処理を終了する。
ステップＳ４１０は、ステップＳ４０５で判定が「はい」のとき実行される。つまり、ステップＳ４０４で算出した基準点が、新たなポインタ基準座標ＢＡＳＥ（１０１）として利用するための条件を満たしていなかった場合に実行される。本実施形態では、このときステップＳ４１０でアラートを表示し、そのまま操作モード切換処理を終了する。よって、この場合は、操作モード（図５）もポインタ相関情報２０６（図８）も書き換えられず、現状のままである。実運用上は、このアラートを見たユーザが、現状の独立操作モードのままポインタの配置を変更した後、再度操作モード切換処理の実行を指示しなおす必要がある。
【０１２４】
なお、別の実施形態では、ステップＳ４１０において、基準点をランダムに移動させるなどした後、再度ステップＳ４０５の判定からやり直してもよい。さらに別の実施形態では、ステップＳ４０４において基準点の座標を自動的に算出するかわりに基準点の座標をユーザに任意に設定させ、その座標が基準点として利用可能か否かをステップＳ４０５で判定してもよい。
【０１２５】
次に、図１５を参照して、図１１のステップＳ１０８で呼び出されて実行される新規配置パターン登録処理について説明する。新規配置パターン登録処理は、現在の操作モード（図５）が集団操作モードのときのみ実行される。また、新規配置パターン登録処理は図４の新規配置パターン登録処理部２１５が実行する。
【０１２６】
前述のとおり、新たな配置パターンをユーザが作成するのは、独立操作モードのときである。独立操作モードでは、各ポインタの、ポインタ基準座標ＢＡＳＥ（１０１）からの方向が異なるという条件が成立するとは限らない。そこで、操作モード切換処理によって独立操作モードから集団操作モードに切り換えることができた場合（つまり、図１４のステップＳ４０５で判定が「いいえ」となり、新たに算出されたポインタ基準座標ＢＡＳＥ（１０１）に対してこの条件が成立することが保証された場合）のみ、新規配置パターン登録処理が実行されるようにしている。それにより、登録済みの配置パターンは全て、上記条件を満たすことが保証される。
【０１２７】
ステップＳ５０１では、図８のポインタ相関情報２０６の全レコードを抽出し、これらレコード群をＧｒｐ３としてコンピュータ２００のメモリなどに記憶する。そして、ユーザがキーボードなどから、登録したい配置パターンの名前を入力したら、入力内容を変数ＰｔｎＮａｍｅに記憶してステップＳ５０２に移行する。
【０１２８】
ステップＳ５０２とステップＳ５０３は、図９の配置パターン情報２０７内でパターンコードが一意であることを保証するためのステップである。
ステップＳ５０２では、配置パターン情報２０７でパターンコードがＰｔｎＮａｍｅと等しい行（レコード）を検索し、ステップＳ５０３に移行する。
【０１２９】
ステップＳ５０３では、ステップＳ５０２で該当するレコードが検索されたか否かを判定する。つまり、パターンコードがＰｔｎＮａｍｅのレコードが登録済みか否かを判定する。登録済みの場合、判定が「はい」となり、新規の配置パターンにＰｔｎＮａｍｅをパターンコードとして与えることができないので、ユーザからの入力を受け付けるところからやり直す。パターンコードがＰｔｎＮａｍｅというレコードが図９の配置パターン情報２０７に存在しなければ、判定が「いいえ」となり、ステップＳ５０４に移行する。
【０１３０】
ステップＳ５０４では、図９の配置パターン情報２０７にレコードを１つ追加する。具体的には、パターンコードの値はＰｔｎＮａｍｅ、ＢＡＳＥ初期Ｘ座標の値は、Ｇｒｐ３のうちポインタ名が「ＢＡＳＥ」の行の相対Ｘ座標、ＢＡＳＥ初期Ｙ座標の値は、Ｇｒｐ３のうちポインタ名が「ＢＡＳＥ」の行の相対Ｙ座標、となるレコードを追加する。初期表示フラグは、実施の態様に応じて強制的に０を設定してもよく、ユーザが１と０を選べるようにしてもよい。ただし、ユーザが１と０を選べるようにする場合、この処理で新規に登録する配置パターンに対して初期表示フラグが１と指定されたら、配置パターン情報２０７内の他のレコードの初期表示フラグを全て０にする必要がある。レコード追加後、ステップＳ５０５に移行する。
【０１３１】
ステップＳ５０５では、図１０の配置パターン詳細情報２０８にレコードを追加する。具体的には、Ｇｒｐ３の各レコードの内容（ポインタ名、相対Ｘ座標、相対Ｙ座標、選択状態フラグ、Ｘ方向成分、Ｙ方向成分）をコピーし、パターンコードをＰｔｎＮａｍｅとしたレコードを、それぞれ配置パターン詳細情報２０８に追加する。そして新規配置パターン登録処理を終了する。
【０１３２】
次に、図１６を参照して、図１１のステップＳ１１０で呼び出されて実行されるポインタ数編集処理について説明する。ポインタ数編集処理は、ポインタを１つ追加するか１つ削除するかを指定するＥｄｉｔＭｏｄｅを引数として与えられ、現在の操作モード（図５）が独立操作モードのときのみ実行される。また、ポインタ数編集処理は図４のポインタ数編集処理部２１３が実行する。
【０１３３】
本実施形態では、操作モードが集団操作モードのときには常に、ポインタ基準座標ＢＡＳＥ（１０１）から各ポインタへの方向が異なるという前提条件が成立するように各処理の処理内容を定めている。しかし、ポインタを増やす場合、増やしたポインタの位置によってはこの前提条件が崩れることがある。よって、ポインタ数編集処理は、操作モードが独立操作モードのときのみ実行を許可する。
【０１３４】
ステップＳ６０１では、ＥｄｉｔＭｏｄｅが「追加」か否か判定する。ＥｄｉｔＭｏｄｅが「追加」のときは判定が「はい」となりステップＳ６０２に移行し、ＥｄｉｔＭｏｄｅが「削除」のときは判定が「いいえ」となりステップＳ６０３に移行する。
【０１３５】
ステップＳ６０２では、ポインタを１つ追加するために、図８のポインタ相関情報２０６に１行レコードを追加する。追加する内容は、本実施形態では、選択状態ポインタのコピーを利用する。
【０１３６】
まず、選択状態フラグが１の行を図８のポインタ相関情報２０６内で検索する。以後、この行を行Ａと呼ぶ。そして、ポインタ相関情報２０６で現在使われていない一意のポインタ名を自動生成する。例えば、特定のアルファベットと連番を組み合わせたり、日時を利用して一意のポインタを生成することができる。そして、自動生成した一意のポインタ名と、行Ａの内容をコピーした相対Ｘ座標および相対Ｙ座標と、０に初期化された選択状態フラグと、行Ａの内容をコピーしたＸ方向成分およびＹ方向成分と、０に初期化された操作発生回数と、パスの表現形式に応じた適切な形式で初期化されたリンクパスと、を設定したレコードをポインタ相関情報２０６に追加する。レコード追加後、ステップＳ６０７に移行する。なお、実施の形態によっては、追加するポインタのポインタ名を自動生成するのではなく、ユーザが任意にポインタ名を指定するようにしてもよい。
【０１３７】
ステップＳ６０３からステップＳ６０６は、ＥｄｉｔＭｏｄｅが削除のとき実行される。本実施形態では、選択状態ポインタを削除する。
ステップＳ６０３では、図８のポインタ相関情報２０６内を検索し、選択状態フラグが１の行（以後、この行を行Ａと呼ぶ）と、行Ａのポインタに最も近い別のポインタの行（以後、この行を行Ｂと呼ぶ）を抽出する。ここで行Ｂを抽出するのは、ポインタを１つ削除することによって、ポインタが存在しなくなることを避けるためである。なお、行Ｂとして抽出すべき行はポインタの行なので、ポインタ名が「ＢＡＳＥ」以外の行である。行Ａと行Ｂを抽出したらステップＳ６０４に移行する。
【０１３８】
ステップＳ６０４では、行Ｂが存在したか否かを判定する。行Ｂが存在した場合、判定が「はい」となってステップＳ６０５に移行する。行Ｂが存在しなかった場合は、現在の配置パターンには選択状態ポインタしかポインタがなく、それを削除するとまったくポインタが存在しなくなってしまう場合である。このとき、判定は「いいえ」となり、ポインタを削除せずにそのままポインタ数編集処理を終了する。
【０１３９】
ステップＳ６０５では、図８のポインタ相関情報２０６から行Ａ（選択状態ポインタに対応する行）を削除する。これにより、選択状態のポインタがなくなり、非選択状態ポインタのみとなる。削除後、ステップＳ６０６に移行する。
【０１４０】
ステップＳ６０６では、非選択状態ポインタのうちの１つを強制的に選択状態に切り換える。本実施形態では、行Ｂのポインタの選択状態フラグに１を代入して行Ｂのポインタを選択状態にする。そしてステップＳ６０７に移行する。
【０１４１】
ステップＳ６０７は、ＥｄｉｔＭｏｄｅが追加の場合と削除の場合で共通の処理である。ポインタの追加または削除後、画面上に各ポインタを再描画するために、前述の画面出力処理（図１３）を呼び出し、実行する。画面出力処理の実行後、ポインタ数編集処理を終了する。
【０１４２】
なお、ポインタ数編集処理は、様々に変更可能である。ＥｄｉｔＭｏｄｅが「追加」のとき、上記の実施形態では選択状態ポインタの内容をコピーしているので、ポインタ数編集処理を終えた後、選択状態ポインタと追加したばかりの非選択状態ポインタが同じ位置に重なって表示される。しかし、別の実施形態では、ステップＳ６０７で、追加したポインタが他のポインタと重ならない位置に表示されるように、ステップＳ６０２で、追加するポインタの相対Ｘ座標や相対Ｙ座標の値を決定してもよい。例えば、他のポインタのうち任意の２つを選び、追加するポインタが２つのポインタの中点に位置するように相対Ｘ座標と相対Ｙ座標の値を定めてもよく、３つ以上のポインタの位置から所定の方法で算出した位置を利用してもよい。あるいは、追加するポインタの位置の候補となる点を予めいくつか定めておき、順番に候補を調べて、初めて見つかった他のポインタと重ならない点を、追加するポインタの位置として定めてもよい。また、乱数を用いてもよい。また、ＥｄｉｔＭｏｄｅが「削除」のときも、実施の態様によって、どのポインタを削除するか、削除後にどのポインタを選択状態にするか、任意に定めることができる。
【０１４３】
次に、図１７から図２３を参照して、図１１のステップＳ１１１で呼び出されて実行されるマウス操作キャプチャ処理について説明する。図４に示したオペレーティングシステム２０１のポインティングデバイス制御機能２０３を利用することにより、マウス操作に関する各種のイベントの発生が検知可能である。マウス操作キャプチャ処理は、そのようなマウス操作に関するイベントの種類に応じてそれぞれ実行される各種の処理の総称であり、具体的には、図１７、図１８、図１９、図２０、図２２、図２３の６種類の処理がある。マウス操作キャプチャ処理により、本発明による複数のポインタの連動および選択状態ポインタの切換が実現される。また、マウス操作キャプチャ処理は図４のマウス操作キャプチャ部２１０が実行する。
【０１４４】
図１７は、マウスの移動が検知されたときに実行されるマウス操作キャプチャ処理を示すフローチャートである。図１７の処理により、マウスの動きに合わせて複数のポインタが相対位置を保ったまま移動する。
【０１４５】
ステップＳ７０１では、図５の基本設定情報２０４の操作モードを読み込み、集団操作モードか否かを判定する。集団操作モードのとき判定が「はい」となってステップＳ７０２に移行し、独立操作モードのとき判定が「いいえ」となってステップＳ７０３に移行する。
【０１４６】
ステップＳ７０２では、集団操作モードなので、全ポインタをマウスの移動に連動させて移動させるための処理を行う。具体的には、図８のポインタ相関情報２０６内でポインタ名が「ＢＡＳＥ」の行を検索し、その相対Ｘ座標と相対Ｙ座標の値を、検出されたマウスの移動量および移動方向（つまり移動ベクトル）に応じて更新する。ここで、ポインタ名が「ＢＡＳＥ」の行の相対Ｘ座標と相対Ｙ座標は、ポインタ基準座標ＢＡＳＥ（１０１）の実座標の水平方向成分と垂直方向成分である。よって、検出されたマウスの移動ベクトルの水平方向成分と垂直方向成分の値を、それぞれもとの相対Ｘ座標と相対Ｙ座標の値に加算して新たな相対Ｘ座標と相対Ｙ座標とすることにより、検出されたマウスの移動ベクトルに応じた新しいポインタ基準座標ＢＡＳＥ（１０１）の実座標が算出される。この処理の後、ステップＳ７０４に移行する。
【０１４７】
ステップＳ７０３では、独立操作モードなので、選択状態ポインタのみにマウスの移動を反映させるための処理を行う。ポインタ基準座標ＢＡＳＥ（１０１）や、非選択状態ポインタに関しては何も処理を行わない。具体的には、図８のポインタ相関情報２０６内で選択状態フラグが１の行を検索し、その相対Ｘ座標と相対Ｙ座標に、検出されたマウスの移動量の水平方向成分と垂直方向成分の値をそれぞれ加算して更新する。更新後、ステップＳ７０４に移行する。なお、ステップＳ７０３が実行されるのは、主に、ポインタの新たな配置パターンをユーザが作成・編集しているときである。
【０１４８】
ステップＳ７０４では、前述の画面出力処理（図１３）を呼び出して実行し、マウス操作キャプチャ処理を終了する。ステップＳ７０４は、集団操作モードと独立操作モードで共通に実行される。集団操作モードの場合、画面出力処理において各ポインタの実座標がポインタ基準座標ＢＡＳＥ（１０１）からの相対的位置をもとに計算されて再描画されるため、全ポインタがマウスの移動に連動して移動する。独立操作モードの場合、選択状態ポインタのみステップＳ７０３で位置が変更されているので、画面出力処理による再描画により、選択状態ポインタのみが移動する。
【０１４９】
図１８は、マウスボタンの押下が検知されたときに実行されるマウス操作キャプチャ処理を示すフローチャートである。例えばクリック操作は、マウスボタンを押してから離す動作であるから、クリック時には図１８の処理が実行される。なお、ドラッグ中などマウスボタンが押下された状態が続く場合であっても、図１８の処理は、その状態が始まった時点で１回呼ばれるだけである。
【０１５０】
ステップＳ８０１で、図８のポインタ相関情報２０６の全行に対し、操作発生回数を０に書き換え、マウス操作キャプチャ処理を終了する。ユーザがマウスボタンを押下するのは、クリックやドラッグにより何らかの処理の実行を指示するときなので、操作の区切りと見なすことができる。そこで、本実施形態では、マウスボタンの押下が検知されると、全ポインタの操作発生回数を０にクリアしている。
【０１５１】
図１９は、マウス操作の有無を監視するタイムイベントをトリガとして、マウスの操作が一定時間なかったときに実行される、マウス操作キャプチャ処理を示すフローチャートである。
【０１５２】
ステップＳ９０１では、マウスの操作がないまま経過した時間（無操作経過時間）が、図５の基本設定情報２０４の無操作監視時間より長いか否かを判定する。無操作監視時間以下なら判定が「いいえ」となりマウス操作キャプチャ処理を終了する。無操作監視時間より長ければ判定が「はい」となりステップＳ９０２に移行する。
【０１５３】
ステップＳ９０２では、図８のポインタ相関情報２０６の全行に対し、操作発生回数を０に書き換え、マウス操作キャプチャ処理を終了する。
図１８と図１９は、基本的には同じ処理である。選択状態ポインタを切り換えるためにユーザがマウスで行う動作は、たとえ複数（図５の基本設定情報２０４の切換回数）の動作からなる場合でも、一連のまとまった動作としてなされるべきものである。よって、クリックされたり一定以上の時間が経過したりして区切りが検知された場合は、選択状態ポインタを切り換えるための操作もクリアされたと見なし、図１８や図１９のように処理している。
【０１５４】
図２０は、マウスの移動が終了したことが検知されたときに実行される、マウス操作キャプチャ処理を示すフローチャートである。図２０の処理により、選択状態ポインタの切換が実現される。
【０１５５】
本実施形態では、選択状態ポインタを切り換えるのに、ポインタ基準座標ＢＡＳＥ（１０１）から各ポインタへの方向と同じ方向の移動指示の回数を数えて利用している。ところで一般に、ユーザがマウスを曲線状に動かすことも多いが、例えば円状にマウスを動かした場合、上下左右、様々な向きの動きがその中に含まれる。よって、どのポインタに対応する動きとして数えるべきか、という問題がある。そこで本発明では、移動指示の方向は、マウスが移動を開始した点と移動を終了した点によってのみ判定し、マウスの移動が描いた軌跡は考慮しない。よって、本発明において選択状態ポインタを切り換える処理は、マウスが移動を終了したことをトリガとして実行されるべきものである。図２０はその処理を示している。
【０１５６】
ステップＳ１００１では、図５の基本設定情報２０４の操作モードを読み込み、集団操作モードか否かを判定する。集団操作モードのとき、判定が「はい」となりステップＳ１００２に移行する。独立操作モードのとき、判定が「いいえ」となりマウス操作キャプチャ処理を終了する。本発明における独立操作モードは、基本的に新たな配置パターンを編集するときにのみ利用する、特殊な操作モードである。よって、ここでは独立操作モードを、マウスの移動指示にもとづいて自動的に選択状態ポインタを切り換えるという本発明の通常の動作の対象外としている。つまり、独立操作モードのときは、何も処理を行わずにマウス操作キャプチャ処理を終了する。
【０１５７】
ステップＳ１００２では、ポインタ切換判断処理（図２１とあわせて後述）を呼び出して実行する。ポインタ切換判断処理では、今回のマウスの動きによって選択状態ポインタを切り換えるべきか否かを判定し、必要に応じて選択状態ポインタを切り換える。ポインタ切換判断処理の実行後、ステップＳ１００３に移行する。
【０１５８】
ステップＳ１００３では、図７の前回停止位置情報２０５を更新する。つまり、今回の移動の終了位置を、次回のマウス移動指示のために前回停止位置情報２０５として記憶する。具体的には、図８のポインタ相関情報２０６内でポインタ名が「ＢＡＳＥ」の行を検索し、その相対Ｘ座標と相対Ｙ座標を読み込む。この座標は、今回の移動終了時におけるポインタ基準座標ＢＡＳＥ（１０１）の実座標を示す。よって、読み込んだ相対Ｘ座標と相対Ｙ座標の値を、前回停止位置情報２０５の前回Ｘ座標と前回Ｙ座標にそれぞれ代入すればよい。代入後、ステップＳ１００４に移行する。
【０１５９】
ステップＳ１００４では、前述の画面出力処理（図１３）を呼び出して実行し、マウス操作キャプチャ処理を終了する。ステップＳ１００２で選択状態ポインタが切り換わった場合は、ステップＳ１００４の処理により、切換後の表示属性にしたがって各ポインタが画面に表示される。
【０１６０】
次に、図２１を参照して、図２０のステップＳ１００２で呼び出されて実行されるポインタ切換判断処理について説明する。ポインタ切換判断処理は、集団操作モードのときのみ呼び出され、マウスの移動が終了したときに、今回の移動によって選択状態ポインタを切り換えるべきか否かを判断する。また、ポインタ切換判断処理は図４のポインタ切換判断処理部２１１が実行する。
【０１６１】
ステップＳ１１０１では、図７の前回停止位置情報２０５の前回Ｘ座標と前回Ｙ座標をコンピュータ２００のメモリなどに読み込む。前回のマウスの移動停止位置は、今回のマウスの移動開始位置である。この読み込んだ座標の点を以下では点Ｓという。座標の読み込み後、ステップＳ１１０２に移行する。
【０１６２】
ステップＳ１１０２では、図８のポインタ相関情報２０６内でポインタ名が「ＢＡＳＥ」の行を検索し、相対Ｘ座標と相対Ｙ座標をコンピュータ２００のメモリなどに読み込む。これは、今回のマウスの移動停止時点におけるポインタ基準座標ＢＡＳＥ（１０１）の実座標を表す。この座標により示される点を以下では点Ｅという。座標の読み込み後、ステップＳ１１０３に移行する。
【０１６３】
ステップＳ１１０３では、点Ｓから点Ｅへの方向ベクトルと同じ向きの単位ベクトルの水平方向成分Ｕｘおよび垂直方向成分Ｕｙを算出する。算出後、ステップＳ１１０４に移行する。
【０１６４】
ステップＳ１１０４では、図８のポインタ相関情報２０６内で、Ｘ方向成分がＵｘと等しく、Ｙ方向成分がＵｙと等しく、ポインタ名が「ＢＡＳＥ」以外の行を検索する。この条件を満たす行を以後、行Ａと呼ぶ。つまり、ステップＳ１１０４では、今回の移動の方向が、ポインタ基準座標ＢＡＳＥ（１０１）からの方向と同一のポインタを検索する。検索後、ステップＳ１１０５に移行する。
【０１６５】
ステップＳ１１０５では、ステップＳ１１０４の検索で行Ａが存在したか（検索されたか）否かを判定する。行Ａが存在した場合、判定は「はい」となってステップＳ１１０６に移行する。なお、ポインタ基準座標ＢＡＳＥ（１０１）から各ポインタへの方向はそれぞれ異なるという前提条件があるため、行Ａは高々１つしか存在しない。行Ａが存在しなかった場合、判定は「いいえ」となり、今回の移動は選択状態ポインタの切換と無関係なので、ポインタ切換判断処理を終了する。
【０１６６】
ステップＳ１１０６では、図８のポインタ相関情報２０６の行Ａの操作発生回数に１を加えて更新し、ステップＳ１１０７に移行する。
ステップＳ１１０７では、図８のポインタ相関情報２０６の行Ａの操作発生回数が、図５の基本設定情報２０４の切換回数と等しいか否かを判定する。等しい場合、判定は「はい」となり、行Ａのポインタを選択状態に切り換える条件が満たされているのでステップＳ１１０８に移行する。等しくない場合、判定は「いいえ」となり、今回の移動は選択状態ポインタの切換と無関係なので、ポインタ切換判断処理を終了する。
【０１６７】
ステップＳ１１０８以降は、選択状態ポインタを切り換えるときのみ実行される。
ステップＳ１１０８では、オブジェクトをドラッグ中か否かを判定する。本実施形態では、本発明のプログラムのどの処理からも参照可能な変数として、ドラッグ中か否かを示す「ドラッグ中フラグ」がコンピュータ２００のメモリまたはＣＰＵのレジスタに格納されており、その値はドラッグ中のとき１、ドラッグ中でないとき０とする。ドラッグ中フラグの値がどのように設定されるかは、図２２、図２３とあわせて後述する。よって、ステップＳ１１０８では、ドラッグ中フラグの値を読み込み、値が１ならドラッグ中なので判定が「はい」となってステップＳ１１０９に移行し、値が０ならドラッグ中ではないので判定が「いいえ」となってステップＳ１１１１に移行する。
【０１６８】
ステップＳ１１０９とステップＳ１１１０は、オブジェクトをドラッグ中に、選択状態ポインタの切換が起こったときに実行される処理である。これらの処理は図２に示したドラッグ操作を実現する処理である。
【０１６９】
ステップＳ１１０９では、図８のポインタ相関情報２０６内で選択状態フラグが１の行を検索する。この行を以後、行Ｂという。行Ｂは現在の選択状態ポインタに該当し、このポインタで現在オブジェクトをドラッグ中である。例えば、図２の（ｂ）では、ポインタＰｂ（１０３）が行Ｂに該当する。そこで、行Ｂのポインタの位置から行Ａのポインタの位置へ、ドラッグ中のアイコン１１１を移動表示させる。例えば、図２の（ｃ）では、ポインタＰａ（１０２）が行Ａに該当する。実施の態様に応じて、瞬間的にドラッグ中のアイコン１１１が移動したように表示してもよく、移動をアニメーションで表現してもよい。表示後、ステップＳ１１１０に移行する。
【０１７０】
ステップＳ１１１０では、行Ｂのリンクパスを行Ａのリンクパスに代入し、行Ｂのリンクパスをクリアする（クリアするために代入すべき具体的な値は、その実施形態で採用しているリンクパスの表現形式によって異なる）。ステップＳ１１０９とステップＳ１１１０により、ドラッグオブジェクトは新たに選択状態となったポインタ（行Ａのポインタ）に引き渡される。引き渡し後、ステップＳ１１１１に移行する。
【０１７１】
ステップＳ１１１１からステップＳ１１１３は、オブジェクトのドラッグ中か否かによらず、選択状態ポインタを切り換えるために行われる処理である。
ステップＳ１１１１では、図８のポインタ相関情報２０６内で現在、選択状態フラグが１の行（行Ｂ）の選択状態フラグを０に更新し、ステップＳ１１１２に移行する。
【０１７２】
ステップＳ１１１２では、新たな選択状態ポインタに該当する行Ａの選択状態フラグを１に更新し、ステップＳ１１１３に移行する。
ステップＳ１１１３では、図８のポインタ相関情報２０６の全行に対し、操作発生回数を０に更新し、ポインタ切換判断処理を終了する。これは、選択状態ポインタが切り換わったことを操作の区切りと考え、操作発生回数を全ポインタに対してクリアするためである。ステップＳ１１１３で操作発生回数をクリアする例は、図６の（ｂ）や（ｃ）で説明した。
【０１７３】
なお、実施の形態によっては、ステップＳ１１１３の後、切換前の選択状態ポインタの位置から、切換後の選択状態ポインタの位置に向かって動く何らかのアニメーション表示を行ってもよい。それによって、選択状態ポインタの切換が行われたことをより容易にユーザが視認することができる。
【０１７４】
以上により、本発明による選択状態ポインタの切換が実現される。
図２２は、ドラッグ開始が検知されたときに実行される、マウス操作キャプチャ処理を示すフローチャートである。
【０１７５】
ステップＳ１２０１では、ドラッグ中フラグに、ドラッグ中であることを示す１を代入する。ドラッグ中フラグは、図２１のステップＳ１１０８でも参照した変数であり、図２２の処理専用のローカル変数ではなく、図２１や図２３の処理からも参照可能な変数として、コンピュータ２００のメモリまたはＣＰＵのレジスタに格納されている。代入後、ステップＳ１２０２に移行する。
【０１７６】
ステップＳ１２０２では、選択状態ポインタのリンクパスがドラッグオブジェクトへのリンクパスとなるようにする。つまり、選択状態ポインタを用いてドラッグ操作を行うことを図８のポインタ相関情報２０６のデータに反映させる。具体的には、ポインタ相関情報２０６で選択状態フラグが１の行を検索し、その行のリンクパスにドラッグオブジェクトへのリンクパスの値を代入する。なお、ドラッグオブジェクトへのリンクパスは、図４に示したオペレーティングシステム２０１のポインティングデバイス制御機能２０３を通じて取得可能である。代入後、マウス操作キャプチャ処理を終了する。
【０１７７】
図２３は、ドロップ（つまりドラッグ終了）が検知されたときに実行される、マウス操作キャプチャ処理を示すフローチャートである。
ステップＳ１３０１では、ドラッグ中フラグに、ドラッグ中ではないことを示す０を代入する。ドラッグ中フラグは、図２１のステップＳ１１０８や図２２のステップＳ１２０１でも利用した変数である。代入後、ステップＳ１３０２に移行する。
【０１７８】
ステップＳ１３０２では、選択状態ポインタのリンクパスをクリアする。つまり、ドラッグ操作が終了したことを図８のポインタ相関情報２０６のデータに反映させる。具体的には、ポインタ相関情報２０６で選択状態フラグが１の行を検索し、その行のリンクパスをクリアする。クリアするために代入すべき具体的な値は、その実施形態で採用しているリンクパスの表現形式によって異なる。これにより、ポインタ相関情報２０６内の全行のリンクパスはクリアされた状態になる。クリア後、マウス操作キャプチャ処理を終了する。
【０１７９】
以上からオブジェクトをドラッグする場合の本発明のプログラムの動作をまとめると次のようになる。
まず、何もオブジェクトをドラッグしていない状態では、図８のポインタ相関情報２０６のリンクパスは全行でクリアされた状態であり、ドラッグ中フラグの値は０である。次に、選択状態ポインタであるオブジェクトを選択し、ドラッグを開始すると、図２２の処理によりドラッグ中フラグが１となり、選択状態ポインタのリンクパスに当該オブジェクトへのリンクパスが書き込まれる。
【０１８０】
ドラッグ中に選択状態ポインタの切換が起こらず、そのままドロップした場合は、ドロップ時に図２３の処理が実行されてドラッグ中フラグの値が０に戻り、図８のポインタ相関情報２０６のリンクパスも全行でクリアされた状態に戻る。
【０１８１】
ドラッグ中に選択状態ポインタの切換が起こった場合は、すなわち、図２０のマウス操作キャプチャ処理から図２１のポインタ切換判断処理が呼び出され、図２１のステップＳ１１０５およびステップＳ１１０７の判定が「はい」となった場合である。この場合、図２１のステップＳ１１１０で、切換前の選択状態ポインタのリンクパスが切換後の選択状態ポインタにコピーされ、切換前の選択状態ポインタのリンクパスはクリアされる。よって、ドロップ時に図２３の処理が実行されると、クリアする対象は切換後の選択状態ポインタのリンクパスとなる。図２３の処理によりドラッグ中フラグの値が０に戻り、図８のポインタ相関情報２０６のリンクパスも全行でクリアされた状態に戻る。
【０１８２】
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
上記の実施形態では、選択状態ポインタは非選択状態ポインタよりも高輝度とし、各ポインタの形状は、ポインタ基準座標ＢＡＳＥ（１０１）からそのポインタへの方向の矢印形状としていた。しかし、実施の態様に応じてポインタの表示属性を任意に定めることができる（図１３の画面出力処理ではそれに合わせた処理を行う）。例えば、選択状態と非選択状態を区別するのに、輝度以外に、ポインタの色（色相、彩度、明度、透明・半透明・不透明の違い）、大きさ、形状、点灯・点滅の違い、模様、などを利用してもよい。また、ポインタの形状は矢印形状に限らない。ポインタ基準座標ＢＡＳＥ（１０１）からそのポインタへの方向をユーザが視認可能であれば、ポインタをどのような画像で表現してもよい。例えば、形状ではなく色で方向を表現しても構わない。また、集団操作モードと独立操作モードで、ポインタの表示属性を異ならせてもよい。
【０１８３】
本発明では、上述のとおり、方向が同一か否かの判定を行う。具体的には、マウスの移動の方向と、ポインタ基準座標ＢＡＳＥ（１０１）から各ポインタへの方向の比較（図２１のステップＳ１１０４）および、ポインタ基準座標ＢＡＳＥ（１０１）から各ポインタへの方向で、同一のものが存在するか否かの判定（図１４のステップＳ４０５）である。このような判定において、完全に方向が一致したときのみ「同一」と判定するのは現実的ではない。そこで、実際には、方向の差が所定の範囲内なら「同一」と判定することが好ましい。この範囲は、実施の態様に応じて任意に定めてよい。また、範囲を変更不可能としてもよく、この範囲を表す項目を図５の基本設定情報２０４に追加するなどしてユーザにより変更可能としてもよい。
【０１８４】
また、上記の実施形態では、このような方向の同一性の判定において、単位ベクトルを利用している（図８のポインタ相関情報２０６のＸ方向成分とＹ方向成分、および図２１のステップＳ１１０３で算出するＵｘとＵｙ）。しかし、実施の形態によっては、単位ベクトルを利用しなくてもよい。例えば、２つの方向ベクトルの内積を、当該２つの方向ベクトルの大きさの積で割ることにより、当該２つの方向ベクトルの余弦を算出し、その値から、当該２つの方向ベクトルが同一の方向か否か（同一と見なせる所定の範囲内の差しかないか）を判定してもよい。
【０１８５】
また、上記の実施形態では、あるポインタを選択状態にするための選択指示パターンは、ポインタ基準座標ＢＡＳＥ（１０１）から当該ポインタへの方向と同じ方向に所定の回数（図５の基本設定情報２０４の切換回数）の移動指示を行うというパターンである。しかし別の実施形態では、１８０度逆の方向を使って選択指示パターンを定めてもよい。つまり、選択状態にしたいポインタからポインタ基準座標ＢＡＳＥ（１０１）への方向と同じ方向に所定の回数の移動指示を行うというパターンを利用してもよい。これらの例に限らず、各ポインタで選択指示パターンの方向が異なってさえいれば、本発明を実施することができる。ただし、ユーザが直感的に操作可能という効果を得るには、選択指示パターンの方向として、ポインタ基準座標ＢＡＳＥ（１０１）から各ポインタへの方向を採用することが望ましい。
【０１８６】
また、上記の実施形態では、図２１から図２３でドラッグ中フラグという変数を使用しているが、別の実施形態では、ドラッグ中フラグを使わなくてもよい。その場合、図２１のステップＳ１１０８でドラッグ中か否かを判定するには、図８のポインタ相関情報２０６において、選択状態ポインタのリンクパスがクリアされていればドラッグ中でなく、リンクパスとして有効な何らかの値が存在していればドラッグ中であると判定する。また、図４のオペレーティングシステム２０１のポインティングデバイス制御機能２０３が提供するインタフェイスによっては、他の方法でドラッグ中か否かを判定したりリンクパスを書き換えたりすることも可能である。
【０１８７】
また、上記の実施形態では、図１２の配置パターン切換処理、図１４の操作モード切換処理、図１６のポインタ数編集処理、図１７および図２０のマウス操作キャプチャ処理から、図１３の画面出力処理を呼び出している。図１３の画面出力処理は、全てのポインタについて表示する（再描画する）処理である。しかし、実施の形態によっては、上記各処理から共通の画面出力処理を呼び出すのではなく、例えばポインタ数編集処理を実行した場合は追加や削除と関連するポインタのみ再描画するなど、必要最小限の再描画のみを行うようにしてもよい。
【０１８８】
また、上記の実施形態では、操作モードが集団操作モードのときには常に、ポインタ基準座標ＢＡＳＥ（１０１）から各ポインタへの方向が異なるという前提条件が成立するように制御している。しかし、この制御方法は、ユーザが配置パターンの編集を行うための手順を煩雑にしている。そこで、他の実施形態では、配置パターンの編集を行うための手順が簡略化されるような制御方法を採用してもよい。例えば、上記の操作モード切換処理（図１４）で、切換後のポインタ基準座標ＢＡＳＥ（１０１）の座標として使うための基準点の座標を算出し、その座標から各ポインタへの方向で重複するものがあるか否かを判定している。他の実施形態では、この判定を新規配置パターン登録処理（図１５）やポインタ数編集処理（図１６）でも行うようにし、さらに、方向が重複するポインタの組が見つかった場合はそのような組がなくなるまで基準点の座標を自動的に修正するようにすれば、図１１のステップＳ１０７やステップＳ１０９での操作モードの判定が不要となり、ユーザが行うべき手順も簡略化される。
【０１８９】
ところで、本発明によるプログラムは、図２４に示すような一般的な情報処理装置（コンピュータ）上で実行される。図２４は図４のコンピュータ２００に相当する。
図２４の情報処理装置は、ＣＰＵ３００、ＲＯＭ（Read Only Memory）３０１、ＲＡＭ（Random Access Memory）３０２、通信インターフェイス３０３、記憶装置３０４、入力装置３０５、出力装置３０６、可搬型記憶媒体の駆動装置３０７を備え、これらの全てがバス３０８によって接続されている。
【０１９０】
記憶装置３０４には、ハードディスクなどの磁気ディスクを含む様々な形式の記憶装置を使用することができる。記憶装置３０４またはＲＯＭ３０１には、本発明によるプログラムなどが格納されている。そのプログラムがＣＰＵ３００によって実行されることにより、本発明が実現される。
【０１９１】
例えば、ある実施形態では、図５の基本設定情報２０４、図７の前回停止位置情報２０５は、プログラムがＣＰＵ３００によって実行されると生成され、ＲＡＭ３０２上に記憶される。一方、図９の配置パターン情報２０７、図１０の配置パターン詳細情報２０８などは、記憶装置３０４に格納されて必要に応じてＲＡＭ４０２に読み込まれ、ＣＰＵ３００で処理される。そして、記憶装置３０４から読み込んだ図１０の配置パターン詳細情報２０８に、ＣＰＵ３００が所定の初期化データを付加して図８のポインタ相関情報２０６としてＲＡＭ３０２に記憶する。
【０１９２】
入力装置３０５は、例えばマウス、トラックパッド、トラックボールなどのポインティングデバイスやキーボードである。入力装置３０５からの入力（移動指示や操作指示等）は、図４のオペレーティングシステム２０１のポインティングデバイス制御機能２０３により検出可能である。出力装置３０６は、例えば液晶ディスプレイなどの表示装置であり、ここに複数のポインタが表示される。
【０１９３】
本発明によるプログラムは、プログラム提供者３０９からネットワーク３１１および通信インターフェイス３０３を介して提供され、例えば記憶装置３０４に格納され、ＣＰＵ３００によって実行されてもよい。また、市販されて流通している可搬型記憶媒体３１０に本発明によるプログラムが格納され、可搬型記憶媒体３１０が駆動装置３０６にセットされ、格納されたプログラムが例えばＲＡＭ３０２にロードされてＣＰＵ３００によって実行されてもよい。可搬型記憶媒体３１０としては、ＣＤ（Compact Disc）やＤＶＤ（Digital Versatile Disk）などの光ディスク、光磁気ディスク、フレキシブルディスクなど様々な形式の記憶媒体を使用することができる。
【０１９４】
同様に、図９の配置パターン情報２０７、図１０の配置パターン詳細情報２０８なども、プログラム提供者３０９からネットワーク３１１および通信インターフェイス３０３を介して記憶装置３０４に格納されてもよく、可搬型記憶媒体３１０に格納されて駆動装置３０６を介して読み取られ、記憶装置３０４に格納されたりＲＡＭ３０２にロードされたりしてもよい。
【０１９５】
（付記１）
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示するコンピュータで実行されるプログラムであって、
入力装置による移動指示があったとき、前記複数のポインタの位置の基準を示すポインタ基準点の座標を、該移動指示の移動ベクトルを加算することにより更新し、前記複数のポインタの各々について、予め記憶された当該ポインタと前記ポインタ基準点との相対座標を読み込み、更新された前記ポインタ基準点の前記座標と該相対座標を加算して当該ポインタの実座標を算出し、当該ポインタを前記画面上の該実座標の位置に移動させる移動ステップと、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ、該操作指示に対応する操作を行う操作実行ステップと、
を前記コンピュータに実行させることを特徴とするプログラム。
（付記２）
前記入力装置による前記移動指示があったとき、前記複数のポインタの各々に対して、前記ポインタ基準点から当該ポインタへの方向にもとづき前記複数のポインタの各々で異なるように定められた方向および回数の組み合わせにより予め定義された選択指示パターンを該移動指示と比較し、該移動指示が前記選択指示パターンのいずれかに合致する場合、該選択指示パターンに対応する一つのポインタを選択状態にし、それ以外のすべてのポインタを非選択状態にする選択状態切換ステップをさらに前記コンピュータに実行させることを特徴とする付記１に記載のプログラム。
（付記３）
前記選択状態ポインタによりオブジェクトをドラッグするドラッグ操作中に、前記非選択状態ポインタのうちの一つに対応する前記選択指示パターンに合致する前記移動指示が前記入力装置によりなされたとき、前記選択状態切換ステップを前記コンピュータに実行させるとともに、
前記画面上で前記オブジェクトを表す画像を、前記選択状態切換ステップによる切換後の選択状態ポインタの位置に移動させ、切換前の選択状態ポインタが前記オブジェクトをドラッグ中であることを示す情報を、前記切換後の選択状態ポインタが前記オブジェクトをドラッグ中であることを示す情報に書き換えるドラッグオブジェクト引き渡しステップをさらに前記コンピュータに実行させる、
ことを特徴とする付記２に記載のプログラム。
（付記４）
前記ポインタ基準点から前記複数のポインタの各々への方向はすべて異なっており、
前記選択指示パターンを定義する前記方向は、前記ポインタ基準点から当該ポインタへの方向と同一の方向であり、
前記選択指示パターンを定義する前記回数は、すべての前記選択指示パターンで共通の所定の回数である、
ことを特徴とする付記２に記載のプログラム。
（付記５）
前記入力装置による移動指示の移動停止時に、
前回の移動指示の移動停止時に記憶された、前回の移動指示の移動停止時における前記ポインタ基準点の座標である前回停止位置情報を読み込み、
今回の移動停止時における前記ポインタ基準点の座標と該前回停止位置情報との差から、今回の移動指示の方向を示すベクトルを算出し、
前記選択指示パターンを定義する前記方向のうち、今回の移動指示の前記方向と合致するものがあるか否かを該ベクトルにもとづいて判定し、
合致するものがあった場合は、当該選択指示パターンに対応する前記ポインタに関する操作発生回数に１を加え、該操作発生回数が当該選択指示パターンを定義する前記回数に達したか否かを判定し、達していれば当該選択指示パターンに今回の移動指示が合致すると判定し、達していなければ今回の移動指示ではいずれの前記選択指示パターンにも合致しないと判定することにより、
前記選択指示パターンのいずれかに合致する移動指示が前記入力装置によりなされたか否かを判定し、該判定結果にもとづいて前記選択状態切換ステップを実行すること
を特徴とする付記２に記載のプログラム。
（付記６）
前記選択状態切換ステップにおいてさらに、前記複数のポインタの各々の前記操作発生回数を、すべて０にすることを特徴とする付記５に記載のプログラム。
（付記７）
前記入力装置による操作指示があったとき、前記複数のポインタの各々の前記操作発生回数を、すべて０にすることを特徴とする付記５に記載のプログラム。
（付記８）
前記入力装置からの前記移動指示と前記操作指示のいずれも発生しない時間が、予め定められた時間より長く続いたとき、前記複数のポインタの各々の前記操作発生回数を、すべて０にすることを特徴とする付記５に記載のプログラム。
（付記９）
前記ポインタ基準点の座標および前記複数のポインタ各々の前記ポインタ基準点に対する相対座標により表される配置パターンが予め一つ以上記憶され、そのうちの一つが指定されたとき、
該配置パターンに含まれるすべての前記ポインタについて、当該ポインタの前記相対座標を前記ポインタ基準点の座標と加算して当該ポインタの実座標を算出し、前記画面上の該実座標の位置に当該ポインタを表示する配置パターン切換ステップをさらに前記コンピュータに実行させる、
ことを特徴とする付記１に記載のプログラム。
（付記１０）
前記入力装置による前記移動指示に応じて前記選択状態ポインタのみを移動させる独立操作モードと、前記入力装置による前記移動指示に応じてすべてのポインタを移動させる集団操作モードの二つの操作モードが定義され、そのいずれであるかを表す操作モード情報が前記独立操作モードを表しているときに、前記入力装置による前記移動指示があったときは、前記移動ステップにかえて、
前記選択状態ポインタの相対座標を、該移動指示の移動ベクトルを加算することにより更新し、前記ポインタ基準点の前記座標と更新された該相対座標を加算して前記選択状態ポインタの実座標を算出し、前記選択状態ポインタを前記画面上の該実座標の位置に移動させ、前記ポインタ基準点の前記座標および前記非選択状態ポインタの前記相対座標は変更しない第二の移動ステップを前記コンピュータに実行させることを特徴とする付記１に記載のプログラム。
（付記１１）
前記操作モード情報を変更する指示が入力装置を介して与えられたとき、
該指示が前記独立操作モードに変更する指示の場合は、操作モード情報を前記独立操作モードに変更し、
該指示が前記集団操作モードに変更する指示の場合は、変更後の前記ポインタ基準点の座標を前記複数のポインタの前記相対位置および前記ポインタ基準点の座標にもとづき算出し、算出した該座標から前記複数のポインタ各々への方向のうち所定の範囲内で一致するものが存在するか否かを判定し、存在しない場合のみ、算出した前記座標を前記ポインタ基準点の座標として設定し、前記複数のポインタ各々について該座標に対する相対座標を設定し、前記操作モード情報を前記集団操作モードに変更する、
操作モード切換ステップをさらに前記コンピュータに実行させることを特徴とする付記１０に記載のプログラム。
（付記１２）
新たなポインタの追加または前記複数のポインタのうちのいずれかの削除を指示する入力装置からの入力を受け付け、前記操作モード情報を読み込み、前記独立操作モードの場合のみ、
該入力が追加を指示するものである場合は、所定の値を追加するポインタの前記相対座標として記憶し、該入力が削除を指示するものである場合は、削除対象のポインタについて記憶されている前記相対座標の情報を削除し、前記削除対象のポインタが選択状態ポインタだった場合はさらに前記非選択状態ポインタのうちの一つを選択状態にするポインタ数編集ステップをさらに前記コンピュータに実行させる、
ことを特徴とする付記１０に記載のプログラム。
（付記１３）
前記画面上に表示された前記複数のポインタの配置パターンの登録を指示する入力装置からの入力を受け付け、前記操作モード情報を読み込み、前記集団操作モードの場合のみ、
前記ポインタ基準点の座標および前記複数のポインタ各々の前記ポインタ基準点に対する相対座標を新規配置パターンとして記憶する新規配置パターン登録ステップをさらに前記コンピュータに実行させる、
ことを特徴とする付記１０に記載のプログラム。
（付記１４）
前記複数のポインタの各々は、前記ポインタ基準点に対する方向によって異なる画像で前記画面に表示されることを特徴とする付記１に記載のプログラム。
（付記１５）
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示させるコンピュータで用いられる方法であって、
入力装置による移動指示があったとき、前記複数のポインタの相対位置を保ったまま前記複数のポインタを該移動指示に応じて移動させ、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ該操作指示に対応する操作を行う、
ことを特徴とする方法。
（付記１６）
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示させる装置であって、
前記複数のポインタの位置の基準を示すポインタ基準点の座標を格納するポインタ基準点座標格納手段と、
前記複数のポインタの各々について、当該ポインタと前記ポインタ基準点との相対座標を格納する相対座標格納手段と、
入力装置による移動指示があったとき、前記ポインタ基準点座標格納手段に格納された座標を、該移動指示の移動ベクトルを加算することにより更新し、前記複数のポインタの各々について、前記相対座標格納手段から前記相対座標を読み込み、更新された前記ポインタ基準点の前記座標と該相対座標を加算することにより当該ポインタの実座標を算出し、当該ポインタを前記画面上の該実座標の位置に移動させる移動手段と、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ、該操作指示に対応する操作を行う操作実行手段と、
を備えることを特徴とする装置。
【図面の簡単な説明】
【０１９６】
【図１】本発明によるポインタの連動と切換の例を説明する図である。
【図２】本発明によるドラッグオブジェクトの引き渡しの例を説明する図である。
【図３】本発明による複数のポインタの配置パターンの切換の例を説明する図である。
【図４】本発明の一実施形態におけるシステム構成図である。
【図５】基本設定情報の例を示す図である。
【図６】本発明の一実施形態におけるポインタ切換の例を説明する図である。
【図７】前回停止位置情報の例を示す図である。
【図８】ポインタ相関情報の例を示す図である。
【図９】配置パターン情報の例を示す図である。
【図１０】配置パターン詳細情報の例を示す図である。
【図１１】本発明の一実施形態における処理を示すフローチャートである。
【図１２】本発明の一実施形態における配置パターン切換処理を示すフローチャートである。
【図１３】本発明の一実施形態における画面出力処理を示すフローチャートである。
【図１４】本発明の一実施形態における操作モード切換処理を示すフローチャートである。
【図１５】本発明の一実施形態における新規配置パターン登録処理を示すフローチャートである。
【図１６】本発明の一実施形態におけるポインタ数編集処理を示すフローチャートである。
【図１７】本発明の一実施形態におけるマウス移動時のマウス操作キャプチャ処理を示すフローチャートである。
【図１８】本発明の一実施形態におけるマウスボタン押下時のマウス操作キャプチャ処理を示すフローチャートである。
【図１９】本発明の一実施形態における一定時間無操作時のマウス操作キャプチャ処理を示すフローチャートである。
【図２０】本発明の一実施形態におけるマウス移動終了時のマウス操作キャプチャ処理を示すフローチャートである。
【図２１】本発明の一実施形態におけるポインタ切換判断処理を示すフローチャートである。
【図２２】本発明の一実施形態におけるドラッグ開始時のマウス操作キャプチャ処理を示すフローチャートである。
【図２３】本発明の一実施形態におけるドロップ時のマウス操作キャプチャ処理を示すフローチャートである。
【図２４】本発明のプログラムを実行するコンピュータのブロック図である。
【符号の説明】
【０１９７】
１００  画面
１０１  ポインタ基準座標ＢＡＳＥ
１０２  ポインタＰａ
１０３  ポインタＰｂ
１０４  ポインタＰｃ
１０５  ボタン１
１０６  ボタン２
１０７  ボタン３
１０８  ドラッグ対象のアイコン
１０９  移動方向
１１０  移動先の目標点
１１１  ドラッグ中のアイコン
１１２  ポインタＰｄ
１１３  ポインタＰｅ
１１４  ポインタＰｆ
１１５  ポインタＰｇ
２００  コンピュータ
２０１  オペレーティングシステム
２０２  画面表示機能
２０３  ポインティングデバイス制御機能
２０４  基本設定情報
２０５  前回停止位置情報
２０６  ポインタ相関情報
２０７  配置パターン情報
２０８  配置パターン詳細情報
２０９  画面出力処理部
２１０  マウス操作キャプチャ部
２１１  ポインタ切換判断処理部
２１２  操作モード切換処理部
２１３  ポインタ数編集処理部
２１４  配置パターン切換処理部
２１５  新規配置パターン登録処理部
３００  ＣＰＵ
３０１  ＲＯＭ
３０２  ＲＡＭ
３０３  通信インターフェイス
３０４  記憶装置
３０５  入力装置
３０６  出力装置
３０７  駆動装置
３０８  バス
３０９  プログラム提供者
３１０  可搬型記憶媒体
３１１  ネットワーク
【図１】
2007257371.tif 000003
【図３】
2007257371.tif 000004
【図４】
2007257371.tif 000005
【図１１】
2007257371.tif 000006
【図１２】
2007257371.tif 000007
【図１３】
2007257371.tif 000008
【図１４】
2007257371.tif 000009
【図１５】
2007257371.tif 000010
【図１６】
2007257371.tif 000011
【図１７】
2007257371.tif 000012
【図１８】
2007257371.tif 000013
【図１９】
2007257371.tif 000014
【図２０】
2007257371.tif 000015
【図２１】
2007257371.tif 000016
【図２２】
2007257371.tif 000017
【図２３】
2007257371.tif 000018
【図２４】
2007257371.tif 000019
【図２】
2007257371.tif 000020
【図５】
2007257371.tif 000021
【図６】
2007257371.tif 000022
【図７】
2007257371.tif 000023
【図８】
2007257371.tif 000024
【図９】
2007257371.tif 000025
【図１０】
2007257371.tif 000026