以下、本発明につき図面を参照しつつ詳細に説明する。なお、以下の説明により本発明が限定されるものではない。また、以下の説明における構成要素には、当業者が容易に想定できるもの、実質的に同一のもの、いわゆる均等の範囲のものが含まれる。以下においては、文字入力装置として携帯電話端末を例として説明するが、本発明の適用対象は携帯電話端末に限定されるものではなく、タッチパネルを備える各種装置、例えば、PHS(Personal Handyphone System)、PDA、ポータブルナビゲーション装置、パーソナルコンピュータ、ゲーム機等に対しても本発明は適用できる。
(実施形態)
図1は、本発明の文字入力装置の一実施形態である携帯電話端末1の外観を示す正面図である。携帯電話端末1は、タッチパネル2と、ボタン3A、ボタン3Bおよびボタン3Cからなる入力部3を備える。タッチパネル2は、文字、図形、画像等を表示するとともに、指、スタイラス、ペン等(以下、単に「指」という)を用いてタッチパネル2に対して行われる各種動作を検出する。入力部3は、いずれかのボタンが押下された場合に、押下されたボタンに対応する機能を起動させる。
携帯電話端末1は、利用者から文字の入力を受け付ける場合に、図2に示すように、タッチパネル2上に入力文字列候補表示領域14とテキスト表示領域15とを設けるとともに、仮想キーボード4を表示させる。入力文字列候補表示領域14は、仮想キーボード4を用いて入力された文字を含む単語等が、利用者が入力しようとしている文字列の候補として表示される領域である。テキスト表示領域15は、入力が確定した文字からなるテキストが表示される領域である。
仮想キーボード4は、物理的なキーボードのキーを模した複数の仮想的なボタンを含む。例えば、利用者が仮想キーボード4内の「Q」のボタンに指を置いて(接触して)離す動作をすると、その動作がタッチパネル2によって検出され、携帯電話端末1は、「Q」という文字を入力として受け付ける。なお、図2では、仮想キーボード4上に各アルファベットに対応するボタンがQWERY配列で配置されているが、ボタンの配置は任意でよい。
携帯電話端末1は、さらに、仮想キーボード4上での連続方式による文字の入力を受け付ける。連続方式とは、利用者が指をタッチパネル2に接触させたまま仮想キーボード4上を移動させることによって複数の文字を連続して入力することを可能にする方式である。連続方式では、利用者は、例えば、指をタッチパネル2に接触させたままで、「W」のボタン、「E」のボタン、「T」のボタンの順に滑るように移動させることで「WET」という文字列を入力することができる。
このように、連続方式では、ボタン毎に指を上げ下げする動作を行わずに、タッチパネル2上で指を滑るように移動させるだけで複数の文字を入力することができるため、非常に高速に文字を入力することができる。
ただし、連続方式では、利用者が指を移動させた軌跡上にある各ボタンについて、利用者がそのボタンに対応する文字を入力するために意図的に触れたのか、あるいは、利用者が他のボタン上へ指を移動させるために単にその上を通過させたに過ぎないのかを判定する必要がある。例えば、仮想キーボード4の配列がQWERTY配列であり、利用者が上記の「WET」という単語を入力したいものとする。この場合、利用者の指は「E」のボタンから「T」のボタンへ移動する際に、それらのボタンの間にある「R」のボタン上を通過することになる。このため、「R」のボタンについては意図的に触れたわけではないと判定できなかった場合には、利用者の意図に反して「WERT」という文字列が入力として受け付けられてしまう。
そこで、携帯電話端末1は、利用者が指を移動させた軌跡上にあるボタンのうち、特定の動作(所定動作)がタッチパネル2によって検出された位置に表示されているボタンを、利用者が文字を入力するために意図的に触れたものであると判定する。具体的には、携帯電話端末1は、指の接触を開始する動作がタッチパネル2によって検出された場合、接触の開始が検出された位置にボタンがあれば、そのボタンは意図的に触れられたと判定する。また、携帯電話端末1は、指の移動が終了しタッチパネル2から離れる動作がタッチパネル2によって検出された場合、接触の終了が検出された位置にボタンがあれば、そのボタンは意図的に触れられたと判定する。
また、携帯電話端末1は、指がタッチパネル2に触れたまま移動方向を変更する動作がタッチパネル2によって検出された場合、移動方向の変更が検出された位置にボタンがあれば、そのボタンは意図的に触れられたと判定する。具体的には、携帯電話端末1は、指がボタンに進入したときの移動方向と指がボタンから出るときの移動方向とを比較し、移動方向の角度差が閾値よりも大きければ、利用者が意図的にそのボタンに触れたと判定する。
これは、他のボタンへの移動中において、単に通過するに過ぎない場合、指はボタン上を一定方向へ移動し、図3に示すように進入時の移動方向(ベクトル)を示すV1と脱出時の移動方向を示すV2の角度差は小さくなると考えられるためである。また、図4に示すように進入時の移動方向を示すV3と脱出時の移動方向を示すV4の角度差の角度差が大きい場合、利用者が意図的にそのボタンに触れた後に他のボタンに触れるために移動方向を変更した可能性が高いためである。つまり、このボタンが目的ボタンの一つであったと判定できる。
また、携帯電話端末1は、図5に示すように、指がタッチパネル2に触れたままあるボタン領域内で回転する軌跡を描いて移動する動作がタッチパネル2によって検出された場合に、利用者が意図的にそのボタンに触れたと判定する。単に通過するに過ぎない場合に指がこのような軌跡を描いて移動することはないと考えられるためである。なお、回転する軌跡に限らずに、山型や波状等の特徴的な形状の軌跡が指によってボタン領域内で描かれた場合に、利用者が意図的にそのボタンに触れたと判定することとしてもよい。
このようにボタン領域内で特徴的な形状の軌跡を描く指の移動が検出された場合にそのボタンが意図的に触れられたと判定することにより、利用者は同じ文字を容易に連続して入力することが可能になる。例えば、「W」という文字を3回連続して入力したい場合、利用者は「W」のボタン領域内で円を3回描くように指を移動させればよい。ここで、例えば、ボタン領域内での指の移動ベクトルの角度の総計が360度を超える度に1回転とカウントすることにより、回転数をカウントすることができる。
また、携帯電話端末1は、指がタッチパネル2に触れたままあるボタン領域内に所定以上の期間留まった場合に、利用者が意図的にそのボタンに触れたと判定する。ここでいう所定以上の期間は、単に指がボタン領域を通過する場合に要する時間よりも十分に長い時間であり、例えば、0.5秒程度の期間でよい。
このように利用者が意図する位置を特定の動作の検出によって特定する技術は、図6から図8に示すように、候補を選択する場合や、入力済みのテキストを編集する場合にも利用される。なお、以下に示す例は、ローマ字入力によって日本語が入力される場合の例である。
図6は、候補を選択する場合の操作例を示す図である。ステップS11では、「E」のボタン領域内に指が置かれた後、指がタッチパネル2に触れたまま、「R」、「E」、「H」、「J」、「K」の順にボタン領域を通過し、「U」のボタン領域に所定以上の期間留まっている。この場合、携帯電話端末1は、指が置かれた「E」のボタンと、進入方向と脱出方向の角度差が閾値よりも大きい「R」、「E」および「K」のボタンと、滞在期間が所定以上である「U」のボタンとが意図的に触れられたと判定する。
そして、携帯電話端末1は、これらのボタンに対応する文字を連結した「EREKU」をローマ字変換して得られる「えれく」をテキスト表示領域15に表示する。この表示は、どのボタンが意図的に触れられたと判定したかを利用者に示すために行われ、「えれく」には、この文字列が未確定な文字列であることを表す下線が付される。このとき、テキスト表示領域15では、新たに文字が追加される位置を示すカーソル(図中では黒塗りの三角形として表示)が、「えれく」の直前に表示される。また、改行位置を示す改行記号が、「えれく」の直後に表示される。
また、携帯電話端末1は、「えれく」を予測変換して得られた「エレクトーン」および「エレクトロニクス」という2つの文字列を入力文字列の候補として、入力文字列候補表示領域14に表示する。予測変換とは、入力済みの文字との結びつきの強さや使用頻度等に基づいて、入力途中の文字から、利用者が入力しようとしている文字列を予測する技術である。
続いて、ステップS12では、指がタッチパネル2に触れたまま、入力文字列候補表示領域14内の「エレクトロニクス」の表示領域に入った後、進行方向を変更して表示領域の外部へ移動している。この場合、携帯電話端末1は、「エレクトロニクス」の表示領域への進入方向と脱出方向の角度差が閾値よりも大きいため、「エレクトロニクス」が選択されたと判定する。
そして、ステップS13において、携帯電話端末1は、未確定な文字列であった「えれく」を消去して、選択された「エレクトロニクス」をカーソルの直後に表示させる。そして、携帯電話端末1は、新たに入力される文字が「エレクトロニクス」の後に追加されることを示すために、カーソルを「エレクトロニクス」の直後に移動させる。
このように、入力文字列候補表示領域14に表示されている入力文字列の候補のいずれが選択されたかを特定の動作が検出された位置に基づいて判定することにより、利用者は、指をタッチパネル2に触れさせたままで、入力文字列をスムーズに選択することができる。
図7は、入力済みのテキストに文字列を追加する場合の操作例を示す図である。ステップS21は、図6に示したような操作によって「エレクトロニクスの発達により」というテキストの入力が済んでいる場面を示している。この場面では、「エレクトロニクスの発達により」というテキストがテキスト表示領域15に表示され、そのテキストの直後にカーソルおよび改行記号が表示されている。また、利用者の指は、タッチパネル2に触れたまま、仮想キーボード4内に置かれている。
ここで、利用者が、入力済の「エレクトロニクス」と「の」の間に、「産業」の文字列を追加する編集を行いたいものとする。この場合、利用者は、ステップS22として、指をタッチパネル2に触れさせたままで、テキスト表示領域15に表示されている「エレクトロニクス」と「の」の間に移動させた後、進行方向を変更して仮想キーボード4内へ戻す。
すると、携帯電話端末1は、「エレクトロニクス」と「の」間の空間への進入方向と脱出方向の角度差が閾値よりも大きいため、「エレクトロニクス」と「の」の間が選択されたと判定する。そして、携帯電話端末1は、ステップS23として、選択された位置が新たに入力される文字の挿入位置となったことを示すために、カーソルを、「エレクトロニクス」と「の」間へ移動させる。
続いて、利用者は、ステップS24として、上述した連続方式により「さんぎ(SANGI)」と入力する。すると、携帯電話端末1は、「さんぎ」を、未確定であることを示す下線を付して、テキスト表示領域15内のカーソルの直後に挿入して表示する。また、携帯電話端末1は、「さんぎ」を予測変換して得られた「産業」および「三行」という2つの文字列を入力文字列の候補として、入力文字列候補表示領域14に表示する。
続いて、利用者は、ステップS25として、指をタッチパネル2に触れさせたままで、入力文字列候補表示領域14内の「産業」の表示領域内へ移動させた後、進行方向を変更して表示領域の外部へ移動させている。すると、携帯電話端末1は、「産業」の表示領域への進入方向と脱出方向の角度差が閾値よりも大きいため、「産業」が選択されたと判定する。
そして、ステップS26において、携帯電話端末1は、未確定な文字列であった「さんぎ」を消去して、選択された「産業」をカーソルの直後に表示させる。そして、携帯電話端末1は、新たに入力される文字が「産業」の後に追加されることを示すために、カーソルを「産業」の直後に移動させる。
このように、テキスト表示領域15に表示されている入力済みのテキストに文字列を挿入する位置を特定の動作が検出された位置に基づいて特定することにより、利用者は、指をタッチパネル2に触れさせたままで、挿入位置をスムーズに指定することができる。
図8は、入力済みのテキストの一部を編集する場合の操作例を示す図である。ステップS31は、図6に示したような操作によって「エレクトロニクス三行の発達により」というテキストの入力が済んでいる場面を示している。この場面では、「エレクトロニクス三行の発達により」というテキストがテキスト表示領域15に表示され、そのテキストの直後にカーソルおよび改行記号が表示されている。また、利用者の指は、タッチパネル2に触れたまま、仮想キーボード4内に置かれている。
ここで、利用者が、入力済の「三行」を「産業」へ修正したいものとする。この場合、利用者は、ステップS32として、指をタッチパネル2に触れさせたままで、テキスト表示領域15に表示されている「エレクトロニクス」と「三行」の間に移動させた後、進行方向を変更して、指を「三行」と「の」の間まで移動させる。さらに、利用者は、進行方向を変更して仮想キーボード4内へ戻す。
すると、携帯電話端末1は、「エレクトロニクス」と「三行」間の空間への進入方向と脱出方向の角度差が閾値よりも大きく、また、「三行」と「の」間の空間への進入方向と脱出方向の角度差が閾値よりも大きいため、「エレクトロニクス」と「三行」の間と、「三行」と「の」の間とが選択されたと判定する。このように2カ所が連続して選択された場合、携帯電話端末1は、その2カ所に挟まれる範囲を選択範囲として、他の部分と異なる態様で表示させるとともに、選択範囲の開始位置にカーソルを移動させる。図8の例では、携帯電話端末1は、ステップS33として、「三行」の部分を選択範囲として反転表示させ、その部分の直前の位置にカーソルを移動させている。
続いて、利用者は、ステップS34として、上述した連続方式により「さんぎ(SANGI)」と入力する。すると、携帯電話端末1は、選択範囲となっている「三行」に代えて、「さんぎ」を、未確定であることを示す下線を付して表示する。また、携帯電話端末1は、「さんぎ」を予測変換して得られた「産業」および「三行」という2つの文字列を入力文字列の候補として、入力文字列候補表示領域14に表示する。
続いて、利用者は、ステップS35として、指をタッチパネル2に触れさせたままで、入力文字列候補表示領域14内の「産業」の表示領域内へ移動させた後、進行方向を変更して表示領域の外部へ移動させている。すると、携帯電話端末1は、「産業」の表示領域への進入方向と脱出方向の角度差が閾値よりも大きいため、「産業」が選択されたと判定する。
そして、ステップS36において、携帯電話端末1は、未確定な文字列であった「さんぎ」を消去して、選択された「産業」をカーソルの直後に表示させる。そして、携帯電話端末1は、新たに入力される文字が「産業」の後に追加されることを示すために、カーソルを「産業」の直後に移動させる。
このように、テキスト表示領域15に表示されている入力済みのテキストの置換範囲を特定の動作が検出された位置に基づいて特定することにより、利用者は、指をタッチパネル2に触れさせたままで、置換範囲をスムーズに指定することができる。
次に、携帯電話端末1の機能と制御部との関係を説明する。図9は、図1に示す携帯電話端末1の機能の概略構成を示すブロック図である。図9に示すように携帯電話端末1は、タッチパネル2と、入力部3と、電源部5と、通信部6と、スピーカ7と、マイク8と、記憶部9と、主制御部10と、RAM(Random Access Memory)11とを有する。
タッチパネル2は、表示部2Bと、表示部2Bに重畳されたタッチセンサ2Aとを有する。タッチセンサ2Aは、指を用いてタッチパネル2に対して行われた各種動作を、動作が行われた場所のタッチパネル2上での位置とともに検出する。タッチセンサ2Aによって検出される動作には、指をタッチパネル2の表面に接触させる動作や、指をタッチパネル2の表面に接触させたまま移動させる動作や、指をタッチパネル2の表面から離す動作が含まれる。なお、タッチセンサ2Aは、感圧式、静電式等のいずれの検出方式を採用していてもよい。表示部2Bは、例えば、液晶ディスプレイ(LCD、Liquid Crystal Display)や、有機EL(Organic Electro−Luminescence)パネルなどで構成され、文字、図形、画像等を表示する。
入力部3は、物理的なボタン等を通じて利用者の操作を受け付け、受け付けた操作に対応する信号を主制御部10へ送信する。電源部5は、蓄電池または外部電源から得られる電力を、主制御部10を含む携帯電話端末1の各機能部へ供給する。通信部6は、基地局によって割り当てられるチャネルを介し、基地局との間でCDMA方式などによる無線信号回線を確立し、基地局との間で電話通信及び情報通信を行う。スピーカ7は、電話通信における相手側の音声や着信音等を出力する。マイク8は、利用者等の音声を電気的な信号へ変換する。
記憶部9は、例えば、不揮発性メモリや磁気記憶装置であり、主制御部10での処理に利用されるプログラムやデータを保存する。具体的には、記憶部9は、メールの送受信や閲覧のためのメールプログラム9Aや、WEBページの閲覧のためのブラウザプログラム9Bや、上述した連続方式での文字入力処理と特定の動作による位置指定に基づく編集処理とを実行する文字入力プログラム9Cや、文字入力時にタッチパネル2に表示される仮想キーボードに関する定義を含む仮想キーボードデータ9Dや、正当な文字列が登録された辞書データ9Eを記憶する。記憶部9には、携帯電話端末1の基本的な機能を実現するオペレーティングシステムプログラムや、氏名、電話番号、メールアドレス等が登録されたアドレス帳データ等の他のプログラムやデータも記憶される。
主制御部10は、例えば、CPU(Central Processing Unit)であり、携帯電話端末1の動作を統括的に制御する。具体的には、主制御部10は、記憶部9に記憶されているデータを必要に応じて参照しつつ、記憶部9に記憶されているプログラムを実行して、タッチパネル2、通信部6等を制御することによって各種処理を実行する。主制御部10は、記憶部9に記憶されているプログラムや、処理を実行することによって取得/生成/加工されたデータを、一時的な記憶領域を提供するRAM11に必要に応じて展開する。なお、主制御部10が実行するプログラムや参照するデータは、通信部6による無線通信でサーバ装置からダウンロードすることとしてもよい。
ここで、記憶部9が記憶する仮想キーボードデータ9Dの一例を図10に示す。図10の例に示すように、仮想キーボードデータ9Dには、仮想キーボードに含まれるボタン毎に、ボタンに対応する文字、ボタンの位置(例えば、左上座標)、幅、高さ等が登録される。図10に示す例では、あるボタンに対応する文字が「Q」であり、そのボタンの左上座標がX=10、Y=10であり、そのボタンの幅と高さが20と40であること等が登録されている。
次に、携帯電話端末1が文字の入力を受け付ける場合の動作について説明する。図11は、携帯電話端末1による文字入力処理の処理手順を示すフロー図である。図11に示す文字入力処理は、主制御部10が記憶部9から文字入力プログラム9Cを読み出して実行することにより実現され、仮想キーボード4がタッチパネル2上に表示されている間、繰り返し実行される。なお、仮想キーボード4は、主制御部10が文字入力プログラム9Cまたは他のプログラムを実行することにより、タッチパネル2上に表示される。
まず、主制御部10は、ステップS41として、検出フラグを0に設定する。検出フラグは、上述した特定の動作が検出された場合に1に設定されるフラグであり、RAM11に設けられる。続いて、主制御部10は、ステップS42として、特定動作検出処理を実行して、タッチパネル2にて特定の動作が検出されたかを判定する。特定動作検出処理の実行後も検出フラグが0のままの場合、すなわち、特定の動作が検出されない場合(ステップS43,No)、主制御部10は、ステップS42に戻って、特定動作検出処理を再実行する。なお、特定動作検出処理の詳細については後述する。
特定動作検出処理の実行後に検出フラグが1へ変化していた場合、すなわち、特定の動作が検出された場合(ステップS43,Yes)、主制御部10は、ステップS44として、特定の動作が検出された位置が仮想キーボード4内であるかを判定する。
特定の動作が検出された位置が仮想キーボード4内である場合(ステップS44,Yes)、主制御部10は、ステップS45として、特定の動作が検出された位置に表示されているボタンに対応する文字を仮入力バッファに追加する。仮入力バッファは、仮想キーボードを用いて入力された文字が時系列に格納されるバッファである。仮入力バッファは、RAM11に設けられ、予め空に初期化される。
そして、主制御部10は、ステップS46として、仮入力バッファに格納されている文字を格納順に連結した文字列に基づいて予測変換処理を実行して、入力文字列の候補を取得する。ここで、予測変換処理は、例えば、仮入力バッファに格納されている文字を格納順に連結した文字列を、辞書データ9Eに登録されている文字列と照合することによって実現される。予測変換処理によって得られた入力文字列の候補(以下、「予測変換候補」という)のそれぞれは、入力文字列候補表示領域14での表示位置を特定するための情報(例えば、表示領域の左上座標、幅および高さ)と対応づけて、RAM11に格納される。
続いて、主制御部10は、ステップS47として、選択開始フラグを0に設定する。選択開始フラグは、テキスト表示領域15に表示されているテキストに選択範囲を設定するための操作を検出するために用いられるフラグであり、RAM11に設けられる。
選択開始フラグは、予め0に初期設定され、テキスト表示領域15内において特定の動作が検出された場合に1に設定される。そして、選択開始フラグが1に設定されている間に再びテキスト表示領域15内において特定の動作が検出された場合に、2つの特定の動作が検出された位置に挟まれた範囲が選択範囲として設定される。一方、選択開始フラグが1に設定されている間にテキスト表示領域15以外で特定の動作が検出された場合、選択開始フラグは0に戻される。このように、選択範囲は、テキスト表示領域15内において特定の動作が2回連続して検出された場合に設定される。
ここで、主制御部10は、ステップS48として、テキスト表示領域15に表示されているテキストに選択範囲が設定されているかを判定する。そして、選択範囲が設定されている場合(ステップS48,Yes)、図8で示したように選択範囲は置換対象であるため、主制御部10は、ステップS49として、確定入力バッファから選択範囲に対応する文字を削除する。
確定入力バッファは、連続方式等で入力された文字列からなるテキストが格納されるバッファであり、RAM11に設けられる。確定入力バッファに格納されているテキストは、主制御部10の制御によってテキスト表示領域15に表示される。確定入力バッファに格納されているテキストを構成する各文字がテキスト表示領域15内で表示される位置は、予め設定されている書体の種類と大きさ、行間の高さ、禁則処理規則等に基づいて算出される。
RAM11には、確定入力バッファに関連する情報として、カーソルの位置を特定するための情報が格納される。カーソルの位置を特定するための情報は、連続方式等で新たに入力された文字列を確定入力バッファに格納されているテキストのどこに挿入するかを決定するために用いられる。カーソルの位置を特定するための情報は、確定入力バッファに格納されているテキストの末尾に文字列が追加されるように予め初期設定される。
また、RAM11には、確定入力バッファに関連する情報として、選択範囲を特定するための情報が格納される。選択範囲を特定するための情報は、確定入力バッファに格納されているテキストのどこからどこまでを選択範囲として扱うかを決定するために用いられる。選択範囲を特定するための情報は、確定入力バッファに格納されているテキストのどの部分も選択範囲として扱われないように予め初期設定される。
そして、主制御部10は、ステップS63として、タッチパネル2の表示内容を更新して文字入力処理を完了させる。具体的には、主制御部10は、RAM11に格納されている予測変換候補を、表示位置を特定するための情報に従って入力文字列候補表示領域14に表示する。また、主制御部10は、確定入力バッファに格納されているテキストに含まれる各文字を、上述したように、書体の種類と大きさ、行間の高さ、禁則処理規則等に基づいて表示位置を算出しながらテキスト表示領域15に表示する。このとき、主制御部10は、仮入力バッファに格納されている文字を格納順に連結した文字列を、カーソルの位置を特定するための情報が示す位置に挿入して、下線を付して表示する。なお、ローマ字変換が有効な場合は、仮入力バッファに格納されている文字を格納順に連結した文字列に代えて、その文字列をローマ字変換した文字列が挿入される。
また、選択範囲を特定するための情報が、確定入力バッファに格納されているテキストのうち選択範囲として扱う部分があることを示している場合、主制御部10は、当該部分に対応する文字を反転表示する等して他の部分と異なる態様で表示させる。また、主制御部10は、カーソルの位置を特定するための情報に従ってカーソルを表示し、確定入力バッファに格納されているテキストの改行位置に改行記号を表示する。
特定動作検出処理において特定の動作が検出された位置が仮想キーボード4内でない場合(ステップS44,No)、主制御部10は、ステップS50として、特定の動作が検出された位置がテキスト表示領域15内であるかを判定する。特定の動作が検出された位置がテキスト表示領域15である場合(ステップS50,Yes)、主制御部10は、ステップS51として、選択開始フラグが0であるか否かを判定する。
選択開始フラグが0である場合(ステップS51,Yes)、主制御部10は、ステップS52として、特定の動作が検出された位置へカーソルが移動するように、カーソルの位置を特定するための情報を更新する。例えば、確定入力バッファに格納されているテキストの5番目の文字の表示位置と6番目の文字の表示位置の間で特定の動作が検出された場合、カーソルの位置を特定するための情報は、5番目の文字の表示位置と6番目の文字の表示位置の間にカーソルが表示されるように更新される。
続いて、主制御部10は、ステップS53として、選択開始フラグを1に設定する。そして、主制御部10は、選択範囲が設定された場合に未確定な文字列が残っていると処理が煩雑になるため、ステップS54として、仮入力バッファをクリアし、ステップS55として、予測変換候補を削除する。また、主制御部10は、ステップS56として、選択範囲が既に設定されていれば、選択範囲が解除されるように選択範囲を特定するための情報を更新する。
そして、主制御部10は、ステップS63として、上述したようにしてタッチパネル2の表示内容を更新し、文字入力処理を完了させる。
一方、選択開始フラグが0でない場合、すなわち、選択範囲の始点となる位置にカーソルが設定されている場合(ステップS51,No)、主制御部10は、ステップS57として、カーソルの位置から特定の動作が今回検出された位置までが選択範囲となるように、選択範囲を特定するための情報を更新する。そして、主制御部10は、ステップS58として、選択開始フラグを0に戻す。なお、ここで、始点となる位置を再設定することなく選択範囲を再設定することができるように、選択開始フラグを0に戻さずに、1のままにしておくこととしてもよい。
そして、主制御部10は、ステップS63として、上述したようにしてタッチパネル2の表示内容を更新し、文字入力処理を完了させる。
特定動作検出処理において特定の動作が検出された位置が仮想キーボード4内でもテキスト表示領域15内でもない場合、すなわち、特定の動作が検出された位置が入力文字列候補表示領域14である場合(ステップS50,No)、主制御部10は、ステップS59として、特定の動作が検出された位置に表示されている予測変換候補を確定入力バッファに挿入する。ここで、特定の動作が検出された位置に表示されている予測変換候補は、自らが入力しようとしている文字として利用者によって選択された文字列である。特定の動作が検出された位置に表示されている予測変換候補は、カーソルの位置を特定するための情報が示す位置の直前に挿入され、カーソルの位置を特定するための情報は、挿入された予測変換候補の直後に表示されるように更新される。
続いて、主制御部10は、ステップS60として、選択開始フラグを0に設定する。そして、主制御部10は、未確定な文字列が確定されたため、ステップS61として、仮入力バッファをクリアし、ステップS62として、予測変換候補を削除する。そして、主制御部10は、ステップS63として、上述したようにしてタッチパネル2の表示内容を更新し、文字入力処理を完了させる。
次に、図11のステップS42で実行される特定動作検出処理の詳細について、図12を参照しながら説明する。図12は、特定動作検出処理の処理手順を示すフロー図である。図12に示すように、主制御部10は、まず、ステップS71として、タッチパネル2の検出結果を取得する。
検出された動作がタッチパネル2への接触を開始する動作であった場合(ステップS72,Yes)、主制御部10は、ステップS73として、接触が開始された位置がいずれかの領域内であったかを判定する。
ここで、図12に示す処理手順における「領域」について、図13を参照しながら説明する。図12に示す処理手順における「領域」には、仮想キーボード4内のボタンの表示領域と、入力文字列候補表示領域14内の予測変換候補の表示領域と、テキスト表示領域15内のカーソル設定可能領域とが含まれる。
仮想キーボード4内のボタンの表示領域は、例えば、図13に示す「Q」のボタンの表示領域や、「W」のボタンの表示領域である。仮想キーボード4内の各ボタンの表示領域の位置と大きさは、仮想キーボードデータ9Dに設定されている。
入力文字列候補表示領域14内の予測変換候補の表示領域は、例えば、図13に示す「産業」という文字列の表示領域や、「三行」という文字列の表示領域である。入力文字列候補表示領域14内の各予測変換候補の表示領域の位置と大きさは、表示位置を特定するための情報から求めることができる。表示位置を特定するための情報は、上述したように、予測変換候補と対応付けてRAM11に格納されている。
テキスト表示領域15内のカーソル設定可能領域は、カーソルが設定される可能性のある位置の近傍に設定される不可視な領域であり、具体的には、テキスト表示領域15に表示されるテキストの先頭および改行部分と、テキストに前後して含まれる文字の表示位置間に設定される。テキスト表示領域15内のカーソル設定可能領域は、例えば、図13に示すテキスト表示領域15内に点線で示した矩形領域に相当する。テキスト表示領域15内のカーソル設定可能領域の位置と大きさは、テキストに含まれる文字の表示位置を算出するための基準である書体の種類と大きさ、行間の高さ、禁則処理規則等に基づいて求めることができる。なお、テキスト表示領域15内のカーソル設定可能領域は、互いに重複内程度に広いことが好ましい。
図12の説明に戻って、接触が開始された位置がいずれかの領域内であった場合(ステップS73,Yes)、その領域は意図して触れられたと考えられるので、主制御部10は、ステップS74として、検出フラグを1に設定し、ステップS75として、出力フラグを1に設定して、特定動作検出処理を完了させる。
出力フラグは、RAM11に設けられ、指が現在接触している領域において特定の動作を検出済みであるか否かを判定するために用いられる。出力フラグの値が0であることは、指が現在接触している領域において特定の動作がまだ検出されていないことを示す。出力フラグの値が1であることは、指が現在接触している領域において特定の動作が検出済みであることを示す。
ステップS73において、接触が開始された位置がいずれかの領域内でなかった場合(ステップS73,No)、主制御部10は、特に処理を行わずに特定動作検出処理を完了させる。
ステップS72において、タッチパネル2で検出された動作がタッチパネル2への接触を開始する動作でなかった場合(ステップS72,No)、主制御部10は、ステップS76として、タッチパネル2で検出された動作がタッチパネル2への接触を保ったまま指を領域内に進入させる動作であったかを、タッチパネル2の検出結果に基づいて判定する。検出された動作がタッチパネル2への接触を保ったまま指を領域内に進入させる動作であったか否かは、タッチパネル2の最新の検出結果が示す接触位置とその直前の検出結果が示す接触位置とを各領域の位置および大きさと照合することによって判定される。
検出された動作がタッチパネル2への接触を保ったまま指を領域内に進入させる動作であった場合(ステップS76,Yes)、主制御部10は、ステップS77として、移動方向履歴をクリアする。移動方向履歴は、領域内で指がどの方向へ移動したかを示す方向ベクトルが時系列に記録されるデータであり、RAM11に記憶される。
続いて、主制御部10は、ステップS78として、指が領域内に進入した方向を示す方向ベクトルを取得して、取得した方向ベクトルを移動方向履歴に追加する。そして、主制御部10は、ステップS79として、出力フラグを0に設定して特定動作検出処理を完了させる。
なお、タッチパネル2の検出結果に指の移動方向を示す情報が含まれている場合、方向ベクトルは、タッチパネル2の検出結果から取得される。タッチパネル2の検出結果に指の移動方向を示す情報が含まれていない場合、方向ベクトルは、タッチパネル2の最新の検出結果が示す接触位置とその直前の検出結果が示す接触位置とから算出される。
ステップS76において、タッチパネル2で検出された動作がタッチパネル2への接触を保ったまま指を領域内に進入させる動作でなかった場合(ステップS76,No)、主制御部10は、ステップS80として、タッチパネル2で検出された動作がタッチパネル2への接触を保ったまま指を領域の外へ出す動作であったかを、タッチパネル2の検出結果に基づいて判定する。検出された動作がタッチパネル2への接触を保ったまま指を領域の外へ出す動作であったか否かは、タッチパネル2の最新の検出結果が示す接触位置とその直前の検出結果が示す接触位置とを各領域の位置および大きさと照合することによって判定される。
検出された動作がタッチパネル2への接触を保ったまま指を領域の外へ出す動作であった場合(ステップS80,Yes)、主制御部10は、ステップS81として、出力フラグが0であるかを判定する。ここで、出力フラグが0でなかった場合、すなわち、指がそれまで内部に位置していた領域で特定の動作を検出済みの場合(ステップS81,No)、主制御部10は、特に処理を行わずに特定動作検出処理を完了させる。
一方、出力フラグが0であった場合(ステップS81,Yes)、主制御部10は、ステップS82として、最新の移動ベクトル、すなわち、指が領域の外へ出た方向を示す方向ベクトルを取得し、移動方向履歴の先頭の方向ベクトルとの角度差を算出する。ここで算出された角度差は、指が領域に進入したときの方向と指が領域から脱出したときの方向の相違の大きさを表す。
算出された角度差が所定の閾値以下の場合(ステップS83,No)、指は単に領域を通過したに過ぎないと考えられるため、主制御部10は、特に処理を行わずに特定動作検出処理を完了させる。
一方、算出された角度差が所定の閾値より大きい場合(ステップS83,Yes)、領域は意図的に触れられたと考えられるため、主制御部10は、ステップS84として、検出フラグを1に設定して、特定動作検出処理を完了させる。
ステップS80において、タッチパネル2で検出された動作がタッチパネル2への接触を保ったまま指を領域の外へ出す動作でなかった場合(ステップS80,No)、主制御部10は、ステップS85として、タッチパネル2で検出された動作がタッチパネル2への接触を終了させる動作、すなわち、指をタッチパネル2から離す動作であったかを、タッチパネル2の検出結果に基づいて判定する。
検出された動作がタッチパネル2への接触を終了させる動作であった場合(ステップS85,Yes)、主制御部10は、ステップS86として、出力フラグが0であるかを判定する。ここで、出力フラグが0でなかった場合、すなわち、指がそれまで接触していた領域で特定の動作を検出済みの場合(ステップS86,No)、主制御部10は、特に処理を行わずに特定動作検出処理を完了させる。
一方、出力フラグが0であった場合(ステップS86,Yes)、主制御部10は、ステップS87として、接触が終了された位置がいずれかの領域内であったかを判定する。接触が終了された位置がいずれかの領域内であった場合(ステップS87,Yes)、領域は意図して触れられたと考えられるため、主制御部10は、ステップS88として、検出フラグを1に設定して、特定動作検出処理を完了させる。
接触が終了された位置がいずれかの領域内でなかった場合(ステップS87,No)、主制御部10は、特に処理を行わずに特定動作検出処理を完了させる。
ステップS85において、タッチパネル2で検出された動作がタッチパネル2への接触を終了させる動作でなかった場合(ステップS85,No)、主制御部10は、ステップS89として、タッチパネル2で検出された接触の位置がいずれかの領域内であったかを、タッチパネル2の検出結果に基づいて判定する。
接触の位置がいずれかの領域内であった場合(ステップS89,Yes)、主制御部10は、ステップS90として、指が領域内で移動した方向を示す方向ベクトルを取得して、取得した方向ベクトルを移動方向履歴に追加する。そして、主制御部10は、ステップS91として、移動方向履歴に記録されている各方向ベクトルを参照して、指がタッチパネル2に触れたまま領域内で回転する軌跡を描いて移動したかを判定する。
ここで、指がタッチパネル2に触れたまま領域内で回転する軌跡を描いて移動していた場合(ステップS91,Yes)、領域は意図的に触れられたと考えられるため、主制御部10は、ステップS94として、検出フラグを1に設定する。そして、主制御部10は、ステップS95として、出力フラグを1に設定し、ステップS96として、移動方向履歴をクリアして、特定動作検出処理を完了させる。
ステップS91において、指がタッチパネル2に触れたまま領域内で回転する軌跡を描いて移動していなかった場合(ステップS91,No)、主制御部10は、ステップS92として、出力フラグが0であるかを判定する。ここで、出力フラグが0でなかった場合、すなわち、指が滞在している領域で特定の動作を検出済みの場合(ステップS92,No)、主制御部10は、特に処理を行わずに特定動作検出処理を完了させる。
一方、出力フラグが0であった場合(ステップS92,Yes)、主制御部10は、ステップS93として、指が現在の領域に滞在している時間が所定以上であるかを判定する。ここで、滞在時間は移動方向履歴に含まれる方向ベクトルの数に基づいて求めてもよい。滞在時間が所定以上の場合(ステップS93,Yes)、領域は意図して触れられたと考えられるため、主制御部10は、ステップS94として、検出フラグを1に設定する。そして、主制御部10は、ステップS95として、出力フラグを1に設定し、ステップS96として、移動方向履歴をクリアして、特定動作検出処理を完了させる。
滞在時間が所定以上でなかった場合(ステップS93,No)、領域が意図して触れられたか不明であるため、主制御部10は、特に処理を行わずに特定動作検出処理を完了させる。
ステップS89において、接触の位置がいずれかの領域内でなかった場合(ステップS89,No)、主制御部10は、特に処理を行わずに特定動作検出処理を完了させる。
上述してきたように、携帯電話端末1は、指をタッチパネル2から離すことなく、文字の入力や、文字の挿入位置の指定等を行うことができるように構成されているので、タッチパネル上で高速に文字を入力することを可能にする。
なお、上記の実施形態で示した本発明の態様は、本発明の要旨を逸脱しない範囲で任意に変更することができる。例えば、上記の実施形態では、テキスト表示領域15で検出された特定の動作に基づいて、文字列の挿入位置や置換範囲を判定することとしたが、テキスト表示領域15で検出された特定の動作に基づいて、予測変換における単語の区切り位置を変更できるようにしてもよい。
図14は、予測変換における単語の区切り位置を変更する場合の操作例を示す図である。ステップS101は、利用者が、「エレクトロニクス産業の発達により、」というテキストの後に、「国際的」と入力しようとしている場面を示している。この場面では、利用者は、「こくさいてき(KOKUSAITEKI)」と入力したものの、単語の区切りが「こく」と「さいてき」の間にあると誤って解釈されたために、予測変換候補として「濃く最適」および「告最適」という不適切な文字が表示されている。日本語では、英語等と異なって単語間を区切る空白文字がないため、このように単語の区切り位置が誤って解釈される場合がある。
この場合、利用者は、ステップS102として、指をタッチパネル2に触れさせたままで、テキスト表示領域15に表示されている「こくさい」と「てき」の間に移動させた後、進行方向を変更する。
すると、携帯電話端末1は、「こくさい」と「てき」間の空間への進入方向と脱出方向の角度差が閾値よりも大きいため、「こくさい」と「てき」の間が意図的に触れられたと判定する。このように、変換途中の未確定な文字列の表示領域で特定の動作が検出された場合、携帯電話端末1は、その動作が検出された位置が単語の区切り位置であるものとして、予測変換を実行し直す。
その結果、ステップS103では、「国際的」という所望の文字列を含む予測変換候補が、入力文字列候補表示領域14に表示されている。そして、ステップS104では、利用者は、指をタッチパネル2に触れさせたままで、入力文字列候補表示領域14内の「国際的」の表示領域内へ移動させた後、進行方向を変更して表示領域の外部へ移動させている。すると、携帯電話端末1は、「国際的」の表示領域への進入方向と脱出方向の角度差が閾値よりも大きいため、「国際的」が選択されたと判定する。
そして、ステップS105において、携帯電話端末1は、未確定な文字列であった「こくさいてき」を消去して、選択された「国際的」をカーソルの直後に表示させる。そして、携帯電話端末1は、新たに入力される文字が「国際的」の後に追加されることを示すために、カーソルを「国際的」の直後に移動させる。
このように、単語の区切り位置を特定の動作が検出された位置に基づいて特定することにより、利用者は、指をタッチパネル2に触れさせたままで、区切り位置をスムーズに指定することができる。
また、上記の実施形態では、テキスト表示領域15で検出された特定の動作に基づいて、文字列の挿入位置や置換範囲を判定することとしたが、テキスト表示領域15で検出された特定の動作に基づいて、再変換を行う範囲を指定できるようにしてもよい。
図15は、入力済みのテキストの一部を再変換する場合の操作例を示す図である。ステップS111は、図6に示したような操作によって「エレクトロニクス三行の発達により」というテキストの入力が済んでいる場面を示している。この場面では、「エレクトロニクス三行の発達により」というテキストがテキスト表示領域15に表示され、そのテキストの直後にカーソルおよび改行記号が表示されている。また、利用者の指は、タッチパネル2に触れたまま、仮想キーボード4内に置かれている。
ここで、利用者が、入力済の「三行」を「産業」へ再変換したいものとする。この場合、利用者は、ステップS112として、指をタッチパネル2に触れさせたままで、テキスト表示領域15に表示されている「エレクトロニクス」と「三行」の間に移動させた後、進行方向を変更して、指を「三行」と「の」の間まで移動させる。
すると、携帯電話端末1は、「エレクトロニクス」と「三行」間の空間への進入方向と脱出方向の角度差が閾値よりも大きいため、「エレクトロニクス」と「三行」の間が再変換範囲の始点として選択されたと判定する。そして、携帯電話端末1は、「エレクトロニクス」と「三行」の間が選択された後に指が通過した部分を、他の部分と異なる態様で表示させる。図15の例では、携帯電話端末1は、「三行」の部分を反転表示させている。
そして、利用者は、ステップS113として、指をタッチパネル2に触れさせたままで、進行方向を変更させる。すると、携帯電話端末1は、「三行」と「の」間の空間への進入方向と脱出方向の角度差が閾値よりも大きいため、「三行」と「の」の間が再変換範囲の終点として選択されたと判定する。
こうして、再変換範囲の始点および終点が特定されると、携帯電話端末1は、再変換範囲である「三行」の変換前の文字列を取得する。ここで、変換前の文字列は、変換後の文字列を辞書データ9Eと照合して取得することとしてもよいし、予測変換の実行時に変換前の文字列と変換後の文字列とを対応付けて記憶部9等に記憶させておくこととし、その記憶させておいた情報に基づいて取得することとしてもよい。そして、携帯電話端末1は、変換前の文字列に基づいて予測変換を再実行する。
そして、携帯電話端末1は、ステップS114において、再変換範囲である「三行」に代えて、変換前の文字列である「さんぎょう」を、未確定であることを示す下線を付して表示する。また、携帯電話端末1は、「さんぎょう」を予測変換して得られた「産業」および「三行」という2つの文字列を入力文字列の候補として、入力文字列候補表示領域14に表示する。
続いて、利用者は、ステップS115として、指をタッチパネル2に触れさせたままで、入力文字列候補表示領域14内の「産業」の表示領域内へ移動させた後、進行方向を変更して表示領域の外部へ移動させている。すると、携帯電話端末1は、「産業」の表示領域への進入方向と脱出方向の角度差が閾値よりも大きいため、「産業」が選択されたと判定する。
そして、ステップS116において、携帯電話端末1は、未確定な文字列であった「さんぎょう」を消去して、選択された「産業」をカーソルの直後に表示させる。そして、携帯電話端末1は、新たに入力される文字が「産業」の後に追加されることを示すために、カーソルを「産業」の直後に移動させる。
このように、テキスト表示領域15に表示されている入力済みのテキストの再変換範囲を特定の動作が検出された位置に基づいて特定することにより、利用者は、指をタッチパネル2に触れさせたままで、再変換範囲をスムーズに指定することができる。
なお、特定の動作によって指定した範囲を置換範囲として扱うか、再変換範囲として扱うかを利用者が選択できるようにしてもよい。このような選択は、例えば、特定の動作によって範囲が指定された場合に、図16に示すようなメニューをタッチパネル2に表示させることで実現することができる。すなわち、テキスト表示領域15に表示されているテキストのうち「三行」の部分が特定の動作によって範囲指定された場合に、図16に示すようにメニューを表示するように携帯電話端末1を構成する。そして、特定の動作によって「再変換」の項目が選択された場合には、図15に示したような動作を行い、いずれの項目も選択されることなく仮想キーボード4を用いて新たに文字列が入力された場合には、図8に示したような動作を行うようにする。
また、図16に示すようなメニューを表示する場合、「削除」の項目が選択されると、範囲指定された部分を削除することとしてもよい。また、「切り取り」または「コピー」の項目が選択されると、範囲指定された部分を対象としてカット&ペースト操作またはコピー&ペースト動作を行うこととしてもよい。カット&ペースト操作またはコピー&ペースト動作によって選択範囲が挿入される位置は、メニューの項目の選択の後に特定の動作によって指定されることとしてもよい。
また、上述した実施形態では、仮想キーボード4を用いて入力された文字列に基づいて予測変換処理を行うこととしたが、予測変換処理ではなく、仮名漢字変換または補正/補完処理を行うこととしてもよい。ここで、補正/補完処理とは、入力された文字列と類似する単語を辞書データ9Eと照合する等して取得し、入力された文字列が正しい単語となるように誤っている文字を補正したり、不足している文字を補完したりする処理である。
また、上述した実施形態では、文字入力プログラム9Cが提供する画面に表示されるテキストを対象として文字列の挿入等を行うこととしたが、メールプログラム9A等の他のプログラムが提供する画面に表示されるテキストを対象として文字列の挿入等を行うこととしてもよい。この場合、図11および図12に示した処理手順は、文字入力プログラム9Cが提供する機能と、他のプログラムが提供する機能との協業によって実現される。また、文字入力プログラム9Cは、複数のプログラムに分割されていてもよいし、他のプログラムと統合されていてもよい。