(57)【特許請求の範囲】
【請求項１】
入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出手段と、
前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出手段と、
前記操作オブジェクトの前記タッチ位置による操作の種類を移動操作と認識するための条件を、前記タッチ位置検出手段によって前記タッチ位置が検出され始める前に、前記近接位置検出手段によって検出された前記近接位置の移動量に応じて決定する決定手段と、前記操作オブジェクトが前記移動操作を開始したことを、前記検出されたタッチ位置と前記決定された条件に基づいて認識する認識手段と、を備え、
前記決定手段は、前記操作オブジェクトの一連の動作において、前記タッチ位置検出手段によってタッチ位置が検出され始める前の段階で前記近接位置検出手段によって検出された近接位置が、第１条件を満たす移動をしたか否かに応じて、前記タッチ位置検出手段によって検出されたタッチ位置の移動によって満たされるかが判定される条件を第２条件または第３条件と決定し、
前記認識手段は、
前記第１条件が満たされない場合、前記タッチ位置検出手段によって検出されたタッチ位置の移動量が、前記第２条件を満たすかに応じて、前記操作オブジェクトが前記移動操作を開始したと認識し、
前記第１条件が満たされた場合、前記タッチ位置検出手段によって検出されたタッチ位置の移動量が前記第３条件を満たすかに応じて、前記操作オブジェクトが前記移動操作を開始したと認識するものであって、
前記第１条件とは、前記操作オブジェクトが前記入力対象面に対して接触する前に近接していた状態で、前記入力対象面に平行な方向に所定の移動量より大きく移動していた場合に満たされる条件であり、
前記第２条件は、前記入力対象面に対して近接していた状態で、前記入力対象面に平行な方向に所定の移動量より大きく移動した直後に前記入力対象面に接触した前記操作オブジェクトが、前記入力対象面に接触した状態で、前記第３条件を満たす場合よりも大きく移動した場合に満たされる条件であることを特徴とする情報処理装置。
【請求項２】
前記認識手段は、前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたと認識した後、さらに前記タッチ位置検出手段によって検出されたタッチ位置が移動した場合、該タッチ位置の移動量が第４条件を満たすかに応じて、前記操作オブジェクトによって前記タッチ位置を移動させる操作が継続されたと認識することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記第４条件は、前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたと判定されるために、前記タッチ位置検出手段によって検出されたタッチ位置が満たすべき条件よりも満たされ易い条件であることを特徴とする請求項２に記載の情報処理装置。
【請求項４】
入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出手段と、
前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出手段と、
前記タッチ位置検出手段によって検出されたタッチ位置と、該タッチ位置が検出されなくなった後の段階で前記近接位置検出手段によって検出された近接位置の両方によって示される前記操作オブジェクトの移動に基づいて、前記操作オブジェクトによってフリックが入力されたかを判定する認識手段とを備え、
前記認識手段は、
前記操作オブジェクトの一連の動作において、前記タッチ位置検出手段によってタッチ位置が検出されなくなる前の段階で検出されたタッチ位置が、第５条件を満たす移動をしたか否かに応じて、前記近接位置検出手段によって検出された近接位置の移動によって満たされるか否かを判定する条件を異ならせ、
前記第５条件が満たされない場合、前記近接位置検出手段によって検出された近接位置の移動量が、第６条件を満たすかに応じて、前記操作オブジェクトによってフリックが入力されたと認識し、
前記第５条件が満たされた場合、前記タッチ位置検出手段によって検出されたタッチ位置の移動量が第７条件を満たすかに応じて、前記操作オブジェクトによってフリックが入力されたと認識するものであって、
前記第５条件とは、前記操作オブジェクトが所定のスピードよりも高速な移動を伴って前記入力対象面からリリースされた場合に満たされる条件であり、
前記第６条件は、前記入力対象面から前記所定のスピードよりも高速な移動を伴ってリリースされた前記操作オブジェクトが、前記入力対象面に近接した状態で、前記入力対象面に平行な方向に、前記第７条件を満たす場合よりも大きく移動した場合に満たされる条件であることを特徴とする情報処理装置。
【請求項５】
入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出手段と、
前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出手段と、
前記タッチ位置検出手段によって検出されたタッチ位置と、前記タッチ位置検出手段によって前記タッチ位置が検出され始める前の段階で前記近接位置検出手段によって検出された近接位置の両方によって示される前記操作オブジェクトの移動に基づいて、前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたかを判定する認識手段を備え、
前記認識手段は、前記操作オブジェクトの一連の動作において、前記タッチ位置検出手段によって前記タッチ位置が検出され始める前に、前記近接位置検出手段によって検出された近接位置が、前記入力対象面に平行な方向に所定の移動量より大きく移動したか否かに応じて、前記タッチ位置検出手段によって検出されたタッチ位置の移動量に関する異なる条件のいずれかを決定し、前記決定した条件が満たされたことに応じて前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたと認識するものであって、
前記近接位置が前記入力対象面に平行な方向に前記所定の移動量より大きく移動していない場合に決定される条件を満たすのに必要な前記タッチ位置の移動量は、前記近接位置が前記入力対象面に平行な方向に前記所定の移動量より大きく移動した場合に決定される条件を満たすのに必要な前記タッチ位置の移動量よりも大きいことを特徴とする情報処理装置。
【請求項６】
入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出手段と、
前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出手段と、
前記タッチ位置検出手段によって検出されたタッチ位置と、該タッチ位置が検出されなくなった後の段階で前記近接位置検出手段によって検出された近接位置の両方によって示される前記操作オブジェクトの移動に基づいて、前記操作オブジェクトによってフリックが入力されたかを判定する認識手段とを備え、
前記認識手段は、前記操作オブジェクトの一連の動作において、前記タッチ位置検出手段によってタッチ位置が検出されなくなる前の段階で検出されたタッチ位置により、前記操作オブジェクトが所定のスピードよりも高速な移動を伴って前記入力対象面からリリースされたことが示されるか否かに応じて、前記タッチ位置検出手段によってタッチ位置が検出されなくなった後に前記近接位置検出手段によって検出された近接位置の移動量に関する異なる条件のいずれかを決定し、前記決定された条件が満たされたことに応じて、前記操作オブジェクトによってフリックが入力されたと認識するものであって、
前記タッチ位置により、前記操作オブジェクトが所定のスピードよりも高速な移動を伴って前記入力対象面からリリースされたことが示されない場合に決定される条件を満たすのに必要な前記近接位置の移動量は、前記操作オブジェクトが所定のスピードよりも高速な移動を伴って前記入力対象面からリリースされたことが示される場合に決定される条件を満たすのに必要な前記近接位置の移動量よりも大きいことを特徴とする情報処理装置。
【請求項７】
タッチ位置検出手段により、入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出工程と、
近接位置検出手段により、前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出工程と、
認識手段により、前記タッチ位置検出工程において検出されたタッチ位置と、前記タッチ位置検出工程においてタッチ位置が検出され始める前の段階の前記近接位置検出工程において検出された近接位置の両方によって示される前記操作オブジェクトの移動に基づいて、前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたと認識する認識工程と、を有し、
前記認識工程では、前記操作オブジェクトの一連の動作において、前記タッチ位置検出工程においてタッチ位置が検出され始める前の段階の前記近接位置検出工程において検出された近接位置が、第１条件を満たす移動をしたか否かに応じて、その後の前記タッチ位置検出工程において検出されるタッチ位置の移動によって満たされるか否かを判定する条件を異ならせ、
前記第１条件が満たされない場合、前記タッチ位置検出工程において検出されたタッチ位置の移動量が、第２条件を満たすかに応じて、前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたと認識し、
前記第１条件が満たされた場合、前記タッチ位置検出工程において検出されたタッチ位置の移動量が第３条件を満たすかに応じて、前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたと認識するものであって、
前記第１条件とは、前記操作オブジェクトが前記入力対象面に対して接触する前に近接していた状態で、前記入力対象面に平行な方向に所定の移動量より大きく移動していた場合に満たされる条件であって、
前記第２条件は、前記入力対象面に対して近接していた状態で、前記入力対象面に平行な方向に所定の移動量より大きく移動した直後に前記入力対象面に接触した前記操作オブジェクトが、前記入力対象面に接触した状態で、前記第３条件を満たす場合よりも大きく移動した場合に満たされる条件であることを特徴とする情報処理装置の制御方法。
【請求項８】
タッチ位置検出手段により、入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出工程と、
近接位置検出手段により、前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出工程と、
認識手段により、前記タッチ位置検出工程において検出されたタッチ位置と、前記タッチ位置検出工程においてタッチ位置が検出されなくなった後の段階の前記近接位置検出工程において検出された近接位置の両方によって示される前記操作オブジェクトの移動に基づいて、前記操作オブジェクトによってフリックが入力されたと認識する認識工程と、を有し、
前記認識工程では、
前記操作オブジェクトの一連の動作において、前記タッチ位置検出工程においてタッチ位置が検出されなくなる前の段階で検出されたタッチ位置が、第５条件を満たす移動をしたか否かに応じて、前記タッチ位置検出工程においてタッチ位置が検出されなくなった後の段階の前記近接位置検出工程において検出される近接位置の移動によって満たされるか否かを判定する条件を異ならせ、
前記第５条件が満たされない場合、前記近接位置の移動量が、第６条件を満たすかに応じて、前記操作オブジェクトによってフリックが入力されたと認識し、
前記第５条件が満たされた場合、前記近接位置の移動量が、第７条件を満たすかに応じて、前記操作オブジェクトによってフリックが入力されたと認識するものであって、
前記第５条件とは、前記操作オブジェクトが所定のスピードよりも高速な移動を伴って前記入力対象面からリリースされた場合に満たされる条件であり、
前記第６条件は、前記入力対象面から前記所定のスピードよりも高速な移動を伴ってリリースされた前記操作オブジェクトが、前記入力対象面に近接した状態で、前記入力対象面に平行な方向に、前記第７条件を満たす場合よりも大きく移動した場合に満たされる条件であることを特徴とする情報処理装置の制御方法。
【請求項９】
タッチ位置検出手段により、入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出工程と、
近接位置検出手段により、前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出工程と、
認識手段により、前記タッチ位置検出工程において検出されたタッチ位置と、前記タッチ位置検出工程においてタッチ位置が検出され始める前の段階の前記近接位置検出工程において検出された近接位置の両方によって示される前記操作オブジェクトの移動に基づいて、前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたと認識する認識工程と、を有し、
前記認識工程では、前記操作オブジェクトの一連の動作において、前記タッチ位置検出工程においてタッチ位置が検出され始める前の段階の前記近接位置検出工程において検出された近接位置が、前記入力対象面に平行な方向に所定の移動量より大きく移動したか否かに応じて、その後の前記タッチ位置検出工程において検出されるタッチ位置の移動量に関する異なる条件のいずれかを決定し、前記決定した条件が満たされたことに応じて前記操作オブジェクトによって前記タッチ位置を移動させる操作が開始されたと認識するものであって、
前記近接位置が前記入力対象面に平行な方向に前記所定の移動量より大きく移動していない場合に決定される条件を満たすのに必要な前記タッチ位置の移動量は、前記近接位置が前記入力対象面に平行な方向に前記所定の移動量より大きく移動した場合に決定される条件を満たすのに必要な前記タッチ位置の移動量よりも大きいことを特徴とする情報処理装置の制御方法。
【請求項１０】
タッチ位置検出手段により、入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出工程と、
近接位置検出手段により、前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出工程と、
認識手段により、前記タッチ位置検出工程において検出されたタッチ位置と、前記タッチ位置検出工程においてタッチ位置が検出されなくなった後の段階の前記近接位置検出工程において検出された近接位置の両方によって示される前記操作オブジェクトの移動に基づいて、前記操作オブジェクトによってフリックが入力されたと認識する認識工程と、を有し、
前記認識工程では、前記操作オブジェクトの一連の動作において、前記タッチ位置検出工程においてタッチ位置が検出されなくなる前の段階で検出されたタッチ位置により、前記操作オブジェクトが所定のスピードよりも高速な移動を伴って前記入力対象面からリリースされたことが示されるか否かに応じて、前記タッチ位置検出工程においてタッチ位置が検出されなくなった後の段階の前記近接位置検出工程において検出される近接位置の移動量に関する異なる条件のいずれかを決定し、前記決定された条件が満たされたことに応じて、前記操作オブジェクトによってフリックが入力されたと認識するものであって、
前記タッチ位置により前記操作オブジェクトが所定のスピードよりも高速な移動を伴って前記入力対象面からリリースされたことが示されない場合に決定される条件を満たすのに必要な前記近接位置の移動量は、前記操作オブジェクトが所定のスピードよりも高速な移動を伴って前記入力対象面からリリースされたことが示される場合に決定される条件を満たすのに必要な前記近接位置の移動量よりも大きいことを特徴とする情報処理装置の制御方法。
【請求項１１】
コンピュータに読み込ませ実行させることによって、前記コンピュータを、請求項１乃至６のいずれか１項に記載の情報処理装置として機能させることを特徴とするコンピュータが読み取り可能なプログラム。
【請求項１２】
請求項１１に記載のプログラムを格納したことを特徴とするコンピュータが読み取り可能な記憶媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、複数種類の入力操作を認識する技術に関する。
【背景技術】
【０００２】
近年、ユーザの指あるいはスタイラスなどの操作オブジェクトによりタッチパネル等の入力部がタッチされた位置のＸ、Ｙ座標値に基づいてタッチ操作を認識し、タッチ操作に応じた各種処理を実行するタッチ入力機器が普及している。タッチ操作の認識は、一般的にタッチされた位置、タッチされた位置の移動距離、移動速度、入力時間等の情報が所定の条件を満たすかに基づいて行われる。特許文献１には、タッチ位置の分散の値が所定の値よりも大きい場合に、「ムーブ」（タッチしたまま操作オブジェクトを移動させる操作）が入力されたと判定する方法が開示されている。
【０００３】
また、操作オブジェクトが入力部から少し離れた近接状態（ホバー状態とも呼ばれる）における入力部に対するＸ、Ｙ座標値に基づいて操作可能な機器も登場してきている。特許文献２には、操作オブジェクトが入力部にタッチする前に近接状態にあった間の位置情報に基づいて特定されるタッチ操作を、操作オブジェクトが入力部にタッチした時点で実行することが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開２０１１−１３４２１２号公報
【特許文献２】特開２０１２−２４７９６０号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
特許文献１のようにタッチ中の情報だけ、あるいは特許文献２のように近接状態の間の情報だけに基づいて操作を認識する場合、センサの検出精度やユーザの無意識の動きの影響を受けやすいという課題があった。例えば、タッチした瞬間に、ユーザが操作オブジェクトを動かしたつもりがないにも関わらず、操作オブジェクトのブレが検出されてしまうことで、操作オブジェクトの移動に応じた操作が誤認識されることが有りうる。
【０００６】
本発明は上記課題に鑑みてなされ、ユーザの意図に反したタッチ操作の誤認識を低減することを主な目的とする。
【課題を解決するための手段】
【０００７】
上記課題を解決するため、本発明は、入力対象面内に対して接触した状態にある操作オブジェクトによって示されるタッチ位置を検出するタッチ位置検出手段と、前記入力対象面に対して近接した状態にある前記操作オブジェクトによって示される近接位置を検出する近接位置検出手段と、前記操作オブジェクトの前記タッチ位置による操作の種類を移動操作と認識するための条件を、前記タッチ位置検出手段によって前記タッチ位置が検出され始める前に、前記近接位置検出手段によって検出された前記近接位置の移動量に応じて決定する決定手段と、前記操作オブジェクトが前記移動操作を開始したことを、前記検出されたタッチ位置と前記決定された条件に基づいて認識する認識手段と、を備え、前記決定手段は、前記操作オブジェクトの一連の動作において、前記タッチ位置検出手段によってタッチ位置が検出され始める前の段階で前記近接位置検出手段によって検出された近接位置が、第１条件を満たす移動をしたか否かに応じて、前記タッチ位置検出手段によって検出されたタッチ位置の移動によって満たされるかが判定される条件を第２条件または第３条件に決定し、前記認識手段は、前記第１条件が満たされない場合、前記タッチ位置検出手段によって検出されたタッチ位置の移動量が、前記第２条件を満たすかに応じて、前記操作オブジェクトが前記移動操作を開始したと認識し、前記第１条件が満たされた場合、前記タッチ位置検出手段によって検出されたタッチ位置の移動量が前記第３条件を満たすかに応じて、前記操作オブジェクトが前記移動操作を開始したと認識するものであって、前記第１条件とは、前記操作オブジェクトが前記入力対象面に対して接触する前に近接していた状態で、前記入力対象面に平行な方向に所定の移動量より大きく移動していた場合に満たされる条件であり、前記第２条件は、前記入力対象面に対して近接していた状態で、前記入力対象面に平行な方向に所定の移動量より大きく移動した直後に前記入力対象面に接触した前記操作オブジェクトが、前記入力対象面に接触した状態で、前記第３条件を満たす場合よりも大きく移動した場合に満たされる条件である。
【発明の効果】
【０００８】
本発明によれば、ユーザの意図に反したタッチ操作の誤認識を低減することが可能となる。
【図面の簡単な説明】
【０００９】
【図１】情報処理装置のハードウェア構成及び機能構成の一例を示すブロック図
【図２】タッチ操作を判定する処理の流れの一例を示すフローチャート
【図３】「ムーブ」を判定する処理の流れの一例を示すフローチャート
【図４】「フリック」を判定する処理の流れの一例を示すフローチャート
【図５】操作例に用いられるタッチパネルと座標平面の関係の一例を示す図
【図６】タッチ操作の前後に検出される一連の入力位置の具体例を示す図
【図７】マルチタッチ時のタッチ操作を判定する処理の流れの一例を示すフローチャート
【発明を実施するための形態】
【００１０】
以下、添付図面を参照して本発明に係る実施の形態を詳細に説明する。ただし、この実施の形態に記載されている構成要素はあくまでも例示であり、本発明の範囲をそれらのみに限定する趣旨のものではない。
【００１１】
＜第１の実施形態＞
本実施形態では、検出されたタッチ位置と、該タッチ入力前またはタッチ入力後の近接状態での位置情報の両方に関する条件に基づいて、入力されたタッチ操作を認識する。
【００１２】
図１（ａ）は、本実施形態に係る情報処理装置１００のハードウェア構成の一例を示す図である。システムバス１０１は、情報処理装置１００を構成する各構成要素を接続し、相互に情報のやり取りを行う。ＣＰＵ（Ｃｅｎｔｒａｌ  Ｐｒｏｃｅｓｓｉｎｇ  Ｕｎｉｔ）１０２は、各種処理のための演算や論理判断などを行い、システムバス１０１に接続された各構成要素を制御する。この情報処理装置１００には、プログラムメモリとデータメモリを含むメモリが搭載されている。ＲＯＭ（Ｒｅａｄ−Ｏｎｌｙ  Ｍｅｍｏｒｙ）１０３は、プログラムメモリであって、後述する各種処理手順を含むＣＰＵ１０２による制御のためのプログラムを格納する。ＲＡＭ（Ｒａｎｄｏｍ  Ａｃｃｅｓｓ  Ｍｅｍｏｒｙ）１０４は、データメモリであり、ＣＰＵ１０２の上記プログラムのワーク領域、エラー処理時のデータの退避領域、上記制御プログラムのロード領域などを有する。入出力インタフェース１０７を介して外部記憶装置１１１などからＲＡＭ１０４にプログラムをロードすることで、プログラムメモリを実現しても構わない。ここで、外部記憶装置１１１は、例えば、メディア（記録媒体）と、当該メディアへのアクセスを実現するための外部記憶ドライブとで実現することができる。このようなメディアとしては、例えば、フレキシブルディスク（ＦＤ）、ＣＤ−ＲＯＭ、ＤＶＤ、ＵＳＢメモリ、ＭＯ、フラッシュメモリ等が知られている。また、外部記憶装置１１１は、ネットワークで接続されたサーバ装置などであってもよい。本実施形態のプログラムの実行に必要な情報は、ＲＯＭ１０３や外部記憶装置１１１に保持される。特に本実施形態では、操作オブジェクトが入力対象面にタッチしているタッチ状態と、近接している近接状態とのそれぞれで満たすべき条件の組み合せが、ある特定のタッチ操作が入力される場合に満たされる条件として予め対応付けられた辞書が保持される。入力インタフェース１０５は、ポインティングデバイスなどの入力部を制御し、入力信号を取得して、システムバス１０１を介してシステムに通知する。出力インタフェース１０６は、表示部を有する出力部に対して、少なくとも、後述する各種の処理を実行した結果の出力を制御する信号を出力する。
【００１３】
タッチセンサ１０８は、入力部が有する入力対象面に対するタッチ位置を検出し、入力インタフェース１０５に通知する。タッチセンサ１０８としては、抵抗膜方式、静電容量方式、赤外線方式、超音波方式、音響波方式、振動検出方式等の各種タッチパネルが利用できる。他にも、距離画像センサや、ステレオカメラなどの三次元空間での位置を検出できるもので入力対象面に触れたかどうかを検出し、入力対象面上で定義される位置情報を取得してもよい。
【００１４】
近接センサ１０９は、タッチ位置が検出される前後に、操作オブジェクトが入力対象面に近接している状態での位置情報を検出し、入力インタフェース１０５に通知する。本実施形態では、少なくとも操作オブジェクトの一連の移動において、タッチセンサ１０８がタッチ位置を検出された場合、その前後の近接状態での操作オブジェクトの位置（タッチ位置に対する連続位置）を検出する。ただし、近接センサ１０９が近接状態での位置（以下、単に近接位置という）として検出する位置情報は、タッチセンサ１０８によってタッチ位置が検出されない状態での位置であるとする。つまり、タッチセンサ１０８と近接センサ１０９が同時刻の操作オブジェクトに関して重複して位置情報を検出することがないように調整されているものとする。なお、近接状態にある操作オブジェクトの位置検出は、ホバー状態での検出、ホバー位置の検出と呼ばれることもある。近接センサ１０９としては、静電容量方式、赤外線方式、超音波方式、音響波方式などのタッチパネルを用いることができる。これらタッチパネルの感度を高めることで、操作オブジェクトが入力対象面に接触している状態だけでなく近接している状態でも位置情報を検出することが可能になる。タッチセンサ１０８と近接センサ１０９から出力される信号は、タッチパネルが出力する信号としてまとめて通知されてもよい。他にも、距離画像センサや、ステレオカメラなどの三次元空間での位置を検出することで、入力対象面から離れた状態での位置を取得することもできる。
【００１５】
ディスプレイ１１０は、情報処理装置１００での各種処理の実行結果を表示する。ディスプレイ１１０としては、液晶ディスプレイ、テレビモニタ、プロジェクタなどがある。本実施形態においては、タッチセンサ１０８及び近接センサ１０９である静電容量方式のタッチパネルが、ディスプレイ１１０である液晶ディスプレイの表示画面に重畳するように設置されたタッチパネルディスプレイを利用する。つまり、ディスプレイ上に設置されたタッチパネル表面が入力対象面に相当する。
【００１６】
本実施形態では、タッチパネルは、操作オブジェクトと、入力対象面とが接触する面を検出し、タッチ位置としてそのうちの１点の座標を特定する。さらに、静電容量の検出感度を高めた検出方式により、近接状態においても同様に、入力対象面に近接する指等の操作オブジェクトの位置を検出し、１点の座標を近接位置として特定する。この時、タッチ状態で検出された位置と、近接状態で検出された位置は区別され、タッチパネルからタッチ状態と近接状態の識別情報と共に、位置情報が情報処理装置へ通知される。なお、本実施形態においては、タッチセンサ１０８によって、入力対象面への接触が検出されている操作オブジェクトに関しては、近接センサ１０９は近接位置を検出しない。あくまでも近接位置としては、入力対象面と非接触状態にあり、かつ、位置情報を検出可能な程度に近接している操作オブジェクトの先端部（例えば、ユーザの指先）の位置情報が検出される。システムの構成やセンサに応じ、入力対象面に接触している操作オブジェクトの位置が、近接センサ１０９によっても検出され得る場合には、タッチセンサ１０８によって検出されるタッチ位置を優先して用いることとする。
【００１７】
図１（ｂ）は、本実施形態における情報処理装置１００の機能構成の一例を示すブロック図である。なお、以下、本実施形態では、操作オブジェクトとしてユーザの１本以上の指が使用される例を説明するが、ユーザがスタイラス等を利用する場合であっても行われる処理は同じである。
【００１８】
まず、本実施形態の情報処理装置１００は、タッチ位置検出部１２１、近接位置検出部１２２、タッチ状態取得部１２３、近接状態取得部１２４、認識部１２５、出力制御部１２６を有する。これらの各機能部は、ＣＰＵ１０２が、ＲＯＭ１０３に格納されたプログラムをＲＡＭ１０４に展開し、後述する各フローチャートに従った処理を実行することで実現されている。ただし、本発明は、これらの機能部を対応させた演算部や回路で構成されるハードウェアで実現する情報処理装置によっても同様に実現可能である。以下、各要素について説明する。
【００１９】
タッチ位置検出部１２１は、入力インタフェース１０５から通知された信号に基づき、ユーザによってタッチされたタッチ位置に関する情報を検出する。その際、本実施形態では、入力インタフェース１０５が、入力部であるタッチパネルが検出しているタッチ位置の情報を一定の間隔で参照し、タッチ位置の情報を取得する毎に順次、タッチ位置検出部１２１に信号を通知する。タッチ位置検出部１２１が検出するタッチ位置に関する情報には、少なくともタッチイベントの位置情報が含まれる。タッチイベントとは、通知されるタッチ情報の種別を表す情報である。本実施形態では、操作オブジェクトが新たに入力対象面に接触したこと、あるいは接触が継続されていることに応じたタッチ情報の通知時は「ＴＯＵＣＨ」というイベントが通知される。また、操作オブジェクトがタッチパネルからリリースされたことに応じたタッチ情報の通知時には「ＲＥＬＥＡＳＥ」というタッチイベントが通知される。タッチイベントが「ＴＯＵＣＨ」であった場合には、通知される情報には操作オブジェクトによってタッチされているタッチ位置を示す座標情報が含まれる。「ＲＥＬＥＡＳＥ」であった場合には、操作オブジェクトは入力対象面に接触していないので、タッチ位置の情報は検出されない。本実施形態において、タッチ位置検出部１２１が検出するタッチ位置に関する情報には、更に、タッチ位置あるいはタッチイベントが検出された時間を示す情報や、タッチ位置を識別するためのＩＤを含む。ＩＤには、タッチ位置が検出された順番を関連させた識別子を用いることで、検出されるタッチ位置の数が複数である場合に管理がしやすくなる。また、本実施形態では、タッチ位置検出部１２１は、ＩＤを基にタッチ位置の最新の情報を検出し、同じＩＤのタッチ位置が以前に検出された位置と異なる位置で検出されたことに基づき、タッチ位置が移動したことを検出することができる。ただし、同じＩＤのタッチ位置が以前に検出された位置と異なる位置で検出されたことに応じたタッチ情報の通知時に「ＭＯＶＥ」というタッチイベントが通知される検出システムに適用しても構わない。
【００２０】
近接位置検出部１２２は、タッチ位置検出部１２１と同様に、操作オブジェクトが入力対象面（タッチパネル表面）に近接している状態での位置に関する情報を検出する。なお、ここで検出する近接位置は、入力対象面に平行な二次元平面における、操作オブジェクトの先端部（例えば、ユーザの指先）の位置を示す座標である。本実施形態では、入力対象面に垂直な方向（高さ方向）の位置に関する情報は検出されない。また、入力対象面に接触している操作オブジェクトに関しては、近接位置は検出されない。ただし、タッチ位置検出部１２１が取得したタッチイベントの通知が「ＲＥＬＥＡＳＥ」であった場合には、操作オブジェクトは入力対象面から離れている。従って、「ＲＥＬＥＡＳＥ」イベントの通知と略同時のタイミングで、近接位置検出部１２２によって近接位置が検出されることがある。
【００２１】
本実施形態においては、タッチ位置検出部１２１と近接位置検出部１２２によって通知される情報（タッチイベント、ＩＤ、位置を示す座標情報、検出時刻等）の内容は、同じ形式に統一され、ＲＡＭ１０４上に保持されて処理される。ただし、近接位置検出部１２２による通知情報には、近接状態で検出したことを示す情報が付加される。例えば、近接フラグの値を「ＯＮ」とする。
【００２２】
タッチ状態取得部１２３は、タッチ位置検出部１２１にて検出されたタッチ位置に基づいて、少なくともタッチ状態における操作オブジェクトの移動距離を取得する。この他にも、操作オブジェクトの移動速度や移動方向など、認識する操作に応じて必要となる情報を取得する。近接状態取得部１２４は、近接位置検出部１２２にて検出された近接位置に基づいて、少なくとも近接状態における操作オブジェクトの移動距離を取得する。この他にも、操作オブジェクトの移動速度や移動方向など認識する操作に応じて必要となる情報取得可能である。
【００２３】
認識部１２５は、タッチ状態取得部１２３にて取得された情報と、近接状態取得部１２４にて取得された情報が、予め定められた条件を満たすか否かを判定することで、入力されたタッチ操作を特定する。例えば、操作オブジェクトによって入力される情報が「タップ」、「ムーブ」（入力対象面を任意の方向になぞる操作）、「フリック」（入力対象面を弾くように指を高速で動かしてリリースする操作）などの条件を満たすかの判定を行う。また、タッチ位置の軌跡によって図形や文字を描く手書き入力操作の場合、描かれた軌跡と予め用意された辞書情報などに基づいて、操作を特定する。なお、以下第１の実施形態は、認識部１２５が特定するタッチ操作は、１つの入力位置に関する情報に基づいて特定されるシングルタッチ操作であることを想定して説明する。従って、第１の実施形態では、タッチセンサ１０８及び近接センサ１０９によって複数の入力位置が検出された場合でも、そのうち最も早く検出された１点を対象にして、後述する処理に沿ってシングルタッチ操作を認識する。ただし、検出される位置情報が１点である場合にのみ、そうではない場合とは独立して以下の処理を行うとしてもよい。
【００２４】
出力制御部１２６は、入力された操作に応答する為、情報処理装置１００の各機能部を制御する。本実施形態では、少なくとも認識部１２５から通知された操作内容に基づいて表示画像を生成し、出力部であるディスプレイ１１０に出力する。
【００２５】
ここで、操作オブジェクトが入力対象面にタッチしている状態で得られる情報のみを利用してタッチ操作を認識する場合の課題を、「フリック」を例に挙げてより詳細に説明する。従来、「フリック」とは、操作オブジェクトが入力対象面からリリースされる直前の所定期間に、定められた閾値以上の移動量を移動したことを条件として認識されることが多い。利用例として、ユーザが、指を、ディスプレイ上の表示アイテムにタッチさせた後、高速移動をさせながらリリースする場合と、高速移動させずにリリースする場合を比較して説明する。指がリリース直前に高速に移動すると、それに応じて「フリック」が認識される。この場合、ディスプレイ上では、それまでタッチされていた表示アイテムが、タッチが終了した後でも高速移動に応じた慣性移動を続けるように表示されることが多い。一方で、指がリリースされる直前の所定期間に、「フリック」の条件を満たす程高速な移動をしていなければ、「フリック」は認識されない。指のリリースに伴う「フリック」が認識されなければ、表示アイテムに慣性移動は生じない。このように、装置に、「フリック」が行われたと判定されるか否かに応じて、ユーザに対するフィードバックは大きく異なるものとなる場合が多い。例えば、指がリリースされる際に、タッチセンサが指のブレを検出した場合、ユーザには指を高速に移動させた意図はないにも関わらず、タッチセンサが検出した値は「フリック」の条件を満たしてしまう場合がある。この場合、ディスプレイ上では、ユーザの意図に反して、表示アイテムが慣性移動してしまい、これはユーザにとっては装置の誤動作であると感じられてしまう。
【００２６】
同様に、ユーザの指が表示アイテムをタッチした直後に、タッチセンサが検出した指のブレ等が、指の移動として認識されてしまうと、ユーザは「タップ」を入力したつもりであるに関わらず、「ムーブ」が認識され、表示アイテムが移動してしまうことになる。これもまた、ユーザにとっては装置の誤動作であると感じられてしまう。
【００２７】
このような問題に対し、本実施形態は、検出されたタッチ位置と、該タッチ入力前またはタッチ入力後の近接状態での位置情報の両方に関する条件を組み合わせて用いることで、「タップ」と「ムーブ」、「フリック」を区別して認識可能とする例を説明する。具体的には、タッチが開始された直後のタッチ位置、及びその直前の近接状態での近接位置が、いずれも所定の条件を満たすほど移動した場合に、「ムーブ」が開始されたと認識する。さらに、タッチが終了された、つまり操作オブジェクトが入力対象面からリリースされた直前のタッチ位置が所定の条件を満たすだけ高速に移動し、かつ、その直後の近接状態での近接位置が十分移動した場合に、「フリック」が入力されたと認識する。
【００２８】
図２は、本実施形態において、情報処理装置１００がタッチ操作を判定する処理の流れの一例を示すフローチャートである。図２のフローチャートの処理は、入力インタフェース１０５からタッチセンサにおいて検出されたタッチ位置の情報又は近接センサにおいて検出された近接位置の情報の通知があったことに応じて起動される。また、入力インタフェース１０５からタッチセンサによって検出されていたタッチ位置、又は近接センサによって検出されていた近接位置が検出されなくなったことを示すリリースの通知があったことに応じても起動される。タッチ位置の情報あるいはリリースは、所定の時間間隔で、センサの最新の状況を参照して通知される。
【００２９】
まず、ステップＳ２０１では、タッチ位置検出部１２１がタッチ位置に関する情報を検出する。タッチ位置に関する情報には、通知されたタッチイベントが「ＴＯＵＣＨ」である場合には少なくともタッチされた位置の情報、タッチの検出時刻、ＩＤが含まれる。また、通知されたタッチイベントが「ＲＥＬＥＡＳＥ」であった場合には、少なくともリリースされたタッチ位置のＩＤが含まれる。タッチ位置検出部１２１は、検出した情報をＲＡＭ１０４に保持する。本実施形態では、ＲＡＭ１０４には、少なくとも各ＩＤのタッチ位置が最初に検出された時の情報と、最後（最新）に検出された時の情報、及び前回検出された時の情報が保持される。これは、タッチ開始時からの移動距離、及び、前回検出時からの移動距離を求めるためである。従って、既に検出されているＩＤのタッチ位置の移動が検出された場合には、直近２回分の検出で得られた情報を保持し、それより古い情報のうち、最初の検出に関する情報以外は順次削除していく。ただし、蓄積する情報はこれによらず、装置のリソースに応じて設定することができる。例えば、あるＩＤのタッチ位置が最初に検出されてから、検出されなくなる（リリースされる）までの全ての情報を蓄積してもよい。なお、入力対象面に触れている操作オブジェクトがない状態では、タッチセンサ１０８からタッチ位置の情報通知が無いため、タッチ位置検出部１２１はタッチ位置を検出しない。
【００３０】
次に、ステップＳ２０２では、近接位置検出部１２２が近接位置に関する情報を検出する。近接位置に関する情報は、タッチの場合と同様、近接位置が検出されている間は少なくとも位置情報、検出時刻、ＩＤが含まれる。操作オブジェクトが入力対象面から十分離れて近接位置が検出されなくなった場合は、少なくとも近接位置が検出されなくなったことを示すイベントとＩＤが含まれる。近接位置検出部１２２は、検出した情報をＲＡＭ１０４に保持する。この際、ＩＤ、近接位置を示す座標情報、検出時刻等に加えて、近接状態で検出されたことを示す情報を保持する。例えば、近接フラグを「ＯＮ」とする。ステップＳ２０２では、入力対象面に近接する操作オブジェクトがない場合（操作オブジェクトが入力対象面に接触している場合も含む）は、近接センサ１０９からの近接位置に関する情報の通知は無い。従って、近接位置検出部１２２は近接位置を検出せず、処理はステップＳ２０３に進む。
【００３１】
ステップＳ２０３では、タッチ状態取得部１２３が、タッチ位置検出部１２１がステップＳ２０１においてタッチ位置を検出したか否かを判定する。例えば、ＲＡＭ１０４に保持された情報を参照することで判定を行う。タッチ位置検出部１２１がタッチ位置を検出した場合には（ステップＳ２０３でＹＥＳ）、処理はステップＳ２０４に進む。一方、タッチ位置検出部１２１がタッチ位置を検出しなかった場合には（ステップＳ２０３でＮＯ）、処理はステップＳ２０５に進む。
【００３２】
ステップＳ２０４では、タッチ状態取得部１２３が、タッチ位置検出部１２１が検出したタッチ位置に関する情報を用いて、入力部に対する操作オブジェクトの移動に関する情報を取得する。例えば、移動距離や移動速度、移動方向などの少なくともいずれかを取得する。本実施形態では、操作オブジェクトが入力部にタッチしたことを最初に検出した時点での座標点から、検出された最新の座標点までの距離を計測により取得する。
【００３３】
一方、ステップＳ２０５では、近接状態取得部１２４が、近接位置検出部１２２がステップＳ２０２において近接位置を検出したか否かを判定する。ここでも、ＲＡＭ１０４に保持された情報を参照することで判定を行う。近接位置検出部１２２が近接位置を検出した場合には（ステップＳ２０５でＹＥＳ）、処理はステップＳ２０６に進む。一方、近接位置検出部１２２が近接位置を検出しなかった場合には（ステップＳ２０５でＮＯ）、処理はステップＳ２０８に進む。
【００３４】
ステップＳ２０６では、近接状態取得部１２４が、操作オブジェクトが入力部にタッチする直前の近接状態で、近接位置検出部１２２によって検出された近接位置に関する情報を用いて、タッチ直前の操作オブジェクトの移動に関する情報を取得する。例えば、操作オブジェクトの移動距離や移動速度、移動方向などを取得する。本実施形態では、移動距離を取得する場合を説明する。移動距離の取得は、操作オブジェクトが入力部に近接したことを最初に検出した時点での座標点から、検出された最新の座標点までの移動距離を計測することで行う。本実施形態では、操作オブジェクトが入力部にタッチする前の状態かどうかを判定する方法として、フラグを参照する方法を用いる。例えばステップＳ２０３にてタッチ位置を検出したか否かにおいてＹＥＳとなった場合にタッチフラグを「ＯＮ」として、ＲＡＭ１０４に保持された情報に関連付けるなどするとよい。タッチフラグの値が「ＯＮ」でなければ、タッチがなされる前であると判別できる。
【００３５】
ステップＳ２０７では、近接状態取得部１２４が、操作オブジェクトが入力部から離れた直後の近接状態で、近接位置検出部１２２によって検出された近接位置に関する情報を用いて、タッチ直後の操作オブジェクトの移動に関する情報を取得する。ここでも例えば、入力部に対する操作オブジェクトの移動距離や移動速度、移動方向などを取得する。本実施形態では、操作オブジェクトが入力部から離れた後に近接状態に移行して最初に検出した時点での座標点から、検出された最新の座標点までの移動距離を取得する。操作オブジェクトが入力部から離れた後の状態かどうかは、タッチフラグの値が「ＯＮ」であれば、タッチが行われてリリースされた後だと判別できる。
【００３６】
一方、ステップＳ２０８では、タッチ位置と近接位置のどちらも検出しておらず、操作前もしくは操作後の状態だとみなされるので、ＲＡＭ１０４に保持されている情報の初期化を行う。本実施形態では、移動距離の取得のために保持している移動開始の座標点や、現在の座標点、タッチフラグを初期化する。ただし例えば、複数回のタッチで１つの操作を構成する種類の操作等を認識したい場合には、操作オブジェクトが入力対象面から離れる度に情報を初期化してしまうと不都合な場合がある。従って、操作の特定が行われた直後の１回のみ、ステップＳ２０８で取得結果の初期化を行い、そうではないタイミングではステップＳ２０８を省略して情報は保持し続けてもよい。
【００３７】
ステップＳ２０９では、認識部１２５が、ステップＳ２０４で取得したタッチ状態取得結果と、ステップＳ２０６、ステップＳ２０７で取得した近接状態取得結果と、予め用意された辞書を参照し、「ムーブ」が開始されたか否かを判定する。以下では、「ムーブ」が開始されたか否かの判定処理を、ムーブ判定という。辞書には、タッチ状態の条件と、近接状態の条件が「ムーブ」と対応付けられているものとする。本ステップでは、タッチ状態取得結果と近接状態取得結果がそれぞれの条件を満たした場合、「ムーブ」が開始されたと判定する。ステップＳ２０９のムーブ判定処理の詳細は後述する。
【００３８】
ステップＳ２１０では、認識部１２５が、ステップＳ２０４で取得したタッチ状態取得結果と、ステップＳ２０６、ステップＳ２０７で取得した近接状態取得結果と、予め用意された辞書を参照し、「フリック」が入力されたか否かを判定する。以下では、「フリック」が入力されたか否かの判定処理を、フリック判定という。ステップＳ２０９と同様に、タッチ状態取得結果と近接状態取得結果がそれぞれ所定の条件を満たした場合、「フリック」が入力されたと判定する。ステップＳ２１０のフリック判定処理の詳細は後述する。
【００３９】
次に、図３のフローチャートを参照して、図２のステップＳ２０９で実行される「ムーブ」を判定する処理の流れの一例を説明する。
【００４０】
ステップＳ３０１では、認識部１２５が、タッチ中か否かを判定する。判定方法としては、ＲＡＭ１０４に保持された情報を参照することで、判定すればよい。他の方法としては、ステップＳ２０３の判定結果をフラグ情報等として保持しておき、それを参照するとしてもよい。ここで、タッチ中と判定された場合には（ステップＳ３０１でＹＥＳ）、処理はステップＳ３０２に進む。一方、タッチ中でないと判定された場合には（ステップＳ３０１でＮＯ）、処理はステップＳ３１０に進む。
【００４１】
ステップＳ３０２では、認識部１２５が、ムーブフラグの値が「ＯＮ」であるか否かを判定する。ムーブフラグは、後段のステップＳ３０５の処理にて「ムーブ」が開始されたと判断された場合に、値が「ＯＮ」に設定され、ＲＡＭ１０４に保持される。ここで、ムーブフラグの値が「ＯＮ」の場合には（ステップＳ３０２でＹＥＳ）、処理はステップＳ３０８に進む。ムーブフラグの値が「ＯＦＦ」の場合には（ステップＳ３０２でＮＯ）、ステップＳ３０３に進む。
【００４２】
ステップＳ３０３では、認識部１２５が、ステップＳ２０６にて取得されたタッチ前の近接状態が第１条件を満たすか否かを判定する。第１条件とは、前記操作オブジェクトが前記入力対象面に対して接触する前に近接していた状態で、前記入力対象面に平行な方向に十分移動していたか否かを判定するための条件である。例えば、タッチ前の近接状態での移動距離が予め設定された距離の閾値Ｔ１より大きいか否かを判定する。近接状態での移動距離とは、近接位置検出部１２２がタッチ前の操作オブジェクトの近接を検出し始めた時の位置から、タッチ前の近接状態で検出されたうち最後（最新）の位置までの、入力対象面に平行な方向の移動距離とする。この移動距離が閾値Ｔ１を超えるということは、ユーザは「指を動かしながら入力対象面に近づけた」ことを示し、タッチ前から、指を動かす「ムーブ」を行うことが意図されていた可能性が高いとみなすことができる。タッチ前の近接状態が第１条件を満たすと判定される場合には（ステップＳ３０３でＹＥＳ）、ステップＳ３０７に進む。タッチ前の近接状態が第１条件を満たさないと判定される場合には（ステップＳ３０３でＮＯ）、ステップＳ３０４に進む。
【００４３】
ステップＳ３０４では、認識部１２５が、ステップＳ２０４にて取得されたタッチ状態が第２条件を満たすか否かを判定する。例えば、タッチしてからの移動距離が予め設定された距離の閾値Ｔ２より大きいか否かを判定する。タッチしてからの移動距離とは、タッチ位置検出部１２１がタッチ前の操作オブジェクトのタッチを検出していない状態から、タッチを検出した状態になった時のタッチ位置から、最新（現在）のタッチ位置までの距離である。つまり閾値Ｔ２は、操作オブジェクトがタッチ状態で移動した距離が、「ムーブ」として認識されるのに十分なほど大きいかを判定するための閾値である。本実施形態では、ステップＳ３０４の処理が行われる場合、ステップＳ３０３では第１条件が満たされていないので、「ムーブ」が行われる可能性が低い。そのため、本実施形態では、第２条件は、ステップＳ３０３にてタッチ前近接状態が第１条件を満たす場合に判定される第３条件よりも厳しい条件が設定される。従って、閾値Ｔ２の大きさは、ステップＳ３０３で第１条件が満たされ、「ムーブ」が行われる可能性が高い場合よりも大きい値を用いる。そのため、タッチ後の操作オブジェクトの多少のブレでは「ムーブ」が認識されにくくなる。タッチ状態が第２条件を満たすと判定される場合には（ステップＳ３０４でＹＥＳ）、ステップＳ３０５に進む。タッチ状態が第２条件を満たさないと判定される場合には（ステップＳ３０４でＮＯ）、本処理を終了し、図２のフローチャートへ戻る。
【００４４】
ステップＳ３０５では、認識部１２５が、「ムーブ」が開始されたことを示すムーブフラグの値を「ＯＮ」にする。ステップＳ３０６では、認識部１２５が、「ムーブ」が開始された事を示すムーブイベントを、出力制御部１２６に通知する。
【００４５】
一方、ステップＳ３０７では、認識部１２５が、ステップＳ２０４にて取得されたタッチ状態が第３条件を満たすか否かを判定する。例えば、タッチしてからの移動距離が予め設定された距離の閾値Ｔ３より大きいか否かを判定する。閾値Ｔ３もまた、操作オブジェクトがタッチ状態で移動した距離が、「ムーブ」として認識されるのに十分なほど大きいかを判定するための閾値である。ステップＳ３０７の処理は、ステップＳ３０３にてタッチ前近接状態が第１条件を満たし、「ムーブ」が行われる可能性が高いとみなされる場合に実行されるため、第３条件は、前述の第２条件よりも満たされ易い条件が設定される。つまり、閾値Ｔ３としては、閾値Ｔ２よりも小さい値が設定される。そのため、ユーザがタッチ後に指等の操作オブジェクトを移動させれば、速やかに「ムーブ」の開始が認識され、ユーザの「ムーブ」への追従性を高めることができる。タッチ状態が第３条件を満たすと判定された場合には（ステップＳ３０７でＹＥＳ）、ステップＳ３０５に進む。タッチ状態が第３条件を満たさないと判定された場合には（ステップＳ３０７でＮＯ）、本処理を終了し、図２のフローチャートへ戻る。
【００４６】
このように、本実施形態の処理において、ステップＳ３０５において「ムーブ」が開始されたと判定される流れは２通りある。１つ目は、ステップＳ３０３にてタッチ前近接状態が第１条件を満たしていない、つまり、「ムーブ」が入力される可能性は低いとみなされたが、ステップＳ３０４で、実際にタッチされた状態での移動距離が大きめに設定された閾値Ｔ２を超えた場合である。２つ目は、ステップＳ３０３にてタッチ前近接状態が条件を満たし、「ムーブ」が入力される可能性が高いと判定された上で、ステップＳ３０７にて実際にタッチされた状態での移動距離が低めに設定された「ムーブ」の閾値を超えた場合である。これらのいずれかの流れに沿って、「ムーブ」フラグの値が「ＯＮ」と設定されていた場合に、ステップＳ３０２の処理が実行されると、処理はステップＳ３０８に進む。
【００４７】
ステップＳ３０８では、認識部１２５が、ステップＳ２０４にて取得されたタッチ状態が第４条件を満たすか否かを判定する。例えば、タッチ中の座標点を保持しておき、前回保持した座標点から現在の座標点までの移動距離が予め設定された距離の閾値Ｔ４より大きいか否かを判定する。閾値Ｔ４もまた、操作オブジェクトがタッチ状態で移動した距離が、「ムーブ」として認識されるのに十分なほど大きいかを判定するための閾値である。ただし、上述した第２条件および第３条件は、タッチ開始直後のタッチ位置に関し、「ムーブ」が開始されたかを判定するための条件であったのに対し、第４条件は、既に開始された「ムーブ」が継続されているかを判定するための条件である。そこで本実施形態では、第４条件は、前述の第２条件の閾値よりもさらに満たされ易い条件を設定する。すなわち、距離の閾値Ｔ４は、閾値Ｔ２よりも小さい値が設定される。これにより、「ムーブ」が既に開始されている場合は、操作オブジェクトがリリースされない限りは、少しの移動があれば速やかに「ムーブ」として認識されるので、ユーザの「ムーブ」への追従性を高めることができる。タッチ状態が第４条件を満たすと判定される場合には（ステップＳ３０８でＹＥＳ）、ステップＳ３０９に進む。タッチ状態が第４条件を満たさないと判定される場合には（ステップＳ３０８でＮＯ）、本処理を終了し、図２のフローチャートへ戻る。
【００４８】
ステップＳ３０９では、認識部１２５が、「ムーブ」が行われた旨をムーブイベントとして、出力制御部１２６に通知する。
【００４９】
ステップＳ３１０では、認識部１２５が、ムーブフラグの値を「ＯＦＦ」にする。これは、ステップＳ３０１において、タッチ中でないと判定された場合、タッチ操作中ではないので、ムーブ判定を行う必要がないからである。
【００５０】
以上がステップＳ２０９で実行される「ムーブ」の判定処理である。なお、図３のフローチャートの例では、より判定の精度を高めるため、ステップＳ３０３の結果によりタッチ判定の条件を、第２条件または第３条件のいずれとするかを切り替えている。しかし、処理の簡素化のために、例えばステップＳ３０４を省略し、ステップＳ３０３の条件を満たし、かつ、ステップＳ３０７の条件を満たす場合に、ムーブイベントが通知されるように変形することもできる。
【００５１】
次に、図４のフローチャートを参照して、ステップＳ２１０で実行される「フリック」を判定する処理の流れの一例を説明する。
【００５２】
ステップＳ４０１では、認識部１２５が、リリース後か否かを判定する。本実施形態では、ＲＡＭ１０４に保持された一連の情報を参照し、直前に、タッチ位置を検出している状態から、タッチ位置が検出していない状態の変化があったかで判定を行うとよい。なお、他の判定方法として、例えばタッチ位置を検出している状態から、タッチ位置を検出していない状態への変化があった時点で「ＯＮ」と設定されるリリース後フラグを参照してもよい。この場合、リリース後フラグは、タッチ位置が再度検出された際に「ＯＦＦ」にすればよい。いずれの方法でも、本実施形態では、操作オブジェクトがタッチパネルからリリースされた直後であることを判定しているが、リリース後どれだけ時間が経過した時点までを「リリース後」とするかは、認識するコマンドや装置の仕様に応じて設定されればよい。リリース後であると判定された場合には（ステップＳ４０１でＹＥＳ）、処理はステップＳ４０２に進む。一方、リリース直後でないと判定された場合には（ステップＳ４０１でＮＯ）、処理はステップＳ４０８に進む。
【００５３】
ステップＳ４０２では、認識部１２５が、フリックフラグの値が「ＯＮ」であるか否かを判定する。フリックフラグは、後段のステップＳ４０５の処理にて「フリック」が行われたと判断された場合に、値が「ＯＮ」に設定され、ＲＡＭ１０４に保持される。ここで、フリックフラグの値が「ＯＮ」の場合には（ステップＳ４０２でＹＥＳ）、本処理を終了し、図２のフローチャートへ戻る。一方でフリックフラグの値が「ＯＦＦ」の場合には（ステップＳ４０２でＮＯ）、ステップＳ４０３に進む。
【００５４】
ステップＳ４０３では、認識部１２５が、ステップＳ２０４にて取得されたタッチ状態が第５条件を満たすか否かを判定する。第５条件は、操作オブジェクトのリリースが、「フリック」の定義に沿ったものであったか、つまり、入力対象面を弾くように、所定のスピードより高速な移動を伴ってリリースされたかを判定するための条件である。例えば、リリース直前の移動速度が予め設定された速度の閾値Ｔ５より大きいか否かを判定する。リリース直前の移動速度とは、タッチ位置検出部１２１がリリース直前に検出していたタッチ位置を示す座標点から所定の時間前の時点でタッチしていた座標点までの距離を所定の時間で割った値となる。ただし、本実施形態では、割り算をして速度を求める処理を省略し、所定の時間における移動距離の大きさと移動距離の閾値Ｔ５との比較処理によって、フリック判定を行うこともできる。リリース直前の移動速度が閾値Ｔ５を超えた場合、「フリック」が行われた可能性が高くなる。リリース直前の移動速度が予め設定された閾値より大きい場合には（ステップＳ４０３でＹＥＳ）、ステップＳ４０７に進む。リリース直前の移動速度が予め設定された閾値Ｔ５より小さい場合には（ステップＳ４０３でＮＯ）、ステップＳ４０４に進む。
【００５５】
ステップＳ４０４では、認識部１２５が、ステップＳ２０７にて取得されたリリース後近接状態が第６条件を満たすか否かを判定する。例えば、リリース後の近接状態での移動距離が予め設定された距離の閾値Ｔ６より大きいか否かを判定する。ここで近接状態での移動距離とは、近接位置検出部１２２がリリース直後の操作オブジェクトの近接を検出した時点での位置からの現在までに、入力対象面に対して平行な方向に移動した距離である。この移動距離が閾値Ｔ６を超えるということは、ユーザが「フリック」の勢いで、リリース後も、指等の操作オブジェクトを、入力対象面に対して平行な方向に長い距離を移動させたと考えられ、「フリック」が行われた可能性が高くなる。本実施形態では、ステップＳ４０４の処理が行われる場合、ステップＳ４０３では第５条件が満たされてないので、「フリック」が入力される可能性は低いとみなされる。そのため、本実施形態では、第６条件は、ステップＳ４０３にてタッチ状態が第５条件を満たす場合に判定される第７条件よりも厳しい条件が設定される。従って距離の閾値Ｔ６の大きさは、ステップ４０３で第５条件が満たされ、「フリック」が行われる可能性が高い場合よりも大きい値が設定される。ステップＳ４０３にてタッチ状態が第５条件を満たしていない場合、「フリック」が行われた可能性が低いので、「ムーブ」が「フリック」と誤認識されることを低減するために、フリック判定の閾値を大きく設定する。移動距離が予め設定された距離の閾値Ｔ６より大きい場合には（ステップＳ４０４でＹＥＳ）、ステップＳ４０５に進む。移動距離が予め設定された距離の閾値Ｔ６より小さい場合には（ステップＳ４０４でＮＯ）、本処理を終了し、図２のフローチャートへ戻る。
【００５６】
ステップＳ４０５では、認識部１２５が、「フリック」が入力されたことを示すフリックフラグの値を「ＯＮ」に設定する。ステップＳ４０６では、認識部１２５が、「フリック」が行われた旨をフリックイベントとして出力制御部１２６に通知する。
【００５７】
ステップＳ４０７では、認識部１２５が、ステップＳ２０７にて取得されたリリース後近接状態が第７条件を満たすか否かを判定する。例えば、リリース後の近接状態での移動距離が予め設定された距離の閾値Ｔ７より大きいか否かを判定する。なお、第７条件では、前述の第６条件の閾値よりも小さい値が設定されている。ここでは、ステップＳ４０３にてタッチ状態が第５条件を満たす場合、「フリック」が行われた可能性が高いので、ユーザの「フリック」への追従性を優先するために、フリック判定の閾値を下げている。フリック判定の閾値が小さいため、リリース後の指等の操作オブジェクトの微小な移動によって満たされ易く、リリース後速やかに「フリック」が入力されたと認識されることになる。この移動距離が予め設定された閾値Ｔ７より大きい場合には（ステップＳ４０７でＹＥＳ）、ステップＳ４０５に進む。この移動距離が予め設定された閾値Ｔ７より小さい場合には（ステップＳ４０７でＮＯ）、本処理を終了し、図２のフローチャートへ戻る。
【００５８】
本実施形態において、処理がステップＳ４０５に至る流れは２通りある。１つ目は、タッチ状態について設けられた第５条件が満たされない場合（ステップＳ４０３でＮＯ）である。言いかえれば、「フリック」が入力される可能性は低いとみなされるが、タッチ後の近接状態について設けられた第６条件が満たされる場合（ステップＳ４０４でＹＥＳ）である。２つ目は、タッチ状態について設けられた第５条件が満たされ（ステップＳ４０３でＹＥＳ）、「フリック」が入力される可能性は高いとみなされた上で、タッチ後の近接状態について設けられた第７条件が満たされる場合（ステップＳ４０７でＹＥＳ）である。これらのいずれかの流れに沿って、「フリック」フラグの値が「ＯＮ」と設定された場合に、ステップＳ４０２の処理が実行されると、図４のフローチャートの処理は終了し、処理は図２に示されたメイン処理に返る。
【００５９】
ステップＳ４０８では、認識部１２５が、フリックフラグの値を「ＯＦＦ」に設定する。これは、ステップＳ４０１において、リリース後でないと判定された場合、「フリック」判定を行う必要がないからである。
【００６０】
以上がステップＳ２１０で実行される「フリック」の判定処理である。なお、図４に示した例では、より判定の精度を高めるために、ステップＳ４０３の結果によりフリック判定の条件を、第６条件または第７条件のいずれとするか切り替えている。しかし、処理の簡素化のために、例えばステップＳ４０４を省略し、ステップＳ４０３の条件を満たし、かつ、ステップＳ４０７の条件を満たす場合に、フリックイベントが通知されるように変形することもできる。
【００６１】
なお、上述したステップＳ２０９で判定する「ムーブ」、及びステップＳ２１０で判定する「フリック」は、特定のタイミングでのタッチ位置の移動の有無に応じて異なる操作として解釈される複数の操作の一例である。区別する操作が異なる場合は、それに応じた条件に基づいて判定を行えばよい。また、本実施形態では、ムーブ判定とフリック判定の２つの処理を行っているが、これに限らず、判定する操作を増やしたり減らしたり、入れ替えてもよい。また、個別の操作の判定は、図２のフローチャートのタッチ操作判定処理の後段で行う例を示したが、これに限らない。例えば、タッチ中であるかの判定（ステップＳ３０１）やリリース判定（ステップＳ４０１）を、ステップ図２のステップＳ２０３やステップＳ２０５と共通化することで、図２のフローチャートの前段に埋め込んでもよい。その場合、判定が不要なタイミングでは、ムーブ判定処理とフリック判定処理が呼び出されないので、処理工程を減らすことができる。ただし、本実施形態のように、タッチ状態及び近接状態の取得処理と、後段の操作の判定処理を分離することで、プログラム上で、個別の操作の判定の追加や削除が容易となる。また、操作の判定処理間の依存関係を疎にできるため、メンテナンス性が向上する。
【００６２】
以上説明したように、本実施形態の情報処理装置１００は、検出されたタッチ位置と、該タッチ入力前またはタッチ入力後の近接状態での位置情報の両方に関する条件に基づいて、入力されたタッチ操作を認識する。これにより、ユーザの意図に反した誤認識の発生を低減している。
【００６３】
＜操作例１＞
以下では、具体的に、第１の実施形態による情報処理装置１００をユーザが操作した場合に実行される動作を操作例として説明する。
【００６４】
まず、図５は、本実施形態で使用するタッチパネルの一例を示す図である。タッチパネル表面の入力領域５００は、図面に向かって左上を原点とし、ｘ軸方向に９６０ｄｏｔ、ｙ軸方向に５４０ｄｏｔの幅を持つ座標平面として、タッチ位置及び近接位置を座標情報として扱う。タッチパネルの解像度は、ディスプレイに合わせてあるものとし、単位はｄｏｔとする。タッチ位置及び近接位置の検出情報は、入力インタフェース１０５から２０ｍｓ毎に通知されるものとする。なお、入力領域５００は、入力対象面としてのタッチパネル表面の全体であってもよいし、入力対象面内の一部の領域であってもよい。操作オブジェクトとしてのユーザの指５０１は、入力領域５００に対して「ムーブ」、あるいは「タップ」を入力する。なお、本実施形態について「タップ」というときは、１回分のタップが操作入力として認識される「シングルタップ」のことを差す。
【００６５】
まず、タッチする直前の近接状態において、入力対象面に平行な方向に所定の距離以上移動している場合と移動していない場合とで、「ムーブ」が開始されたか否かを判定する例を説明する。ここで図６（ａ）（ｂ）は、ユーザの指が「ムーブ」の入力を開始する場合と、「タップ」の入力を開始する場合を比較する図である。なお図６の各図は、図５における指５０１の近傍を、ｙ軸に向かう向きに見た状態に相当する。
【００６６】
図６（ａ）において、点５１１〜点５１７のそれぞれは、ユーザの指が「ムーブ」の入力を開始した場合に、検出される一連の入力位置である。それぞれは、図５で示された座標平面に基づくｘｙ座標で定義される。ここでは、点５１１〜点５１４が、近接センサ１０９によって検出された近接位置であり、点５１５〜５１７が、タッチセンサ１０８によって検出されたタッチ位置である。
【００６７】
また図６（ｂ）において、点５２１〜点５２４のそれぞれは、ユーザの指が、「タップ」を行う、つまり「ムーブ」を開始しない場合に、タッチパネルに接触するまでに検出される一連の入力位置である。ここでは、点５２１〜点５２２が、近接センサ１０９によって検出された近接位置であり、点５２３〜点５２４が、タッチセンサ１０８によって検出されたタッチ位置である。
【００６８】
まず、図６（ａ）を参照して、本実施形態の情報処理装置１００において、ユーザが「ムーブ」を開始する場合に実行される処理を説明する。近接センサ１０９は、指５０１が、入力対象面の近接範囲に入って来たことで、最初に点５１１を近接位置として検出する。近接位置が検出されたことに応じて、図２のフローチャートの処理が開始される。点５１１が検出された時点では、まだタッチ前の状態のため、タッチ位置は検出されず（ステップＳ２０３でＮＯ）、点５１１という近接位置を検出している（ステップＳ２０５でＹＥＳ）。ただし、まだ近接位置の情報が１つしか保持されておらず、タッチもなされていないので、タッチ前近接状態での移動距離の取得（ステップＳ２０６）、リリース後近接状態での移動距離の取得（ステップＳ２０７）はなされずに次の処理に進む。この段階では「ムーブ」フラグ、及び「フリック」フラグはそれぞれ初期値の「ＯＦＦ」であるので、ムーブ判定（ステップＳ２０９）、フリック判定（ステップＳ２１０）ともに判定結果は「否」となり、図２のフローチャートの処理は終了する。以降同様に、点５１２〜点５１７が検出される度に、図２のフローチャートの処理が繰り返される。
【００６９】
点５１２が近接センサ１０９により検出されると、最初に検出され、保持されている点５１１の位置情報との差分から、タッチ前近接状態における移動距離が取得される（ステップＳ２０６）。操作例１では、点５１１と点５１２間の直線距離が、約８．２ｄｏｔと算出される。ただし、移動距離は２点間の直線距離を算出する方法に限らず、例えば、ｘ軸方向とｙ軸方向それぞれで差分を算出してもよい。以降は点５１１の検出時と同様、リリース後近接状態での移動距離は取得されず（ステップＳ２０７）、ムーブ判定（ステップＳ２０９）、フリック判定（ステップＳ２１０）ともに判定結果は「否」となり、図２のフローチャートの処理は終了する。点５１３〜点５１４の近接位置が検出される度に、点５１２の時と同様の処理により、点５１１から最新の点までの移動距離を取得する。図６（ａ）の例では、点５１４が検出された時点で、最初の点からの移動距離は約３２．０ｄｏｔと算出される。
【００７０】
次に、点５１５がタッチセンサ１０８により検出される。このとき、タッチ位置が検出されたが（ステップＳ２０３でＹＥＳ）、まだタッチ位置の情報が１つしか保持されていないので、タッチ状態での移動距離の取得（ステップＳ２０４）はなされずにムーブ判定処理に進む。まず、この時点ではタッチ中なので（ステップＳ３０１でＹＥＳ）、ムーブフラグが「ＯＦＦ」のため（ステップＳ３０２でＮＯ）、ステップＳ３０３においてタッチ前近接状態が第１条件を満たすか否かが判定される。操作例１において、第１条件は「タッチ前近接状態での移動距離が閾値Ｔ１＝３０ｄｏｔ以上であること」とする。図６（ａ）に示す例では、タッチ前近接状態での移動距離が約３２．０ｄｏｔのため、閾値Ｔ１の３０ｄｏｔ以上を満たす（ステップＳ３０３でＹＥＳ）。ただし、まだタッチ状態での移動距離が算出されていないため、タッチ状態は第３条件を満たさないと判定され（ステップＳ３０７でＮＯ）、処理は図２のフローチャートに戻る。「フリック」フラグは「ＯＦＦ」であるためフリック判定は「否」となり（ステップＳ２１０）、図２のフローチャート処理は終了する。
【００７１】
次に、点５１６がタッチセンサ１０８により検出されると、前回検出され、保持されている点５１５の位置情報との差分から、タッチ状態における移動距離が取得される（ステップＳ２０４）。操作例１では、近接状態の場合と同様に、直線距離を算出することで取得する。図６（ａ）の例では、点５１５から点５１６までの移動距離は約２０．０ｄｏｔと求められる。ムーブ判定（ステップＳ２０９）では、点５１５の時と同様に、タッチ前近接状態において第１条件が満たされるので（ステップＳ３０３）、ステップＳ３０７において、タッチ状態での移動距離は第３条件を満たすか否かが判定される。ここで、第３条件を、タッチ状態での移動距離が閾値Ｔ３＝１０ｄｏｔ以上であることであるとすると、点５１５から点５１６までの移動距離は約２０．０ｄｏｔだったため、第３条件を満たす（ステップＳ３０７でＹＥＳ）。従って、ムーブフラグが「ＯＮ」に設定され、出力制御部１２６など情報処理装置１００の他のモジュールに対して「ムーブ」イベントが通知される。
【００７２】
点５１７がタッチセンサ１０８により検出されると、ムーブ判定に至るまでの処理は、点５１６の場合と同様の流れに従って処理される。なおステップＳ２０４においては、点５１６から点５１７までの移動距離は、２３ｄｏｔであると算出される。さらに、２３ｄｏｔを、前回の位置検出から今回の位置検出までの周期（例えば２０ｍｓ）で割ることによって移動速度を算出する。ムーブ判定では、ムーブフラグが「ＯＮ」であることから（ステップＳ３０２でＹＥＳ）、ステップＳ３０８において、前回のタッチ位置からの移動距離が第４条件を満たすか否かが判定される。ここで、第４条件を、前回のタッチ位置からの移動距離が閾値Ｔ４＝１ｄｏｔ以上であることであるとすると、点５１６から点５１７までの移動距離は２３ｄｏｔで第４条件を満たす。従って、ムーブイベントが通知される（ステップＳ３０６）。
【００７３】
このように本実施形態では、ユーザが指５０１を、タッチパネルに接触させる前の近接状態で既に移動させ始めている場合、タッチ状態での移動距離の閾値を低くするので、「ムーブ」が入力された場合の応答が速やかになり、ユーザにとって操作性が向上する。
【００７４】
次に、図６（ｂ）を参照して、本実施形態の情報処理装置１００において、ユーザが「タップ」を開始する場合に実行される処理を説明する。なお、図６（ｂ）では、指５０１がリリースする段階で検出される位置は示されていないので、実際には、この段階で「タップ」が入力されるか、あるいは「ムーブ」や「フリック」が入力されるのかは区別できない。
【００７５】
図６（ｂ）に示す例の場合も、点５２１〜点５２４が検出される度に、図２のフローチャートの処理が繰り返される。点５２１〜５２２が近接センサ１０９に検出された場合の処理は図６（ａ）の点５１１〜点５１４と同様の流れにそって実行される。図６（ｂ）の場合、点５２１から点５２２の移動距離は、約５．８ｄｏｔと算出される。
【００７６】
続いて点５２３がタッチセンサ１０８により検出される。このとき、タッチ位置が検出されたが（ステップＳ２０３でＹＥＳ）、まだタッチ位置の情報が１つしか保持されていないので、タッチ状態での移動距離の取得（ステップＳ２０４）はなされずにムーブ判定処理に進む。この時点はタッチ中なので（ステップＳ３０１でＹＥＳ）、「ムーブ」フラグが「ＯＦＦ」のため（ステップＳ３０２でＮＯ）、ステップＳ３０３においてタッチ前近接状態が第１条件を満たすか否かが判定される。操作例１において、第１条件の閾値Ｔ１は３０ｄｏｔである。図６（ｂ）に示す例の場合、点５２１から点５２２の移動距離は、約５．８ｄｏｔであって閾値Ｔ１よりも小さいので、第１条件は満たされない（ステップＳ３０３でＮＯ）。ただし、まだタッチ状態での移動距離が算出されていないため、タッチ状態は第２条件を満たさないと判定され（ステップＳ３０４でＮＯ）、図２のフローチャートの処理に戻り、フリック判定は「否」となる（ステップＳ２１０）。
【００７７】
点５２４がタッチセンサ１０８により検出されると、前回検出され、保持されている点５２３の位置情報との差分から、タッチ状態における移動距離が取得される（ステップＳ２０４）。ここで点５２３から点５２４までの移動距離は、約１５．０ｄｏｔである。ステップＳ２０９のムーブ判定処理では、タッチ前近接状態が第１条件を満たさないため（ステップＳ３０３でＮＯ）、ステップＳ３０４において、タッチ状態での移動距離が第２条件を満たすかが判定される。操作例１での第２条件は、タッチ状態での移動距離が閾値Ｔ２＝３０ｄｏｔ以上であるとする。このように、閾値Ｔ２は閾値Ｔ３の１０ｄｏｔより大きい値が設定される。点５２３から点５２４までの移動距離約１５．０ｄｏｔは、閾値Ｔ２の３０ｄｏｔよりも小さいため、第２の条件は満たされない（ステップＳ３０４でＮＯ）。従って、「ムーブ」イベントは通知されず、処理は図２のフローチャートに戻り、一連の処理は終了する。
【００７８】
このように、本実施形態によれば、ユーザが指５０１を、タッチパネルに接触させる前の近接状態ではあまり移動させない場合、タッチ状態での移動距離の閾値は比較的大きく設定される。つまり、「ムーブ」が行われたと認識されにくくなる。これにより、ユーザに「ムーブ」を行う意図がない場合に、タッチセンサ１０８によって検出されてしまう位置情報のばらつきによって、「ムーブ」が誤認識されてしまうことを防ぐことができる。
【００７９】
次に、図６（ｃ）（ｄ）は、ユーザの指が「ムーブ」を終えるために指５０１をリリースする際に、「フリック」を行う場合と、「フリック」を行わない場合を比較する図である。
【００８０】
図６（ｃ）において、点６０１〜点６０６のそれぞれは、ユーザの指が「ムーブ」の途中から「フリック」として指を掃いながらリリースされた後でタッチパネルから遠ざかり、入力対象面の近接範囲から出てしまうまでに検出される一連の入力位置である。それぞれは、図５で示された座標平面に基づくｘｙ座標で定義される。ここでは、点６０１、６０２が、タッチセンサ１０８によって検出されたタッチ位置であり、点６０３〜点６０６が、近接センサ１０９によって検出された近接位置である。同様に図６（ｄ）において、点６１１〜点６１５のそれぞれは、ユーザの指が「ムーブ」の途中から、「フリック」を伴わずにリリースされた後でタッチパネルから遠ざかり、入力対象面の近接範囲から出てしまうまでに検出される一連の入力位置である。ここでは、点６１１、点６１２が、タッチセンサ１０８によって検出されたタッチ位置であり、点６１３〜点６１５が、近接センサ１０９によって検出された近接位置である。
【００８１】
まず、図６（ｃ）を参照して、ユーザが「ムーブ」の後に「フリック」を伴って指をリリースする過程において、本実施形態の情報処理装置１００が実行する処理を説明する。ここでも、点６０１〜点６０６が検出される度に、図２のフローチャートの処理が繰り返される。点６０１及び点６０２はタッチ位置であり、タッチセンサ１０８が、「ムーブ」中の指５０１を検出したタッチ位置である。ここに至るまでには、図６（ａ）の点５１７で説明したように、タッチ状態の移動距離と第４条件（ステップＳ３０８）を使用したムーブ判定が実行されている。
【００８２】
点６０２がタッチセンサ１０８によって検出された時点では、前回検出され、保持されている点６０１の位置情報との差分から、タッチ状態における移動距離と移動速度が取得される（ステップＳ２０４）。点６０１から点６０２までの移動距離は、約２８．０ｄｏｔである。タッチ位置の検出間隔を２０ｍｓとした場合、移動速度は約１．４ｄｏｔ／ｍｓと算出される。ただし、移動速度は、タッチ位置が検出される度に算出してもよいが、タッチのリリースが検出された際に、リリース直前のタッチ点と、その１つ前に検出されたタッチ点との間の移動速度を算出するとしてもよい。さらに、ムーブフラグが「ＯＮ」で（ステップＳ３０２でＹＥＳ）、前回のタッチ位置からの移動距離約２８．０ｄｏｔが第４条件を満たす（ステップＳ３０８でＹＥＳ）ので、ムーブイベントが通知される（ステップＳ３０６）。
【００８３】
次に、点６０３が近接センサ１０９により検出されると、タッチ位置は検出されず（ステップＳ２０３でＮＯ）、近接位置を検出している（ステップＳ２０５でＹＥＳ）。この時点での近接状態は、リリース後に相当するので、タッチ前近接状態での移動距離の取得（ステップＳ２０６）は行われず、リリース後の近接状態での移動距離が取得される（ステップＳ２０７）。ただし、リリース後の近接状態に関しては、１つしか位置情報が保持されていないので、移動距離は取得されない。ステップＳ２０９のムーブ判定では、タッチ中ではないため（ステップＳ３０１でＮＯ）、ムーブフラグを「ＯＦＦ」に設定して（ステップＳ３１０）、ステップＳ２１０のフリック判定に進む。フリック判定では、リリース後であって（ステップＳ４０１でＹＥＳ）、フリックフラグは初期値の「ＯＦＦ」であるため（ステップＳ４０２でＮＯ）、ステップＳ４０３において、リリース直前のタッチ状態での移動速度が第５条件を満たすかを判定する。操作例１において第５条件は、リリース直前のタッチ点と、その１つ前に検出されたタッチ点との間の移動速度が閾値Ｔ５＝１ｄｏｔ／ｍｓ以上であること、とする。その場合、図６（ｃ）に示す例では、移動速度が約１．４ｄｏｔ／ｍｓと算出されているため、第５条件を満たす（ステップＳ４０３でＹＥＳ）。従って、ここでは、まだリリース後の近接状態での移動距離が取得されていないため、リリース後の近接状態での移動距離が第７条件を満たさないと判定される（ステップＳ４０７でＮＯ）。
【００８４】
次に点６０４が近接センサ１０９により検出されたことに応じた処理では、リリース後近接状態における点６０３から点６０４までの移動距離は、約２５．０ｄｏｔと算出される（ステップＳ２０７）。フリック判定では、リリース前のタッチ状態の移動速度約１．４ｄｏｔ／ｍｓが第５条件を満たすので（ステップＳ４０３でＹＥＳ）、ステップＳ４０７で、リリース後近接状態での移動距離が第７条件を満たすか否かが判定される。操作例１において、第７条件は、リリース後近接状態での移動距離が閾値Ｔ７＝４０ｄｏｔ以上であるとする。ここで点６０３から点６０４までの移動距離は約２５．０ｄｏｔであり、第７条件を満たさない（ステップＳ４０７でＮＯ）。従ってフリックイベントは通知されず、図２のフローチャートの処理は終了する。
【００８５】
次に、点６０５が近接センサ１０９により検出されると、フリック判定までの処理は、点６０４の場合と同様の流れにそって実行される。ただし、リリース後近接状態については、点６０３から点６０５までの移動距離が約４３．０ｄｏｔと算出される（ステップＳ２０７）。フリック判定では、点６０３から点６０５までの移動距離約４３．０ｄｏｔが、第７条件を満たす（ステップＳ４０７でＹＥＳ）ので、フリックフラグの値が「ＯＮ」に設定され（ステップＳ４０５）、フリックイベントが通知される（ステップＳ４０６）。さらに点６０６が近接センサ１０９により検出されると、フリックフラグが「ＯＮ」となっているため（ステップＳ４０２でＹＥＳ）、フリックイベントは通知されずに一連の処理は終了する。このように、フラグを用いることで、近接センサ１０９によって指５０１が検出され続けていても、複数回フリックイベントが通知され、不必要な表示制御が実行されることを防いでいる。
【００８６】
一般的に、高速に移動させた操作オブジェクトを、慣性に逆らって急停止させるのは難しく、「フリック」の入力直後の指が急停止することは不自然と言え、リリース後も「フリック」の勢いのまま有る程度移動するのが自然である。従って、本実施形態では、ユーザが指５０１を高速に移動させてリリースした場合、リリース後の移動距離に基づいて「フリック」の勢いのまま指を移動させ続けた段階で、「フリック」の入力があったと認識する。これによりユーザが「フリック」を行ったことをより確実に判断でき、誤認識を低減することができる。
【００８７】
次に、図６（ｄ）を参照して、ユーザが「ムーブ」の後に「フリック」を伴わずに指をリリースする過程において、本実施形態の情報処理装置１００で実行される処理を説明する。ここでも、点６１１〜点６１５が検出される度に、図２のフローチャートの処理が繰り返される。点６１１及び点６１２はタッチ位置であり、タッチセンサ１０８が、「ムーブ」中の指５０１を検出したタッチ位置である。ここに至るまでには、タッチ状態の移動距離と第４条件（ステップＳ３０８）を使用したムーブ判定が実行されている。
【００８８】
点６１２がタッチセンサ１０８によって検出された時点では、前回検出され、保持されている点６１１の位置情報との差分から、タッチ状態における移動距離と移動速度が取得される（ステップＳ２０４）。点６１１から点６１２までの移動距離は、約１２．２ｄｏｔである。ここで、タッチ位置の検出間隔を２０ｍｓとした場合、移動速度は約０．６ｄｏｔ／ｍｓと算出される。
【００８９】
次に、点６１３が近接センサ１０９により検出されると、点６０３の場合と同様、ムーブ判定（ステップ２０９）において、ムーブフラグを「ＯＦＦ」に設定して（ステップＳ３１０）、ステップＳ２１０のフリック判定に進む。フリック判定では、リリース後であって（ステップＳ４０１でＹＥＳ）、フリックフラグは初期値の「ＯＦＦ」であるため（ステップＳ４０２でＮＯ）、ステップＳ４０３において、リリース直前のタッチ状態での移動速度が第５条件を満たすかを判定する。点６１１から点６１２に至る移動速度約０．６ｄｏｔ／ｍｓは、閾値Ｔ５＝１ｄｏｔ／ｍｓよりも小さいため、第５条件は満たされない（ステップＳ４０３でＮＯ）。また、まだリリース後の近接状態での移動距離が取得されていないため、リリース後の近接状態での移動距離が第６条件を満たさないと判定される（ステップＳ４０７でＮＯ）。
【００９０】
次に、点６１４が近接センサ１０９により検出されたことに応じた処理では、リリース後近接状態における点６１３から点６１４までの移動距離が、約１０．０ｄｏｔと算出される（ステップＳ２０７）。フリック判定では、リリース前のタッチ状態の移動速度約０．６ｄｏｔ／ｍｓが第５条件を満たさないので（ステップＳ４０３でＮＯ）、ステップＳ４０４において、点６１３から点６１４までの移動距離約１０．０ｄｏｔが第６条件を満たすか否かが判定される。操作例１における第６条件は、リリース後近接状態での移動距離が閾値Ｔ６＝６０ｄｏｔ以上であるとする。なお、第６条件の閾値Ｔ６＝６０ｄｏｔは、第７条件の閾値Ｔ７＝４０ｄｏｔよりも大きい値が設定されている。このとき、点６１３から点６１４までの移動距離約１０．０ｄｏｔは、第６条件を満たさない（ステップＳ４０４でＮＯ）。従ってフリックイベントは通知されず、図２のフローチャートの処理は終了する。
【００９１】
点６１５が近接センサ１０９により検出されたことに応じた処理では、点６１３から点６１５までの移動距離が約１６．０ｄｏｔと算出される（ステップＳ２０７）。これは、フリック判定において、第６条件を満たさない（ステップＳ４０４でＮＯ）ので、フリックイベントは通知されない。
【００９２】
このように、本実施形態では、ユーザが指５０１をリリースする際に高速移動させていない場合、高速移動させた場合に比較して、近接状態における移動距離の閾値が比較的大きく設定される。つまり、「フリック」が行われたと誤認識されにくくなる。また、仮にステップＳ４０３にてタッチ状態では第５条件を満たしたとしても、リリース後の近接状態において第７条件を満たさなければ「フリック」と認識されない。これにより、「ムーブ」の終了時にセンサによって検出されてしまう入力位置のブレによって、誤って「フリック」が認識されてしまうことを防ぐことができる。
【００９３】
なお、本実施形態では、移動距離や移動速度の算出を、近接状態とタッチ状態に跨いで算出することはしていない。つまり、タッチ状態の取得には、近接状態での位置情報は用いられず、反対に、近接状態の取得には、タッチ状態での位置情報は用いられない。これは、近接状態とタッチ状態の各位置情報を検出するために用いられるセンサの方式が違う場合に発生することが多い位置情報のずれの影響を抑えるためである。しかしながら、例えば同一のセンサによって近接状態とタッチ状態の各位置情報を検出する場合など、装置に依存したズレの発生が少ない環境においては、近接状態とタッチ状態に跨いだ移動について移動距離を取得してもよい。例えば、図６（ａ）において、タッチ前の近接状態の移動距離（タッチするまでの移動距離）として、点５１１から点５１５までの移動距離を算出することができる。また、図６（ｃ）においては、タッチ後の近接状態の移動距離（リリースしてからの移動距離）として、点６０２からの移動距離を算出してもよい。また、タッチ位置の検出精度と、近接位置の検出精度の差に応じて、タッチ操作を判定するための条件（閾値の大きさ）を変更することもできる。例えば、タッチ位置の検出精度と、近接位置の検出精度の差が大きい場合には、タッチ操作を判定するための条件を、満たされにくくなるように変更し、精度誤差よってタッチ操作が誤認識されること防ぐ。反対に、検出精度の差が小さい場合には、タッチ操作への追従性を良くするために、タッチ操作を判定するための条件を、満たされ易いように変更する。もしくは、検出精度が高い方の位置情報を用いる判定結果には重みを付けて、なるべく検出精度の高い位置情報に基づいてタッチ操作が判定され易くなるようにしても良い。
【００９４】
以上説明したように、本実施形態では、タッチ操作を行う前後において、ユーザの指等の操作オブジェクトが、タッチ操作の入力対象面に対して近接状態にある時の移動に関する情報と、タッチ中の移動に関する情報をそれぞれ取得する。そして、それぞれが所定の条件を満たすか否かに応じて、入力されたタッチ操作を区別して認識する。特に、タッチ前の近接状態で、操作オブジェクトが入力対象面に平行な方向に移動した距離が大きい場合は、ユーザがタッチ後に「ムーブ」を入力する可能性が高いとみなし、速やかに「ムーブ」が認識されるようにタッチ状態での条件を変更する。一方で、タッチ前の近接状態で、操作オブジェクトが入力対象面に平行な方向に移動した距離が小さい場合は、ユーザがタッチ後に「ムーブ」を入力する可能性は低いとみなし、「ムーブ」が認識されにくいように、タッチ状態での条件を変更する。これにより、ユーザが「タップ」の入力を意図しており、タッチ状態で指を動かしたつもりがない場合に、検出される位置情報のブレにより「ムーブ」が誤認識されることを防ぐことができる。さらに、ユーザが「ムーブ」の入力を意図している場合には、速やかに「ムーブ」が認識され、指の動きに追従した表示画面のフィードバックを開始できる。また、操作オブジェクトが入力対象面から離れる直前の指の移動速度が速い場合は、ユーザが「フリック」をする可能性が高いとみなし、「フリック」が認識され易くなるように、タッチ後の近接状態での条件を変更する。一方、操作オブジェクトが入力対象面から離れる直前の指の移動速度が遅い場合はユーザが「フリック」を伴わないリリース操作をする可能性が高いとみなし、「フリック」が認識されにくいように、タッチ後の近接状態での条件を変更する。これにより、ユーザが「フリック」を入力する意図がないにも関わらず、検出される位置情報のブレにより、リリース直前の移動速度が速いと判定された場合でも、リリース後に操作オブジェクトが移動しなければ「フリック」の誤認識を防ぐことができる。
【００９５】
＜変形例＞
上述した第１の実施形態では、認識部１２５が認識するタッチ操作は、１つの入力位置に関する情報に基づいて認識されるシングルタッチ操作であることを想定した。それに対し、シングルタッチ操作およびマルチタッチ操作の両方が認識可能である場合に、近接状態において検出される入力位置の数の条件が満たされるかに応じて、タッチ状態において検出された情報について判定する条件を異ならせる変形例を説明する。変形例では、近接状態にある操作オブジェクトに関して、２つ以上の近接位置が検出された場合には、タッチ状態において検出された情報が所定のマルチタッチ操作を認識するための条件を満たすか否かを判定する。
【００９６】
変形例の情報処理装置１００のハードウェア構成及び機能構成は、第１の実施形態の図１（ａ）、図１（ｂ）と同様であるため、説明を省略する。ただし、変形例の認識部１２５は、複数の操作オブジェクト（例えば複数本の指）によってタッチ位置が入力された場合、それらによって所定のマルチタッチ操作を認識するための条件が満たされたかを判定する。例えば、入力複数のタッチ位置の相対距離等が、表示画像を拡大縮小させる「ピンチ」、表示画像を回転させる「ローテート」等のマルチタッチ操作の条件を満たすかを判定する。
【００９７】
図７は、本実施形態において、情報処理装置１００がマルチタッチ時のタッチ操作を判定する処理の流れの一例を示すフローチャートである。なお、図２のフローチャートに示したのと同じ処理については、同符号を付し、その説明を省略する。
【００９８】
第２の実施形態では、ステップＳ２０５において、近接位置が検出されていると判定された（ステップＳ２０５でＹＥＳ）場合、ステップＳ７０１に進む。ステップＳ７０１では、認識部１２５が、タッチ前の近接状態において、２点以上の入力位置を検出されているか否かを判定する。２点以上の入力位置を検出していると判定された場合には（ステップＳ７０１でＹＥＳ）、ステップＳ７０２に進む。一方、１点の入力位置のみが検出されていると判定された場合には（ステップＳ７０１でＮＯ）、ステップＳ２０６に進む。ステップＳ７０２では、認識部１２５が、２点以上の操作オブジェクトを検出したと判断されたため、マルチタッチフラグの値を「ＯＮ」に設定してその情報を保持する。マルチタッチフラグは、マルチタッチ操作が入力される可能性が高い状態にある場合に「ＯＮ」に設定されるフラグであり、初期値は「ＯＦＦ」である。
【００９９】
ステップＳ７０３では、認識部１２５が、マルチタッチフラグの値が「ＯＮ」になっているか否かを判定する。マルチタッチフラグの値が「ＯＮ」の場合には（ステップＳ７０３でＹＥＳ）、第１の実施形態で説明したシングルタッチ操作のムーブ判定及びフリック判定処理をスキップし、ステップＳ７０４に進む。マルチタッチフラグの値が「ＯＦＦ」の場合には（ステップＳ７０３でＮＯ）、シングルタッチ操作の認識処理を行うために、ステップＳ２０９に進む。
【０１００】
このように、タッチされるより前の時点で、近接位置が２点以上検出された場合には、マルチタッチ操作が行われる可能性が高いと判断して、予め登録された認識可能なタッチ操作のうち、シングルタッチ操作に関する条件判定処理を省略する。これにより、マルチタッチ操作に用いられる複数の操作オブジェクトのうち、片方が入力対象面に接触した段階で、シングルタッチ操作が認識されてしまい、マルチタッチ操作が認識できなくなる誤認識の発生が低減される。例えば、シングルタッチ操作として「ムーブ」が認識され、表示された画像がスクロールを開始してしまうと、マルチタッチ操作が認識されず、画像の拡大縮小ができなくなる場合がある。
【０１０１】
尚、本実施形態においては、マルチタッチ操作が行われる可能性が高いと見なされている状態では、シングルタッチ操作の認識自体を省略したが、処理は省略しない代わりに、シングルタッチ操作が認識されにくいように条件を厳しく変更してもよい。これにより、シングルタッチ操作を行うとするユーザの意図に反して、近接センサ１０９に２つ目以降の操作オブジェクトが検出されてしまった場合でも、意図に沿ったシングルタッチ操作を認識することが可能となる。
【０１０２】
＜その他の実施形態＞
本発明は、上述の実施形態の１以上の機能を実現するプログラムを、ネットワーク又は記憶媒体を介してシステム又は装置に供給し、そのシステム又は装置のコンピュータにおける１つ以上のプロセッサーがプログラムを読出し実行する処理でも実現可能である。また、１以上の機能を実現する回路（例えば、ＡＳＩＣ）によっても実現可能である。
【符号の説明】
【０１０３】
１２１  タッチ位置検出部
１２２  近接位置検出部
１２３  タッチ状態取得部
１２４  近接状態取得部
１２５  認識部
１２６  出力制御部
【図１】
0006410537.tif 000002
【図２】
0006410537.tif 000003
【図３】
0006410537.tif 000004
【図４】
0006410537.tif 000005
【図５】
0006410537.tif 000006
【図６】
0006410537.tif 000007
【図７】
0006410537.tif 000008