以下、本発明の一実施形態について図面を参照して説明する。図1は本発明における文字入力装置400の構成を示すブロック図である。当該装置は、パソコン等のコンピュータ100、入力装置200及びディスプレイ装置300によって構成されている。コンピュータ100は、例えば、デスクトップコンピュータ、ラップトップコンピュータ、ハンドヘルドコンピュータ、ポケットコンピュータ、及び電子手帳など、様々な形をとり得る。図1では一例としてコンピュータ100と入力装置200及びディスプレイ装置300が分かれているが、当業者には明白であるように、これらの全てあるいは一部が一体となっている場合がある。例えば、画面301とポインティングデバイス201とは、一体となっていることもある。
入力装置200に含まれるポインティングデバイス201は、例えば、マウス、トラックボール、トラックパッド、タッチパネル、及びタブレット装置など、様々な形をとり得る。当業者には明白であるように、ポインティングデバイス201は他の装置、例えばキーボードやダイアルなどによって代替可能である。
ディスプレイ装置300に含まれる画面301は、CRT、LCD、及びプラズマディスプレイなど、様々な形をとり得る。当業者には明白であるように、画面301はヘッドマウントディスプレイのような形態もとり得る。
また、コンピュータ100は、入力装置200からの操作入力に応じて、内蔵するCPU、メモリ、補助記憶装置等のハードウェアを、各種の手段として機能させる文字入力プログラムを搭載したり実行したりすることができる。また、コンピュータ100は、入力装置200からの操作入力に応じて、内蔵するCPU、メモリ、補助記憶装置等のハードウェアを利用して、各種のステップを実行させる文字入力プログラムを搭載したり実行したりすることができる。図には省略されているが、一般的なコンピュータにおける記憶手段としてメモリや補助記憶装置等のハードウェアや、ネットワーク回線によって接続された別のコンピュータの制御する記憶手段等様々な外部記憶装置や、コンピュータ可読媒体などが利用可能である場合がある。また、各種データは複数の記憶手段に分散して記憶されていることもある。
検出手段101は、入力装置200からデータを受け取り、座標の値や確定操作の有無を検出する。例えばマウス等のポインティングデバイス201によって得られるx軸とy軸に対する移動量のデータを受け取り画面301上に表示されるポインタの座標を変化させる際や、タッチパネル等のポインティングデバイス201によって得られるx軸とy軸における値のデータを受け取り画面301上に表示されるポインタの座標に反映させる際などに利用され、画面301上のポインタの座標を他の手段に提供可能である。また検出手段101は、例えばポインティングデバイス201のボタンやペンや指の状態とその状態の変化に関する情報を受け取り、確定操作がなされたかどうかの検出にも利用される。検出手段101がどの操作を確定操作とするかの設定は、検出手段101や管理手段104によって、コンピュータ100が通常持つ記憶手段などを利用して管理されている。検出手段101がどの操作を確定操作とするかの設定の変更により、クリック&クリックに二回の確定操作を割り当てるモードや、ドラッグ操作やスライド操作やフリック操作に二回の確定操作を割り当てるモード、またクリック&ダブルクリックに二回の確定操作を割り当てるモードなどを設定することが可能である。例えばドラッグ操作に二回の確定操作を割り当てるモードの場合は、ドラッグ操作が開始された際のポインタ座標において一回目の確定操作が行なわれ、リリース操作された際のポインタ座標において二回目の確定操作が行なわれたと検出されるように設定可能である。他には、ボタンを押した状態やペンや指などを触れた状態でポインタ座標の変化がほとんどないような状態が一定時間以上続いた場合に確定操作とするようなモードとして設定することも可能である。
また一般的なコンピュータ100は通常、画面301上に領域を設定することが可能であるような手段を備えている。例えば矩形の左上の座標と右下の座標、あるいは矩形の左上の座標と幅と高さの指定によって矩形領域を設定する。また例えば、中心座標と半径の指定によって円の領域を設定したり、座標値の集合の指定によってポリゴン領域を設定したり、座標の関係式の指定によって領域を設定したり、またそれらの組み合わせによって領域を設定することもある。パイメニューに利用可能な領域の場合は、大きさの異なる円を同心円として配置してできるドーナツ型の領域を、円の中心から外側へひかれる直線によって区切ることによって生成される。これらのような様々な領域の生成は、公知の方法によって、コンピュータ100において実行可能である。
判定手段103は、検出手段101から得られた座標の値と管理手段104から与えられる領域の性質から、判定対象となる座標が判定対象となる領域に含まれるか否かを判定する。例えば、判定対象となる領域が矩形の領域の場合は、判定対象となる座標のx座標とy座標のそれぞれを、矩形の左上の座標と右下の座標のx座標とy座標それぞれと比較することにより判定することができる。また例えば、判定対象となる領域がパイメニューとして利用可能な形状である場合は、判定対象となる領域の中心の座標から判定対象となる座標への距離を三平方の定理によって求め、パイメニューの領域を構成する円の半径との比較によってパイメニューに含まれるかどうかを判定することができ、判定対象となる領域の中心の座標と判定対象となる座標から逆三角関数を利用して中心角を求めることによって、パイメニュー内のどの領域に含まれるのかを判定することができる。一般的なパイメニューにおいては利用されていない、円の中心を含む円形の領域の場合は、中心の座標から判定対象となる座標への距離と、該当する円の半径との比較によって、中心の含まれる領域に判定対象となる座標が含まれるかどうかを判定することができる。また、ポリゴン領域や関係式の指定による領域の場合も同様に、ある座標が領域に含まれるかどうかを判定することは可能である。
生成手段102は、文字と領域が関連付けられたノードを生成する。ノードに関連付けられる領域は、画面301に表示するための領域という性質と、判定手段103での判定の際に利用される領域という性質を持っているため、生成手段102は、表示用と判定用の二種類の領域が関連付けられたノードを生成することもある。またノードには、オペレータの理解を助けるために、子ノードに関連付けられた文字を追加して関連付けることも可能である。生成手段102によって生成されるノードは、必ず子ノードを持つというわけではなく、子ノードを持たない(子ノードの関連付けられていない)ノードも生成される。これらのノードを構成するための情報は、コンピュータ100が通常持つ記憶手段に記憶され、必要に応じて読み出される。また、生成とは必ずしもオブジェクト指向におけるオブジェクトの生成のみを指すわけではなく、構造体やテーブルなど他の方法によって実現可能であることは当業者には明白である。
管理手段104はノードを階層構造によって管理するため、画面301上に同時に表示されるノードの数を、実際に利用可能なノードの総数よりも、減少させることを可能としている。管理手段104は、検出手段101が確定操作を検出した際には、検出手段101によって検出される座標の情報と、生成手段102の生成したノードのうち画面301に表示されており有効であるもの全てについて、判定手段103による判定が真となるようなノードがあるかどうかを検査する。そのようなノードがあった場合には、管理手段104は、そのノードが子ノードを持つかどうかを検査し、子ノードを持つノードであった場合は当該ノードに関連付けられた子ノードの表示を描画手段105によって行なう。さらに、管理手段104は、当該ノードに関連付けられた領域を変形させ、変形した領域の描画を描画手段105によって行なう。判定手段103による判定のために利用される領域はノードに関連付けられた領域と全く同じである必要はなく、例えば、オペレータの操作を助けるために、有効なノードのない方向にある程度拡大したような領域を利用するということであっても良い。
また、管理手段104がノードの領域を変形する際には、検出手段101が第一の確定操作を検出した際に検出された座標を含むような領域であって、さらに子ノードと同列に扱うことのできる領域も含むような領域に変形することによって、直ちに選択可能な特別な選択肢であってかつ他の選択肢と同列にも扱えるような選択肢として利用可能であるように変形する。このため、管理手段104によって領域を変形させられたノードは、他の子ノードと同列でありながら特別でもある選択肢としての性質を備えることになり、オペレータにとって直感的な文字入力環境の提供が可能となる。
描画手段105は、管理手段104によって利用され、ノードに関連付けられた文字と領域の描画を画面301に対して行なうようにディスプレイ装置300にデータや信号などを送る。描画手段105によるノードの描画において、ノードに関連付けられた文字の描画は必要なものであるが、当該ノードに関連付けられた領域の描画は必要だとは限らない。領域は、画面301に表示されるために利用されることを目的としているだけでなく、判定手段103での判定のために利用されることも目的としているため、画面301上に表示されている必要はないが、オペレータへの目安としての表示や、操作のフィードバックのためのハイライト表示などに利用される。表示用と判定用の二種類の領域が関連付けられたノードを画面301に描画する際には、描画手段105は、ノードに関連付けられた領域のうち表示用の領域の描画と、ノードに関連付けられた文字の描画とを画面301に対して行なうようにディスプレイ装置300にデータや信号などを送る。また、表示されるのは単なる領域と文字のみではなく、アイコンなどのグラフィックス表示による装飾やアニメーション効果などが追加されていても良い。
図2は、画面301に表示される際のノードの一例を示す図である。ノード500は矩形の領域501が関連付けられており、「あ」である文字502が関連付けられている。ノード500の情報は例えば表1のような情報として生成手段102によって生成され、管理手段104によって管理されている。図2においては矩形が領域として利用される例が示されているが、このことはノードの領域は矩形に限るということを意味するわけではなく、さまざまな形状の領域がありうる(以下の他の図における領域の形状についても同様)。ノードの他の例としては、例えばアルファベットの入力のために「th」のようによく利用される組み合わせの文字を割り当てておき、二文字を一度に続けて入力可能であるというように、複数の文字が関連付けられたノードもありうる。また、「RETURN」や「TAB」などの表示を割り当てて機能キーの代替として利用することも可能であることは当業者には明白である。
図3は、画面301に表示される際のノードの別の一例を示す図である。この場合のノード500にも矩形の領域501が関連付けられており、「あ」である文字502が関連付けられているが、子ノードが表示される際の子ノードの位置関係をオペレータが理解することを助けるために、子ノードに関連する文字503が表示されている。点線は文字の範囲を示すためのものであり実際に画面に表示されるものではない。図3において点線で囲われた文字「い」と「う」と「え」と「お」のように、ノード500の子ノードが表示される際のノードの並びを表わすように各文字が配置されているとオペレータの理解をより助ける情報となるが、このような配置に限るというわけではなく、他の配置もありうる。
図4は、画面301にノードが並べられて表示される際の一例を示す図である。図4においてはテンキー配列に対応するような配置でノードが並べられた例が示されているが、このことは初期表示されるノードの配置はこのような配置に限るということを意味するわけではなく、さまざまな配置がありうる。また図4ではノード(500,510,520,530,540,550,560,570,580,590,600,610)の領域は隣り合うノードがそれぞれ互いに接しているが、領域は接していなくても良いし重なっていても良い。重なっている場合には生成された順などの一定の順で判定手段103によって判定することによって重なりを持つ領域についての判定が可能となる(以下の他の図における例についても同様)。ノード590と610には文字が関連付けられていないため、空白の入力や入力のキャンセル等に利用可能である。また句読点や「ー」などかな文字以外の記号の入力にも利用可能であることは当業者には明白である。また、図4のような領域の配置に対して携帯電話に一般に用いられているテンキー配列を対応させて、テンキーが押されたかどうかの状態の変化を検出手段101が検出し、押されたキーによって判定手段103がノード(500,510,520,530,540,550,560,570,580,590,600,610)についての判定を行なうということで、ポインティングデバイスの操作を代替可能である。ダイアル操作の前後に回転する操作と押し込まれる操作を検出手段101が検出し、判定手段103が例えばノードに「500,510,520,530,540,550,560,570,580,590,600,610」という順番をつけ、ダイアル操作の前後に回転する操作に応じて判定結果を前後に移動させるということと、ダイアルが押し込まれる操作を検出手段101が検出した際に確定操作として検出するというように割り当てて代替可能でもある。
図5は、図4の状態において、ノード500の領域内にポインタ座標がある時(「ノード500の領域内にポインタ座標がある時」とは、検出手段101によって検出される座標が、判定手段103によって、ノード500に関連付けられた領域内にあると判定されるような状態を指す。以下、同様。)に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。ノード500の子ノードであるノード701〜704が表示されている。このような子ノードの表示位置は、親ノード(この場合ノード500)からの相対的な位置関係や、画面301上の絶対的な位置を決定するための情報が、生成手段102によって、親ノードあるいは各子ノードに関連付けられている。ここで、ノード500に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード701〜704と同列に扱うことのできる領域を含むような領域に変形されているため、第一の確定操作の後、直ちに第二の確定操作が検出された際にノード500の文字を入力文字として確定させることが可能となっている。(図5においては「第一の確定操作が検出された際に検出された座標を含み、かつノード701〜704と同列に扱うことのできる領域を含むような領域」は、一続きの領域として示されているが、第一の確定操作が検出された際に検出された座標を含む領域と、ノード701〜704と同列に扱うことのできる領域の二つの領域がつながっている必要はなく、一続きではない二つ以上の複数の領域を組み合わせたものがノードに関連付けられてもよい。以下、同様。)図5では、選択されていることをオペレータにフィードバックするためのハイライト表示を行なっている様子が、ノード500に着色されること(領域内の背景が灰色となっていること)で示されている。この状態からポインティングデバイス操作によってポインタ座標がノード701の領域に含まれる位置に移動した際にはノード701がハイライト表示されることになる。ノード500のハイライト表示は、ポインタ座標がノード500の領域に含まれなくなった時点で解除される。図5では、ノード500における文字の表示位置は、子ノードであるノード701〜704の文字と同列に扱われるような位置に移動しており、直ちに入力が可能ではあるが、他のノードと同列に選択可能な選択肢としての側面もあわせ持っていることを示している。(ノード500における文字の表示位置は必ずしも変更する必要のあるものではないが、変更したほうがオペレータの理解を助けることになる。以下の他の図における変形された領域と移動された文字の関係についても同様。)また、図5ではノード500に関連付けられたノードとそれ以外のノードを区別するために、ノード(520,530,540,550,560,570,580,600)の文字が薄くなっているが、これら文字の薄くなったノードは有効ではないことを表わしている(以下の他の図における例についても同様)。有効ではないノードは表1における有効フラグの欄がオフとなるような状態として管理手段104によって管理されている。ただし、あるノードが第一の確定操作の際に選択された場合には他のノードは必ず有効ではなくなるということを表わすものではなく、それらのノードも有効であっても良いが、図5においては有効ではない場合を一例として示している。有効フラグがオンであるノードと有効フラグがオフであるノードについて、描画手段105による描画方法に差をつけるのであれば、画面上に表示されているノードのうちどのノードが有効であるのかが一目瞭然となりオペレータの理解を助ける。図5の状態の後に、ノード500あるいは701〜704のいずれかの領域内にポインタ座標がある時に検出手段101によって第二の確定操作が検出された場合は、検出手段101の検出した座標が当該ノードに関連付けられた領域に含まれると判定手段103が判定することから、管理手段104によって当該ノードに関連付けられた文字が入力文字として確定されるが、ノード500又は701〜704のいずれの領域内にもポインタ座標がない時に検出手段101によって第二の確定操作が検出された場合は、入力のキャンセルが行なわれる(以下の他の図における例についても同様)。画面301上の表示が図5の状態において入力のキャンセルが行なわれると、図4の状態になるように管理手段104が描画手段105に描画させる。
図6は、図4の状態において、ノード500の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。図5と同様にノード500の子ノードであるノード701〜704が表示され、ノード500に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード701〜704と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード500における文字の表示位置は、子ノードであるノード701〜704の文字と同列に扱われるような位置に移動している。さらに属性ノード(801,802)もノード500の子ノードとして表示されている。属性ノード(801,802)が他のノード(500、701〜704)よりも下側に位置しているため、オペレータによるペン操作やオペレータの指による操作が行なわれる場合には、ペンや指で隠れない位置に本質的な選択肢が配置され、ペンや指で隠れるような位置に補助的な選択肢が配置されることになり、オペレータにとって使いやすい環境が提供されている。この例の場合のノード500は例えば表2のような情報として生成手段102によって生成され、管理手段104によって管理されている。表2における表示情報とは、どの属性を持つグループが表示されるのかを示すための情報である。表2においてノード500の子ノードとして関連付けられているグループ901は例えば表3のような情報として生成手段102によって生成され、管理手段104によって管理されている。表2においてノード500の子ノードとして関連付けられているグループ902は例えば表4のような情報として生成手段102によって生成され、管理手段104によって管理されている。グループ901に属するノード(701〜704)と、グループ902に属するノード(705〜708)は、ノード500の子ノードとして管理手段104に扱われる。表2では子ノードそのものではなくそれらの属するグループ(901,902)が関連付けてられているが、子ノードそのもの(701〜708)がノード500に関連付けられていてもよい。属性ノード801には属性「標準」が生成手段によって関連付けられているため属性「標準」の関連付けられたグループ901と関係し、属性ノード802には属性「小」が生成手段によって関連付けられているため属性「小」の関連付けられたグループ902と関係する。図6に示されている状態は、表2における表示情報が「標準」であるため、「標準」を属性として持つグループ901に属するノード(701〜704)と、ノード500の子ノードとして関連付けられている属性ノード(801,802)が画面301上に表示されている状態である。図6では属性ノード(801,802)の領域内に描画される情報としてその属性自体を表わす文字「標準」と「小」が利用されているが、描画される情報には属性自体を表わす文字を利用するべきであるということではなく、他の言葉やアイコン等の絵による表現など、オペレータの理解を助けるような視覚情報を利用可能である(以下の他の図における例についても同様)。
図7は、図6の状態において、第一の確定操作が検出された後でまだ第二の確定操作が検出されていない場合に、入力装置200によってポインタ座標が移動し、属性ノード802の領域内にポインタ座標がある時に検出手段101によって座標が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。属性ノード802には属性「小」が関連付けられており、第一の確定操作の際に選択されたノード500の子ノードのうち、表4にあるように「小」を属性として持つグループ902に属するノード(705〜708)と、子ノードとして関連付けられている属性ノード(801,802)が表示されている状態が図7に示されている状態である。図7においてノード500に表示されている文字504は、表2の文字の欄にある文字(502,504)のうち、表4にあるようにグループ902に関連付けられた文字504が利用されていることを示している。この状態で、ノード500の領域内にポインタ座標がある時に検出手段101によって第二の確定操作が検出された場合は、管理手段104によって文字504が入力文字として確定される。(文字502と属性「標準」、文字504と属性「小」の関連付けは、グループによって行なうのではなくノード500における関連付けや、文字自体への関連付けなどによって代替可能であることは当業者には明白である。)また、図7の状態で、検出手段101がまだ第二の確定操作を検出していない時に、入力装置200によってポインタ座標が移動し、属性ノード801の領域内にポインタ座標がある時に検出手段101によって座標が検出された場合には、図6と同様のノードが表示された状態であって、ノード500ではなく属性ノード801がハイライト表示されたような状態になる。このようなグループの変更は第二の確定操作が検出されるまでは何回でも行なうことが可能となっている。
図6の状態から図7の状態に変化させる際に、管理手段104は、ノード500の表示情報を「小」に変更することによって、描画手段105に描画させる子ノードを変更してもよいし、ノード500の表示情報は「標準」としたまま、一時的に「小」を属性として持つグループによって関連付けられた子ノードを描画手段105に描画させるというようにしてもよい。つまり、ノードに関連付けられた表示情報は、表示される子ノードのグループに関連付けられた属性に常に対応するものであってもよいし、子ノードが表示される際の初期設定としての情報として利用されるものであってもよい。また、初期設定としての表示情報と、表示される子ノードのグループに関連付けられた属性に常に対応する表示情報の二種類が生成手段102によってノードに関連付けられていてもよい。表示情報が初期設定としての情報ではなく、ノード500の表示情報が「小」に変更された場合は、管理手段104は、第二の確定操作の後に、新たな第一の確定操作によってノード500の子ノードが表示されるまでに、表示情報を「標準」に戻しておく必要がある。
図8は、図4の状態において、ノード510の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。ノード510の子ノードであるノード709〜712が表示され、ノード510に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード709〜712と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード510における文字の表示位置は、子ノードであるノード709〜712の文字と同列に扱われるような位置に移動している。さらに属性ノード(803,804)もノード510の子ノードとして表示されている。
図9は、図8の状態において、第一の確定操作が検出された後でまだ第二の確定操作が検出されていない場合に、入力装置200によってポインタ座標が移動し、属性ノード804の領域内にポインタ座標がある時に検出手段101によって座標が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。属性ノード804には属性「濁音」が関連付けられており、第一の確定操作の際に選択されたノード510の子ノードのうち、「濁音」を属性として持つグループに属するノード(713〜716)と、子ノードとして関連付けられている属性ノード(803,804)が表示されている状態が、図9に示されている状態である。図9においてノード510に表示されている文字「が」は、属性「濁音」を持つ属性ノードの領域内にポインタ座標があるため、図8の状態から管理手段104によって変化させられた状態を示している。この状態で、ノード510の領域内にポインタ座標がある時に検出手段101によって第二の確定操作が検出された場合は、管理手段104によって文字「が」が入力文字として確定される。また、図9の状態で、検出手段101がまだ第二の確定操作を検出していない時に、入力装置200によってポインタ座標が移動し、属性ノード803の領域内にポインタ座標がある時に検出手段101によって座標が検出された場合には、図8と同様のノードが表示された状態であって、ノード510ではなく属性ノード803がハイライト表示されたような状態になる。このようなグループの変更は第二の確定操作が検出されるまでは何回でも行なうことが可能となっている。
図10は、図4の状態において、ノード550の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。ノード550の子ノードであるノード717〜720が表示され、ノード550に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード717〜720と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード550における文字の表示位置は、子ノードであるノード717〜720の文字と同列に扱われるような位置に移動している。さらに属性ノード(805〜807)もノード550の子ノードとして表示されている。
図11は、図10や図12の状態において、第一の確定操作が検出された後でまだ第二の確定操作が検出されていない場合に、入力装置200によってポインタ座標が移動し、属性ノード805の領域内にポインタ座標がある時に検出手段101によって座標が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。属性ノード805には属性「半濁音」が関連付けられており、第一の確定操作の際に選択されたノード550の子ノードのうち、「半濁音」を属性として持つグループに属するノード(721〜724)と、子ノードとして関連付けられている属性ノード(805〜807)が表示されている状態が、図11に示されている状態である。図11においてノード550に表示されている文字「ぱ」は、属性「半濁音」を持つ属性ノードの領域内にポインタ座標があるため、図10の状態から管理手段104によって変化させられた状態を示している。この状態で、ノード550の領域内にポインタ座標がある時に検出手段101によって第二の確定操作が検出された場合は、管理手段104によって文字「ぱ」が入力文字として確定される。また、図11の状態で、検出手段101がまだ第二の確定操作を検出していない時に、入力装置200によってポインタ座標が移動し、属性ノード806の領域内にポインタ座標がある時に検出手段101によって座標が検出された場合には、図10と同様のノードが表示された状態であって、ノード550ではなく属性ノード806がハイライト表示されたような状態になる。また、図11の状態で、検出手段101がまだ第二の確定操作を検出していない時に、入力装置200によってポインタ座標が移動し、属性ノード807の領域内にポインタ座標がある時に検出手段101によって座標が検出された場合には、図12の状態になる。これらのようなグループの変更は第二の確定操作が検出されるまでは何回でも行なうことが可能となっている。
図12は、図10や図11の状態において、第一の確定操作が検出された後でまだ第二の確定操作が検出されていない場合に、入力装置200によってポインタ座標が移動し、属性ノード807の領域内にポインタ座標がある時に検出手段101によって座標が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。属性ノード807には属性「濁音」が関連付けられており、第一の確定操作の際に選択されたノード550の子ノードのうち、「濁音」を属性として持つグループに属するノード(725〜728)と、子ノードとして関連付けられている属性ノード(805〜807)が表示されている状態が、図12に示されている状態である。図12においてノード550に表示されている文字「ば」は、属性「濁音」を持つ属性ノードの領域内にポインタ座標があるため、図10の状態から管理手段104によって変化させられた状態を示している。この状態で、ノード550の領域内にポインタ座標がある時に検出手段101によって第二の確定操作が検出された場合は、管理手段104によって文字「ば」が入力文字として確定される。また、図12の状態で、検出手段101がまだ第二の確定操作を検出していない時に、入力装置200によってポインタ座標が移動し、属性ノード806の領域内にポインタ座標がある時に検出手段101によって座標が検出された場合には、図10と同様のノードが表示された状態であって、ノード550ではなく属性ノード806がハイライト表示されたような状態になる。また、図12の状態で、検出手段101がまだ第二の確定操作を検出していない時に、入力装置200によってポインタ座標が移動し、属性ノード805の領域内にポインタ座標がある時に検出手段101によって座標が検出された場合には、図11の状態になる。これらのようなグループの変更は第二の確定操作が検出されるまでは何回でも行なうことが可能となっている。
図13は、図4の状態において、ノード550の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。ノード550の子ノードであるノード(717〜720,729,730)が表示され、ノード550に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード717〜720と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード550における文字の表示位置は、子ノードであるノードのうちノード717〜720の文字と同列に扱われるような位置に移動している。ノード729とノード730はノード550にの近くに配置され、ノード550の文字「は」のバリエーション「ば」と「ぱ」であることを示している。図13は、ノード729とノード730の配置はこの位置に限られるという意味ではなく、様々な配置のうちの一例を示すものである。この例の場合のノード550は例えば表5のような情報として生成手段102によって生成され、管理手段104によって管理されている。表5では、領域はx座標とy座標と幅と高さによって生成できる矩形が関連付けられており、文字は「は」が関連付けられていることを示している。(矩形の情報として幅と高さだけを利用し、ノード自体にx座標とy座標の情報を関連付け、領域の情報が必要になった際にはノードのx座標とノードのy座標と矩形の情報の幅と高さを利用するということや、矩形の情報として左上の点の座標と右下の点の座標を利用するなど、他の方法で代替可能であることは当業者には明白である。)
図14は、図13の状態において、第一の確定操作が検出された後でまだ第二の確定操作が検出されていない場合に、入力装置200によってポインタ座標が移動し、ノード717の領域内にポインタ座標がある時に検出手段101によって座標が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。この例の場合のノード717は例えば表6のような情報として生成手段102によって生成され、管理手段104によって管理されている。ノード717には子ノードとしてノード731とノード732が関連付けられている。図14ではノード731とノード732はノード717にの近くに配置され、ノード717の文字「ひ」のバリエーション「ぴ」と「び」であることを示している。図14は、ノード731とノード732の配置はこの位置に限られるという意味ではなく、様々な配置のうちの一例を示すものである。また、図14の状態で、検出手段101がまだ第二の確定操作を検出していない時に、入力装置200によってポインタ座標が移動し、ノード550の領域内にポインタ座標がある時に検出手段101によって座標が検出された場合には、図13と同様の状態になり、このようなバリエーション表示の変更は第二の確定操作が検出されるまでは何回でも行なうことが可能となっている。バリエーション表示の変更の際には、選択されたノード以外のノードの子ノードのうち、さらに子ノードを持たないノードについては表示を消去しておくなど、他のノードのバリエーション表示を消去しておくとオペレータの理解を助けるが、必ずしも他のノードのバリエーション表示が不要なわけではなく、例えば、図14においては「は行」「ぱ行」「ば行」の文字が全て画面に表示されるようにノードを配置することも可能である。
図13と図14で示したのは、属性ノードを利用しない場合に一連の操作で多くの選択肢を提供するための階層構造の一例である。本発明では、属性ノードを用いることや、図13と図14で示したような階層構造を用いることによって、従来の技術やシステムでは2つ以上の操作を組み合わせて入力していたような文字を、関連する文字や似た文字を簡単に呼び出せるというオペレータにとって直感的でありさらに一連である操作によって入力することを可能とするような文字入力装置、文字入力方法、及び文字入力プログラムの提供が可能となっている。図14ではノード717が選択された際に領域が変形しない場合が示されているが、子ノードの領域は変形しないということではなく、第一の確定操作によって選択されるノード550と同様に、その子ノード717が一連の操作の途中で選択される際にも管理手段104によってノード717の領域が変形させられるということであっても良い。
図15は、図4の状態において、ノード570の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。ノード570の子ノードであるノード733〜734が表示され、ノード570に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード733〜734と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード570における文字の表示位置は、図5のノード500や図8のノード510や図10のノード550の場合と同じような位置に移動している。さらに属性ノード(808,809)もノード570の子ノードとして表示されている。「や行」のように選択肢が3つの行においては子ノードの領域が大きくなっても良いということを示す例であって、「や行」は子ノードの領域を必ず大きくするべきであるという意味ではない。
図16は、図4の状態において、ノード600の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。ノード600の子ノードであるノード735〜736が表示され、ノード600に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード735〜736と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード600における文字の表示位置は、子ノードであるノード735〜736の文字と同列に扱われるような位置に移動している。「わ」「を」「ん」のように選択肢が3つの場合でも、子ノードは他の場合の子ノードと同じ大きさであっても良いということを示す例であって、「わ」「を」「ん」の場合の子ノードの領域の大きさを、図5〜図12などの場合の(属性ノード以外の)子ノードの大きさと同じにするべきであるという意味ではない。選択肢が3つの場合は図15のような配置であっても図16のような配置であってもどちらでも可能であるということだが、これら以外の他の配置であっても構わない。
図17は、画面301にノードが並べられて表示される際の一例を示す図である。図4における各ノードの領域を円に変えた以外は図4と同じ配置であり、図4に関する説明がそのまま当てはまる。
図18は、図17の状態において、ノード500の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。ノード500の子ノードであるノード(701〜704,737〜739)が表示され、ノード500に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード(701〜704,737〜739)と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード500における文字の表示位置は、子ノードであるノード701〜704の文字と同列に扱われるような位置に移動している。図18では、ノード500は、パイメニューにおける他の選択肢と同じ面積を持つ領域に中心を含む領域を追加したような領域を持つノードとして、他の選択肢と同列でありながらも特別である選択肢として提供されることが示されている。(以下では、図18におけるノード500のような選択肢を持つパイメニューを、一般的なパイメニューと区別して「パイメニューに似た選択肢」と呼ぶことにする。)ノード737〜739は空白になっているが、ここには属性ノードや他の文字のためのノードを割り当てることが可能である。また、パイメニューに似た選択肢の外側にポインタ座標が移動した後に検出手段101によって第二の確定操作が検出された場合は、入力のキャンセルが行なわれる。画面301上の表示が図18の状態において入力のキャンセルが行なわれると、図17の状態になるように管理手段104が描画手段105に描画させる。管理手段104による入力文字の確定の際には、検出手段101によって第二の確定操作が検出される際に検出される座標の値が重要となるため、第二の確定操作の検出前に座標がどのように移動しても、それによってハイライト表示等が変化するだけで、最終的に確定される入力文字には影響しない。そのため、入力文字が確定する前にオペレータが確認可能であり、ストローク操作の軌跡によって入力文字を確定するシステムの操作と比較すると、オペレータにとっては直感的な操作となる。
図19は、図17の状態において、ノード500の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例からパイメニューに似た選択肢だけを抜き出したものである。図18では表示されていたノード737〜739に該当するノードのないものを生成することも可能であることを示している。
図20は、図17の状態において、ノード500の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例からパイメニューに似た選択肢だけを抜き出したものである。ノード500の領域の変形する方向や子ノード(701〜704,737〜739)の表示される位置が図18とは異なっており、パイメニューに似た選択肢におけるノード500の位置はどの位置でも良いということを示している。ただ、右利きのオペレータが右手でペンデバイスを操作する場合は、図18のパイメニューに似た選択肢よりも図20のパイメニューに似た選択肢のほうが、手で隠れるノードが少なくなり使いやすいものとなる。左利きのオペレータのためには、ノード500が図20におけるノード702の方向に変形し、図20におけるノード703の位置にノード701が配置されて以下続くというような配置が使いやすいものになる。ノード737〜739は空白になっているが、ここには属性ノードや他の文字のためのノードを割り当てることが可能である。また、図17におけるノードは円形であるが、このことによってパイメニューに似た選択肢を子ノードとして持つノードに関連付けられた領域は円形に限るということを意味しているのではなく、管理手段104は、図18〜20のようなパイメニューに似た選択肢を、図4の状態のノードを変形させることと子ノードの表示によって生成することも可能である。
図21は、英数字と四則演算記号と機能を意味する文字を入力するためのノードの配置の一例である。第一の確定操作の際にノード623が選択された後の状態が図22であり、第一の確定操作の際にノード630が選択された後の状態が図23である。
図22は、図21の状態において、ノード623の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例から一部を抜き出したものである。ノード623の子ノードであるノード740〜743が表示され、ノード623に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード740〜743と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード623における文字の表示位置は、子ノードであるノード740〜743の文字と同列に扱われるような位置に移動している。図22には示されていないが、この他に小文字やウムラウト、アクサンテギュを示すような属性ノードがノード623の子ノードとして関連付けられていても良い。
図23は、図21の状態において、ノード630の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例である。ノード630の子ノードであるノード744〜753が表示され、ノード630に関連付けられた領域が、第一の確定操作が検出された際に検出された座標を含み、かつノード750〜753と同列に扱うことのできる領域を含むような領域に変形されて表示されている。ノード630における文字の表示位置は、子ノードであるノード750〜753の文字と同列に扱われるような位置に移動している。図23は、ノードに割り当てられた文字を入力するための選択肢ではなく、機能を意味する文字が表示されたノードのグループである。それぞれ、ノード747はタブキー、ノード749はデリートキー、ノード750はシフトキー、ノード751はコントロールキー、ノード752はALTキー、ノード630はスペースキー、ノード753はリターンキーのように、割り当てられている。図23において空白のノード(744〜746,748)には、他の機能を意味する文字の関連付けられたノードや属性ノードを割り当てることも可能である。
図24は、図4や図17の状態において、ノード500の領域内にポインタ座標がある時に検出手段101によって第一の確定操作が検出された際に、管理手段104によって描画手段105が描画を行なった後の画面301上の表示の一例からパイメニューに似た選択肢だけを抜き出したものである。ノードの配置は図20と同じであるが、それぞれのノードには、生成手段102によって表示用と判定用の二種類の領域が関連付けられている。図24において、実線による円で示される領域が表示用の領域であり、点線で示されるパイメニューに似た選択肢を構成する領域が判定用の領域である。図24で示したのは、表示用と判定用の二種類の領域が異なる場合の一例であって、表示用と判定用の二種類の領域が異なる場合は必ずこのようになるというわけではない。例えば、表示用の領域として、円のかわりに四角や星型やその他の形の領域が用いられたり、判定用の領域として、パイメニューに似た選択肢をさらに外側へ大きく広げたものや、矩形やその他の形の領域を組み合わせたものが用いられたりしてもよい。他の選択肢と同列でありながらも特別である選択肢となるように拡張された領域の関連付けられたノードが存在すること(生成手段102によって生成されたり、管理手段104によって変形させられたりすること)が本発明の特徴であるが、図24のように、特別な選択肢としてのノードに関連付けられた領域のうち判定用の領域のみが特別に拡張されたものであってもよい。図24において点線で示される領域は、検出手段101によって第二の確定操作が検出された時に、検出された座標が領域に含まれるかどうかを判定手段103によって判定する際の、判定対象となる領域として利用される。また生成手段102は、表示用と判定用の二種類の領域だけではなく、さらに画面効果用の領域など他の用途に用いられるための領域をノードに関連付けることもある。例えば、どのノードをハイライト表示させるかの判定に利用される画面効果用の領域として、図24には示されていないが、中心の領域が利用されないような、一般的なパイメニューと同じような領域(ノード500に関連付けられる領域が、ノード701〜704やノード737〜739に関連付けられた領域と同じ面積になるような領域となる)が用いられてもよいため、図24におけるノード500に関連付けられた文字が入力として確定するような場合であっても、(パイメニューに似た選択肢の中心に近い位置で第二の確定操作が検出された場合などに)ノード500がハイライト表示されない場合がありうる。
図25と図26は本発明の処理のフローチャートである。図25のフローチャートに処理が移るよりも前に、生成ステップが実行済みであり、図4や図17や図21などのように各ノードが描画手段105によって画面301上に描画されているものとする。大きな流れとして、図25と図26の両方における「終了」の後に図25のフローチャートにおける「開始」に処理が移るという流れがあり、そのための矢印は図では省略されている。フローチャート全体の流れを管理するのが管理ステップであり、その管理ステップを実行するのが管理手段104である。以下のフローチャートの説明において主語が不明な文においては、管理手段104がその主語である。ステップS1では検出手段101によって何らかの操作が検出されるまで待ち、何らかの操作が検出されるとステップS2に処理が移る。ステップS1で検出された操作が第一の確定操作であるかどうかステップS2で調べ、第一の確定操作である場合にはステップS3へ進む。ここで、管理手段104は必要に応じて第一の確定操作があったということをコンピュータ100の備える記憶手段等に記憶しておく。
ステップS3では第一の確定操作が有効なノード内の操作であるかどうかを調べ、有効なノード内の操作である場合はステップS4へと進むがそうではない場合は終了してフローチャートの「開始」へ戻る。有効なノード内の操作であるかどうかは、管理手段104が画面301上に表示されておりかつ有効なノード全てについて、ノードの持つ領域(又はその領域に基いて拡張された領域)とステップS1で検出された第一の確定操作に関する座標について判定手段103に判定させることによって調べ、ノードの持つ領域に重なりがある場合はその順序に従って(オペレータにとって、手前から奥へという順序で)調べ、最初に判定手段103が「座標が領域に含まれる」と判定したノード(対象となる座標を含む領域を持つノードが複数ある、つまり重なりがある場合は、その中で一番上のノードに相当)が、ステップS4で管理手段104によって選択される。ノードが有効フラグの付与されたノードである場合は、管理手段104は、有効フラグがオフであるノードに関して判定手段103による判定を行なわない。ステップS4で管理手段104がノードを選択する際には、どのノードが選択されたのかを必要に応じてコンピュータ100の備える記憶手段等に記憶しておく。また、オペレータの理解を助けるために、選択されたノードをハイライト表示するなど強調するための処理あるいはその準備をステップS4の前後で行なう。そして、画面301上に表示されているノードのうち選択されたノード以外のノードの有効フラグをオフにする場合は、ステップS4で行なっておく。
ステップS5では、管理手段104は、ステップS4で選択されたノードが子ノードを持つかどうか調べ、子ノードを持つ場合はステップS6へと進むがそうではない場合は終了してフローチャートの「開始」へ戻る。ステップS6の子ノード表示処理では、ステップS4で選択されたノードの子ノードを描画手段105によって画面301上へ描画することによる表示を行なうと共に、管理手段104は、ステップS4で選択されたノードの領域を変形させる処理を行なう。表示されるノードに有効フラグが付与されている場合は、ステップS6でそれらのノードの有効フラグをオンにする。ステップS6でこれらの処理が実行された際の画面301上の表示の例が図5、図6、図8、図10、図13、図15、図16、図18であり、これらの処理を実行した際の画面301上の表示の一部を取り出したものの例が図19、図20、図22、図23である。ステップS6の処理が実行された後は終了してフローチャートの「開始」へ戻る。
ステップS1で検出された操作が第一の確定操作かどうかを、ステップS2で調べた結果、第一の確定操作ではなかった場合はステップS7に処理が移る。ステップS1で検出された操作が第二の確定操作であるかどうかを、「第一の確定操作があった」ということがコンピュータ100の備える記憶手段等に記憶されているか調べることや第二の確定操作と設定されている操作との比較などによって、ステップS7で調べ、第二の確定操作である場合にはステップS8へ進む。ステップS8では第二の確定操作が有効なノード内の操作であるかどうかを調べ、有効なノード内の操作である場合はステップS9へと進むがそうではない場合はステップS10へと進む。ステップS8の後にステップS9ではなくステップS10へと処理が進む場合は、入力のキャンセルが行なわれることになる。有効なノード内の操作であるかどうかはステップS3と同様の処理によって調べられ、有効なノード内の操作であると判定された場合はその対象となるノードに関連付けられた文字が、ステップS9で管理手段104によって入力文字として確定される。ノードが有効フラグの付与されたノードである場合は、管理手段104は、有効フラグがオフであるノードに関して判定手段103による判定をステップS8で行なわない。また、オペレータの理解を助けるために、第二の確定操作の際に選択されたノードをハイライト表示するなど強調するための処理あるいはその準備をステップS9の前後で行なう。ステップS10のノード表示初期化処理では、ノードのハイライト表示などを無効にし、図4や図17や図21のような状態になるように描画手段105によってノードを画面301上に描画する。その際、不要な子ノードの表示が消され、画面301上に表示されないようにされる。管理手段104によって領域が変形させられているノードがあれば、そのノードに関連付けられた領域は元に戻される。そして表示されるノードに有効フラグが付与されている場合は、ステップS10でそれらのノードの有効フラグをオンにする。また、ステップS2で「第一の確定操作があった」ということをコンピュータ100の備える記憶手段等に記憶させていた場合は、その記憶を消去する。これらの処理が実行された後は終了してフローチャートの「開始」へ戻る。
ステップS1で検出された操作が第二の確定操作かどうかを、ステップS7で調べた結果、第二の確定操作ではなかった場合は図26のステップS11に処理が移る。ステップS11では、ステップS1で検出された操作が有効なノード内の操作であるかどうかを調べ、有効なノード内の操作である場合はステップS12へと進むが、そうではない場合は終了して図25のフローチャートの「開始」へ戻る。有効なノード内の操作であるかどうかはステップS3と同様の処理によって調べられる。ステップS12では、操作が第一の確定操作の後かどうかを調べるが、ステップS2で「第一の確定操作があった」ということをコンピュータ100の備える記憶手段等に記憶させている場合は該当する記憶が存在するかどうか、そうではない場合はフラグ等の別の手段によって判定する。操作が第一の確定操作の後である場合はステップS13へと進むがそうではない場合は終了して図25のフローチャートの「開始」へ戻る。
ステップS13では、ステップS11で有効なノード内の操作であると判定された対象であるノードが属性ノードであるかどうかを調べ、属性ノードである場合はステップS14へと進むがそうではない場合はステップS15へ進む。ステップS14のグループ変更処理では、ステップS4で選択されたノードが、ステップS13で属性ノードであると判定されたノードに関連付けられた属性と同じ属性を持つグループによって関連付けられた子ノードを持つ場合には、ステップS4で選択されたノードの子ノードのうち、当該グループによって関連付けられている子ノードを描画手段105によって画面301上に描画する。表示されるノードに有効フラグが付与されている場合は、ステップS14でそれらのノードの有効フラグをオンにする。そして、ステップS4で選択されたノードの領域内に表示される文字を、当該グループ又は当該グループの持つ属性に関連付けられた文字に変更する。このとき、ステップS4で選択されたノードの子ノードのうち、当該グループとは別のグループによって関連付けられている子ノードがそれまでに画面301上に表示されていたのであれば必要に応じてそれらの表示を消去する。また、オペレータの理解を助けるために、ステップS11で有効なノード内の操作であると判定された対象であるノードをハイライト表示するなど強調するための処理あるいはその準備をステップS14の前後又はステップS11の直後に行なう。ステップS14でこれらの処理が実行された際の画面301上の表示の例が図7、図9、図11、図12である。
ステップS15では、ステップS11で有効なノード内の操作であると判定された対象であるノードが子ノードを持つどうか調べ、子ノードを持つ場合はステップS16へと進むがそうではない場合は終了して図25のフローチャートの「開始」へ戻る。ステップS16の子ノード表示処理では、ステップS11で有効なノード内の操作であると判定された対象であるノードの子ノードを描画手段105によって画面301上へ描画する。表示されるノードに有効フラグが付与されている場合は、ステップS16でそれらのノードの有効フラグをオンにする。また、オペレータの理解を助けるために、ステップS11で有効なノード内の操作であると判定された対象であるノードをハイライト表示するなど強調するための処理あるいはその準備をステップS16の前後又はステップS11の直後に行なう。ステップS16でこれらの処理が実行された際の画面301上の表示の例が図14である。ノード717がステップS11で有効なノード内の操作であると判定された対象であるノードであり、ステップS16で表示された子ノードがノード731とノード732である。
図26に示したフローチャートでは、ステップS13とステップS15の両方が含まれているが、必要に応じてステップS13かステップS15のどちらか一方を省略してもよい。図10〜図12のように、属性ノードが含まれており、図4に示されたノードの子ノードにさらに子ノードが関連付けられていないような場合は、ステップS13における判定がNOだった場合には(ステップS15による判定は常にNOであるため、ステップS15を省略して)終了して図25のフローチャートの「開始」へ戻るとしてもよい。また図13〜図14のように、属性ノードが含まれておらず、図4に示されたノードの子ノードにさらに子ノードが関連付けられているような場合は、ステップS12における判定がYESだった場合には(ステップS13による判定は常にNOであるため、ステップS13を省略して)ステップS15へ処理が移るようにしてもよい。