JP2010282244A - カーソル制御システム及びカーソル制御プログラム - Google Patents
カーソル制御システム及びカーソル制御プログラム Download PDFInfo
- Publication number
- JP2010282244A JP2010282244A JP2009132639A JP2009132639A JP2010282244A JP 2010282244 A JP2010282244 A JP 2010282244A JP 2009132639 A JP2009132639 A JP 2009132639A JP 2009132639 A JP2009132639 A JP 2009132639A JP 2010282244 A JP2010282244 A JP 2010282244A
- Authority
- JP
- Japan
- Prior art keywords
- cursor
- input
- boundary
- control process
- movement
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Abstract
【課題】ユーザに課す操作を増やすことなく、また、ユーザの操作だけに依拠して、所望のオブジェクトを選択しやすくする。
【解決手段】カーソル制御システム1は、カーソルが所定のオブジェクト上にいる場合であって、入力装置3からの入力値に基づいて算出したカーソルの位置が所定のオブジェクトの外に出る場合には、カーソルを所定のオブジェクトの境界上に位置づけ、位置づけられたカーソルの位置から、さらに入力装置3からの入力があって、所定のオブジェクトの外方向にカーソルの移動がある場合には、入力装置からの入力値に基づくカーソルの移動量が第1の閾値以上であるか否かを判定し、カーソルの移動量が第1の閾値以上である場合には、所定のオブジェクトの外にカーソルを位置づけ、第1の閾値未満である場合には、所定のオブジェクトの境界上にカーソルを位置づける。
【選択図】図1
【解決手段】カーソル制御システム1は、カーソルが所定のオブジェクト上にいる場合であって、入力装置3からの入力値に基づいて算出したカーソルの位置が所定のオブジェクトの外に出る場合には、カーソルを所定のオブジェクトの境界上に位置づけ、位置づけられたカーソルの位置から、さらに入力装置3からの入力があって、所定のオブジェクトの外方向にカーソルの移動がある場合には、入力装置からの入力値に基づくカーソルの移動量が第1の閾値以上であるか否かを判定し、カーソルの移動量が第1の閾値以上である場合には、所定のオブジェクトの外にカーソルを位置づけ、第1の閾値未満である場合には、所定のオブジェクトの境界上にカーソルを位置づける。
【選択図】図1
Description
本発明は、グラフィカルユーザインターフェース(GUI)においてカーソルを制御する技術に関する。
昨今、ユーザが機器を操作する場合には、液晶ディスプレイなどの表示装置にグラフィカルユーザーインターフェース(GUI)を表示して、操作を行うことが増えている。このようなGUIを用いた操作としては、トラックパッドやマウスなどのポインティングデバイスで画面上のカーソルを操作し、ボタンや画像といったオブジェクトを選択するのが一般的である。このとき、選択対象のオブジェクトが小さかったり、ポインティングデバイスの操作に慣れていなかったりすると、操作ミスによるブレが発生してしまい、カーソルがオブジェクトから外れてしまってうまく選択できないことがある。また、複数のオブジェクトが隣接している場合には、望んでいないオブジェクトを選択してしまうことも起こりうる。
この点、特許文献1には、設定した領域を拡大表示して、アイコンなどの選択性を向上させる画像表示システムが開示されている。同様にして、特許文献2には、選択対象であるホットスポットを拡大表示して、ホットスポットを確実に選択させるホットスポット選択方法が開示されている。
また、特許文献3には、タッチパッドを一定時間以上押圧することにより、仮想ポインタを選択領域内に移動して、誤入力を低減させる入力装置が開示されている。
しかしながら、特許文献1及び特許文献2が開示している、オブジェクトを拡大してオブジェクトの選択を容易とする技術においては、ユーザはオブジェクトを拡大するための操作が必要となるため、ユーザに課す操作が増えてしまうという問題がある。また、拡大領域が表示されることによって、それが他のオブジェクトに覆い被さり隠してしまい、操作性を損ねるという問題も起こり得る。
また、特許文献3が開示している、システム側がカーソルを自動的に移動させる技術においては、ユーザの操作が介在しないので、ユーザの意図しない動作をする可能性があり、ユーザにとってわかりにくいという問題がある。
本発明は、上記の事情を鑑みてなされたものであり、その課題の一例としては、ユーザに課す操作を増やすことなく、また、ユーザの操作だけに依拠して、所望のオブジェクトを選択しやすくするカーソル制御システム及びカーソル制御プログラムを提供することにある。
上記の課題を達成するため、本発明の第1の態様は、画面上にオブジェクト及びカーソルを表示する表示装置と、前記カーソルを用いて、前記オブジェクトを選択させる入力装置と、前記入力装置からの入力値に基づいて、前記カーソルの移動を制御する制御装置と、を備えたカーソル制御システムであって、前記制御装置は、前記カーソルが所定のオブジェクト上にいる場合であって、前記入力装置からの入力値に基づいて算出した前記カーソルの位置が前記所定のオブジェクトの外に出る場合には、前記カーソルを前記所定のオブジェクトの境界上に位置づける第1の制御処理と、前記第1の制御処理により位置づけられた前記カーソルの位置から、さらに前記入力装置からの入力があって、前記所定のオブジェクトの外方向に前記カーソルの移動がある場合には、前記入力装置からの入力値に基づく前記カーソルの移動量が第1の閾値以上であるか否かを判定する第2の制御処理と、前記第2の制御処理において、前記カーソルの移動量が前記第1の閾値以上である場合には、前記所定のオブジェクトの外に前記カーソルを位置づける第3の制御処理と、前記第2の制御処理において、前記カーソルの移動量が前記第1の閾値未満である場合には、前記所定のオブジェクトの境界上に前記カーソルを位置づける第4の制御処理と、を実行する。
また、本発明の第2の態様は、画面上にオブジェクト及びカーソルを表示する表示装置と、前記カーソルを用いて、前記オブジェクトを選択させる入力装置と、前記入力装置からの入力値に基づいて、前記カーソルの移動を制御する制御装置と、を備えたカーソル制御システムのためのカーソル制御プログラムであって、前記制御装置に、前記カーソルが所定のオブジェクト上にいる場合であって、前記入力装置からの入力値に基づいて算出した前記カーソルの位置が前記所定のオブジェクトの外に出る場合には、前記カーソルを前記所定のオブジェクトの境界上に位置づける第1の制御処理と、前記第1の制御処理により位置づけられた前記カーソルの位置から、さらに前記入力装置からの入力があって、前記所定のオブジェクトの外方向に前記カーソルの移動がある場合には、前記入力装置からの入力値に基づく前記カーソルの移動量が第1の閾値以上であるか否かを判定する第2の制御処理と、 前記第2の制御処理において、前記カーソルの移動量が前記第1の閾値以上である場合には、前記所定のオブジェクトの外に前記カーソルを位置づける第3の制御処理と、前記第2の制御処理において、前記カーソルの移動量が前記第1の閾値未満である場合には、前記所定のオブジェクトの境界上に前記カーソルを位置づける第4の制御処理と、を実行させる。
以下、本発明の実施の形態を図面を用いて説明する。
<構成>
図1は、本発明の実施の形態に係るカーソル制御システム1の概略構成を示す図である。カーソル制御システム1は、表示画面上にGUIを表示する表示装置2と、システムに対する指示を入力する入力装置3と、入力装置3からの入力に基づいてGUIの表示制御を行う制御装置4と、を備えている。
図1は、本発明の実施の形態に係るカーソル制御システム1の概略構成を示す図である。カーソル制御システム1は、表示画面上にGUIを表示する表示装置2と、システムに対する指示を入力する入力装置3と、入力装置3からの入力に基づいてGUIの表示制御を行う制御装置4と、を備えている。
表示装置2は、図1に示すように、表示画面上にオブジェクトOB1〜4及びカーソルCを表示する。本実施の形態においては、4つの矩形オブジェクトを表示する場合を例に挙げて説明するが、オブジェクトの形及び数はこの例に限定されるものではない。
入力装置3は、具体的には、トラックパッドやマウスなどのポインティングデバイス(以下、操作デバイス3とも称する)で構成されている。入力装置3は、入力値に応じて対応するカーソルCを移動させ、移動したカーソルCによりオブジェクトOB(特定のオブジェクトを意味しない場合にはOBと表記する)を選択する。以下においては、トラックパッドを入力装置3として用いた場合について説明をする。
制御装置4は、例えば、コンピュータであり、少なくとも演算・制御機能を備えた中央演算装置(CPU)、プログラムやデータを格納する記憶機能を備えたROM、RAM等からなる主記憶装置(メモリ)及びハードディスクなどの補助記憶装置から構成されている。
本実施の形態においては、制御装置4は、入力装置3からの入力に基づいてカーソルCを移動させるカーソル移動制御処理を行う。本実施の形態のカーソル移動制御処理においては、カーソルCがオブジェクトOB上にいる場合であって、カーソルCをオブジェクトOBの外に移動させる場合には、カーソルCをオブジェクトOBの外に出しにくくする制御を行っている。詳しくは、カーソルCをオブジェクトOBの外に移動させる場合には、まず、オブジェクトOBの境界上にカーソルCを一旦止めるとともに、オブジェクトOBの境界からオブジェクトOBの外に対して、さらにカーソルCの移動量が閾値(以下、脱出閾値という)以上あるか否かを判定する。そして、カーソルCの移動量が閾値以上である場合には、カーソルCをオブジェクトOBの外に移動させるようになっている。このように、本実施の形態においては、カーソルCをオブジェクトOBの外に移動させる場合にカーソルCをオブジェクトOBの境界上で拘束するので、操作デバイスの操作時のブレを無視することができ、より精度の高い操作を可能とすることができる。この結果、本実施の形態においては、所望のオブジェクトOBを選択しやすくなっている。
なお、本実施の形態に係るカーソル移動制御処理を実行するプログラムは、制御装置4の上述した主記憶装置またはハードディスクに格納されているものであるが、当該プログラムを携行可能なフラッシュメモリ、CD−ROM、MO、DVD−ROMなどのAV機器やコンピュータが読み取り可能な記録媒体に記録することも、通信ネットワークを介して配信することも可能である。
図2は、カーソル移動制御処理を実行するに際して、制御装置4が管理するパラメータの一部である。以下、図2に示すパラメータをテーブルデータ1と称する。テーブルデータ1は、制御装置4の主記憶装置に保持されている。
ここで、Xin、Yinは、操作デバイス3からの入力値を表わしている。Xinは、操作デバイス3の横方向の入力値、Yinは、操作デバイス3の縦方向の入力値である。Δtは、操作デバイス3から入力値を取得する時間間隔である。すなわち、操作デバイス3からの入力値は、Δtの間に取得されるベクトルのx成分及びy成分となっている。例えば、トラックパッド上に図3に示すような軌跡TRを描いた場合には、Δtごとに入力されるベクトルv1〜v7のそれぞれのx成分及びy成分を入力値として取得する。
Δsは、カーソルCの移動距離に関する閾値であり、カーソルCをオブジェクトOB上に拘束するか否かを決めるための閾値となっている。本実施の形態においては、カーソルCをΔs以上移動させる場合には、カーソルCの移動経路上に存するオブジェクトOBにカーソルCは拘束されない。なお、閾値Δsに関しては、詳しくは後述する。
X、Yは、カーソルCの現在の位置である。Xout、Youtは、カーソルCの移動先の位置である。本実施の形態においては、XにXinを加算した値をXout、YにYinを加算した値をYoutとしているが、これとは別に、入力値を拡大または縮小した値を現在位置(X,Y)に加算するようにしてもよい。また、カーソルCの移動速度(トラックパッド上を移動する指の速度)を加味して、移動先の位置(Xout、Yout)を算出するようにしてもよい。なお、カーソルCの位置とは、具体的には、図4に示すように矢印の先端の位置Pの位置をいう。
Nは、オブジェクトを一意に識別するためのオブジェクト番号であり、本実施の形態では、1から4までが用いられる。xrN、xlN、ytN、ybNは、オブジェクト番号がNのオブジェクトOBNの境界の座標を示す。図4に本実施の形態のオブジェクトOB1〜4の境界の座標を示す。本実施の形態においては、オブジェクトOB1〜4を矩形のオブジェクトとしたので、4つの値で境界を表わすことができるが、矩形以外の形状のオブジェクトとした場合には、その形状に合わせた境界の設定が必要となる。また、オブジェクトOBが複雑な形状をしている場合には、境界を複雑な形状に合わせるのではなく、容易な形状に近似して設定するようにしてもよい。なお、オブジェクトOBが移動する場合には、境界の位置をその都度更新する必要がある。
Δx、Δyは、カーソルCがオブジェクトOBの境界上から外に出るための脱出閾値を表わしている。カーソルCがオブジェクトOBの境界上にある場合には、この値以上の移動量が検出されないと、カーソルCはオブジェクトOBの外に出ることができない。ここで、閾値との比較の対象となる移動量とは、本実施の形態ではカーソルの現在の位置と移動先の位置の差としているが、操作デバイスからの入力値をそのまま使用してもよい。また、本実施の形態では、x方向及びy方向にそれぞれ異なる閾値を設けているが、x方向及びy方向に同一の閾値を設けてもよい。もしくは、x成分及びy成分で別々に閾値を設定するのではなく、ベクトルの大きさに対する閾値を設定してもよい。
Mは、オブジェクトOBの境界を一意に識別するための境界番号である。本実施の形態では、図5に示すように、オブジェクトOBの左上頂点には1、右上頂点には3、左下頂点には7、右下頂点には5がそれぞれ付され、また、上辺には2、下辺には6、右辺には4、左辺には8がそれぞれ付されている。本実施の形態では、境界番号Mをパラメータとして保持しているので、カーソルCがどのオブジェクトOBのどの境界Mにいるかを判断することができる。
次に、図6及び図7を用いて、カーソルCの状態遷移について説明する。ここで、図6は、カーソルCの状態遷移を示す図であり、図7は、各状態におけるカーソルCの位置を示す図である。
カーソルCの状態は、カーソルCがオブジェクトOB上にいない状態(以下、状態1と称する)と、カーソルCがオブジェクトOB上にいる状態(以下、状態2と称する)に大別される。そして、状態2は、さらに、カーソルCがオブジェクトOBの境界上にいない状態(以下、状態2.1と称する)と、カーソルCがオブジェクトOBの境界上にいる状態(以下、状態2.2と称する)とに分けられる。図7に示すカーソルC−Oは、状態1におけるカーソルCの位置、カーソルC−Iは、状態2.1におけるカーソルCの位置、カーソルC−Bは、状態2.2におけるカーソルCの位置をそれぞれ示している。
本実施の形態においては、上述したように、オブジェクトOB上から外にカーソルCを移動させる場合には、一旦、境界上で留まった後、オブジェクトOBの外に移動させるので、状態2.1から状態1に直接、遷移することはない(図6参照)。また、オブジェクト上にいない状態(状態1)から直接境界に載った場合は、まだオブジェクト上に載っていない(重なっていない)と見なし、状態1のままとする。このため、状態1から状態2.2に遷移することもない。例えば、カーソルCが図4に示すオブジェクトOB1に重なっているとは、xl1<Xout<xr1かつyt1<Yout<yb1であることをいう。
<動作>
次に、図8〜図10を用いて、本発明の実施の形態に係るカーソル制御システム1の動作について説明する。ここで、図8は、状態1におけるカーソル移動制御処理の流れを示すフローチャート、図9は、状態2.1におけるカーソル移動制御処理の流れを示すフローチャート、図10は、状態2.2におけるカーソル移動制御処理の流れを示すフローチャートである。なお、図8〜図10に示す処理は、カーソル制御システム1の制御装置4のCPUによって実行される。
次に、図8〜図10を用いて、本発明の実施の形態に係るカーソル制御システム1の動作について説明する。ここで、図8は、状態1におけるカーソル移動制御処理の流れを示すフローチャート、図9は、状態2.1におけるカーソル移動制御処理の流れを示すフローチャート、図10は、状態2.2におけるカーソル移動制御処理の流れを示すフローチャートである。なお、図8〜図10に示す処理は、カーソル制御システム1の制御装置4のCPUによって実行される。
(状態1の処理)
まず、制御装置4は、カーソルCの現在位置(X,Y)を更新する(ステップS1)。詳しくは、カーソルCの移動位置(Xout、Yout)をカーソルCの現在位置(X,Y)に設定するものである。
まず、制御装置4は、カーソルCの現在位置(X,Y)を更新する(ステップS1)。詳しくは、カーソルCの移動位置(Xout、Yout)をカーソルCの現在位置(X,Y)に設定するものである。
次に、制御装置4は、操作デバイス3からの入力値(Xin,Yin)を取得し(ステップS2)、取得した入力値(Xin,Yin)とカーソルCの現在位置(X,Y)とから、カーソルCの移動位置(Xout、Yout)を計算し(ステップS4)、計算した移動位置(Xout、Yout)にカーソルCを移動する(ステップS6)。
本実施の形態においては、上述したように、現在位置(X,Y)に入力値(Xin,Yin)を加算して移動位置(Xout、Yout)を算出する方法を採用しているが、この方法に限定されず、入力値に所定の演算を施した後に現在位置(X,Y)に加算して、移動位置(Xout、Yout)を算出するようにしてもよい。
次に、制御装置4は、移動したカーソルCがオブジェクトOBに重なっているか否かを判定する(ステップS8)。なお、カーソルCがオブジェクトOBに重なっているとは、上述したように、カーソルCの矢印の先端の位置PがオブジェクトOBの内部にあることをいう。
移動したカーソルCがオブジェクトOBと重なっている場合には(ステップS8:YES)、制御装置4は、テーブルデータ1を参照して、重なっているオブジェクトOBのオブジェクト番号Nと、そのオブジェクトOBの境界の座標(xlN,xrN,ytN,ybN)を取得する(ステップS10)。
次に、制御装置4は、テーブルデータ1を参照して、閾値Δsを取得し(ステップS12)、カーソルCの移動距離が閾値Δsよりも大きいか否かを判定する(ステップS14)。なお、カーソルCの移動距離とは、カーソルCの現在位置(X,Y)と移動位置(Xout、Yout)との距離のことをいう。ここで、図11を用いて、カーソルCの移動距離を閾値Δsと比較する理由について説明する。図11に示すように、カーソルCがオブジェクトOB7及びOB5を飛び越えて、オブジェクトOB3を選択する場合、途中のオブジェクトOB7及びOB5上にカーソルCが重なるたびにカーソルCがオブジェクトOBに拘束されてしまうと、カーソル操作の利便性が失われるおそれがある。そのため、カーソルCの移動距離が閾値Δsより大きい場合には、ユーザはオブジェクトOBを選択しようとしているのではなく、カーソルCを移動させているだけと見なして、この場合にはカーソルCを拘束しようないようにしたものである。なお、本実施の形態においては、閾値Δsを固定値としているが、これに限定されず、Δsを可変値としてもよい。すなわち、GUI上に配置されているオブジェクトOBの形状や大きさなどを加味して閾値Δsを可変値としてもよい。この場合には、現在のカーソルCの位置とカーソルCの移動方向、及びカーソルCの移動経路上に配置されたオブジェクトOBの形状、大きさ、数などによって最適な閾値Δsを決定するようにしてもよい。
カーソルCの移動距離が閾値Δsよりも大きい場合には(ステップS14:YES)、制御装置4は、状態2.1の処理には進まず、状態1の処理のステップS2に戻る。すなわち、カーソルCの移動距離が閾値Δsよりも大きい場合には、移動したカーソルCがオブジェクトOBに重なっていても、オブジェクトOB上にいるとは見なさず、オブジェクトOBの外にいると見なす。
カーソルCの移動距離が閾値Δs以下の場合には(ステップS14:NO)、制御装置4は、いずれかのオブジェクトOBを選択しようとしてカーソルCを移動させていると見なすので、状態2.1の処理に進む。すなわち、カーソルCの移動距離が閾値Δs以下の場合には、移動したカーソルCがオブジェクトOBに重なっていれば、オブジェクトOB上にいると見なす。
なお、ステップS8において、移動したカーソルCがオブジェクトOBと重なっていない場合には(ステップS8:NO)、移動したカーソルCはオブジェクトOBの外にいるので、状態1の処理のステップS1に戻る。
(状態2.1の処理)
まず、制御装置4は、カーソルCの現在位置(X,Y)を更新する(ステップS21)。詳しくは、カーソルCの移動位置(Xout、Yout)をカーソルCの現在位置(X,Y)に設定するものである。
まず、制御装置4は、カーソルCの現在位置(X,Y)を更新する(ステップS21)。詳しくは、カーソルCの移動位置(Xout、Yout)をカーソルCの現在位置(X,Y)に設定するものである。
次に、制御装置4は、操作デバイス3からの入力値(Xin,Yin)を取得し(ステップS22)、取得した入力値(Xin,Yin)とカーソルCの現在位置(X,Y)とから、カーソルCの移動位置(Xout、Yout)を計算する(ステップS24)。なお、移動位置(Xout、Yout)の算出方法は、上述したステップS4の算出方法と同様である。
次に、制御装置4は、カーソルCの移動位置(Xout、Yout)が、現在重なっているオブジェクトOBの外か、またはオブジェクトOBの境界と重なっているか否かを判定する(ステップS26)。ここで、カーソルCがオブジェクトOBの境界に重なっているとは、カーソルCの矢印の先端の位置PがオブジェクトOBの境界にあることをいう。例えば、カーソルCが図4に示すオブジェクトOB1の下側の境界に重なっているとは、Yout=yb1であることをいう。
カーソルCの移動位置(Xout、Yout)が、現在重なっているオブジェクトOBの外か、またはオブジェクトOBの境界と重なっている場合には(ステップS26:YES)、制御装置4は、カーソルCをオブジェクトOBの境界上に移動させるために、移動先の座標(Xout、Yout)の修正を行う(ステップS28,S30)。
この修正の方法を図12〜図14を用いて具体的に説明する。ここで、図12は、移動位置(Xout、Yout)の修正方法を示す表である。以下、図12に示す表データをテーブルデータ2と称する。テーブルデータ2は、制御装置4の主記憶装置に保持されている。また、図13は、オブジェクトOBN上にあるカーソルCをオブジェクトOBNの外に移動させようとした場合の修正前後のカーソルCの位置を示す図である。なお、移動前のカーソルC(現在のカーソルC)の位置をP1、ステップS24の計算をした後のカーソルC(修正前のカーソルC)の位置をP2、修正をした後のカーソルCの位置をP3と表記する。また、図14は、テーブルデータ2が示す境界番号の割り当て方法を図示したものである。
例えば、図13に示すように、カーソルCをP1からP2の位置に移動させようとする場合には、図14に示すように境界番号4が割り当てられることとなる。すなわち、この場合には、xrN≦XoutかつytN≦Yout≦ybNの条件を満たすので、図12に示すテーブルデータ2を参照して、xrN≦XoutかつytN≦Yout≦ybNに対応する境界番号4を取得する。そして、境界番号4の場合の(Xout、Yout)の置き換えは、テーブルデータ2に示すように、Xout=xrNであり、Youtは置き換えないので、Xoutの値のみ修正し、修正した(Xout、Yout)の位置にカーソルCを移動する。すなわち、カーソルCは、図13に示すように、オブジェクトOBNの外に出ることはなく、オブジェクトOBNの右側の境界上のP3に移動することとなる。
以上から、カーソルCの移動位置(Xout、Yout)が、現在重なっているオブジェクトOBの外か、またはオブジェクトOBの境界と重なっている場合には(ステップS26:YES)、制御装置4は、テーブルデータ2を参照して、移動先の座標(Xout、Yout)から対応する境界番号N及び置き換え値を取得して、カーソルCの移動位置(Xout、Yout)の修正を行い(ステップS28)、修正した移動位置(Xout、Yout)にカーソルCを移動させ(ステップS30)、状態2.2の処理に進む。
一方、カーソルCの移動位置(Xout、Yout)が、現在重なっているオブジェクトOBの外でなく、また、オブジェクトOBの境界とも重なっていない場合(ステップS26:NO)、すなわち、オブジェクトOB内にいる場合には、制御装置4は、計算した移動位置(Xout、Yout)にカーソルCを移動させ(ステップS32)、状態2.1の処理のステップS21に戻る。
(状態2.2の処理)
まず、制御装置4は、カーソルCの現在位置(X,Y)を更新する(ステップS41)。詳しくは、カーソルCの移動位置(Xout、Yout)をカーソルCの現在位置(X,Y)に設定するものである。
まず、制御装置4は、カーソルCの現在位置(X,Y)を更新する(ステップS41)。詳しくは、カーソルCの移動位置(Xout、Yout)をカーソルCの現在位置(X,Y)に設定するものである。
次に、制御装置4は、操作デバイス3からの入力値(Xin,Yin)を取得し(ステップS42)、取得した入力値(Xin,Yin)とカーソルCの現在位置(X,Y)とから、カーソルCの移動位置(Xout、Yout)を計算する(ステップS44)。なお、移動位置(Xout、Yout)の算出方法は、上述したステップS4の算出方法と同様である。
次に、制御装置4は、カーソルCの移動位置(Xout、Yout)が、現在いるオブジェクトOBの境界上から見て脱出可能な方向にあるか否かを判定する(ステップS46)。ここで、脱出可能な方向とは、境界上の現在位置(X,Y)からオブジェクトOBの外部に向かう方向をいう。すなわち、ステップS46においては、現在位置(X,Y)から移動位置(Xout、Yout)に向かうベクトルの方向がオブジェクトOBの外部に向かっているか否かを判定する。具体的には、図15に示すような脱出可能な方向に関する表データを参照して、脱出可能な方向にあるか否かを判定する。表内の○で示された方向が脱出可能な方向である。以下、図15に示す表データをテーブルデータ3と称する。テーブルデータ3は、制御装置4の主記憶装置に保持されている。
例えば、カーソルCが境界番号4の境界にいる場合には、+x方向が脱出可能な方向である。この場合には、現在位置(X,Y)から移動位置(Xout、Yout)へ向かうベクトルのx成分が正であれば脱出は可能である。また、カーソルCが境界番号1の境界にいる場合には、−x方向または−y方向が脱出可能な方向である。この場合には、現在位置(X,Y)から移動位置(Xout、Yout)へ向かうベクトルのx成分が負、またはy成分が負のいずれかであれば脱出は可能である。
カーソルCの移動位置(Xout、Yout)が、オブジェクトOBの境界上から見て脱出可能な方向にある場合には(ステップS46:YES)、制御装置4は、テーブルデータ1を参照して、現在位置(X,Y)から移動位置(Xout、Yout)へ向かうベクトルのx成分またはy成分の大きさのうち脱出可能な方向にあったものが、脱出閾値以上であるか否かを判定する(ステップS48)。すなわち、本実施の形態においては、|Xin|≧Δx、または|Yin|≧Δyであるか否かを判定する。
現在位置(X,Y)から移動位置(Xout、Yout)へ向かうベクトルのx成分またはy成分の大きさのうち脱出可能な方向にあったものが、脱出閾値以上である場合には(ステップS48:YES)、オブジェクトOBからの脱出が可能となるので、制御装置4は、カーソルCをオブジェクトOBの境界から外に移動させるために、移動先の座標(Xout、Yout)の修正を行う(ステップS50,S52)。
この修正は、ユーザにカーソル操作の違和感をもたせないために行うものであり、移動位置(Xout、Yout)から脱出閾値分を差し引いて値を更新するものである。すなわち、オブジェクトOBの境界上におけるカーソルCの拘束感を考慮して、カーソルCの移動位置を決めるものである。ただし、脱出閾値分を差し引いた結果、カーソルCの位置が境界近傍になることも考えられ、このような場合には、操作上のブレにより再びオブジェクトOB内に入ってしまうことが想定される。したがって、脱出閾値分を差し引いた結果、カーソルCの位置が境界近傍になる場合には、境界から所定の距離α離すような補正を行うようにしてもよい。すなわち、カーソルCの位置と境界との距離を加味して、移動位置(Xout、Yout)から脱出閾値以下の値を差し引くようにしてもよい。
この修正の方法を図16〜図19を用いて具体的に説明する。ここで、図16は、移動位置(Xout、Yout)の修正方法を示す表である。以下、図16に示す内容の表データをテーブルデータ4と称する。テーブルデータ4は、制御装置4の主記憶装置に保持されている。また、図17〜図19は、いずれもYout−Y≧Δyの場合であって、オブジェクトOBNの境界上にあるカーソルCをオブジェクトOBNの外に移動させようとした場合の修正前後のカーソルCの位置を示す図である。なお、移動前のカーソルC(現在のカーソルC)の位置をP1、ステップS44の計算をした後のカーソルC(修正前のカーソルC)の位置をP2、修正をした後のカーソルCの位置をP3と表記する。
例えば、図17に示すように、Xout≧xrN+ΔxかつYout−Y≧Δyの場合には、境界6からP2までのy方向の距離≧Δyであるとともに、境界4からP2までのx方向の距離≧Δxであるので、Xout及びYoutとも図16に示す条件Aに合致する。その結果、Xout及びYoutともに脱出閾値を差し引いて更新する。すなわち、P3(Xout−Δx,Yout−Δy)の位置にカーソルCを移動する。
また、図18に示すように、xrN<Xout<xrN+ΔxかつYout−Y≧Δyの場合には、境界6からP2までのy方向の距離≧Δyであるが、境界4からP2までのx方向の距離<Δxであるので、Youtは図16に示す条件Aに合致し、Xoutは図16に示す条件Bに合致する。その結果、Xoutは対応する境界番号4の境界の座標の値に置き換え、Youtは、脱出閾値を差し引いて更新する。すなわち、P3(XrN,Yout−Δy)の位置にカーソルCを移動する。
また、図19に示すように、xrN≧Xout≧xlNかつYout−Y≧Δyの場合には、境界6からP2までのy方向の距離≧Δyであるが、P2のX座標はオブジェクトOBNのx座標の範囲内(xlN以上xrN以下)にあるので、Youtは図16に示す条件Aに合致し、Xoutは図16に示す条件Cに合致する。したがって、Xoutは更新を行わず、Youtは脱出閾値を差し引いて更新する。すなわち、P3(Xout,Yout−Δy)の位置にカーソルCを移動する。
以上から、現在位置(X,Y)から移動位置(Xout、Yout)へ向かうベクトルのx成分またはy成分の大きさのうち脱出可能な方向にあったものが、脱出閾値以上である場合には(ステップS48:YES)、制御装置4は、データテーブル4を参照して、移動位置(Xout,Yout)の値を更新し(ステップS50)、更新した移動位置(Xout,Yout)にカーソルCを移動させ(ステップS52)、状態1の処理のステップS8に進む。
これに対して、現在位置(X,Y)から移動位置(Xout、Yout)へ向かうベクトルのx成分及びy成分の大きさのいずれもが脱出閾値未満である場合には(ステップS48:NO)、オブジェクトOBからの脱出は不可能であるため、制御装置4は、カーソルCをオブジェクトOBの境界上を移動させるために、移動位置(Xout、Yout)の修正を行う(ステップS54〜S56)。
すなわち、入力値(Xin,Yin)のいずれの値も脱出閾値未満である場合には(ステップS48:NO)、制御装置4は、データテーブル4を参照して、移動位置(Xout,Yout)の値を更新し(ステップS54)、更新した移動位置(Xout,Yout)に基づいて、データテーブル2を参照し、更新した移動位置(Xout,Yout)に対応する境界番号Nを取得する(ステップS56)。ここで、境界番号Nを取得するのは、更新した移動位置(Xout,Yout)の境界番号Mが変わっていないか否かを確認するためである。次いで制御装置4は、更新した移動位置(Xout,Yout)にカーソルCを移動し(ステップS58)、状態2.2の処理のステップS41に戻る。
なお、ステップS46において、カーソルCの移動位置(Xout、Yout)が、オブジェクトOBの境界上から見て脱出可能な方向にない場合には(ステップs48:NO)、カーソルCはオブジェクトOB内に移動するので、状態2.1の処理のステップS26に進む。
以上、本実施の形態に係るカーソル制御システム1によれば、カーソルCをオブジェクトOBの境界から外に移動させるための脱出閾値を備えており、オブジェクトOB上にあるカーソルCをオブジェクトOBの外に移動させる場合には、まず、カーソルCを境界上まで移動させて停止させるとともに、さらにカーソルCに対する移動量が脱出閾値以上であるときにだけ、カーソルCをオブジェクトOBの外に移動させるので、カーソル操作時のブレを防止することができ、より精度の高いカーソル操作が可能となる。
従来におけるオブジェクトを拡大してオブジェクトの選択を容易とする技術、あるいはシステム側がカーソルを自動的に移動させる技術は、いずれもカーソルCがオブジェクトOBに重なる前の制御処理である。そのため、GUIを用いた特別な処理(オブジェクトを拡大して表示するなど)やカーソルを用いた特別な処理(カーソルを自動的に移動させるなど)によってオブジェクトOBを選択しやすくしている。一方、本実施の形態で述べたカーソル移動制御処理はこれとは全く異なるものであり、カーソルCがオブジェクトOBに重なる前ではなく、オブジェクトOBに重なった後のカーソルCの動きを拘束する点に特徴を有している。すなわち、従来のようにユーザに課す操作を増やすことなく、また、ユーザの操作だけに依拠して、所望のオブジェクトを選択しやすくする方法である。
また、本実施の形態によれば、カーソルCがオブジェクトOBに重なった後、カーソルCがオブジェクトOBの外に出る前に一度境界上に留めるようにしているので、カーソルCが簡単にオブジェクトOBの外に出ることはない。このため、特にオブジェクトOBが密集した中で選択する場合や小さな画面上にGUI表示を行う場合には、精度の高い操作を実現することができる。
<その他の実施の形態>
なお、上記実施の形態においては、脱出閾値を設けることにより、オブジェクトOBの境界にいるカーソルCをオブジェクトOB上に拘束させるようにしたが、これとは別の方法により、オブジェクトOBの境界にいるカーソルCをオブジェクトOB上に拘束させるようにしてもよい。
なお、上記実施の形態においては、脱出閾値を設けることにより、オブジェクトOBの境界にいるカーソルCをオブジェクトOB上に拘束させるようにしたが、これとは別の方法により、オブジェクトOBの境界にいるカーソルCをオブジェクトOB上に拘束させるようにしてもよい。
例えば、カーソルCがオブジェクトOB上にいる場合には、制御装置4が内部的に、GUI上に表示される領域とは異なる仮想領域を持ち、この仮想領域上でカーソルCの位置を管理することにより、オブジェクトOBの境界にいるカーソルCをオブジェクトOB上に拘束させるようにしてもよい。例えば、図20に示すように、カーソルCがオブジェクトOB4にいる場合には、制御装置4は内部的にオブジェクトOB4の境界外側に仮想的な外縁領域VAを設け(勿論、外縁領域VAはGUI上には表示されない)、この外縁領域VA内にカーソルCがいる場合には、GUI上ではオブジェクトOB4の境界上にいるように表示して、カーソルCをオブジェクトOB上に拘束させるようにしてもよい。
図21及び図22を用いて、この変形例を詳しく説明する。図21は、オブジェクトOB4のGUI上の座標と、オブジェクトOB4の仮想領域上の座標とを対比する図(GUI上のオブジェクトOB4の境界と、仮想領域上での外縁領域VAとの対応関係を示す図)であり、図22は、外縁領域VA上にいるカーソルCをGUI上に表示する場合の座標の変換方法を示す表である。
本変形例では、図21に示すように、仮想的な外縁領域VAを8つの領域に分割している。ここで、GUI上の矢印の番号と仮想的な外縁領域VAに付された番号は対応しており、例えば、外縁領域VAの領域2にカーソルCがある場合には、カーソルCは、GUI上ではオブジェクトOB4の上境界線(境界番号2)の上に配置され、また、外縁領域VAの領域3にカーソルCがある場合には、カーソルCは、GUI上ではオブジェクトOB4の右上の頂点(境界番号3)上に配置される。
そして、仮想的な領域からGUI上の領域に座標を変換する場合には、図22に示す表を用いて座標の変換を行う。以下、図22に示す表データをテーブルデータ5と称する。テーブルデータ5は、制御装置4の主記憶装置に保持されている。
例えば、外縁領域VAの4にカーソルCがある場合には、GUI上では、x座標はxrN、y座標は仮想領域上のy座標がそのまま反映される。なお、カーソルCが外縁領域VAから外に出た場合には、通常のGUI上の座標軸で位置算出を行う。
このようにオブジェクト4の境界外側に仮想的な外縁領域VAを設け、この外縁領域VA内にカーソルCがいる場合には、GUI上ではオブジェクト4に境界上にいるように表示するようにして、カーソルCをオブジェクトOB上に拘束するようにしてもよい。なお、この変形例の場合には、オブジェクトOBから脱出するための移動量が蓄積されていくため、上記実施の形態の場合と比べて、緩やかなカーソル操作であっても、オブジェクトOB4の外に移動することが可能となる。すなわち、上記実施の形態においては、周期Δtの時間内に脱出閾値以上の入力値Xin及びYinがないと、カーソルCはオブジェクトOBの境界上から外に移動できないが、本変形例においては、周期Δtの時間内に脱出閾値(外縁領域VAの幅に相当する)以上の入力値Xin及びYinがなくても、複数の周期Δtに亘る入力値Xin及びYinの累積値が脱出閾値を超えればよいので、急激なカーソル操作を必要とせずにオベジェクトOBの外に移動することができる。図11に示した複数のオブジェクトを飛び越えてカーソルを移動する場合にも、このような緩やかな拘束が有効である。しかしながら、本変形例の場合には、カーソルCをオブジェクトOB上に拘束する拘束力は上記実施の形態に比べて、弱くなるというデメリットもあるので、上記実施の形態のカーソル制御方法と本変形例のカーソル制御方法を、用途に応じて使い分けるようにしてもよい。
なお、オブジェクトOBが複雑な形状をしている場合には、外縁領域VAを複雑な形状に合わせるのではなく、容易な形状に近似して設定するようにしてもよい。外縁領域VAを容易な形状とすることにより、カーソル移動制御処理の計算を容易とすることができる。
また、上記実施の形態及びその変形例で述べたカーソル移動制御処理を常に実行させるのではなく、条件に応じて実行したり、実行させなかったりしてもよい。例えば、オブジェクトOBの数が多い場合には、カーソルCがオブジェクトOBに拘束させる機能を働かせるか否かを選択するようにしてもよい。
以上、本発明の実施の形態について説明してきたが、本発明は、上述した実施の形態に限られるものではなく、本発明の要旨を逸脱しない範囲において、本発明の実施の形態に対して種々の変形や変更を施すことができ、そのような変形や変更を伴うものもまた、本発明の技術的範囲に含まれるものである。
1 カーソル制御システム
2 表示装置
3 入力装置(操作デバイス)
4 制御装置
OB オブジェクト
C カーソル
2 表示装置
3 入力装置(操作デバイス)
4 制御装置
OB オブジェクト
C カーソル
Claims (12)
- 画面上にオブジェクト及びカーソルを表示する表示装置と、
前記カーソルを用いて、前記オブジェクトを選択させる入力装置と、
前記入力装置からの入力値に基づいて、前記カーソルの移動を制御する制御装置と、を備えたカーソル制御システムであって、
前記制御装置は、
前記カーソルが所定のオブジェクト上にいる場合であって、前記入力装置からの入力値に基づいて算出した前記カーソルの位置が前記所定のオブジェクトの外に出る場合には、前記カーソルを前記所定のオブジェクトの境界上に位置づける第1の制御処理と、
前記第1の制御処理により位置づけられた前記カーソルの位置から、さらに前記入力装置からの入力があって、前記所定のオブジェクトの外方向に前記カーソルの移動がある場合には、前記入力装置からの入力値に基づく前記カーソルの移動量が第1の閾値以上であるか否かを判定する第2の制御処理と、
前記第2の制御処理において、前記カーソルの移動量が前記第1の閾値以上である場合には、前記所定のオブジェクトの外に前記カーソルを位置づける第3の制御処理と、
前記第2の制御処理において、前記カーソルの移動量が前記第1の閾値未満である場合には、前記所定のオブジェクトの境界上に前記カーソルを位置づける第4の制御処理と、
を実行することを特徴とするカーソル制御システム。 - 前記第3の制御処理は、
前記カーソルの移動量から、前記第1の閾値以下の第2の閾値を差し引いて、前記カーソルの位置を算出することを特徴とする請求項1記載のカーソル制御システム。 - 前記第1の制御処理は、
前記入力装置からの入力に基づく前記カーソルの移動方向に存在する前記所定のオブジェクトの境界上に前記カーソルを位置づけることを特徴とする請求項1または2記載のカーソル制御システム。 - 前記第2の制御処理は、
前記入力装置からの予め定めた周期時間における入力値に基づいて、前記カーソルの移動量を算出することを特徴とする請求項1乃至3のいずれか1項に記載のカーソル制御システム。 - 前記第2の制御処理は、
前記入力装置からの予め定めた周期時間ごとの入力値の累計に基づいて、前記カーソルの移動量を算出することを特徴とする請求項1乃至3のいずれか1項に記載のカーソル制御システム。 - 前記第1の制御処理は、
前記カーソルが所定のオブジェクト上にいる場合であって、前記入力装置からの入力値に基づいて算出した前記カーソルの位置が前記所定のオブジェクトの外に出る場合であっても、前記カーソルの移動量が第3の閾値より大きい場合には、前記所定のオブジェクトの境界上に位置付けず、算出した前記カーソルの位置に位置づけることを特徴とする請求項1乃至5のいずれか1項に記載のカーソル制御システム。 - 画面上にオブジェクト及びカーソルを表示する表示装置と、
前記カーソルを用いて、前記オブジェクトを選択させる入力装置と、
前記入力装置からの入力値に基づいて、前記カーソルの移動を制御する制御装置と、を備えたカーソル制御システムのための制御プログラムであって、
前記制御装置に、
前記カーソルが所定のオブジェクト上にいる場合であって、前記入力装置からの入力値に基づいて算出した前記カーソルの位置が前記所定のオブジェクトの外に出る場合には、前記カーソルを前記所定のオブジェクトの境界上に位置づける第1の制御処理と、
前記第1の制御処理により位置づけられた前記カーソルの位置から、さらに前記入力装置からの入力があって、前記所定のオブジェクトの外方向に前記カーソルの移動がある場合には、前記入力装置からの入力値に基づく前記カーソルの移動量が第1の閾値以上であるか否かを判定する第2の制御処理と、
前記第2の制御処理において、前記カーソルの移動量が前記第1の閾値以上である場合には、前記所定のオブジェクトの外に前記カーソルを位置づける第3の制御処理と、
前記第2の制御処理において、前記カーソルの移動量が前記第1の閾値未満である場合には、前記所定のオブジェクトの境界上に前記カーソルを位置づける第4の制御処理と、
を実行させることを特徴とするカーソル制御プログラム。 - 前記第3の制御処理は、
前記カーソルの移動量から、前記第1の閾値以下の第2の閾値を差し引いて、前記カーソルの位置を算出することを特徴とする請求項7記載のカーソル制御プログラム。 - 前記第1の制御処理は、
前記入力装置からの入力に基づく前記カーソルの移動方向に存在する前記所定のオブジェクトの境界上に前記カーソルを位置づけることを特徴とする請求項7または8記載のカーソル制御プログラム。 - 前記第2の制御処理は、
前記入力装置からの予め定めた周期時間における入力値に基づいて、前記カーソルの移動量を算出することを特徴とする請求項7乃至9のいずれか1項に記載のカーソル制御プログラム。 - 前記第2の制御処理は、
前記入力装置からの予め定めた周期時間ごとの入力値の累計に基づいて、前記カーソルの移動量を算出することを特徴とする請求項7乃至9のいずれか1項に記載のカーソル制御プログラム。 - 前記第1の制御処理は、
前記カーソルが所定のオブジェクト上にいる場合であって、前記入力装置からの入力値に基づいて算出した前記カーソルの位置が前記所定のオブジェクトの外に出る場合であっても、前記カーソルの移動量が第3の閾値より大きい場合には、前記所定のオブジェクトの境界上に位置付けず、算出した前記カーソルの位置に位置づけることを特徴とする請求項7乃至11のいずれか1項に記載のカーソル制御プログラム。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009132639A JP2010282244A (ja) | 2009-06-02 | 2009-06-02 | カーソル制御システム及びカーソル制御プログラム |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
JP2009132639A JP2010282244A (ja) | 2009-06-02 | 2009-06-02 | カーソル制御システム及びカーソル制御プログラム |
Publications (1)
Publication Number | Publication Date |
---|---|
JP2010282244A true JP2010282244A (ja) | 2010-12-16 |
Family
ID=43538949
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
JP2009132639A Pending JP2010282244A (ja) | 2009-06-02 | 2009-06-02 | カーソル制御システム及びカーソル制御プログラム |
Country Status (1)
Country | Link |
---|---|
JP (1) | JP2010282244A (ja) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2013120487A (ja) * | 2011-12-07 | 2013-06-17 | Denso Corp | 入力装置 |
US8732622B2 (en) | 2011-10-17 | 2014-05-20 | Denso Corporation | Input apparatus and display control apparatus |
JP2015118424A (ja) * | 2013-12-17 | 2015-06-25 | 株式会社東海理化電機製作所 | 情報処理装置 |
-
2009
- 2009-06-02 JP JP2009132639A patent/JP2010282244A/ja active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8732622B2 (en) | 2011-10-17 | 2014-05-20 | Denso Corporation | Input apparatus and display control apparatus |
JP2013120487A (ja) * | 2011-12-07 | 2013-06-17 | Denso Corp | 入力装置 |
JP2015118424A (ja) * | 2013-12-17 | 2015-06-25 | 株式会社東海理化電機製作所 | 情報処理装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
JP5527304B2 (ja) | 入力装置 | |
US7415676B2 (en) | Visual field changing method | |
JP5654340B2 (ja) | サイズ変更可能なビデオウィンドウのためのアスペクト比の示唆 | |
EP1741476B1 (en) | Storage medium storing pointing device input adjustment program, input adjustment apparatus and input adjustment method | |
US7551184B2 (en) | Information processing apparatus and information processing method, and program | |
JP2007148783A (ja) | コンピュータの画像表示装置、画像表示方法、画像表示プログラムを記録した媒体 | |
JP2010181637A (ja) | 表示制御装置および表示制御方法 | |
CN109901902B (zh) | 界面显示方法、装置、计算机设备和存储介质 | |
JP2012022632A (ja) | 情報処理装置およびその制御方法 | |
US20120060129A1 (en) | Mobile terminal having touch screen and method for displaying contents therein | |
US10466835B2 (en) | Display method and display control apparatus | |
JP2010282244A (ja) | カーソル制御システム及びカーソル制御プログラム | |
EP2509321B1 (en) | Projection apparatus, control method thereof, and program | |
JP4879933B2 (ja) | 画面表示装置、画面表示方法およびプログラム | |
CN104636028A (zh) | 信息处理装置 | |
JP2009075846A (ja) | 輪郭抽出装置及びプログラム | |
US8531397B2 (en) | Method of calibrating position offset of cursor | |
JP2007219217A (ja) | プロジェクタ、プログラムおよび情報記憶媒体 | |
JP2018055685A (ja) | 情報処理装置、その制御方法、プログラム、および記憶媒体 | |
JP4793114B2 (ja) | 画像処理内容決定装置、画像処理内容決定プログラムおよび画像処理内容決定方法 | |
JP2022191706A (ja) | 入力装置、入力方法、及び入力プログラム | |
JP3582866B2 (ja) | イメージ表示装置 | |
JP2007179095A (ja) | 表示制御方法、情報処理装置及び表示制御プログラム | |
US20240015391A1 (en) | Information processing apparatus, information processing method, and storage medium | |
JP6655880B2 (ja) | 表示制御装置、表示制御方法及びプログラム |