(57)【要約】【課題】キー・トップが独立した構造のキーボードから連続的なキー入力を受け取ってジェスチャを認識する。【解決手段】Ｎキー・ロールオーバを解除してファントム・キーを受け入れるようにコンピュータの動作モードを変更する。キーボードからの連続的な入力に対応するキーまたはキー群のエントリを生成する。エントリの座標に基づいて各エントリがファントム・キーを含むか否かを判断しリアル・キーを特定する。リアル・キーを特定したエントリの座標を計算する。リアル・キーの座標に基づいてキーボードに入力されたジェスチャを認識する。【選択図】図１０
2010250628.tif 000002
【特許請求の範囲】
【請求項１】
キー・トップが独立した構造のキーボードから連続的なキー入力を受け取るコンピュータに、
ファントム・キーを受け入れるように前記コンピュータの動作モードを変更するステップと、
前記キーボードからの連続的なキー入力に対応するエントリを生成するステップと、
前記エントリの座標に基づいて各エントリがファントム・キーを含むか否かを判断するステップと、
前記ファントム・キーを認定して各エントリに含まれるリアル・キーを特定するステップと、
リアル・キーを特定した各エントリのリアル・キーの座標を計算するステップと、
前記リアル・キーの座標に基づいて前記連続的なキー入力に対応するジェスチャを認識するステップと
を含む処理を実行させるコンピュータ・プログラム。
【請求項２】
前記処理が、第１のエントリと第２のエントリの座標に基づいて移動直線を計算するステップを含み、
前記リアル・キーを特定するステップが、前記移動直線に基づいてファントム・キーを認定する請求項１に記載のコンピュータ・プログラム。
【請求項３】
前記ジェスチャを認識するステップが、最初のエントリで認識される開始キーの個数を判断するステップを含む請求項１または請求項２に記載のコンピュータ・プログラム。
【請求項４】
前記ジェスチャが２本の指によるズームイン操作のとき、前記移動直線が各指でそれぞれ押下された２個の前記開始キー間を結ぶ直線である請求項３に記載のコンピュータ・プログラム。
【請求項５】
前記ジェスチャが第１の指と第２の指によるズームアウト操作のとき、前記移動直線が前記第１の指で押下された前記開始キーとリアル・キーが特定された前記第１の指に関連するエントリの座標を結ぶ直線と、前記第２の指で押下された前記開始キーとリアル・キーが特定された前記第２の指に関連するエントリの座標を結ぶ直線である請求項３に記載のコンピュータ・プログラム。
【請求項６】
前記ジェスチャが１本の指によるスクロール操作または回転操作のとき、前記移動直線が前記開始キーとリアル・キーが特定されたエントリの座標を結ぶ直線である請求項３に記載のコンピュータ・プログラム。
【請求項７】
前記エントリごとのリアル・キーを特定するステップが、特定の対象となるエントリより先に生成されたエントリについて生成された移動直線に基づいて前記特定の対象となるエントリに含まれる前記ファントム・キーを認定する請求項５または請求項６に記載のコンピュータ・プログラム。
【請求項８】
前記特定の対象となるエントリに含まれるリアル・キーを特定できないときは、前記対象となるエントリより後に生成されたエントリについて生成された移動直線に基づいて前記特定の対象となるエントリに含まれる前記ファントム・キーを認定する請求項７に記載のコンピュータ・プログラム。
【請求項９】
前記ジェスチャを認識するステップが、前記開始キーを含むエントリと最後にリアル・キーが特定されたエントリとの間の距離および経過時間を測定するステップを含む請求項２から請求項８のいずれかに記載のコンピュータ・プログラム。
【請求項１０】
請求項１から請求項９までのいずれかに記載のコンピュータ・プログラムを実装したコンピュータ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キーボードからコンピュータにウインドウを操作するジェスチャを入力する技術に関する。
【背景技術】
【０００２】
コンピュータの入力装置としてはキーボードが代表的である。キーボードは通常コンピュータに文字を入力するために利用され、ユーザはキー・トップに刻印された文字を認識してキーを押下する。キーの押下はスキャン・コードに変換されてシステムにより文字が認識され対応する処理が行われる。一方、コンピュータの他の入力装置としてタッチ・パッドおよびタッチ・スクリーンが存在する。特許文献１は、ユーザが複数の指をタッチ・スクリーンやタッチ・パッドなどのタッチ・センシティブ・デバイスの表面に沿って動かしたときのジェスチャを認識してディスプレイの表示に対してスクロールや回転を行う技術を開示する。同文献には、タッチ・スクリーン上にキーボードを表示して入力することも記載されている。
【０００３】
また、特許文献２はカーソル・キーによるポインティング操作に代えてキーボードからの連続的な入力により素早いポインティング操作やアナログ量（方向、距離）の移動を可能にしたキーボードタブレット装置を開示する。特許文献３は、キーボードにキーボード領域を設け、キー操作とポインティング操作を切り換えることで操作性を高めた入力装置を開示する。特許文献４には、キーボードからのキー入力に対して発生するファントム・キーについて記載している。同文献には、電流の回り込みを防ぐために各キーに逆流防止用のダイオードを設けて同時に押下するキーの個数にかかわらず入力を認めるＮキー・ロールオーバを実現するダイオード方式、マイコン等で押下キー数をカウントして３個キー以上の同時押下を認めない２キー・ロックアウト方式、キーが多重押しされた場合その状態がファントム状態かどうかを判断してファントム状態に関与しないキーのみを出力する疑似Ｎキー・ロールオーバ方式などが開示されている。
【０００４】
さらに特許文献４は、今回検出したキー情報と前回のキー情報を比較して回り込みを検出するファントム状態検出手段を設け、ファントム状態を検出した場合は、ファントム状態の原因となった最後のキーおよびファントム状態によって誤検出されるファントム・キーのオンコードを出力せずにオフコードを出力するようにした他の擬似Ｎキー・ロールオーバ方式について開示している。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特表２００８−５０８６０１号公報
【特許文献２】特開平１０−１９８４８８号公報
【特許文献３】特開２００１−２６５４９８号公報
【特許文献４】特許第２８３９３０４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００６】
ノートブック型パーソナル・コンピュータ（以下、ノートＰＣという。）では、入力装置のために十分なスペースを確保することができないため、必須の入力装置であるキーボードを利用してその入力機能を高めることが望ましい。そして、キーボードからタッチ・パッドまたはタッチ・スクリーンを利用したジェスチャの入力が実現できれば、ノートＰＣの操作性を一層高めることができる。ところで、キーボードは、スキャン・ラインとデコーダ・ラインで形成されたキー・マトリクスに、各キーに対応してスイッチが配置されている。押下されたキーは、キー・マトリクス上で認識されてスキャン・コードとしてシステムに通知される。
【０００７】
キーボードのキーを指で連続的に押下してゆくとシステムは押下された一連のキーまたはキー群をスキャン・コードの発生のタイミングで順番に認識する。通常のキーボードでは、１本の指で最大４個のキーを同時に押下することができる。そして、この認識された一連のキー群から指の動きであるジェスチャを認識しようとする場合に、同時に３個または４個のキーが押下されることがある。さらに、複数の指のジェスチャでキーが入力されたときは、同時に５つ以上のキーが押下されることがある。
【０００８】
ここで、従来技術にも示したようにダイオード方式以外のキーボードでは、同時に３つ以上のキーが押下されたときに、押下されていないファントム・キーが押下されたものとして認識されるいわゆるファントム状態が発生する。ファントム状態は、同時に押下された２つのキーが、スキャン・ラインが同一でデコーダ・ラインが異なる位置に配置され、かつ、いずれかのデコーダ・ラインにさらに押下された３つ目のキーが存在するときに発生する。ファントム・キーはキーボードからの通常の入力をする場合には、何らかの方法で抑制する必要がある。
【０００９】
ダイオード方式以外のキーボードでは、擬似Ｎキー・ロールオーバ方式を採用してソフトウエアでその発生を防止している。ファントム・キーの発生をソフトウエアで抑制したキーボードでは、ジェスチャにより複数のキーを連続的に押下しても途中でファントム・キーが発生すると、それ以後に入力されたキーを認識できなくなったり、ファントム条件が成立しているキー群の認識をすることができなかったりする。したがって、キーボードで押下された連続的なキー群の軌跡からジェスチャを認識するためには、適切にファントム・キーの処理を行う必要がある。
【００１０】
そこで本発明の目的は、キー・トップが独立した構造のキーボードからジェスチャを入力してウインドウの操作が可能なジェスチャ入力システムを実現するコンピュータ・プログラムを提供することにある。さらに本発明の目的は、そのようなコンピュータ・プログラムを実装したコンピュータを提供することにある。
【課題を解決するための手段】
【００１１】
本発明においてコンピュータは、キー・トップが独立した構造のキーボードから連続的なキー入力を受け取る。連続的なキー入力はユーザがウインドウを操作するジェスチャに対応する。コンピュータはソフトウエアでＮキー・ロールオーバ機能を実現するが、ジェスチャ入力を可能にする場合は、コンピュータがＮキー・ロールオーバを解除して一旦ファントム・キーを受け入れるように動作モードを変更する。ここにＮキー・ロールオーバはファントム・キーをシステムが誤って認識することを抑制するいかなる手法をも意味している。コンピュータはキーボードからの連続的な入力に応じて認識したキーまたはキー群のエントリを生成する。そしてコンピュータは、各エントリの座標に基づいて各エントリがファントム・キーを含むか否かを判断してファントム・キーを認定し各エントリのリアル・キーを特定する。リアル・キーが複数含まれるエントリではエントリの座標を複数のキーの重心とすることができる。コンピュータはリアル・キーを特定した各エントリの座標を計算し、リアル・キーの座標に基づいてキーボードに入力されたジェスチャを認識する。
【００１２】
ジェスチャの認識には、最初のエントリで認識される開始キーの個数を判断要素に含めるようにしてもよい。本発明によれば、ジェスチャの入力を受け入れる際に、一旦ファントム・キーも含めたキー群を受け入れてからエントリの座標に基づいてファントム・キーを認定するために、ジェスチャに応じて押下されたキーの座標軌跡を得ることができるようになる。ファントム・キーの認定は、第１のエントリと第２のエントリの座標に基づいて計算した移動直線に基づいて行うことができる。移動直線は、ジェスチャの移動方向を予測させる性質を備えている。移動直線が各指でそれぞれ押下された２個の開始キー間を結ぶ直線であるとすれば、２本の指によるズームイン操作でのジェスチャの移動方向を予測させる。移動直線が第１の指で押下された開始キーとリアル・キーが特定された第１の指に関連するエントリの座標を結ぶ直線および第２の指で押下された開始キーとリアル・キーが特定された第２の指に関連するエントリの座標を結ぶ直線であるとすれば、第１の指と第２の指によるズームアウト操作でのジェスチャの移動方向を予測させる。
【００１３】
移動直線が１個の開始キーとリアル・キーが特定されたエントリの座標を結ぶ直線であるとすれば、１本の指によるスクロール操作または回転操作でのジェスチャの移動方向を予測させる。ズームアウト操作または１本の指によるスクロール操作または回転操作のジェスチャのときは、対象となるエントリより先に生成されたエントリについて計算された移動直線に基づいてファントム・キーを認定することが望ましい。そして対象となるエントリのリアル・キーを特定できないときは対象となるエントリより後に生成されたエントリについて計算された移動直線に基づいてファントム・キーを認定してもよい。リアル・キーを特定したエントリに基づいてジェスチャの認識を行う際には、開始キーを含むエントリと最後にリアル・キーが特定されたエントリとの間の距離および経過時間を測定することにより行うこともできる。
【発明の効果】
【００１４】
本発明により、キー・トップが独立した構造のキーボードからジェスチャを入力してウインドウの操作が可能なジェスチャ入力システムを実現するコンピュータ・プログラムを提供することができた。さらに本発明により、そのようなコンピュータ・プログラムを実装したコンピュータを提供することができた。
【図面の簡単な説明】
【００１５】
【図１】ノートＰＣの概略のハードウエア構成を示すブロック図である。
【図２】キーボードとキーボード・コントローラの内部構成を説明する図である。
【図３】ジェスチャ入力処理システムのハードウエアおよびソフトウエアの構成を示すブロック図である。
【図４】キーボードのキー・トップの配列を示す図である。
【図５】キー・スイッチと文字コードを対応付けたマッピング・テーブルの一部を示す図である。
【図６】キー配列から入力するジェスチャの典型的なパターンを示す図である。
【図７】ジェスチャ入力処理システムにおいて、マルチタッチ入力またはシングルタッチ入力によるジェスチャを認識するための基本手順を示すフローチャートである。
【図８】図７のブロック２０９で行われるマルチタッチ入力処理の手順を示すフローチャートである。
【図９】ズームイン操作のときに演算部がエントリ制御部から受け取ったエントリを処理する際に使用する作業テーブルのデータ構造を示す図である。
【図１０】ズームイン操作を行うジェスチャが入力されたときに作業テーブルに登録されたキーをエントリの順番に示したキー配列である。
【図１１】ファントム条件が成立した隣接する４個のキーの中から、ファントム・キーを特定する方法を説明する図である。
【図１２】エントリ番号１３のエントリに対するファントム・キーの処理を説明する図である。
【図１３】エントリ番号１６のエントリに対するファントム・キーの処理を説明する図である。
【図１４】ズームイン操作のときに生成されたリアル・キー・リストのデータ構造を示す図である。
【図１５】ズームアウト入力処理の手順を示すフローチャートである。
【図１６】ズームアウト操作のときに演算部がエントリ制御部から受け取ったエントリを処理する際に使用する作業テーブルのデータ構造を示す図である。
【図１７】ズームアウト操作を行うジェスチャが入力されたときに作業テーブルに登録されたキーをエントリの順番に示したキー配列である。
【図１８】１本の指で押下できる可能性のあるキー群を説明する図である。
【図１９】ズームアウト操作のときに生成されたリアル・キー・リストのデータ構造を示す図である。
【図２０】ズーム操作に対する入力キーの座標の軌跡を示す図である。
【図２１】図７のブロック２１１で行われるシングルタッチ入力処理の手順を示すフローチャートである。
【図２２】シングルタッチ入力処理においてジェスチャの認識を行う方法を説明する図である。
【発明を実施するための形態】
【００１６】
［ノートＰＣの構成］
図１は、本発明にかかるノートＰＣ１０の概略のハードウエア構成を示すブロック図である。ノートＰＣ１０は、バス１４に接続された中央演算処理装置（ＣＰＵ）１１、ハードディスク・ドライブ１３、液晶ディスプレイ（ＬＣＤ）１５、キーボード・コントローラ１７、キーボード１９、メイン・メモリ２１、およびタイマ２３を含んで構成されている。ＨＤＤ１３は図３に示す、アプリケーション・プログラム３１、ジェスチャ・プログラム２５、オペレーティング・システム（ＯＳ）２７、およびキーボード・ドライバ２９を格納する。ＨＤＤ１３に格納された各プログラムはメイン・メモリ２１にロードされてＣＰＵ１１により実行される。
【００１７】
キーボード１９は、ノートＰＣ１０の筐体に組み込まれているが、本発明にかかるキーボードは、システム本体から分離してＵＳＢやＰＳ／２などのキーボード・インターフェースで接続されるタイプのものでもよい。ただし、本発明にかかるキーボード１９は、各キー・トップが独立した硬質の部品で形成され、キー・トップ間の境界にはわずかな窪みが形成されているような独立タイプのものであり、圧力パッドのように表面が連続的に平坦ないわゆるメンブレン・キーボードや、ディスプレイに表示されるいわゆるソフトウエア・キーボードは除く。図１に示したハードウエア構成はＨＤＤ１３に格納されているプログラムを除いて本発明との関連では周知である。
【００１８】
［キーボードの構成とファントム条件］
図２は、キー・マトリクス２０とキーボード・コントローラ１７の内部構成を説明する図である。キーボード１９には、各キーに対応した複数のキー・スイッチ５１がマトリクス状に配置されたキー・マトリクス２０が設けられている。各キー・スイッチ５１は、キーが解放されている間はオフになり、キーが押下されている間はオンになる。キー・マトリクス２０は、１６本のスキャン・ライン１Ｓ〜１６Ｓと８本のデコーダ・ライン１Ｄ〜８Ｄで構成され、各スキャン・ライン１Ｓ〜１６Ｓと各デコーダ・ライン１Ｄ〜８Ｄが交差する位置で両ラインを各キー・スイッチ５１が接続している。各デコーダ・ライン１Ｄ〜８Ｄは、一端が電圧源Ｖｃｃに接続され他端がデコーダ３３に接続されている。また各スキャン・ライン１Ｓ〜１６Ｓは、スキャン・ドライバ３１に接続されている。スキャン・ドライバ３１では、各スキャン・ライン１Ｓ〜１６Ｓとグラウンドとの間に各スキャン・スイッチ３０が接続されている。
【００１９】
スキャン・ドライバ３１は、ある瞬間はいずれか１つのスキャン・ラインがグランドに接続されるようにスキャン・スイッチ３０を順番にオン／オフする。スキャン・ドライバ３１は、スキャン・ライン１Ｓからスキャン・ライン１６Ｓまで順番にスキャン・スイッチ３０をオン／オフしたあとにまたスキャン・ライン１Ｓに戻り以後この動作を繰り返す。スキャン・ドライバ３１がスキャン・ラインを一巡する時間をスキャン・サイクルという。デコーダ３３は、スキャン・ドライバ３１の動作とタイミングを一致させながら、同時に８本のデコーダ・ライン１Ｄ〜８Ｄの電位を読み取る。キーボード・コントローラ１７を制御するキーボード・ドライバ２９（図３）は、ある瞬間に電位がグラウンド・レベルになっているスキャン・ラインとそのときにグラウンド・レベルになっているデコーダ・ラインを認識することで、各キーに対応するスキャン・コードを生成することができる。
【００２０】
ここで、ファントム・キーについて説明する。図２のキー・マトリクス２０には、各キー・スイッチ５１に対して直列に逆流防止用のダイオードが接続されていない。いま、ライン５３で囲まれた４つのキー・スイッチ６１、６３、６５、６７に着目する。キー・スイッチ６１、６３、６５が同時に押下されたと仮定すると、同時に押下された２つのキー・スイッチ６１、６３が、同一のスキャン・ライン１Ｓとデコーダ・ライン１Ｄ、２Ｄとの間に接続され、かつ、デコーダ・ライン１Ｄにさらに同時に押下された３つ目のキー・スイッチ６５が存在するためファントム条件が成立し、キー・スイッチ６７に対応するキーがファントム・キーになる。ファントム・キーに対して実際に押下されたキーをリアル・キーということにする。
【００２１】
なお、以後、キー・スイッチとキーという文言は特に必要がない限り同じ意味で使用する。このとき、スキャン・ライン２Ｓがスキャンされたときには、キー・スイッチ６５、６１、６３を経由してデコーダ・ライン２Ｄはグラウンド・レベルになるため、デコーダ３３は、キー６７が押下されたと認識してしまうことになる。ただし、ライン５４で囲まれた４つのキー６７、６９、７１、７３に着目したときに、同時に押下されたリアル・キー６９、７１とファントム・キー６７とではファントム条件が成立しないので、キー７３はファントム・キーにはならない。
【００２２】
キー・マトリクス２０には、逆流防止用のダイオードが挿入されていないので、キーボード・コントローラ１７は擬似Ｎキー・ロールオーバ方式を採用してキー入力中にキーボード・ドライバ２９がファントム・キーの発生を監視して抑制している。ノートＰＣ１０は、キーボード１９からの入力処理に関して、擬似Ｎキー・ロールオーバ機能を有効にする通常モードとそれを無効にするジェスチャ・モードで動作する。キーボード・ドライバ２９は、キーボード１９に特別に割り当てられた単独キーの押下または複数のキーの同時押下に応じてジェスチャ・モードに移行し、擬似Ｎキー・ロールオーバの機能を解除することができる。擬似Ｎキー・ロールオーバの機能が解除されると、キーボード・ドライバ２９は３個以上のキーが同時に押下されたとき、キー・マトリクス２０からデコーダ３３が認識したファントム・キーを含むキー群のスキャン・コードをＯＳ２７（図３）に送る。
【００２３】
［ジェスチャ入力システム］
図３は、ジェスチャ入力処理システム１００のハードウエアおよびソフトウエアの構成を示すブロック図である。キーボード・ドライバ２９は、デコーダ３３が検出したキーに対応するスキャン・コードを生成してＯＳ２７に送る。スキャン・コードには、キーが押下されたときに生成するメーク・コードと押下されたキーが解放されたときに生成するブレーク・コードが含まれる。ＯＳ２７は、キーボード・ドライバ２９からスキャン・コードを受け取るたびに、マッピング・テーブル１５０（図５）を参照して当該スキャン・コードに対応する文字コードを生成し相手先に送る。
【００２４】
ＯＳ２７が文字コードを送る相手先は、通常モードでは押下されたときのウインドウの状態やキーの種類により、アプリケーション・プログラム３１に帰属するウインドウであったりシステムであったりするが、ジェスチャ・モードではすべての文字コードがジェスチャ・プログラム２５に送られる。アプリケーション・プログラム３１は、ＯＳ２７のサービスを受けながらＬＣＤ１４にウインドウを表示するＷｅｂブラウザ、文書作成プログラム、または動画再生プログラムなどのようないずれのプログラムであってもよい。アプリケーション・プログラム３１に帰属するウインドウがジェスチャによる操作の対象となる。ここに、ジェスチャとは、ユーザがキーボード１９上で連続的にキーを押下するときの指の動きをいう。
【００２５】
ジェスチャ・プログラム２５は、アプリケーション・プログラム３１がウインドウを表示しているときに、ジェスチャ・モードでユーザがキーボード１９からキー入力をしたときに、ユーザのジェスチャを認識してウインドウの操作量に対応するパラメータ値をＯＳ２７に戻す。ＯＳ２７は、タッチ処理プログラム２５から受け取ったパラメータ値に基づいて、アプリケーション・プログラム２５のウインドウに対してズーム、回転、あるいはスクロールなどの処理をする。ジェスチャ・プログラム２５は、エントリ制御部１０１、演算部１０５、作業テーブル１０３、検索テーブル１０７、パターン認識部１０４、および操作データ生成部１０９からなる機能を含んでいる。これらの機能は、ジェスチャ・プログラム２５がメイン・メモリ２１にロードされてＣＰＵ１１で実行されることにより実現される。
【００２６】
エントリ制御部１０１は、ＯＳ２７から連続的なキー入力に対応する文字コードを受け取るたびにエントリを生成する。ここにエントリとは、所定のスキャン・サイクルの間に認識されているキーまたはキー群の文字コードをいう。エントリ制御部１０１は、所定のスキャン・サイクルの間に受け取った複数の文字コードに対応するキー群は同時に押下されたものとして１つのエントリを作成する。エントリ制御部１０１は、現在のエントリに変化があった場合に新たなエントリを生成して、そのエントリに連続するエントリ番号を付与し演算部１０５に送る。エントリ制御部１０１は、ノートＰＣ１０に搭載されたタイマ２３から時間情報を取得し、最初のエントリを生成してから最後のエントリを生成するまでの経過時間およびエントリ間の経過時間を測定する。
【００２７】
演算部１０５はパターン認識部１０４とともに、エントリ制御部１０１から受け取ったエントリを処理して、操作データ生成部に送るウインドウを操作するための操作データを生成する。検索テーブル１０７には、マッピング・テーブル１５０（図５）に基づいて作成されたファントム条件の成立を検索するためのリストが格納されている。演算部１０５は、エントリ制御部１０１から４個以上のキーの文字コードを含むエントリを受け取ったときには、当該キーの組み合わせが検索テーブル１０７に存在するか否かでファントム条件が成立しているか否かを判断する。作業テーブル１０３は、演算部１０５がエントリを処理している途中のデータを記憶するためにメイン・メモリ２１に形成された領域である。操作データ生成部１０９は演算部１０５から受け取った操作データをＯＳ２７に渡すためのパラメータ値に変換する。
【００２８】
なお、図１〜図３は本実施の形態を説明するために、本実施の形態に関連する主要なハードウエアの構成および接続関係を簡略化して記載したに過ぎないものである。ここまでの説明で言及した以外にも、ノートＰＣ１０を構成するには多くのデバイスが使われる。しかしそれらは当業者には周知であるので、ここでは詳しく言及しない。図で記載した複数のブロックを１個の集積回路もしくは装置としたり、逆に１個のブロックを複数の集積回路もしくは装置に分割して構成したりすることも、当業者が任意に選択することができる範囲においては本発明の範囲に含まれる。
【００２９】
［キー・トップの配列］
図４は、キーボード１９のキー・トップのキー配列を示す図である。図４（Ａ）は、キーボード１９の全体のキー配列８１を示し、図４（Ｂ）はキー配列８１の中でジェスチャの入力に使用するキー配列８３を示す。図４（Ｂ）において、キー配列８３を構成する各キーはそれぞれ物理的に独立して形成されておりその平面的な形状がほぼ等しい。キー配列８３は、行方向には複数のキーが整列して配置されているが、列方向は人間工学的見地から整列して配置されていない。キー配列８３には、最下行のキー群「Ｚ、Ｘ、・・・＞、？」の中心を通るＸ軸と最も左に配置されたキーである「１」の中心を通過するＹ軸によりＸ−Ｙ座標が定義されており、キー配列８３を構成するすべてのキーはその中心位置で座標を特定することができる。以後、単独のキーの位置は、Ｘ−Ｙ座標におけるその中心位置の座標で示すものとする。また、各キーの矩形上の輪郭の四隅または四辺も座標で特定することができる。
【００３０】
図５は、キー・スイッチ５１と文字コードを対応付けたマッピング・テーブル１５０の一部を示す図である。マッピング・テーブル１５０はＯＳ２７の中に組み込まれている。マッピング・テーブル１５０は１〜１６のスキャン・ラインと１〜８のデコーダ・ラインからなるマトリクスに、文字コードが割り当てられている。たとえば、スキャン・ライン１とデコーダ・ライン３に対応するキーが押下されたときは、キーボード・ドライバ２９は、マッピング・テーブル１５０に基づいてキー「Ｑ」に対応するメーク・コードを生成し、当該キーが離されたときはキー「Ｑ」に対応するブレーク・コードを生成する。
【００３１】
マッピング・テーブル１５０において、任意の２本のスキャン・ラインと任意の２本のデコーダ・ラインを抽出したときに、それらが交差する位置にある４個のキーはファントム条件を成立させる。たとえばノートＰＣ１０がジェスチャ・モードで動作するときに、スキャン・ライン２、５とデコーダ・ライン３、５の交差する位置に配置されたキー「Ｅ」、「Ｄ」、「Ｒ」、「Ｆ」がファントム条件を形成し、４個のキーから取り出した任意の３つのキーが同時に押下されたときに、残りの１つのキーが押下されなくてもキーボード・ドライバ２９は、当該キーが押下されたと認識してＯＳ２７には４個のキーのスキャン・コードを送る。
【００３２】
［入力するジェスチャ］
図６は、キー配列８３から入力するジェスチャの典型的なパターンを示す図である。図６（Ａ）は、ウインドウを拡大するためのズームアウト操作のジェスチャで、図６（Ｂ）はウインドウを縮小するためのズームイン操作のジェスチャである。ズームイン操作およびズームアウト操作のジェスチャは、両手の指１本ずつの２本の指または片手の２本の指で入力される。これをマルチタッチ入力という。ズームアウト操作のジェスチャは２本の指がほぼ直線方向に離れ、ズームイン操作のジェスチャは２本の指がほぼ直線上を近づくように形成される。図６（Ａ）と図６（Ｂ）のジェスチャは斜め方向にジェスチャが移動しているが、ズーム操作ではＸーＹ座標上で２本の指が移動する方向はいずれであってもよく、たとえば上下方向または左右方向であってもよい。ズームアウト操作およびズームイン操作のジェスチャは、指の移動距離がウインドウの拡大または縮小の程度に対応し、移動速度がウインドウの拡大または縮小の速度に対応する。
【００３３】
図６（Ｃ）〜図６（Ｅ）のジェスチャは１本の指で入力される。これをシングルタッチ入力という。図６（Ｃ）は、左右方向のスクロールのジェスチャで、図６（Ｄ）は、上下方向のスクロールのジェスチャである。スクロールのジェスチャは、指の移動距離がウインドウに対するスクロール量に対応し、移動方向がスクロールの方向に対応し、移動速度がスクロールの速度に対応する。図６（Ｅ）は、ウインドウを回転させるジェスチャである。回転のジェスチャは、指の移動距離がウインドウの回転量に対応し、移動速度が回転の速度に対応し、回転の方向が回転方向に対応する。
【００３４】
［基本手順］
図７は、ジェスチャ入力処理システム１００において、マルチタッチ入力またはシングルタッチ入力によるジェスチャを認識するための基本手順を示すフローチャートである。ブロック２０１では、アプリケーション・プログラム２３を実行してＬＣＤ１５にウインドウを開いているユーザが、ウインドウをジェスチャにより操作するためにキー配列８１のいずれかの単一のキーを押下または複数のキーを同時に押下してジェスチャ入力処理システム１００をジェスチャ・モードに変更する。このようにジェスチャ・モードに変更するためのキーまたはキーの組み合わせをモード選択キーという。
【００３５】
ジェスチャ入力処理システム１００は、マルチタッチ入力を片手で行うことを想定しているためもう一方の手でモード選択キーが押下されている間だけジェスチャ・モードで動作する。これに関わらず、ジェスチャ入力処理システム１００は、通常モードでモード選択キーが押下されたときにジェスチャ・モードに移行し、ジェスチャ・モードでモード選択キーが押下されたときに通常モードに復帰するようにしてもよい。このようにすれば、モード選択キーを押下したあとにマルチタッチ入力を両手で行うことができる。ジェスチャ・モードでは、キーボード・ドライバ２９は、図４のキー配列８３に含まれるキー以外のキーが押下されてもスキャン・コードをＯＳ２７に送らない。
【００３６】
ユーザはキー配列８３から図６に示したいずれかのジェスチャで連続的にキーを押下する。このとき、ユーザが最初に押下する開始キーは、必ず１本の指で１個のキーが押下されるものとする。したがって、２本の指で押下するマルチタッチ入力の場合は開始キーとして２個のキーが押下される。マルチタッチ入力の場合はエントリ制御部１０１により２個のキーを含むエントリが生成され、シングルタッチ入力の場合は１個のキーを含むエントリが生成される。ブロック２０５では、キーボード・ドライバ２９がスキャン・コードを生成してＯＳ２７に送る。ジェスチャ・モードに移行している間は、ＯＳ２７はキーボード・ドライバ２９から受け取ったすべてのスキャン・コードに対応する文字コードをジェスチャ・プログラム２５に渡す。
【００３７】
ブロック２０７では、ＯＳ２７がエントリ制御部１０１にキーボード・ドライバ２９から受け取ったスキャン・コードに対応する文字コードを送る。エントリ制御部１０１は、所定のスキャン・サイクルの間に受け取った文字コードごとに１つのエントリを作成し演算部１０５に送る。ジェスチャ・モードに移行してから最初のエントリを受け取った演算部１０５は、ブロック２０７で、そこに含まれる開始キーが２個か１個かを判断する。２個の場合はマルチタッチ入力であると判断してブロック２０９に移行し、１個の場合はシングルタッチ入力であると判断してブロック２１１に移行する。ブロック２１３では、ＯＳ２７が操作データ生成部１０９からアプリケーション・プログラム３１に帰属するウインドウを操作するためのパラメータ値を受け取り実行する。
【００３８】
［マルチタッチ入力（ズームイン）］
図８は、図７のブロック２０９で行われるマルチタッチ入力処理の手順を示すフローチャートである。図９は演算部１０５がエントリ制御部１０１から受け取ったエントリを処理する際に使用する作業テーブル１０３のデータ構造を示す図である。最初にマルチタッチ入力処理におけるファントム・キーの認定の概要を説明する。作業テーブル１０３はノートＰＣ１０がジェスチャ・モードに移行したときに、ジェスチャ・プログラム２５によりメイン・メモリ２１の作業領域に形成される。作業テーブル１０３にはエントリ制御部１０１から送られたエントリがエントリ番号ごとに登録される。図１０は、ズームイン操作を行うジェスチャが入力されたときに作業テーブル１０３に登録されたキーをエントリの順番に示したキー配列８３である。
【００３９】
図１０では、黒く塗りつぶしたキーがリアル・キーで、淡く塗りつぶしたキーがファントム・キーを示す。左側の数字は、作業テーブル１０３に登録されたエントリ番号に対応する。演算部１０５がエントリ制御部１０１から受け取った各エントリのキー群には、ファントム・キーも含まれている。演算部１０５は作業テーブル１０３を使用してファントム・キーを認定する。作業テーブル１０３の中で、括弧で囲ったキーはファントム・キーであるが、演算部１０５はエントリ制御部１０１からエントリを受け取った時点では、いずれのキーがファントム・キーであるかを認識することができない。演算部１０５は各エントリに含まれるファントム・キーを以下の手順で認定する。認定されたファントム・キーは作業テーブル１０３から消去される。
【００４０】
ブロック３０１でマルチタッチ入力処理が開始される。ブロック３０３では、エントリ制御部１０１が生成した２個の開始キーを含む最初のエントリにエントリ番号１を付与して演算部１０５に送る。エントリ制御部１０１は、新たなエントリを生成するたびに、当該エントリに新たなエントリ番号を付与して演算部１０５に送る。エントリ制御部１０１は、新たなエントリに対してエントリ番号を１ずつ増分する。エントリ制御部１０１は、さらに、タイマ２３から得た時間情報に基づいてあるエントリからつぎのエントリまでの経過時間を計測して所定値を越えた場合には、ジェスチャの入力が終了したと判断して演算部１０５に通知する。
【００４１】
演算部１０５は、エントリ制御部１０１から受け取ったエントリを作業テーブル１０３に登録する。エントリ制御部１０１は、エントリ番号１のエントリを受け取ったときにそこに含まれる２個の開始キーの一方を第１の指に対応させ、他方を第２の指に対応させて作業テーブル１０３のタッチ番号のフィールドにそれぞれのタッチ番号を設定する。いま、２個の開始キーとして第１の指に相当する親指でキー「Ｘ」が押下され、第２の指に相当する中指でキー「０」が押下されたものとすると、演算部１０５は作業テーブル１０３のエントリ番号１にキー「Ｘ」、「０」を登録し、かつそれぞれにタッチ番号の１または２を設定する。タッチ番号１は親指により押下されたキーまたはキー群に割り当てられ、タッチ番号２は中指により押下されたキーまたはキー群に割り当てられる。なお、タッチ番号の割り当てはこの逆であってもよい。
【００４２】
演算部１０５は、作業テーブル１０３のリアル・フラグのフィールドに、エントリ制御部１０１から受け取ったエントリに対してファントム・キーが含まれていると判断したときに、ファントム・キーを認定することでリアル・キーを特定できた場合にはタッチ番号ごとにリアル・フラグとして１を設定する。１つのエントリに含まれるキーが３個以内の場合はファントム条件が成立しないので、それらのキーはすべてリアル・キーとして特定される。リアル・キーの特定方法については後に詳しく説明するが、マルチタッチ入力では、開始キーは２個にしているのでファントム条件が成立することはないため、演算部１０５はこの時点でエントリ番号１のエントリに対してリアル・フラグを設定する。
【００４３】
なお、第１の指により押下されたリアル・キーまたはリアル・キー群およびその周囲に隣接するキーからなるキー群を第１のキー・グループといい、第２の指により押下されたリアル・キーまたはリアル・キー群およびその周囲に隣接するキーからなるキー群を第２のキー・グループという。第１のキー・グループおよび第２のキー・グループまたはそのいずれか一方には、第１の指により押下されたリアル・キーと第２の指により押下されたリアル・キーにより発生したファントム・キーも含まれる。
【００４４】
エントリ番号１のデータを作業テーブル１０３に登録した演算部１０３は、ブロック３０３でキー「Ｘ」とキー「０」の２つの開始キー間を結ぶ直線である図１０に示した移動直線３５１の傾きと切片を計算する。移動直線３５１は、ズーム操作におけるジェスチャの指の移動方向を予測してファントム・キーを認定するための直線である。演算部１０５は、ブロック３０３でさらに開始キー「Ｘ」、「０」間の距離を計算する。演算部１０５は、開始キー「Ｘ」と「０」の距離が所定値以上であればジェスチャがズームイン操作であると判断してブロック３０７に移行し、所定値未満であればズームアウト操作であると認識して図１５のブロック３０７に移行する。
【００４５】
ズームイン操作の場合は、最初に第１の指と第２の指がキー配列８３上の離れた位置におかれてそれぞれ１個の開始キーを押下したのちに、キー上で指を滑らせながら移動させてキーを連続的に押下し、最終的には２つの指が接近してジェスチャが終了するので、各指の移動方向が移動直線３５１に沿っていると予測することができる。移動直線３５１は演算部１０５に対して、第１のキー・グループに含まれるリアル・キーまたはリアル・キー群に対してキー「Ｘ」からキー「０」への移動を予測させ、第２のキー・グループに含まれるキーまたはキー群に対してキー「０」からキー「Ｘ」への移動を予測させる。
【００４６】
ブロック３０７では、エントリ制御部１０１が各エントリについて１つ前のエントリからの経過時間が一定値を超えたか否かを判断し、一定値を超えた場合はジェスチャの入力が停止したものと判断して演算部１０５に通知して処理はブロック３１９に移行する。エントリ制御部１０１が所定時間以内につぎのエントリを生成した場合は、ブロック３０９で演算部１０５はエントリ制御部１０１からその新たなエントリを受け取る。ブロック３０９では演算部１０５は、エントリ番号１のエントリに続いてエントリ番号２のエントリに関する文字コードを受け取り、各キーを第１のキー・グループと第２のキー・グループに分けてそれぞれのキー・グループにタッチ番号を設定し作業テーブル１０３に登録する。
【００４７】
演算部１０５は、１つ前のエントリにおいて特定されたリアル・キーに対して今回のエントリにおいて認識された各キーが隣接するか否かでそれらに対するタッチ番号を決定する。エントリ番号２のエントリでは、演算部１０５はキー「Ｘ」、「０」、「９」の文字コードを受け取る。キー「９」はエントリ番号１で特定されたリアル・キー「０」に隣接するキーであるため、第２のキー・グループに属すると判断して、キー「０」、「９」にタッチ番号２を設定する。キー「Ｘ」は変更がないので、エントリ番号１のエントリと同様にタッチ番号１を設定する。
【００４８】
つづいて、ブロック３１１で演算部１０５は、エントリ番号２のエントリに４個以上のキーが含まれるか否かを判断する。１つのエントリにキーが４個以上含まれるときは、ファントム条件が成立している可能性があるのでブロック３１３に移行して処理する。ブロック３１１で１つのエントリに含まれるキーが３個以下のときはファントム条件が成立する余地がないのでブロック３１７に移行し、エントリ番号２に含まれるタッチ番号１、２のいずれの文字コードに対してもリアル・フラグを設定してブロック３０７に戻る。
【００４９】
エントリの生成が継続しているとすれば、ブロック３０９でエントリ制御部１０１によりエントリ番号３のエントリが生成される。エントリ番号３のエントリには、キー「Ｘ」、「Ｃ」、「０」、「９」が含まれる。演算部１０５は、エントリ番号２のエントリに対する処理と同様にして、キー「Ｘ」、「Ｃ」が第１のキー・グループに属すると判断し、キー「０」、「９」が第２のキー・グループに属すると判断して各キー・グループにタッチ番号を付与し作業テーブル１０３に登録してブロック３１１に移行する。
【００５０】
演算部１０５はブロック３１１でエントリ番号３のエントリに４個以上のキーが含まれると判断して、ブロック３１３に移行し当該４個のキーについて検索テーブル１０７を参照してファントム条件が成立するか否かを判断する。図５のマッピング・テーブル１５０から明らかなように、キー「Ｘ」、「Ｃ」、「０」、「９」にはファントム条件が成立しないので、演算部１０５はいずれのキーもリアル・キーであると判断してブロック３１７に移行してエントリ番号３のエントリの第１のキー・グループおよび第２のキー・グループに対してリアル・フラグを設定して作業テーブル１０３に登録しブロック３０７に戻る。
【００５１】
エントリ番号４のエントリには６個のキーが含まれている。演算部１０５はブロック３１３でエントリ番号４のエントリに含まれるキー「Ｘ」、「Ｃ」、「０」、「９」、「Ｏ」、「Ｐ」の中で、第２のキー・グループに属する「０」、「９」、「Ｏ」、「Ｐ」にファントム条件が成立することを認識してブロック３１５に移行してファントム・キーを特定する処理を行う。キーボード１９からジェスチャを入力するときには、通常は１本の指で同時に押下するキーは３個であるが、指の角度を小さくした場合に４個のキーを押下することもできる。本実施の形態では、４個以上のキー群のなかから抽出した４個のキーにファントム条件が成立し、かつそれらのキーが隣接しているときにはすべてがリアル・キーであったとしてもいずれか１個のキーはファントム・キーであるものと想定して処理する。
【００５２】
演算部１０５は、ファントム条件が成立する４個のキーのなかで、いずれのキーにも隣接しない孤立したキーがある場合は、残りの３個のキーが同時に押下されたリアル・キーであることは明らかなので当該孤立したキーをファントム・キーと認定する。演算部１０５は、ファントム条件が成立する４個のキーが相互に隣接する場合は、以下のようにファントム・キーを認定する。図１１は、ファントム条件が成立した相互に隣接する４個のキーの中から、ファントム・キーを特定する方法を説明する図である。本発明ではファントム・キーを、図１０の移動直線３５１に基づいて特定する。演算部１０５は、ファントム条件が成立した４個のキーに対して、各キーと移動直線３５１の距離を計算する。そして、最も距離の長い位置にあるキーがファントム・キーであると特定する。
【００５３】
たとえば、図１１（Ａ）の場合は、移動直線３５３ａに対して４つのキーの中でキー３５７が最も距離が遠く、ズームイン操作のジェスチャが移動直線３５３ａに沿って行われることを想定すると、ジェスチャの方向から判断してキー３５２がリアル・キーである可能性が最も小さいためこれがファントム・キーであると認定する。図１１（Ｂ）の場合は、移動直線３５３ｂに対してキー３５９が最も距離が遠いためこれをファントム・キーであると認定する。このとき、各キーまでの距離を相互に比較する際に有意差を示すための一定の閾値を設けてもよい。そして、その閾値を越えるほどの差がない場合は、当該エントリにおいてはファントム・キーを認定できないものとしてブロック３０７に戻るようにしてもよい。図１１（Ｃ）のような場合は、ファントム・キーの認定が困難になり、また、誤って認定する可能性も高くなる。
【００５４】
したがって、移動直線３５３ｃに対する４個のキーの距離に閾値以上の差がないものとして、ファントム・キーを認定しないでブロック３０７に戻ることができる。ファントム・キーが認定されないときは、作業テーブル１０３にはリアル・フラグが設定されないことになる。図１１（Ａ）〜（Ｃ）では、移動直線と各キーとの距離に基づいてファントム・キーを認定する場合を説明したが、ファントム・キーは図１１（Ｄ）のように移動直線上に定義した一定の幅の細長い領域３５３ｄにより認定することもできる。この方法では、領域３５３ｄに重ならないキー３６１をファントム・キーであると認定することができる。
【００５５】
エントリ番号４のデータに対して演算部１０５は、キー「Ｐ」がファントム・キーであると認定して、ブロック３１７で作業テーブル１０３にリアル・フラグを設定してブロック３０７に戻る。このとき演算部１０５は作業テーブル１０３に登録されたキーのなかから、ファントム・キーである「Ｐ」を削除する。以後同様の手順が繰り返されてエントリ番号１３のエントリの処理まで進む。エントリ番号１３のエントリは、キー群がすべて隣接しているので、演算部１０５はブロック３０９でこれらのキーを２つのキー・グループに分類しないでブロック３１３に移行する。したがて、エントリ番号１３のエントリにはタッチ番号が設定されない。ブロック３１５で演算部１０５は、タッチ番号が設定されないエントリについては、ファントム・キーの認定ができないと判断してブロック３０７に戻る。したがって、作業テーブル１０３のエントリ番号１３には、リアル・フラグが設定されない。
【００５６】
図１２は、エントリ番号１３のエントリに対するファントム・キーの処理を説明する図である。エントリ番号１３のエントリには、キー「Ｆ」、「Ｖ」、「Ｇ」、「Ｒ」、「Ｊ」、「Ｕ」、「Ｈ」、「Ｍ」の８個のキーが含まれている。これらの８個のキーのなかからファントム条件が成立する４個のキーの組み合わせを抽出して図示すると、図１２（Ａ）〜（Ｃ）のようになる。エントリ番号１３のエントリでは、リアル・キーが「Ｆ」、「Ｕ」、「Ｇ」、「Ｊ」、「Ｕ」で、ファントム・キーが「Ｒ」、「Ｈ」、「Ｍ」であるが、移動直線３５１から最も遠い位置にあるキーがファントム・キーとはならない。このように、１つのエントリのキーがすべて隣接して１つのキー・グループを形成している場合は、移動直線３５１からファントム・キーを認定することができない。
【００５７】
エントリ番号１６のエントリは、エントリ番号１３のエントリと同様にキー群がすべて隣接しているので、演算部１０５はブロック３０９でこれらのキー群にタッチ番号を設定しないでブロック３１５に移行する。図１３は、エントリ番号１６のエントリに対するファントム・キーの処理を説明する図である。エントリ番号１６のエントリから演算部１０５は、キー「Ｂ」、「Ｇ」、「Ｆ」、「Ｊ」、「Ｈ」、「Ｎ」の６個のキーを認識する。これらの６個のキーのなかからファントム条件が成立する４個のキーの組み合わせを抽出して図示すると、図１３（Ａ）、（Ｂ）のようになる。
【００５８】
この場合は、リアル・キーを「Ｂ」、「Ｇ」、「Ｊ」、「Ｈ」とし、ファントム・キーを「Ｆ」、「Ｎ」としたときに、移動直線３５１に基づいてファントム・キーを認定しようとしても正しい判断ができなくなる。エントリ番号１６のエントリに対しては１つのエントリで認識されたキー群が１つのキー・グループを形成するため、エントリ番号１３のエントリに対する処理と同様に、ファントム・キーの認定をしないでブロック３０７に戻る。エントリ制御部１０１は、エントリ番号１６のエントリを生成してから所定の時間が経過しても新たな文字コードをＯＳ２７から受け取らない場合は、ブロック３０７で、演算部１０５にジェスチャの入力が終了したことを通知してブロック３１９に移行する。
【００５９】
ブロック３１９では、パターン認識部１０４がこの時点の作業テーブル１０３の内容に基づいてジェスチャを認識する。演算部１０５は、作業テーブル１０３からリアル・フラグが設定されたエントリだけを抽出して図１４に示すリアル・キー・リストを生成してパターン認識部１０４に送る。リアル・キー・リストは、各エントリから認定されたファントム・キーが除かれリアル・キーだけで構成されている。リアル・キー・リストからは、作業テーブル１０３においてリアル・フラグが設定されなかったエントリ番号１３、１６のエントリは除かれている。パターン認識部１０４は、リアル・キー・リストに含まれる各エントリのタッチ番号ごとのキーまたはキー群の座標（ｘ，ｙ）を計算する。１つのエントリにおいて一方のグループ・キーに対して複数のリアル・キーが特定された場合には、それらのキー群を代表する位置はキー群を構成する各キーの中心を結んで形成された図形の重心の位置とする。重心の計算は周知の方法を採用してよい。つづいてパターン認識部１０４は、各タッチ番号のキー・グループに関して、エントリの順番に座標を結んで作成した入力キーの座標軌跡を計算する。図２０は、ズーム操作に対する入力キーの座標軌跡を示す図である。
【００６０】
図２０（Ａ）には、ズームイン操作における第１の指によるジェスチャに対応する第１の座標軌跡４０１と第２の指によるジェスチャに対応する第２の座標軌跡４０９が示されている。第１の座標軌跡４０１は、図１４のリアル・キー・リストに含まれるタッチ番号１の各エントリのキーまたはキー群の座標を連結したもので、第２の座標軌跡４０９はタッチ番号２の各エントリのキーまたはキー群の座標を連結したものである。座標４０３、４１１はエントリ番号１のエントリに含まれる開始キー「Ｘ」、「０」に対応し、座標４０５、４１３は、タッチ番号１およびタッチ番号２のエントリに関してそれぞれ最後のエントリであるエントリ番号１５のキー群「Ｂ、Ｇ」、「Ｕ、Ｊ」に対応する。パターン認識部１０４は第１の座標軌跡４０１について、最初の座標４０３と最後の座標４０５を結んだ直線から最も離れた座標４０７が所定の距離未満であるか否かを判断する。また、第２の座標軌跡４０９についても同様に最初の座標４１１と最後の座標４１３を結んだ直線から最も遠い座標４１５が所定の距離未満であるか否かを判断する。
【００６１】
パターン認識部１０４はともに所定の距離未満であると判断した場合は、ジェスチャがズームイン操作であると認識してズームイン操作を示す記号ＺＩを演算部１０５に渡してブロック３２１に移行する。少なくともいずれか一方が所定の距離以上の場合は、パターン認識部１０４はジェスチャがズームイン操作であるとは認識しないでジェスチャを認識できないことを示す記号ＮＲを演算部１０５に渡して図７のブロック２０３へ移行する。このとき、演算部１０５は操作データ生成部１０９に操作データを送らないため、操作データ生成部からＯＳ２７にもパラメータ値が送られないことになり、アプリケーション・プログラム３１のウインドウは変化しない。
【００６２】
ブロック３２１では、演算部１０５は操作データ生成部１０９に送るための操作データを生成する。演算部１０５は、図２０の第１の座標軌跡４０１における座標４０３から座標４０５まで距離と、第２の座標軌跡における座標４１１から座標４１３までの距離を計算して合計の距離をズーム量Ｌとして計算する。また、演算部１０５は、エントリ制御部１０１からエントリ番号１のエントリを生成してから最後のエントリを生成するまでの経過時間時間ｔを受け取り、経過時間ｔでズーム量Ｌを除してズーム速度Ｖを計算する。演算部１０５は、ジェスチャの種類ＺＩ、ズーム量Ｌ、およびズーム速度Ｖを操作データとして操作データ生成部１０９に送る。
【００６３】
操作データ生成部１０９は、ブロック３２３で演算部１０５から受け取ったジェスチャの種類ＺＩ、ズーム量Ｌ、ズーム速度Ｖに基づいてウインドウを変化させるためのパラメータ値を生成し、アプリケーション・プログラム３１に帰属するウインドウの識別子とともにＯＳ２７に渡す。ＯＳ２７は、受け取ったパラメータ値に基づいて対象となるウインドウに対してズームインの処理を行う。またＯＳ２７は、ウインドウの拡大または縮小の程度をズーム量Ｌに対応するパラメータ値で決定し、ウインドウの大きさが変化する速度をズーム速度Ｖに対応するパラメータ値で決定する。ユーザは、ウインドウの変化が意図に合致する場合は、モード設定キーを解放してジェスチャ入力処理システム１００を通常モードに移行させる。ウインドウの変化が足りない場合は、さらにジェスチャを続けて、意図に合致するまでウインドウを変化させる。
【００６４】
［マルチタッチ入力（ズームアウト）］
図１５は、ズームアウト入力処理の手順を示すフローチャートである。図１５の手順は、図８のズームイン入力処理の手順と類似するので、図１５には図８と同一要素に同一参照番号を付与し、同じ手順内容は説明を省略または簡略化して異なる部分を中心に説明する。図１６は演算部１０５がエントリ制御部１０１から受け取ったエントリを処理する際に使用する作業テーブル１２１のデータ構造を示す。図１７は、ズームアウト操作を行うジェスチャが入力されたときに作業テーブル１２１に登録されたキーをエントリの順番に示したキー配列８３である。
【００６５】
いま、２個の開始キーとして、親指でキー「Ｇ」が押下され、中指でキー「Ｙ」が押下されたものとすると、演算部１０１により作業テーブル１２１のエントリ番号１のエントリにキー「Ｇ」とキー「Ｙ」が登録される。そして、演算部１０５は、キー「Ｇ」にタッチ番号１を設定し、キー「Ｙ」にタッチ番号２を設定してそれぞれにリアル・フラグを設定する。ブロック３０９において、後続のエントリに含まれるキー群に対してタッチ番号を割り当てる際には、１本の指で押下できる可能性のあるキー・パターンとジェスチャの移動方向を考慮する。具体的には、エントリ番号２、３、４のエントリに含まれる各キー群は、図１７に示すように２つのグループに分かれていないので、図８の手順で説明したようにタッチ番号を付与することができず、よってリアル・フラグを設定することもできない。
【００６６】
ここで、１本の指で押下できる可能性のある状態は、図１８に示した４個のキー群３６１の中央部または典型的に示した３個のキー群３６３の中央部（三つのコーナーが接近する位置）を押下した場合である。したがって、図１７に示すエントリ番号２、３、４のキー群は、１本の指による押下の物理的な制約とジェスチャの移動方向に基づいて２つのキー・グループに分けることができる。そのとき、直前のエントリにおいて認識されたリアル・キーとの連続性を考慮する。たとえば、エントリ番号２のエントリに含まれる３個のキー「Ｇ」、「Ｙ」、「７」は１本の指で押下することはできない。そして１つ前のエントリ番号１のエントリの処理でキー「Ｇ」とキー「Ｙ」にはリアル・フラグが設定されており、このジェスチャは図８のブロック３０５でズームアウト操作と特定されているため２つの指は離れる方向に移動することがわかっているので、この３個のキー群に対しては、キー「Ｇ」にタッチ番号１を設定し、キー「Ｙ」、「７」にタッチ番号２を設定してよい。エントリ番号３およびエントリ番号４で認識されたキー群に対しても同様の手順でキー・グループを特定してそれぞれにタッチ番号を設定することができる。
【００６７】
図８のブロック３０３では、最初のエントリに含まれる開始キー「Ｇ」、「Ｙ」に対して図１７のエントリ番号１のキー状態に示されたように移動直線３５１が計算される。ズームアウト操作では、２個の開始キーについて計算した移動直線３５１をその後のジェスチャの移動方向と予測するよりも、エントリ番号２以降の各エントリについて計算した移動直線で移動方向を予測した方が望ましい。たとえば、開始キーが「Ｇ」、「Ｙ」であるとしたとき、ユーザはジェスチャを図１７のエントリ番号１のキー状態について計算した移動直線３５１の方向に移動する場合もあるが、キー「Ｇ」を下方向、キー「Ｙ」を上方向に移動する場合もある。
【００６８】
この手順では図８のフローチャートに対して、ブロック３４１、３４３、３４５を新たに設けている。ブロック３４１ではリアル・フラグが設定されたエントリ番号２以降の各エントリに対して、タッチ番号ごとのキー・グループについて移動直線３５１ａ、３５１ｂを再計算してその傾きａおよび切片ｂを作業テーブル１２１に登録する。具体的には図１７に示すように、開始キー「Ｇ」、「Ｙ」とリアル・フラグが設定されたエントリの各キー・グループとの間を結ぶ移動直線３５１ａ、３５１ｂを計算する。たとえば、図１７において、エントリ番号６のエントリに含まれるキー群については、タッチ番号１のリアル・キー「Ｆ」、「Ｖ」、「Ｄ」の重心と開始キー「Ｇ」の重心を結んだ直線が移動直線３５１ａとなり、タッチ番号２のリアル・キー「７」、「Ｕ」、「８」の重心と開始キー「Ｙ」とを結んだ直線が移動直線３５１ｂとなる。
【００６９】
演算部１０５がブロック３１５でファントム・キーを認定するときには、処理対象となるエントリより過去において、当該エントリに最も近い時刻にリアル・フラグが設定されたエントリについて計算された移動直線３５１ａおよび移動直線３５１ｂを利用する。移動直線３５１ａ、３５１ｂは、第１のキー・グループと第２のキー・グループでそれぞれ別のエントリから選択してよい。この場合もファントム・キーの認定は、第１のキー・グループには移動直線３５１ａを使用し、第２のキー・グループには移動直線３５１ｂを使用して、図１１で説明した方法を採用する。
【００７０】
そして、ブロック３４３では演算部１０５が、作業テーブル１６に、ブロック３１５でリアル・フラグが設定されていないエントリがあるか否かを判断する。そのようなエントリがある場合はブロック３４５に移行し、リアル・フラグの設定されていないエントリがない場合はブロック３０７に戻る。ブロック３４５ではブロック３１５とは異なって処理対象となるエントリより過去のエントリに対して計算された移動直線３５１ａ、３５１ｂに代えて、それ以後の最も早い時刻にリアル・フラグが設定されたエントリについて計算された移動直線３５１ａおよび移動直線３５１ｂを使用してファントム・キーを認定する。移動直線３５１ａ、３５１ｂは、第１のキー・グループと第２のキー・グループでそれぞれ別のエントリから選択してよい。
【００７１】
たとえば、図１７において、処理対象となるエントリ番号６のエントリに対してエントリ番号５のエントリについて計算した移動直線３５１ａ、３５１ｂではファントム・キーの認定ができなかった場合に、エントリ番号７のエントリについて計算した移動直線３５１ａ、３５１ｂでファントム・キーの認定を行う。ブロック３４５でファントム・キーが認定できた場合はブロック３１７に移行して作業テーブル１２１にリアル・フラグを設定し、認定できなかった場合はブロック３０７に戻る。
【００７２】
ブロック３０７でジェスチャの入力が終了すると図８のブロック３１９に移行する。ブロック３１９では、ズームイン入力処理と同様にパターン認識部１０４がこの時点の作業テーブル１０３の内容に基づいてジェスチャを認識する。演算部１０５は、作業テーブル１２１からリアル・フラグが設定されたエントリだけを抽出して図１９に示すリアル・キー・リストを生成してパターン認識部１０４に送る。図１９のリアル・キー・リストのデータ構造は図１４のデータ構造と同一である。
【００７３】
図２０（Ｂ）には、ズームアウト操作における第１の指によるジェスチャに対応する第１の座標軌跡４５１と第２の指によるジェスチャに対応する第２の座標軌跡４０３が示されている。第１の座標軌跡４５１は、図１９のリアル・キー・リストに含まれるタッチ番号１の各エントリのキーまたはキー群の座標を連結したもので、第２の座標軌跡４５９はタッチ番号２の各エントリの座標を連結したものである。座標４５３、４６１は開始キー「Ｇ」、「Ｙ」に対応し、座標４５５、４６３は第１のタッチ番号および第２のタッチ番号のエントリに対してそれぞれ最後のリアル・キーが特定されたエントリであるエントリ番号１０のキー群「Ｃ、Ｘ」、「８、９」に対応する。
【００７４】
パターン認識部１０４は第１の座標軌跡４５１について、最初の座標４５３と最後の座標４５５を結んだ直線から最も離れた座標４５７が所定の距離未満であるか否かを判断する。また、第２の軌跡４５９についても同様に最初の座標４６１と最後の座標４６３を結んだ直線から最も遠い座標４６５が所定の距離未満であるか否かを判断する。パターン認識部１０４はともに所定の距離未満であると判断した場合は、ジェスチャがズームアウト操作であると認識してズームアウトを示す記号ＺＯを演算部１０５に渡してブロック３２１に移行する。
【００７５】
少なくともいずれか一方が所定の距離より遠い場合は、パターン認識部１０４はジェスチャがズームアウト操作であるとは認識しないで、ジェスチャを認識できないことを示す記号ＮＲを演算部１０５に渡して図７のブロック２０３へ移行する。このとき、操作データ生成部１０９からＯＳ２７にはパラメータ値が送られないため、アプリケーション・プログラム３１のウインドウには変化がない。演算部１０５はズームアウト操作であることを示す記号ＺＯを受け取ると、ズームイン入力処理の場合と同様に、ジェスチャの種類ＺＯ、ズーム量Ｌ、およびズーム速度Ｖを操作データとして操作データ生成部１０９に送る。
【００７６】
［シングルタッチ入力］
図２１は、図７のブロック２１１で行われるシングルタッチ入力処理の手順を示すフローチャートである。図２２は、シングルタッチ入力処理においてジェスチャの認識を行う方法を説明する図である。シングルタッチ入力処理は、図１５で説明したズームアウト入力処理の手順において、ブロック３０７でジェスチャが終了するまでは第１のキー・グループまたは第２のキー・グループに対して行われる処理とほぼ同じであるため、フローチャートの各要素に同じ参照番号を付与している。
【００７７】
図７のブロック２０７で演算部１０５は、最初のエントリに含まれる開始キーが１個であることを認識して処理はブロック２１１に移行する。シングルタッチ入力の場合も、開始キーは１個だけ押下されるが、それに続いて２個目のキーが押下される。演算部１０５が最初のエントリからシングルタッチ入力であるかマルチタッチ入力であるかを判断するために、ユーザはシングルタッチ入力をする際に、開始キー押下して所定のスキャン・サイクルが経過してからつぎのキーを押下する。こうすることで非常に短い時間の間に２個のキーが押下されてシングルタッチ入力とマルチタッチ入力の区別ができなくなるような事態を防ぎ、シングルタッチ入力では最初のエントリに１個のキーだけ含まれるようになる。
【００７８】
ブロック３１９でパターン認識部１０４は、図２２（Ａ）に示された座標軌跡５０１を計算したと仮定する。パターン認識部１０４は、座標軌跡５０１が図６（Ｃ）、（Ｄ）、（Ｅ）のいずれのジェスチャであるかを認識する必要がある。パターン認識部１０４は、座標軌跡５０１の最初の座標５０３と最後の座標５０５を結んだ直線から、Ｘ−Ｙ座標上での座標軌跡の移動方向と角度を認識する。また最初の座標５０３と最後の座標５０５を結んだ直線から最も遠い座標５０７が所定の距離未満であれば、図６（Ｃ）、（Ｄ）のスクロールであると認識し、所定の距離以上であれば回転であると認識する。パターン認識部１０４は、スクロールであると認識したときは、図２２（Ｂ）のようにＸ座標に対して４５度および１３５で交差する２本の直線で座標領域を４等分した領域５０５、５０７、５０９、５１１からスクロールの方向を判断する。
【００７９】
パターン認識部１０４は、直線の交差部からそれぞれの領域の外側に向かう方向が領域５０５、５０７、５０９、５１１の範囲であれば、それぞれ上スクロール、下スクロール、右スクロール、左スクロールのジェスチャであると認識して、それぞれの操作を示す記号ＵＳ、ＤＳ、ＲＳ、ＬＳを演算部１０４に送る。そして、演算部１０５はブロック３２１で座標５０３から座標５０５までの距離をスクロール量Ｌとして計算する。また、演算部１０５は、エントリ制御部１０１から、エントリ番号１のエントリが生成されてから最後のエントリが生成されるまでの経過時間ｔを受け取り、ブロック３０７において、時間ｔでスクロール量Ｌを除してスクロール速度Ｖを計算する。
【００８０】
パターン認識部１０４がブロック３１９でジェスチャが回転であると認識したときは、回転を示す記号Ｔを演算部１０５に送る。演算部１０５は、座標５０３、５０５、５０７から回転の方向を認識し、座標軌跡５０１を構成する座標間の距離を合計した長さを回転量Ｌとして計算する。また、演算部１０５は時間ｔで回転量Ｌを除して回転速度Ｖを計算する。スクロールの判断と回転の判断のために、座標５０３と座標５０５を結ぶ線から座標５０７までの距離に差を設けた場合や、図２２（Ｂ）の各領域の境界にいずれの領域とも判定しない不感帯を設けた場合には、パターン認識部１０４がジェスチャを認識できない場合がある。その場合はブロック２０１に戻って最初からやり直す。
【００８１】
これまで本発明について図面に示した特定の実施の形態をもって説明してきたが、本発明は図面に示した実施の形態に限定されるものではなく、本発明の効果を奏する限り、これまで知られたいかなる構成であっても採用することができることはいうまでもないことである。
【符号の説明】
【００８２】
２０…キー・マトリクス
２５…ジェスチャ・プログラム
３１…スキャン・ドライバ
５１…キー・スイッチ
８１、８３…キー配列
１００…ジェスチャ入力処理システム
１０３、１２１…作業テーブル
１５０…マッピング・テーブル
３５１、３５１ａ、３５１ｂ、３５３ａ、３５３ｂ、３５３ｃ…移動直線
４０１…第１の座標軌跡
４０９…第２の座標軌跡
【図１】
2010250628.tif 000003
【図２】
2010250628.tif 000004
【図３】
2010250628.tif 000005
【図４】
2010250628.tif 000006
【図５】
2010250628.tif 000007
【図６】
2010250628.tif 000008
【図７】
2010250628.tif 000009
【図８】
2010250628.tif 000010
【図９】
2010250628.tif 000011
【図１０】
2010250628.tif 000012
【図１１】
2010250628.tif 000013
【図１２】
2010250628.tif 000014
【図１３】
2010250628.tif 000015
【図１４】
2010250628.tif 000016
【図１５】
2010250628.tif 000017
【図１６】
2010250628.tif 000018
【図１７】
2010250628.tif 000019
【図１８】
2010250628.tif 000020
【図１９】
2010250628.tif 000021
【図２０】
2010250628.tif 000022
【図２１】
2010250628.tif 000023
【図２２】
2010250628.tif 000024