JP6028861B2 - 情報処理装置、入力制御プログラム、および入力制御方法 - Google Patents

情報処理装置、入力制御プログラム、および入力制御方法 Download PDF

Info

Publication number
JP6028861B2
JP6028861B2 JP2015523781A JP2015523781A JP6028861B2 JP 6028861 B2 JP6028861 B2 JP 6028861B2 JP 2015523781 A JP2015523781 A JP 2015523781A JP 2015523781 A JP2015523781 A JP 2015523781A JP 6028861 B2 JP6028861 B2 JP 6028861B2
Authority
JP
Japan
Prior art keywords
correction
touch operation
area
correction information
region
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.)
Expired - Fee Related
Application number
JP2015523781A
Other languages
English (en)
Other versions
JPWO2014207898A1 (ja
Inventor
松崎 英一
英一 松崎
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Application granted granted Critical
Publication of JP6028861B2 publication Critical patent/JP6028861B2/ja
Publication of JPWO2014207898A1 publication Critical patent/JPWO2014207898A1/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0412Digitisers structurally integrated in a display
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/03Arrangements for converting the position or the displacement of a member into a coded form
    • G06F3/041Digitisers, e.g. for touch screens or touch pads, characterised by the transducing means
    • G06F3/0416Control or interface arrangements specially adapted for digitisers
    • G06F3/0418Control or interface arrangements specially adapted for digitisers for error correction or compensation, e.g. based on parallax, calibration or alignment
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0481Interaction techniques based on graphical user interfaces [GUI] based on specific properties of the displayed interaction object or a metaphor-based environment, e.g. interaction with desktop elements like windows or icons, or assisted by a cursor's changing behaviour or appearance
    • G06F3/04812Interaction techniques based on cursor appearance or behaviour, e.g. being affected by the presence of displayed objects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/041Indexing scheme relating to G06F3/041 - G06F3/045
    • G06F2203/04104Multi-touch detection in digitiser, i.e. details about the simultaneous detection of a plurality of touching locations, e.g. multiple fingers or pen and finger
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2203/00Indexing scheme relating to G06F3/00 - G06F3/048
    • G06F2203/048Indexing scheme relating to G06F3/048
    • G06F2203/04808Several contacts: gestures triggering a specific function, e.g. scrolling, zooming, right-click, when the user establishes several contacts with the surface simultaneously; e.g. using several fingers or a combination of fingers and pen

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • User Interface Of Digital Computer (AREA)

Description

本発明は、タッチスクリーンを用いた入力に関する。
近年、タッチスクリーンを有する装置が広く利用されている。タッチスクリーンを介した入力に関する様々な研究も行われている。
例えば、重複して押された複数キーの周辺または表示画面全体を拡大させる入力装置が提案されている。また、利用者のタッチパネルへの接触位置と、正規のソフトウェアキーボード上のボタン位置との誤差を自動補正する入力装置も提案されている。さらに、タッチスクリーンが使用されているときに、操作部画像と有効領域との相対関係をリアルタイムに補正することができる構造の、スクリーン駆動装置も提案されている。ほかにも、指のタッチ位置がタッチUI(User Interface)の有効領域から外れたときの誤動作を防止するための方法も提案されている。
また、ある情報処理装置は、表示部の表示画面上での指示操作位置をタッチパネルにより検出する。そして、情報処理装置は、「指示操作位置に表示される表示選択項目に対する選択が、ユーザの所望した正しい選択先であるか否か」を、選択後におけるユーザの操作状況から判別する。上記選択が正しい選択先でない場合、情報処理装置は、上記指示位置を、誤った指示位置として記憶する。そして、情報処理装置は、正しい選択先の表示選択項目が表示される位置と、誤った指示位置として記憶された表示位置との差分を、補正データとして記憶する。
何らかの入力操作の後に行われる取り消し操作を考慮に入れる技術も提案されている。
例えば、ある画像形成装置は以下のように動作する。ユーザが、タッチパネルに入力してから所定の期間内にリセットボタンを押し下げると、画像形成装置は、タッチパネルの入力を待つ。そして、入力があったとき、画像形成装置は、「当該入力は、前回入力が行われたボタンの隣のボタンに対して行われたのか否か」を判断する。隣のボタンが押し直された場合には、画像形成装置は、一時記憶していた補正情報を消去し、リセットボタンの後に入力されたボタンの補正情報を記憶する。
また、情報入力装置におけるキャリブレーションを精度よく、かつ的確な頻度で自律的に実行可能とするための、次のような技術も提案されている。
複数の第1画像のうちの1つが第1機会に認識され、次いで到来する第2機会において第2画像が認識される場合があり得る。ここで、複数の第1画像は、情報入力を行うために用いられる画像であり、第2画像は、情報入力を取り消すために用いられる画像である。
上記の場合、情報入力装置は、第2機会に次いで到来する第3機会において指定された画像が、第1機会において認識された画像と操作画像の中において隣り合うものであるか否かを判定する。肯定判断がなされた場合、情報入力装置は、第1機会において認識された画像と第3機会において認識された画像の相互の位置関係を示すデータと、肯定判断の累積回数を示すデータと、を記録する。そして、累積回数が所定数に達した場合に、情報入力装置は、位置関係を示すデータに基づいて、位置検出手段から出力される電気信号に対して与えるべき補正値を設定する。
特開平10−49305号公報 特開2008−242958号公報 特開2007−310739号公報 特開2010−128508号公報 特開2009−93368号公報 特開2005−238793号公報 特開2011−107864号公報
タッチスクリーンを有する情報処理装置のユーザビリティを向上させるためには、タッチ操作に応じて検出される領域の位置を補正することが有益である。しかし、補正に使われる補正情報が不適切に固定または更新されると、ユーザビリティはあまり向上しない。場合によっては、補正情報が不適切に固定または更新されることが原因で、むしろユーザビリティが悪化するおそれさえある。補正情報を適切に設定するための技術は発展途上であり、ユーザビリティを向上させる余地がまだ残っている。
本発明は、1つの側面では、タッチスクリーンを有する情報処理装置のユーザビリティを向上させることを目的とする。
一態様による情報処理装置は、タッチスクリーン、検出手段、記憶手段、補正手段、特定手段、および更新手段を備える。
前記検出手段は、タッチ操作により触れられた、前記タッチスクリーン上の領域を検出する。前記記憶手段は、検出された前記領域の位置を水平方向と垂直方向にそれぞれ補正するための水平補正情報と垂直補正情報とを記憶する。
前記補正手段は、検出された前記領域の前記位置を前記水平補正情報と前記垂直補正情報を用いて補正する。前記特定手段は、補正された前記位置に基づき、前記タッチ操作の対象のグラフィカルユーザインタフェイスオブジェクトが前記タッチスクリーン上で占める領域を特定する。
第1のタッチ操作と、前記第1のタッチ操作を取り消す取り消し操作と、第2のタッチ操作が順に行われると、前記更新手段は、以下のように動作する。すなわち、前記更新手段は、前記水平補正情報を更新するか、前記垂直補正情報を更新するか、前記水平補正情報と前記垂直補正情報の双方を更新するか、それとも、前記水平補正情報と前記垂直補正情報のどちらも更新しないかを決定し、決定にしたがい動作する。
前記更新手段は、第1のオブジェクト領域および第2のオブジェクト領域、ならびに、第1の接触領域および第2の接触領域の間の幾何学的関係に応じて、前記決定を行う。なお、前記第1のオブジェクト領域および前記第2のオブジェクト領域は、前記第1のタッチ操作および前記第2のタッチ操作に応じてそれぞれ特定された領域である。また、前記第1の接触領域および前記第2の接触領域は、前記第1のタッチ操作および前記第2のタッチ操作に応じてそれぞれ検出されて位置が補正された領域である。
タッチスクリーンを有する情報処理装置のユーザビリティが向上する。
端末装置のブロック構成図である。 第1のタッチ操作と、取り消し操作と、第2のタッチ操作による変化の2つの例を示す図である。 GUIオブジェクトの大きさと、ユーザの指がタッチスクリーンに接触する領域の大きさとの間の、相対的な関係について説明する図である。 コンピュータのハードウェア構成図である。 補正DBのデータ形式について複数の例を示す図である。 タッチ操作の検出と座標の補正に関する座標通知処理のフローチャートである。 補正DBの管理に関して行われる監視処理のフローチャートである。 補正DB更新処理のフローチャートである。 座標系を説明するとともに、2つのGUIオブジェクトの配置に関する複数の例を説明する図である。 第1のタッチ操作に対してどの方向で第2のタッチ操作が行われたかを示す角度θについて説明する図である。
以下、実施形態について、図面を参照しながら詳細に説明する。
まず、図1を参照して、端末装置の概要を説明する。次に、図2〜3を参照して、一連のタッチ操作の例や、タッチ操作により触れられる領域の大きさに関して説明する。続いて、図4を参照して、端末装置を実現するハードウェアの例を説明する。
その後、図5を参照して、補正に使われるデータの具体例を説明する。その後、図6〜10を参照して、端末装置の動作について詳しく説明する。最後に、その他の実施形態および各種実施形態による効果を説明する。
さて、図1は、端末装置のブロック構成図である。図1の端末装置10は、タッチスクリーン11を有し、1つ以上のアプリケーション12を実行する。また、端末装置10は、位置検出部13、補正DB(database)14、補正管理部15、および操作検出部16を有する。
端末装置10は、一種の情報処理装置である。端末装置10は、具体的には、デスクトップPC(Personal Computer)、ラップトップPC、タブレットPC、スマートフォン、メディア・プレイヤ、携帯型ゲーム機、携帯電話などの種々の装置のいずれであってもよい。端末装置10は、後述の図4のコンピュータ20であってもよい。
タッチスクリーン11は、出力装置であるディスプレイと、入力装置(具体的にはポインティングデバイス)であるタッチパネルを組み合わせた装置である。ディスプレイ上の位置と、ポインティングデバイスにより指し示される位置との間の位置合わせ(alignment)が適切になされていることが好ましい。
しかし、仮に位置合わせが不十分であったとしても、後述の水平補正情報と垂直補正情報を用いた補正(correction)により、ディスプレイ上の位置と、ポインティングデバイスにより指し示される位置との差は、補償される。ある観点から見れば、水平補正情報と垂直補正情報を用いた補正により、ユーザの入力の癖が補償されるだけでなく、出力装置であるディスプレイと、入力装置であるタッチパネルとの間の位置のずれも、補償される。したがって、以下では説明の簡単化のために、ディスプレイ上の位置と、ポインティングデバイスにより指し示される位置とを区別せずに、単に「位置」または「タッチスクリーン11上の位置」などと言う。
アプリケーション12の種類は特に限定されない。端末装置10は、複数のアプリケーション12を実行してもよい。
位置検出部13は、タッチ操作により触れられた、タッチスクリーン11上の領域を検出する。例えば、ユーザが指でタッチスクリーン11に触れると、位置検出部13は、指が触れた領域を検出する。タッチ操作は、例えば、シングルタップ操作であってもよい。タッチ操作の他の例は、ロングタップ操作、ダブルタップ操作、フリック操作などである。
位置検出部13は、具体的には、タッチ操作により触れられた領域の位置と大きさを検出してもよい。例えば、位置検出部13は、タッチ操作により触れられた領域の形状を、近似的に所定の形状と見なしてもよい。
所定の形状は、円、楕円、矩形などであってもよい。例えば、所定の形状が矩形の場合、位置検出部13は、タッチ操作により実際に触れられた領域のバウンディング・ボックス(bounding box)を、「タッチ操作により触れられた領域」として検出してもよい。
ある領域のバウンディング・ボックスとは、当該領域を含み、かつ、水平方向に延びる辺と垂直方向に延びる辺で囲われた、最小の矩形のことである。なお、特に断らない限り、水平方向および垂直方向とは、タッチスクリーン11の平面内における水平方向および垂直方向のことである。
位置検出部13は、領域の位置と大きさだけでなく、さらに領域の形状を検出してもよい。
逆に、位置検出部13は、領域の位置のみを検出してもよい。この場合、位置検出部13は、近似的に、「位置が検出された領域の大きさは、所定の大きさである」と見なしてもよい。上記所定の大きさは、予め記憶されている1つ以上の値により定まるものとする。
上記1つ以上の値とは、例えば、平均的な指の大きさを示す1つ以上の定数であってもよい。上記1つ以上の値は、例えば、円の直径を示す1つの値でもよく、正方形の1辺の長さを示す1つの値でもよく、幅と高さを示す2つの値でもよい。
あるいは、端末装置10のユーザは、予め、ユーザに固有の上記1つ以上の値を端末装置10に登録するための、特別なタッチ操作を行ってもよい。この場合、位置検出部13は、特別なタッチ操作により触れられたタッチスクリーン11上の領域の大きさを検出し、検出した大きさを示す1つ以上の値を、記憶装置に記憶する。位置検出部13は、その後は、個々のタッチ操作によって実際に触れられた領域の大きさを検出する処理を省略してよい。つまり、位置検出部13は、タッチ操作のたびに領域の大きさを実際に検出する代わりに、記憶した上記1つ以上の値を用いてもよい。
実際の領域の大きさが検出されるにせよ、領域が所定の大きさを持つものと近似的に見なされるにせよ、位置検出部13は、タッチ操作により触れられた領域の、位置と大きさを補正管理部15に出力することができる。位置検出部13は、タッチ操作により触れられたタッチスクリーン11上の領域を検出する検出手段の一例である。
さて、補正DB14は、水平補正情報と垂直補正情報を記憶する。水平補正情報と垂直補正情報は、位置検出部13により検出された領域の位置を、水平方向と垂直方向にそれぞれ補正するための情報である。領域の位置の補正(correction)とは、換言すれば、位置の調整(adjustment)であり、位置の校正(calibration)である。
1つの値が水平補正情報として使われてもよいし、複数の条件に対応する複数の値を水平補正情報が含んでいてもよい。同様に、1つの値が垂直補正情報として使われてもよいし、複数の条件に対応する複数の値を垂直補正情報が含んでいてもよい。いずれにせよ、補正DB14は、水平補正情報と垂直補正情報を記憶する記憶手段の一例である。水平補正情報と垂直補正情報の詳細は、図5とともに後述する。
補正管理部15は、位置検出部13により検出された領域の位置を、水平補正情報と垂直補正情報を用いて補正する。つまり、補正管理部15は、補正DB14から水平補正情報と垂直補正情報を読み出し、水平補正情報と垂直補正情報を用いて領域の位置を補正する。そして、補正管理部15は、補正した位置を、アプリケーション12と操作検出部16に通知する。補正管理部15は、領域の大きさをさらにアプリケーション12と操作検出部16の一方または双方に通知してもよい。
あるいは、補正管理部15は、補正した位置を直接的にはアプリケーション12にのみ通知してもよい。この場合、操作検出部16は、補正管理部15からアプリケーション12への通知をフックすることにより、補正された位置の情報を取得してもよい。同様に、操作検出部16は、補正管理部15からアプリケーション12への通知をフックすることにより、領域の大きさを示す情報を取得してもよい。
以上説明したように、補正管理部15は、検出された領域の位置を補正する補正手段の一例である。以下では説明の便宜上、位置検出部13によって検出されて補正管理部15によって位置が補正された領域を、「接触領域(contact area)」ともいう。接触領域は、「タッチ操作により触れられた」と見なされる領域である。
操作検出部16は、補正された位置(すなわち接触領域の位置)に基づき、タッチ操作の対象(target)のGUI(Graphical User Interface)オブジェクトがタッチスクリーン11上で占める領域を特定(identify)する。以下では説明の便宜上、GUIオブジェクトがタッチスクリーン11上で占める領域を「オブジェクト領域(object area)」ともいう。
なお、処理負荷の軽減のため、操作検出部16は、タッチ操作の対象のGUIオブジェクトが実際にタッチスクリーン11で占める領域のバウンディング・ボックスを、オブジェクト領域として特定してもよい。タッチ操作の対象のGUIオブジェクトが矩形以外の形である場合、バウンディング・ボックスをオブジェクト領域として特定することで、処理負荷が軽減される。
GUIオブジェクトは、「GUI部品(GUI component)」、「GUIウィジェット(GUI widget)」、「ウィジェット」、「GUIコントロール(GUI control)」、「コントロール」などとも呼ばれる。GUIオブジェクトの例は、例えば、リンクテキスト(つまり、ハイパーリンクが埋め込まれた文字列)、ボタン(例えば、ハイパーリンクが埋め込まれた画像)、ラジオボタン、チェックボックス、スライダ、ドロップダウンリスト、タブ、メニューなどである。
例えば、あるボタンがタッチスクリーン11で占める領域内に接触領域が位置しているとき、操作検出部16は、当該あるボタンをタッチ操作の対象として特定してもよい。つまり、操作検出部16は、当該あるボタンがタッチスクリーン11で占めるオブジェクト領域を特定してもよい。操作検出部16は、特定したオブジェクト領域を補正管理部15に通知する。
なお、アプリケーション12で使われる各GUIオブジェクトは、アプリケーション12により、適宜のAPI(Application Programming Interface)を介して、タッチスクリーン11上にレンダリングされる。操作検出部16は、例えば、GUIオブジェクトのレイアウトを取得するための既存のAPIを用いて実現されてもよい。操作検出部16は、APIを介して、各GUIオブジェクトの位置と大きさを認識することができる。例えば、各GUIオブジェクトの位置は、各GUIオブジェクトを代表する点(例えば、中心点または左上端の点など)の位置により表されてもよい。
例えば、操作検出部16は、1つ以上のGUIオブジェクトそれぞれの位置を、APIを介して認識してもよい。そして、操作検出部16は、認識した各位置に基づいて、補正管理部15から通知された位置に最も近いGUIオブジェクト(つまり接触領域に最も近いGUIオブジェクト)を調べてもよい。操作検出部16は、接触領域から、接触領域に最も近いGUIオブジェクトまでの距離が閾値以下のとき、接触領域に最も近いGUIオブジェクトを、タッチ操作の対象として特定してもよい。
以上説明したように、操作検出部16は、タッチ操作の対象のGUIオブジェクトがタッチスクリーン11上で占める領域を特定する特定手段の一例である。
さらに、操作検出部16は、アプリケーション12を監視することにより、タッチ操作に応じたアプリケーション12上の操作を検出する。端末装置10がタッチスクリーン11以外の入力装置(例えばハードウェアボタンやキーボードなど)を有する場合は、操作検出部16は、さらに、入力装置からの入力に応じたアプリケーション12上の操作も検出する。
例えば、アプリケーション12がウェブブラウザであり、ユーザがウェブページ内のリンクテキストをタップしたとする。この場合、タッチ操作(すなわちタップ操作)に応じて、位置検出部13が、指の触れた領域を検出し、補正管理部15が当該領域の位置を補正する。そして、アプリケーション12は、補正された位置に基づいて、「リンクテキストがタップされた」と認識し、リンクテキストに埋め込まれたハイパーリンクが示すウェブページへのジャンプを実行する。
よって、この場合、「タッチ操作に応じたアプリケーション12上の操作」とは、具体的には、現在タッチスクリーン11に表示されているウェブページから別のウェブページへのジャンプである。したがって、この場合、操作検出部16は、アプリケーション12を監視することで、「ジャンプ」という操作を検出する。
また、ユーザがその後、ウェブブラウザの「戻る(Back)」ボタンをタップしたとする。この場合も、タッチ操作に応じて、位置検出部13が、指の触れた領域を検出し、補正管理部15が当該領域の位置を補正する。その結果、アプリケーション12は、「戻る」ボタンがタップされたことを認識し、前のウェブページに戻る処理を実行する。
よって、この場合、「タッチ操作に応じたアプリケーション12上の操作」とは、具体的には、現在タッチスクリーン11に表示されているウェブページから、前のウェブページに戻る操作である。換言すれば、この場合のアプリケーション12上の操作は、直前の操作を取り消す(cancel)ための取り消し操作である。取り消し操作は、換言すれば、アンドゥ(undo)操作である。
また、端末装置10がキーボードを有している場合には、いくつかの所定のキーボードショートカットが設定されていてもよい。例えば、所定のキーが押されると、現在タッチスクリーン11に表示されているウェブページから、前のウェブページに戻る操作が行われるように、ウェブブラウザが設定されていてもよい。操作検出部16は、このような所定のキーの押下に応じたアプリケーション12上の操作も、検出する。
別の例として、アプリケーション12が階層化メニューを持つ場合もあり得る。この場合、現在の階層よりも上の階層に戻るための所定のGUIオブジェクトに対するタッチ操作が行われると、操作検出部16は、「取り消し操作が行われた」と検出してもよい。
もちろん、無効な領域(つまり、アプリケーション12に何らかの処理を実行させるためのGUIオブジェクトが何も配置されていない領域)上でタッチ操作が行われた場合は、アプリケーション12は、何も処理を実行しない。つまり、補正管理部15から通知された補正後の位置が無効な領域内にある場合、アプリケーション12は、何も処理を実行しない。この場合、操作検出部16も、アプリケーション12上の操作を何も検出しない。
操作検出部16は、アプリケーション12上で操作を検出すると、操作を検出したことを補正管理部15に通知する。この通知は、補正DB14の更新の管理のために使われる。
具体的には、補正管理部15は、上記のように位置の補正を行うだけでなく、補正DB14の更新も管理している。その管理のために、補正管理部15は、操作検出部16からの通知を利用する。
より具体的には、補正管理部15は、「第1のタッチ操作と、第1のタッチ操作を取り消す取り消し操作と、第2のタッチ操作が順に行われたか否か」を、操作検出部16からの通知に基づいて判断する。換言すれば、補正管理部15は、「第1のタッチ操作と、第1のタッチ操作を取り消す取り消し操作と、第2のタッチ操作」という特定の操作シーケンスが実行されたか否かを監視する。なお、説明の簡単化のため、ユーザがタッチ操作を取り消すために行う操作のことも「取り消し操作」といい、ユーザが行った取り消し操作に応じてアプリケーション12が前の操作を取り消すために実行する操作のことも「取り消し操作」という。
第1のタッチ操作と、第1のタッチ操作を取り消す取り消し操作と、第2のタッチ操作が順に行われると、補正管理部15は、水平補正情報を更新するか、垂直補正情報を更新するか、双方を更新するか、それとも、どちらも更新しないかを決定する。より具体的には、第2のタッチ操作が行われた後、ある時間以内には第2のタッチ操作を取り消す取り消し操作が行われなかった場合、補正管理部15は、以下に示す4つの方針のいずれを採用するのかを決定する。そして、補正管理部15は、決定にしたがって動作する。
・水平補正情報を更新し、垂直補正情報を更新しない、という方針。
・垂直補正情報を更新し、水平補正情報を更新しない、という方針。
・水平補正情報と垂直補正情報の双方を更新する、という方針。
・水平補正情報と垂直補正情報のどちらも更新しない、という方針。
具体的には、補正管理部15は、以下の4つの領域の間の幾何学的関係に応じて、上記4つの方針のいずれを採用するのかを決める。
・第1のタッチ操作に応じて操作検出部16により特定されたオブジェクト領域。以下では「第1のオブジェクト領域」ともいう。
・第2のタッチ操作に応じて操作検出部16により特定されたオブジェクト領域。以下では「第2のオブジェクト領域」ともいう。
・第1のタッチ操作に応じて、位置検出部13により検出されて補正管理部15により位置が補正された接触領域。以下では「第1の接触領域」ともいう。
・第2のタッチ操作に応じて、位置検出部13により検出されて補正管理部15により位置が補正された接触領域。以下では「第2の接触領域」ともいう。
なお、2つ以上の領域間の幾何学的関係には、例えば、以下のような種々の関係がある。
・領域同士の位置関係(例えば、2つの領域間の距離や、2つの領域を代表する点同士の間の距離や、ある1つの領域を基準として別の領域が位置する方向に関する関係など)。
・領域間での、大きさ(例えば、幅、高さ、またはその双方)に関する関係。
・領域同士の重なりに関する関係(例えば、2つの領域が少なくとも部分的には互いに重なるか否か、2つの領域がどれくらい大きく重なっているか、などについての関係)。
具体的にどのような幾何学的関係に基づいて、どのようにして補正管理部15が決定を下すのかについては、図8〜10とともに後述する。なお、上記4つの領域間の幾何学的関係には、上記4つの領域同士の間の直接的な関係だけでなく、元の領域の位置および/または大きさに応じて定まる派生的な領域に関する、間接的な関係もあり得る。例えば、4つの領域のうち2つの領域が重なっている第1の重なり領域と、残りの2つの領域が重なっている第2の重なり領域との間の位置関係も、4つの領域の間の幾何学的関係の例である。
ところで、補正管理部15は、上記のとおり補正手段の一例である。さらに、補正管理部15は、上記4つの領域の間の幾何学的関係に応じて、水平補正情報を更新するか、垂直補正情報を更新するか、双方を更新するか、それとも、どちらも更新しないかを決定し、決定にしたがって動作する更新手段の一例でもある。
図2は、第1のタッチ操作と、取り消し操作と、第2のタッチ操作による変化の2つの例を示す図である。図2に示す例E1と例E2は、いずれも、アプリケーション12がウェブブラウザである場合の例である。
例E1において、タッチスクリーン11にはアプリケーション12のウィンドウが表示されており、ウィンドウ内には、ウェブページP1とツールバーが表示されている。ツールバーは「戻る」ボタンBBと「進む」ボタンFBを含む。
ウェブページP1内には3つのGUIオブジェクト(具体的には3つのボタンB1〜B3)が表示されている。ボタンB1〜B3は、それぞれ、タッチスクリーン11上でオブジェクト領域G1〜G3を占める。
また、以下では説明の簡単化のため、接触領域とオブジェクト領域はいずれも矩形であるものとする。例えば、位置検出部13は、タッチ操作により実際に触れられた領域のバウンディング・ボックスを検出してもよい。また、操作検出部16は、タッチ操作の対象のGUIオブジェクトが実際に占める領域のバウンディング・ボックスを検出してもよい。
ユーザが第1のタッチ操作を行うと、第1のタッチ操作により触れられた領域が、位置検出部13により検出され、検出された領域の位置が、補正管理部15により補正される。こうして位置が補正された領域が、接触領域C1である。接触領域C1は、オブジェクト領域G1とG2の双方と重なっているが、接触領域C1とオブジェクト領域G1の重なりの方が、接触領域C1とオブジェクト領域G2の重なりより大きい。別の観点から述べれば、接触領域C1は、オブジェクト領域G2よりもオブジェクト領域G1に近い。
補正管理部15は、接触領域C1の位置をアプリケーション12に通知する。例E1では、補正管理部15から通知された位置に基づいて、アプリケーション12は、ボタンB1を第1のタッチ操作の対象のGUIオブジェクトとして特定する。
その結果、ステップS10に示すように、アプリケーション12は、ボタンB1に対応づけられた操作を実行する。すなわち、ステップS10でアプリケーション12は、ボタンB1に埋め込まれたハイパーリンクにより指定されるウェブページP2を読み込み、ウェブページP2をウィンドウ内に表示する。
一方、操作検出部16も、接触領域C1の位置を認識する。上述のとおり、補正管理部15が直接的に接触領域C1の位置を操作検出部16に通知してもよいし、補正管理部15からアプリケーション12への通知を、操作検出部16がフックしてもよい。
いずれにせよ、操作検出部16は、接触領域C1の位置(すなわち、補正管理部15からアプリケーション12へ通知された位置)に基づいて、第1のタッチ操作の対象のGUIオブジェクトが占めるオブジェクト領域を特定する。つまり、操作検出部16は、オブジェクト領域G1を特定する。操作検出部16は、例えば既存のAPIを利用することで、接触領域C1の位置にボタンB1が配置されていること(あるいは、接触領域C1に最も近いGUIオブジェクトがボタンB1であること)を認識してもよい。また、操作検出部16は、APIを介して、ボタンB1が占めるオブジェクト領域G1を認識してもよい。
さらに、操作検出部16は、アプリケーション12を監視する。よって、上記のようにしてステップS10でウェブページP1からウェブページP2へのジャンプがアプリケーション12により実行されると、操作検出部16は、当該ジャンプを検出する。こうして検出されるジャンプは、換言すれば、アプリケーション12上の操作のうち、特定されたオブジェクト領域G1に配置されているボタンB1に対応づけられた操作である。
ジャンプを検出すると、操作検出部16は、ジャンプの検出を補正管理部15に通知する。つまり、操作検出部16は、「第1のタッチ操作に応じて、ウェブページP1からウェブページP2へのジャンプという操作が、アプリケーション12上で実行された」ということを、補正管理部15に通知する。この通知の際、操作検出部16は、特定したオブジェクト領域G1の位置と大きさも補正管理部15に通知する。
ところで、ユーザがもともとボタンB1ではなくボタンB2をタップするつもりだった場合、ユーザは、ウェブページP2を見て、自分が意図した操作が実行されなかったことに気づく。よって、ユーザは、第1のタッチ操作を取り消すための取り消し操作を行う。具体的には、ユーザは、「戻る」ボタンBBをタップする。
「戻る」ボタンBBに対するタップ操作に関しても、位置検出部13による位置の検出、および補正管理部15による位置の補正が行われる。そして、補正管理部15から接触領域の位置がアプリケーション12に通知され、アプリケーション12は、「戻る」ボタンBBがタップされたことを認識する。その結果、ステップS11でアプリケーション12は、ウェブページP2からウェブページP1へ戻る処理を実行し、ウィンドウには再びウェブページP1が表示される。
一方、操作検出部16は、アプリケーション12の監視を続けているので、ステップS11でのアプリケーション12上の操作も検出する。つまり、操作検出部16は、ステップS10で検出したジャンプを取り消す処理がアプリケーション12上で実行されたことを検出する。
操作検出部16は、検出結果を補正管理部15に通知する。つまり、操作検出部16は、「ユーザによる取り消し操作に応じて、ウェブページP2からウェブページP1へ戻る操作が、アプリケーション12上で実行された」ということを、補正管理部15に通知する。
ユーザは、再び表示されたウェブページP1上で、第2のタッチ操作を行う。具体的には、例E1では、ユーザはボタンB2をタップすることを意図して、第2のタッチ操作を行う。
第2のタッチ操作により触れられた領域が、位置検出部13により検出され、検出された領域の位置が、補正管理部15により補正される。こうして位置が補正された領域が、接触領域C2である。
補正管理部15は、接触領域C2の位置をアプリケーション12に通知する。図2に示すように、接触領域C2はオブジェクト領域G1よりもオブジェクト領域G2に近い。そのため、アプリケーション12は、ボタンB2を第2のタッチ操作の対象のGUIオブジェクトとして特定する。
その結果、ステップS12に示すように、アプリケーション12は、ボタンB2に対応づけられた操作を実行する。すなわち、ステップS12でアプリケーション12は、ボタンB2に埋め込まれたハイパーリンクにより指定されるウェブページP3を読み込み、ウェブページP3をウィンドウ内に表示する。
一方、操作検出部16も、接触領域C2の位置を認識する。そして、操作検出部16は、接触領域C2の位置に基づいて、第2のタッチ操作の対象のGUIオブジェクトが占めるオブジェクト領域として、オブジェクト領域G2を特定する。
また、操作検出部16はアプリケーション12を監視しているので、ステップS12でのウェブページP1からウェブページP3へのジャンプを検出する。ジャンプを検出すると、操作検出部16は、ジャンプの検出を補正管理部15に通知する。つまり、操作検出部16は、「第2のタッチ操作に応じて、ウェブページP1からウェブページP3へのジャンプという操作が、アプリケーション12上で実行された」ということを、補正管理部15に通知する。この通知の際、操作検出部16は、特定したオブジェクト領域G2の位置と大きさも補正管理部15に通知する。
補正管理部15は、以上のようなステップS10、S11、S12での操作検出部16からの通知により、「第1のタッチ操作、第1のタッチ操作を取り消すための取り消し操作、第2のタッチ操作」という一連の操作が順に行われたことを検出する。検出に応じて、補正管理部15は、水平補正情報を更新するか否か、および、垂直補正情報を更新するか否かを決定する。
具体的には、補正管理部15は、オブジェクト領域G1、オブジェクト領域G2、接触領域C1、および接触領域C2の間の幾何学的関係に応じて、決定を下す。詳しくは図8とともに後述するが、例E1では、補正管理部15は、水平補正情報を更新し、垂直補正情報を更新しない。なぜなら、補正管理部15は、「ユーザは、ボタンB2(つまり、水平方向においてボタンB1の近くにあり、かつ、水平方向の幅が狭いボタン)をタップすることを意図して、第1のタッチ操作を行った」と推測するからである。詳しくは図8とともに後述するとおり、この推測は、具体的には、以下のことに基づく。
・接触領域C1と接触領域C2が重なっているので、接触領域C1と接触領域C2は十分に近い。
・第1のタッチ操作に対する第2のタッチ操作の方向は、水平方向に近い。
・オブジェクト領域G2の水平方向の幅は、指の幅(例えば、接触領域C1の幅、接触領域C2の幅、または両者の平均値により表される幅)よりも狭い。
ところで、ユーザが触れようと意図したのではないGUIオブジェクトが、第1のタッチ操作の対象のGUIとして特定されてしまった場合以外にも、ユーザが取り消し操作を行う場合があり得る。具体的には、以下のような場合があり得る。
・ユーザが触れようと意図したGUIオブジェクトが、第1のタッチ操作の対象のGUIとして、正しく特定された。
・アプリケーション12が、第1のタッチ操作に応じた処理を実行した。
・ユーザは、アプリケーション12の実行結果に満足しなかった。
以上のようにアプリケーション12の振る舞いが期待はずれだった場合にも、ユーザは取り消し操作を行う可能性がある。
この場合、「第1のタッチ操作、取り消し操作、第2のタッチ操作」という操作シーケンスは、「現在の水平補正情報と垂直補正情報は、まだ十分に適切な状態には至っていない」ということを示唆するものではない。よって、この場合は、補正管理部15は、水平補正情報も垂直補正情報も更新しないことが望ましい。
例E2は、水平補正情報も垂直補正情報も更新しないことが望ましい場合の例である。例E1と同様に、タッチスクリーン11にはアプリケーション12のウィンドウが表示されており、ウィンドウ内には、ウェブページP1とツールバーが表示されている。
ユーザが第1のタッチ操作を行うと、第1のタッチ操作により触れられた領域が、位置検出部13により検出され、検出された領域の位置が、補正管理部15により補正される。こうして位置が補正された領域が、接触領域C3である。接触領域C3は、オブジェクト領域G3と重なっている。
補正管理部15は、接触領域C3の位置をアプリケーション12に通知する。通知に基づき、アプリケーション12は、ボタンB3を第1のタッチ操作の対象のGUIオブジェクトとして特定する。
その結果、ステップS20に示すように、アプリケーション12は、ボタンB3に対応づけられた操作を実行する。すなわち、ステップS20でアプリケーション12は、ボタンB3に埋め込まれたハイパーリンクにより指定されるウェブページP4を読み込み、ウェブページP4をウィンドウ内に表示する。
一方、操作検出部16も、接触領域C3の位置を認識する。そして、操作検出部16は、接触領域C3の位置に基づいて、第1のタッチ操作の対象のGUIオブジェクトが占めるオブジェクト領域として、オブジェクト領域G3を特定する。
また、操作検出部16はアプリケーション12を監視しているので、ステップS20でのウェブページP1からウェブページP4へのジャンプを検出する。ジャンプを検出すると、操作検出部16は、ジャンプの検出を補正管理部15に通知する。この通知の際、操作検出部16は、特定したオブジェクト領域G3の位置と大きさも補正管理部15に通知する。
さて、ユーザは、表示されたウェブページP4を見て、期待はずれに感じることがある。この場合、ユーザは、より満足のいくウェブページを求めて、「戻る」ボタンBBをタップすることがある。
「戻る」ボタンBBに対するタップ操作に関しても、位置検出部13による位置の検出、および補正管理部15による位置の補正が行われる。そして、補正管理部15から接触領域の位置がアプリケーション12に通知され、アプリケーション12は、「戻る」ボタンBBがタップされたことを認識する。その結果、ステップS21でアプリケーション12は、ウェブページP4からウェブページP1へ戻る処理を実行し、ウィンドウには再びウェブページP1が表示される。
一方、操作検出部16は、アプリケーション12の監視を続けているので、ステップS21でのアプリケーション12上の操作も検出する。つまり、操作検出部16は、ステップS20で検出したジャンプを取り消す処理がアプリケーション12上で実行されたことを検出する。そして、操作検出部16は、検出結果を補正管理部15に通知する。
ユーザは、再び表示されたウェブページP1上で、第2のタッチ操作を行う。具体的には、例E2では、ユーザはボタンB2をタップすることを意図して、第2のタッチ操作を行う。
第2のタッチ操作により触れられた領域が、位置検出部13により検出され、検出された領域の位置が、補正管理部15により補正される。こうして位置が補正された領域が、接触領域C4である。
補正管理部15は、接触領域C4の位置をアプリケーション12に通知する。図2に示すように、接触領域C4はオブジェクト領域G1よりもオブジェクト領域G2に近く、接触領域C4の中心はオブジェクト領域G2の内部に位置している。そのため、アプリケーション12は、ボタンB2を第2のタッチ操作の対象のGUIオブジェクトとして特定する。
その結果、ステップS22に示すように、アプリケーション12は、ボタンB2に対応づけられた操作を実行する。すなわち、ステップS22でアプリケーション12は、例E1におけるステップS12と同様に、ウェブページP3をウィンドウ内に表示する。
一方、操作検出部16も、接触領域C4の位置を認識する。そして、操作検出部16は、接触領域C4の位置に基づいて、第2のタッチ操作の対象のGUIオブジェクトが占めるオブジェクト領域として、オブジェクト領域G2を特定する。
また、操作検出部16はアプリケーション12を監視しているので、ステップS22でのウェブページP1からウェブページP3へのジャンプを検出する。ジャンプを検出すると、操作検出部16は、ジャンプの検出を補正管理部15に通知する。この通知の際、操作検出部16は、特定したオブジェクト領域G2の位置と大きさも補正管理部15に通知する。
補正管理部15は、以上のようなステップS20、S21、S22での操作検出部16からの通知により、「第1のタッチ操作、第1のタッチ操作を取り消すための取り消し操作、第2のタッチ操作」という一連の操作が順に行われたことを検出する。検出に応じて、補正管理部15は、水平補正情報を更新するか否か、および、垂直補正情報を更新するか否かを決定する。
詳しくは図8とともに後述するが、例E2では、補正管理部15は、水平補正情報も垂直補正情報も更新しない。なぜなら、接触領域C3と接触領域C4が離れているからである。
接触領域C3と接触領域C4が離れているので、補正管理部15は、「ユーザは、ボタンB3をタップすることを意図して第1のタッチ操作を行い、ボタンB2をタップすることを意図して第2のタッチ操作を行った」と推測する。つまり、補正管理部15は、「ユーザは、異なる意図をもって第1のタッチ操作と第2のタッチ操作を行った」と推測する。この場合、水平補正情報および/または垂直補正情報の更新は、かえってユーザビリティの低下を招くおそれがあるので、補正管理部15は、水平補正情報も垂直補正情報も更新しない。
続いて、図3を参照して、GUIオブジェクトの大きさと、ユーザの指がタッチスクリーンに接触する領域の大きさとの間の、相対的な関係について説明する。
図3にはウェブページP10とP20が例示されている。ウェブページP10には、5つのGUIオブジェクト(具体的にはリンクテキストL10〜L14)が含まれ、ウェブページP20にも5つのGUIオブジェクト(具体的にはリンクテキストL20〜L24)が含まれる。以下では、リンクテキストを単にリンクともいう。リンクL10〜L14とL20〜L24がタッチスクリーン11上で占める領域は、図3では、オブジェクト領域G10〜G14とG20〜G24として示されている。
図3の例では、オブジェクト領域G11〜G14は互いに近くにある。具体的には、オブジェクト領域G11とG12は水平方向に隣接しており、オブジェクト領域G13とG14も水平方向に隣接している。また、オブジェクト領域G11とG13は垂直方向に隣接しており、オブジェクト領域G12とG14も垂直方向に隣接している。オブジェクト領域G11とG14は斜めの方向において近く、オブジェクト領域G12とG13も斜めの方向において近い。しかし、オブジェクト領域G10は、他のオブジェクト領域G11〜G14とは離れている。
より具体的には、2つの領域同士が近いか否かは、ユーザの指がタッチスクリーン11に接触する領域の大きさ(より正確には、タッチ操作に応じて位置検出部13が認識する領域の大きさ)を基準にして判断される。図3には、ユーザの指がタッチスクリーン11に接触する領域の大きさを示すために、接触領域C10が例示されている。
接触領域C10は、オブジェクト領域G10より大きい。よって、ユーザがリンクL10をタップしようとすると、ユーザの指はオブジェクト領域G10からはみ出てしまう。
しかし、ユーザがリンクL10をタップしようとした場合に、他のリンク(例えば、リンクL10に最も近いリンクL14)がタッチ操作の対象のGUIオブジェクトとして特定されてしまうほどには、接触領域C10は大きくない。換言すれば、接触領域C10の大きさを基準にすると、オブジェクト領域G10は、他のオブジェクト領域G11〜G14のいずれからも十分に離れている。
他方、接触領域C10の大きさを基準にすると、オブジェクト領域G11〜G14は、互いに十分に近い。接触領域C10は、単にオブジェクト領域G11〜G14の各々よりも大きいだけでなく、ユーザがタップしようとしたリンク以外のリンクがタッチ操作の対象のGUIオブジェクトとして特定されてしまうほどに大きい。
例えば、ユーザがリンクL11をタップしようとしてタッチスクリーン11に触れると、もちろん、「ユーザの意図どおりに、オブジェクト領域G11が、タッチ操作の対象のGUIオブジェクトとして特定される」という可能性もある。しかし、接触領域C10はオブジェクト領域G11より大きいので、「ユーザの意図しないリンクが、タッチ操作の対象のGUIオブジェクトとして特定される」という可能性もある。
例えば、接触領域C10の大きさ(具体的には水平方向の幅)を基準とすると、オブジェクト領域G12は、水平方向において十分にオブジェクト領域G11に近い。また、接触領域C10の大きさ(具体的には垂直方向の高さ)を基準とすると、オブジェクト領域G13は、垂直方向においてに十分にオブジェクト領域G11に近い。同様に、接触領域Cの大きさ(具体的には幅と高さ)を基準とすると、オブジェクト領域G14は、水平方向と垂直方向の双方において十分にオブジェクト領域G11に近い。そのため、ユーザがリンクL11をタップしようとしてタッチスクリーン11に触れると、オブジェクト領域G12〜G14のいずれかが、タッチ操作の対象のGUIオブジェクトとして特定されてしまうことも、大いにあり得る。
以上の例示から分かるように、オブジェクト領域が大きいか否かは、接触領域の大きさを基準にして判断される。また、2つの領域同士が近いか否かも、接触領域の大きさを基準にして判断される。
ここで、ウェブページP10との対比のために、ウェブページP20の例を参照する。ウェブページP20内のオブジェクト領域G20〜G24のレイアウトは、ウェブページP10内のオブジェクト領域G10〜G14のレイアウトと相似である。
また、ウェブページP20上には、ユーザの指がタッチスクリーン11に接触する領域の大きさ(より正確には、タッチ操作に応じて位置検出部13が認識する領域の大きさ)を示すために、接触領域C20が例示されている。
ウェブページP10とP20は、同じ大きさでもよいし、違う大きさでもよい。いずれにせよ、ある領域が大きいか否かは、接触領域の大きさとの相対比較により判断され、2つの領域同士が近いか否かも、接触領域の大きさを基準に判断される。したがって、ウェブページP10とP20の間には、以下のような違いがある。
ウェブページP10では、オブジェクト領域G10〜G14の各々が、接触領域C10よりも小さい。それに対し、ウェブページP20では、オブジェクト領域G20〜G24の各々が、接触領域C20よりも大きい。よって、例えば、ユーザがリンクL21をタップしようとしてタッチスクリーン11に触れる場合、ユーザの意図に反して他のリンクがタッチ操作の対象のGUIオブジェクトとして特定される可能性は、無視して差し支えない。
また、ウェブページP10では、接触領域C10の大きさを基準にすると、オブジェクト領域G11〜G14が互いに近くにある。ウェブページP10において、接触領域C10の大きさを基準にして、他のオブジェクト領域から十分に離れているのは、オブジェクト領域G10のみである。よって、ウェブページP10では、ユーザがタッチしようと意図していないリンクが、タッチ操作の対象のGUIオブジェクトとして特定される蓋然性は、比較的高い。
それに対し、ウェブページP20では、接触領域C20の大きさを基準にすると、オブジェクト領域G20〜G24は、互いに十分に離れている。よって、ウェブページP20では、ユーザがタッチしようと意図していないリンクが、タッチ操作の対象のGUIオブジェクトとして特定される蓋然性は、無視して差し支えないほどに低い。
例えば、オブジェクト領域G21とG22の間隔の幅は、接触領域C20の幅よりは狭い。しかし、リンクL21をタップしようとするユーザが、わざわざリンクL21の右端付近の紛らわしい位置に触れることは考えにくい。また、オブジェクト領域G21とG22の中心同士の距離は、接触領域C20の幅よりも十分に大きい。
よって、「ユーザがリンクL21をタッチしようと意図したのに、タッチ操作の対象のGUIオブジェクトとしてリンクL22が特定されてしまう」といった蓋然性は、無視して差し支えないほどに低い。つまり、接触領域C20の大きさを基準にすると、オブジェクト領域G21とG22は十分に離れている。同様に、オブジェクト領域G21はオブジェクト領域G23やG24からも十分に離れている。
以上、ウェブページP10とP20に関して例示したように、領域の大きさや、領域間の距離は、本実施形態では、接触領域の大きさに基づいて判断される。
続いて、図4を参照して、図2の端末装置10を実現するためのハードウェアの例を説明する。上記のとおり、端末装置10は、例えば、デスクトップPC、ラップトップPC、タブレットPC、スマートフォン、メディア・プレイヤ、携帯型ゲーム機、携帯電話などの種々の装置のいずれであってもよい。ある観点から見れば、これら種々の装置は、いずれも、コンピュータの一種である。つまり、端末装置10は、図4のようなコンピュータ20により実現されてもよい。
コンピュータ20は、CPU(Central Processing Unit)21とチップセット22を有する。コンピュータ20内の各種コンポーネントは、バスとチップセット22を介してCPU21に接続される。具体的には、チップセット22には、メモリ23、タッチスクリーン24、および不揮発性記憶装置25が接続される。
また、コンピュータ20は、タッチスクリーン24以外の入力装置26をさらに有していてもよい。コンピュータ20は、ネットワーク30を介して他の装置との間でデータを送受信するための通信インタフェイス27を、さらに有していてもよい。コンピュータ20は、記憶媒体40のリーダ/ライタ28をさらに有していてもよい。なお「リーダ/ライタ」とは「リーダおよびライタ」の意味である。入力装置26、通信インタフェイス27、およびリーダ/ライタ28も、チップセット22に接続されていてよい。
CPU21は、シングルコアまたはマルチコアのプロセッサである。コンピュータ20は、2台以上のCPU21を有してもよい。メモリ23は、例えばDRAM(Dynamic Random Access Memory)である。CPU21は、プログラムをメモリ23にロードし、メモリ23をワーキングエリアとしても利用しながら、プログラムを実行する。
CPU21が実行するプログラムの一例は、アプリケーション12である。CPU21が実行するプログラムの他の例は、OS(Operating System)、デバイスドライバ、ファームウェアなどである。図2の補正管理部15と操作検出部16は、CPU21により実現されてもよい。
タッチスクリーン24は、図2のタッチスクリーン11に対応する。タッチスクリーン24は、タッチ位置を検出するためのセンサとして使われる多数の回路素子を含む。タッチスクリーン24は、もちろん、出力装置としてのディスプレイも含む。タッチスクリーン24は、例えば、抵抗膜方式のタッチスクリーン(resistive touchscreen)でもよいし、静電容量方式のタッチスクリーン(capacitive touchscreen)でもよいし、その他の技術を利用したタッチスクリーンでもよい。
例えば、CPU21は、タッチスクリーン24から出力される信号に基づいて、ユーザが触れたタッチスクリーン24上の領域の位置を検出してもよい。実施形態によっては、CPU21は、領域の大きさをさらに検出してもよいし、領域の形状をさらに検出してもよい。
CPU21は、所定のプログラム(例えば、領域検出用のファームウェア、および/または、タッチスクリーン24のデバイスドライバ)を実行することで、ユーザが触れたタッチスクリーン24上の領域の位置などを検出してもよい。つまり、図2の位置検出部13は、CPU21により実現されてもよい。位置検出部13は、ハードウェア回路とCPU21との組み合わせにより実現されてもよい。
不揮発性記憶装置25は、例えば、HDD(Hard Disk Drive)、SSD(Solid-State Drive)、またはその組み合わせでもよい。不揮発性記憶装置25として、さらにROM(Read-Only Memory)が使われてもよい。図2の補正DB14は、不揮発性記憶装置25に記憶されていてもよく、不揮発性記憶装置25からメモリ23にコピーされて、メモリ23に記憶されていてもよい。
入力装置26は、例えば、キーボード、ハードウェアスイッチ、ハードウェアボタン、マウスなどである。例えば、特定のアプリケーション12上での取り消し操作に、ある特定のキー(または2つ以上の特定のキーの組み合わせ)が割り当てられていてもよい。
通信インタフェイス27は、具体的には、ネットワーク30の種類に応じた回路である。コンピュータ20が2種類以上の通信インタフェイス27を有していてもよい。
通信インタフェイス27は、例えば、有線LAN(Local Area Network)インタフェイスでもよいし、無線LANインタフェイスでもよい。より具体的には、通信インタフェイス27は、NIC(Network Interface Card)でもよい。オンボード型のネットワークインタフェイスコントローラが、通信インタフェイス27として使われてもよい。通信インタフェイス27は、物理層の処理を行う「PHYチップ」と呼ばれる回路と、MAC(Media Access Control)副層の処理を行う「MACチップ」と呼ばれる回路を含んでいてもよい。
3GPP(Third Generation Partnership Project)、LTE(Long Term Evolution)、WiMAX(Worldwide Interoperability for Microwave Access)などの無線通信規格にしたがった無線通信回路が、通信インタフェイス27として使われてもよい。なお、「WiMAX」は登録商標である。
記憶媒体40は、例えば、CD(Compact Disc)やDVD(Digital Versatile Disc)などの光ディスクでもよいし、光磁気ディスクでもよいし、磁気ディスクでもよい。不揮発性の半導体メモリ(例えば、メモリカードやUSB(Universal Serial Bus)メモリスティックなど)が記憶媒体40として使われてもよい。
リーダ/ライタ28は、具体的には、ディスクドライブ装置でもよいし、メモリカード用のカードリーダ/ライタであってもよい。あるいは、USBポートと接続されたUSBコントローラが、リーダ/ライタ28として使われてもよい。
CPU21が実行する各種のプログラムは、予め不揮発性記憶装置25にインストールされていてもよい。プログラムは、ネットワーク30から通信インタフェイス27を介してダウンロードされて不揮発性記憶装置25に記憶されてもよい。プログラムは、記憶媒体40に記憶されていてもよい。記憶媒体40に記憶されたプログラムは、リーダ/ライタ28により読み取られて不揮発性記憶装置25にコピーされてもよい。
メモリ23、不揮発性記憶装置25、および記憶媒体40は、いずれも、コンピュータ読み取り可能な有形の(tangible)記憶媒体の例である。これらの有形な記憶媒体は、信号搬送波のような一時的な(transitory)媒体ではない。
続いて、図5を参照して、図2の補正DB14のデータ形式について、いくつかの例を説明する。補正DB14は、図5に示す補正DB14a〜14eのいずれかのようなデータ形式のDBあってもよいし、他の形式のDBであってもよい。
なお、以下では説明の便宜上、水平方向の座標軸をX軸とし、垂直方向の座標軸をY軸とする。具体的には、後述の図9に示すように、タッチスクリーン11の左上端を原点とする。
タッチスクリーン11内の位置は、X座標とY座標により表される。例えば、位置検出部13による位置の検出は、具体的には、X座標とY座標の検出である。補正管理部15は、X座標とY座標を補正し、補正後のX座標とY座標をアプリケーション12に通知する。
また、以下では、X方向(つまり水平方向)の補正値を「ΔX」と表記し、Y方向(つまり垂直方向)の補正値を「ΔY」と表記する。補正値ΔXは水平補正情報の例であり、補正値ΔYは垂直補正情報の例である。
補正DB14aは、1つの補正値ΔXと1つの補正値ΔYを記憶するDBである。図5には、ΔX=3かつΔY=−2の場合が例示されている。
補正DB14aが使われる場合、補正管理部15は、位置検出部13が検出したX座標の値に補正値ΔXを足すことで、X座標を補正する。また、補正管理部15は、位置検出部13が検出したY座標の値に補正値ΔYを足すことで、Y座標を補正する。
補正DB14bは、複数のエントリを持つ。各エントリは、タッチスクリーン11内のブロックを識別するためのX座標とY座標のペアと、補正値ΔXと、補正値ΔYを含む。
例えば、0以上の整数iとjに対して、条件(1)を満たす(X,Y)の範囲が1つのブロックとして定義されてもよい。条件(1)におけるNxとNyは定数である。
Nx・i≦X<Nx・(i+1) かつ
Ny・j≦Y<Ny・(j+1) (1)
条件(1)により定義されるブロックが、(Nx・i,Ny・j)というXY座標により識別されてもよい。図5には、Nx=64かつNy=64の場合に使われる補正DB14bが例示されている。補正DB14b中に例示されている3つのエントリは、以下のことを示す。
・「64≦X<128かつ192≦Y<256」という条件により定義されるブロックに対応する補正値ΔXは、−1である。このブロックに対応する補正値ΔYは、4である。
・「64≦X<128かつ256≦Y<320」という条件により定義されるブロックに対応する補正値ΔXは、0である。このブロックに対応する補正値ΔYは、3である。
・「128≦X<192かつ256≦Y<320」という条件により定義されるブロックに対応する補正値ΔXは、2である。このブロックに対応する補正値ΔYは、3である。
補正DB14bが使われる場合、補正管理部15は、位置検出部13が検出したX座標とY座標で示される位置が属するブロックに対応する補正値ΔXとΔYを使って、X座標とY座標を補正する。例えば、位置検出部13が(X,Y)=(100,200)というXY座標を検出した場合、補正管理部15は、補正値ΔXとΔYとして、−1と4という値を用いる。よって、この場合、補正管理部15は、補正後のX座標の値を99(=100−1)と算出し、補正後のY座標の値を204(=200+4)と算出する。
補正DB14cも、複数のエントリを持つ。各エントリは、以下のフィールドを含む。
・タッチスクリーン11内のブロックを識別するためのX座標とY座標。
・GUIオブジェクトの幅と高さの範囲を指定するための2つの値(例えば幅の上限値と高さの上限値)。
・上記GUIオブジェクトの種類。
・補正値ΔXと補正値ΔY。
補正DB14bと比べると、補正DB14cには3つのフィールドが追加されている。補正DB14cも、Nx=64かつNy=64の場合に関する例である。
補正DB14cには、5つのエントリが例示されている。これら5つのエントリは、どれも、位置検出部13により検出された位置が「320≦X<384かつ128≦Y<192」という条件により定義されるブロックに属している場合に使われる補正値ΔXとΔYを決めるためのエントリである。より詳しくは、これら5つのエントリは、以下のことを示す。
・位置検出部13により検出された位置が、上記ブロックに属しており、かつ、幅が12以下で高さが12以下のラジオボタンが配置された領域内に含まれている場合、補正値ΔX=2と補正値ΔY=−3が使われる。
・位置検出部13により検出された位置が、上記ブロックに属しており、かつ、幅が36以下で高さが12以下のリンクテキストが配置された領域に含まれている場合、補正値ΔX=2と補正値ΔY=−2が使われる。
・位置検出部13により検出された位置が、上記ブロックに属しており、かつ、幅が36より大きく72以下で高さが12以下のリンクテキストが配置された領域に含まれている場合、補正値ΔX=0と補正値ΔY=−2が使われる。
・位置検出部13により検出された位置が、上記ブロックに属しており、かつ、幅が36以下で高さが24以下のドロップダウンリストが配置された領域に含まれている場合、補正値ΔX=1と補正値ΔY=−3が使われる。
・位置検出部13により検出された位置が上記ブロックに属しており、かつ、当該検出された位置には、何のGUIオブジェクトも配置されていない場合、補正値ΔX=1と補正値ΔY=−2が使われる。
補正DB14cが使われる場合、補正管理部15は、位置検出部13が検出したX座標とY座標で示される位置が属するブロックを特定する。また、補正管理部15は、位置検出部13が検出した位置(つまり位置検出部13が検出したXY座標により示される点)を含む領域を占めるようなGUIオブジェクトがあるか否かを、操作検出部16に問い合わせる。操作検出部16は、問い合わせに答える。
具体的には、補正管理部15から通知されるXY座標が示す点を含む領域を占めるようなGUIオブジェクトがある場合、操作検出部16は、当該GUIオブジェクトの幅と高さと種類を補正管理部15に通知する。逆に、上記のようなGUIオブジェクトがない場合、操作検出部16は、上記のようなGUIオブジェクトがないことを補正管理部15に通知する。
操作検出部16がGUIオブジェクトの幅と高さと種類を補正管理部15に通知した場合、補正管理部15は、上記のように特定したブロックと、操作検出部16から通知された幅と高さと種類との組み合わせに対応するエントリを探す。そして、補正管理部15は、見つかったエントリの補正値ΔXと補正値ΔYを用いる。
逆に、上記のようなGUIオブジェクトがないことを操作検出部16が補正管理部15に通知した場合、補正管理部15は、上記のように特定したブロックに対応するエントリのうちで、幅と高さと種類のフィールドに無効な値が設定されているエントリを探す。そして、補正管理部15は、見つかったエントリの補正値ΔXと補正値ΔYを用いる。
続いて、補正DB14dについて説明する。補正DB14dも複数のエントリを持つ。各エントリは、アプリケーションを識別する識別情報と、補正値ΔXと、補正値ΔYを含む。補正DB14d中に例示されている2つのエントリは、以下のことを示す。
・「ウェブブラウザ」というアプリケーション名で識別されるアプリケーション12上でタッチ操作が行われた場合には、補正値ΔX=−3と補正値ΔY=2が使われる。
・「音楽プレイヤ」というアプリケーション名で識別されるアプリケーション12上でタッチ操作が行われた場合には、補正値ΔX=−5と補正値ΔY=−1が使われる。
補正DB14dが使われる場合、補正管理部15は、タッチ操作の対象のアプリケーション12を特定し、特定したアプリケーション12に対応する補正値ΔXとΔYを使って、X座標とY座標を補正する。補正管理部15は、位置検出部13により検出されたX座標とY座標を用いて、例えばOSまたは適宜のAPIを介して、タッチ操作の対象のアプリケーション12を特定してもよい。
補正DB14eも、複数のエントリを持つ。各エントリは、タッチスクリーン11内のブロックを識別するためのX座標とY座標のペアと、補正値ΔXと、補正値ΔYと、カウンタを含む。補正DB14bと比べると、補正DB14eにはカウンタが追加されている。
カウンタは、補正管理部15が補正値ΔXおよび/または補正値ΔYを更新する際に、更新後の補正値ΔXおよび/または補正値ΔYを計算するために使われる。カウンタを利用した計算については、図8とともに後述する。
カウンタの値は、当該カウンタを含むエントリに関して、補正値ΔXおよび/または補正値ΔYを更新する処理が今までに行われた回数を示す。実施形態によっては、補正DB14eのようなエントリごとに1つのカウンタの代わりに、エントリごとに2つのカウンタが使われてもよい。つまり、補正値ΔXが今までに更新された回数を示す第1のカウンタと、補正値ΔYが今までに更新された回数を示す第2のカウンタが使われてもよい。
カウンタは、位置検出部13が検出した位置を補正管理部15が補正する際には使われない。よって、補正DB14eが使われる場合、補正管理部15は、補正DB14bが使われる場合と同様にして、位置の補正を行う。
なお、補正DB14aが使われる場合、補正値ΔXの初期値として0が設定されていてもよく、補正値ΔYの初期値として0が設定されていてもよい。補正DB14b〜14eのように複数のエントリを含む形式の補正DB14が使われる場合、各エントリにおいて、補正値ΔXの初期値として0が設定されていてもよく、補正値ΔYの初期値として0が設定されていてもよい。
また、複数のエントリを含む形式の補正DB14が使われる場合、初期状態では、必ずしもすべてのエントリが存在していなくてもよい。例えば、補正値ΔXとΔYを決めるために補正管理部15が補正DB14を検索する際に、検索条件に合うエントリが見つからなかった場合、補正管理部15が、検索条件に合う新規エントリを補正DB14に追加してもよい。補正管理部15は、新規エントリの補正値ΔXとΔYをともに0に初期化してもよい。
なお、図5に例示した補正DB14a〜14e以外の形式の補正DB14が使われてもよい。
例えば、補正DB14cから、ブロックを識別するためのX座標とY座標のフィールドが省略されてもよい。補正DB14cから幅と高さのフィールドが省略されてもよいし、あるいは、補正DB14cから種類のフィールドが省略されてもよい。
逆に、補正DB14dに、ブロックを識別するためのX座標とY座標のフィールドが追加されてもよい。補正DB14dに、GUIオブジェクトの幅と高さを示すフィールドが追加されてもよいし、GUIオブジェクトの種類を示すフィールドが追加されてもよいし、幅と高さと種類のフィールドすべてが追加されてもよい。換言すれば、GUIオブジェクト、アプリケーション、またはその両者の組み合わせにより示される機能ごとに、補正値ΔXとΔYが定義されていてもよい。
補正DB14bと14cの上記の例では、タッチスクリーン11内の複数のブロックの大きさが一定である。よって、補正DB14bや14cでは、ブロックを識別するためのフィールドは、X座標とY座標のフィールドだけで十分である。しかし、実施形態によっては、互いに異なる大きさのブロックが定義されてもよい。例えば、タッチスクリーン11内の各ブロックは、ブロックの左上隅の頂点のX座標およびY座標、ブロックの幅、ならびにブロックの高さの組み合わせにより、識別されてもよい。もちろん、複数のブロックの間で、ブロックの幅と高さの一方のみが可変であってもよい。例えば、補正DB14bと14cのいずれも、ブロックを識別するためのフィールドとして、X座標とY座標のフィールドだけでなく、ブロックの幅と高さの一方または双方のフィールドをさらに有するように、変形されてもよい。
また、補正DB14eに例示したようなカウンタのフィールドは、他のどの形式の補正DB14に追加されてもよい。カウンタのフィールドは、例えば、補正DB14a、14c、14dのいずれに追加されてもよい。
端末装置10が姿勢センサを有する場合、端末装置10の姿勢を示すフィールドが補正DB14の各エントリに含まれていてもよい。この場合、補正管理部15は、例えば所定のAPIを介して、端末装置10の姿勢を示す姿勢情報を取得し、取得した姿勢情報に対応するエントリを補正DB14において探す。そして、補正管理部15は、見つかったエントリの補正値ΔXとΔYを使って補正を行う。姿勢情報として、例えば、ピッチ角とロール角の組み合わせが使われてもよい。
以上、様々に例示したように、補正DB14は、単に1つの補正値ΔXと1つの補正値ΔYのみを記憶していてもよいし、決められた複数の条件のそれぞれに対応して、水平補正情報と垂直補正情報を記憶していてもよい。上記の決められた複数の条件を、以下では「複数の補正条件」ともいう。1つの補正条件は、図5の例では、補正DB14中の1つのエントリに対応する。
複数の補正条件は、例えば、タッチスクリーン11上のどこが触れられたかに関する複数の位置的条件であってもよい。補正DB14b、14c、および14eでは、各位置的条件が、ブロックを識別するためのX座標とY座標のフィールドにより表されている。もちろん、上記のとおり、ブロックを識別するために、ブロックの幅と高さの一方または双方のフィールドがさらに使われてもよい。つまり、各位置的条件が、X座標とY座標のフィールドと、さらに、ブロックの幅と高さの一方または双方のフィールドにより表されてもよい。
複数の補正条件は、例えば、タッチスクリーンの姿勢に関する複数の姿勢条件であってもよい。例えば、各姿勢条件は、ピッチ角の範囲とロール角の範囲の組み合わせにより表されてもよい。
複数の補正条件は、例えば、どのアプリケーションを対象としてタッチ操作が行われたのかに関する複数のアプリケーション条件であってもよい。補正DB14dでは、各アプリケーション条件が、アプリケーションの識別情報により表されている。
複数の補正条件は、例えば、位置検出部13が検出する領域と少なくとも一部が重なる領域を占めるGUIオブジェクトの属性に関する複数のオブジェクト条件であってもよい。GUIオブジェクトの属性は、例えば、幅、高さ、種類、またはそのうち2つ以上の組み合わせにより表されてもよい。補正DB14cでは、各オブジェクト条件が、幅と高さと種類の組み合わせにより表されている。
もちろん、複数の補正条件は、複数の位置的条件と、複数の姿勢条件と、複数のアプリケーション条件と、複数のオブジェクト条件のうちの、2種類以上の条件の組み合わせにより表される複数の条件であってもよい。いずれにせよ、補正DB14が複数の補正条件のそれぞれに対応して補正値ΔXと補正値ΔYを記憶している場合、補正管理部15は、複数の補正条件のうちの満たされている補正条件に対応する補正値ΔXとΔYを用いて補正を行う。
また、詳しくは図8〜10とともに後述するとおり、「第1のタッチ操作と取り消し操作と第2のタッチ操作」という操作シーケンスに応じて、補正管理部15が補正値ΔXおよび/または補正値ΔYを更新する場合がある。補正値ΔXを更新する場合、補正管理部15は、具体的には、複数の補正条件のうち、第1のタッチ操作の際に満たされていた特定の補正条件に対応する補正値ΔXを更新する。同様に、補正値ΔYを更新する場合、補正管理部15は、具体的には、上記特定の補正条件に対応する補正値ΔYを更新する。
続いて、図6〜8のフローチャートおよび図9〜10を参照して、端末装置10の動作についてさらに詳しく説明する。
図6は、座標通知処理のフローチャートである。座標通知処理は、タッチ操作の検出と座標の補正に関する処理であり、ユーザがタッチ操作を行うたびに実行される。
ステップS101で位置検出部13が、タッチ操作により触れられた領域を検出する。位置検出部13は、タッチ操作により触れられた領域の位置のみを検出してもよい。この場合、位置検出部13は、タッチ操作により触れられた領域の大きさを、予め記憶されている1つ以上の値により定まる大きさだと見なす。あるいは、位置検出部13は、領域の位置と大きさを検出してもよいし、領域の位置と大きさと形状を検出してもよい。
以下では説明の簡単化のため、位置検出部13は、タッチ操作により触れられた領域のバウンディング・ボックスを検出するものとする。また、後述の図9に示すように、タッチスクリーン11の左上端をXY座標系の原点とする。位置検出部13の検出したバウンディング・ボックスは、条件(2)を満たす範囲であるものとする。
Xs≦X≦Xe かつ Ys≦Y≦Ye (2)
位置検出部13は、検出した領域を示す座標(Xs,Ys)および(Xe,Ye)を、補正管理部15に通知する。換言すれば、位置検出部13は、検出した領域の位置と大きさを補正管理部15に通知する。位置検出部13は、座標(Xs,Ys)および(Xe,Ye)を補正管理部15に通知することにより、検出した領域の位置を示す座標(Xc,Yc)と、検出した領域の幅Wと、検出した領域の高さHを、補正管理部15に通知する(式(3)〜(6)を参照)。
Xc=(Xs+Xe)/2 (3)
Yc=(Ys+Ye)/2 (4)
W=Xe−Xs (5)
H=Ye−Ys (6)
すると、ステップS102で補正管理部15は、X方向の補正値ΔXとY方向の補正値ΔYを補正DB14から取得する。ステップS102の処理の詳細は、補正DB14のデータ形式による。
例えば、補正管理部15は、補正DB14aから補正値ΔXとΔYを読み取ってもよい。補正管理部15は、座標(Xc,Yc)が属するブロックに対応する補正値ΔXとΔYを、補正DB14bまたは14eから読み取ってもよい。
補正管理部15は、座標(Xc,Yc)を含む領域を占めるようなGUIオブジェクトがあるか否かを操作検出部16に問い合わせ、問い合わせに対する応答に応じた補正値ΔXとΔYを、補正DB14cから読み取ってもよい。補正管理部15は、タッチ操作の対象のアプリケーション12を特定し、特定したアプリケーション12に対応する補正値ΔXとΔYを補正DB14dから読み取ってもよい。
なお、補正DB14bまたは14eにおいて、座標(Xc,Yc)が属するブロックに対応する補正値ΔXとΔYが未登録の場合(つまり当該ブロックに対応するエントリがない場合)、補正管理部15は、補正値ΔXとΔYをそれぞれ0と見なす。同様に、補正DB14cまたは14dにおいて、上記のような条件に合う補正値ΔXとΔYが未登録の場合にも、補正管理部15は、補正値ΔXとΔYをそれぞれ0と見なす。
以上のように条件に合うエントリが見つからない場合、補正管理部15は、新規エントリを補正DB14に追加する。新規エントリにおける補正値ΔXとΔYは、いずれも0に初期化される。
もちろん、登録されている補正値ΔXがたまたま0である可能性もある。同様に、登録されている補正値ΔYがたまたま0である可能性もある。
続いて、ステップS103で補正管理部15は、補正後の座標(Xc+ΔX,Yc+ΔY)を算出する。実施形態によっては、補正管理部15は、補正値ΔXが0か否かを判断してもよく、補正値ΔXが0でない場合にのみ「Xc+ΔX」という加算を実行してもよい。同様に、補正管理部15は、補正値ΔYが0か否かを判断してもよく、補正値ΔYが0でない場合にのみ「Yc+ΔY」という加算を実行してもよい。
そして、ステップS104で補正管理部15は、補正後の座標(Xc+ΔX,Yc+ΔY)をアプリケーション12と操作検出部16に通知する。すると、座標通知処理が完了する。
なお、補正管理部15は、ステップS104で補正後の座標(Xc+ΔX,Yc+ΔY)をアプリケーション12だけに通知してもよい。操作検出部16は、アプリケーション12への通知をフックすることにより、補正後の座標(Xc+ΔX,Yc+ΔY)を認識することができる。
実施形態によっては、補正管理部15は、ステップS103で、座標(Xs+ΔX,Ys+ΔY)と(Xe+ΔX,Ye+ΔY)を算出してもよい。そして、補正管理部15は、ステップS104で、座標(Xs+ΔX,Ys+ΔY)と(Xe+ΔX,Ye+ΔY)をアプリケーション12と操作検出部16に通知してもよい。
なお、補正管理部15は、後述の図8の補正DB更新処理のために、位置検出部13により検出された位置と、補正後の位置と、領域の大きさとを直接的または間接的に示す情報を、例えばメモリ23上に記憶する。例えば、補正管理部15は、ステップS102で取得した補正値ΔXおよびΔYと、補正後の座標(Xc+ΔX,Yc+ΔY)と、幅Wと、高さHをメモリ23に記憶してもよい。別の例として、補正管理部15は、座標(Xc,Yc)と(Xs+ΔX,Ys+ΔY)と(Xe+ΔX,Ye+ΔY)をメモリ23に記憶してもよい。
座標(Xs+ΔX,Ys+ΔY)と(Xe+ΔX,Ye+ΔY)で表される領域は、図1〜2に関して説明した「接触領域」である。換言すれば、接触領域は、座標(Xc+ΔX,Yc+ΔY)で表される位置にある、幅W・高さHの領域である。
座標通知処理の完了後、アプリケーション12は、座標(Xc+ΔX,Yc+ΔY)に応じて動作する。例えば、座標(Xc+ΔX,Yc+ΔY)が示す位置が、無効な領域(例えば、リンクテキスト以外の通常のテキストが書かれている領域や、ハイパーリンクの埋め込まれていない通常の画像の領域など)に属している場合、アプリケーション12は何もしない。よって、この場合、操作検出部16は、アプリケーション12上の何の操作も検出しない。
逆に、アプリケーション12に何らかの処理を実行させるためのGUIオブジェクトが占める領域内に、座標(Xc+ΔX,Yc+ΔY)が属している場合、アプリケーション12は、上記「何らかの処理」を実行する。例えば、以下の3つの条件が成り立つ場合には、アプリケーション12は、図2のウェブページP1からウェブページP4へのジャンプを実行する。そして、このジャンプは、操作検出部16により検出される。
・アプリケーション12がウェブブラウザである。
・アプリケーション12が図2のウェブページP1を表示しているときに、補正管理部15が座標(Xc+ΔX,Yc+ΔY)をアプリケーション12に通知した。
・座標(Xc+ΔX,Yc+ΔY)はオブジェクト領域G3の内部である。
さて、以上説明した座標通知処理とは独立して、補正DB14の管理に関する補正DB管理処理が実行される。補正DB管理処理は、以下のことを含む。
・「第1のタッチ操作と取り消し操作と第2のタッチ操作」という特定の操作シーケンスが行われたか否かを監視すること。
・特定の操作シーケンスを検出したら、「補正値ΔXのみを更新するか、補正値ΔYのみを更新するか、補正値ΔXとΔYの双方を更新するか、それとも補正値ΔXとΔYのどちらも更新しないのか」を決定すること。
・補正DB14の更新に関して、上記決定にしたがって動作すること。
補正DB管理処理の具体的な実装は、実施形態に応じて様々であってよい。例えば、アプリケーション12がウェブブラウザである場合、補正管理部15は、ウェブブラウザが表示する個々のウェブページごとに別々のプロセスを実行することにより、特定の操作シーケンスを監視してもよい。図7は、ウェブページごとに行われる監視処理のフローチャートである。また、補正管理部15は、例えば図8のフローチャートにしたがって、補正DB14の更新に関する決定を下し、決定にしたがって動作してもよい。
以下に、図7と図8のフローチャートについて説明する。アプリケーション12がウェブページを読み込んでウィンドウ内に表示するたびに、補正管理部15は、当該ウェブページに関して図7の監視処理の実行を開始する。図8の補正DB更新処理は、特定の操作シーケンスの検出に応じて、図7のステップS208から呼び出される。
なお、以下では説明の便宜上、「第1のタッチ操作と取り消し操作と第2のタッチ操作」という特定の操作シーケンスの起点である可能性があるウェブページとして監視されるウェブページを、「対象ウェブページ」という。ある時点では、アプリケーション12(つまりウェブブラウザ)のウィンドウ内に現在表示されているウェブページ自体が、対象ウェブページである。しかし、詳しくは後述するとおり、現在表示されているのとは別のウェブページが、対象ウェブページである場合もある。
さて、アプリケーション12があるウェブページを読み込み、このウェブページをウィンドウ内に表示すると、このウェブページに関して補正管理部15が図7の監視処理を開始する。つまり、この場合、新たにウィンドウ内に表示されたウェブページが対象ウェブページである。
例えば、アプリケーション12が新たなウェブページを表示すると、操作検出部16が新たなウェブページの表示を検出する。検出に応じて、操作検出部16は、新たなウェブページが表示されたことを補正管理部15に通知する。すると、補正管理部15は、通知に応じて、上記新たなウェブページに関して図7の監視処理を開始する。この場合、上記新たなウェブページが対象ページである。
ステップS201で補正管理部15は、対象ウェブページ内のいずれかのGUIオブジェクト上でのタッチ操作が検出されるまで待つ。なお、ステップS201の時点では、対象ウェブページは、現在表示されているウェブページである。
上述したとおり、ユーザが無効な領域でタッチ操作を行うこともあり得る。よって、タッチ操作が必ずアプリケーション12上の操作を引き起こすとは限らない。一方、タッチ操作に応じて図6の座標通知処理が行われ、その結果としてアプリケーション12上で何らかの操作が行われると、アプリケーション12上の操作が操作検出部16により検出される。そして、操作検出部16は、検出結果を補正管理部15に通知する。
よって、ステップS201で補正管理部15は、具体的には、操作検出部16からの通知を待つ。操作検出部16からの通知は、操作検出部16が特定したオブジェクト領域を示す情報を含む。補正管理部15は、操作検出部16から通知を受けると、オブジェクト領域を示す情報を、例えばメモリ23上に記憶する。
ところで、操作検出部16から補正管理部15への通知は、アプリケーション12上での操作が検出されたときに行われる。また、アプリケーション12上の操作は、タッチ操作が検出されたときに検出される。そして、タッチ操作のたびに図6の座標通知処理が行われ、接触領域の座標が得られている。
つまり、あるタッチ操作に応じて特定されたオブジェクト領域には、当該オブジェクト領域に対応する接触領域が存在する。そして、当該オブジェクト領域に対応する接触領域とは、具体的には、上記あるタッチ操作に応じて検出され位置が補正された接触領域のことである。
補正管理部15は、オブジェクト領域を示す情報だけでなく、当該オブジェクト領域に対応する接触領域を示す情報も、例えばメモリ23上に記憶する。図6の座標通知処理に関して説明したとおり、タッチ操作が行われるたびに、補正管理部15は、位置検出部13により検出された位置と、補正後の位置と、領域の大きさとを直接的または間接的に示す情報を、例えばメモリ23上に記憶している。例えば、補正管理部15は、座標通知処理の際に接触領域に関して記憶した上記情報を、ステップS201での検出に応じて、オブジェクト領域を示す情報と対応づけてもよい。
オブジェクト領域と接触領域の対応関係を管理するために、補正管理部15と操作検出部16は、適宜の識別情報(例えば、タッチ操作が検出された時刻のタイムスタンプ、またはシーケンス番号など)を利用してもよい。例えば、補正管理部15からアプリケーション12および操作検出部16への通知と、操作検出部16から補正管理部15への通知に、識別情報が含まれていてもよい。
補正管理部15は、対象ウェブページ内のいずれかのGUIオブジェクト上でのタッチ操作が検出されたことを、操作検出部16からの通知に基づいて認識すると、ステップS202で以下のように動作する。
補正管理部15は、次のウェブページの監視を開始する。なおここで「次のウェブページ」とは、タッチ操作に応じてアプリケーション12が新たにウィンドウ内に表示したウェブページのことである。したがって、ステップS202の時点でウィンドウに表示されているウェブページは、「次のウェブページ」であり、「対象ウェブページ」ではない。
より具体的には、補正管理部15は、対象ウェブページに関する監視処理とは別に、次のウェブページに関する監視処理をステップS202で開始する。例えば、補正管理部15は、ステップS202で、次のウェブページに対応する新たなプロセスを生成することにより、次のウェブページに関する監視処理を開始してもよい。
また、補正管理部15は、ステップS202で、対象ウェブページに関するタイマを設定する。例えば、補正管理部15は、「3秒」などの所定の時間をタイマに設定してもよい。タイマに設定される時間の長さは、定数でもよいし、動的に学習される値であってもよいし、ユーザによって指定される値であってもよい。以下では説明の便宜上、タイマには所定の時間が設定されるものとする。補正管理部15は、タイマに設定した時間の間、対象ウェブページ用のプロセスをスリープさせてもよい。
例えば、図2の例E1において、ウェブページP1が対象ウェブページであるとする。ユーザがタッチ操作を行い、タッチ操作に応じて図6の座標通知処理が行われると、接触領域C1が認識されるとともに、ステップS10のジャンプが実行される。その結果、ウェブページP2が表示される。
このとき、操作検出部16は、オブジェクト領域G1を特定し、ジャンプを検出する。そして、操作検出部16は、オブジェクト領域G1を示す座標を補正管理部15に通知するとともに、ジャンプを検出したことを補正管理部15に通知する。操作検出部16は、ウェブページP1(つまり、タッチ操作が行われたウェブページ)を識別する識別情報をさらに補正管理部15に通知してもよい。識別情報は、例えばURI(Uniform Resource Identifier)であってもよい。
すると、補正管理部15は、対象ウェブページ(つまりウェブページP1)内のGUIオブジェクト上でのタッチ操作が検出されたことを認識する。よって、補正管理部15は、ステップS202で、次のウェブページ(つまりウェブページP2)に関する監視処理を開始するとともに、ウェブページP1に関してタイマを設定する。
別の例として、図2の例E2において、ウェブページP1が対象ウェブページであるものとする。この場合、ステップS20のジャンプが行われると、ステップS202で補正管理部15は、次のウェブページ(つまりウェブページP4)に関する監視処理を開始するとともに、ウェブページP1に関してタイマを設定する。
その後、ステップS203で補正管理部15は、所定時間以内に取り消し操作(例えば、「戻る」ボタンBBに対するタップ操作)が行われたか否かを判断する。ここでの「所定時間」とは、ステップS202でタイマに設定された時間である。つまり、補正管理部15は、第1のタッチ操作が行われてから所定時間以内に、第1のタッチ操作を取り消すための取り消し操作が行われたか否かを判断する。
対象ウェブページ上で第1のタッチ操作が行われてから所定時間以内に取り消し操作が行われた場合、対象ウェブページに関する監視処理は、ステップS204へと進む。ステップS204の時点では、対象ウェブページが再度アプリケーション12のウィンドウ内に表示されている。
逆に、対象ウェブページ上で第1のタッチ操作が行われてから所定時間が経過しても取り消し操作が行われなかった場合(すなわち、タイムアウトが生じた場合)、対象ウェブページに関する監視処理は終了する。なお、第1のタッチ操作に応じて表示されたウェブページ(つまり、ステップS202に関して説明した「次のウェブページ」)に関する監視処理の実行は、継続される。
例えば、図2の例E1で、対象ウェブページがウェブページP1だとする。また、上記のように第1のタッチ操作に応じてステップS10のジャンプが実行された後、所定時間以内には取り消し操作(つまり「戻る」ボタンBBに対するタッチ操作)が行われなかったとする。
この場合、補正管理部15は、ウェブページP1に関する監視処理を終了する。なぜなら、「第1のタッチ操作の実行から所定時間以内には取り消し操作が行われない」という事実は、「ユーザが触ろうと意図したGUIオブジェクトが、タッチ操作の対象として正しく特定された」ということを示唆するからである。よって、この場合、補正管理部15は、補正DB14を更新することなく、対象ウェブページに関する監視処理を終了する。
しかし、補正管理部15は、ウェブページP2(つまり現在表示されているウェブページ)に関する監視処理は継続する。なぜなら、ウェブページP2上でこれからタッチ操作が行われ、そのタッチ操作を取り消すための取り消し操作がさらに行われ、その後、ウェブページP2上で再度タッチ操作が行われる可能性があるからである。
なお、所定時間よりも長い時間が経過してからウェブページP2上で取り消し操作が行われることもあり得る。この場合は、取り消し操作に応じてウェブページP1が再度表示されたときに、補正管理部15がウェブページP1に関する監視処理を新たに開始する。
以下に、ステップS203の判断のさらなる詳細について例示する。
取り消し操作は、現在表示されているウェブページ上で行われる。ステップS203の時点で表示されているウェブページは、対象ウェブページとは異なる。例えば、図2の例E1において、対象ウェブページがウェブページP1であり、ウェブページP2が現在表示されている場合、ウェブページP2に対して取り消し操作が行われる。
取り消し操作が行われると、操作検出部16が取り消し操作を検出する。そして、操作検出部16は、取り消し操作を検出したことを補正管理部15に通知する。このとき、操作検出部16は、取り消し操作が行われたウェブページ(つまり現在表示されているウェブページ)を識別する識別情報を、補正管理部15に通知してもよい。
補正管理部15は、操作検出部16からの通知を受け取ると、取り消し操作が行われたことを認識する。例えば、上記のように各ウェブページごとに補正管理部15が別々のプロセスで監視処理を実行する場合、補正管理部15は、操作検出部16からの通知に応じて以下のように動作してもよい。
補正管理部15は、取り消し操作が行われたウェブページに関するプロセスから、親プロセスを起こす(あるいは親プロセスにシグナルを送る)。ステップS202の説明から分かるように、親プロセスは、取り消し操作が行われたウェブページの直前に表示されていたウェブページに関するプロセスである。そして、補正管理部15は、取り消し操作が行われたウェブページに関するプロセスを終了する。
例えば、図2の例E1においてウェブページP2上で「戻る」ボタンBBがタップされた場合、補正管理部15は、ウェブページP2に関するプロセスから、ウェブページP1に関するプロセスを起こす。また、この場合、補正管理部15は、ウェブページP2に関するプロセスを終了させる。
なお、より正確には、第1のタッチ操作から所定時間が経過した後に取り消し操作が行われた場合は、ウェブページP1に関するプロセスは既にタイムアウトして終了している。つまり、この場合、ウェブページP1に関するスリープ中のプロセスは存在しない。よって、この場合、補正管理部15は、ウェブページP1に関するスリープ中のプロセスを起こす代わりに、新たにウェブページP1に関するプロセスを生成し、開始する。
一方、補正管理部15は、上記の親プロセスにおいてステップS203の判断を実行する。つまり、補正管理部15は、取り消し操作に応じて起こされた(あるいは取り消し操作に応じてシグナルを受け取った)プロセスにおいて、ステップS203の判断を実行する。
例えば、図2の例E1において、ステップS10のジャンプから所定時間以内にウェブページP2上で取り消し操作が行われたとする。この場合、補正管理部15は、ウェブページP1に関するプロセス中の、起床後のステップS203において、「所定時間以内に取り消し操作が行われた」と判断する。つまり、親プロセスがステップS202で設定した時間が経過する前に、親プロセスが子プロセスから起こされた場合には、親プロセスのステップS203で「所定時間以内に取り消し操作が行われた」と判断される。
もちろん、以上説明したステップS203の詳細は、実装の一例にすぎない。実施形態に応じて適宜他の実装方法が採用されてよい。しかし、いずれにせよ、第1のタッチ操作の実行から所定時間以内に取り消し操作が行われると、ステップS204で補正管理部15は、再び対象ウェブページに関するタイマを設定する。
ステップS204でタイマに設定される時間は、ステップS202で設定される時間と同じでもよいし、異なっていてもよい。また、タイマに設定される時間の長さは、定数でもよいし、動的に学習される値であってもよいし、ユーザによって指定される値であってもよい。以下では説明の便宜上、タイマには所定の時間が設定されるものとする。
ところで、図7の監視処理とは独立して、ユーザがタッチ操作を行うたびに図6の座標通知処理が実行される。よって、ステップS204の実行後、補正管理部15は、操作検出部16から通知を受ける可能性がある。
具体的には、第2のタッチ操作に応じて図6の座標通知処理が行われ、その結果としてアプリケーション12上で何らかの操作が行われ、アプリケーション12上の操作が操作検出部16により検出される、という場合がある。この場合、操作検出部16は、検出結果を補正管理部15に通知する。操作検出部16からの通知は、操作検出部16が特定した第2のオブジェクト領域を示す情報を含む。
補正管理部15は、操作検出部16からの通知によって、対象ウェブページ上での第2のタッチ操作を認識する。また、補正管理部15は、操作検出部16から通知を受けると、第2のオブジェクト領域を示す情報を、例えばメモリ23上に記憶する。ステップS201での第1のタッチ操作の検出に応じた動作と同様に、補正管理部15は、第2のタッチ操作の検出に応じて、第2のオブジェクト領域に対応する第2の接触領域を示す情報も、例えばメモリ23上に記憶する。
以上のように、補正管理部15は、操作検出部16から通知を受ける可能性がある。よって、ステップS205で補正管理部15は、取り消し操作から所定時間以内に対象ウェブページ内のいずれかのGUIオブジェクト上でのタッチ操作が検出されたか否かを判断する。つまり、補正管理部15は、第1のタッチ操作を取り消すための取り消し操作が行われてから所定時間以内に、第2のタッチ操作が行われたか否かを、操作検出部16からの通知の有無に基づいて判断する。ここでの「所定時間」とは、ステップS204でタイマに設定された時間である。
取り消し操作が行われてから所定時間以内に対象ウェブページ上で第2のタッチ操作が行われた場合、対象ウェブページに関する監視処理は、ステップS206へと進む。つまり、ステップS204で設定されたタイマがタイムアウトする前に、操作検出部16が第2のタッチ操作に関する検出結果を補正管理部15に通知すれば、補正管理部15は、次にステップS206を実行する。
例えば、図2の例E1において、対象ウェブページがウェブページP1だとする。また、ステップS11に示す取り消し操作から所定の時間以内に、第2のタッチ操作が行われたとする。この場合、操作検出部16は、オブジェクト領域G2を特定し、ステップS12のジャンプを検出する。そして、操作検出部16は、アプリケーション12上での操作を検出したこと、および、オブジェクト領域G2を表す情報を、補正管理部15に通知する。
したがって、この場合、補正管理部15は、操作検出部16からの通知に基づいて、「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスが実行されたことを認識する。ただし、第2のタッチ操作を取り消すための第2の取り消し操作がさらにこれから行われる可能性もある。仮に第2の取り消し操作が行われた場合、取り消された第2のタッチ操作を含む上記操作シーケンスに基づいて補正DB14を更新することは、不適切である。よって、補正管理部15は、補正DB14の不適切な更新を防ぐために、後述のステップS206〜S207を実行する。
逆に、第1のタッチ操作を取り消すための取り消し操作が行われてから所定時間が経過しても、対象ウェブページ上で第2のタッチ操作が行われない場合もあり得る。つまり、ステップS204で設定されたタイマがタイムアウトする場合もあり得る。この場合、対象ウェブページに関する監視処理は、ステップS205からステップS201へと戻る。理由は以下のとおりである。
仮に、ユーザが触れようと意図したGUIオブジェクトとは異なるGUIオブジェクトが、第1タッチ操作の対象として特定されたとする。この場合、ユーザは、第1のタッチ操作を行う時点で既に、どのGUIオブジェクトに触れるつもりなのか、意思を固めている。よって、この場合、取り消し操作から第2のタッチ操作までの時間は短いと想定される。
逆の観点から言えば、取り消し操作から第2のタッチ操作までの時間が長い場合は、「ユーザが第1のタッチ操作のやり直しのために第2のタッチ操作を行った」という蓋然性は低い。つまり、取り消し操作から第2のタッチ操作までの時間が長い場合は、「ユーザは、第1のタッチ操作と第2のタッチ操作を、別々の意図を持って行った」という蓋然性が高い。よって、取り消し操作から第2のタッチ操作までの時間が長い場合に補正DB14を更新することは、不適切である。そのため、ステップS204で設定されたタイマがタイムアウトした場合には、監視処理はステップS205からステップS201へと戻る。
なお、補正管理部15は、ステップS204においてタイマに設定した時間の間、対象ウェブページ用のプロセスをスリープさせてもよい。タイムアウトによってプロセスが起床した場合、監視処理はステップS205からステップS201へ戻る。逆に、タイムアウトの前に、操作検出部16からの通知に応じてプロセスが起こされた場合、監視処理はステップS205からステップS206へ進む。
さて、補正管理部15は、対象ウェブページ内のいずれかのGUIオブジェクト上での第2のタッチ操作が検出されたことを、操作検出部16からの通知に基づいて認識すると、ステップS206で以下のように動作する。なお、ステップS206〜S207のさらなる詳細については、ステップS202〜S203と類似なので説明を省略する。
ステップS206で、補正管理部15は、次のウェブページの監視を開始する。なおここで「次のウェブページ」とは、第2のタッチ操作に応じてアプリケーション12が新たにウィンドウ内に表示したウェブページのことである。したがって、ステップS206の時点でウィンドウに表示されているウェブページは、「次のウェブページ」であり、「対象ウェブページ」ではない。
例えば、図2の例E1において、対象ウェブページがウェブページP1だとする。また、ステップS11に示す取り消し操作から所定の時間以内に、第2のタッチ操作が行われ、第2のタッチ操作に応じてステップS12のジャンプが実行されたとする。この場合、ステップS206での「次のウェブページ」はウェブページP3である。
また、補正管理部15は、ステップS206で、対象ウェブページに関するタイマを設定する。ステップS206でタイマに設定される時間は、ステップS202および/またはS204で設定される時間と同じでもよいし、異なっていてもよい。タイマに設定される時間の長さは、定数でもよいし、動的に学習される値であってもよいし、ユーザによって指定される値であってもよい。以下では説明の便宜上、タイマには所定の時間が設定されるものとする。補正管理部15は、タイマに設定した時間の間、対象ウェブページ用のプロセスをスリープさせてもよい。
続いて、ステップS207で補正管理部15は、所定時間以内に取り消し操作が行われたか否かを判断する。ここでの「所定時間」とは、ステップS206でタイマに設定された時間である。つまり、補正管理部15は、第2のタッチ操作が行われてから所定時間以内に、第2のタッチ操作を取り消すための取り消し操作が行われたか否かを判断する。
対象ウェブページ上で第2のタッチ操作が行われてから所定時間以内に、次のウェブページ上で取り消し操作が行われた場合、対象ウェブページに関する監視処理は、ステップS207からステップS201へ戻る。監視処理がステップS201に戻った時点では、対象ウェブページが再度アプリケーション12のウィンドウ内に表示されている。
逆に、対象ウェブページ上で第2のタッチ操作が行われてから所定時間が経過しても取り消し操作が行われなかった場合(すなわち、タイムアウトが生じた場合)、補正管理部15はステップS208の補正DB更新処理を行う。つまり、補正管理部15は、短い期間内に「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスが行われたことを確認すると、補正DB更新処理を行う。
補正DB更新処理の詳細は図8〜10とともに後述する。ステップS208の補正DB更新処理が終了すると、対象ウェブページに関する図7の監視処理も終了する。なお、第2のタッチ操作に応じて表示されたウェブページ(つまり、ステップS206に関して説明した「次のウェブページ」)に関する監視処理の実行は、継続される。
例えば、図2の例E1において、対象ウェブページがウェブページP1であるものとし、ステップS12のジャンプから所定時間以内には取り消し操作が行われなかったものとする。この場合、補正管理部15はステップS208の補正DB更新処理を行う。
具体的には、補正管理部15は、以下の4つの領域の情報を使って、図8のフローチャートにしたがって補正DB更新処理を行う。第1と第2のタッチ操作の検出に関して説明したように、補正管理部15は、以下の4つの領域を示す情報を、例えばメモリ23上に記憶している。
・第1のタッチ操作に応じて図6のステップS101で検出され、ステップS103で位置が補正された、接触領域C1。
・第1のタッチ操作に応じて操作検出部16が特定した、オブジェクト領域G1。
・第2のタッチ操作に応じて図6のステップS101で検出され、ステップS103で位置が補正された、接触領域C2。
・第2のタッチ操作に応じて操作検出部16が特定した、オブジェクト領域G2。
なお、各領域を示す情報は、具体的には、例えば、領域の中心点のXY座標と、領域の幅と、領域の高さの組み合わせであってもよい。あるいは、各領域を示す情報は、例えば、領域の左上端の点のXY座標と、領域の右下端の点のXY座標の組み合わせであってもよい。
また、アプリケーション12がウェブブラウザ以外である場合にも、補正管理部15は、図7を適宜変形したフローチャートにしたがって、「第1のタッチ操作、取り消し操作、第2のタッチ操作」という操作シーケンスを監視することができる。
図8は、補正DB更新処理のフローチャートである。図8に関する説明においては、適宜、図9と図10も参照する。図9は、座標系を説明するとともに、2つのGUIオブジェクトの配置に関する複数の例を説明する図である。図10は、第1のタッチ操作に対してどの方向で第2のタッチ操作が行われたかを示す角度θについて説明する図である。
以下では、第1のタッチ操作に対応する接触領域とオブジェクト領域を、それぞれ「第1の接触領域」と「第1のオブジェクト領域」という。また、第2のタッチ操作に対応する接触領域とオブジェクト領域を、それぞれ「第2の接触領域」と「第2のオブジェクト領域」という。
説明の便宜上、第1の接触領域と第2の接触領域は、それぞれ条件(7)と(8)により表される領域であるものとする。図9の例E3は、第1の接触領域の4隅のXY座標と、X軸と、Y軸を示す。条件(7)と(8)の中の「Xt0」等の値は、現在の補正DB14内の情報に基づいて補正管理部15が補正を行うことにより得られた値であることに注意されたい。
t0≦X≦Xt1
かつ Yt0≦Y≦Yt1 (7)
u0≦X≦Xu1
かつ Yu0≦Y≦Yu1 (8)
また、説明の便宜上、第1のオブジェクト領域と第2のオブジェクト領域は、それぞれ条件(9)と(10)により表される領域であるものとする。
10≦X≦X11
かつ Y10≦Y≦Y11 (9)
20≦X≦X21
かつ Y20≦Y≦Y21 (10)
さて、図7に示したように、補正管理部15は、「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスを検出すると、図8の補正DB更新処理を開始する。補正DB更新処理では、補正管理部15は、補正値ΔXを更新するか否か、および、補正値ΔYを更新するか否かを決定し、決定したとおりに動作する。
まず、ステップS301で補正管理部15は、第1と第2の接触領域が互いに近いか否かを判断する。例えば、補正管理部15は、以下のように第1と第2の接触領域の重なりに基づいて判断を下してもよい。
・第1の接触領域の少なくとも一部と、第2の接触領域の少なくとも一部が重なっているとき(つまり、条件(11)が成り立つとき)、第1と第2の接触領域は互いに近い。
t0≦Xu1 かつ Xt1≧Xu0 かつ
t0≦Yu1 かつ Yt1≧Yu0 (11)
・第1と第2の接触領域がまったく重なっていないとき(つまり、条件(11)が成り立たず、条件(11)の対偶である条件(12)が成り立つとき)、第1と第2の接触領域は遠く離れている。
t0>Xu1 または Xt1<Xu0 または
t0>Yu1 または Yt1<Yu0 (12)
例えば、図2の例E1では、接触領域C1とC2が部分的に重なっている。よって、補正管理部15は、「接触領域C1とC2が互いに近い」と判断する。逆に、例E2では、接触領域C3とC4はまったく重なっていない。よって、補正管理部15は、「接触領域C3とC4は遠く離れている」と判断する。
あるいは、ステップS301で補正管理部15は、第1と第2の接触領域自体の重なりではなく、拡大された第1と第2の接触領域同士の重なりに基づいて判断を下してもよい。
例えば、X方向のマージンを定める適宜の正の値をwとし、Y方向のマージンを定める適宜の正の値をhとする。第1の接触領域の周囲に幅w・高さhで設定される第1のマージン領域と、第1の接触領域自体との和(union)が、拡大された第1の接触領域である。同様に、第2の接触領域の周囲に幅w・高さhで設定される第2のマージン領域と、第2の接触領域自体との和が、拡大された第2の接触領域である。
補正管理部15は、拡大された第1と第2の接触領域同士の重なりに基づいて、具体的には以下のように判断を下してもよい。
・拡大された第1の接触領域の少なくとも一部と、拡大された第2の接触領域の少なくとも一部が重なっているとき(つまり、条件(13)が成り立つとき)、第1と第2の接触領域は互いに近い。
t0−w≦Xu1+w かつ
t1+w≧Xu0−w かつ
t0−h≦Yu1+h かつ
t1+h≧Yu0−h (13)
・拡大された第1と第2の接触領域がまったく重なっていないとき(つまり、条件(13)が成り立たないとき)、第1と第2の接触領域は遠く離れている。
なお、上記の値wとhは、定数であってもよいし、第1の接触領域と第2の接触領域の一方または双方の大きさに基づく値であってもよい。例えば、第1と第2の接触領域の幅の平均値と、1未満の所定の値(例えば0.1など)との積が、X方向のマージンを定める値wとして使われてもよい。値hも、類似の方法で定義されてよい。
あるいは、ステップS301で補正管理部15は、第1の接触領域を代表する点と、第2の接触領域を代表する点との間の距離に基づいて、判断を下してもよい。第1の接触領域を代表する点は、例えば、第1の接触領域の重心(centroid)であってもよい。同様に、第2の接触領域を代表する点は、第2の接触領域の重心であってもよい。つまり、補正管理部15は、閾値Dを用いて、以下のように判断を下してもよい。
・第1の接触領域の重心と第2の接触領域の重心との間の距離が、閾値D以下であるとき(つまり、条件(14)が成り立つとき)、第1と第2の接触領域は互いに近い。
Figure 0006028861
・第1の接触領域の重心と第2の接触領域の重心との間の距離が、閾値Dを超えるとき(つまり、条件(14)が成り立たないとき)、第1と第2の接触領域は遠く離れている。
閾値Dは、具体的には、第1と第2の接触領域の一方または双方の大きさ(例えば、幅、高さ、面積、またはこれらの2つ以上の組み合わせ)に基づく値である。
あるいは、ステップS301で補正管理部15は、第1と第2の接触領域の重なりの面積など、その他の基準に基づいて判断を下してもよい。いずれにせよ、ステップS301で補正管理部15は、第1と第2の接触領域が所定の基準に照らして近くにあるか否かを判断する。
そして、第1と第2の接触領域が所定の基準に照らして遠くに離れているとき、補正管理部15は、補正値ΔXも補正値ΔYも更新せずに、図8の補正DB更新処理を終える。例えば、図2の例E2では、接触領域C3とC4が遠くに離れているので、補正管理部15は、補正値ΔXも補正値ΔYも更新しない。
逆に、第1と第2の接触領域が所定の基準に照らして近くにあるとき、補正管理部15は、補正値ΔXを更新するか否かということを、第1のタッチ操作に対する第2のタッチ操作の方向と、第2のオブジェクト領域の大きさ(例えば幅)に基づいて決める。また、第1と第2の接触領域が所定の基準に照らして近くにあるとき、補正管理部15は、補正値ΔYを更新するか否かということを、第1のタッチ操作に対する第2のタッチ操作の方向と、第2のオブジェクト領域の大きさ(例えば高さ)に基づいて決める。
具体的には、補正管理部15は、ステップS301で「第1と第2の接触領域が互いに近い」と判断すると、ステップS302で、第1のタッチ操作に対する第2のタッチ操作の方向を示す角度を算出する。当該方向の具体的な定義は、実施形態に応じて様々であってよい。当該方向は、図10では角度θにより表される。角度θは、「どの方向にそってタッチ操作がやり直されたのか」を示す角度の一例である。
ここで、図10を参照して角度θについて説明する。角度θは、X軸を基準として、−90°から90°までの範囲で表される角度である。
図10には、角度θの絶対値|θ|が0°に近い例E11と、絶対値|θ|が中くらいの例E12と、絶対値|θ|が90°に近い例E13が示されている。なお、「絶対値|θ|が0°に近いか、中くらいか、それとも90°に近いか」ということは、0°より大きく90°より小さい適宜の2つの閾値により、定義される。例えば、2つの閾値が20°と70°の場合の定義を以下に例示する。
・0°≦|θ|<20°ならば、絶対値|θ|が0°に近い(すなわち、角度θは、X方向に近い方向を示す)。
・20°≦|θ|≦70°ならば、絶対値|θ|が中くらいである(すなわち、角度θは、X方向にもY方向にも近くない、斜めの方向を示す)。
・70°<|θ|≦90°ならば、絶対値|θ|が90°に近い(すなわち、角度θは、Y方向に近い方向を示す)。
2つの閾値は、実施形態に応じて適宜選ばれてよいが、2つの閾値の和は90°である。また、上記の例では絶対値|θ|は3つに分類されているが、実施形態によっては、絶対値|θ|は2つに分類されてもよい。例えば、以下のような定義が採用されてもよい。以下の定義が採用される場合は、後述のステップS308とS309が図8のフローチャートから削除される。
・0°≦|θ|<45°ならば、絶対値|θ|が0°に近い(すなわち、角度θは、X方向に近い方向を示す)。
・45°≦|θ|≦90°ならば、絶対値|θ|が90°に近い(すなわち、角度θは、Y方向に近い方向を示す)。
以下では説明の便宜上、第1のオブジェクト領域と第1の接触領域が重なる領域を「第1の重なり領域」という。また、第2のオブジェクト領域と第2の接触領域が重なる領域を「第2の重なり領域」という。
角度θは、第1の重なり領域を代表する点と、第2の重なり領域を代表する点とを結ぶ直線が、水平方向(つまりX方向)となす角度である。例えば、第1の重なり領域を代表する点は、第1の重なり領域の重心であってもよく、第2の重なり領域を代表する点は、第2の重なり領域の重心であってもよい。
例E11には、第1と第2のオブジェクト領域G51とG52が、2つの白い矩形により示されている。また、第1と第2の接触領域C51とC52が、2つの網点パターンの矩形により示されている。そして、第1のオブジェクト領域G51と第1の接触領域C51が重なる領域である、第1の重なり領域O1が、斜線パターンの矩形により示されている。同様に、第2のオブジェクト領域G52と第2の接触領域C52が重なる領域である、第2の重なり領域O2も、斜線パターンの矩形により示されている。
例E11における角度θは、第1の重なり領域O1の重心と第2の重なり領域O2の重心を結ぶ直線D1が、X軸となす角である。
補正管理部15は、第1のオブジェクト領域G51の4隅の点のXY座標と、第1の接触領域C51の4隅の点のXY座標から、第1の重なり領域O1の重心のXY座標を算出することができる。補正管理部15は、第2のオブジェクト領域G52の4隅の点のXY座標と、第2の接触領域C52の4隅の点のXY座標から、第2の重なり領域O2の重心のXY座標を算出することができる。
よって、補正管理部15は、第1の重なり領域O1の重心のXY座標と、第2の重なり領域O2の重心のXY座標から、逆三角関数を用いて角度θを算出することができる。例E11の角度θは、X方向に近い方向を示している。
また、例E12には、第1と第2のオブジェクト領域G53とG54、第1と第2の接触領域C53とC54、第1と第2の重なり領域O3とO4が示されている。例E12における角度θは、第1の重なり領域O3の重心と第2の重なり領域O4の重心を結ぶ直線D3が、X軸となす角である。
例E12においても、補正管理部15は、例E11と同様の方法により、角度θを算出することができる。例E12の角度θは、中くらいの角度である。つまり、角度θは、X方向にも近くなく、Y方向にも近くないような、斜めの方向を示している。
また、例E13には、第1と第2のオブジェクト領域G55とG56、第1と第2の接触領域C55とC56、第1と第2の重なり領域O5とO6が示されている。例E13における角度θは、第1の重なり領域O5の重心と第2の重なり領域O6の重心を結ぶ直線D5が、X軸となす角である。
例E13においても、補正管理部15は、例E11と同様の方法により、角度θを算出することができる。例E13の角度θは、Y方向に近い方向を示している。
以上のように、第1のタッチ操作に対する第2のタッチ操作の方向は、本実施形態では、第1と第2の重なり領域に基づいて判断される。換言すれば、第1のタッチ操作に対する第2のタッチ操作の方向は、単に第1と第2の接触領域だけに基づいて判断されるのではなく、第1と第2のオブジェクト領域にも基づいて判断される。第1のタッチ操作に対する第2のタッチ操作の方向を、第1と第2の重なり領域同士の幾何学的関係(具体的には位置関係)に基づいて判断することには、以下のような利点がある。
第1のタッチ操作においてユーザが触れようと意図していたGUIオブジェクトの近くに配置されている別のGUIオブジェクトが、第1のタッチ操作の対象として特定される場合がある。この場合、ユーザは、取り消し操作と第2のタッチ操作を行うであろう。
この場合、ある観点から見れば、第1の重なり領域は、「ユーザの狙いがどのようにはずれてしまったのか」を反映している。また、この場合、ある観点から見れば、第2の重なり領域は、「ユーザの本来の意図がどのようにして正しく解釈されたのか」を反映している。
よって、補正管理部15は、単に第1と第2の接触領域だけに基づく角度を算出するのではなく、第1と第2の重なり領域に基づいて角度θを算出することで、より精密に、第1のタッチ操作に対する第2のタッチ操作の方向を認識することができる。しかし、実施形態によっては、補正管理部15は、角度θの代わりに、例えば、第1の接触領域の重心と第2の接触領域の重心を結ぶ直線がX軸となす角を用いてもよい。
ここで、図8の説明に戻る。補正管理部15は、ステップS302で角度θを算出した後、ステップS303で、「角度θが示す方向が、水平に近いか、垂直に近いか、それとも水平にも垂直にも近くない斜めの方向なのか」を判断する。例えば、図10に関して例示したように、2つの閾値が20°と70°である場合、補正管理部15は、以下のように動作する。
0°≦|θ|<20°ならば、補正管理部15は、「角度θが示す方向は水平に近い」と判断し、次にステップS304を実行する。70°<|θ|≦90°ならば、補正管理部15は、「角度θが示す方向は垂直に近い」と判断し、次にステップS306を実行する。20°≦|θ|≦70°ならば、補正管理部15は、「角度θが示す方向は斜めの方向である」と判断し、次にステップS308を実行する。
ステップS304、S306、S308のいずれにおいても、補正管理部15は、第2のオブジェクト領域の大きさに基づいて、補正DB14を更新するか否かを決定する。ここで、なぜ第2のオブジェクト領域の大きさに基づく決定が好ましいのかを説明するために、図9の例E4〜E10を参照する。例E4〜E6は、補正DB14を更新することが好ましい場合の例であり、例E7〜E10は、補正DB14を更新することが好ましくない場合の例である。
例E4には、第1のオブジェクト領域G31と、第2のオブジェクト領域G32と、第1の接触領域C31が示されている。第2の接触領域は省略されている。
例E5には、第1のオブジェクト領域G33と、第2のオブジェクト領域G34と、第1の接触領域C33が示されている。第2の接触領域は省略されている。
例E6には、第1のオブジェクト領域G35と、第2のオブジェクト領域G36と、第1の接触領域C35と、第2の接触領域C36が示されている。
例E7には、第1のオブジェクト領域G37と、第2のオブジェクト領域G38と、第1の接触領域C37と、第2の接触領域C38が示されている。
例E8には、第1のオブジェクト領域G39と、第2のオブジェクト領域G40と、第1の接触領域C39が示されている。第2の接触領域は省略されている。
例E9には、第1のオブジェクト領域G41と、第2のオブジェクト領域G42と、第1の接触領域C41が示されている。第2の接触領域は省略されている。
例E10には、第1のオブジェクト領域G43と、第2のオブジェクト領域G44と、第1の接触領域C43が示されている。第2の接触領域は省略されている。
例E4とE8は、第1のオブジェクト領域に対して水平方向に第2のオブジェクト領域がある、という点において類似である。しかし、例E4とE8は、ユーザの指が触れる領域を基準にした相対的な第2のオブジェクト領域の大きさという点で異なる。
具体的には、例E4では、ユーザの指が触れる領域の幅(例えば第1の接触領域C31の幅)よりも、第2のオブジェクト領域G32の幅の方が狭い。それに対し、例E8では、ユーザの指が触れる領域の幅(例えば第1の接触領域C39の幅)よりも、第2のオブジェクト領域G40の幅の方が広い。つまり、オブジェクト領域G40は、ユーザの指を基準にすると、水平方向に十分に大きい。
よって、ユーザは、もともとオブジェクト領域G40に触れようと意図しているならば、オブジェクト領域G40と重なり、かつ、オブジェクト領域G39とは重ならないような領域に、容易に触れることができる。換言すれば、ユーザがもともとオブジェクト領域G40に触れようと意図していた場合に、接触領域C39のような紛らわしい領域にユーザが触れてしまう蓋然性は低い。したがって、仮に「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスが検出され、かつ、第1の接触領域C39と不図示の第2の接触領域が互いに近くにあるとしても、例E8では、補正DB14を更新することは望ましくない。
逆に、例E4では、ユーザの指を基準にすると、オブジェクト領域G32は、水平方向に小さい。よって、例E4では、たとえユーザがオブジェクト領域G32に触れようと意図している場合でも、接触領域は、オブジェクト領域G32をはみ出てしまう。その結果、接触領域C31のような紛らわしい領域(つまり、ユーザが触ろうと意図していないオブジェクト領域G31と部分的に重なっている領域)にユーザが触れてしまう蓋然性が、十分にある。したがって、「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスが検出され、かつ、第1の接触領域C31と不図示の第2の接触領域が互いに近くにあるならば、例E4では、補正DB14を更新することが望ましい。
さて、例E5とE9は、第1のオブジェクト領域に対して垂直方向に第2のオブジェクト領域がある、という点において類似である。しかし、例E5とE9は、ユーザの指が触れる領域を基準にした相対的な第2のオブジェクト領域の大きさという点で異なる。
具体的には、例E5では、ユーザの指が触れる領域の高さ(例えば第1の接触領域C33の高さ)よりも、第2のオブジェクト領域G34の高さが低い。それに対し、例E9では、ユーザの指が触れる領域の高さ(例えば第1の接触領域C41の高さ)よりも、第2のオブジェクト領域G42の高さの方が高い。つまり、オブジェクト領域G42は、ユーザの指を基準にすると、垂直方向に十分に大きい。
よって、ユーザは、もともとオブジェクト領域G42に触れようと意図しているならば、オブジェクト領域G42と重なり、かつ、オブジェクト領域G41とは重ならないような領域に、容易に触れることができる。換言すれば、ユーザがもともとオブジェクト領域G42に触れようと意図していた場合に、接触領域C41のような紛らわしい領域にユーザが触れてしまう蓋然性は低い。したがって、仮に「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスが検出され、かつ、第1の接触領域C41と不図示の第2の接触領域が互いに近くにあるとしても、例E9では、補正DB14を更新することは望ましくない。
逆に、例E5では、ユーザの指を基準にすると、オブジェクト領域G34は、垂直方向に小さい。よって、例E5では、たとえユーザがオブジェクト領域G34に触れようと意図している場合でも、接触領域は、オブジェクト領域G34をはみ出てしまう。その結果、接触領域33のような紛らわしい領域(つまり、ユーザが触ろうと意図していないオブジェクト領域G33と部分的に重なっている領域)にユーザが触れてしまう蓋然性が、十分にある。したがって、「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスが検出され、かつ、第1の接触領域C33と不図示の第2の接触領域が互いに近くにあるならば、例E5では、補正DB14を更新することが望ましい。
さて、例E6とE7とE10は、第1のオブジェクト領域に対して斜めの方向に第2のオブジェクト領域がある、という点において類似である。また、例E6とE7は、ユーザの指が触れる領域を基準にすると、第2のオブジェクト領域の大きさが相対的に小さい、という点においても類似である。他方、例E10は、ユーザの指が触れる領域を基準にすると、第2のオブジェクト領域の大きさが相対的に大きい、という点において、例E6およびE7とは異なる。
具体的には、例E6では、ユーザの指が触れる領域の幅(例えば接触領域C35とC36のいずれか一方の幅、または、両者の幅の平均値)よりも、第2のオブジェクト領域G36の幅が狭い。また、例E6では、ユーザの指が触れる領域の高さ(例えば接触領域C35とC36のいずれか一方の高さ、または、両者の高さの平均値)よりも、第2のオブジェクト領域G36の高さが低い。同様に、例E7でも、ユーザの指が触れる領域よりも、第2のオブジェクト領域G38の方が、幅が狭く、高さが低い。
それに対し、例E10では、ユーザの指が触れる領域の幅(例えば接触領域C43の幅)よりも、第2のオブジェクト領域G44の幅の方が広い。また、例E10では、ユーザの指が触れる領域の高さ(例えば接触領域C43の高さ)よりも、第2のオブジェクト領域G44の高さの方が高い。つまり、オブジェクト領域G44は、ユーザの指を基準にすると、水平方向にも垂直方向にも十分に大きい。
よって、ユーザは、もともとオブジェクト領域G44に触れようと意図しているならば、オブジェクト領域G44と重なり、かつ、オブジェクト領域G43とは重ならないような領域に、容易に触れることができる。換言すれば、ユーザがもともとオブジェクト領域G44に触れようと意図していた場合に、接触領域C43のような紛らわしい領域にユーザが触れてしまう蓋然性は低い。したがって、仮に「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスが検出され、かつ、第1の接触領域C43と不図示の第2の接触領域が互いに近くにあるとしても、例E10では、補正DB14を更新することは望ましくない。
逆に、例E6では、ユーザの指を基準にすると、オブジェクト領域G36は、水平方向にも垂直方向にも小さい。よって、例E6では、たとえユーザがオブジェクト領域G36に触れようと意図している場合でも、接触領域は、オブジェクト領域G36をはみ出てしまう。その結果、接触領域C35のような紛らわしい領域(つまり、ユーザが触ろうと意図していないオブジェクト領域G35と部分的に重なっている領域)にユーザが触れてしまう蓋然性が、十分にある。また、例E6では、第1と第2の接触領域C35とC36が互いに近くにある。したがって、「第1のタッチ操作、取り消し操作、第2のタッチ操作」という特定の操作シーケンスが検出された場合、例E6では、補正DB14を更新することが望ましい。
例E7では、ユーザの指を基準にすると、オブジェクト領域G38は、水平方向にも垂直方向にも小さい。よって、たとえユーザがオブジェクト領域G38に触れようと意図している場合でも、接触領域は、オブジェクト領域G38をはみ出てしまう。しかし、例E7のように第1と第2の接触領域C37とC38が離れている場合、「ユーザが、オブジェクト領域G38に触れようとしていたのに、第1のタッチ操作の際に第1の接触領域C37に触れてしまった」という蓋然性は低い。よって、例E7では、補正DB14を更新しないことが望ましい。そして、本実施形態では、図8のステップS301において、補正管理部15が「第1と第2の接触領域C37とC38が所定の基準より遠く離れている」と判断するので、例E7では補正DB14が更新されない。
以上の図9に関する説明から分かるように、補正DB14を更新するか否かについての判断は、第1のオブジェクト領域の大きさではなく、第2のオブジェクト領域の大きさに基づくことが好ましい。
ここで図8の説明に戻る。ステップS303の後、補正管理部15は、「取り消し操作と第2のタッチ操作が行われた理由は、第1のタッチ操作でユーザが触れようと意図していなかったGUIオブジェクトが第1のタッチ操作の対象として特定されたことなのか否か」を推測する。そして、推測の結果に応じて、補正管理部15は、補正DB14を更新するか否かを決める。図9の例E4〜E10から分かるように、この推測には、第2のオブジェクト領域の大きさを使うことが有益である。
具体的には、ステップS304で補正管理部15は、接触領域の幅を基準として、第2のオブジェクト領域の幅が狭いか否か(つまり2回目に触れられたGUIオブジェクトの幅が狭いか否か)を判断する。
例えば、条件(15)が成り立つとき、補正管理部15は、「第2のオブジェクト領域の幅が狭い」と判断してもよい。つまり、条件(15)が成り立たないとき、補正管理部15は、「第2のオブジェクト領域の幅が広い」と判断してもよい。条件(15)は、「第2のオブジェクト領域の幅が、第1の接触領域の幅以下であり、かつ、第2の接触領域の幅以下である」という条件である。
t1−Xt0≧X21−X20 かつ
u1−Xu0≧X21−X20 (15)
あるいは、条件(15)の代わりに、条件(16)〜(19)のいずれかが使われてもよい。第1と第2の接触領域の幅はほぼ同じであると想定されるので、条件(16)〜(19)も、条件(15)とほぼ同程度に妥当である。
u1−Xu0≧X21−X20 (16)
{(Xt1−Xt0)+(Xu1−Xu0)}/2
≧X21−X20 (17)
t1−Xt0≧X21−X20 (18)
t1−Xt0≧X21−X20 または
u1−Xu0≧X21−X20 (19)
ステップS304が実行されるのは、角度θが示す方向が水平方向(つまりX方向)に近い場合である。そして、角度θが示す方向がX方向に近い場合とは、換言すれば、X方向に近い方向での誤操作が検出された場合である。
図9の例E4とE8から理解されるように、第2のオブジェクト領域の幅が広い場合には(例えば例E8では)、「X方向に近い方向での誤操作が行われた」という蓋然性は低い。つまり、第2のオブジェクト領域の幅が広い場合には、「ユーザは、第1と第2のタッチ操作を、異なる意図のもとに行った」と推定される。
よって、第2のオブジェクト領域の幅が広い場合は、補正DB14を更新することは望ましくない。したがって、補正管理部15は、ステップS304で「第2のオブジェクト領域の幅が広い」と判断した場合には、補正DB14を更新せずに、図8の補正DB更新処理を終える。
逆に、第2のオブジェクト領域の幅が狭い場合には(例えば例E4では)、「X方向に近い方向での誤操作が行われた」という蓋然性が高い。つまり、第2のオブジェクト領域の幅が狭い場合には、「ユーザは、第1と第2のタッチ操作を、同じ意図のもとに行った」と推定される。
よって、第2のオブジェクト領域の幅が狭い場合は、X方向(つまり、誤操作が行われた方向に近い方向)に関する補正値ΔXを更新することが望ましい。したがって、補正管理部15は、ステップS304で「第2のオブジェクト領域の幅が狭い」と判断した場合には、ステップS305で補正値ΔXを更新する。
しかし、ステップS305で補正管理部15は、補正値ΔYは更新しない。なぜなら、Y方向は、誤操作の方向(つまり角度θにより示される方向)とは遠いからである。換言すれば、ステップS305では、「現在の補正値ΔYが不適切だ」と推定するに足る十分な証拠がないので、補正管理部15は、補正値ΔYを更新しない。
ステップS305での補正値ΔXの更新の具体的方法には、2つの観点から種々のバリエーションがある。1つ目の観点は、補正DB14のデータ形式であり、2つ目の観点は、重みづけである。
図5に例示したように、補正DB14のデータ形式は様々である。補正DB14aが使われる場合、補正値ΔXは1つだけなので、補正管理部15はこの補正値ΔXを更新する。しかし、補正DB14b〜14eのように、補正DB14が複数の補正条件に対応する複数のエントリを含む場合もある。この場合、補正管理部15は、複数の補正条件のうち、第1のタッチ操作の際に満たされていた条件に対応する補正値ΔXを更新する。
図6と図7に関して説明したとおり、メモリ23には、第1のタッチ操作に応じて位置検出部13により検出された領域の位置を直接的または間接的に示す情報が、第1のオブジェクト領域を示す情報とともに記憶されている。よって、補正管理部15は、第1のタッチ操作に応じて位置検出部13により検出された領域の位置のXY座標を、第1の接触領域に関してメモリ23に記憶している情報を用いて、認識することができる。
つまり、補正管理部15は、メモリ23に記憶している情報を用いることにより、式(20)と(21)により表されるXY座標(Xt,Yt)を認識することができる。
Xt=(Xt0+Xt1)/2−ΔX (20)
Yt=(Yt0+Yt1)/2−ΔY (21)
式(20)中の補正値ΔXは、第1のタッチ操作が行われたときに補正管理部15が使った補正値であり、補正管理部15がこれから更新しようとする補正値でもある。また、式(21)中の補正値ΔYは、第1のタッチ操作が行われたときに補正管理部15が使った補正値である。しかし、上述のとおり、ステップS305では、補正値ΔYは更新されない。
例えば、補正DB14bまたは14eが使われる場合、補正管理部15は、以上のようにして認識したXY座標(Xt,Yt)が属するブロックに対応するエントリの補正値ΔXを更新する。
補正DB14cが使われる場合、補正管理部15は、以上のようにして認識したXY座標(Xt,Yt)を用いて、操作検出部16に問い合わせを行う。そして、補正管理部15は、認識したXY座標(Xt,Yt)と問い合わせの結果との組み合わせに対応するエントリの補正値ΔXを更新する。
補正DB14dが使われる場合、補正管理部15は、第1のタッチ操作が行われたアプリケーション12に対応するエントリの補正値ΔXを更新する。
なお、補正管理部15は、第2のタッチ操作に応じて位置検出部13により検出された領域の位置のXY座標も、第2の接触領域に関してメモリ23に記憶している情報を用いて、認識することができる。つまり、補正管理部15は、式(22)と(23)のXY座標(Xu,Yu)を認識することもできる。式(22)と(23)の中の補正値ΔXとΔYは、第2のタッチ操作が行われたときに補正管理部15が使った補正値である。
Xu=(Xu0+Xu1)/2−ΔX (22)
Yu=(Yu0+Yu1)/2−ΔY (23)
次に、上記の2つ目の観点について説明する。
X方向における第2の接触領域の位置と、X方向における第1の接触領域の位置との差dXは、式(24)のとおりである。差dXは、式(25)のように算出されてもよい。
dX=Xu−Xt (24)
dX=(Xu0+Xu1)/2−(Xt0+Xt1)/2 (25)
補正DB14b、14c、14eのように、位置的条件に応じて補正値ΔXとΔYが定義されている場合、式(20)と(22)の補正値ΔXは同じとは限らない。同様に、式(21)と(23)の補正値ΔYは同じとは限らない。
よって、場合によっては、式(25)により算出される差dXは、式(24)の差dXと完全には一致しない。つまり、場合によっては、式(25)により算出される差dXは、式(24)の差dXの近似値である。しかし、第1と第2の接触領域は互いに近いので、式(25)により式(24)は良く近似される。よって、補正管理部15は、式(24)にしたがって差dXを算出してもよいし、式(25)にしたがって差dXを算出してもよい。
補正管理部15は、具体的には、式(26)のように補正値ΔXを更新してもよい。式(26)において、右辺の「ΔX」は現在の補正値ΔXを示し、左辺の「ΔX」は更新後の新たな補正値ΔXを示す。
ΔX=ΔX+dX (26)
補正管理部15は、正の係数αを用いて、式(27)にしたがって補正値ΔXを更新してもよい。式(27)において、右辺の「ΔX」は現在の補正値ΔXを示し、左辺の「ΔX」は更新後の新たな補正値ΔXを示す。
ΔX=ΔX+α・dX (27)
係数αは定数でもよい。係数αは、差dXに依存する値でもよい。例えば、差dXに対して単調減少する係数αが使われてもよい。補正DB14eのようにカウンタを含む補正DB14が使われる場合、係数αは、カウンタの値に依存する値(例えば、カウンタの値に対して単調減少する値)でもよい。
なお、図5に関して説明したように、補正値ΔX用の第1のカウンタと、補正値ΔY用の第2のカウンタがあってもよい。その場合、係数αは、第1のカウンタの値に依存する値であってもよい。
カウンタを含む補正DB14が使われる場合、補正管理部15は、ステップS305で、更新対象の補正値ΔXを含むエントリのカウンタの値を1だけインクリメントする。カウンタの初期値は0である。
係数αが1の場合は式(26)に対応する。係数αが1未満の場合は、補正値ΔXは、漸次、最適値に近づいてゆくと期待される。逆に、係数αが1より大きい場合は、補正値ΔXは、振動しながら、最適値に収束してゆくと期待される。
以上のように、ステップS305での補正値ΔXの更新の具体的方法は、様々であってよい。また、式(26)と(27)以外の式にしたがって補正管理部15が補正値ΔXを更新してもよい。
いずれにせよ、補正管理部15は、補正値ΔXをどれくらい更新するかを、第2の接触領域のX方向の位置に基づいて決定する。ステップS305での補正値ΔXの更新後、補正管理部15は図8の補正DB更新処理を終える。
さて、ステップS306で補正管理部15は、接触領域の高さを基準として、第2のオブジェクト領域の高さが低いか否か(つまり2回目に触れられたGUIオブジェクトの高さが低いか否か)を判断する。
例えば、条件(28)が成り立つとき、補正管理部15は、「第2のオブジェクト領域の高さが低い」と判断してもよい。つまり、条件(28)が成り立たないとき、補正管理部15は、「第2のオブジェクト領域の高さが高い」と判断してもよい。条件(28)は、「第2のオブジェクト領域の高さが、第1の接触領域の高さ以下であり、かつ、第2の接触領域の高さ以下である」という条件である。
t1−Yt0≧Y21−Y20 かつ
u1−Yu0≧Y21−Y20 (28)
あるいは、条件(28)の代わりに、条件(29)〜(32)のいずれかが使われてもよい。第1と第2の接触領域の高さはほぼ同じであると想定されるので、条件(29)〜(32)も、条件(28)とほぼ同程度に妥当である。
u1−Yu0≧Y21−Y20 (29)
{(Yt1−Yt0)+(Yu1−Yu0)}/2
≧Y21−Y20 (30)
t1−Yt0≧Y21−Y20 (31)
t1−Yt0≧Y21−Y20 または
u1−Yu0≧Y21−Y20 (32)
ステップS306が実行されるのは、角度θが示す方向が垂直方向(つまりY方向)に近い場合である。そして、角度θが示す方向がY方向に近い場合とは、換言すれば、Y方向に近い方向での誤操作が検出された場合である。
図9の例E5とE9から理解されるように、第2のオブジェクト領域の高さが高い場合には(例えば例E9では)、「Y方向に近い方向での誤操作が行われた」という蓋然性は低い。つまり、第2のオブジェクト領域の高さが高い場合には、「ユーザは、第1と第2のタッチ操作を、異なる意図のもとに行った」と推定される。
よって、第2のオブジェクト領域の高さが高い場合は、補正DB14を更新することは望ましくない。したがって、補正管理部15は、ステップS306で「第2のオブジェクト領域の高さが高い」と判断した場合には、補正DB14を更新せずに、図8の補正DB更新処理を終える。
逆に、第2のオブジェクト領域の高さが低い場合には(例えば例E5では)、「Y方向に近い方向での誤操作が行われた」という蓋然性が高い。つまり、第2のオブジェクト領域の高さが低い場合には、「ユーザは、第1と第2のタッチ操作を、同じ意図のもとに行った」と推定される。
よって、第2のオブジェクト領域の高さが低い場合は、Y方向(つまり、誤操作が行われた方向に近い方向)に関する補正値ΔYを更新することが望ましい。したがって、補正管理部15は、ステップS306で「第2のオブジェクト領域の高さが低い」と判断した場合には、ステップS307で補正値ΔYを更新する。
しかし、ステップS307で補正管理部15は、補正値ΔXは更新しない。なぜなら、X方向は、誤操作の方向(つまり角度θにより示される方向)とは遠いからである。換言すれば、ステップS307では、「現在の補正値ΔXが不適切だ」と推定するに足る十分な証拠がないので、補正管理部15は、補正値ΔXを更新しない。
ステップS307での補正値ΔYの更新の具体的方法には、2つの観点から種々のバリエーションがある。1つ目の観点は、補正DB14のデータ形式であり、2つ目の観点は、重みづけである。
1つ目の観点は、ステップS305に関して説明したとおりである。補正管理部15は、補正DB14のデータ形式に応じて、適宜の方法により、更新対象の補正値ΔYを特定する。つまり、補正管理部15は、更新対象の補正値ΔYを含むエントリを特定する。
2つ目の観点について以下に説明する。
Y方向における第2の接触領域の位置と、Y方向における第1の接触領域の位置との差dYは、式(33)のとおりである。差dYは式(34)のように算出されてもよい。式(33)と(34)は、式(24)と(25)と類似しているので、詳しい説明は、省略する。
dY=Yu−Yt (33)
dY=(Yu0+Yu1)/2−(Yt0+Yt1)/2 (34)
補正管理部15は、具体的には、式(35)のように補正値ΔYを更新してもよい。式(35)において、右辺の「ΔY」は現在の補正値ΔYを示し、左辺の「ΔY」は更新後の新たな補正値ΔYを示す。
ΔY=ΔY+dY (35)
補正管理部15は、正の係数βを用いて、式(36)にしたがって補正値ΔYを更新してもよい。係数αと同様に、係数βは、1より小さくてもよいし、1より大きくてもよい。式(36)において、右辺の「ΔY」は現在の補正値ΔYを示し、左辺の「ΔY」は更新後の新たな補正値ΔYを示す。
ΔY=ΔY+β・dY (36)
係数βは定数でもよい。例えば、係数αとβが同じ定数でもよい。係数βは、差dYに依存する値でもよい。例えば、差dYに対して単調減少する係数βが使われてもよい。補正DB14eのようにカウンタを含む補正DB14が使われる場合、係数βは、カウンタの値に依存する値(例えば、カウンタの値に対して単調減少する値)でもよい。
なお、図5に関して説明したように、補正値ΔX用の第1のカウンタと、補正値ΔY用の第2のカウンタがあってもよい。その場合、係数βは、第2のカウンタの値に依存する値であってもよい。
カウンタを含む補正DB14が使われる場合、補正管理部15は、ステップS307で、更新対象の補正値ΔYを含むエントリのカウンタの値を1だけインクリメントする。カウンタの初期値は0である。
以上のように、ステップS307での補正値ΔYの更新の具体的方法は、様々であってよい。また、式(35)と(36)以外の式にしたがって補正管理部15が補正値ΔYを更新してもよい。
いずれにせよ、補正管理部15は、補正値ΔYをどれくらい更新するかを、第2の接触領域のY方向の位置に基づいて決定する。ステップS307での補正値ΔYの更新後、補正管理部15は図8の補正DB更新処理を終える。
さて、ステップS308で補正管理部15は、接触領域の幅と高さを基準として、第2のオブジェクト領域が幅においても高さにおいても小さいのか否か(つまり2回目に触れられたGUIオブジェクトが幅においても高さにおいても小さいのか否か)を判断する。具体的には、補正管理部15は、ステップS304と同様にして、第2のオブジェクト領域の幅が狭いか否かを判断する。また、補正管理部15は、ステップS306と同様にして、第2のオブジェクト領域の高さが低いか否かを判断する。
ステップS308が実行されるのは、角度θが示す方向が、X方向にもY方向にも近くない場合である。そして、角度θが示す方向が、X方向にもY方向にも近くない場合とは、換言すれば、斜めの方向(つまり、X成分とY成分の一方を無視することが不適切であるような方向)での誤操作が検出された場合である。この場合、X方向とY方向の双方について考慮することが望ましい。
図9の例E6とE10から理解されるように、第2のオブジェクト領域の高さと幅の少なくとも一方が大きい場合には(例えば例E10では)、「斜めの方向での誤操作が行われた」という蓋然性は低い。つまり、第2のオブジェクト領域の高さと幅の少なくとも一方が大きい場合には、「ユーザは、第1と第2のタッチ操作を、異なる意図のもとに行った」と推定される。
よって、第2のオブジェクト領域の高さと幅の少なくとも一方が大きい場合には、補正DB14を更新することは望ましくない。したがって、補正管理部15は、ステップS308で「第2のオブジェクト領域の高さと幅の少なくとも一方が大きい」と判断した場合には、補正DB14を更新せずに、図8の補正DB更新処理を終える。
逆に、第2のオブジェクト領域が幅においても高さにおいても小さい場合には(例えば例E6では)、「斜めの方向での誤操作が行われた」という蓋然性が高い。つまり、第2のオブジェクト領域が幅においても高さにおいても小さい場合には、「ユーザは、第1と第2のタッチ操作を、同じ意図のもとに行った」と推定される。
よって、第2のオブジェクト領域が幅においても高さにおいても小さい場合には、補正値ΔXとΔYの双方を更新することが望ましい。したがって、補正管理部15は、ステップS308で「第2のオブジェクト領域が幅においても高さにおいても小さい」と判断した場合には、ステップS309で補正値ΔXとΔYの双方を更新する。補正値ΔXの更新はステップS305と同様であり、補正値ΔYの更新はΔ307と同様である。ステップS309での補正値ΔXとΔYの更新後、補正管理部15は図8の補正DB更新処理を終える。
ところで、本発明は上記実施形態に限られるものではない。上記の説明においてもいくつかの変形について説明したが、上記実施形態は、さらに例えば下記の観点から様々に変形することもできる。上記および下記の変形は、相互に矛盾しない限り、任意に組み合わせることが可能である。
上記実施形態におけるいくつかの処理は、閾値との比較を含む。閾値との比較は、実施形態により「比較対象の数値が、閾値を超えるか否か」を判断する処理でもよいし、「比較対象の数値が、閾値以上か否か」を判断する処理でもよい。例示した種々の不等式において、「≦」が「<」に適宜置き換えられてもよく、逆に、「<」が「≦」に適宜置き換えられてもよい。
また、上記の説明では様々な用途の閾値を例示したが、各閾値の具体的な値は、実施形態に応じて適宜任意に決められてよい。
上記の説明では、主に、各領域がバウンディング・ボックスにより表される例を説明した。しかし、矩形以外の形状で領域が表されてもよい。
矩形以外の形状の領域が使われる場合、領域同士の重なりの検出には、領域間の衝突に関する適宜の衝突判定アルゴリズムが利用可能である。例えばコンピュータ・グラフィックスの分野において、種々の衝突判定アルゴリズムが知られている。
例えば、補正管理部15は、第1と第2の接触領域が重なっているか否かを、適宜の衝突判定アルゴリズムにしたがって判断してもよい。補正管理部15は、接触領域とオブジェクト領域が重なる重なり領域を特定するために、適宜の重なり検出アルゴリズムを利用してもよい。矩形以外の形状の領域の重心を求めるための適宜のアルゴリズムが利用されてもよい。
また、図1の端末装置10を実現するためのハードウェアは、図4のような汎用的なコンピュータ20には限られない。汎用的なCPU21の代わりに、ASIC(Application-Specific Integrated Circuit)などの専用ハードウェア回路、および/または、FPGA(Field Programmable Gate Array)などのリコンフィギュラブル(reconfigurable)回路が使われてもよい。もちろん、専用ハードウェア回路および/またはリコンフィギュラブル回路が、汎用的なCPU21とともに使われてもよい。
コンピュータ20が使われる場合も、位置検出部13、補正管理部15、および操作検出部16の各々が、ファームウェア、OS、デバイスドライバなどの種々の階層のうちのどの階層に実装されるかということは、実施形態に応じて様々であってよい。また、上記実施形態では、補正管理部15が座標の補正と補正情報の更新の両方を行うが、実施形態によっては、座標の補正を行うモジュールと、補正情報の更新を行うモジュールが分離されていてもよい。
続いて、以上のように様々に変形され得る各種実施形態の共通点について説明する。
図8のステップS301に例示されるように、第1と第2の接触領域が所定の基準に照らして遠くに離れているとき、補正DB14は更新されない。逆に、第1と第2の接触領域が所定の基準に照らして近くにある場合、補正管理部15は、「補正DB14を更新するか否か」ということを、第1のタッチ操作に対する第2のタッチ操作の方向と、第2のオブジェクト領域の大きさに基づいて決める。以上のような補正管理部15の振る舞いは、以下のような考察に基づく。
「第1のタッチ操作と、第1のタッチ操作を取り消す取り消し操作と、第2のタッチ操作」という特定の操作シーケンスが実行される理由として、少なくとも2つの理由が考えられる。
第1の理由は、「第1のタッチ操作においてユーザが触れようと意図していたGUIオブジェクトの近くに配置されている別のGUIオブジェクトが、第1のタッチ操作の対象として特定されたから」という理由である。この場合、アプリケーション12は、ユーザの意図とは異なる振る舞いをする。
そこで、ユーザは、第1のタッチ操作を取り消すために取り消し操作を行い、その後、本来の意図を実現するために第2のタッチ操作を行う。例えば、図2の例E1は、第1の理由に起因して取り消し操作と第2のタッチ操作が行われる例である。
第2の理由は、「実際のアプリケーション12の振る舞いが、ユーザを満足させるものではなかったから」という理由である。例えば、図2の例E2は、第2の理由に起因して取り消し操作と第2のタッチ操作が行われる例である。
第1のタッチ操作においてユーザが触れようと意図していたGUIオブジェクト自体が、第1のタッチ操作の対象として特定されることがある。この場合、ユーザが第1のタッチ操作によってアプリケーション12に与えた指示どおりに、アプリケーション12は振る舞う(例えば例E2のステップS20)。しかし、実際のアプリケーション12の振る舞いが、ユーザを満足させるものではない可能性もある。例えば、例E2において、ユーザは、ウェブページP4をちらっと見ただけで、「このウェブページは自分が期待していたようなウェブページではない」と思う可能性がある。
以上のように、実際のアプリケーション12の振る舞いが期待はずれのことがあり得る。この場合、ユーザは、第1のタッチ操作を取り消すために取り消し操作を行い、その後、より満足な結果を得るための試みとして、第2のタッチ操作を行うことがある。
ところで、第1の理由に起因して取り消し操作と第2の操作が行われた場合には、補正値ΔXおよび/または補正値ΔYの更新によって、ユーザビリティが向上すると期待される。
しかし、第2の理由に起因して取り消し操作と第2のタッチ操作が行われた場合には、「現在の補正値ΔXと補正値ΔYが不適切である」と推定するに足る十分な証拠はない。よって、この場合は、補正管理部15は、補正値ΔXとΔYを更新しないことが望ましい。なぜなら、この場合、もし補正管理部15が補正値ΔXおよび/または補正値ΔYを更新してしまうと、過剰な(または不適切な)更新によって、かえってユーザビリティが低下するおそれがあるからである。
そこで、補正管理部15は、取り消し操作と第2のタッチ操作が第1と第2の理由のどちらに起因して行われたのかを推測する。そして、推測に基づいて、補正管理部15は、補正値ΔXを更新することが好ましいか否か、および、補正値ΔYを更新することが好ましいか否かを判断する。例えば、図8のステップS301〜304、S306、S308のようにして推測が行われてもよい。
例えば図2の例E2や図9の例E7のように、第1と第2の接触領域が所定の基準に照らして遠くに離れているときは、「第1の理由に起因して取り消し操作と第2の操作が行われた」という蓋然性は低い。つまり、第1と第2の接触領域が所定の基準に照らして遠くに離れているときは、「第2の理由に起因して取り消し操作と第2の操作が行われた」という蓋然性が高い。よって、この場合、補正管理部15は、上記のとおり、補正値ΔXも補正値ΔYも更新しない。
逆に、第1と第2の接触領域が所定の基準に照らして近くにあるとき、「第1の理由に起因して取り消し操作と第2の操作が行われた」という可能性もあり、「第2の理由に起因して取り消し操作と第2の操作が行われた」という可能性もある。よって、第1の接触領域と第2の接触領域同士が所定の基準に照らして近くにあるとき、補正管理部15は、2つの可能性のどちらがより尤もらしいかを判断する。
この判断には、上記のとおり、第1のタッチ操作に対する第2のタッチ操作の方向と、第2のオブジェクト領域の大きさが使われる。例えば、図8の例では、第1のタッチ操作に対する第2のタッチ操作の方向がステップS302〜S303で判断され、第2のオブジェクト領域の大きさはステップS304、S306、およびS308で判断される。第1のタッチ操作に対する第2のタッチ操作の方向は、具体的には、第1のオブジェクト領域と第2のオブジェクト領域と第1の接触領域と第2の接触領域の間の幾何学的関係に基づいて判定される方向である。
以下では説明の便宜上、「第1のタッチ操作に対して、X方向に近い方向で第2のタッチ操作が行われたか否か」を判定するための条件を、「水平配置条件」という。また、「第1のタッチ操作に対して、Y方向に近い方向で第2のタッチ操作が行われたか否か」を判定するための条件を、「垂直配置条件」という。
水平配置条件と垂直配置条件は排他的である。水平配置条件と垂直配置条件は、実施形態に応じて適宜定義されてよい。
実施形態によっては、水平配置条件が満たされる場合と、垂直配置条件が満たされる場合と、いずれも満たされない場合、という3つの場合が存在するように、水平配置条件と垂直配置条件が定義されてもよい。角度θの絶対値|θ|に関する2つの閾値(例えば20°と70°)が使われる図8の例は、このように3つの場合が存在する例である。
実施形態によっては、水平配置条件が満たされる場合と、垂直配置条件が満たされる場合、という2つの場合だけが存在するように、水平配置条件と垂直配置条件が定義されてもよい。例えば、図8の変形例として例示したように、1つの閾値(例えば45°)のみを用いて、角度θの絶対値|θ|が2つに分類されてもよい。
以下では説明の便宜上、「第1と第2の接触領域が所定の基準に照らして近くにあり、かつ、第1のオブジェクト領域と第2のオブジェクト領域と第1の接触領域と第2の接触領域が水平配置条件を満たしている」という場合を「第1の場合」という。一方、「第1と第2の接触領域が所定の基準に照らして近くにあり、かつ、第1のオブジェクト領域と第2のオブジェクト領域と第1の接触領域と第2の接触領域が垂直配置条件を満たしている」という場合を「第2の場合」という。
また、「第1と第2の接触領域が所定の基準に照らして近くにあり、かつ、第1のオブジェクト領域と第2のオブジェクト領域と第1の接触領域と第2の接触領域が水平配置条件も垂直配置条件も満たさない」という場合を「第3の場合」という。第3の場合が存在するか否かは、上記のとおり、水平配置条件と垂直配置条件の定義に依存する。
第1の場合において、補正管理部15は、補正値ΔXを更新するか否かを第2のオブジェクト領域の幅に基づいて決定し、補正値ΔYは更新しない。具体的には、補正管理部15は、第2のオブジェクト領域の幅が、第1と第2の接触領域の一方または双方の幅に応じて決められる第1の閾値以下ならば、補正値ΔXを更新する。しかし、補正管理部15は、第2のオブジェクト領域の幅が、第1の閾値を超えるならば、補正値ΔXを更新しない。
以上のような第1の場合の具体例は、図8のステップS304〜S305に例示されている。また、上記第1の閾値は、例えば、以下のいずれの値であってもよいし、他の適宜の値であってもよい。
・第1の接触領域の幅と第2の接触領域の幅のうちの最小値(式(15)に相当)。
・当該最小値と、1に近い所定の係数(例えば、0.9から1.1程度の係数)との積。
・第2の接触領域の幅(式(16)に相当)。
・第2の接触領域の幅と、1に近い所定の係数との積。
・第1の接触領域の幅と第2の接触領域の幅の平均値(式(17)に相当)。
・当該平均値と、1に近い所定の係数との積。
・第1の接触領域の幅(式(18)に相当)。
・第1の接触領域の幅と第2の接触領域の幅のうちの最大値(式(19)に相当)。
・当該最大値と、1に近い所定の係数との積。
第2の場合において、補正管理部15は、補正値ΔYを更新するか否かを第2のオブジェクト領域の高さに基づいて決定し、補正値ΔXは更新しない。具体的には、補正管理部15は、第2のオブジェクト領域の高さが、第1と第2の接触領域の一方または双方の高さに応じて決められる第2の閾値以下ならば、補正値ΔYを更新する。しかし、補正管理部15は、第2のオブジェクト領域の高さが、第2の閾値を超えるならば、補正値ΔYを更新しない。
以上のような第2の場合の具体例は、図8のステップS306〜S307に例示されている。また、上記第2の閾値は、例えば、以下のいずれの値であってもよいし、他の適宜の値であってもよい。
・第1の接触領域の高さと第2の接触領域の高さのうちの最小値(式(28)に相当)。
・当該最小値と、1に近い所定の係数(例えば、0.9から1.1程度の係数)との積。
・第2の接触領域の高さ(式(29)に相当)。
・第2の接触領域の高さと、1に近い所定の係数との積。
・第1の接触領域の高さと第2の接触領域の高さの平均値(式(30)に相当)。
・当該平均値と、1に近い所定の係数との積。
・第1の接触領域の高さ(式(31)に相当)。
・第1の接触領域の高さと第2の接触領域の高さのうちの最大値(式(32)に相当)。
・当該最大値と、1に近い所定の係数との積。
第3の場合があり得るか否かは、上記のように水平配置条件と垂直配置条件の定義に依存する。例えば、角度θの絶対値|θ|に関して1つの閾値のみが使われる場合、第3の場合は存在せず、図8のステップS308〜S309は削除される。しかし、水平配置条件と垂直配置条件の定義によっては、図8のように、第3の場合が存在し得る。
第3の場合において、補正管理部15は、補正値ΔXとΔYを更新するか否かを、第2のオブジェクト領域の幅と高さに基づいて決定する。具体的には、補正管理部15は、以下の2つの条件がともに成り立つとき、補正値ΔXとΔYの双方を更新する。
・第2のオブジェクト領域の幅が、第1と第2の接触領域の一方または双方の幅に応じて決められる第3の閾値以下である。
・第2のオブジェクト領域の高さが、第1と第2の接触領域の一方または双方の高さに応じて決められる第4の閾値以下である。
逆に、第3の場合において、以下の2つの条件のうち少なくとも一方が成り立つとき、補正管理部15は、補正値ΔXも補正値ΔYも更新しない。
・第2のオブジェクト領域の幅が第3の閾値を超える。
・第2のオブジェクト領域の高さが第4の閾値を超える。
なお、第3の閾値は、例えば、第1の閾値に関して例示した上記の値のいずれであってもよいし、その他の適宜の値であってもよい。第4の閾値は、例えば、第2の閾値に関して例示した上記の値のいずれであってもよいし、その他の適宜の値であってもよい。
ところで、各領域はバウンディング・ボックスにより表されてもよいし、矩形以外の形状で表されてもよい。矩形以外の形状が使われる場合、上述のとおり、適宜の衝突判定アルゴリズムが利用されてもよい。
水平配置条件と垂直配置条件の各々は、第1のオブジェクト領域と第2のオブジェクト領域と第1の接触領域と第2の接触領域の間の幾何学的関係に基づいて定義されることが好ましい。水平配置条件と垂直配置条件の具体的定義は、例えば、領域の形状に応じた定義であってもよい。
例えば、「第1のオブジェクト領域と第2のオブジェクト領域と第1の接触領域と第2の接触領域が水平配置条件を満たすか否か」ということは、以下の2点を結ぶ直線が水平方向となす角度によって定まっていてもよい。同様に、「第1のオブジェクト領域と第2のオブジェクト領域と第1の接触領域と第2の接触領域が垂直配置条件を満たすか否か」ということも、以下の2点を結ぶ直線が水平方向となす角度によって定まっていてもよい。しかし、実施形態によっては、水平配置条件と垂直配置条件の他の定義が採用されてもよい。
・第1のオブジェクト領域と第1の接触領域が重なる第1の重なり領域(例えば、図10の第1の重なり領域O1、O3、O5など)を代表する点。
・第2のオブジェクト領域と第2の接触領域が重なる第2の重なり領域(例えば、図10の第2の重なり領域O2、O4、O6など)を代表する点。
ある領域を代表する点は、例えば、領域の重心でもよい。上記2点を結ぶ直線が水平方向となす角度の具体例は、図10の角度θである。図8〜10の例では、以下のように2つの閾値を用いて水平配置条件と垂直配置条件が定義される。
・−90°から90°までの範囲内で示される角度θの絶対値|θ|が、第5の閾値(例えば20°)より小さいとき、水平配置条件が満たされる。
・第5の閾値より大きく90°より小さい第6の閾値(例えば70°)よりも、絶対値が|θ|が大きいとき、垂直配置条件が満たされる。
・絶対値が|θ|が第5の閾値以上であり、かつ、第6の閾値以下であるとき、水平配置条件も垂直配置条件も満たされない。
最後に、上記の種々の実施形態による効果を説明する。
ユーザは、タッチスクリーン11上でのジェスチャ(すなわちタッチ操作)により、端末装置10を操作することができる。しかし、例えば以下のような場合には、ミスタッチ(すなわち誤操作)が発生し得る。
・タッチスクリーン11が小さいために、個々のGUIオブジェクトが小さく表示される場合。
・タッチスクリーン11の大きさによらず、もともとGUIオブジェクトが小さい場合。
タッチスクリーン11やGUIオブジェクトが十分に大きいのか、それとも小さいのかは、タッチ操作に使われる物体(例えば、ユーザの指やペンなど)の大きさによる。
誤操作は、ユーザの意図しない操作である。よって、誤操作の発生は、ユーザビリティの低下を招く。したがって、誤操作を減らすことが好ましい。
上記の各種実施形態では、補正DB14の水平補正情報と垂直補正情報が学習される。そして、時間の経過につれて、水平補正情報と垂直補正情報は、次第に、ユーザのタッチ操作の癖によく適合した状態となる。よって、上記の各種実施形態によれば、誤操作を減らすことができる。
また、上記の各種実施形態は、種々のアプリケーションに適用可能である。例えば、あるアプリケーションでは、いくつかのGUIオブジェクトが疎らにレイアウトされた特定のパターンの画面だけが用いられるかもしれない。しかし、別のアプリケーション(例えばウェブブラウザなど)では、GUIオブジェクトの大きさやレイアウトは任意であるかもしれない。上記の各種実施形態は、GUIオブジェクトの大きさやレイアウトによらず適用可能である。
例えば、次のような比較例が考えられる。個々のGUIオブジェクトが占める領域よりもマージンの分だけ大きい領域が、GUIオブジェクトに対するタッチ操作の有効領域として定められてもよい。残りの領域は無効領域である。
有効領域に対してタッチ操作が行われると、アプリケーションがタッチ操作に応じた処理を行う。いくつかのGUIオブジェクトが疎らにレイアウトされた特定のパターンの画面だけが用いられる特定のアプリケーションでは、有効領域同士が重ならないようにすることができる。
本比較例においては、有効領域に近く、かつ、無効領域に含まれるような位置でタッチ操作が行われた場合が、誤操作と見なされてもよい。そして、この場合に、補正情報が更新されてもよい。上記のような特定のアプリケーションでは、上記のような有効領域に基づく更新方法により、ユーザビリティを改善させることも可能である。
しかし、以上説明した比較例の方法は、GUIオブジェクトが密にレイアウトされ得るアプリケーションに適用された場合、それほど有効には働かない。なぜなら、GUIオブジェクトが密にレイアウトされていると、タッチスクリーン11の全体または大部分が、有効領域で覆われてしまう(したがって、無効領域がないか、あるいは、無効領域が極めて小さい)ためである。よって、GUIオブジェクトが密にレイアウトされていると、補正情報がうまく更新されない(すなわち、ユーザビリティが向上しない)おそれが高い。
一方、GUIオブジェクトが密にレイアウトされている画面こそ、まさに誤操作を誘発しやすい画面であり、ユーザビリティを向上させたい画面である。よって、たとえGUIオブジェクトが密にレイアウトされていても、端末装置が補正情報をうまく学習することができることが望ましい。
上記の各種実施形態によれば、たとえGUIオブジェクトが密にレイアウトされていても、端末装置10が補正DB14内の水平補正情報と垂直補正情報をうまく学習することができる。
なぜなら、補正DB14を更新するか否かを判断するためのトリガとして、取り消し操作を含む特定の操作シーケンス(つまり、「第1のタッチ操作、取り消し操作、第2のタッチ操作」という操作シーケンス)が検出されるからである。取り消し操作は、GUIオブジェクトのレイアウトによらず検出可能である。つまり、上記実施形態では、誤操作の可能性を見落とすおそれが低い。このことは、上記比較例において「GUIオブジェクトが密にレイアウトされているので、無効領域が存在せず(または極めて小さく)、そのためトリガが検出されない」というおそれが高いのと対照的である。
一方、取り消し操作は、誤操作以外の原因に起因して行われる可能性もある。しかし、上記の各種実施形態によれば、「誤操作以外の原因に起因して取り消し操作と第2のタッチ操作が行われた」という蓋然性が高い場合は、補正DB14が更新されない。よって、上記の各種実施形態によれば、不適切な更新(あるいは過剰な更新)を避けることができる。具体的には、以下のような場合に補正DB14の更新が回避される。よって、上記の各種実施形態によれば、不適切な更新によるノイズを避けることができる。
・第1と第2の接触領域が所定の基準に照らして遠くにある場合。
・第1のタッチ操作が行われてから、所定時間より長い時間が経過した後に、取り消し操作が行われた場合。
・取り消し操作が行われてから、所定時間より長い時間が経過した後に、第2のタッチ操作が行われた場合。
・第2のタッチ操作が行われてから、所定時間以内に、第2のタッチ操作を取り消すための第2の取り消し操作が行われた場合。
・第1のタッチ操作に対する第2のタッチ操作の方向に応じた所定の方向(具体的には、X方向、Y方向、またはその両方向)において、接触領域の大きさを基準にすると、第2のオブジェクト領域が十分に大きい場合。
ところで、以上のように不適切な更新を防ぐことは、水平補正情報と垂直補正情報の精度を高めるうえで有効である。不適切な更新を防ぐことは、さらに、不適切な更新による処理負荷(例えば、CPU21による算術演算の処理負荷、メモリアクセスおよび/またはディスクアクセスの負荷など)を減らすうえでも有効である。つまり、上記の各種実施形態には、不必要な高負荷を避けつつ、精度の良い水平補正情報と垂直補正情報を学習する効果がある。
例えば、図9の例E8ではオブジェクト領域G39とG40が非常に密に配置されているが、オブジェクト領域G40に触ろうとしたユーザが接触領域C39に触れてしまう蓋然性は低い。なぜなら、オブジェクト領域G40の幅は十分に広いからである。上記の各種実施形態では、例えばこのような考察に基づいて、補正DB14の不要な更新(換言すれば、過剰で不適切な更新)が回避されている。
また、上記の各種実施形態によれば、第1と第2のタッチ操作にそれぞれ対応する第1と第2のオブジェクト領域が、操作検出部16によって動的に特定される。また、第1と第2の接触領域も、当然、第1と第2のタッチ操作に応じて動的に特定される領域であり、静的に決まった領域ではない。したがって、第1の接触領域、第2の接触領域、第1のオブジェクト領域、および第2のオブジェクト領域の間の幾何学的関係は、静的な関係ではなく動的な関係である。
上記の各種実施形態によれば、動的な上記幾何学的関係に応じて、補正管理部15が、補正値ΔXのみを更新するのか、補正値ΔYのみを更新するのか、補正値ΔXとΔYの双方を更新するのか、それとも、補正値ΔXとΔYのどちらも更新しないのかを決める。したがって、GUIオブジェクトの大きさ、形状、レイアウト等が予め静的に定まっていない場合にも、上記の各種実施形態は好適に適用可能である。
例えば、比較例として、GUIオブジェクトの大きさ、形状、レイアウト等が事前に決まっていることを前提とた方法も考えられる。具体的には、事前に決まっているGUIオブジェクトの大きさ等に基づく固定の閾値を使って、距離や大きさの判定を行う方法が考えられる。
このような比較例と比べると、上記の各種実施形態は、適用可能性が広く、柔軟性に優れている。なぜなら、上記の各種実施形態では、距離や大きさの判定において、静的に予め決められたGUIオブジェクトの大きさ等に基づく所定の固定閾値ではなく、接触領域の大きさが基準として使われるからである。GUIオブジェクトの大きさ、形状、レイアウト等が事前には不明であっても、上記の各種実施形態によれば、補正情報の適切な更新が実現される。接触領域の大きさ自体も動的に位置検出部13により検出される場合には特に、更新補正値ΔXとΔYの精度が高まる。
また、上記の各種実施形態では、補正管理部15が、第1のタッチ操作に対する第2のタッチ操作の方向を考慮する。当該方向は、ある観点から見れば、誤操作の方向である。また、当該方向は、第1のタッチ操作におけるユーザの意図を反映している、とも見なせる。よって、ある観点から見れば、補正管理部1は、第1のタッチ操作におけるユーザの意図を推測している、とも見なせる。補正管理部15は、推測に基づいて、「補正値ΔXのみを更新するのが好ましいか、補正値ΔYのみを更新するのが好ましいか、それとも、補正値ΔXとΔYの双方を更新するのが好ましいか」を決める。
誤操作の方向を考慮することは、補正値ΔXとΔYを精度よく学習するうえで効果的である。換言すれば、誤操作の方向を考慮することは、不適切な更新を避けるうえで効果的である。
例えば、図8の角度θが示す方向がX方向に近い場合、第1と第2の接触領域のY方向における位置の差(例えば式(33)または(34)で表される差dY)は、誤操作に起因する差というより、むしろ、偶発的な差である蓋然性が高い。よって、図8の角度θが示す方向がX方向に近い場合、偶発的な差dYに応じて補正値ΔYを更新することは、あまり好ましくない。
そのため、上記の各種実施形態では、ステップS305で補正管理部15は、補正値ΔXのみを更新しており、補正値ΔYを更新しない。つまり、ステップS305で補正管理部15は、誤操作の特徴を表すX方向の差dXを考慮する一方で、Y方向の偶発的な差dYは無視する。
逆に、ステップS307で補正管理部15は、誤操作の特徴を表すY方向の差dYを考慮する一方で、X方向の偶発的な差dXを無視する。なお、角度θが、X方向にもY方向にも近くない斜めの方向を示す場合、差dXと差dYの双方が誤操作の特徴を表す。よって、ステップS309で補正管理部15は、差dXと差dYの双方を考慮する。
ところで、上記の各種実施形態には、ユーザを邪魔しない(つまり、ユーザに煩わしさを感じさせない)という利点もある。
例えば、比較例として、第1のタッチ操作の次に取り消し操作が行われたときに、ユーザに対してメニューを表示する方法が考えられる。具体的には、当該メニューは、第1のオブジェクト領域の近傍にある他の1つ以上のGUIオブジェクトの中から1つをユーザに選択させるためのものである。例えば、メニューは拡大表示されてもよい。
ところが、例えば図2の例E2のように、誤操作以外の原因でユーザが取り消し操作を行うこともある。上記の比較例によれば、ユーザが誤操作をしていないときにも、ユーザにとって不要なメニューが表示されてしまう。つまり、上記の比較例はユーザを煩わせてしまう。しかし、上記の各種実施形態は、ユーザを邪魔しないので優れている。
また、別の比較例として、第1の接触領域が2つ以上のGUIオブジェクトと少なくとも部分的に重なっている場合に、第1の接触領域の近傍を拡大表示する方法も考えられる。しかし、第1の接触領域が2つ以上のGUIオブジェクトと少なくとも部分的に重なっている場合に常に誤操作が生じるわけではない。よって、この比較例のような拡大表示はユーザを煩わせてしまう。しかし、上記の各種実施形態は、ユーザを邪魔しないので優れている。
以上のように、上記の各種実施形態は、ユーザビリティ(換言すれば操作性)を向上させるうえでの様々な優れた効果を奏する。ユーザビリティの向上は、作業効率の向上につながるので、有益である。
10 端末装置
11、24 タッチスクリーン
12 アプリケーション
13 位置検出部
14、14a〜14e 補正DB
15 補正管理部
16 操作検出部
20 コンピュータ
21 CPU
22 チップセット
23 メモリ
25 不揮発性記憶装置
26 入力装置
27 通信インタフェイス
28 リーダ/ライタ
30 ネットワーク
40 記憶媒体
B1〜B3 ボタン
BB 「戻る」ボタン
C1〜C4、C10、C20、C31、C33、C35〜C39、C41、C43、C51〜C56 接触領域
D1、D3、D5 直線
E1〜E13 例
FB 「進む」ボタン
G1〜G3、G10〜G14、G20〜G24、G31〜G44、G51〜G56 オブジェクト領域
L10〜L14、L20〜L24 リンク
O1〜O6 重なり領域
P1〜P4、P10、P20 ウェブページ

Claims (8)

  1. タッチスクリーンと、
    タッチ操作により触れられた、前記タッチスクリーン上の領域を検出する検出手段と、
    検出された前記領域の位置を水平方向と垂直方向にそれぞれ補正するための水平補正情報と垂直補正情報とを記憶する記憶手段と、
    検出された前記領域の前記位置を、前記水平補正情報と前記垂直補正情報を用いて補正する補正手段と、
    補正された前記位置に基づき、前記タッチ操作の対象のグラフィカルユーザインタフェイスオブジェクトが前記タッチスクリーン上で占める領域を特定する特定手段と、
    第1のタッチ操作と、前記第1のタッチ操作を取り消す取り消し操作と、第2のタッチ操作が順に行われると、前記第1のタッチ操作および前記第2のタッチ操作に応じてそれぞれ特定された第1のオブジェクト領域および第2のオブジェクト領域、ならびに、前記第1のタッチ操作および前記第2のタッチ操作に応じてそれぞれ検出されて位置が補正された第1の接触領域および第2の接触領域の間の幾何学的関係に応じて、前記水平補正情報を更新するか、前記垂直補正情報を更新するか、前記水平補正情報と前記垂直補正情報の双方を更新するか、それとも、前記水平補正情報と前記垂直補正情報のどちらも更新しないかを決定し、決定にしたがい動作する更新手段
    を備える情報処理装置。
  2. 前記第1の接触領域と前記第2の接触領域同士が所定の基準に照らして近くにあるとき、前記更新手段は、前記水平補正情報を更新するか否かということと、前記垂直補正情報を更新するか否かということを、前記第1のタッチ操作に対する前記第2のタッチ操作の方向であって前記幾何学的関係に基づいて判定される方向と、前記第2のオブジェクト領域の大きさに基づいて決定し、
    前記第1の接触領域と前記第2の接触領域同士が前記所定の基準に照らして遠くに離れているとき、前記更新手段は、前記水平補正情報と前記垂直補正情報のどちらも更新しない
    ことを特徴とする請求項1に記載の情報処理装置。
  3. 前記第1の接触領域と前記第2の接触領域同士が前記所定の基準に照らして近くにあり、かつ、前記第1のタッチ操作に対して前記水平方向に近い方向で前記第2のタッチ操作が行われたか否かを判定するための水平配置条件を、前記第1のオブジェクト領域と前記第2のオブジェクト領域と前記第1の接触領域と前記第2の接触領域が満たしている、という第1の場合において、前記更新手段は、前記水平補正情報を更新するか否かを、前記第2のオブジェクト領域の前記水平方向の幅に基づいて決定し、前記垂直補正情報は更新せず、
    前記第1の接触領域と前記第2の接触領域同士が前記所定の基準に照らして近くにあり、かつ、前記第1のタッチ操作に対して前記垂直方向に近い方向で前記第2のタッチ操作が行われたか否かを判定するための垂直配置条件を、前記第1のオブジェクト領域と前記第2のオブジェクト領域と前記第1の接触領域と前記第2の接触領域が満たしている、という第2の場合において、前記更新手段は、前記垂直補正情報を更新するか否かを、前記第2のオブジェクト領域の前記垂直方向の高さに基づいて決定し、前記水平補正情報は更新しない
    ことを特徴とする請求項2に記載の情報処理装置。
  4. 前記第1の場合において、前記更新手段は、
    前記第2のオブジェクト領域の前記幅が、前記第1の接触領域と前記第2の接触領域の一方または双方の前記水平方向の幅に応じて決められる第1の閾値以下ならば、前記水平補正情報を更新し、
    前記第2のオブジェクト領域の前記幅が、前記第1の閾値を超えるならば、前記水平補正情報を更新せず、
    前記第2の場合において、前記更新手段は、
    前記第2のオブジェクト領域の前記高さが、前記第1の接触領域と前記第2の接触領域の一方または双方の前記垂直方向の高さに応じて決められる第2の閾値以下ならば、前記垂直補正情報を更新し、
    前記第2のオブジェクト領域の前記高さが、前記第2の閾値を超えるならば、前記垂直補正情報を更新しない
    ことを特徴とする請求項3に記載の情報処理装置。
  5. 前記第1の接触領域と前記第2の接触領域同士が前記所定の基準に照らして近くにあり、かつ、前記第1のオブジェクト領域と前記第2のオブジェクト領域と前記第1の接触領域と前記第2の接触領域が前記水平配置条件も前記垂直配置条件も満たさない、という第3の場合において、前記更新手段は、前記水平補正情報と前記垂直補正情報を更新するか否かを、前記第2のオブジェクト領域の前記幅と前記高さに基づいて決定する
    ことを特徴とする請求項3または4に記載の情報処理装置。
  6. 前記更新手段は、
    前記水平補正情報をどれくらい更新するかを、前記水平方向における前記第2の接触領域の位置に基づいて決定し、
    前記垂直補正情報をどれくらい更新するかを、前記垂直方向における前記第2の接触領域の位置に基づいて決定する
    ことを特徴とする請求項1から5のいずれか1項に記載の情報処理装置。
  7. タッチスクリーンを有するコンピュータに、
    タッチ操作により触れられた、前記タッチスクリーン上の領域を検出し、
    検出した前記領域の位置を水平方向と垂直方向にそれぞれ補正するための水平補正情報と垂直補正情報を記憶装置から読み出し、
    検出した前記領域の前記位置を、前記水平補正情報と前記垂直補正情報を用いて補正し、
    補正した前記位置に基づき、前記タッチ操作の対象のグラフィカルユーザインタフェイスオブジェクトが前記タッチスクリーン上で占める領域を特定し、
    第1のタッチ操作と、前記第1のタッチ操作を取り消す取り消し操作と、第2のタッチ操作が順に行われると、前記第1のタッチ操作および前記第2のタッチ操作に応じてそれぞれ特定した第1のオブジェクト領域および第2のオブジェクト領域、ならびに、前記第1のタッチ操作および前記第2のタッチ操作に応じてそれぞれ検出して位置を補正した第1の接触領域および第2の接触領域の間の幾何学的関係に応じて、前記水平補正情報を更新するか、前記垂直補正情報を更新するか、前記水平補正情報と前記垂直補正情報の双方を更新するか、それとも、前記水平補正情報と前記垂直補正情報のどちらも更新しないかを決定し、
    決定にしたがい動作する
    ことを含む処理を実行させるための入力制御プログラム。
  8. タッチスクリーンを有する情報処理装置が、
    タッチ操作により触れられた、前記タッチスクリーン上の領域を検出し、
    検出した前記領域の位置を水平方向と垂直方向にそれぞれ補正するための水平補正情報と垂直補正情報を記憶装置から読み出し、
    検出した前記領域の前記位置を、前記水平補正情報と前記垂直補正情報を用いて補正し、
    補正した前記位置に基づき、前記タッチ操作の対象のグラフィカルユーザインタフェイスオブジェクトが前記タッチスクリーン上で占める領域を特定し、
    第1のタッチ操作と、前記第1のタッチ操作を取り消す取り消し操作と、第2のタッチ操作が順に行われると、前記第1のタッチ操作および前記第2のタッチ操作に応じてそれぞれ特定した第1のオブジェクト領域および第2のオブジェクト領域、ならびに、前記第1のタッチ操作および前記第2のタッチ操作に応じてそれぞれ検出して位置を補正した第1の接触領域および第2の接触領域の間の幾何学的関係に応じて、前記水平補正情報を更新するか、前記垂直補正情報を更新するか、前記水平補正情報と前記垂直補正情報の双方を更新するか、それとも、前記水平補正情報と前記垂直補正情報のどちらも更新しないかを決定し、
    決定にしたがい動作する
    ことを特徴とする入力制御方法。
JP2015523781A 2013-06-28 2013-06-28 情報処理装置、入力制御プログラム、および入力制御方法 Expired - Fee Related JP6028861B2 (ja)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
PCT/JP2013/067830 WO2014207898A1 (ja) 2013-06-28 2013-06-28 情報処理装置、入力制御プログラム、および入力制御方法

Publications (2)

Publication Number Publication Date
JP6028861B2 true JP6028861B2 (ja) 2016-11-24
JPWO2014207898A1 JPWO2014207898A1 (ja) 2017-02-23

Family

ID=52141296

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015523781A Expired - Fee Related JP6028861B2 (ja) 2013-06-28 2013-06-28 情報処理装置、入力制御プログラム、および入力制御方法

Country Status (3)

Country Link
US (1) US20160077646A1 (ja)
JP (1) JP6028861B2 (ja)
WO (1) WO2014207898A1 (ja)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107894858B (zh) * 2016-10-04 2021-02-19 禾瑞亚科技股份有限公司 用于判断对应关系的电子系统、主机与其判断方法

Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62287326A (ja) * 1986-06-06 1987-12-14 Toshiba Corp タツチ式入力装置
JPH04372013A (ja) * 1991-06-21 1992-12-25 Hitachi Ltd 自動処理装置
JP2003196031A (ja) * 2001-12-28 2003-07-11 Sharp Corp タッチパネル入力装置,プログラム及びプログラムを記録した記録媒体
JP2005238793A (ja) * 2004-02-27 2005-09-08 Kyocera Mita Corp 画像形成装置
JP2006127488A (ja) * 2004-09-29 2006-05-18 Toshiba Corp 入力装置、コンピュータ装置、情報処理方法及び情報処理プログラム
JP2007310739A (ja) * 2006-05-19 2007-11-29 Murata Mach Ltd スクリーン駆動装置
JP2008242958A (ja) * 2007-03-28 2008-10-09 Kddi Corp タッチパネルによる入力装置およびその方法
JP2011107864A (ja) * 2009-11-16 2011-06-02 Stanley Electric Co Ltd 情報入力装置

Family Cites Families (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8564544B2 (en) * 2006-09-06 2013-10-22 Apple Inc. Touch screen device, method, and graphical user interface for customizing display of content category icons
US7843427B2 (en) * 2006-09-06 2010-11-30 Apple Inc. Methods for determining a cursor position from a finger contact with a touch screen display
EP2120134A4 (en) * 2007-03-07 2012-02-29 Nec Corp DISPLAY TERMINAL WITH TOUCH PANEL FUNCTION AND CALIBRATION METHOD
JP5107635B2 (ja) * 2007-08-15 2012-12-26 インターナショナル・ビジネス・マシーンズ・コーポレーション タッチパネル上の座標を真の表示座標に補正する方法
US8619043B2 (en) * 2009-02-27 2013-12-31 Blackberry Limited System and method of calibration of a touch screen display
TWI400638B (zh) * 2009-10-20 2013-07-01 Acer Inc 觸控顯示裝置、觸控顯示系統及其調整觸控區域之方法
US20110267278A1 (en) * 2010-04-29 2011-11-03 Sony Ericsson Mobile Communications Ab Adaptive soft keyboard
US20120166995A1 (en) * 2010-12-24 2012-06-28 Telefonaktiebolaget L M Ericsson (Publ) Smart virtual keyboard for touchscreen devices
US9448724B2 (en) * 2011-07-11 2016-09-20 International Business Machines Corporation Dynamically customizable touch screen keyboard for adapting to user physiology
KR101395991B1 (ko) * 2011-09-01 2014-05-19 엘지디스플레이 주식회사 터치센서를 가지는 표시장치와 그의 터치성능 향상방법
JP5910345B2 (ja) * 2012-06-21 2016-04-27 富士通株式会社 文字入力プログラム、情報処理装置および文字入力方法
US20140035828A1 (en) * 2012-07-31 2014-02-06 Elwha LLC, a limited liability company of the State of Delaware Adjusting a displayed widget or delineated touch-selectable area of a touch screen display in response to an approaching user-appendage
US9239649B2 (en) * 2012-11-21 2016-01-19 Asustek Computer Inc. Method for correcting touch position
US9430067B2 (en) * 2013-01-11 2016-08-30 Sony Corporation Device and method for touch detection on a display panel
JP2014142863A (ja) * 2013-01-25 2014-08-07 Fujitsu Ltd 情報処理装置、及び、タッチパネルパラメータの補正方法並びにプログラム
JP2014235612A (ja) * 2013-06-03 2014-12-15 富士通株式会社 端末装置、補正方法および補正プログラム
CA2966861A1 (en) * 2014-11-07 2016-05-12 Cubic Corporation Transit vending machine with automatic user interface adaption
JP6055459B2 (ja) * 2014-12-17 2016-12-27 京セラドキュメントソリューションズ株式会社 タッチパネル装置、および画像処理装置
KR102308202B1 (ko) * 2014-12-23 2021-10-06 삼성디스플레이 주식회사 터치 스크린 표시 장치 및 그의 구동방법
KR102355516B1 (ko) * 2015-04-30 2022-01-26 삼성디스플레이 주식회사 터치 스크린 표시 장치 및 그의 구동 방법

Patent Citations (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPS62287326A (ja) * 1986-06-06 1987-12-14 Toshiba Corp タツチ式入力装置
JPH04372013A (ja) * 1991-06-21 1992-12-25 Hitachi Ltd 自動処理装置
JP2003196031A (ja) * 2001-12-28 2003-07-11 Sharp Corp タッチパネル入力装置,プログラム及びプログラムを記録した記録媒体
JP2005238793A (ja) * 2004-02-27 2005-09-08 Kyocera Mita Corp 画像形成装置
JP2006127488A (ja) * 2004-09-29 2006-05-18 Toshiba Corp 入力装置、コンピュータ装置、情報処理方法及び情報処理プログラム
JP2007310739A (ja) * 2006-05-19 2007-11-29 Murata Mach Ltd スクリーン駆動装置
JP2008242958A (ja) * 2007-03-28 2008-10-09 Kddi Corp タッチパネルによる入力装置およびその方法
JP2011107864A (ja) * 2009-11-16 2011-06-02 Stanley Electric Co Ltd 情報入力装置

Also Published As

Publication number Publication date
US20160077646A1 (en) 2016-03-17
WO2014207898A1 (ja) 2014-12-31
JPWO2014207898A1 (ja) 2017-02-23

Similar Documents

Publication Publication Date Title
US10955980B2 (en) Terminal and method for touchscreen input correction
US9123279B2 (en) Flexible display and method for controlling the flexible display
JP6432409B2 (ja) タッチパネルの制御装置およびタッチパネルの制御プログラム
WO2011108650A1 (ja) 携帯端末装置
JP5664147B2 (ja) 情報処理装置、情報処理方法、及びプログラム
KR20140047126A (ko) 터치 지능성 타겟팅 기법
US20140184572A1 (en) Information processing apparatus and method for controlling the same
CN109683841B (zh) 多显示器环境下的控件显示方法及计算设备
KR20200052956A (ko) 디스플레이 처리 방법 및 전자 디바이스
US20140223328A1 (en) Apparatus and method for automatically controlling display screen density
US9811210B2 (en) Optical touch module and method for determining gestures thereof and computer-readable medium
WO2014057929A1 (ja) ユーザインタフェース装置、ユーザインタフェース方法及びプログラム
US9891730B2 (en) Information processing apparatus, information processing method therefor, and non-transitory storage medium
JP5995206B2 (ja) 情報処理装置
JP6028861B2 (ja) 情報処理装置、入力制御プログラム、および入力制御方法
JP6087608B2 (ja) 携帯可能な装置、携帯可能な装置を制御する方法およびプログラム
US9501210B2 (en) Information processing apparatus
KR20080032391A (ko) 피디에이에서의 인터넷 웹페이지 디스플레이방법
WO2022199540A1 (zh) 未读消息标识清除方法、装置及电子设备
JP6607083B2 (ja) プログラムおよび情報処理装置
CN101470580A (zh) 具有触控显示屏幕的电子装置及增进其操作方便性的方法
JP2015215840A (ja) 情報処理装置及び入力方法
TWM434992U (en) Touch screen device with calibration function
JP6093635B2 (ja) 情報処理装置
WO2022133987A1 (zh) 触控位置识别方法、装置、系统及计算机可读存储介质

Legal Events

Date Code Title Description
TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20160920

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20161003

R150 Certificate of patent or registration of utility model

Ref document number: 6028861

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R150

LAPS Cancellation because of no payment of annual fees