<実施の形態1>
本実施の形態では、ユーザがマルチタッチパネルを有する画面上に表示されたカーソルを使用して入力すると、どのカーソルを使用して操作したかを識別することにより、操作のコンテキストを特定するマルチカーソル処理システムについて説明する。
以下において、マルチタッチパネルでの入力とは、指あるいは掌等による画面上へのタッチやスワイプ(タッチした状態で滑らすように動かす操作)等の行為を指している。また、操作のコンテキストとは、操作対象のタスクや操作したユーザ等を示している。また、先に説明したように、タスクとは処理の実行単位を示しており、アプリケーションやスレッド、プロセス等を指す。
本実施の形態においては、ユーザがアプリケーションを一つ起動すると、タスクが一つ起動するものとする。つまり、ユーザAがアプリケーションaとアプリケーションbを起動し、ユーザBがアプリケーションaとアプリケーションbを起動した場合、合計4つのタスクが起動することになる。
<構成>
図1は本発明に係る実施の形態1の電子機器100のハードウェア構成を示すブロック図である。
図1に示すように電子機器100は、中央処理装置2、主記憶装置3およびハードディスク等の外部記憶装置4を含むコンピュータシステム1と、マルチタッチパネルの入力装置5と、マルチタッチパネルを有するディスプレイ等の表示装置6とを主たる構成として備えている。
図2は、電子機器100に含まれるマルチカーソル処理システム200の構成を示すブロック図である。
図2に示されるようにマルチカーソル処理システム200は、入力装置5に接続される入力イベント処理手段201、入力イベント処理手段201に接続されるカーソル管理手段202、カーソル管理手段202に接続されるカーソル情報を格納するカーソル情報格納部203、カーソル移動手段204、カーソル表示手段205およびコンテキスト特定手段207を備えている。
また、カーソル表示手段205に接続されるカーソル定義を格納するカーソル定義格納部206および表示手段214と、タスク208、209および210の表示処理をそれぞれ行うタスク表示手段211、212および213とを備えている。
入力イベント処理手段201は、入力装置5から入力された入力内容や入力位置に関する座標を受け取り、ユーザが行う入力操作(イベント)の種類を判別する。
カーソル管理手段202は、表示装置6の画面上に表示される全てのカーソルを管理し、カーソル情報をカーソル情報格納部203に格納し、カーソルの位置情報を用いて、その位置にあるカーソルのカーソル情報をカーソル情報格納部203から検索して取得し、イベントが発生した画面上の位置情報を用いて、どのカーソルの操作であるかを判断する。
カーソル移動手段204は、カーソルの移動後の位置を決定し、移動後のカーソルの位置情報をカーソル管理手段202を介してカーソル情報格納部203に格納することでカーソルの位置情報を更新する。
カーソル表示手段205は、カーソル管理手段202が管理するカーソル情報と、カーソル定義格納部203から取得したカーソル定義を用いて、カーソル管理手段202が管理するカーソルの表示処理を行う。
コンテキスト特定手段207は、カーソル管理手段202で操作中のカーソルのカーソル情報から、操作対象のタスクおよび操作しているユーザを特定する。
表示手段214は、カーソル表示手段205で処理されたカーソルと、タスク表示手段211〜213で処理されたタスクの内容を合わせて、表示装置6に表示する表示処理を行う。
次に、カーソル情報格納部203に格納されるカーソル情報について説明する。カーソル情報は、カーソルの画面上の位置情報と、複数のタスクのそれぞれに対応して設けられたカーソルが、どのタスクに属するカーソルであるかを示す所属タスク情報とを含む情報であり、カーソル情報格納部203には、複数のカーソル情報が格納される。また、所属タスク情報は、カーソルが所属するタスクやアプリケーション、ユーザの情報等を示すものである。
図3にカーソル情報の内容を一覧で示す。図3に示すように、カーソル情報には、タスクID、アプリケーションID、ユーザID、カーソル位置x、カーソル位置yおよび直近操作フラグが含まれている。
タスクIDは、タスクの分類を示すものであり、タスクが何れの分類に属するかを数字で示している。
アプリケーションIDは、アプリケーションの分類を示すものであり、アプリケーションが何れの分類に属するかを数字で示している。
また、ユーザIDは、ユーザの識別情報であり、ユーザを数字で識別している。なお、図3では、タスク、アプリケーションおよびユーザの情報を全て識別番号(ID)で表しているが、名称等を用いても良く、タスク、アプリケーションおよびユーザを識別できるのであればIDでなくても良い。
カーソル位置xおよびカーソル位置yは、カーソルの画面上の位置座標(x,y)を示している。図3では、一例としてカーソル位置xは200、カーソル位置yは550として表されている。これは、マルチタッチパネルをマトリクス状に区分し、カーソルの位置をX方向での升目の個数と、X方向での升目の個数で表した例である。カーソルが動く度に、カーソル位置xおよびカーソル位置yの座標は更新される。
直近操作フラグは、直近に操作されたカーソル(アクティブなカーソル)であるかどうかを示すフラグで、TRUEの場合は直近に操作されたカーソル、FALSEの場合は直近に操作されたカーソルでないことを意味する。なお、直近操作フラグは、必ずしもカーソル情報に含まれている必要はなく、直近に操作されたカーソルの情報を、リストとして管理するものであっても良い。
次に、カーソル定義格納部206に格納されるカーソル定義について説明する。カーソル定義は、カーソルの形状を表す画像の画像ファイルの名称や色のRGB値等のカーソルの画像を表示する際に必要な情報を示すものである。
図4にカーソル定義の内容を一覧で示す。図4に示すように、カーソル定義には、カーソル形状画像ファイル名称、アプリケーション用画像ファイル名称[1]、[2]・・・、ユーザ用色[1]、[2]・・・が含まれている。
カーソル形状画像ファイル名称は、カーソルの形状が描かれている画像ファイルの名称であり、例えば、図5に示すような画像のファイル名であり、図5では識別子gifを用いたファイル名(Shape.gif)で表されている。
なお、図4では、カーソル形状画像ファイル名称を一つ定義しているが、複数定義するものであっても良い。
アプリケーション用画像ファイル名称は、カーソル形状を表す画像に上から重ねて描画する画像ファイルの名称である。実行するアプリケーションの種類と同じ数のアプリケーション用画像ファイルがあり、アプリケーションの種類が増えると、アプリケーション用画像ファイル名称の定義も増え、番号[1]、[2]などが付されて区別される。
アプリケーション用画像は、アプリケーションの内容が判るような画像であることが望ましい。例えば、図6の(a)部および(b)部に示されるような画像である。図6の(a)部には付箋アプリケーションを表現した画像(AppliPicture1.gif)を示し、図6の(b)部には電柱配置計画アプリケーションを表現した画像(AppliPicture2.gif)を示している。
ユーザ用色定義は、カーソルの色をRGB値等で示すものである。操作するユーザと同じ数のユーザ用色が定義されており、ユーザが増えると、ユーザ用色の定義も増え、番号[1]、[2]などが付されて区別される。
カーソルの画像は、カーソル情報に含まれるアプリケーションIDとユーザIDに基づいて、図4示されるカーソル定義を組み合わせて作成される。例えば、アプリケーションIDが1のアプリケーションに対応する画像が、アプリケーション用画像ファイル名称[1]の画像ファイルであり、ユーザIDが1のユーザに対応する色が、ユーザ用色定義[1]であるとする。この場合、アプリケーションIDが1でユーザIDが1のカーソル情報から作成されるカーソル画像は、図7に示される画像となる。
すなわち、図7では、カーソルの色が「#CCFFFF」となっており、カーソルの形状を表す画像「Shape.gif」の上に、アプリケーションの内容を示す画像「AppliPicture1.gif」が重ねて描画されている。
次にイベントについて説明する。イベントは、入力装置5を介してユーザが行う入力操作を示すものであり、イベントが発生した場合、入力イベント処理手段201が、イベントの発生位置情報に基づいてイベントの種類を判別し、イベント情報とする。なお、イベントの発生位置の情報にはマルチタッチパネル上のイベントが開始された位置の座標(開始位置座標)とイベントが終了した位置の座標(終了位置座標)などを含んでいる。
図8にイベントの種類を一覧で示す。図8に示すように、イベントの種類には、マルチタッチパネルの画面に指が新たに触れたときに発生する「タッチ開始」、画面に触れた状態のままで、指を動かしたときに発生する「タッチ中」、画面に触れていた指を画面から離したときに発生する「タッチ終了」、画面に掌等の広範囲のものが新たに触れたときに発生する「広範囲タッチ開始」、画面に掌等の広範囲のものが触れた状態のままで、それを動かしたときに発生する「広範囲タッチ中」、画面に触れていた掌等の広範囲のものを、画面から離したときに発生する「広範囲タッチ終了」などが含まれる。
また、図9には、タッチ終了イベント発生直後や広範囲タッチ終了イベント発生直後に発生するイベントを示す。このようなイベントとしては、例えば、タッチして素早く離す操作(マウス操作のクリックに相当)が行われたときに発生する「タップ」や、タッチした状態で、画面上を滑らすように動かして離したときに発生する「スワイプ」がある。
以上説明したマルチカーソル処理システム200は、図1に示される電子機器100の各部で実現される。すなわち、カーソル情報格納部203およびカーソル定義格納部206は、主記憶装置3で実現しても良いし、外部記憶装置4で実現しても良い。
入力イベント処理手段201、カーソル管理手段202、カーソル移動手段204、カーソル表示手段205、コンテキスト特定手段207、タスク208〜210、タスク表示手段211〜213、表示手段214は、外部記憶装置4に記憶されており、中央処理装置2により主記憶装置3上に展開され、実行されるコンピュータプログラムで実現される。
図10には電子機器100の平面構成の一例を示す。図10に示すように、電子機器100は、マルチタッチパネルを有する表示装置6の表示画面が外部に向かうように有底無蓋の筐体CSに収納されており、表示装置6の表示画面上にマルチタッチパネルが配設されている。従って、表示装置6の表示画面上に表示された画像は、マルチタッチパネルを介してユーザに視認される。なお、図1に示したコンピュータシステム1は、筐体CS内に収納されている。
図10においては、表示装置6の表示画面に地図画像が表示され、地図画像には、複数のカーソルが表示されている。すなわち、ユーザAのアプリケーションA用カーソルUAA、ユーザAのアプリケーションB用カーソルUAB、ユーザBのアプリケーションA用カーソルUBAおよびユーザBのアプリケーションB用カーソルUBBが表示されている。マルチタッチパネルを介してこれらのカーソルをユーザが操作することで、コンピュータプログラムで実現されるアプリケーションを機能させることができる。
<動作>
<全体動作>
次に、図1、図2を参照しつつ、図11〜図14に示すフローチャートを用いて、操作対象のタスクや操作したユーザを判定する際の、マルチカーソル処理システムの内部処理手順を説明する。
図11は、内部処理手順の全体動作を示すフローチャートである。図11に示すように、本システムが起動されると、入力待ちの状態に入る(ステップS101)。ここで、入力とは、入力装置5を介してのユーザによる入力操作(イベント)を示している。
イベントが発生した場合は、入力イベント処理手段201がイベントの発生位置情報に基づいてイベントの種類を判別し、イベント情報としてカーソル管理手段202に与える(ステップS102)。
その後、カーソル管理手段202は、カーソル情報格納部203から、イベントの開始位置座標にあるカーソルの情報を検索する(ステップS103)。
そして、カーソル管理手段202は、カーソル情報の検索結果を判定し(ステップS104)、カーソル情報があれば、カーソル管理手段202は、カーソル移動手段204にそのカーソル情報とイベントの発生位置情報を与え、カーソル移動手段204がカーソル移動処理を行い、移動後のカーソル位置を含むカーソル情報をカーソル管理手段202に与える(ステップS105)。ステップS105の詳細は後述する。
一方、ステップS104において、カーソル情報がないと判定された場合は、ステップS101の入力待ちの状態へ戻る。
カーソル管理手段202は、ステップS105において取得された、移動後のカーソル位置情報を含むカーソル情報を、カーソル情報格納部203へ格納することでカーソル情報を更新する(ステップS106)。
また、ステップS106では、カーソル管理手段202は、更新したカーソル情報の直近操作フラグをTRUEに更新し、それまで直近操作フラグがTRUEになっていたカーソル情報の直近操作フラグをFALSEに更新して、カーソル情報格納部203へ格納する。なお、直近操作フラグがTRUEであるカーソル情報は一つに限定されるものではなく、ユーザごとに一つであっても良い。
また、上記ではカーソル情報の直近操作フラグを用いて、直近に操作されたか否かを判定しているが、カーソル管理手段202が、直近に操作されたカーソルの情報を、リストとして管理し、リストを更新するものであっても良い。
カーソル管理手段202は、カーソル表示手段205にカーソル情報を渡し、カーソル表示手段205は、カーソルの表示処理を行う(ステップS107)。ステップS107の詳細は後述する。
カーソル管理手段202は、コンテキスト特定手段207にカーソル情報と入力イベント処理手段201から取得したイベント情報を渡し、コンテキスト特定手段207は、コンテキスト特定処理を行う(ステップS108)。ステップS108の詳細は後述する。
ステップS108において操作対象であると判定されたタスクが、カーソル情報に含まれる情報とイベント情報を受け取り、受け取ったイベントの種類に応じた処理を実行する(ステップS109)。
ステップS109において操作対象のタスクが処理を実行後、全てのタスクが処理を終了したかどうかを判定する(ステップS110)。そして、全てのタスクが終了した場合には、本システムは処理を終了し、未終了のタスクがある場合には、ステップS111に移行する。
ステップS111では、タスク表示手段211〜213が、それぞれ、タスク208〜210の内容の表示処理を行う。
表示手段214は、ステップS107で処理されたカーソルと、ステップS111において処理されたタスクの内容を合わせて、表示装置6に表示する表示処理を行う(ステップS112)。そして、表示処理後は、ステップS101の入力待ちの状態へ戻る。
<カーソル移動処理>
次に、図12に示すフローチャートを用いて、ステップS105のカーソル移動処理の詳細について説明する。
まず、カーソル移動手段204が、カーソル管理手段202から、イベント情報に含まれるイベントの発生位置情報と、移動させるカーソルのカーソル情報を取得する(ステップS1051)。
カーソル移動手段204は、ステップS1052において、イベントの発生位置情報を用いてカーソルの移動後の座標を決定する。すなわち、イベントとはユーザによる入力操作であり、入力操作には先に説明したように「タッチ」の他に「タップ」や「スワイプ」などがある。「タッチ」の場合はイベントの発生位置は一点に限定されるので、発生位置情報はその一点の位置情報となるが、「スワイプ」や「ドラッグ」の場合は、発生位置は二点以上となるので、発生位置情報は複数の点の位置情報となる。
従って、カーソルをドラッグしたような場合、カーソル移動手段204は、イベントの発生位置情報から、カーソルの移動開始位置座標と、カーソルの移動終了位置座標を得ることができる。
なお、本実施の形態においては、カーソルの移動終了位置座標をカーソルの移動後の座標とするが、開始位置座標と終了位置座標との距離(dis)と、開始位置から終了位置への方向(dir)を計算し、終了位置から方向dirへ距離dis離れた位置の座標をカーソルの移動後の座標とする等の計算を行って、移動後の座標を決めても良い。
カーソル移動手段204は、移動させるカーソルのカーソル位置を、ステップS1052において決定した、カーソルの移動後座標に更新し、カーソル管理手段202にそのカーソル情報を与える(ステップS1053)。
<カーソル表示処理>
次に、図13に示すフローチャートを用いて、ステップS107のカーソル表示処理の詳細について説明する。
まず、カーソル表示手段205は、カーソル管理手段202からカーソル情報を取得する(ステップS1071)。
次に、カーソル表示手段205は、ステップS1071で取得したカーソル情報のアプリケーションIDとユーザIDを用いて、該当するカーソル定義をカーソル定義格納部から取得する(ステップS1072)。
その後、カーソル表示手段205は、ステップS1071で取得したカーソル情報のカーソル位置から、カーソルの表示位置を決定する(ステップS1073)。
そして、カーソル表示手段205は、ステップS1071で取得したカーソル情報の直近操作フラグがTRUEであるか否かを判定する(ステップS1074)。フラグがTRUEであれば、そのカーソルを強調表示し(ステップS1075)、フラグがFALSEであれば、そのカーソルを通常表示する(ステップS1076)。
その後、カーソル表示手段205は、全てのカーソルの表示処理が完了しているかを判定する(ステップS1077)。そして、完了していなければ、ステップS1071のカーソル情報を取得する状態へ戻り、完了していれば、カーソル表示手段205は、カーソルの表示処理を終了する。
なお、上記では、直近に操作されたカーソルを強調表示する方法を示したが、直近に操作されたカーソル以外のカーソルを半透明で表示し、直近に操作されたカーソルを通常表示するものであっても良く、また、特に表示を変更せず、全てのカーソルを通常表示するものであっても良い。
<コンテキスト特定処理>
次に、図14に示すフローチャートを用いて、ステップS108のコンテキスト特定処理の詳細について説明する。
まず、コンテキスト特定手段207が、カーソル管理手段202から操作中のカーソルのカーソル情報とイベント情報とを受け取る(ステップS1081)。
ステップS1081で受け取ったカーソル情報のタスクID、アプリケーションID、ユーザIDを用いて、操作対象のタスクと操作中のユーザを判定する(ステップS1082)。
最後に、操作対象のタスクに、ステップS1081において取得したカーソル情報に含まれる情報と、ステップS1081で受け取ったイベント情報を与える(ステップS1083)。
<操作方法>
次に、図1、図2、図11〜図14を参照しつつ、図15〜図21を用いて、実施の形態1の電子機器100のマルチカーソル処理システム200を用いた操作方法について説明する。
図15には、マルチカーソル処理システム200を用いて表示装置6に表示される表示画面の一例を示す。
図15に示されるように、表示画面には、付箋アプリケーションの内容と電柱配置計画アプリケーションの内容が地図に重畳して表示されている。すなわち、付箋アプリケーション用のカーソル71、72と電柱配置計画アプリケーション用のカーソル73、74が地図に重畳されており、それらはカーソルに表示される画像によって、ユーザがアプリケーションの内容を識別できるようになっている。なお、アプリケーションの内容の識別は、カーソルの画像の違いに限るものではなく、例えば、カーソルの形や色の違いによって識別できるものであっても良い。
また、図15においては、カーソル71、73はユーザAのもの、カーソル72、74はユーザBのものであり、これはカーソルの色(図ではハッチングの有無で表される)によって、ユーザが識別できるようになっているが、これに関しても、カーソルの違いは色の違いに限るものではない。例えば、カーソルの形や表示される画像が異なるものであっても良い。
なお、タスクの識別方法とユーザの識別方法は、異なる方法であることが望ましい。また、図15では、全てのカーソルを半透明で表示しているが、これに限定されるものではない。
図16にはカーソルの例を示す。図15においてカーソル71は、ユーザAの付箋アプリケーション用のカーソルであり、カーソル71は、ユーザBの付箋アプリケーション用のカーソルである。また、カーソル73は、ユーザAの電柱配置計画アプリケーション用のカーソルであり、カーソル74は、ユーザBの電柱配置計画アプリケーション用のカーソルである。
各カーソルのカーソル情報の例を図17に一覧で示す。図17に示すように、付箋アプリケーションのアプリケーションIDを1とし、電柱配置計画アプリケーションのアプリケーションIDを2としている。
また、ユーザAのユーザIDを1とし、ユーザBのユーザIDを2としている。なお、アプリケーションの起動に際してはユーザ名の登録などの手続を行うことを前提とすることで、例えば、ユーザAが付箋アプリケーションと電柱配置計画アプリケーションとを起動させると、ユーザ名の情報に基づいて上記のようにユーザIDが設定される。タスクIDは、ユーザがアプリケーションを起動した順に採番しており、図17では、全てのアプリケーションで通し番号になるようにしている。なお、タスクIDは、アプリケーションごとに採番されるものであっても良い。なお、それぞれの直近操作フラグは、最初は全てFALSEに設定されている。
付箋アプリケーションは、地図に表示されているある地点に関するコメントを残しておきたい場合に用いるアプリケーションである。すなわち、コメントを残しておきたい地点に関連付けて付箋を作成、登録しておけば、その地点をタップ等の操作により選択すると、その地点の近くに登録してある付箋が表示される。
そして、選択可能な地点には付箋アイコンを表示することでユーザの利便性を高める。図15では、地図上に付箋アイコン75、76、77が星形で表示されている。
また、電柱配置計画アプリケーションは、電柱をどのように配置するかを計画するためのアプリケーションである。すなわち、電柱を配置しようと考える地図上の地点をタップ等の操作により選択すると、その地点に電柱マークを表示する。図15では、地図上に電柱マーク78、79、80が二重円で表示されている。
ユーザAおよびユーザBが共に付箋アプリケーションと電柱配置計画アプリケーションを起動させると、表示装置6に、図15のような画面が表示される。
この時点でマルチカーソル処理システムのカーソルに関する内部処理が開始され、図11のステップS101が実行されている。ユーザAがカーソル71を指でドラッグして、付箋アプリケーションの付箋アイコン75の位置に移動させると、画面ではカーソル71が指に追従して移動するように表示される。
図18には、カーソル71の移動後の画面を示しており、移動後のカーソル71は強調表示されている。このとき、システムの内部では、ステップS101〜ステップS112の処理を繰り返して実行している。なお、図18では、直近に操作されたカーソル(すなわちカーソル71)以外のカーソルを半透明で表示している。
次に、ユーザBがカーソル74を指でドラッグして移動させると、カーソル71と同様に、カーソルが指に追従して移動するように表示される。
図19には、カーソル74の移動後の画面を示しており、移動後のカーソル74は強調表示されている。このとき、システムの内部では、ステップS101〜ステップS112の処理を繰り返して実行している。
次に、カーソル71が付箋アイコン75の上にある状態で、ユーザAがカーソル71を指でタップする操作と、ユーザBがカーソル74を指でタップする操作を同時に行うと、図20に示されるように付箋アイコン75に関する付箋81が表示され、また、ユーザBがタップした地点には、電柱マーク82が表示される。このとき、システムの内部では、ステップS101〜ステップS112を繰り返し実行している。
次に、ユーザAがカーソル73を動かし始めると、図21に示されるようにカーソル71の強調表示が解除され、代わりにカーソル73が強調表示される。このとき、システムの内部では、ステップS101〜ステップS112を繰り返し実行している。
このように、システムの操作が終了するまで、システム内部でステップS101〜ステップS112の処理を繰り返す。
以上説明したように、各ユーザがカーソルを介して入力操作を行った場合、どのカーソルを使用して入力操作したかを識別することで、操作のコンテキストを特定できるので、操作対象のタスクや操作したユーザを正しく判別することができる。
また、操作中のカーソルや最後に操作したカーソルを強調表示することで、直近で使用されたアプリケーションや使用しているユーザを見分けることができるので、複数のユーザが相談しながら作業を行う場合に、他人の作業状況の把握が容易となる。
また、操作中のカーソルや最後に操作したカーソル以外を半透明に表示することで、複数表示されているカーソルによって、画面が見づらくなることを回避できる。
<実施の形態2>
<構成>
本実施の形態では、カーソルの回転操作時に、その回転角度からユーザの位置とユーザが見ている方向を推定する、テーブルトップ型のディスプレイを備えたマルチカーソル処理システムについて説明する。複数のユーザがテーブルトップ型のディスプレイを見る場合、ディスプレイを囲む形態となるため、様々な方向から表示画面を見ることとなる。
なお、実施の形態2の電子機器100Aのハードウェア構成は、図1に示した電子機器100と同じであるが、表示装置6はテーブルトップ型となるためより大型となる。また、実施の形態2の電子機器100Aの外観も、図10に示した電子機器100と同様であるが、より大きなものとなる。
図22は、実施の形態2の電子機器に含まれるマルチカーソル処理システム200Aの構成を示すブロック図であるが、基本的には実施の形態1のマルチカーソル処理システム200と同じであり、カーソル管理手段202に接続されたユーザ位置推定手段215を備える点が異なっている。
ユーザ位置推定手段215は、カーソルの回転角度を用いて、そのカーソルを操作しているユーザの位置とユーザが見ている方向を推定し、カーソル表示手段205は、回転角度に合わせたカーソルの表示処理を行う。
また、カーソル管理手段202は、カーソルの回転角度を管理し、ユーザ位置推定手段215に、カーソルの回転角度の情報を与える。なお、カーソルの回転角度は、カーソル情報の一部としてカーソル情報格納部203に格納される構成であっても良い。
タスク表示手段211〜213は、ユーザ位置推定手段215において推定されたユーザの位置とユーザが見ている方向の情報を用いて、画面上に表示する表示内容の方向を、ユーザが見やすい方向に変更する。
なお、ユーザ位置推定手段215は、中央処理装置2により主記憶装置3上に展開され、実行されるコンピュータプログラムで実現されるが、当該コンピュータプログラムは主記憶装置3に記憶されていても良いし、外部記憶装置4に記憶されていても良い。
ここで、カーソル情報には、カーソルの回転角度の情報の他に、そのカーソルを操作しているユーザがいる位置の座標を含んでいる。ただし、これらの情報は、必ずしもカーソル情報に含まれている必要はなく、カーソル管理手段202が管理する構成であっても良い。
図23にカーソル情報の内容を一覧で示す。図23に示すように、カーソル情報には、タスクID、アプリケーションID、ユーザID、カーソル位置x、カーソル位置y、直近操作フラグ、回転角度、ユーザ位置xおよびユーザ位置yが含まれている。なお、ユーザ位置xおよびユーザ位置yは、実施の形態2の電子機器の外側の位置となるが、マルチタッチパネルをマトリクス状に区分した場合の升目の個数を用いて表すことができる。なお、ユーザ位置の推定処理の詳細については後に説明する。
<動作>
<全体動作>
次に、図22を参照しつつ、図24〜図29を用いて、操作対象のタスクや操作したユーザおよびユーザ位置を判定する際の、マルチカーソル処理システムの内部処理手順を説明する。
図24は、内部処理手順の全体動作を示すフローチャートである。なお、図24に示すステップS101〜ステップS104、ステップS106、ステップS108〜ステップS110、ステップS112の処理は、図11に示したステップS101〜ステップS104、ステップS106、ステップS108〜ステップS110、ステップS112の処理と同様であるので説明は省略する。
図24において、ステップS101〜S104の処理を行った後、ステップS105において、カーソル管理手段202は、カーソル移動手段204に、カーソル情報とイベント情報を与え、カーソル移動手段204がカーソルの移動処理を行い、移動後のカーソル情報をカーソル管理手段202に与える。ステップS105の詳細は後述する。
ステップS105の処理の後、カーソル管理手段202は、ステップS105において取得されたカーソル情報を、カーソル情報格納部203へ格納することでカーソル情報を更新する(ステップS106)。
ステップS106の処理の後、ユーザ位置推定手段215は、ステップS213において、カーソルの回転角度を用いて、そのカーソルを操作しているユーザの位置情報を推定する(ステップS213)。
位置情報には、ユーザの位置とユーザが見ている方向の情報が含まれ、ユーザ位置推定手段215は、推定した位置情報をカーソル管理手段202に与える。ステップS213の詳細は後述する。
ステップS213の処理の後、カーソル管理手段202は、カーソル表示手段205にカーソル情報を与え、カーソル表示手段205は、回転角度に合わせてカーソルの表示処理を行う(ステップS107)。ステップS107の詳細は後述する。
以下、ステップS108〜S110の処理を行った後、タスク表示手段211〜213は、カーソル管理手段202からユーザの位置情報を受け取り、その位置情報を用いて、画面上に表示する表示内容の方向を変更する(ステップS111)。ステップS111の詳細は後述する。
<カーソル移動処理>
次に、図25に示すフローチャートを用いて、ステップS105のカーソル移動処理の詳細について説明する。
なお、図25に示すステップS1051〜ステップS1053は、それぞれ、図12を用いて説明した実施の形態1におけるステップS1051〜ステップS1053と同様の処理を行うので説明は省略する。
ステップS1051〜ステップS1053の処理を行った後、ステップS2054において、カーソル移動手段204は、ステップS1052において取得したカーソルの移動後の座標と、ステップS1052において取得したカーソルの開始位置座標とからカーソルの回転角度を取得する。すなわちユーザがカーソルを表示装置6のX方向(水平方向)およびY方向(垂直方向)で規定される平面に対して斜め方向に移動させるような場合、移動後の座標と開始位置座標から移動方向を算出し、カーソルの中心線が移動方向に沿うようにカーソルを回転させて表示するように構成しておくことで、カーソルの中心線の傾きからカーソルの回転角度を得ることができる。なお、システムを起動させてアプリケーションを選択した直後の段階では、カーソルの中心線はX方向およびY方向の何かれの方向に平行となっており、この方向を原点(0゜)とし、原点から何度傾いているかでカーソルの回転角度を定義できる。
カーソル移動手段204は、カーソルの回転角度をステップS2054において取得したカーソルの回転角度に更新し、カーソル情報としてカーソル管理手段202に与える(ステップS2055)。
<ユーザ位置推定処理>
次に、図26に示すフローチャートを用いて、ステップS213のユーザ位置推定処理の詳細について説明する。
ステップS2131において、ユーザ位置推定手段215は、カーソル管理手段202より、カーソルの回転角度を取得する。
次に、ステップS2132において、ユーザ位置推定手段215は、カーソルの回転角度からユーザの位置とユーザが見ている方向を推定する。
本実施の形態においては、回転後のカーソルの中心線の延在方向であって、カーソルの進行方向とは反対側にユーザがいるもの推定とし、ユーザの位置は、表示装置6の額縁の幅からある一定の間隔だけ離れた点で表すものとする。このような推定方法を採ることで、簡便にユーザの位置を推定できる。
図27は、実施の形態2の電子機器100Aの外観を示す図であり、表示装置6を収納する筐体CSの表示画面を囲む領域が額縁と呼称される領域であり、額縁FLの4辺のうち、図に向かって上辺の枠幅を幅WT、下辺の枠幅を幅WB、左辺の枠幅を幅WL、右辺の枠幅を幅WRとする。
図27において、カーソル71を操作しているユーザの位置は、カーソルの中心線の延在方向であって、カーソルの進行方向とは反対側の額縁FLの外側の点UPで示している。
すなわち、カーソルの中心線を延在した直線CLが、額縁FLの外縁から所定距離Lだけ離れた額縁FLと平行な直線PLと交わる点UPがユーザの位置であると推定する。また、ユーザが見ている方向は、カーソルの回転角度と同じであるものとする。
例えば、カーソルの中心線がY軸に平行な場合を0゜とし、時計回りをプラス方向、反時計回りをマイナス方向とすると、図27のカーソル71の回転角度は+θとなる。
<カーソル表示処理>
次に、図28に示すフローチャートを用いて、ステップS107のカーソル表示処理の詳細について説明する。
なお、図28に示すステップS1071〜ステップS1077は、それぞれ、図13を用いて説明した実施の形態1におけるステップS1071〜ステップS1077と同様の処理を行うので説明は省略する。
実施の形態2においては、ステップS1072とステップS1073との間に、カーソルの座標を変換する処理(ステップS2078)が含まれている。
すなわち、ステップS1072の処理を行った後、ステップS2078において、カーソル表示手段205は、ステップS1071において取得したカーソル情報から、カーソルの回転角度を取得し、カーソルの回転処理(座標変換)を行い、ステップS1073では座標変換後のカーソル位置から、カーソルの表示位置を決定する。
<各タスクの表示処理>
次に、図29に示すフローチャートを用いて、ステップS111の各タスクの表示処理の詳細について説明する。
ステップS111において、タスク表示手段211〜213は、ユーザ位置推定手段215より、ユーザの位置情報を取得する。
次に、ステップS1112において、タスク表示手段211〜213は、ユーザの位置情報に合わせて表示方向を設定する。なお、本実施の形態においては、ユーザの位置を示す点UP(図27)を基点としたカーソルの回転角度方向をタスクの表示方向とする。
次に、ステップS1113において、タスク表示手段211〜213が、それぞれ、ステップS1112において設定した表示方向に合わせて、タスク208〜210の内容の表示処理を行う。
<操作方法>
次に、図22、図24〜図29を参照しつつ、図30、図31を用いて、実施の形態2の電子機器100Aのマルチカーソル処理システム200Aを用いた操作方法について説明する。
図30には、マルチカーソル処理システム200Aを用いて表示装置6に表示される表示画面の一例を示す。
ユーザA、ユーザBが共に付箋アプリケーションと電柱配置計画アプリケーションを起動させると、テーブルトップ型の表示装置6に、図30に示されるように、表示画面には、付箋アプリケーションの内容と電柱配置計画アプリケーションの内容が地図に重畳して表示される。
この時点でマルチカーソル処理システムのカーソルに関する内部処理が開始され、図24のステップS101が実行されている。
ユーザAがカーソル71を指でドラッグして、付箋アプリケーションの付箋アイコン75の位置に移動させる場合、付箋アイコン75がカーソル71の位置から斜め方向にある場合、ユーザAはカーソル71を付箋アイコン75の方向に指で回転させた後、ドラッグして、付箋アプリケーションの付箋アイコン75へ動かし、画面ではカーソルが指に追従して表示され、カーソル71は強調表示される。
このとき、システムの内部では、ステップS101〜ステップS112の処理を繰り返して実行している。なお、カーソル71の回転は、ステップS2054において説明したように、指先のマルチタッチパネルへの接触位置が微妙に変わることを検出して実行される。
次に、カーソル71が付箋アイコン75の上にある状態で、ユーザAがカーソル71を指でタップする操作を行うと、図31に示されるように、付箋アイコン75に関する付箋81が表示される。なお、付箋81は、ステップS1112での処理によりユーザが見やすい方向に表示されている。
このとき、システムの内部では、ステップS101〜ステップS112の処理を繰り返して実行している。
以上説明したように、カーソルの回転角度を用いてユーザの位置やユーザが見ている方向を推定することにより、赤外線センサ等の機器を使用せずに、ユーザの位置やユーザが見ている方向を推定することができる。
また、推定されたユーザの位置やユーザが見ている方向を用いて、画面上に表示する内容の方向を決定することにより、タスクを操作しているユーザにとって視認性の良い方向で表示することができる。
なお、以上の説明においては、ユーザが意識的に回転させたカーソルのみを回転して表示する例を示したが、ステップS2132(図26)においてユーザの位置を推定した後に、そのユーザに属する全てのカーソルを、推定したユーザの位置に合わせて回転させる処理を行っても良い。この処理を行うと、図30では、ユーザAが意識して回転させたカーソル71だけでなく、ユーザAのカーソルであるカーソル73も、カーソル71から推定したユーザAの位置に合わせて回転して表示されることとなる。
このように、ユーザが意識的に回転させたカーソル以外の、そのユーザに属するカーソルも、同様に回転して表示できるので、そのユーザが他のアプリケーションを使用する度に、カーソルを回転させる必要がなくなる。
<実施の形態3>
<構成>
本実施の形態では、入力装置から入力されたイベントの種類によって、そのイベントが入力された際に使用されたカーソルの大きさや個数を変更するマルチカーソル処理システムについて説明する。
なお、実施の形態3の電子機器のハードウェア構成は、図1に示した電子機器100と同じであり、また、マルチカーソル処理システムの構成も実施の形態1のマルチカーソル処理システム200と同じである。
<動作>
<全体動作>
次に、図2を参照しつつ、図32〜図38を用いて、操作対象のタスクやカーソルの大きさや個数を変更するマルチカーソル処理システムの内部処理手順を説明する。
図32は、内部処理手順の全体動作を示すフローチャートである。なお、図32に示すステップS101〜ステップS105、ステップS108〜ステップS112の処理は、図11に示したステップS101〜ステップS105、ステップS108〜ステップS1112の処理と同様であるので説明は省略する。
図32において、ステップS101〜S104の処理を行った後、ステップS314において、カーソル管理手段202は、入力イベント処理手段201が従来の方法で判定したイベントの種類の情報を受け取る。そして、受け取ったイベントの種類が、形状変更イベントであれば、ステップS315へ移行する。
ここで、形状変更イベントとは、図8に示した「広範囲タッチ開始」等のイベントを指す。受け取ったイベントの種類がその他のイベントであれば、ステップS105へ移行する。
ステップS315において、カーソル管理手段202は、カーソルの形状や大きさや個数を変更する。ここで、カーソルの変更例を以下に説明する。
<変更例1:カーソルの拡大>
ユーザが掌等を使ってカーソルを選択した場合は、カーソルを拡大するように変更する。図33には、カーソル拡大時に用いるカーソル情報の例を示す。
図33に示すように、カーソル情報には、タスクID、アプリケーションID、ユーザID、カーソル位置x、カーソル位置y、直近操作フラグに加え、カーソルの拡大率が含まれている。ただし、カーソルの拡大率は、必ずしもカーソル情報に含まれている必要はなく、カーソル管理手段202が管理する構成であっても良い。
ステップS315において、カーソル管理手段202は、ステップS103において取得したカーソル情報の拡大率を変更する。これはステップS107のカーソル表示処理で、カーソルの変倍処理を行う際に、参照するために変更するものである。
<変更例2:カーソルの分割>
ユーザがカーソル上の任意の二点を選択し、その二点を離れる方向に動かした場合に、カーソルを分割して二つのカーソルとするように変更する。
この場合、ステップS315において、カーソル管理手段202は、選択されたカーソルのカーソル情報を複製してカーソルを二つにする。このとき、カーソル情報に、カーソルの縮小率の情報を含んでいる場合には、カーソルを縮小して二つのカーソルとするように構成しても良い。この場合、カーソル情報に、カーソルの縮小率の情報を含んでいない場合は、カーソルの大きさは変更しないように構成しても良い。
<変更例3:カーソルのマージ>
ユーザが分割された二つのカーソルを選択し、それらを近づける方向に動かして接触させた場合は、カーソルをマージして一つのカーソルとするように変更する。
この場合、ステップS315において、カーソル管理手段202は、二つのカーソルの何れかのカーソル情報を削除する。カーソルの分割時に、カーソル情報に含まれる縮小率を用いてカーソルを縮小していた場合は、マージの際には、元の大きさに戻すように構成しても良い。
ここで再び図32のフローチャートの説明に戻り、ステップS106において、カーソル管理手段202は、実施の形態1において説明したようにカーソル情報を更新すると共に、ステップS314において、形状変更イベントであると判定された場合には、ステップS315において変更、複製、削除したカーソル情報について、カーソル情報格納部203の情報を更新する。
次に、ステップS107において、カーソル管理手段202は、カーソル表示手段205にカーソル情報を与え、カーソル表示手段205は、カーソル情報に基づいてカーソルの表示処理を行う。ステップS101の詳細は後述する。以下、ステップS108〜S112の処理については実施の形態1と同じである。
<カーソルの表示処理>
次に、図34に示すフローチャートを用いて、ステップS107のカーソルの表示処理の詳細について説明する。
なお、図28に示すステップS1071〜ステップS1077は、それぞれ、図13を用いて説明した実施の形態1におけるステップS1071〜ステップS1077と同様の処理を行うので説明は省略する。
実施の形態3においては、ステップS1072とステップS1073との間に、カーソルの変倍処理(ステップS3078)が含まれている。
すなわち、ステップS1072の処理を行った後、ステップS3078において、カーソル表示手段205は、ステップS1071において取得したカーソル情報から、カーソルの拡大率または縮小率を取得し、カーソルの変倍処理(座標変換)を行い、ステップS1073では座標変換後のカーソル位置から、カーソルの表示位置を決定する。
<操作方法>
次に、図32、図34を参照しつつ、図15、図35〜図38を用いて、実施の形態3の電子機器のマルチカーソル処理システムを用いた操作方法について説明する。
ユーザA、ユーザBが共に付箋アプリケーションと電柱配置計画アプリケーションを起動させると、表示装置6の表示画面には、図15に示されるように、付箋アプリケーションの内容と電柱配置計画アプリケーションの内容が地図に重畳して表示される。
この時点でマルチカーソル処理システムのカーソルに関する内部処理が開始され、図32のステップS101が実行されている。
ユーザAがカーソル71を掌でタッチすると、図35に示されるように表示画面ではカーソル71が拡大して表示される。このとき、システムの内部では、ステップS101〜ステップS112の処理を繰り返して実行している。
次に、ユーザBがカーソル74を左右の指で一点ずつタッチし、それらが離れる方向にドラッグすると、図36に示されるようにカーソル74が分割され、カーソル741および742となる。なお、図36では、カーソル741、742をカーソル74よりも縮小させて表示している。このとき、システムの内部では、ステップS101〜ステップS112を繰り返し実行している。
次に、ユーザBがカーソル742を選択して、図37に示されるようにカーソル741に近づける方向へ動かし、カーソル741に接触させると、図38に示されるようにカーソル742がカーソル741にマージされ、一つのカーソル74となる。なお、図38では、カーソル74を分割前の拡大率で表示している。
以上説明したように、カーソルの選択方法によりカーソルの形状を変更できるので、複数のユーザが相談しながら作業を行う場合に、カーソルを拡大する等して、他人の注目を集めることができる。
また、カーソルを分割したり、分割後にマージしたりすることにより、同一のタスクにおいて、一人で2箇所以上の入力操作を同時に行うことができる。これにより、画面の拡大、縮小や、回転等の操作もカーソルによって実行することが可能になる。
<実施の形態4>
<構成>
本実施の形態では、カーソルを動かした際に、そのカーソルに関連するタスクの操作可能位置へカーソルを移動させたり、操作可能位置を強調表示したりする、マルチカーソル処理システムについて説明する。
なお、実施の形態4の電子機器のハードウェア構成は、図1に示した電子機器100と同じである。また、図39は実施の形態4の電子機器に含まれるマルチカーソル処理システム200Bの構成を示すブロック図であるが、基本的には実施の形態1のマルチカーソル処理システム200と同じであり、操作可能位置情報格納部216〜218を備える点が異なっている。
すなわち、操作可能位置情報格納部216〜218は、それぞれ、タスク208〜210の操作可能な位置を格納する部位であり、カーソル移動手段204に操作可能位置情報を与える。なお、操作可能位置情報格納部216〜218は、主記憶装置3あるいは外部記憶装置4で実現される。
カーソル移動手段204は、操作可能位置情報格納部216〜218から、操作中のカーソルに関連するタスクが有する操作可能位置情報を取得し、取得した操作可能位置情報の中からカーソルの移動先候補を選択する。ここで、操作可能位置は、各カーソルによって操作可能な位置のことを指している。具体的な例としては、付箋アプリケーション用のカーソル71および72 を操作中の場合は、付箋アイコンが表示されている位置(付箋の表示が可能な位置)であり、電柱配置計画アプリケーション用のカーソル73および74を操作中の場合は、電柱マークが表示されている位置(電柱マークの移動操作が可能な位置)である。カーソルの移動先候補は、これらの操作可能位置から選択される。
そして、タスク表示手段211〜213は、操作中のカーソルに関連するタスクである場合は、カーソルの操作可能位置にあるタスクの表示内容を強調表示する。
<動作>
<全体動作>
図39に示すマルチカーソル処理システム200Bの内部処理手順の全体動作を示すフローチャートは、図11に示したマルチカーソル処理システム200の内部処理手順の全体動作を示すフローチャートと基本的には同様であるが、ステップS105における、カーソル移動処理と、ステップS111における各タスクの表示処理は異なる。
<カーソル移動処理>
次に、図40に示すフローチャートを用いて、ステップS105のカーソル移動処理の詳細について説明する。
なお、図40に示すステップS1051およびステップS1053は、それぞれ、図12を用いて説明した実施の形態1におけるステップS1051およびステップS1053と同様の処理を行うので説明は省略する。
カーソル移動手段204は、ステップS1051において取得したイベント情報からイベントの種類を取得する(ステップS4051)。
すなわち、ステップS4051において、イベントの種類が、図8に示した「タッチ終了」あるいは「広範囲タッチ終了」であればステップS4052に移行し、その他のイベントであればステップS40511へ移行する。
ステップS4052において、カーソル移動手段204は、ステップS1051において取得したカーソル情報から、操作対象のタスクIDを取得する。
次に、ステップS4053において、カーソル移動手段204は、操作対象のタスクに対応する操作可能位置格納部から、操作可能位置を取得する。例えば、操作対象タスクがタスク208であった場合は、操作可能位置格納部216から操作可能位置を取得する。
次に、ステップS4054において、カーソル移動手段204は、ステップS1051において取得したイベント情報から、終了位置座標と操作可能位置座標との距離Dを算出する。
次に、ステップS4055において、カーソル移動手段204は、ステップS4054において算出した距離Dが任意の閾値v以下であるかどうかを判定する。そして、距離Dが閾値v以下であれば、ステップS4056に移行し、距離Dが閾値vより大きければ、ステップS4058に移行する。
ステップS4056では、カーソル移動手段204は、カーソル移動先候補CとステップS1051において取得したイベントの終了位置座標との距離Dcと距離Dとを比較し、距離Dcが距離Dより長ければステップS4057に移行し、距離Dcが距離D以下であればステップS4058に移行する。
ステップS4057では、カーソル移動手段204は、カーソル移動先候補Cの座標を、ステップS4054において距離Dを求めた操作可能位置の座標に更新する。なお、カーソル移動先候補Cのデフォルト値は無効な座標としておく。
ステップS4058では、全ての操作可能位置との距離Dの算出処理が完了したか否かを判定し、算出処理が完了している場合はステップS4059に移行し、完了していなければステップS4054に戻る。
ステップS4059では、カーソル移動先候補Cがあるか否かを判定し、カーソル移動先候補Cがある場合(デフォルト値でない場合)は、ステップS40510に移行して、カーソルの移動先としてカーソル移動先候補Cの座標を選択する。
一方、カーソル移動先候補Cがない場合(デフォルト値である場合)は、イベントの終了位置座標をカーソルの移動先に設定する(ステップS40511)。
最後に、カーソル移動手段204は、移動させるカーソルのカーソル位置を、カーソル移動先候補Cの座標、またはカーソルの移動後の座標に更新し、カーソル管理手段202にそのカーソル情報を与える(ステップS1053)。
<各タスクの表示処理>
次に、図41に示すフローチャートを用いて、ステップS111の各タスクの表示処理の詳細について説明する。
ステップS4111において、タスク表示手段211〜213は、自らがステップS108において操作対象であると判定されたタスクの表示手段であるか否かを判定し、操作対象であると判定されたタスクの表示手段である場合はステップS4112に移行し、操作対象であると判定されたタスクの表示手段でなければステップS4115に移行する。
例えば、タスク208が操作対象のタスクである場合、タスク表示手段211はステップS4112に移行し、タスク表示手段212、213はステップS4115に移行する。
ステップS4112では、タスク表示手段211は、タスク208を介して操作可能位置情報格納部216から操作可能位置の座標を取得する。
次に、ステップS4113において、タスク表示手段211は、操作可能位置にある表示内容を強調表示する表示処理を行う。
次に、ステップS4114において、タスク表示手段211は、操作可能位置以外にある表示内容を通常表示する処理を行う。
また、ステップS4115において、タスク表示手段212、213は、実施の形態1に係るステップS111と同様に、通常の表示処理を行う。
<操作方法>
次に、図39〜図41を参照しつつ、図42〜図44を用いて、実施の形態4の電子機器のマルチカーソル処理システムを用いた操作方法について説明する。
ユーザA、ユーザBが共に付箋アプリケーションと電柱配置計画アプリケーションを起動させると、表示装置6の表示画面には、図15に示されるように、付箋アプリケーションの内容と電柱配置計画アプリケーションの内容が地図に重畳して表示される。
この時点でマルチカーソル処理システムのカーソルに関する内部処理が開始され、図11のステップS101が実行されている。
ユーザAがカーソル71を指でドラッグして移動させると、画面ではカーソルが指に追従して表示され、図42に示されるように付箋アプリケーションの付箋アイコン75〜77が強調表示される。このとき、システムの内部では、ステップS101〜ステップS112の処理を繰り返して実行している。
次に、図43に示されるように、ユーザAがカーソル71を付箋アイコン75に近づけて指を離すと、画面では、図44に示されるように、カーソルが付箋アイコン75の上に自動的に移動する。このとき、システムの内部では、ステップS101〜ステップS112の処理を繰り返し実行している。
以上説明したように、カーソルを動かす際に、操作可能位置が強調表示されるので、ユーザがカーソルの操作中に操作可能位置を判別することができ、操作が容易となる。なお、操作可能位置の強調表示は、カーソルを自動的に移動させない構成で行っても良い。
なお、そのカーソルに関連するタスクの操作可能位置へカーソルを自動的に移動させるように構成する場合には、カーソルを長い距離に渡って指で移動させずに済む。また、指の届かない操作可能位置にカーソルを移動させたい場合でも、ユーザが移動することなく、カーソルを移動させることができ、表示装置が大型の場合に特に有効である。
なお、本発明は、その発明の範囲内において、各実施の形態を自由に組み合わせたり、各実施の形態を適宜、変形、省略することが可能である。