以下、本発明の実施の形態について、図面を参照しながら詳細に説明する。なお、以下の説明ではポインティングデバイスとしてマウスを利用する場合を例として説明するが、その他のポインティングデバイスを利用する場合も同様である。
以下では、まず画面表示例を説明し、それを実現するためのシステム構成、データ構成、処理内容について順に説明する。
図1は、本発明によるポインタの連動と切換の例を説明する図である。図1では、ポインタPa(102)、ポインタPb(103)、ポインタPc(104)という3つのポインタを利用する場合を例として説明する。以下では、この3つのポインタをまとめてポインタ群ともいう。
図1の(a)で、画面100には、ボタン1(105)、ボタン2(106)、ボタン3(107)というオブジェクトが表示されている。また、ポインタPa(102)、ポインタPb(103)、ポインタPc(104)が表示されている。このうちポインタPb(103)が選択状態ポインタである。ポインタPa(102)とポインタPc(104)は非選択状態ポインタである。図1では、選択状態ポインタを太い矢印で示し、非選択状態ポインタを細い矢印で示している。例えばユーザがマウスをクリックした場合、そのクリックに対応する操作は選択状態ポインタPb(103)の指示位置に対してなされる。
また、これら3つのポインタの指示位置により形成される三角形の内部には、ポインタ基準座標BASE(101)が設定されている。ポインタ基準座標BASE(101)の位置は、例えば、3つのポインタの指示位置により形成される三角形の重心に設定してもよい。しかし、実際の画面では、図1の(b)に示すように、ポインタ基準座標BASE(101)は非表示である。
また、本実施形態では、各ポインタは矢印形状の画像で表現されているが、矢印の向きは、ポインタ基準座標BASE(101)からそれぞれのポインタへの方向と一致するように設定されている。また、本発明では各ポインタ同士の相対位置が保たれる。よって、ユーザは、ある1つのポインタを見た場合、その矢印の向きから、そのポインタからポインタ基準座標BASE(101)への向きや、そのポインタがポインタ群の中でどの方向に位置するポインタなのか、他のポインタはどの方向に位置しているか、などを容易に把握することができる。
例えば、たまたまポインタPa(102)が目に入れば、その矢印の向きから、ポインタPa(102)が全体の中で左下方向に位置していると直感的に理解可能である。また、ポインタPa(102)の矢印と逆の方向を見ることにより、ポインタPb(103)やポインタPc(104)を容易に見つけることができる。そのため、ユーザは、所望のオブジェクト(例えばボタン1(105))に最も近いポインタを容易に見つけることが可能である。
図1の(c)から(e)は、ユーザがボタン1(105)をクリックしたい場合を例として、本発明によるポインタの連動と切換を示している。図1の(b)から分かるとおり、ボタン1(105)に最も近く、最も移動距離が短くて済むポインタはポインタPc(104)である。上述のとおり、ユーザは、画面100を見ただけで容易にそのことを把握可能である。
そこで、ユーザはマウスを用いてポインタPc(104)をボタン1(105)の位置に移動させる。本発明ではこの時、ポインタPb(103)とポインタPa(102)も連動して移動する。つまり、マウスによる移動指示にしたがって、3つのポインタが相対位置を保ったまま移動する。後述するように、非表示のポインタ基準座標BASE(101)は、相対位置を保って移動させるために利用される。ここで、ポインタ基準座標BASE(101)も、非表示ではあるが、ともに移動している。
ポインタPc(104)をボタン1(105)の位置まで移動させたら、ユーザは、ポインタPc(104)を選択状態にするための操作を行う。本発明では、所定の選択指示パターンに合致するマウスの操作をユーザが行うことにより、選択状態ポインタを切り換える。本実施形態での選択指示パターンとは、ポインタ基準座標BASE(101)から選択状態にしたいポインタへの方向と同じ方向に、所定の回数(例えば2回)、マウスによる移動指示を行うことである。本実施形態では、ポインタ基準座標BASE(101)から各ポインタへの方向は、そのポインタの矢印の向きと同じである。よって、選択状態にしたいポインタ(ここではポインタPc(104))の矢印の向きに所定の回数ユーザがマウスを動かせば、そのポインタが選択状態となり、残りのポインタは非選択状態となる。例えば所定の回数が2回の場合は、選択状態にしたいポインタの矢印の方向と同じ方向にマウスを小さく2往復させるつもりで動かせば(図1の(d))、1往復半したところで選択状態ポインタが切り換わる(図1の(e))。もちろん、選択状態にしたいポインタの矢印の方向と同じ方向にマウスを動かし、1度停止して、もう1度その方向に動かしても、同様に選択状態ポインタが切り換わる。
選択状態ポインタを切り換える操作を行うと、図1の(e)に示すように、画面100上でも、ポインタPc(104)が選択状態を示す太い矢印で表示され、ポインタPa(102)とポインタPb(103)が非選択状態を示す細い矢印で表示されるので、ユーザは、切換操作が成功したか否かを容易に確認することができる。ユーザは、所望のポインタPc(104)が選択状態になっており、その指示位置がボタン1(105)であると目で確認したら、マウスをクリックする。これにより、ユーザの所望の操作が実行される。
なお、実施の形態によっては、選択状態ポインタがポインタPb(103)からポインタPc(104)へ切り換わる際、ポインタPb(103)からポインタPc(104)に向かって移動する何らかのアニメーション表示をさらに行ってもよい。このようにすることで、切換操作が成功したか否かをユーザがさらに容易に視認することができる。
また、上記の例ではポインタPc(104)をボタン1(105)の位置に移動させた後、選択状態ポインタを切り換えるとして説明したが、先に切り換えてから移動するのでも構わない。
図2は、本発明によるドラッグオブジェクトの引き渡しの例を説明する図である。図2は、選択状態ポインタを用いてオブジェクトをドラッグしている最中に、選択状態ポインタが切り換えられた場合、ドラッグオブジェクトを新しく選択されたポインタに引き渡すことを示している。
図2の(a)において、画面100には、ポインタPa(102)、ポインタPb(103)、ポインタPc(104)という3つのポインタがあり、このうちポインタPb(103)が選択状態である。選択状態ポインタPb(103)を用いて、マウスのクリックなどによりドラッグ対象のアイコン108を選択し、移動方向109の矢印で示される移動先の目標点110までドラッグしてドロップする場合を例として説明する(もちろん、アイコン以外の任意のオブジェクトのドラッグ・アンド・ドロップ操作に関しても同様である)。
ポインタPb(103)を用いてドラッグし始めると、1つのポインタを用いる従来の方式と同様に、図2の(b)に示すようなドラッグ中のアイコン111が表示される。
ところで、ドラッグ対象のアイコン108に最も近いポインタはポインタPb(103)だが、移動先の目標点110に最も近いポインタは、ポインタPa(102)である。そこで、図2の(c)において、ドラッグ操作の移動距離を少なくするためには、選択状態ポインタをポインタPb(103)からポインタPa(102)に切り換えるとともに、ポインタPb(103)からポインタPa(102)にドラッグオブジェクトを引き渡す必要がある。本発明では、図1で説明したようなポインタ切換操作をユーザが行うと、切換前に選択状態だったポインタ(この例ではポインタPb(103))がオブジェクトをドラッグ中だったか否かを判定し、ドラッグ中であれば、ドラッグオブジェクトを新しく選択状態になったポインタ(この例ではポインタPa(102))に引き渡す処理が行われる。これにより、ユーザはポインタPa(102)をわずかに移動させるだけで、ドラッグ中のアイコン111を移動先の目標点110にドロップすることができる。
なお、実施の態様によって、ドラッグオブジェクトを引き渡す際に、ドラッグ中のアイコン111がポインタPb(103)からポインタPa(102)に瞬間的に移動したように表示してもよく、ポインタPb(103)からポインタPa(102)に向かってドラッグ中のアイコン111が移動するアニメーション表示を行ってもよい。アニメーション表示を行うことにより、ドラッグオブジェクトの引き渡しや選択状態ポインタの切換を、ユーザがより容易に視認することができる。
図3は、本発明による複数のポインタの配置パターンの切換の例を説明する図である。複数のポインタをどのような配置で画面上に分散させたら効率的であるかは、ユーザの状況(作業画面の構成、ユーザの癖や好み)によって異なる。そこで、複数の配置パターンを登録しておき、登録されたものの中から随時ユーザが最も使いやすい配置を選択できるようにすることが好ましい。
例えば、図3の(a)の画面100には、ボタン1(105)、ボタン2(106)、ボタン3(107)という3つのボタンと、ポインタPa(102)、ポインタPb(103)、ポインタPc(104)という3つのポインタが表示されている。この図には、実際には画面100に表示されないポインタ基準座標BASE(101)も示してある。
ところで、図3の(a)におけるボタンの配置には偏りがある。例えば、ボタン1(105)やボタン2(106)には、比較的近くにポインタPc(104)が存在するが、ボタン3(107)を操作しようとすると、最も近いポインタPb(103)でもある程度の距離を移動させる必要がある。また、ポインタPa(102)はいずれのボタンからも遠いため、有効に利用されそうにない。
このような構成の作業画面で、この3つのボタンを頻繁に操作する場合、図3の(a)の配置パターンよりも、図3の(b)の配置パターンの方が、作業全体としてのマウスの移動距離を少なくすることができる。図3の(b)の配置パターンでは、3つのボタンのそれぞれの近傍に1つずつポインタが存在するような配置になっている。
そこで、本発明の好ましい実施形態においては、図3の(a)や(b)のようにいくつかの配置パターンを登録しておき、ユーザが随時、画面構成に見合った使いやすい配置パターンを切り換えて使えるようにしている。
詳しくは後述するが、ポインタ自体の座標は移動指示によって常に変動するため、このような配置パターンとして登録しておくべき情報は、各ポインタおよびポインタ基準座標BASE(101)の相対的な位置関係である。また、ポインタ群の初期表示位置をさらに登録しておくことが望ましい。
なお、図3ではどちらの配置パターンのポインタ数も同じだが、もちろん、ポインタの数もユーザが使いやすいように任意に設定可能とすることが望ましい。
図4は、本発明の一実施形態におけるシステム構成図である。図4では機能別にブロックを表示しているが、実施の形態においては、図4の異なるブロックの機能が同一のハードウェア(CPU(Central Processing Unit)、メモリ、ハードディスクなど)により実現されてもよい。
本発明を実施するコンピュータ200は、通常のオペレーティングシステム201がインストールされており、オペレーティングシステム201中の画面表示機能202やポインティングデバイス制御機能203を本発明で利用する。ここで画面表示機能202とは、画面上のどこに何を表示するかの指示にしたがって画面表示を行う機能である。また、ポインティングデバイス制御機能203とは、ポインティングデバイスからの入力を監視し、各種プログラムがポインティングデバイスからの入力をイベントとして検知することができるようにする機能である。これにより、各種プログラムは、例えば、マウスによる移動指示が行われたらX方向とY方向それぞれの移動距離を、マウスがクリックされたらクリックされたということを、それぞれ検知することが可能となる。
本発明で利用する各種の情報には、基本設定情報204、前回停止位置情報205、ポインタ相関情報206、配置パターン情報207、配置パターン詳細情報208がある。これらの情報は、コンピュータ200のハードディスクに格納されたものがメモリに読み出されて使われる場合もあり、プログラムの実行によって生成されてメモリ上に記憶される場合もある。物理的な格納場所は本発明と直接関係がないので、図4では情報の物理的な格納場所を示していない。情報の詳細は後述する。
図中に太枠で示したのが、本発明の処理を行う各処理部である。具体的には、画面出力処理部209、マウス操作キャプチャ部210、ポインタ切換判断処理部211、操作モード切換処理部212、ポインタ数編集処理部213、配置パターン切換処理部214、新規配置パターン登録処理部215である。これらの動作はフローチャートとあわせて後述する。
本発明によるポインタの連動と切換の制御は、マウス操作キャプチャ部210とポインタ切換判断処理部211により実現される。マウス操作キャプチャ部210は、オペレーティングシステム201内のポインティングデバイス制御機能203を利用している。操作モード切換処理部212、ポインタ数編集処理部213、配置パターン切換処理部214、新規配置パターン登録処理部215は、ユーザの便宜を図るための付加的機能を実現する処理部である。画面出力処理部209は他の処理部による処理を行った後の画面出力を行う処理部であり、オペレーティングシステム201内の画面表示機能202を利用している。
図5は、図4に示した基本設定情報204の例を示す図である。基本設定情報204は、本発明のプログラム自体の基本設定を示す情報なので、図5のように表形式で表現した場合、データは1行のみである。図5には、「操作モード」、「切換回数」、「無操作監視時間」という3つの列がある。
「操作モード」は、現在の操作モードを示し、ユーザからの明示的な指示により随時変更される項目である。操作モードには、ポインティングデバイスから入力された移動指示を、画面上の全ポインタに反映する「集団操作モード」と、選択状態ポインタのみに反映する「独立操作モード」がある。2つのモードの意味や動作は後述する。
「切換回数」は、選択状態ポインタが切り換わるまでに必要な、同一方向への移動指示の回数を示す。例えば図1の(d)では、この回数が2回の例について述べた。ユーザからの明示的な指示により切換回数を変更可能としてもよい。例えば切換回数が1回だと、偶然の操作によって選択状態ポインタが切り換わる可能性が高まる。しかし、あまり大きな値を設定するとユーザの負担が大きくなるので、実施の態様に応じて適切な値を設定する必要がある。
「無操作監視時間」は、マウスの無操作状態が続いた場合に、操作履歴をクリアする時間を秒数で示したものである。ユーザからの明示的な指示により無操作監視時間を変更可能としてもよい。
図5の例では、切換回数が3で無操作監視時間が2である。この場合のポインタ切換の例を、図6を参照して説明する。
図6の例では、(a)に示したように、ポインタ基準座標BASE(101)に対して上、右、下、左の位置にポインタPd(112)、ポインタPe(113)、ポインタPf(114)、ポインタPg(115)があるものとし、ポインタPe(113)が選択状態とする。基本設定情報204の内容が図5のとおりの場合、ポインタPd(112)を選択状態にするためには、ポインタ基準座標BASE(101)からポインタPd(112)への方向、つまり上向きに3回マウスを動かす必要がある。ただし、上向きの移動指示が連続して行われる必要はなく、例えば、マウスを往復移動させるなど、上向きの移動指示の間に他の方向への移動指示を挟んでもよい。
図6の(b)は、マウスを往復移動させて選択状態ポインタを切り換える例である。ステップS1において、マウスによる移動指示の回数は初期状態の0である。ステップS2からステップS7で、ユーザがマウスを上、下、上、下、上、下と3往復させたとする。ポインタPd(112)が選択状態になるか否かの判定は、上向きの移動指示の回数により判定される。図6の(b)の表にはその回数が示してある。
ユーザはマウスを往復移動させるが、上向きの移動のときのみ、ポインタPd(112)の選択指示パターンに対応する移動指示の回数として数えられる。よって、ステップS6で2往復半した(3回目の上向きの移動指示を行った)時点で、図5の切換回数で定められた回数(3回)に達し、ポインタPd(112)が選択状態となる。ただし、図5では無操作監視時間が2秒と設定されているので、ステップS2とS3、S3とS4、S4とS5、S5とS6の間は各々2秒以下でなくてはならない。
ところで、このようにマウスの往復移動によって選択状態ポインタを切り換えようとする場合、図6の(a)のように、180度逆向きのポインタが存在していると、往復移動をどちらの向きから始めるかによって、どのポインタが選択状態になるかが異なる。
例えば、図6の(a)において、ポインタPf(114)はポインタ基準座標BASE(101)に対して下の方向に位置している。よって、下向きの移動指示の回数が3回に達したら、ポインタPf(114)が選択状態となる。図6の(b)のステップS2からステップS7で、ユーザがマウスを上、下、上、下、上、下と3往復させたとき、ポインタPf(114)に対しては、下向きの移動のみがカウントされる。よって、ステップS5で2往復終えた時点で回数は2、ステップS6で2往復半した時点でも回数は2のままである。よって、このステップS6で回数が先に3に達したポインタPd(112)が選択状態となり、ポインタPf(114)は非選択状態のままである。逆に、ユーザが往復移動を下、上、下、上、下、上の順で行っていれば、ポインタPd(112)ではなくポインタPf(114)が選択状態となる。
なお、詳しくは後述するが、ステップS6で選択状態ポインタを切り換えると、その時点で全てのポインタに対する回数のカウントは0にクリアされるので、ステップS7の下向きのマウス移動指示は、改めて1から数えなおすことになる。
また、選択状態ポインタを切り換えるためには、別にマウスを往復移動させる必要はない。例えば、ユーザの好みなどによっては、図6の(c)に示すように、ポインタPd(112)を選択したいときは、単純に上への移動指示を3回連続して行うのでもよい。
図7は、図4に示した前回停止位置情報205の例を示す図である。前回停止位置情報205も、表形式で表現した場合にはデータが1行のみとなる。図7には「前回X座標」、「前回Y座標」という2つの列がある。
前回停止位置情報205は、移動指示の度に変更され、マウスが停止した時点でのポインタ基準座標BASE(101)の座標を表す情報である。すなわち、「前回X座標」は、前回マウスが停止した時のポインタ基準座標BASE(101)のX座標を示し、「前回Y座標」は、前回マウスが停止した時のポインタ基準座標BASE(101)のY座標を示す。前回停止位置情報205を利用することにより、マウスによる移動指示が行われる度に、その移動指示の方向を把握することができる。
図8は、図4に示したポインタ相関情報206の例を示す図である。ポインタ相関情報206は、図3に示したようないくつかのポインタの配置パターンのうち、現在使われている配置パターンに含まれるポインタとポインタ基準座標BASE(101)に関する情報である。よって、図8のような表形式で表した場合、データは、(現在使われている配置パターンに含まれるポインタの数+1)行である。図8には、「ポインタ名」、「相対X座標」、「相対Y座標」、「選択状態フラグ」、「X方向成分」、「Y方向成分」、「操作発生回数」、「リンクパス」という8つの列がある。このうち、「選択状態フラグ」、「操作発生回数」、「リンクパス」が、ユーザによるマウス操作に応じて随時書き換えられる。
「ポインタ名」は、各配置パターン内でポインタおよびポインタ基準座標BASE(101)を一意に識別するコードである。例えば、図8からは、ポインタ基準座標BASE(101)に対するコードが「BASE」であり、他に「Pa」、「Pb」、「Pc」という3つのポインタがこの配置パターンに含まれることが分かる。
「ポインタ名」が「BASE」の行は特別な行であり、「選択状態フラグ」、「X方向成分」、「Y方向成分」、「操作発生回数」、「リンクパス」は使わない。「相対X座標」と「相対Y座標」も他の行とは異なる意味で利用する。具体的には、「相対X座標」と「相対Y座標」は、ポインタ基準座標BASE(101)の実座標の、それぞれ水平方向成分と垂直方向成分を示す。
「ポインタ名」が「BASE」以外の行は、各ポインタに対応する行である。これらの行において、「相対X座標」と「相対Y座標」は、当該ポインタのポインタ基準座標BASE(101)に対する相対座標のそれぞれ水平方向成分と垂直方向成分を示す。
「選択状態フラグ」は、そのポインタが選択状態か否かを識別するフラグであり、0が非選択状態、1が選択状態を示す。選択状態ポインタが1つだけ存在し、残りのポインタは全て非選択状態である。
「X方向成分」と「Y方向成分」は、ポインタ基準座標BASE(101)からそのポインタへの方向と同じ方向の単位ベクトルの、それぞれ水平方向成分と垂直方向成分を示す。「X方向成分」と「Y方向成分」は、「相対X座標」と「相対Y座標」から算出することができる。
「操作発生回数」は、X方向成分とY方向成分により表される方向と同じ方向の移動指示が発生した回数を示す。操作発生回数が図5の基本設定情報204の切換回数に達したポインタが選択状態に切り換えられる(同時に他のポインタは非選択状態に切り換えられる)。操作発生回数は、図6の(b)や(c)に示した回数に該当し、選択状態ポインタが切り換えられる際などに0にクリアされる。
「リンクパス」は、そのポインタを用いてオブジェクトをドラッグ中のとき(例えば図2の(b)や(c)のとき)、そのオブジェクトへのパスを示す。パスの表現形式は実施の態様に応じて任意の形式を採用することができる。リンクパスはその性質上、選択状態フラグが1の行でのみ意味がある項目である。
図9は、図4に示した配置パターン情報207の例を示す図である。配置パターン情報207を表形式で表現した場合には、データの数は、登録されているポインタの配置パターンの数である。例えば図3の2つの配置パターンしか登録されていなければ、データは2行のみである。図9には、「パターンコード」、「BASE初期X座標」、「BASE初期Y座標」、「初期表示フラグ」という4つの列がある。
「パターンコード」は、配置パターンを識別する一意のコードである。「BASE初期X座標」と「BASE初期Y座標」は、配置パターンを切り換えた直後のポインタ基準座標BASE(101)の座標の初期値の、それぞれ水平方向成分と垂直方向成分である。「初期表示フラグ」は、本発明のプログラムが起動された直後、最初にデフォルトで選択される配置パターンを指定するフラグである。初期表示フラグが1の配置パターンがデフォルトとして選択される。すなわち、初期表示フラグが1となる行は1行のみで、残りの行では0となる。
図10は、図4に示した配置パターン詳細情報208の例を示す図である。配置パターン詳細情報208は、図9の配置パターン情報207に登録されている各配置パターンに含まれるポインタとポインタ基準座標BASE(101)に関する詳細情報である。配置パターン詳細情報208を表形式で表現した場合には、データの数は、登録されている各配置パターンに含まれるポインタの総数に、登録されている配置パターンの数を足したものとなる(それぞれの配置パターンにおけるポインタ基準座標BASE(101)を含むため)。図10には、「パターンコード」、「ポインタ名」、「相対X座標」、「相対Y座標」、「選択状態フラグ」、「X方向成分」、「Y方向成分」という7つの列がある。
「パターンコード」は、配置パターンを識別する一意のコードであり、図9の配置パターン情報207と同様である。「ポインタ名」は、配置パターン内で一意にポインタを識別するコードであり、図8のポインタ相関情報206と同様である。「相対X座標」と「相対Y座標」は、ポインタ名が「BASE」の行では特に利用されず、それ以外の行では、図8のポインタ相関情報206と同様に、当該ポインタのポインタ基準座標BASE(101)に対する相対座標のそれぞれ水平方向成分と垂直方向成分を示す。「選択状態フラグ」は、ポインタ相関情報206の選択状態フラグと似ているが、その配置パターンが選択された時に最初にデフォルトで選択状態となるポインタは1、それ以外は0となるフラグである。配置パターンごとに、「選択状態フラグ」が1となる行が1つだけ存在する。「X方向成分」と「Y方向成分」は、ポインタ名が「BASE」の行では特に利用されず、それ以外の行では、ポインタ基準座標BASE(101)からそのポインタへの方向と同じ方向の単位ベクトルの、それぞれ水平方向成分と垂直方向成分を示し、ポインタ相関情報206と同様である。つまり、「X方向成分」と「Y方向成分」は、「相対X座標」と「相対Y座標」から算出することができる。
なお、上記において、説明の便宜上、基本設定情報204(図5)、前回停止位置情報205(図7)、ポインタ相関情報206(図8)、配置パターン情報207(図9)、配置パターン詳細情報208(図10)のそれぞれを表形式で表現して説明したが、これらの情報は、表形式以外のデータ形式で表現してもよい。また、表形式のデータとそれ以外の形式のデータを組み合わせてもよい。例えば、前回停止位置情報205は、実施の形態によって、本発明のプログラムを実行するコンピュータ200のCPU内の特定の2つのレジスタに格納される2つの変数であってもよく、コンピュータ200のメモリ上の2つの変数でもよい。また、実施の形態によっては、ポインタ相関情報206のうちポインタ名、相対X座標、相対Y座標、X方向成分、Y方向成分、操作発生回数のみを図8に示したような表形式で表現し、選択状態フラグとリンクパスに相当する内容は、例えば、コンピュータ200のメモリ上に値が格納される2つの変数により表現してもよい。つまり、図8の表の行数分の選択状態フラグとリンクパスのかわりに、図8の表中で選択状態ポインタに対応する行の番号を記憶する1つの変数と、選択状態ポインタに対応するリンクパスを記憶する1つの変数を利用してもよい。
図11は、本発明の一実施形態における処理を示すフローチャートである。本発明のプログラムは、ポインティングデバイスの操作に関するものであるから、コンピュータ200の起動中は常に稼動させることが望ましい。そこで、オペレーティングシステム201が起動されると図11の本発明のプログラムが呼び出され、コンピュータ200がシャットダウンされるまで本発明のプログラムが実行され続けるものとして、以下では説明する。
図11の処理全体の流れは、ステップS101とステップS102で初期化した後、ステップS103でイベントの発生を待ち、発生したイベントに応じて各種処理を行ってはステップS103に戻り、コンピュータ200をシャットダウンさせるなどの終了指示のイベントが発生するまでそれを繰り返す、という流れである。これは一般的なイベント駆動型のプログラムと同様である。
ステップS101では、図9の配置パターン情報207を検索し、初期表示フラグが1の行を検索する。初期表示フラグが1の行は、デフォルトで選択されるポインタの配置パターンを示す。そしてこの行のパターンコードを変数Ptに記憶する。Ptの値は、物理的にはコンピュータ200のメモリなどに格納される。Ptの記憶後、ステップS102に移行する。
ステップS102では、Ptを引数として与えて配置パターン切換処理を呼び出し、Ptに対応するポインタの配置パターンを画面上に表示する。配置パターン切換処理の詳細は後述する。配置パターン切換処理の実行後、ステップS103に移行する。
ステップS103では、所定のイベントの発生を待ち、イベントが発生したらイベントの種類に応じた処理を行う。ユーザからの終了指示イベント(コンピュータ200をシャットダウンさせる明示的な指示など)が検知された場合、処理を終える。配置パターン切換処理の実行を指示するイベントが検知された場合、ステップS104に移行する。操作モード切換処理の実行を指示するイベントが検知された場合、ステップS106に移行する。新規配置パターン登録処理の実行を指示するイベントが検知された場合、ステップS107に移行する。ポインタ数編集処理の実行を指示するイベントが検知された場合、ステップS109に移行する。ユーザが何らかのマウス操作を行い、オペレーティングシステム201のポインティングデバイス制御機能203を通じてマウス操作イベントの発生が検知された場合、ステップS111に移行する。検知可能なマウス操作の種類には、例えば、移動、移動停止、マウスボタンの押下、ドラッグ開始、ドロップ(ドラッグ終了)などがある。また、ポインティングデバイス制御機能203はごく短い周期(例えば0.1秒以下の周期)でマウス操作の発生の有無を監視している。この監視はタイムイベントの一種だが、これもステップS111に移行するためのトリガとなっている。
なお、本発明によるポインタの連動および選択状態ポインタの切換は、マウス操作イベントまたはタイムイベントが発生したときに実行されるステップS111の処理により実現されるが、以下では説明の都合上、他の付加的機能から先に説明する。また、上述の配置パターン切換処理、操作モード切換処理、新規配置パターン登録処理、ポインタ数編集処理の実行を指示するイベントとは、具体的には、キーボード上の所定のキーを押す操作や、画面上に表示された所定のメニューの選択指示操作などである。
ステップS104は、配置パターン切換処理の実行が指示されたときに実行される。よって、ユーザが好みの配置パターンを選択することができるように、図9の配置パターン情報207から全行を検索し、コンピュータ200の画面上にそれらの配置パターンの一覧を表示する。ユーザが配置パターンのうち1つをこの一覧から選択すると、選択された配置パターンのパターンコードを変数Ptに格納する。そしてステップS105に移行する。
ステップS105では、Ptを引数として与えて配置パターン切換処理を呼び出す。これはステップS102と同様であり、詳しい処理は後述する。その後、ステップS103に戻る。
ステップS104とステップS105により、ユーザは、予め登録されている様々な配置パターンの中から、画面構成や作業状況に応じて好みの配置パターンを選ぶことができる。
ステップS106は、操作モード切換処理の実行が指示されたときに実行される。操作モード切換処理は、図5の基本設定情報204の操作モードを書き換える処理である。ユーザは、操作モード切換処理の実行を指示する際、切換後の操作モードも指定する。その指定された操作モードに対応する変数Modeを引数として与え、ステップS106では操作モード切換処理を呼び出し、操作モード切換処理が終了するとステップS103に戻る。
操作モードは、通常は集団操作モードを利用する。集団操作モードでは、移動指示が全ポインタに反映される。つまり、マウスをある方向に動かせば、全部のポインタが同じ方向に同じだけ移動する。一方、独立操作モードでは、移動指示が選択状態ポインタのみに反映される。独立操作モードは、新しい配置パターンを編集する場合など、例外的な場合に利用される操作モードである。
ステップS107からステップS110の処理は、どちらか一方の操作モードでのみ実行すべき処理を含む。本実施形態では、ユーザが無意識に間違って指示してしまうのを防ぐため、まずユーザに明示的に操作モードを切り換えさせるようにしている。そのため、ステップS106の操作モード切換処理を提供している。
ステップS107は、新規配置パターン登録処理の実行が指示されたときに実行される。新規配置パターン登録処理は、集団操作モードのときのみ実行されるべき処理なので、ステップS107では、図5の基本設定情報204の操作モードを読み込んで現在の操作モードを判断する。そして、現在の操作モードが集団操作モードならステップS108に移行し、独立操作モードならステップS103に戻る。
ステップS108では、新規配置パターン登録処理を呼び出して実行する。新規配置パターン登録処理は、ユーザによって編集されてできた新しい配置パターンを、次回以降に利用可能とするために登録する処理である。処理の詳細と、集団操作モードでしか実行されない理由は、後述する。新規配置パターン登録処理を終えるとステップS103に戻る。
ステップS109は、ポインタ数編集処理の実行が指示されたときに実行される。ポインタ数編集処理は、独立操作モードのときのみ実行されるべき処理なので、ステップS109では、図5の基本設定情報204の操作モードを読み込んで現在の操作モードを判断する。そして、現在の操作モードが独立操作モードならステップS110に移行し、集団操作モードならステップS103に戻る。
ステップS110では、ポインタ数編集処理を呼び出して実行する。ユーザは、ポインタ数編集処理の実行を指示する際、ポインタの追加と削除のいずれを行うのかも指定する。ステップS110では、その指定内容を示す変数EditModeを引数として与え、ポインタ数編集処理を呼び出す。ポインタ数編集処理は、ユーザが新しい配置パターンを作成するために、ポインタの追加・削除を指示したときに行う処理である。処理の詳細と、独立操作モードでしか実行されない理由は、後述する。ポインタ数編集処理を終えるとステップS103に戻る。
ステップS111は、マウスが操作された場合または、マウス操作の有無を監視するタイムイベントが発生した場合に実行される。
マウス操作を追跡し、特定の移動指示(例えば左への移動)がされたときに、アプリケーション(例えばブラウザ)の特定の操作(例えば直前に表示していたWebページに戻る操作)を実行させる、マウスジェスチャと呼ばれる技術が従来から知られている。マウス操作イベントをトリガとしてステップS111を呼び出すのも、これと同様である。ただし、呼び出す処理(ステップS111で行う処理)が、従来にはない処理である。
ステップS111から呼び出すマウス操作キャプチャ処理により、選択状態ポインタを切り換えたり、マウスの動きに連動させてポインタを画面上で移動させたりしている。詳細は後述する。マウス操作キャプチャ処理を終えるとステップS103に戻る。
以上のようにして、イベントの発生を検知してはそのイベントに対応する処理を行うことを繰り返す。
なお、図には示していないが、シングルクリックやダブルクリックなど、何らかの操作指示が行われたときも、イベントとして検知される。このとき、選択状態ポインタが示す画面上の指示位置に対してのみ、その操作指示に対応する操作を行う。
つまり、操作指示のイベントが検知されると、本発明のプログラムは以下のように動作する。まず、図8のポインタ相関情報206で選択状態フラグが1の行を検索して選択状態ポインタを見つけ、その行の相対X座標と相対Y座標から選択状態ポインタのポインタ基準座標BASE(101)に対する相対座標を得る。そして、ポインタ名が「BASE」の行を検索して、その行の相対X座標と相対Y座標からポインタ基準座標BASE(101)の実座標を得る。ポインタ基準座標BASE(101)の実座標と選択状態ポインタの相対座標から、選択状態ポインタの実座標を算出し、その実座標の位置で操作指示が行われたものとして、対応する操作を実行する。これにより、例えば、選択状態ポインタがあるアイコン上にあり、そこでダブルクリック(操作指示)が行われた場合、そのアイコンに対応するファイルを開くという操作が実行される。
なお、ユーザが任意の配置パターンを好みなどに応じて作成して登録するには、以下の手順で行う必要がある。まず、操作モード切換処理(ステップS106)により、操作モードを集団操作モードから独立操作モードに切り換える。その後、ポインタ数編集処理(ステップS110)によってポインタ数を増減させたり、各ポインタを任意の位置に移動させたりして、新たな配置パターンを作成する。作成したら、再度操作モード切換処理(ステップS106)の実行を指示し、操作モードを独立操作モードから集団操作モードに戻す。そして、新規配置パターン登録処理(ステップS108)によりその配置パターンを登録する。こうして登録された配置パターンは、随時、配置パターン切換処理(ステップS105)により利用可能となる。
この手順は多少煩雑だが、後述するとおり、本発明におけるポインタ基準座標BASE(101)に関する前提条件が崩れるのを防ぐためには有効である。
次に、図12を参照して、図11のステップS102およびステップS105で呼び出されて実行される配置パターン切換処理について説明する。配置パターン切換処理は、引数として切り換えたい配置パターンのパターンコードPtを与えられ、呼び出される。また、配置パターン切換処理は、図4の配置パターン切換処理部214が実行する。
ステップS201では、図9の配置パターン情報207内でパターンコードがPtと等しいレコード(行)を検索する。パターンコードは配置パターン情報207内で一意のコードなので、ここでは1つのレコードだけが検索される。検索されたレコードのBASE初期X座標およびBASE初期Y座標を抽出し、それぞれ変数StartBxとStartByに代入してから、ステップS202に移行する。
ステップS202では、パターンコードがPtと等しいレコードを図10の配置パターン詳細情報208内で検索する。そのようなレコードは図10に示すように配置パターン詳細情報208に複数ある。なぜなら、各配置パターンは、1つ以上のポインタと1つのポインタ基準座標BASE(101)に関する情報により表されるからである。これら検索された複数のレコードをレコード群Grp1として抽出し、コンピュータ200のメモリなどに内容を記憶してから、ステップS203に移行する。
ステップS203では、図8のポインタ相関情報206として記憶されているデータを全て削除する。ポインタ相関情報206は、現在使われている配置パターンに含まれるポインタとポインタ基準座標BASE(101)に関する情報なので、配置パターン切換処理によって配置パターンを切り換える際には、内容を書き換える。そのために、まず切換前の配置パターンに関する情報をステップS203で削除する。削除後、ステップS204に移行する。
ステップS204では、図8のポインタ相関情報206にステップS202で記憶したGrp1の内容をコピーする。なお、図10の配置パターン詳細情報208と図8のポインタ相関情報206では、データの項目に若干の差異がある。具体的には、図8と図10の比較から分かるとおり、ポインタ名、相対X座標、相対Y座標、選択状態フラグ、X方向成分、Y方向成分の6列は両者で一致しているが、操作発生回数、リンクパスの2列はポインタ相関情報206にしかない列である。そこで、前記の6列はGrp1の内容をそのままポインタ相関情報206にコピーし、残りの2列は全レコードに対して適当な初期値を代入する。例えば操作発生回数は0に初期化するのが望ましい。リンクパスは、採用するパスの表現形式に応じて、例えば、空文字列などで初期化する。コピーと初期化の後、ステップS205に移行する。
ステップS205では、ステップS201で記憶したStartBxとStartByの値を、図8のポインタ相関情報206でポインタ名が「BASE」の行の相対X座標、相対Y座標にそれぞれコピーする。ポインタ名が「BASE」の行の相対X座標と相対Y座標は、ポインタ基準座標BASE(101)の実座標を示すので、これによって、ポインタ基準座標BASE(101)を点(StartBx,StartBy)に位置させることができる。以上により、ポインタ相関情報206が、パターンコードがPtの配置パターンの情報に書き換えられたことになるので、ステップS206に移行する。
ステップS206では、書き換えられたポインタ相関情報206にもとづいて画面に各ポインタを表示するために画面出力処理を呼び出して実行する。画面出力処理の詳細は後述するが、これにより、パターンコードがPtの配置パターンの各ポインタが、点(StartBx,StartBy)にポインタ基準座標BASE(101)が位置した状態で、画面上に表示される。画面出力処理の実行後、配置パターン切換処理は終了する。
なお、別の実施形態では、図9の配置パターン情報207のBASE初期X座標とBASE初期Y座標の列をなくしてもよい。かわりに、図10の配置パターン詳細情報208でポインタ名が「BASE」の行の相対X座標と相対Y座標に、配置パターンが切り換わったときのポインタ基準座標BASE(101)の初期座標を記憶すればよい。この場合、ステップS201とステップS205は不要となる。
次に図13を参照して、図12のステップS206で呼び出された画面出力処理について説明する。画面出力処理は、後述のように、操作モード切換処理(図14)、ポインタ数編集処理(図16)、マウス操作キャプチャ処理(図17と図20)からも呼び出される。また、画面出力処理は図4の画面出力処理部209が実行する。
画面出力処理は画面上に各ポインタを表示する処理だが、図13では、各ポインタの座標変換(図8のポインタ相関情報206の相対X座標と相対Y座標から実座標を求める)と表示属性の変更のみを行い、一般的な各種表示機能は図4のオペレーティングシステム201の画面表示機能202を利用して実現している。
なお、以後のフローチャートで説明する実施の形態において、選択状態ポインタは、非選択状態ポインタよりも高輝度で表示して区別可能にしているとする。また、各ポインタの形状は、ポインタ基準座標BASE(101)からそのポインタへの方向の矢印形状だとする。
ステップS301では、ポインタ名が「BASE」以外のレコード(行)を図8のポインタ相関情報206内で検索する。つまり、画面上に表示すべき全ポインタの情報を検索する。これら検索されたレコードをレコード群Grp4として抽出し、ステップS302に移行する。
ステップS302からステップS308までは繰り返しループを形成しており、レコード群Grp4に含まれる各レコードに対して1回ずつ実行される。
ステップS302では、レコード群Grp4の全てのレコードについて処理したかどうか判定する。全てを処理し終えていれば判定が「はい」となって、画面出力処理を終了する。それ以外のとき判定が「いいえ」となって、ステップS303に移行する。
ステップS303では、未処理のレコードをGrp4の中から1つ選んでコンピュータ200のメモリなどに当該レコードの内容を読み込む。そしてステップS304に移行する。
ステップS304からステップS306では、ステップS303で選んだレコード(現在処理中のポインタ)が選択状態ポインタか否かによって、そのポインタの表示属性を設定する。具体的には、ステップS304でそのレコードの選択状態フラグが1(選択状態ポインタ)か0(非選択状態ポインタ)かを判断し、選択状態ポインタの場合はステップS305を、非選択状態ポインタの場合はステップS306をそれぞれ実行する。
ステップS305では、現在処理中のポインタが選択状態なので、当該ポインタを高輝度表示に設定し、ステップS307に移行する。
ステップS306では、現在処理中のポインタが非選択状態なので、当該ポインタを通常の輝度の表示に設定し、ステップS307に移行する。
ステップS307では、現在処理中のポインタの形状を設定する。本実施形態において、各ポインタの形状は、ポインタ基準座標BASE(101)からそのポインタへの向きの矢印形状である。よって、ステップS303で読み込んだデータのX方向成分とY方向成分によって示される単位ベクトルと同じ方向の矢印を、当該ポインタを表す形状として設定する。設定後、ステップS308に移行する。
ステップS308では、ステップS303で読み込んだデータの相対X座標と相対Y座標を実座標に変換し、その座標に現在処理中のポインタを表示する。
実座標への変換は、次のように行う。図8のポインタ相関情報206内でポインタ名が「BASE」の行を検索し、その相対X座標と相対Y座標として記憶されている座標をコンピュータ200のメモリなどに読み込む。この座標はポインタ基準座標BASE(101)の実座標なので、これに現在処理中のポインタの相対X座標と相対Y座標を加算し、現在処理中のポインタの実座標を算出する。
そして、図4のオペレーティングシステム201の画面表示機能202を利用して、算出した実座標の位置に、設定済みの表示属性と形状で、現在処理中のポインタを表示する。表示後、ステップS302に戻る。
以上のようにして、Grp4に含まれる全てのポインタについて処理し終えたら、画面出力処理を終了する。
次に、図14を参照して、図11のステップS106で呼び出されて実行される操作モード切換処理について説明する。操作モード切換処理は、切り換えたい操作モードModeを引数として与えられ、呼び出される。また、操作モード切換処理は図4の操作モード切換処理部212が実行する。
ステップS401では、図5の基本設定情報204から現在の操作モードを抽出し、変数NowModeに代入し、ステップS402に移行する。
ステップS402では、ModeとNowModeが等しいか否かを判定する。等しい場合、判定は「はい」となり、操作モードを変更する必要がないため、操作モード切換処理を終了する。等しくない場合、判定は「いいえ」となり、ステップS403に移行する。
ステップS403では、Modeが集団操作モードか否かを判定する。Modeが集団操作モードの場合(独立操作モードから集団操作モードに切り換える場合)、判定は「はい」となり、ステップS404に移行する。Modeが独立操作モードの場合(集団操作モードから独立操作モードに切り換える場合)、判定は「いいえ」となり、ステップS408に移行する。
ステップS404からステップS407は、独立操作モードから集団操作モードに切り換える場合にのみ実行される。
ステップS404では、図8のポインタ相関情報206でポインタ名が「BASE」以外の全ての行の相対X座標と相対Y座標をコンピュータ200のメモリなどに読み込み、図13のステップS308と同様の方法で全ポインタの実座標を算出する。算出後、それらの実座標から基準点の実座標を算出する。ここで基準点とは、操作モード切換処理後、新たにポインタ基準座標BASE(101)とする点を指す。基準点の実座標は、実施の態様に応じて所定の方法により算出する。
例えば、基準点のX座標は各ポインタのX座標(実座標)の算術平均、基準点のY座標は各ポインタのY座標(実座標)の算術平均、としてもよい。また、N個のポインタにより形成されるN角形の重心を基準点としてもよい。なお、基準点は、ポインタの総数がNのとき、全ポインタの位置により定まるN角形の内部にあることが好ましいので、そうなるように基準点の座標の算出方法を定めることが望ましい。基準点がN角形の内部にあると、本実施形態のように各ポインタを矢印形状で表現した場合に、一般的に各矢印が基準点に対して放射状に外側を向く(図1など)。よって、ユーザが画面上であるポインタを見たときに、ポインタ群内でのそのポインタの位置などを視認することが容易だという利点がある。基準点の座標の算出後、ステップS405に移行する。
ステップS405では、ステップS404で算出された各ポインタと基準点の実座標をもとに、基準点から各ポインタへの方向ベクトルを算出する。そして、基準点からの方向が重複するポインタの組が存在するか否かを判定する。そのような組が存在すれば判定は「はい」となってステップS410に移行し、存在しなければ判定は「いいえ」となってステップS406に移行する。
本発明では、選択状態にすべきポインタをマウスの移動指示の方向によって選ぶため、各ポインタは、ポインタ基準座標BASE(101)からの方向が異なるという条件を満たさなくてはならない。しかし、独立操作モードでユーザが任意に配置パターンを編集した場合、編集前のもとのポインタ基準座標BASE(101)の座標が、編集後の各ポインタに対してもそのような条件を満たしているとは限らない。そこで、独立操作モードから集団操作モードに切り換えようとする場合は、ステップS404のように基準点を算出し、ステップS405でその基準点を新たにポインタ基準座標BASE(101)として利用できるか否かを判定し、利用できる場合はステップS406からステップS409の処理を行う。
なお、算出した基準点がいずれかのポインタと一致する座標の場合、基準点から当該ポインタへの方向ベクトルは0ベクトルとなる。この場合、当該ポインタを選択状態にするための選択指示パターンは定義不能となってしまうため、本発明の前提条件が崩れてしまう。そこで、この場合は、たとえ基準点からの方向が重複するポインタの組が存在しなくても、ステップS405で「はい」と判定してステップS410に移行する。
ステップS406では、図8のポインタ相関情報206でポインタ名が「BASE」の行を更新する。前述のとおり、基準点は、この操作モード切換処理終了後、ポインタ基準座標BASE(101)として利用される点なので、相対X座標と相対Y座標に、ステップS404で算出した基準点の実座標を設定する。その他の項目は、もともとポインタ名が「BASE」の行では利用していないので更新不要である。更新後、ステップS407に移行する。
ステップS407では、図8のポインタ相関情報206でポインタ名が「BASE」以外の各行(各ポインタに対応する行)を更新する。具体的には、ステップS404で算出した基準点の実座標と各ポインタの実座標から、基準点に対するそのポインタの相対座標を算出して相対X座標と相対Y座標に設定する。また、相対座標をもとに、基準点からそのポインタへの方向と同じ方向の単位ベクトルのX方向成分とY方向成分を算出してX方向成分とY方向成分に設定する。その他の項目は、実施の態様に応じて適宜設定してよい。例えば、操作発生回数を全て0にクリアしてもよく、現状のままとしてもよい。全ポインタについてポインタ相関情報206を更新したら、ステップS408に移行する。
ステップS408とステップS409は、独立操作モードから集団操作モードに切り換える場合と、集団操作モードから独立操作モードに切り換える場合で共通の処理である。
ステップS408では、図5の基本設定情報204の操作モードにModeを代入して操作モードを切り換える。そしてステップS409に移行する。
ステップS409では、前述の画面出力処理(図13)を呼び出して実行し、操作モード切換処理を終了する。
ステップS410は、ステップS405で判定が「はい」のとき実行される。つまり、ステップS404で算出した基準点が、新たなポインタ基準座標BASE(101)として利用するための条件を満たしていなかった場合に実行される。本実施形態では、このときステップS410でアラートを表示し、そのまま操作モード切換処理を終了する。よって、この場合は、操作モード(図5)もポインタ相関情報206(図8)も書き換えられず、現状のままである。実運用上は、このアラートを見たユーザが、現状の独立操作モードのままポインタの配置を変更した後、再度操作モード切換処理の実行を指示しなおす必要がある。
なお、別の実施形態では、ステップS410において、基準点をランダムに移動させるなどした後、再度ステップS405の判定からやり直してもよい。さらに別の実施形態では、ステップS404において基準点の座標を自動的に算出するかわりに基準点の座標をユーザに任意に設定させ、その座標が基準点として利用可能か否かをステップS405で判定してもよい。
次に、図15を参照して、図11のステップS108で呼び出されて実行される新規配置パターン登録処理について説明する。新規配置パターン登録処理は、現在の操作モード(図5)が集団操作モードのときのみ実行される。また、新規配置パターン登録処理は図4の新規配置パターン登録処理部215が実行する。
前述のとおり、新たな配置パターンをユーザが作成するのは、独立操作モードのときである。独立操作モードでは、各ポインタの、ポインタ基準座標BASE(101)からの方向が異なるという条件が成立するとは限らない。そこで、操作モード切換処理によって独立操作モードから集団操作モードに切り換えることができた場合(つまり、図14のステップS405で判定が「いいえ」となり、新たに算出されたポインタ基準座標BASE(101)に対してこの条件が成立することが保証された場合)のみ、新規配置パターン登録処理が実行されるようにしている。それにより、登録済みの配置パターンは全て、上記条件を満たすことが保証される。
ステップS501では、図8のポインタ相関情報206の全レコードを抽出し、これらレコード群をGrp3としてコンピュータ200のメモリなどに記憶する。そして、ユーザがキーボードなどから、登録したい配置パターンの名前を入力したら、入力内容を変数PtnNameに記憶してステップS502に移行する。
ステップS502とステップS503は、図9の配置パターン情報207内でパターンコードが一意であることを保証するためのステップである。
ステップS502では、配置パターン情報207でパターンコードがPtnNameと等しい行(レコード)を検索し、ステップS503に移行する。
ステップS503では、ステップS502で該当するレコードが検索されたか否かを判定する。つまり、パターンコードがPtnNameのレコードが登録済みか否かを判定する。登録済みの場合、判定が「はい」となり、新規の配置パターンにPtnNameをパターンコードとして与えることができないので、ユーザからの入力を受け付けるところからやり直す。パターンコードがPtnNameというレコードが図9の配置パターン情報207に存在しなければ、判定が「いいえ」となり、ステップS504に移行する。
ステップS504では、図9の配置パターン情報207にレコードを1つ追加する。具体的には、パターンコードの値はPtnName、BASE初期X座標の値は、Grp3のうちポインタ名が「BASE」の行の相対X座標、BASE初期Y座標の値は、Grp3のうちポインタ名が「BASE」の行の相対Y座標、となるレコードを追加する。初期表示フラグは、実施の態様に応じて強制的に0を設定してもよく、ユーザが1と0を選べるようにしてもよい。ただし、ユーザが1と0を選べるようにする場合、この処理で新規に登録する配置パターンに対して初期表示フラグが1と指定されたら、配置パターン情報207内の他のレコードの初期表示フラグを全て0にする必要がある。レコード追加後、ステップS505に移行する。
ステップS505では、図10の配置パターン詳細情報208にレコードを追加する。具体的には、Grp3の各レコードの内容(ポインタ名、相対X座標、相対Y座標、選択状態フラグ、X方向成分、Y方向成分)をコピーし、パターンコードをPtnNameとしたレコードを、それぞれ配置パターン詳細情報208に追加する。そして新規配置パターン登録処理を終了する。
次に、図16を参照して、図11のステップS110で呼び出されて実行されるポインタ数編集処理について説明する。ポインタ数編集処理は、ポインタを1つ追加するか1つ削除するかを指定するEditModeを引数として与えられ、現在の操作モード(図5)が独立操作モードのときのみ実行される。また、ポインタ数編集処理は図4のポインタ数編集処理部213が実行する。
本実施形態では、操作モードが集団操作モードのときには常に、ポインタ基準座標BASE(101)から各ポインタへの方向が異なるという前提条件が成立するように各処理の処理内容を定めている。しかし、ポインタを増やす場合、増やしたポインタの位置によってはこの前提条件が崩れることがある。よって、ポインタ数編集処理は、操作モードが独立操作モードのときのみ実行を許可する。
ステップS601では、EditModeが「追加」か否か判定する。EditModeが「追加」のときは判定が「はい」となりステップS602に移行し、EditModeが「削除」のときは判定が「いいえ」となりステップS603に移行する。
ステップS602では、ポインタを1つ追加するために、図8のポインタ相関情報206に1行レコードを追加する。追加する内容は、本実施形態では、選択状態ポインタのコピーを利用する。
まず、選択状態フラグが1の行を図8のポインタ相関情報206内で検索する。以後、この行を行Aと呼ぶ。そして、ポインタ相関情報206で現在使われていない一意のポインタ名を自動生成する。例えば、特定のアルファベットと連番を組み合わせたり、日時を利用して一意のポインタを生成することができる。そして、自動生成した一意のポインタ名と、行Aの内容をコピーした相対X座標および相対Y座標と、0に初期化された選択状態フラグと、行Aの内容をコピーしたX方向成分およびY方向成分と、0に初期化された操作発生回数と、パスの表現形式に応じた適切な形式で初期化されたリンクパスと、を設定したレコードをポインタ相関情報206に追加する。レコード追加後、ステップS607に移行する。なお、実施の形態によっては、追加するポインタのポインタ名を自動生成するのではなく、ユーザが任意にポインタ名を指定するようにしてもよい。
ステップS603からステップS606は、EditModeが削除のとき実行される。本実施形態では、選択状態ポインタを削除する。
ステップS603では、図8のポインタ相関情報206内を検索し、選択状態フラグが1の行(以後、この行を行Aと呼ぶ)と、行Aのポインタに最も近い別のポインタの行(以後、この行を行Bと呼ぶ)を抽出する。ここで行Bを抽出するのは、ポインタを1つ削除することによって、ポインタが存在しなくなることを避けるためである。なお、行Bとして抽出すべき行はポインタの行なので、ポインタ名が「BASE」以外の行である。行Aと行Bを抽出したらステップS604に移行する。
ステップS604では、行Bが存在したか否かを判定する。行Bが存在した場合、判定が「はい」となってステップS605に移行する。行Bが存在しなかった場合は、現在の配置パターンには選択状態ポインタしかポインタがなく、それを削除するとまったくポインタが存在しなくなってしまう場合である。このとき、判定は「いいえ」となり、ポインタを削除せずにそのままポインタ数編集処理を終了する。
ステップS605では、図8のポインタ相関情報206から行A(選択状態ポインタに対応する行)を削除する。これにより、選択状態のポインタがなくなり、非選択状態ポインタのみとなる。削除後、ステップS606に移行する。
ステップS606では、非選択状態ポインタのうちの1つを強制的に選択状態に切り換える。本実施形態では、行Bのポインタの選択状態フラグに1を代入して行Bのポインタを選択状態にする。そしてステップS607に移行する。
ステップS607は、EditModeが追加の場合と削除の場合で共通の処理である。ポインタの追加または削除後、画面上に各ポインタを再描画するために、前述の画面出力処理(図13)を呼び出し、実行する。画面出力処理の実行後、ポインタ数編集処理を終了する。
なお、ポインタ数編集処理は、様々に変更可能である。EditModeが「追加」のとき、上記の実施形態では選択状態ポインタの内容をコピーしているので、ポインタ数編集処理を終えた後、選択状態ポインタと追加したばかりの非選択状態ポインタが同じ位置に重なって表示される。しかし、別の実施形態では、ステップS607で、追加したポインタが他のポインタと重ならない位置に表示されるように、ステップS602で、追加するポインタの相対X座標や相対Y座標の値を決定してもよい。例えば、他のポインタのうち任意の2つを選び、追加するポインタが2つのポインタの中点に位置するように相対X座標と相対Y座標の値を定めてもよく、3つ以上のポインタの位置から所定の方法で算出した位置を利用してもよい。あるいは、追加するポインタの位置の候補となる点を予めいくつか定めておき、順番に候補を調べて、初めて見つかった他のポインタと重ならない点を、追加するポインタの位置として定めてもよい。また、乱数を用いてもよい。また、EditModeが「削除」のときも、実施の態様によって、どのポインタを削除するか、削除後にどのポインタを選択状態にするか、任意に定めることができる。
次に、図17から図23を参照して、図11のステップS111で呼び出されて実行されるマウス操作キャプチャ処理について説明する。図4に示したオペレーティングシステム201のポインティングデバイス制御機能203を利用することにより、マウス操作に関する各種のイベントの発生が検知可能である。マウス操作キャプチャ処理は、そのようなマウス操作に関するイベントの種類に応じてそれぞれ実行される各種の処理の総称であり、具体的には、図17、図18、図19、図20、図22、図23の6種類の処理がある。マウス操作キャプチャ処理により、本発明による複数のポインタの連動および選択状態ポインタの切換が実現される。また、マウス操作キャプチャ処理は図4のマウス操作キャプチャ部210が実行する。
図17は、マウスの移動が検知されたときに実行されるマウス操作キャプチャ処理を示すフローチャートである。図17の処理により、マウスの動きに合わせて複数のポインタが相対位置を保ったまま移動する。
ステップS701では、図5の基本設定情報204の操作モードを読み込み、集団操作モードか否かを判定する。集団操作モードのとき判定が「はい」となってステップS702に移行し、独立操作モードのとき判定が「いいえ」となってステップS703に移行する。
ステップS702では、集団操作モードなので、全ポインタをマウスの移動に連動させて移動させるための処理を行う。具体的には、図8のポインタ相関情報206内でポインタ名が「BASE」の行を検索し、その相対X座標と相対Y座標の値を、検出されたマウスの移動量および移動方向(つまり移動ベクトル)に応じて更新する。ここで、ポインタ名が「BASE」の行の相対X座標と相対Y座標は、ポインタ基準座標BASE(101)の実座標の水平方向成分と垂直方向成分である。よって、検出されたマウスの移動ベクトルの水平方向成分と垂直方向成分の値を、それぞれもとの相対X座標と相対Y座標の値に加算して新たな相対X座標と相対Y座標とすることにより、検出されたマウスの移動ベクトルに応じた新しいポインタ基準座標BASE(101)の実座標が算出される。この処理の後、ステップS704に移行する。
ステップS703では、独立操作モードなので、選択状態ポインタのみにマウスの移動を反映させるための処理を行う。ポインタ基準座標BASE(101)や、非選択状態ポインタに関しては何も処理を行わない。具体的には、図8のポインタ相関情報206内で選択状態フラグが1の行を検索し、その相対X座標と相対Y座標に、検出されたマウスの移動量の水平方向成分と垂直方向成分の値をそれぞれ加算して更新する。更新後、ステップS704に移行する。なお、ステップS703が実行されるのは、主に、ポインタの新たな配置パターンをユーザが作成・編集しているときである。
ステップS704では、前述の画面出力処理(図13)を呼び出して実行し、マウス操作キャプチャ処理を終了する。ステップS704は、集団操作モードと独立操作モードで共通に実行される。集団操作モードの場合、画面出力処理において各ポインタの実座標がポインタ基準座標BASE(101)からの相対的位置をもとに計算されて再描画されるため、全ポインタがマウスの移動に連動して移動する。独立操作モードの場合、選択状態ポインタのみステップS703で位置が変更されているので、画面出力処理による再描画により、選択状態ポインタのみが移動する。
図18は、マウスボタンの押下が検知されたときに実行されるマウス操作キャプチャ処理を示すフローチャートである。例えばクリック操作は、マウスボタンを押してから離す動作であるから、クリック時には図18の処理が実行される。なお、ドラッグ中などマウスボタンが押下された状態が続く場合であっても、図18の処理は、その状態が始まった時点で1回呼ばれるだけである。
ステップS801で、図8のポインタ相関情報206の全行に対し、操作発生回数を0に書き換え、マウス操作キャプチャ処理を終了する。ユーザがマウスボタンを押下するのは、クリックやドラッグにより何らかの処理の実行を指示するときなので、操作の区切りと見なすことができる。そこで、本実施形態では、マウスボタンの押下が検知されると、全ポインタの操作発生回数を0にクリアしている。
図19は、マウス操作の有無を監視するタイムイベントをトリガとして、マウスの操作が一定時間なかったときに実行される、マウス操作キャプチャ処理を示すフローチャートである。
ステップS901では、マウスの操作がないまま経過した時間(無操作経過時間)が、図5の基本設定情報204の無操作監視時間より長いか否かを判定する。無操作監視時間以下なら判定が「いいえ」となりマウス操作キャプチャ処理を終了する。無操作監視時間より長ければ判定が「はい」となりステップS902に移行する。
ステップS902では、図8のポインタ相関情報206の全行に対し、操作発生回数を0に書き換え、マウス操作キャプチャ処理を終了する。
図18と図19は、基本的には同じ処理である。選択状態ポインタを切り換えるためにユーザがマウスで行う動作は、たとえ複数(図5の基本設定情報204の切換回数)の動作からなる場合でも、一連のまとまった動作としてなされるべきものである。よって、クリックされたり一定以上の時間が経過したりして区切りが検知された場合は、選択状態ポインタを切り換えるための操作もクリアされたと見なし、図18や図19のように処理している。
図20は、マウスの移動が終了したことが検知されたときに実行される、マウス操作キャプチャ処理を示すフローチャートである。図20の処理により、選択状態ポインタの切換が実現される。
本実施形態では、選択状態ポインタを切り換えるのに、ポインタ基準座標BASE(101)から各ポインタへの方向と同じ方向の移動指示の回数を数えて利用している。ところで一般に、ユーザがマウスを曲線状に動かすことも多いが、例えば円状にマウスを動かした場合、上下左右、様々な向きの動きがその中に含まれる。よって、どのポインタに対応する動きとして数えるべきか、という問題がある。そこで本発明では、移動指示の方向は、マウスが移動を開始した点と移動を終了した点によってのみ判定し、マウスの移動が描いた軌跡は考慮しない。よって、本発明において選択状態ポインタを切り換える処理は、マウスが移動を終了したことをトリガとして実行されるべきものである。図20はその処理を示している。
ステップS1001では、図5の基本設定情報204の操作モードを読み込み、集団操作モードか否かを判定する。集団操作モードのとき、判定が「はい」となりステップS1002に移行する。独立操作モードのとき、判定が「いいえ」となりマウス操作キャプチャ処理を終了する。本発明における独立操作モードは、基本的に新たな配置パターンを編集するときにのみ利用する、特殊な操作モードである。よって、ここでは独立操作モードを、マウスの移動指示にもとづいて自動的に選択状態ポインタを切り換えるという本発明の通常の動作の対象外としている。つまり、独立操作モードのときは、何も処理を行わずにマウス操作キャプチャ処理を終了する。
ステップS1002では、ポインタ切換判断処理(図21とあわせて後述)を呼び出して実行する。ポインタ切換判断処理では、今回のマウスの動きによって選択状態ポインタを切り換えるべきか否かを判定し、必要に応じて選択状態ポインタを切り換える。ポインタ切換判断処理の実行後、ステップS1003に移行する。
ステップS1003では、図7の前回停止位置情報205を更新する。つまり、今回の移動の終了位置を、次回のマウス移動指示のために前回停止位置情報205として記憶する。具体的には、図8のポインタ相関情報206内でポインタ名が「BASE」の行を検索し、その相対X座標と相対Y座標を読み込む。この座標は、今回の移動終了時におけるポインタ基準座標BASE(101)の実座標を示す。よって、読み込んだ相対X座標と相対Y座標の値を、前回停止位置情報205の前回X座標と前回Y座標にそれぞれ代入すればよい。代入後、ステップS1004に移行する。
ステップS1004では、前述の画面出力処理(図13)を呼び出して実行し、マウス操作キャプチャ処理を終了する。ステップS1002で選択状態ポインタが切り換わった場合は、ステップS1004の処理により、切換後の表示属性にしたがって各ポインタが画面に表示される。
次に、図21を参照して、図20のステップS1002で呼び出されて実行されるポインタ切換判断処理について説明する。ポインタ切換判断処理は、集団操作モードのときのみ呼び出され、マウスの移動が終了したときに、今回の移動によって選択状態ポインタを切り換えるべきか否かを判断する。また、ポインタ切換判断処理は図4のポインタ切換判断処理部211が実行する。
ステップS1101では、図7の前回停止位置情報205の前回X座標と前回Y座標をコンピュータ200のメモリなどに読み込む。前回のマウスの移動停止位置は、今回のマウスの移動開始位置である。この読み込んだ座標の点を以下では点Sという。座標の読み込み後、ステップS1102に移行する。
ステップS1102では、図8のポインタ相関情報206内でポインタ名が「BASE」の行を検索し、相対X座標と相対Y座標をコンピュータ200のメモリなどに読み込む。これは、今回のマウスの移動停止時点におけるポインタ基準座標BASE(101)の実座標を表す。この座標により示される点を以下では点Eという。座標の読み込み後、ステップS1103に移行する。
ステップS1103では、点Sから点Eへの方向ベクトルと同じ向きの単位ベクトルの水平方向成分Uxおよび垂直方向成分Uyを算出する。算出後、ステップS1104に移行する。
ステップS1104では、図8のポインタ相関情報206内で、X方向成分がUxと等しく、Y方向成分がUyと等しく、ポインタ名が「BASE」以外の行を検索する。この条件を満たす行を以後、行Aと呼ぶ。つまり、ステップS1104では、今回の移動の方向が、ポインタ基準座標BASE(101)からの方向と同一のポインタを検索する。検索後、ステップS1105に移行する。
ステップS1105では、ステップS1104の検索で行Aが存在したか(検索されたか)否かを判定する。行Aが存在した場合、判定は「はい」となってステップS1106に移行する。なお、ポインタ基準座標BASE(101)から各ポインタへの方向はそれぞれ異なるという前提条件があるため、行Aは高々1つしか存在しない。行Aが存在しなかった場合、判定は「いいえ」となり、今回の移動は選択状態ポインタの切換と無関係なので、ポインタ切換判断処理を終了する。
ステップS1106では、図8のポインタ相関情報206の行Aの操作発生回数に1を加えて更新し、ステップS1107に移行する。
ステップS1107では、図8のポインタ相関情報206の行Aの操作発生回数が、図5の基本設定情報204の切換回数と等しいか否かを判定する。等しい場合、判定は「はい」となり、行Aのポインタを選択状態に切り換える条件が満たされているのでステップS1108に移行する。等しくない場合、判定は「いいえ」となり、今回の移動は選択状態ポインタの切換と無関係なので、ポインタ切換判断処理を終了する。
ステップS1108以降は、選択状態ポインタを切り換えるときのみ実行される。
ステップS1108では、オブジェクトをドラッグ中か否かを判定する。本実施形態では、本発明のプログラムのどの処理からも参照可能な変数として、ドラッグ中か否かを示す「ドラッグ中フラグ」がコンピュータ200のメモリまたはCPUのレジスタに格納されており、その値はドラッグ中のとき1、ドラッグ中でないとき0とする。ドラッグ中フラグの値がどのように設定されるかは、図22、図23とあわせて後述する。よって、ステップS1108では、ドラッグ中フラグの値を読み込み、値が1ならドラッグ中なので判定が「はい」となってステップS1109に移行し、値が0ならドラッグ中ではないので判定が「いいえ」となってステップS1111に移行する。
ステップS1109とステップS1110は、オブジェクトをドラッグ中に、選択状態ポインタの切換が起こったときに実行される処理である。これらの処理は図2に示したドラッグ操作を実現する処理である。
ステップS1109では、図8のポインタ相関情報206内で選択状態フラグが1の行を検索する。この行を以後、行Bという。行Bは現在の選択状態ポインタに該当し、このポインタで現在オブジェクトをドラッグ中である。例えば、図2の(b)では、ポインタPb(103)が行Bに該当する。そこで、行Bのポインタの位置から行Aのポインタの位置へ、ドラッグ中のアイコン111を移動表示させる。例えば、図2の(c)では、ポインタPa(102)が行Aに該当する。実施の態様に応じて、瞬間的にドラッグ中のアイコン111が移動したように表示してもよく、移動をアニメーションで表現してもよい。表示後、ステップS1110に移行する。
ステップS1110では、行Bのリンクパスを行Aのリンクパスに代入し、行Bのリンクパスをクリアする(クリアするために代入すべき具体的な値は、その実施形態で採用しているリンクパスの表現形式によって異なる)。ステップS1109とステップS1110により、ドラッグオブジェクトは新たに選択状態となったポインタ(行Aのポインタ)に引き渡される。引き渡し後、ステップS1111に移行する。
ステップS1111からステップS1113は、オブジェクトのドラッグ中か否かによらず、選択状態ポインタを切り換えるために行われる処理である。
ステップS1111では、図8のポインタ相関情報206内で現在、選択状態フラグが1の行(行B)の選択状態フラグを0に更新し、ステップS1112に移行する。
ステップS1112では、新たな選択状態ポインタに該当する行Aの選択状態フラグを1に更新し、ステップS1113に移行する。
ステップS1113では、図8のポインタ相関情報206の全行に対し、操作発生回数を0に更新し、ポインタ切換判断処理を終了する。これは、選択状態ポインタが切り換わったことを操作の区切りと考え、操作発生回数を全ポインタに対してクリアするためである。ステップS1113で操作発生回数をクリアする例は、図6の(b)や(c)で説明した。
なお、実施の形態によっては、ステップS1113の後、切換前の選択状態ポインタの位置から、切換後の選択状態ポインタの位置に向かって動く何らかのアニメーション表示を行ってもよい。それによって、選択状態ポインタの切換が行われたことをより容易にユーザが視認することができる。
以上により、本発明による選択状態ポインタの切換が実現される。
図22は、ドラッグ開始が検知されたときに実行される、マウス操作キャプチャ処理を示すフローチャートである。
ステップS1201では、ドラッグ中フラグに、ドラッグ中であることを示す1を代入する。ドラッグ中フラグは、図21のステップS1108でも参照した変数であり、図22の処理専用のローカル変数ではなく、図21や図23の処理からも参照可能な変数として、コンピュータ200のメモリまたはCPUのレジスタに格納されている。代入後、ステップS1202に移行する。
ステップS1202では、選択状態ポインタのリンクパスがドラッグオブジェクトへのリンクパスとなるようにする。つまり、選択状態ポインタを用いてドラッグ操作を行うことを図8のポインタ相関情報206のデータに反映させる。具体的には、ポインタ相関情報206で選択状態フラグが1の行を検索し、その行のリンクパスにドラッグオブジェクトへのリンクパスの値を代入する。なお、ドラッグオブジェクトへのリンクパスは、図4に示したオペレーティングシステム201のポインティングデバイス制御機能203を通じて取得可能である。代入後、マウス操作キャプチャ処理を終了する。
図23は、ドロップ(つまりドラッグ終了)が検知されたときに実行される、マウス操作キャプチャ処理を示すフローチャートである。
ステップS1301では、ドラッグ中フラグに、ドラッグ中ではないことを示す0を代入する。ドラッグ中フラグは、図21のステップS1108や図22のステップS1201でも利用した変数である。代入後、ステップS1302に移行する。
ステップS1302では、選択状態ポインタのリンクパスをクリアする。つまり、ドラッグ操作が終了したことを図8のポインタ相関情報206のデータに反映させる。具体的には、ポインタ相関情報206で選択状態フラグが1の行を検索し、その行のリンクパスをクリアする。クリアするために代入すべき具体的な値は、その実施形態で採用しているリンクパスの表現形式によって異なる。これにより、ポインタ相関情報206内の全行のリンクパスはクリアされた状態になる。クリア後、マウス操作キャプチャ処理を終了する。
以上からオブジェクトをドラッグする場合の本発明のプログラムの動作をまとめると次のようになる。
まず、何もオブジェクトをドラッグしていない状態では、図8のポインタ相関情報206のリンクパスは全行でクリアされた状態であり、ドラッグ中フラグの値は0である。次に、選択状態ポインタであるオブジェクトを選択し、ドラッグを開始すると、図22の処理によりドラッグ中フラグが1となり、選択状態ポインタのリンクパスに当該オブジェクトへのリンクパスが書き込まれる。
ドラッグ中に選択状態ポインタの切換が起こらず、そのままドロップした場合は、ドロップ時に図23の処理が実行されてドラッグ中フラグの値が0に戻り、図8のポインタ相関情報206のリンクパスも全行でクリアされた状態に戻る。
ドラッグ中に選択状態ポインタの切換が起こった場合は、すなわち、図20のマウス操作キャプチャ処理から図21のポインタ切換判断処理が呼び出され、図21のステップS1105およびステップS1107の判定が「はい」となった場合である。この場合、図21のステップS1110で、切換前の選択状態ポインタのリンクパスが切換後の選択状態ポインタにコピーされ、切換前の選択状態ポインタのリンクパスはクリアされる。よって、ドロップ時に図23の処理が実行されると、クリアする対象は切換後の選択状態ポインタのリンクパスとなる。図23の処理によりドラッグ中フラグの値が0に戻り、図8のポインタ相関情報206のリンクパスも全行でクリアされた状態に戻る。
なお、本発明は上記の実施形態に限られるものではなく、様々に変形可能である。以下にその例をいくつか述べる。
上記の実施形態では、選択状態ポインタは非選択状態ポインタよりも高輝度とし、各ポインタの形状は、ポインタ基準座標BASE(101)からそのポインタへの方向の矢印形状としていた。しかし、実施の態様に応じてポインタの表示属性を任意に定めることができる(図13の画面出力処理ではそれに合わせた処理を行う)。例えば、選択状態と非選択状態を区別するのに、輝度以外に、ポインタの色(色相、彩度、明度、透明・半透明・不透明の違い)、大きさ、形状、点灯・点滅の違い、模様、などを利用してもよい。また、ポインタの形状は矢印形状に限らない。ポインタ基準座標BASE(101)からそのポインタへの方向をユーザが視認可能であれば、ポインタをどのような画像で表現してもよい。例えば、形状ではなく色で方向を表現しても構わない。また、集団操作モードと独立操作モードで、ポインタの表示属性を異ならせてもよい。
本発明では、上述のとおり、方向が同一か否かの判定を行う。具体的には、マウスの移動の方向と、ポインタ基準座標BASE(101)から各ポインタへの方向の比較(図21のステップS1104)および、ポインタ基準座標BASE(101)から各ポインタへの方向で、同一のものが存在するか否かの判定(図14のステップS405)である。このような判定において、完全に方向が一致したときのみ「同一」と判定するのは現実的ではない。そこで、実際には、方向の差が所定の範囲内なら「同一」と判定することが好ましい。この範囲は、実施の態様に応じて任意に定めてよい。また、範囲を変更不可能としてもよく、この範囲を表す項目を図5の基本設定情報204に追加するなどしてユーザにより変更可能としてもよい。
また、上記の実施形態では、このような方向の同一性の判定において、単位ベクトルを利用している(図8のポインタ相関情報206のX方向成分とY方向成分、および図21のステップS1103で算出するUxとUy)。しかし、実施の形態によっては、単位ベクトルを利用しなくてもよい。例えば、2つの方向ベクトルの内積を、当該2つの方向ベクトルの大きさの積で割ることにより、当該2つの方向ベクトルの余弦を算出し、その値から、当該2つの方向ベクトルが同一の方向か否か(同一と見なせる所定の範囲内の差しかないか)を判定してもよい。
また、上記の実施形態では、あるポインタを選択状態にするための選択指示パターンは、ポインタ基準座標BASE(101)から当該ポインタへの方向と同じ方向に所定の回数(図5の基本設定情報204の切換回数)の移動指示を行うというパターンである。しかし別の実施形態では、180度逆の方向を使って選択指示パターンを定めてもよい。つまり、選択状態にしたいポインタからポインタ基準座標BASE(101)への方向と同じ方向に所定の回数の移動指示を行うというパターンを利用してもよい。これらの例に限らず、各ポインタで選択指示パターンの方向が異なってさえいれば、本発明を実施することができる。ただし、ユーザが直感的に操作可能という効果を得るには、選択指示パターンの方向として、ポインタ基準座標BASE(101)から各ポインタへの方向を採用することが望ましい。
また、上記の実施形態では、図21から図23でドラッグ中フラグという変数を使用しているが、別の実施形態では、ドラッグ中フラグを使わなくてもよい。その場合、図21のステップS1108でドラッグ中か否かを判定するには、図8のポインタ相関情報206において、選択状態ポインタのリンクパスがクリアされていればドラッグ中でなく、リンクパスとして有効な何らかの値が存在していればドラッグ中であると判定する。また、図4のオペレーティングシステム201のポインティングデバイス制御機能203が提供するインタフェイスによっては、他の方法でドラッグ中か否かを判定したりリンクパスを書き換えたりすることも可能である。
また、上記の実施形態では、図12の配置パターン切換処理、図14の操作モード切換処理、図16のポインタ数編集処理、図17および図20のマウス操作キャプチャ処理から、図13の画面出力処理を呼び出している。図13の画面出力処理は、全てのポインタについて表示する(再描画する)処理である。しかし、実施の形態によっては、上記各処理から共通の画面出力処理を呼び出すのではなく、例えばポインタ数編集処理を実行した場合は追加や削除と関連するポインタのみ再描画するなど、必要最小限の再描画のみを行うようにしてもよい。
また、上記の実施形態では、操作モードが集団操作モードのときには常に、ポインタ基準座標BASE(101)から各ポインタへの方向が異なるという前提条件が成立するように制御している。しかし、この制御方法は、ユーザが配置パターンの編集を行うための手順を煩雑にしている。そこで、他の実施形態では、配置パターンの編集を行うための手順が簡略化されるような制御方法を採用してもよい。例えば、上記の操作モード切換処理(図14)で、切換後のポインタ基準座標BASE(101)の座標として使うための基準点の座標を算出し、その座標から各ポインタへの方向で重複するものがあるか否かを判定している。他の実施形態では、この判定を新規配置パターン登録処理(図15)やポインタ数編集処理(図16)でも行うようにし、さらに、方向が重複するポインタの組が見つかった場合はそのような組がなくなるまで基準点の座標を自動的に修正するようにすれば、図11のステップS107やステップS109での操作モードの判定が不要となり、ユーザが行うべき手順も簡略化される。
ところで、本発明によるプログラムは、図24に示すような一般的な情報処理装置(コンピュータ)上で実行される。図24は図4のコンピュータ200に相当する。
図24の情報処理装置は、CPU300、ROM(Read Only Memory)301、RAM(Random Access Memory)302、通信インターフェイス303、記憶装置304、入力装置305、出力装置306、可搬型記憶媒体の駆動装置307を備え、これらの全てがバス308によって接続されている。
記憶装置304には、ハードディスクなどの磁気ディスクを含む様々な形式の記憶装置を使用することができる。記憶装置304またはROM301には、本発明によるプログラムなどが格納されている。そのプログラムがCPU300によって実行されることにより、本発明が実現される。
例えば、ある実施形態では、図5の基本設定情報204、図7の前回停止位置情報205は、プログラムがCPU300によって実行されると生成され、RAM302上に記憶される。一方、図9の配置パターン情報207、図10の配置パターン詳細情報208などは、記憶装置304に格納されて必要に応じてRAM402に読み込まれ、CPU300で処理される。そして、記憶装置304から読み込んだ図10の配置パターン詳細情報208に、CPU300が所定の初期化データを付加して図8のポインタ相関情報206としてRAM302に記憶する。
入力装置305は、例えばマウス、トラックパッド、トラックボールなどのポインティングデバイスやキーボードである。入力装置305からの入力(移動指示や操作指示等)は、図4のオペレーティングシステム201のポインティングデバイス制御機能203により検出可能である。出力装置306は、例えば液晶ディスプレイなどの表示装置であり、ここに複数のポインタが表示される。
本発明によるプログラムは、プログラム提供者309からネットワーク311および通信インターフェイス303を介して提供され、例えば記憶装置304に格納され、CPU300によって実行されてもよい。また、市販されて流通している可搬型記憶媒体310に本発明によるプログラムが格納され、可搬型記憶媒体310が駆動装置306にセットされ、格納されたプログラムが例えばRAM302にロードされてCPU300によって実行されてもよい。可搬型記憶媒体310としては、CD(Compact Disc)やDVD(Digital Versatile Disk)などの光ディスク、光磁気ディスク、フレキシブルディスクなど様々な形式の記憶媒体を使用することができる。
同様に、図9の配置パターン情報207、図10の配置パターン詳細情報208なども、プログラム提供者309からネットワーク311および通信インターフェイス303を介して記憶装置304に格納されてもよく、可搬型記憶媒体310に格納されて駆動装置306を介して読み取られ、記憶装置304に格納されたりRAM302にロードされたりしてもよい。
(付記1)
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示するコンピュータで実行されるプログラムであって、
入力装置による移動指示があったとき、前記複数のポインタの位置の基準を示すポインタ基準点の座標を、該移動指示の移動ベクトルを加算することにより更新し、前記複数のポインタの各々について、予め記憶された当該ポインタと前記ポインタ基準点との相対座標を読み込み、更新された前記ポインタ基準点の前記座標と該相対座標を加算して当該ポインタの実座標を算出し、当該ポインタを前記画面上の該実座標の位置に移動させる移動ステップと、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ、該操作指示に対応する操作を行う操作実行ステップと、
を前記コンピュータに実行させることを特徴とするプログラム。
(付記2)
前記入力装置による前記移動指示があったとき、前記複数のポインタの各々に対して、前記ポインタ基準点から当該ポインタへの方向にもとづき前記複数のポインタの各々で異なるように定められた方向および回数の組み合わせにより予め定義された選択指示パターンを該移動指示と比較し、該移動指示が前記選択指示パターンのいずれかに合致する場合、該選択指示パターンに対応する一つのポインタを選択状態にし、それ以外のすべてのポインタを非選択状態にする選択状態切換ステップをさらに前記コンピュータに実行させることを特徴とする付記1に記載のプログラム。
(付記3)
前記選択状態ポインタによりオブジェクトをドラッグするドラッグ操作中に、前記非選択状態ポインタのうちの一つに対応する前記選択指示パターンに合致する前記移動指示が前記入力装置によりなされたとき、前記選択状態切換ステップを前記コンピュータに実行させるとともに、
前記画面上で前記オブジェクトを表す画像を、前記選択状態切換ステップによる切換後の選択状態ポインタの位置に移動させ、切換前の選択状態ポインタが前記オブジェクトをドラッグ中であることを示す情報を、前記切換後の選択状態ポインタが前記オブジェクトをドラッグ中であることを示す情報に書き換えるドラッグオブジェクト引き渡しステップをさらに前記コンピュータに実行させる、
ことを特徴とする付記2に記載のプログラム。
(付記4)
前記ポインタ基準点から前記複数のポインタの各々への方向はすべて異なっており、
前記選択指示パターンを定義する前記方向は、前記ポインタ基準点から当該ポインタへの方向と同一の方向であり、
前記選択指示パターンを定義する前記回数は、すべての前記選択指示パターンで共通の所定の回数である、
ことを特徴とする付記2に記載のプログラム。
(付記5)
前記入力装置による移動指示の移動停止時に、
前回の移動指示の移動停止時に記憶された、前回の移動指示の移動停止時における前記ポインタ基準点の座標である前回停止位置情報を読み込み、
今回の移動停止時における前記ポインタ基準点の座標と該前回停止位置情報との差から、今回の移動指示の方向を示すベクトルを算出し、
前記選択指示パターンを定義する前記方向のうち、今回の移動指示の前記方向と合致するものがあるか否かを該ベクトルにもとづいて判定し、
合致するものがあった場合は、当該選択指示パターンに対応する前記ポインタに関する操作発生回数に1を加え、該操作発生回数が当該選択指示パターンを定義する前記回数に達したか否かを判定し、達していれば当該選択指示パターンに今回の移動指示が合致すると判定し、達していなければ今回の移動指示ではいずれの前記選択指示パターンにも合致しないと判定することにより、
前記選択指示パターンのいずれかに合致する移動指示が前記入力装置によりなされたか否かを判定し、該判定結果にもとづいて前記選択状態切換ステップを実行すること
を特徴とする付記2に記載のプログラム。
(付記6)
前記選択状態切換ステップにおいてさらに、前記複数のポインタの各々の前記操作発生回数を、すべて0にすることを特徴とする付記5に記載のプログラム。
(付記7)
前記入力装置による操作指示があったとき、前記複数のポインタの各々の前記操作発生回数を、すべて0にすることを特徴とする付記5に記載のプログラム。
(付記8)
前記入力装置からの前記移動指示と前記操作指示のいずれも発生しない時間が、予め定められた時間より長く続いたとき、前記複数のポインタの各々の前記操作発生回数を、すべて0にすることを特徴とする付記5に記載のプログラム。
(付記9)
前記ポインタ基準点の座標および前記複数のポインタ各々の前記ポインタ基準点に対する相対座標により表される配置パターンが予め一つ以上記憶され、そのうちの一つが指定されたとき、
該配置パターンに含まれるすべての前記ポインタについて、当該ポインタの前記相対座標を前記ポインタ基準点の座標と加算して当該ポインタの実座標を算出し、前記画面上の該実座標の位置に当該ポインタを表示する配置パターン切換ステップをさらに前記コンピュータに実行させる、
ことを特徴とする付記1に記載のプログラム。
(付記10)
前記入力装置による前記移動指示に応じて前記選択状態ポインタのみを移動させる独立操作モードと、前記入力装置による前記移動指示に応じてすべてのポインタを移動させる集団操作モードの二つの操作モードが定義され、そのいずれであるかを表す操作モード情報が前記独立操作モードを表しているときに、前記入力装置による前記移動指示があったときは、前記移動ステップにかえて、
前記選択状態ポインタの相対座標を、該移動指示の移動ベクトルを加算することにより更新し、前記ポインタ基準点の前記座標と更新された該相対座標を加算して前記選択状態ポインタの実座標を算出し、前記選択状態ポインタを前記画面上の該実座標の位置に移動させ、前記ポインタ基準点の前記座標および前記非選択状態ポインタの前記相対座標は変更しない第二の移動ステップを前記コンピュータに実行させることを特徴とする付記1に記載のプログラム。
(付記11)
前記操作モード情報を変更する指示が入力装置を介して与えられたとき、
該指示が前記独立操作モードに変更する指示の場合は、操作モード情報を前記独立操作モードに変更し、
該指示が前記集団操作モードに変更する指示の場合は、変更後の前記ポインタ基準点の座標を前記複数のポインタの前記相対位置および前記ポインタ基準点の座標にもとづき算出し、算出した該座標から前記複数のポインタ各々への方向のうち所定の範囲内で一致するものが存在するか否かを判定し、存在しない場合のみ、算出した前記座標を前記ポインタ基準点の座標として設定し、前記複数のポインタ各々について該座標に対する相対座標を設定し、前記操作モード情報を前記集団操作モードに変更する、
操作モード切換ステップをさらに前記コンピュータに実行させることを特徴とする付記10に記載のプログラム。
(付記12)
新たなポインタの追加または前記複数のポインタのうちのいずれかの削除を指示する入力装置からの入力を受け付け、前記操作モード情報を読み込み、前記独立操作モードの場合のみ、
該入力が追加を指示するものである場合は、所定の値を追加するポインタの前記相対座標として記憶し、該入力が削除を指示するものである場合は、削除対象のポインタについて記憶されている前記相対座標の情報を削除し、前記削除対象のポインタが選択状態ポインタだった場合はさらに前記非選択状態ポインタのうちの一つを選択状態にするポインタ数編集ステップをさらに前記コンピュータに実行させる、
ことを特徴とする付記10に記載のプログラム。
(付記13)
前記画面上に表示された前記複数のポインタの配置パターンの登録を指示する入力装置からの入力を受け付け、前記操作モード情報を読み込み、前記集団操作モードの場合のみ、
前記ポインタ基準点の座標および前記複数のポインタ各々の前記ポインタ基準点に対する相対座標を新規配置パターンとして記憶する新規配置パターン登録ステップをさらに前記コンピュータに実行させる、
ことを特徴とする付記10に記載のプログラム。
(付記14)
前記複数のポインタの各々は、前記ポインタ基準点に対する方向によって異なる画像で前記画面に表示されることを特徴とする付記1に記載のプログラム。
(付記15)
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示させるコンピュータで用いられる方法であって、
入力装置による移動指示があったとき、前記複数のポインタの相対位置を保ったまま前記複数のポインタを該移動指示に応じて移動させ、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ該操作指示に対応する操作を行う、
ことを特徴とする方法。
(付記16)
一つの選択状態ポインタと一つ以上の非選択状態ポインタからなる複数のポインタを画面に表示させる装置であって、
前記複数のポインタの位置の基準を示すポインタ基準点の座標を格納するポインタ基準点座標格納手段と、
前記複数のポインタの各々について、当該ポインタと前記ポインタ基準点との相対座標を格納する相対座標格納手段と、
入力装置による移動指示があったとき、前記ポインタ基準点座標格納手段に格納された座標を、該移動指示の移動ベクトルを加算することにより更新し、前記複数のポインタの各々について、前記相対座標格納手段から前記相対座標を読み込み、更新された前記ポインタ基準点の前記座標と該相対座標を加算することにより当該ポインタの実座標を算出し、当該ポインタを前記画面上の該実座標の位置に移動させる移動手段と、
前記入力装置による操作指示があったとき、前記選択状態ポインタが示す前記画面上の指示位置に対してのみ、該操作指示に対応する操作を行う操作実行手段と、
を備えることを特徴とする装置。