以下に、本願の開示する電子機器および座標入力プログラムの実施例を図面に基づいて詳細に説明する。なお、この実施例により開示技術が限定されるものではない。
まず、実施例1に係る電子機器による動作の一例を説明する。図1は、実施例1に係る電子機器による動作の一例を説明する説明図である。図1の例では、電子機器に搭載されたタッチパネルの表面の端部領域に無効化領域R1が予め設定され、端部領域により囲まれる中央領域に有効化領域R2が予め設定されているものとする。無効化領域とは、タッチパネルに対する接触位置の座標を用いた操作を無効化する領域であり、有効化領域とは、タッチパネルに対する接触位置の座標を用いた操作を有効化する領域である。
電子機器は、タッチパネルに対する接触位置の座標(以下「タッチ座標」という)を検出する。図1の例では、電子機器は、タッチパネルに対する指F1〜F3のタッチ座標をそれぞれ検出する。
電子機器は、検出されるタッチ座標がタッチパネルの無効化領域R1に存在する場合に、該タッチ座標を記憶装置に保存する。図1の例では、電子機器は、時刻「T0」に指F1のタッチ座標(5,100)が無効化領域R1に存在するので、指F1のタッチ座標(5,100)を記憶装置に保存する。また、図1の例では、電子機器は、指F2のタッチ座標(5,400)が無効化領域R1に存在するので、指F2のタッチ座標(5,400)を記憶装置に保存する。
なお、図1の例では、電子機器は、タッチ座標を用いた操作処理を行う上位の処理部に対して、無効化領域R1に存在する指F1,指F2のタッチ座標の出力を行わない。これにより、指F1,指F2のタッチ座標を用いた操作が無効化される。また、電子機器は、指F3のタッチ座標(280,400)が有効化領域R2に存在するので、指F3のタッチ座標の保存を行わず、タッチ座標を用いた操作処理を行う上位の処理部に指F3のタッチ座標をそのまま出力する。これにより、指F3のタッチ座標を用いた操作が有効化される。
続いて、電子機器は、検出されるタッチ座標がタッチパネルの無効化領域R1から有効化領域R2に移動した場合に、該タッチ座標を記憶装置に保存されたタッチ座標に補正する。すなわち、電子機器は、タッチパネルに対する指の接触位置が無効化領域R1を超えてから、最初に検出されるタッチ座標を、無効化領域R1内の始点として記憶装置に保存されたタッチ座標に補正する。図1の例では、電子機器は、時刻「T1」に指F1のタッチ座標が無効化領域R1から有効化領域R2の座標(125,100)に移動しているので、指F1のタッチ座標(125,100)を記憶装置に保存された指F1のタッチ座標(5,100)に補正する。補正後の指F1のタッチ座標は、タッチ座標を用いた操作処理を行う上位の処理部に出力される。これにより、補正後の指F1のタッチ座標を用いた操作が有効化される。
なお、図1の例では、電子機器は、指F2のタッチ座標が無効化領域R1から移動していないので、タッチ座標を用いた操作処理を行う上位の処理部に指F2のタッチ座標の出力を行わない。これにより、指F2のタッチ座標を用いた操作が継続的に無効化される。
続いて、電子機器は、タッチ座標を補正した後に検出されるタッチ座標が有効化領域R2内で移動した場合に、前回補正されたタッチ座標を用いて、今回検出されたタッチ座標を補正する。図1の例では、電子機器は、時刻「T2」に指F1のタッチ座標が有効化領域R2内で座標(245,100)に移動しているので、前回補正された指F1のタッチ座標(5,100)を用いて、今回検出された指F1のタッチ座標(245,100)を補正する。ここでは、一例として、電子機器は、前回補正された指F1のタッチ座標(5,100)と、今回検出された指F1のタッチ座標(245,100)との平均値を求めることによって、補正後の指F1のタッチ座標(125,100)を算出する。補正後の指F1のタッチ座標は、タッチ座標を用いた操作処理を行う上位の処理部に出力される。これにより、補正後の指F1のタッチ座標を用いた操作が継続的に有効化される。また、図1の例では、電子機器は、時刻「T3」に指F1のタッチ座標が有効化領域R2内で座標(325,100)に移動しているので、前回補正された指F1のタッチ座標(125,100)を用いて、今回検出された指F1のタッチ座標(325,100)を補正する。ここでは、一例として、電子機器は、前回補正された指F1のタッチ座標(125,100)と、今回検出された指F1のタッチ座標(325,100)との平均値を求めることによって、補正後の指F1のタッチ座標(225,100)を算出する。補正後の指F1のタッチ座標は、タッチ座標を用いた操作処理を行う上位の処理部に出力される。これにより、補正後の指F1のタッチ座標を用いた操作が継続的に有効化される。
このように、実施例1の電子機器は、タッチ座標を検出し、検出されるタッチ座標が無効化領域に存在する場合に、タッチ座標を記憶装置に保存し、検出されるタッチ座標が有効化領域に移動した場合に、タッチ座標を記憶装置に保存されたタッチ座標に補正する。このため、実施例1の電子機器は、タッチパネルにおいて無効化領域を始点とし有効化領域を終点とするスライド操作が行われた場合に、始点となるタッチ座標を用いてスライド操作を有効化することができる。結果として、実施例1の電子機器によれば、始点となるタッチ座標が用いられない従来技術と比較して、タッチパネルにおいて操作を無効化する領域を始点とする操作が行われる場合の操作性を向上することができる。
また、実施例1の電子機器は、タッチ座標を補正した後に検出されるタッチ座標が有効化領域R2内で移動した場合に、前回補正されたタッチ座標を用いて、今回検出されたタッチ座標を補正する。このため、実施例1の電子機器は、過去のタッチ座標を考慮した現在のタッチ座標を取得することができる。結果として、実施例1の電子機器によれば、タッチパネルにおいて操作を無効化する領域を始点とする操作が他の領域内で継続して行われる場合の操作性を向上することができる。
次に、実施例1に係る電子機器100の構成例を説明する。図2は、実施例1に係る電子機器の構成例を示す図である。図2に示すように、実施例1に係る電子機器100は、LCD(Liquid Crystal Display)110、タッチパネル120a、タッチコントロールIC(Integrated Circuit)120b、メモリ130およびCPU(Central Processing Unit)140を有する。LCD110、タッチパネル120a、タッチコントロールIC120b、メモリ130およびCPU140は、バス150によって相互に接続される。
LCD110は、液晶を利用した表示装置である。例えば、LCD110は、CPU140から出力される各種の情報を受け付け、受け付けた情報を表示する。
タッチパネル120aは、例えば、静電容量方式のタッチパネルである。タッチパネル120aは、表面に電極膜が貼られている。例えば、タッチパネル120aは、利用者の指がタッチパネル120aの表面に接触すると、指先と電極膜との間に生じる静電容量の変化を検出し、タッチパネル120aに対する指の接触位置の座標(以下「タッチ座標」という)を検出する。例えば、タッチパネル120aは、利用者によるタッチ操作が行われている間、所定時間毎に、タッチ座標を検出する。また、タッチパネル120aは、タッチパネル120aの表面に指が接触する順に指に対して識別子である指ID(Identifier)を割り当て、指IDに対応付けてタッチ座標を検出する。
タッチコントロールIC120bは、タッチパネル120aを制御する装置である。タッチコントロールIC120bは、タッチパネル120aがタッチ座標を検出する度に、タッチパネル120aによって検出されたタッチ座標(以下「検出タッチ座標」という)を指IDとともにCPU140に出力する。タッチパネル120a、タッチコントロールIC120bは、検出部の一例である。また、タッチコントロールIC120bは、タッチパネル120aの表面の端部領域に無効化領域を設定する制御や、端部領域により囲まれる中央領域に有効化領域を設定する制御も行う。
メモリ130は、各種の情報を記憶する記憶装置である。後述するように、特に、メモリ130は、CPU140の制御命令に応じて、検出タッチ座標の補正に用いられるタッチ座標を記憶する。図3は、実施例1に係るメモリのデータ構造の一例を示す図である。図3に示すように、メモリ130は、指ID、変換指IDおよびタッチ座標といった項目を対応付けて記憶する。
指IDは、タッチパネル120aによって指に割り当てられた、指を識別するための識別子である。例えば、タッチパネル120aの表面に接触した1本目の指には、指ID:0が割り当てられ、タッチパネル120aの表面に接触した2本目以降の指には、指IDとして1以上の整数が昇順で割り当てられる。
変換指IDは、指IDで識別される指がタッチパネル120aの無効化領域から有効化領域に移動した場合に、移動した指の指IDが変換されて得られる識別子である。例えば、指IDで識別される指がタッチパネル120aの無効化領域から有効化領域に移動した場合であり、かつ、移動した指の指IDが「0」以外である場合に、指IDが、タッチパネル120aの表面に接触した1本目の指を表す「0」に変換される。なお、変換指IDには、初期値として「−1(変換なし)」が格納される。
タッチ座標(Xold,Yold)は、指IDで識別される指に対応する検出タッチ座標の補正に用いられるタッチ座標を格納する。例えば、タッチ座標(Xold,Yold)には、無効化領域に存在する指のタッチ座標や、前回補正されたタッチ座標等が格納される。なお、タッチ座標(Xold,Yold)には、初期値として「−1(補正なし)」が格納される。
図3の1行目は、指ID:0で識別される指が無効化領域に存在するので、指IDが変換されず、かつ、無効化領域に存在する指のタッチ座標(5,400)が格納されていることを示す。図3の2行目は、指ID:1で識別される指がタッチパネル120aの無効化領域から有効化領域に移動したので、指ID:1が変換指ID:0に変換され、かつ補正後の指のタッチ座標(5,100)が前回補正されたタッチ座標として格納されていることを示す。図3の3行目は、指ID:2で識別される指がタッチパネル120aの有効化領域に存在するので、指ID:2が変換指ID:1に変換され、かつタッチ座標が補正されないことを示す。
CPU140は、タッチコントロールIC120bから取得する検出タッチ座標がタッチパネル120aの無効化領域から有効化領域に移動した場合に、検出タッチ座標を補正する装置である。CPU140は、補正後の検出タッチ座標をタッチ座標を用いた操作処理を行う上位処理部に出力する。
ここで、CPU140の機能構成の一例について説明する。図4は、実施例1に係るCPUの機能構成の一例を示すブロック図である。図4に示すように、CPU140は、座標取得部141、座標判定部142、座標補正部143及び上位処理部144を有する。
座標取得部141は、指IDに対応づけられた検出タッチ座標をタッチコントロールIC120bから取得する。座標取得部141は、検出タッチ座標を取得する度に、取得した検出タッチ座標を座標判定部142に出力する。
座標判定部142は、検出タッチ座標がタッチパネル120aの無効化領域に存在するか否かを判定し、判定の結果及び検出タッチ座標を座標補正部143に出力する。
座標補正部143は、座標判定部142による判定の結果に応じて検出タッチ座標を補正する。座標補正部143は、補正部の一例である。
ここで、検出タッチ座標の補正処理の詳細を説明する。座標補正部143は、座標判定部142による判定の結果、検出タッチ座標がタッチパネル120aの無効化領域に存在する場合に、指IDに対応づけて検出タッチ座標をメモリ130に保存する。
一方、座標補正部143は、座標判定部142による判定の結果、検出タッチ座標がタッチパネル120aの無効化領域に存在しない場合に、検出タッチ座標が無効化領域から有効化領域に移動したか否かを判定する。座標補正部143は、検出タッチ座標が無効化領域から有効化領域に移動した場合に、必要に応じて指IDを変換指ID:0に変換し、今回の検出タッチ座標をメモリ130に保存されている検出タッチ座標に補正する。つまり、座標補正部143は、タッチパネル120aに対する指の接触位置が無効化領域を超えてから、最初に検出される今回の検出タッチ座標を、無効化領域内の始点としてメモリ130に保存されている検出タッチ座標に補正する。
続いて、座標補正部143は、補正後の検出タッチ座標をメモリ130に上書き保存する。メモリ130に上書き保存された検出タッチ座標が、前回補正された検出タッチ座標となる。座標補正部143は、補正後の検出タッチ座標を上位処理部144に出力する。このとき、座標補正部143は、変換指IDが存在する場合には、変換指IDに対応づけて補正後の検出タッチ座標を上位処理部144に出力し、変換指IDが存在しない場合には、指IDに対応づけて補正後の検出タッチ座標を上位処理部144に出力する。
一方、座標補正部143は、検出タッチ座標が無効化領域から有効化領域に移動していない場合、すなわち、検出タッチ座標が有効化領域内で移動した場合には、以下の処理を行う。座標補正部143は、メモリ130に保存された検出タッチ座標、すなわち、前回補正された検出タッチ座標を用いて、今回の検出タッチ座標を補正する。詳細には、座標補正部143は、前回補正された検出タッチ座標と、今回の検出タッチ座標との平均値を求めることによって、補正後の検出タッチ座標を算出する。例えば、座標補正部143は、下記の式(1a),(1b)を用いて、補正後の検出タッチ座標を算出する。
Xcur=(Xold+Xorg)/2 ・・・ (1a)
Ycur=(Yold+Yorg)/2 ・・・ (1b)
式(1a),(1b)において、(Xcur,Ycur)は、補正後の検出タッチ座標である。(Xold,Yold)は、前回補正された検出タッチ座標である。(Xorg,Yorg)は、座標取得部141から取得される今回の検出タッチ座標である。
そして、座標補正部143は、算出した補正後の検出タッチ座標と、前回補正された検出タッチ座標との間の距離を算出し、算出した距離が所定の閾値以下であるか否かを判定する。座標補正部143は、算出した距離が所定の閾値を超過するならば、補正後の検出タッチ座標をメモリ130に上書き保存する。メモリ130に上書き保存された検出タッチ座標が、前回補正された検出タッチ座標となる。座標補正部143は、補正後の検出タッチ座標を上位処理部144に出力する。このとき、座標補正部143は、変換指IDが存在する場合には、変換指IDに対応づけて補正後の検出タッチ座標を上位処理部144に出力し、変換指IDが存在しない場合には、指IDに対応づけて補正後の検出タッチ座標を上位処理部144に出力する。
一方、座標補正部143は、算出した距離が所定の閾値以下であるならば、補正後の検出タッチ座標の出力を中止するとともに、座標取得部141から取得される今回の検出タッチ座標をそのまま上位処理部144に出力する。このとき、座標補正部143は、指IDに対応づけて今回の検出タッチ座標を上位処理部144に出力する。
上位処理部144は、座標補正部143から入力される検出タッチ座標を用いてスライド操作等の所定の操作処理を行う。
次に、実施例1に係る電子機器100の処理手順を説明する。図5は、実施例1に係る電子機器の処理手順を示すフローチャートである。図5に示すように、電子機器100は、タッチパネル120aに対する指の接触を受け付け、指IDに対応付けてタッチ座標を検出する(ステップS101)。
電子機器100は、検出タッチ座標がタッチパネル120aの無効化領域に存在するか否かを判定する(ステップS102)。電子機器100は、検出タッチ座標が無効化領域に存在する場合には(ステップS102;Yes)、タッチパネル120aに対する指の接触が最初の接触であるか否かを判定する(ステップS103)。
電子機器100は、タッチパネル120aに対する指の接触が最初の接触であるならば(ステップS103;Yes)、指IDに対応付けて検出タッチ座標をメモリ130に保存する(ステップS104)。これにより、検出タッチ座標が、無効化領域内の始点としてメモリ130に保存される。電子機器100は、上位処理部144に対する検出タッチ座標の出力を中止し(ステップS105)、処理をステップS118に移行する。電子機器100は、タッチパネル120aに対する指の接触が最初の接触でないならば(ステップS103;No)、ステップS104を省略し、処理をステップS105に移行する。
一方、電子機器100は、検出タッチ座標がタッチパネル120aの無効化領域に存在しない場合には(ステップS102;No)、メモリ130に保存されている検出タッチ座標が初期値「−1(補正なし)」であるか否かを判定する(ステップS106)。電子機器100は、メモリ130に保存されている検出タッチ座標が初期値「−1(補正なし)」である場合には(ステップS106;Yes)、今回の検出タッチ座標を上位処理部144にそのまま出力し(ステップS107)、処理をステップS118に進める。一方、電子機器100は、メモリ130に保存されている検出タッチ座標が初期値「−1(補正なし)」でない場合には(ステップS106;No)、検出タッチ座標が無効化領域から有効化領域に移動したか否かを判定する(ステップS108)。
電子機器100は、検出タッチ座標が無効化領域から有効化領域に移動した場合には(ステップS108;Yes)、必要に応じて指IDを変換後ID:0に変換する(ステップS109)。電子機器100は、今回の検出タッチ座標をメモリ130に保存されている検出タッチ座標に補正する(ステップS110)。電子機器100は、補正後の検出タッチ座標をメモリ130に上書き保存する(ステップS111)。メモリ130に上書き保存された検出タッチ座標が、前回補正された検出タッチ座標となる。座標補正部143は、補正後の検出タッチ座標を上位処理部144に出力し(ステップS112)、処理をステップS118に移行する。このとき、電子機器100は、変換指IDが存在する場合には、変換指IDに対応づけて補正後の検出タッチ座標を上位処理部144に出力し、変換指IDが存在しない場合には、指IDに対応づけて補正後の検出タッチ座標を上位処理部144に出力する。
一方、電子機器100は、検出タッチ座標が無効化領域から有効化領域に移動していない場合、すなわち、検出タッチ座標が有効化領域内で移動した場合には(ステップS108;No)、以下の処理を行う。すなわち、電子機器100は、メモリ130に保存された検出タッチ座標、すなわち、前回補正された検出タッチ座標を用いて、今回の検出タッチ座標を補正する(ステップS113)。電子機器100は、補正後の検出タッチ座標と、前回補正された検出タッチ座標との間の距離を算出し(ステップS114)、算出した距離が所定の閾値以下であるか否かを判定する(ステップS115)。
電子機器100は、算出した距離が所定の閾値を超過するならば(ステップS115;No)、処理をステップS111に移行する。
一方、電子機器100は、算出した距離が所定の閾値以下であるならば(ステップS115;Yes)、上位処理部144に対する補正後の検出タッチ座標の出力を中止する(ステップS116)。電子機器100は、メモリ130に保存されている変換後ID及びタッチ座標をクリアし、変換後ID及びタッチ座標に初期値を設定し(ステップS117)、処理をステップS107に移行する。
電子機器100は、処理を終了するか否かを判定する(ステップS118)。電子機器100は、処理を継続する場合には(ステップS118;No)、処理をステップS101に戻す。一方、電子機器100は、処理を終了する場合には(ステップS118;Yes)、処理を終了する。
次に、実施例1に係る電子機器100の効果を説明する。電子機器100は、タッチ座標を検出し、検出タッチ座標が無効化領域に存在する場合に、検出タッチ座標をメモリ130に保存し、検出タッチ座標が有効化領域に移動した場合に、検出タッチ座標をメモリ130に保存された検出タッチ座標に補正する。このため、電子機器100は、タッチパネル120aにおいて無効化領域を始点とし有効化領域を終点とするスライド操作が行われた場合に、始点となるタッチ座標を用いてスライド操作を有効化することができる。結果として、実施例1の電子機器100によれば、始点となるタッチ座標が用いられない従来技術と比較して、タッチパネル120aにおいて操作を無効化する領域を始点とする操作が行われる場合の操作性を向上することができる。
また、実施例1の電子機器100は、検出タッチ座標が有効化領域内で移動した場合に、前回補正された検出タッチ座標を用いて、今回の検出タッチ座標を補正する。このため、実施例1の電子機器100は、過去の検出タッチ座標を考慮した現在の検出タッチ座標を取得することができる。結果として、実施例1の電子機器100によれば、タッチパネル120aにおいて操作を無効化する領域を始点とする操作が他の領域内で継続して行われる場合の操作性を向上することができる。
また、実施例1の電子機器100は、検出タッチ座標が有効化領域内で移動した場合に、補正後の検出タッチ座標と、前回補正された検出タッチ座標との間の距離が所定の閾値以下であるか否かを判定する。電子機器100は、距離が所定の閾値を超過するならば、補正後の検出タッチ座標を上位処理部144に出力し、距離が所定の閾値以下であるならば、上位処理部144に対する補正後の検出タッチ座標の出力を中止する。このため、実施例1の電子機器100は、タッチパネル120aにおいて操作を無効化する領域を始点とする操作が他の領域内で継続して行われ、かつ、他の領域内での指の移動距離が減少した場合に、補正後の検出タッチ座標を用いた操作を中止することができる。
なお、上述の説明では、電子機器100が、前回補正された検出タッチ座標と、今回の検出タッチ座標との平均値を求めることによって、補正後の検出タッチ座標を算出する例を示したが、開示技術はこれに限られない。例えば、電子機器100は、バネ特性等の物理法則を適用した所定の数式に対して、前回補正された検出タッチ座標と今回の検出タッチ座標とを代入することによって、補正後の検出タッチ座標を算出するようにしても良い。
まず、実施例2に係る電子機器による動作の一例を説明する。図6は、実施例2に係る電子機器による動作の一例を説明する説明図である。図6の例では、電子機器に搭載されたタッチパネルの表面の端部領域に無効化領域R1が予め設定され、端部領域により囲まれる中央領域に有効化領域R2が予め設定されているものとする。
電子機器は、タッチパネルに対する接触位置の座標(以下「タッチ座標」という)を検出する。図6の例では、電子機器は、タッチパネルに対する指F1〜F3のタッチ座標をそれぞれ検出する。
電子機器は、検出されるタッチ座標がタッチパネルの無効化領域R1に存在する場合に、該タッチ座標を記憶装置に保存する。図6の例では、電子機器は、時刻「T0」に指F1のタッチ座標(5,100)が無効化領域R1に存在するので、指F1のタッチ座標(5,100)を記憶装置に保存する。また、図6の例では、電子機器は、指F2のタッチ座標(5,400)が無効化領域R1に存在するので、指F2のタッチ座標(5,400)を記憶装置に保存する。
なお、図6の例では、電子機器は、タッチ座標を用いた操作処理を行う上位の処理部に対して、無効化領域R1に存在する指F1,指F2のタッチ座標の出力を行わない。これにより、指F1,指F2のタッチ座標を用いた操作が無効化される。また、電子機器は、指F3のタッチ座標(280,400)が有効化領域R2に存在するので、指F3のタッチ座標の保存を行わず、タッチ座標を用いた操作処理を行う上位の処理部に指F3のタッチ座標をそのまま出力する。これにより、指F3のタッチ座標を用いた操作が有効化される。
続いて、電子機器は、検出されるタッチ座標がタッチパネルの無効化領域R1から有効化領域R2に移動した場合に、記憶装置に保存されたタッチ座標と検出されるタッチ座標との差分を算出するとともに該タッチ座標を記憶装置に保存されたタッチ座標に補正する。すなわち、電子機器は、タッチパネルに対する指の接触位置が無効化領域R1を超えてから、最初に検出されるタッチ座標と、無効化領域R1内の始点として記憶装置に保存されたタッチ座標との差分を算出する。さらに、電子機器は、最初に検出されるタッチ座標を、無効化領域R1内の始点として記憶装置に保存されたタッチ座標に補正する。図6の例では、時刻「T1」に指F1のタッチ座標が無効化領域R1から有効化領域R2の座標(125,100)に移動している。このため、電子機器は、記憶装置に保存された指F1のタッチ座標(5,100)と、今回検出される指F1のタッチ座標(125,100)との差分(ΔX,ΔY)=(120,0)を算出する。さらに、電子機器は、今回検出される指F1のタッチ座標(125,100)を記憶装置に保存された指F1のタッチ座標(5,100)に補正する。補正後の指F1のタッチ座標は、タッチ座標を用いた操作処理を行う上位の処理部に出力される。これにより、補正後の指F1のタッチ座標を用いた操作が有効化される。
なお、図6の例では、電子機器は、指F2のタッチ座標が無効化領域R1から移動していないので、タッチ座標を用いた操作処理を行う上位の処理部に指F2のタッチ座標の出力を行わない。これにより、指F2のタッチ座標を用いた操作が継続的に無効化される。
続いて、電子機器は、タッチ座標を補正した後に検出されるタッチ座標が有効化領域R2内で移動した場合に、算出済みの差分を用いて、今回検出されたタッチ座標を補正する。図6の例では、電子機器は、時刻「T2」に指F1のタッチ座標が有効化領域R2内で座標(245,100)に移動しているので、差分(ΔX,ΔY)=(120,0)を用いて、今回検出された指F1のタッチ座標(245,100)を補正する。ここでは、一例として、電子機器は、差分(ΔX,ΔY)=(120,0)を減少させ、減少させた差分(ΔX,ΔY)=(95,0)を今回検出された指F1のタッチ座標から減算することによって、補正後の指F1のタッチ座標(150,100)を算出する。補正後の指F1のタッチ座標は、タッチ座標を用いた操作処理を行う上位の処理部に出力される。これにより、補正後の指F1のタッチ座標を用いた操作が継続的に有効化される。また、図6の例では、電子機器は、時刻「T3」に指F1のタッチ座標が有効化領域R2内で座標(325,100)に移動しているので、差分(ΔX,ΔY)=(95,0)を用いて、今回検出された指F1のタッチ座標(325,100)を補正する。ここでは、一例として、電子機器は、差分(ΔX,ΔY)=(95,0)を減少させ、減少させた差分(ΔX,ΔY)=(74,0)を今回検出された指F1のタッチ座標から減算することによって、補正後の指F1のタッチ座標(251,100)を算出する。補正後の指F1のタッチ座標は、タッチ座標を用いた操作処理を行う上位の処理部に出力される。これにより、補正後の指F1のタッチ座標を用いた操作が継続的に有効化される。
このように、実施例2の電子機器は、検出されるタッチ座標が有効化領域R2に移動した場合に、記憶装置に保存されたタッチ座標と検出されるタッチ座標との差分を算出するとともに該タッチ座標を記憶装置に保存されたタッチ座標に補正する。そして、実施例2の電子機器は、タッチ座標を補正した後に検出されるタッチ座標が有効化領域R2内で移動した場合に、算出済みの差分を用いて、今回検出されたタッチ座標を補正する。このため、実施例2の電子機器は、タッチパネルにおいて無効化領域を始点とする操作が有効化領域内で継続して行われた場合の操作性をより向上することができる。
次に、実施例2に係る電子機器200の構成例を説明する。図7は、実施例2に係る電子機器の構成例を示す図である。図7に示すように、実施例2に係る電子機器200は、LCD110、タッチパネル120a、タッチコントロールIC120b、メモリ230およびCPU240を有する。LCD110、タッチパネル120a、タッチコントロールIC120b、メモリ230およびCPU240は、バス150によって相互に接続される。
LCD110、タッチパネル120aおよびタッチコントロールIC120bに関する説明は、図2に示すLCD110、タッチパネル120aおよびタッチコントロールIC120bに関する説明と同様であるため、ここでは同一の符号を付して説明を省略する。
メモリ230は、各種の情報を記憶する記憶装置である。後述するように、特に、メモリ230は、CPU240の制御命令に応じて、検出タッチ座標の初回の補正に用いられるタッチ座標と、検出タッチ座標の2回目以降の補正に用いられる差分を記憶する。図8は、実施例2に係るメモリのデータ構造の一例を示す図である。図8に示すように、メモリ230は、指ID、変換指ID、タッチ座標および差分といった項目を対応付けて記憶する。
指IDは、タッチパネル120aによって指に割り当てられた、指を識別するための識別子である。例えば、タッチパネル120aの表面に接触した1本目の指には、指ID:0が割り当てられ、タッチパネル120aの表面に接触した2本目以降の指には、指IDとして1以上の整数が昇順で割り当てられる。
変換指IDは、指IDで識別される指がタッチパネル120aの無効化領域から有効化領域に移動した場合に、移動した指の指IDが変換されて得られる識別子である。例えば、指IDで識別される指がタッチパネル120aの無効化領域から有効化領域に移動した場合であり、かつ、移動した指の指IDが「0」以外である場合に、指IDが、タッチパネル120aの表面に接触した1本目の指を表す「0」に変換される。なお、変換指IDには、初期値として「−1(変換なし)」が格納される。
タッチ座標(X1st,Y1st)は、指IDで識別される指に対応する検出タッチ座標の初回の補正に用いられるタッチ座標を格納する。例えば、タッチ座標(X1st,Y1st)には、無効化領域に存在する指のタッチ座標が格納される。なお、タッチ座標(X1st,Y1st)には、初期値として「−1(補正なし)」が格納される。
差分(ΔX,ΔY)は、検出タッチ座標の2回目以降の補正に用いられる差分を格納する。例えば、差分(ΔX,ΔY)には、無効化領域に存在する指のタッチ座標と、無効化領域から有効化領域に移動した指のタッチ座標との差分が格納される。なお、差分(ΔX,ΔY)には、初期値として「0(補正なし)」が格納される。
図8の1行目は、指ID:0で識別される指が無効化領域に存在するので、指IDが変換されず、かつ、無効化領域に存在する指のタッチ座標(5,400)が格納されていることを示す。図8の2行目は、指ID:1で識別される指がタッチパネル120aの無効化領域から有効化領域に移動したので、指ID:1が変換指ID:0に変換され、かつ検出タッチ座標の初回の補正に用いられるタッチ座標(5,100)が格納されていることを示す。さらに、図8の2行目は、検出タッチ座標の2回目以降の補正に用いられる差分(120,0)が格納されていることを示す。図3の3行目は、指ID:2で識別される指がタッチパネル120aの有効化領域に存在するので、指ID:2が変換指ID:1に変換され、かつタッチ座標が補正されないことを示す。
CPU240は、タッチコントロールIC120bから取得する検出タッチ座標がタッチパネル120aの無効化領域から有効化領域に移動した場合に、検出タッチ座標を補正する装置である。CPU240は、補正後の検出タッチ座標をタッチ座標を用いた操作処理を行う上位処理部に出力する。
ここで、CPU240の機能構成の一例について説明する。図9は、実施例2に係るCPUの機能構成の一例を示すブロック図である。図9に示すように、CPU240は、座標取得部241、座標判定部242、座標補正部243及び上位処理部244を有する。
座標取得部241は、指IDに対応づけられた検出タッチ座標をタッチコントロールIC120bから取得する。座標取得部241は、検出タッチ座標を取得する度に、取得した検出タッチ座標を座標判定部242に出力する。
座標判定部242は、検出タッチ座標がタッチパネル120aの無効化領域に存在するか否かを判定し、判定の結果及び検出タッチ座標を座標補正部243に出力する。
座標補正部243は、座標判定部242による判定の結果に応じて検出タッチ座標を補正する。座標補正部243は、補正部の一例である。
ここで、検出タッチ座標の補正処理の詳細を説明する。座標補正部243は、座標判定部242による判定の結果、検出タッチ座標がタッチパネル120aの無効化領域に存在する場合に、指IDに対応づけて検出タッチ座標をメモリ230に保存する。
一方、座標補正部243は、座標判定部242による判定の結果、検出タッチ座標がタッチパネル120aの無効化領域に存在しない場合に、検出タッチ座標が無効化領域から有効化領域に移動したか否かを判定する。座標補正部243は、検出タッチ座標が無効化領域から有効化領域に移動した場合に、必要に応じて指IDを変換指ID:0に変換し、メモリ230に保存されている検出タッチ座標と、今回の検出タッチ座標との差分を算出する。さらに、メモリ230は、今回の検出タッチ座標をメモリ230に保存されている検出タッチ座標に補正する。つまり、座標補正部243は、タッチパネル120aに対する指の接触位置が無効化領域を超えてから、最初に検出される今回の検出タッチ座標を、無効化領域内の始点としてメモリ230に保存されている検出タッチ座標に補正する。
続いて、座標補正部243は、算出した差分を指IDに対応づけてメモリ230に保存する。メモリ230に保存された差分が、検出タッチ座標の2回目以降の補正に用いられる差分(補正量)となる。座標補正部243は、補正後の検出タッチ座標を上位処理部244に出力する。このとき、座標補正部243は、変換指IDが存在する場合には、変換指IDに対応づけて補正後の検出タッチ座標を上位処理部244に出力し、変換指IDが存在しない場合には、指IDに対応づけて補正後の検出タッチ座標を上位処理部244に出力する。
一方、座標補正部243は、検出タッチ座標が無効化領域から有効化領域に移動していない場合、すなわち、検出タッチ座標が有効化領域内で移動した場合には、以下の処理を行う。座標補正部243は、メモリ230に保存された差分を用いて、今回の検出タッチ座標を補正する。詳細には、座標補正部243は、検出タッチ座標が有効化領域内で移動する度に、メモリ230に保存された差分を非線形的に減少させ、減少させた差分を今回の検出タッチ座標から加算又は減算することによって、補正後の検出タッチ座標を算出する。例えば、座標補正部243は、下記の式(2a),(2b)を用いて、補正後の検出タッチ座標を算出する。
Xcur=Xorg±ΔX ・・・ (2a)
Ycur=Yorg±ΔY ・・・ (2b)
式(2a),(2b)において、検出タッチ座標が有効化領域内でX軸又はY軸の正方向へ移動した場合には、「−」が採用され、検出タッチ座標が有効化領域内でX軸又はY軸の負方向へ移動した場合には、「+」が採用される。式(2a),(2b)において、(Xcur,Ycur)は、補正後の検出タッチ座標である。(Xorg,Yorg)は、座標取得部241から取得される今回の検出タッチ座標である。(ΔX,ΔY)は、検出タッチ座標が有効化領域内で移動する度に、メモリ230に保存された差分を非線形的に減少させることで得られる差分である。(ΔX,ΔY)は、例えば、以下の式(3a),(3b)を用いて求められる。
ΔX=ΔX1st{1−0.05(n−1)} ・・・ (3a)
ΔY=ΔY1st{1−0.05(n−1)} ・・・ (3b)
式(3a),(3b)において、nは、検出タッチ座標が有効化領域内で移動した回数である。(ΔX1st,ΔY1st)は、検出タッチ座標が無効化領域から有効化領域に移動した場合に、メモリ230に最初に保存された差分、すなわち、無効化領域に存在する検出タッチ座標と、無効化領域から有効化領域に移動した検出タッチ座標との差分である。差分ΔXとnとの関係の一例を図10に示す。
図10は、差分ΔXとnとの関係の一例を示す図である。図10の例では、ΔX1stが、120であるものとする。図10に示すように、差分ΔXは、検出タッチ座標が有効化領域内で移動する度に、非線形的に減少する。
そして、座標補正部243は、減少させた差分が所定の閾値以下であるか否かを判定する。座標補正部243は、減少させた差分が所定の閾値を超過するならば、減少させた差分をメモリ230に上書き保存し、補正後の検出タッチ座標を上位処理部244に出力する。このとき、座標補正部243は、変換指IDが存在する場合には、変換指IDに対応づけて補正後の検出タッチ座標を上位処理部244に出力し、変換指IDが存在しない場合には、指IDに対応づけて補正後の検出タッチ座標を上位処理部244に出力する。
一方、座標補正部243は、減少させた差分が所定の閾値以下であるならば、補正後の検出タッチ座標の出力を中止するとともに、座標取得部141から取得される今回の検出タッチ座標をそのまま上位処理部244に出力する。このとき、座標補正部143は、指IDに対応づけて今回の検出タッチ座標を上位処理部244に出力する。
上位処理部244は、座標補正部243から入力される検出タッチ座標を用いてスライド操作等の所定の操作処理を行う。
次に、実施例2に係る電子機器200の処理手順を説明する。図11は、実施例2に係る電子機器の処理手順を示すフローチャートである。図11に示すように、電子機器200は、タッチパネル120aに対する指の接触を受け付け、指IDに対応付けてタッチ座標を検出する(ステップS201)。
電子機器200は、検出タッチ座標がタッチパネル120aの無効化領域に存在するか否かを判定する(ステップS202)。電子機器200は、検出タッチ座標が無効化領域に存在する場合には(ステップS202;Yes)、タッチパネル120aに対する指の接触が最初の接触であるか否かを判定する(ステップS203)。
電子機器100は、タッチパネル120aに対する指の接触が最初の接触であるならば(ステップS203;Yes)、指IDに対応付けて検出タッチ座標をメモリ230に保存する(ステップS204)。これにより、検出タッチ座標が、無効化領域内の始点としてメモリ230に保存される。電子機器200は、上位処理部244に対する検出タッチ座標の出力を中止し(ステップS205)、処理をステップS219に移行する。電子機器200は、タッチパネル120aに対する指の接触が最初の接触でないならば(ステップS203;No)、ステップS204を省略し、処理をステップS205に移行する。
一方、電子機器200は、検出タッチ座標がタッチパネル120aの無効化領域に存在しない場合には(ステップS202;No)、メモリ230に保存されている検出タッチ座標が初期値「−1(補正なし)」であるか否かを判定する(ステップS206)。電子機器100は、メモリ230に保存されている検出タッチ座標が初期値「−1(補正なし)」である場合には(ステップS206;Yes)、今回の検出タッチ座標を上位処理部244にそのまま出力し(ステップS207)、処理をステップS219に進める。一方、電子機器200は、メモリ230に保存されている検出タッチ座標が初期値「−1(補正なし)」でない場合には(ステップS206;No)、検出タッチ座標が無効化領域から有効化領域に移動したか否かを判定する(ステップS208)。
電子機器200は、検出タッチ座標が無効化領域から有効化領域に移動した場合には(ステップS208;Yes)、必要に応じて指IDを変換後ID:0に変換する(ステップS209)。電子機器200は、メモリ230に保存されている検出タッチ座標と、今回の検出タッチ座標との差分を算出し(ステップS210)、今回の検出タッチ座標をメモリ230に保存されている検出タッチ座標に補正する(ステップS211)。
続いて、電子機器200は、算出した差分を指IDに対応付けてメモリ230に保存する(ステップS212)。メモリ230に保存された差分が、検出タッチ座標の2回目以降の補正に用いられる差分(補正量)となる。座標補正部243は、補正後の検出タッチ座標を上位処理部244に出力し(ステップS213)、処理をステップS219に移行する。このとき、電子機器200は、変換指IDが存在する場合には、変換指IDに対応づけて補正後の検出タッチ座標を上位処理部244に出力し、変換指IDが存在しない場合には、指IDに対応づけて補正後の検出タッチ座標を上位処理部244に出力する。
一方、電子機器200は、検出タッチ座標が無効化領域から有効化領域に移動していない場合、すなわち、検出タッチ座標が有効化領域内で移動した場合には(ステップS208;No)、以下の処理を行う。すなわち、電子機器200は、メモリ230に保存された差分を減少させる(ステップS214)。電子機器200は、減少させた差分を今回の検出タッチ座標から加算又は減算することによって、補正後の検出タッチ座標を算出する(ステップS215)。電子機器200は、減少させた差分が所定の閾値以下であるか否かを判定する(ステップS216)。
電子機器200は、減少させた差分が所定の閾値を超過するならば(ステップS216;No)、処理をステップS212に移行する。
一方、電子機器200は、減少させた差分が所定の閾値以下であるならば(ステップS216;Yes)、上位処理部244に対する補正後の検出タッチ座標の出力を中止する(ステップS217)。電子機器200は、メモリ230に保存されている変換後ID及び差分をクリアし、変換後ID及び差分に初期値を設定し(ステップS218)、処理をステップS207に移行する。
電子機器200は、処理を終了するか否かを判定する(ステップS219)。電子機器200は、処理を継続する場合には(ステップS219;No)、処理をステップS201に戻す。一方、電子機器200は、処理を終了する場合には(ステップS219;Yes)、処理を終了する。
次に、実施例2に係る電子機器200の効果を説明する。電子機器200は、検出タッチ座標が有効化領域に移動した場合に、メモリ230に保存された検出タッチ座標と今回の検出タッチ座標との差分を算出するとともに今回の検出タッチ座標をメモリ230に保存されたタッチ座標に補正する。そして、電子機器200は、検出タッチ座標が有効化領域内で移動した場合に、算出済みの差分を用いて、今回の検出タッチ座標を補正する。このため、実施例2に係る電子機器200によれば、タッチパネルにおいて無効化領域を始点とする操作が有効化領域内で継続して行われた場合の操作性をより向上することができる。
また、実施例2の電子機器200は、検出タッチ座標が有効化領域内で移動する度に、算出済みの差分を減少させ、減少させた差分を今回の検出タッチ座標から減算することによって、今回の検出タッチ座標を補正する。このため、実施例2に係る電子機器200によれば、検出タッチ座標と補正後の検出タッチ座標とを漸次的に近づけることが可能となる。
また、実施例2の電子機器200は、減少させた差分が所定の閾値以下であるか否かを判定する。電子機器200は、減少させた差分が所定の閾値を超過するならば、補正後の検出タッチ座標を上位処理部244に出力し、減少させた差分が所定の閾値以下であるならば、上位処理部244に対する補正後の検出タッチ座標の出力を中止する。このため、実施例2の電子機器200は、補正後の検出タッチ座標を用いた操作を適切に中止することができる。
[他の実施例]
上記の実施例1、2における各処理は、各処理に対応する座標入力プログラムをCPU140,240に実行させることによって実現してもよい。例えば、上記の実施例1、2における各処理に対応する座標入力プログラムがメモリ130,230に記憶され、座標入力プログラムがCPU140,240によってメモリ130,230から読み出されて実行されてもよい。