JP4868469B2 - ユーザインタフェースを制御するための挿入位置の追跡 - Google Patents

ユーザインタフェースを制御するための挿入位置の追跡 Download PDF

Info

Publication number
JP4868469B2
JP4868469B2 JP2008326598A JP2008326598A JP4868469B2 JP 4868469 B2 JP4868469 B2 JP 4868469B2 JP 2008326598 A JP2008326598 A JP 2008326598A JP 2008326598 A JP2008326598 A JP 2008326598A JP 4868469 B2 JP4868469 B2 JP 4868469B2
Authority
JP
Japan
Prior art keywords
user interface
insertion position
data entry
data
control
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Fee Related
Application number
JP2008326598A
Other languages
English (en)
Other versions
JP2009076105A (ja
Inventor
ジェイ.ガーサイド エイドリアン
ビー.キーリー ルロイ
アール.ウィック トーマス
マック ウィリアム
レノ グレディ
ダッジ スティーブ
エー.トアセット トッド
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Microsoft Corp
Original Assignee
Microsoft Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/431,049 external-priority patent/US20040225965A1/en
Application filed by Microsoft Corp filed Critical Microsoft Corp
Publication of JP2009076105A publication Critical patent/JP2009076105A/ja
Application granted granted Critical
Publication of JP4868469B2 publication Critical patent/JP4868469B2/ja
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04886Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures by partitioning the display area of the touch-screen or the surface of the digitising tablet into independently controllable areas, e.g. virtual keyboards or menus
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F3/00Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
    • G06F3/01Input arrangements or combined input and output arrangements for interaction between user and computer
    • G06F3/048Interaction techniques based on graphical user interfaces [GUI]
    • G06F3/0487Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser
    • G06F3/0488Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures
    • G06F3/04883Interaction techniques based on graphical user interfaces [GUI] using specific features provided by the input device, e.g. functions controlled by the rotation of a mouse with dual sensing arrangements, or of the nature of the input device, e.g. tap gestures based on pressure sensed by a digitiser using a touch-screen or digitiser, e.g. input of commands through traced gestures for inputting data by handwriting, e.g. gesture or text
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/451Execution arrangements for user interfaces

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Human Computer Interaction (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • User Interface Of Digital Computer (AREA)
  • Input From Keyboards Or The Like (AREA)
  • Position Input By Displaying (AREA)

Description

本発明の様々な実施形態は、一般に、挿入位置の状況に基づく自動応答の生成に関する。本発明の様々な例は、特に、挿入位置の検出された状況に基づくデータ入力ユーザインタフェースの呼出しに適用する。
コンピュータが進化するにつれて、ユーザ体験を向上させ、コンピュータをより多機能にする様々な技術が開発されている。例えば、多くのソフトウェアアプリケーションは、ユーザ体験をより便利にするためにユーザのアクションに対する様々な自動応答を提供する。これらのアプリケーションは、例えばユーザが入力している単語を自動的に完成させ、アプリケーション内の1つの場所から別の場所に移動しているテキストの再フォーマットを行い、あるいはユーザがあるネットワーク位置の参照内に挿入ポイントを置くと、インターネットWebサイトなどのネットワーク位置に自動的に接続することができる。ユーザのアクションに対するこうした自動応答は、ユーザ体験を向上させるが、典型的には、アプリケーション内に含まれている、またはアプリケーションにリンクされているリソースに限定される。従って、使用している特定のアプリケーション外のリソースにユーザが自動的にアクセスできるようにすることも有用となり得る。例えば、様々なアプリケーションについて一貫性のあるやり方で、データ入力ユーザインタフェースをユーザに自動的に提供することが有用となる。
Microsoft WINDOWS(登録商標)ブランドのXP Tablet PC Edition オペレーティングシステムは、ユーザがペンまたはスタイラスを使用してデータをコンピュータに送る、Tablet PC Input Panel、テキスト入力パネル、またはTIPと呼ばれるデータ入力ユーザインタフェースを提供する。この種のユーザインタフェースは、より広範なカテゴリのデータ入力グラフィカルユーザインタフェースに分類される。これは、一般にはデータ入力パネルと呼ぶこともできる。データ入力パネルは、その表面にわたるスタイラスの動きを電子インクに変換する書き込み面を備えることができる。データ入力パネルの一部のバージョンは、電子インクをテキストに変換することができ、他の種類のデータ入力パネルは、その代わりに、またはそれに加えてコンピュータ上で動作しているアプリケーションに直接電子インクを提供することができる。また、データ入力パネルは、従来のキーボードの文字を表示する「ソフト」キーボード面を備えていることもある。ユーザがスタイラスを使用して表示されたキー上でタップすると、コンピュータは、そのキーに関連付けられた文字を入力データとして受信する。他の種類のデータ入力パネルは、特化した入力面を有していることがある。例えば、IME(Mictosoft Input Method Editors)が提供するユーザインタフェースは、東アジアのアルファベットの文字を入力として受ける複数の文字サイズの書き込み面を提供し得る。
代替のデータ入力技術の提供に加えて、様々な種類のデータ入力パネルは、データ入力に関するあいまいさを明確にする手助けも行う。例えば、アプリケーションの中には、ユーザが電子インクを直接コントロールに書き込み、前に入力されたインクまたはテキストを表示できるようにするエディットコントロールを含むこともできる。しかし、この種類のエディットコントロールでは、ユーザが新しいデータの挿入と既存の表示データの操作とを区別するのが難しいことがある。例えば、ユーザインタフェースが既存のテキストまたはインクを表示する場合、スタイラスを使用して既存のテキストまたはインクを選択しようとする試行を、「−」文字を作成しようとする試行と混同することがあり得る。多くの種類のデータ入力パネルでは、既存のインクまたはテキストを新しいテキストの入力と区別し、それによってユーザがアプリケーションにデータを追加しているか、単に既存のデータを操作しているかについての任意のあいまいさを明確にするのを助けることが好都合である。
これら種類のデータ入力パネルは、スタイラス入力装置を使用するコンピュータの有用性を実質的に向上させるが、従来のデータ入力パネルに関連する不都合が依然としていくつかある。第1に、データ入力パネルは、具体的にはユーザによって呼び出される必要がある。従って、データ入力パネルを使用してアプリケーションにデータを入力するには、ユーザは、アプリケーションの外部から手動でデータ入力パネルを稼動させる必要がある。しかし、多くのコンピュータユーザは、データ入力パネルに不慣れであり、このリソースを見落とす、またはその呼出し方法を知らないおそれがある。その結果、ソフトウェアアプリケーションを作成する開発者は、ユーザがデータをアプリケーションに入力するようデータ入力パネルに手動で要求する方法を知っていることを確信できない。代わりに開発者は、ユーザがデータ入力パネルを稼動させ、使用できることを願う、あるいは代替のデータ入力方法を提供する必要がある。
第2に、データ入力パネルは、アプリケーションから独立して呼び出されるグラフィカルユーザインタフェースであるため、典型的には、同様にアプリケーションから独立して表示される。一部の状況では、ユーザインタフェースは、アプリケーション上に重ね合わせることができる。この配置によってユーザは、アプリケーションのその入力先の近くにデータを入力することはできるが、ユーザインタフェースが偶発的にその入力先またはその付近を隠してしまうことがあり得る。しかし、たとえユーザインタフェースが所望の入力先を最初に隠すことはないとしても、ユーザインタフェースがそのデータの新しい挿入先を隠すのを防ぐために、ユーザは、新しいデータがアプリケーションに入力されると、ユーザインタフェースを絶えず配置し直す必要がある。さらに別の種類のデータ入力パネルでは、ユーザインタフェースは、アプリケーションの下のスペースに「ドッキング」される。データ入力パネルをこのように配置することによって、ユーザが新しいデータの所望の入力先を見るのを妨げることは確実になくなるが、アプリケーションを制御し、データをアプリケーションに入力するために、ユーザがアプリケーションとデータ入力パネルとの間でスタイラスを絶えず前後に動かすのは不便である。
第3に、典型的なデータ入力パネルによって提供されるデータ入力技術は多岐にわたるため、ユーザがあるアプリケーションの特定の位置にデータを入力するのにどの技術が最適であるかを決定することはしばしば不便である。例えば、あるアプリケーションは、大文字と小文字が区別されるパスワードを受けるエディットコントロールを含んでいることがある。しかし、ユーザがデータ入力パネルの書き込み面に電子インクを書き込むことによってエディットコントロールにパスワードを入力しようとした場合、ユーザの手書きが誤って認識されることがある。さらに、エディットコントロールが、許可されていない傍観者がパスワードを見るのを防ぐために、誤って認識されたテキストを意図的に隠す場合、ユーザは、そのパスワードがなぜ受け付けられないのかを理解することさえできないことがある。この状況では、ユーザは、書き込み面ではなく代わりにキーボード面を使用してデータをエディットコントロールに入力することが好ましいかもしれない。しかし、従来の多くのデータ入力パネルでは、ユーザは、キーボード面がそのタスクにより適していることを理解し、データ入力パネルをその表示面に自ら変更する必要がある。
好適には、本発明の様々な実装形態は、ユーザのアクションに対する自動応答を提供することに関する。特に、本発明の一部の例は、挿入位置の検出された状況に基づいてデータ入力ユーザインタフェースを自動的に生成するツールに関連する。これらの実装形態によれば、例えば、ユーザインタフェースは、挿入位置の近くに、しかしその位置に入力されるデータを隠すことなくレンダリングされる。さらに、本発明の様々な例では、データ入力ユーザインタフェースは、ユーザがそのデータ入力ユーザインタフェースを介してデータを入力するのに適したスタイラスなどの装置を使用して挿入位置を設定したときにのみレンダリングされる。さらに、本発明の一部の例では、データ入力ユーザインタフェースの機能を、挿入位置の検出された状況に基づいて構成する。例えば、挿入位置がパスワードを受け取るエディットコントロール内にある場合、データ入力ユーザインタフェースは、電子インクを受け取り、認識する書き込み面の代わりに、ソフトキーボード面を提供するように自動的に構成されたデータ入力パネルでもよい。本発明のさらに別の例では、代わりに、またはそれに加えて、挿入位置の検出された状況に基づいてデータ入力ユーザインタフェースを呼び出す方法を割り当てる。
本発明の一部の実装形態によれば、挿入位置追跡ツール(insertion location tracking tool)は、挿入位置の状況を常に追跡する。このツールは、例えば挿入位置状況情報を、オペレーティングシステムまたは他の適切なシステムの様々な構成要素を介してアプリケーションから収集することができる。ツールは、取得した各情報に基づいて挿入位置の状況を決定する、または取得された全情報の一部のみをサンプリングして挿入位置の状況を決定することができる。例えば、このツールは、挿入位置状況情報を含む多数のイベントメッセージを受信し、各イベントメッセージをキューに入れ、最後にキューに入れられたイベントメッセージを定期的にサンプリングして挿入位置の状況を決定する。サンプリング期間は、時間に基づいていても、または受信されたイベントメッセージの総数に基づいていてもよい。
本発明の様々な例では、挿入位置の状況を使用して、ユーザにデータ入力パネルなどのデータ入力ユーザインタフェースを提供する。データ入力ユーザインタフェースは、例えば検出された挿入位置の近くにレンダリングすることができる。代わりに、あるいはそれに加えて、データ入力ユーザインタフェースの特徴を、挿入位置の検出された状況に従って構成することができる。従って、検出された挿入位置が、パスワード、または他の予測できない各種の文字を受け取るエディットコントロール内の位置ポイントである場合、データ入力ユーザインタフェースは、電子インクを受け取り、認識するために、書き込み面ではなくキーボード面を含んでいてもよい。
さらに、検出された挿入位置の状況を使用して、データ入力ユーザインタフェースを呼び出す特定の技術を決定することができる。例えば、検出された挿入位置がそれに続くデータを有していない挿入ポイントである、そうでない場合は新しいデータを入力するためだけに使用する可能性が高い場合、データ入力ユーザインタフェースを直接呼び出すことができる。しかし、検出された挿入位置が、ドラッグされる、または新しいデータに置き換えられる可能性の高い置換え可能なテキストの選択である場合、個別アイコンまたは「ターゲット」を介してデータ入力ユーザインタフェースを呼び出すことができる。例えば、ユーザがポインタにターゲットを通過させたとき、ポインタをターゲットの上で維持したとき、またはスタイラスでターゲットに触れたときにデータ入力ユーザインタフェースをレンダリングすることができる。また、挿入位置の状況を使用して、データ入力ユーザインタフェースをどのように消すかを決定することができる。すなわち、挿入位置の状況の変化が、エディットコントロールが入力フォーカスを失ったことを示す場合、この指示を使用して、そのエディットコントロールに関連するデータ入力ユーザインタフェースを自動的に閉じることができる。
(概要)
以下で詳しく説明するように、本発明の様々な実施形態は、挿入位置の状況を監視する。これらの実施形態は、例えば、挿入位置、挿入位置が存在するフィールド、エディットコントロール、またはユーザインタフェースの場所を監視し得る。本発明の様々な実施形態は、挿入位置の特徴に基づいて1または複数のアクションを実行することができる。代わりに、またはそれに加えて、本発明の様々な実施形態は、この状況情報を別のオブジェクトまたはプロセスに提供し、この挿入位置状況情報に基づいて1または複数のアクションが実行される。例えば、一部の実施形態では、挿入位置の特徴に基づいてデータ入力用のユーザインタフェースを制御することができる。従って、本発明の異なる実施形態を実施できる様々な動作環境を、本発明の様々な実施形態に従って挿入位置の状況を監視する様々な技術とともに説明する。挿入位置の監視された特徴に基づくデータ入力ユーザインタフェースの制御の様々な例についても説明する。
(動作環境の例)
本発明の様々な実施形態による挿入位置の状況に基づいてユーザインタフェースを制御するツールは、ハードウェア、ソフトウェア、ファームウェア、またはそれらの組合せを使用して実施することができる。例えば、本発明の一部の実施形態は、挿入位置の状況を追跡し、データ入力ユーザインタフェースの動作を制御する機能モジュールによって実施することができる。各モジュールは、単にアナログまたはデジタルの電子回路で実施することができる。しかし、当業者にはわかるように、モジュールは、例えばパーソナルコンピュータやラップトップコンピュータなど従来のプログラム可能コンピューティング装置にみられるようなプログラム可能電子回路を制御する実行可能ソフトウェア命令を使用して実施することもできる。
より具体的には、本発明の様々な実施形態による挿入位置追跡およびユーザインタフェース制御ツールは、1または複数のプログラム可能コンピューティング装置によって実行されるプログラムモジュールなどのコンピュータ実行可能命令の一般的な文脈で説明することができる。一般にプログラムモジュールは、特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含み得る。一般に、様々な実施形態では、必要に応じてプログラムモジュールの機能を組み合わせる、あるいは分散させることができる。
本発明の様々な実施形態は、ソフトウェアでプログラムされたプログラム可能コンピュータ装置を使用して実施できるため、本発明の様々な実施形態を使用できる一般のプログラム可能コンピューティング装置(以下、単にコンピュータと呼ぶ)の構成要素および動作を簡単に説明することが、本発明をよりよく理解するのに役立つであろう。図1は、本発明の様々な態様の実施に使用できる従来の汎用デジタルコンピューティング環境の例を示す機能ブロック図である。図1では、コンピュータ100は、処理ユニット110、システムメモリ120、およびシステムメモリを含む様々なシステム構成要素を処理ユニット110に結合するシステムバス130を含む。システムバス130は、様々なバス構造のうちの任意のものを使用する、メモリバスまたはメモリコントローラ、周辺バス、およびローカルバスなど、あらゆる種類のバス構造とすることができる。システムメモリ120は、読取り専用メモリ(ROM)140およびランダムアクセスメモリ(RAM)150を含む。
起動時などコンピュータ100の要素間で情報の転送を助ける基本ルーチンを含む基本入出力システム160(BIOS)は、ROM140に格納されている。コンピュータ100は、ハードディスク(図示せず)からの読出し、およびそこへの書込みを行うためのハードディスクドライブ170、取外し可能磁気ディスク190からの読出し、またはそこへの書込みを行うための磁気ディスクドライブ180、CD ROMまたは他の光媒体など取外し可能光ディスク192からの読出し、またはそこへの書込みを行うための光ディスクドライブ191も含む。ハードディスクドライブ170、磁気ディスクドライブ180、および光ディスクドライブ191は、それぞれハードディスクドライブインタフェース192、磁気ディスクドライブインタフェース193、および光ディスクドライブインタフェース194によってシステムバス130に接続されている。ドライブおよびその関連するコンピュータ読取り可能媒体は、コンピュータ読取り可能命令、データ構造、プログラムモジュール、およびパーソナルコンピュータ100用の他のデータの不揮発性記憶装置を提供する。動作環境の例では、磁気カセット、フラッシュメモリカード、デジタルビデオディスク、ベルヌーイカートリッジ、ランダムアクセスメモリ(RAM)、読取り専用メモリ(ROM)など、コンピュータでアクセス可能なデータを格納することができる他のタイプのコンピュータ読取り可能媒体も使用できることを、当業者であれば理解されよう。
オペレーティングシステム195、1または複数のアプリケーションプログラム196、他のプログラムモジュール197、およびプログラムデータ198を含むいくつかのプログラムモジュールを、ハードディスクドライブ170、磁気ディスク190、光ディスク192、ROM140、またはRAM150に格納することができる。ユーザは、キーボード101やポインティング装置102などの入力装置を介してコマンドおよび情報をコンピュータ100に入力することができる。他の入力装置(図示せず)には、マイクロフォン、ジョイスティック、ゲームパッド、衛星放送受信アンテナ、スキャナなどがある。これらおよび他の入力装置は、しばしばシリアルポートインタフェース106を介して処理ユニット110に接続される。シリアルポートインタフェース106は、システムバスに結合されているが、パラレルポート、ゲームポート、ユニバーサルシリアルバス(USB)など他のインタフェースによって接続することもできる。さらに、これらの装置を、適切なインタフェース(図示せず)を介して直接システムバス130に結合することもできる。モニタ107または他の種類の表示装置も、ビデオアダプタ108などのインタフェースを介してシステムバス130に結合される。モニタに加えて、パーソナルコンピュータは一般に、スピーカ、プリンタなど他の周辺出力装置(図示せず)を含む。一例として、インクなどフリーハンド入力をデジタル式に捕捉するためにペンデジタイザ165および付属ペンまたはスタイラス166が設けられている。ペンデジタイザ165とシリアルポートの間の直接接続を示しているが、実際にはペンデジタイザ165は、当分野で知られているように、処理ユニット110に直接、パラレルポートまたは他のインタフェースおよびシステムバス130を介して結合することができる。さらに、デジタイザ165をモニタ107から離して示しているが、本発明の多くの実施形態では、デジタイザ165の使用可能なエリアは、モニタ107の表示エリアと同程度の範囲を占める。さらに、デジタイザ165をモニタ107に統合する、またはモニタ107に重ねる個別の装置として存在させる、そうでない場合はモニタ107に取り付けることができる。
アプリケーションプログラム196およびプログラムモジュール197は、スタイラス166を介してインク入力を受け取り、分析する際に使用する解析モジュール、および認識モジュールを含むことができる。解析モジュールを使用して、受信したストロークを分析し、ストロークをインクオブジェクト(文字、単語、図など)にグループ分けすることができる。認識モジュールを使用してインクオブジェクトを分析し、英数字の手書き入力に対応するインクオブジェクトに対して文字認識を行う。認識情報は、インクオブジェクトのプロパティとして格納することができる。こうした解析モジュールおよび認識モジュールの例は、ワシントン州レドモンドのMicrosoft CorporationのTablet PC Platform Software Development Kit(SDK)で入手可能である。
コンピュータ100は、リモートコンピュータ109など1または複数のリモートコンピュータへの論理接続を使用してネットワーク式環境で動作することができる。リモートコンピュータ109は、サーバ、ルータ、ネットワークPC、ピア装置、または他の一般のネットワークノードとすることができ、図1にはメモリ記憶装置111のみを示しているが、一般にコンピュータ100に関連して上述した多くの、またはすべての要素を含む。図1に示した論理接続は、ローカルエリアネットワーク(LAN)112、およびワイドエリアネットワーク(WAN)113を含む。こうしたネットワーキング環境は、オフィス、企業全体のコンピュータネットワーク、イントラネット、およびインターネットにおいて一般的であり、有線および無線の通信プロトコルを使用する。
LANネットワーキング環境で使用する場合、コンピュータ100は、ネットワークインタフェースまたはアダプタ114を介してローカルネットワーク112に接続される。WANネットワーキング環境で使用する場合、パーソナルコンピュータ100は一般に、モデム115、またはインターネットなどワイドエリアネットワーク113を介して通信を確立する他の手段を含む。モデム115は、内蔵型または外付けでもよく、シリアルポートインタフェース106を介してシステムバス130に接続される。ネットワーク環境では、パーソナルコンピュータ100に関連して示したプログラムモジュール、またはその一部をリモートメモリ記憶装置に格納することができる。
図示したネットワーク接続は、例示であり、コンピュータ間の通信リンクを確立する他の技術を使用できることは理解されよう。TCP/IP、Ethernet(登録商標)、FTP、HTTPなどよく知られている様々な任意のプロトコルの存在が想定され、システムは、クライアント−サーバ構造でユーザがWebベースのサーバからWebページを取り出すことができるように動作することができる。従来の様々なWebブラウザのうちの任意のものを使用してWebページ上でデータを表示し処理することができる。
上述の通り、本発明の1または複数の態様は、1または複数のコンピュータまたは他の装置によって実行される1または複数のプログラムモジュールなどのコンピュータ実行可能命令で実施することができる。一般にこれらのプログラムモジュールは、コンピュータまたは他の装置のプロセッサによって実行されたときに特定のタスクを実行する、あるいは特定の抽象データ型を実装するルーチン、プログラム、オブジェクト、コンポーネント、データ構造などを含むことができる。コンピュータ実行可能命令は、ハードディスク、光ディスク、取外し可能媒体、固体メモリ、RAMなどのコンピュータ可読媒体に格納することができる。様々な実施形態で、必要に応じてプログラムモジュールの機能を組み合わせる、あるいは分散させることができる。さらに機能は、集積回路、フィールドプログラマブルゲートアレイ(FPGA)など、ファームウェア、またはハードウェアの同等物で全体または一部実施することができる。
(挿入位置の状態の決定)
(ユーザインタフェースでの挿入位置の使用)
ほとんどのソフトウェアアプリケーションは、典型的には、ユーザから入力データを受け付けるある種の機能または構成要素を有する。グラフィカルユーザインタフェースを有するアプリケーションでは、これらの特徴または構成要素は、一般にコントロールと呼ばれる。従ってコントロールは、アクションを実行するためにユーザが操作できる表示オブジェクトでもよい。コントロールには、ユーザがポインティング装置の使用により「チェック」できるボタン、およびこれもまたポインティング装置を介して操作できるスクロールバーの2つの例がある。ウィンドウ表示ユーザインタフェースのコンテナウィンドウ(containing window)は、さらに別の種類のコントロールであり、これによってユーザは、ウィンドウ表示ユーザインタフェースの内容を操作することができる。コントロールの特徴および振舞いは、一般にコントロールをホストしているアプリケーションによって指定される。
ユーザが、例えば、キーボードなどでテキストデータを入力できる境界エリアは、一般にエディットコントロールと呼ばれる。当業者には明らかなように、異なる様々な種類のエディットコントロールがある。例えば、キーボードから文字データを受け付ける従来のエディットコントロールに加えて、Microsoft WINDOWS(登録商標)ブランドのXPオペレーティングシステムなどの一部のオペレーティングシステムによって、アプリケーションは、リッチエディットコントロールを含むことができる。リッチエディットコントロールは、入力テキスト、および挿入されたテキストに関連する様々な種類のメタデータを受け付ける。さらに、代わりに、またはそれに加えて、Microsoft WINDOWS(登録商標)ブランドのXP Tablet PC Versionオペレーティングシステムなどの一部のオペレーティングシステムによって、アプリケーションは、インクエディットコントロールを含むことができる。インクエディットコントロールは、一種のリッチエディットコントロールであり、これによってさらにユーザは、スタイラスタイプのポインティング装置を操作して、電子インクを作成することによって、コントロールにデータを入力することができる。インクエディットコントロールの中には、インクをテキストに変換できるものもあれば、テキストに変換することなく電子インクを処理できるものもある。
典型的には、アプリケーション、またはアプリケーションをホストしているシステム(オペレーティングシステムなど)は、入力装置によって作成されるデータがコントロールに挿入される挿入位置を提供する。例えば、アプリケーションは、挿入ポイントを表示して、入力装置によって作成されたデータを挿入する場所を示すことができる。挿入ポイントは、典型的には、点滅する縦線として表示される。挿入ポイントの場所は、従来、1または複数の入力装置によって制御される。従って、ユーザは、ペン166、マウス、トラックボール、ジョイスティック、タッチパッド、または他のポインティング装置を使用して、カーソルを所望のコントロール内の所望の位置に配置し、コントロールコマンドを稼動させて(「クリッキング」とも呼ばれる)挿入ポイントをその位置に配置することができる。スタイラス166を使用する一部のソフトウェアアプリケーションおよびオペレーティングシステムでは、ユーザは、単に所望の位置に相当する場所においてスタイラス166によりデジタイザ165に触れることによって、挿入ポイントをコントロールの境界エリア内に配置することができる。さらに、コントロール内の挿入ポイントの位置を、挿入ポイントでのデータの入力に応答して移動させることができる。例えば、キーボードからテキストデータを受け付けるコントロールでは、挿入ポイントを、自動的かつ連続的にコントロールに挿入される任意のテキストの端部に移動させることができる。
あるいは、挿入位置は、置換え可能なテキストの選択でもよい。より詳細には、ユーザがテキストまたは他の文字(スペース文字など)の選択を新しい入力データに置き換えたいとき、ユーザは、置き換えるテキスト全体を選択することができる。例えばユーザは、ポインティング装置に関連するコマンドボタンを稼動させ、次いで表示されたポインタが置き換えるテキスト上を通過するようにポインティング装置を移動させる(このプロセスは、テキストの選択の「ブロッキング」とも呼ばれる)。ユーザがデータをコントロールに入力すると、選択されたテキスト全体が新しく入力されたデータに置き換えられる。
挿入位置の状況を制御するソフトウェアアプリケーションまたはホスティングソフトウェアシステム(hosting software system)は、挿入位置の状況を他のソフトウェアプロセスに報告するレポーティング機能を含むことができる。例えば、Microsoft WINDOWS(登録商標)ブランドのXPオペレーティングシステムは、テキストサービスフレームワークを提供する。このオペレーティングシステム構成要素は、電子インク入力を受け取り、例えば変換されたテキストの元の電子インク入力など任意のメタデータをアプリケーションに組み込む機能など、テキストサービスフレームワークによって提供されたサービスを使用するよう構成されているソフトウェアアプリケーションに、強化された機能を提供する。しかし、テキストサービスフレームワークのサービスを使用するために、アプリケーションは、アプリケーション内の挿入ポイント「カレット」(または挿入ポイントを示すマーカ)のすべての動きを報告し、挿入ポイントがユーザに見えるかどうかを識別する必要がある。またアプリケーションは、アプリケーションによって維持されているエディットコントロールの任意のテキスト範囲の表示位置を報告できなければならない。テキストサービスフレームワークの一部の実装形態によれば、挿入位置状況情報(挿入ポイントカレットの場所の変更など)を含むイベントメッセージを、オペレーティングシステムがホストする他のアプリケーションに同報通信することができる。さらに、テキストサービスフレームワークの一部の実装形態は、他のアプリケーションからの問合せに応答して挿入位置状況情報を提供することができる。従ってテキストサービスフレームワークは、例えば、データ入力ユーザインタフェースを制御するオペレーティングシステムの別の構成要素を含めて、他のソフトウェアプロセスに挿入位置の状況を報告することができる。
同様に、Microsoft WINDOWS(登録商標)ブランドのオペレーティングシステムの一部のバージョンは、Microsoft Active Accessibility(登録商標)構成要素を含む。この構成要素は、例えば、従来のグラフィカルユーザインタフェースでは挿入位置を見ることができない可能性がある視覚障害者のためのユーザインタフェースに、挿入位置の状況を報告するために頻繁に使用される。テキストサービスフレームワーク構成要素と同様に、Microsoft Active Accessibility(登録商標)構成要素の様々な実装形態では、挿入位置状況情報を含むイベントメッセージを同報通信することができる。
代わりに、またはそれに加えて、一部のオペレーティングシステムまたは他のソフトウェアプロセスは、その情報についての直接の問合せに応答して様々な種類の挿入位置状況情報を提供することができる。例えば、一部のソフトウェアアプリケーションは、様々な種類の挿入位置状況情報をそこから取得できる1または複数のコントロールを含むことができる。こうした種類のコントロールには、Microsoft Internet Explorerブラウザアプリケーションおよび他の種類のソフトウェアアプリケーションでWebブラウジングにしばしば使用するMicrosoft「MSHTML」コントロールがある。例えば、この種類のコントロールに容易にアクセスして、コントロール内の挿入ポイントカレットの位置を取得することができる。
代わりに、またはそれに加えて、一部のソフトウェアアプリケーションは、アプリケーションプログラミングインタフェース(API)を使用して表示プロセスに挿入位置の現在の状況を知らせ、従って挿入位置をユーザに表示することができる。こうした種類のアプリケーションプログラミングインタフェースには、Microsoft WINDOWS(登録商標)ブランドのオペレーティングシステムが使用するWIN32アプリケーションプログラミングインタフェースがある。こうした種類のアプリケーションプログラミングインタフェースには他に、東アジア言語のテキスト入力にしばしば使用されるMicrosoft Input Method Editor(IME)インタフェースなどがある。この種類のアプリケーションプログラミングインタフェースを使用するソフトウェアアプリケーションは、例えば、インタフェースにアプリケーション内の挿入ポイントカレットの位置を提供することができる。
従って、1または複数のソフトウェアプロセスを使用して、挿入位置の状況を取得または受け取ることができる。さらに、挿入位置の状況情報がその挿入位置に関連する任意の特徴を含み得ることを理解されたい。例えば、挿入位置状況情報は、挿入位置の場所を識別する場所情報、挿入ポイントカレットが可視かどうかを示す可視情報、および挿入ポイントカレットの高さを示す高さ情報を含むことができる。さらに、挿入位置状況情報は、典型的には、挿入位置が配置されているコントロールを識別するコントロール情報を含むことができる。例えば、コントロール情報は、コントロールを含むアプリケーションユーザインタフェース、およびアプリケーションユーザインタフェース内のコントロールを識別する識別情報を指定することができる。また、挿入位置情報は、挿入位置を含むコントロールの種類、およびコントロールの状態に関連する情報を識別することもできる。以下でより詳しく説明するように、本発明の様々な実施形態による挿入位置制御ツールは、この挿入位置情報を監視し、挿入位置の特徴に基づいてデータ入力ユーザインタフェースなどのユーザインタフェースの動作を制御する。
(挿入位置制御ツール)
図2を参照すると、この図は、本発明の様々な実施形態で使用できる挿入位置制御ツール201を示している。挿入位置制御ツール201は、挿入位置追跡モジュール203、およびユーザインタフェース決定モジュール205を含む。挿入位置追跡モジュール203は、様々なソースから挿入位置に関する特徴情報を抽出し、この情報をユーザインタフェース決定モジュール205に提供する。ユーザインタフェース決定モジュール205は、取得した挿入位置の特徴(および以下でより詳しく説明する他の種類のイベントメッセージから受け取った情報)に基づいて、ユーザインタフェースアプリケーションプログラミングインタフェース207が提供するデータ入力ユーザインタフェースなどのユーザインタフェースの動作を制御する。当業者にはわかるように、ユーザインタフェース決定モジュール205からの命令に応答して、ユーザインタフェースアプリケーションプログラミングインタフェース207は、ディスプレイ107を介してユーザインタフェースを提供する。
上述したように、挿入位置追跡モジュール203は、オペレーティングシステム(または他の適切なソフトウェアシステム)の構成要素、アプリケーション内に含まれるコントロール、およびアプリケーションが使用するアプリケーションユーザインタフェースを含めて、様々なソースから挿入位置状況情報を取得し得る。例えば、図2に示した本発明の実施形態では、挿入位置追跡モジュール203は、テキストサービスフレームワークインタフェース209およびMSAAアプリケーションプログラミングインタフェース213から挿入位置状況情報を備えるイベントメッセージを受け取ることができる。さらに、挿入位置追跡モジュール203は、様々な種類の挿入位置状況情報を取得するために、MSHTMLコントロール211、Win32アプリケーションプログラミングインタフェース215、およびIME(Input Method Editor)インタフェース217に問合せを伝えることができる。
本発明の様々な実施形態によれば、挿入位置追跡モジュール203は、所与の状況において最も正確なソースからの挿入位置情報を使用することできる。例えば、挿入位置追跡モジュール203は、MSAA(Microsoft Active Accessibility)アプリケーションプログラミングインタフェース213およびWin32アプリケーションプログラミングインタフェース215の両方から挿入位置の現在の状況に関する特徴データを取得することができる。しかし、MSAAアプリケーションプログラミングインタフェース213およびWin32アプリケーションプログラミングインタフェース215は、挿入位置状況情報を提供するが、一部の状況では、アプリケーションプログラミングインタフェースの一方の精度が他方より高い場合がある。例えば、挿入ポイントカレットの多くの場所で、MSAAアプリケーションプログラミングインタフェース213が挿入ポイントの現在の状況に関するより正確な情報を提供し得る。しかし、挿入ポイントカレットが「リッチエディット」コントロールに配置されている場合、Win32アプリケーションプログラミングインタフェース215が挿入ポイントの現在の状況に関するより正確な情報を提供し得る。
さらに、アプリケーションプログラミングインタフェース213および215の一方から挿入位置メッセージによって提供される情報フォーマットは、他方のアプリケーションプログラミングインタフェースによって提供されるフォーマットより処理がより効率的となり得る。例えば、一部の状況では、挿入ポイントカレットの可視特性(すなわち挿入ポイントが可視であるかどうかを示すデータ)を、MSAAアプリケーションプログラミングインタフェース213が提供するデータフォーマットよりWin32アプリケーションプログラミングインタフェース215が提供するデータフォーマットから取得する方がより便利であり得る。さらに、挿入ポイントがウィンドウ無しコントロール内に配置されている場合、MSAAアプリケーションプログラミングインタフェース213が提供する特徴情報によって、挿入位置追跡モジュール203は、依然としてウィンドウ無しコントロールの境界長方形を決定することができる。従って、本発明の一部の実施形態では、挿入位置状況の特徴情報は、例えばMSAAアプリケーションプログラミングインタフェース213など、主に1つのソースから取得され、例えば、Win32アプリケーションプログラミングインタフェース215など、別のソースからの挿入位置状況情報は、第2のソースが第1のソースより高い精度を提供する状況の場合のバックアップチェックとして使用する。
本発明の例では、テキストサービスフレームワークは、典型的には、挿入位置状況情報の最も正確なソースである。従って、挿入位置追跡モジュール203がテキストサービスフレームワークインタフェース209から挿入位置状況情報を含むイベントメッセージを受信した場合、挿入位置追跡モジュール203は、この状況情報をユーザインタフェース決定モジュール205に提供する。しかし、オペレーティングシステムがテキストサービスフォーマットを使用しない場合、挿入位置追跡モジュール203は、挿入位置状況情報を含むMSAAアプリケーションプログラミングインタフェース213からのイベントメッセージを処理する。これらのイベントメッセージが、挿入位置はコントロールに配置されている(または、MSAAアプリケーションプログラミングインタフェース213自体からのイベントメッセージより正確な挿入位置状況情報を提供できるアプリケーションユーザインタフェースに関連付けられている)ことを示す場合、挿入位置追跡モジュール203は、このより正確な挿入位置状況情報を要求する。例えば、MSAAアプリケーションプログラミングインタフェース213からのイベントメッセージが、挿入ポイントカレットがMSHTMLコントロール211に配置されていることを示す場合、挿入位置追跡モジュール203は、MSAAアプリケーションプログラミングインタフェース213ではなく、MSHTMLコントロール211からの挿入位置状況情報を取得する。そうでない場合、挿入位置追跡モジュール203は、MSAAアプリケーションプログラミングインタフェース213からのイベントメッセージによって提供される挿入位置状況情報を使用し、該当する場合、Win32アプリケーションプログラミングインタフェース215やIMEインタフェース217など他のソースからより正確な挿入位置状況情報を取得することによってこの情報を補う。
さらに他のアプリケーションプロセスまたはソースを使用して、挿入位置の現在の状況に関する挿入位置特徴情報を提供できることに注意されたい。例えば、Apple MacintoshベースのシステムまたはUnix(登録商標)ベースのシステムは、異なるアプリケーションプロセスを使用して、挿入位置の現在の状況に関する挿入位置特徴情報を監視し、提供する。従って、本発明の様々な実施形態は、これら代替のアプリケーションプロセスを、テキストサービスフレームワークインタフェース209、MSHTMLコントロール211、MSAAアプリケーションプログラミングインタフェース213、Win32アプリケーションプログラミングインタフェース215、およびIMEインタフェース217の代わりに、またはそれに加えて使用することができる。
理想的には、挿入位置追跡モジュール203は、挿入位置の状況に関する最新の特徴情報をユーザインタフェース決定モジュール205に引き続き提供しながら、受信したすべての挿入位置メッセージに含まれる特徴情報を分析するのに十分に速く、挿入位置情報を備える入メッセージを処理できる。しかし、実際問題として、メッセージの発行が速すぎて、挿入位置追跡モジュール203は、その挿入位置特徴情報をリアルタイムベースに監視することができない。従って、本発明の様々な実施形態は、図3に示した挿入位置追跡モジュール203を使用することができる。次に挿入位置追跡モジュール203のこの特定の実施形態の動作について、図4に示したフロー図との関連で説明する。
ステップ401で始まり、挿入位置追跡モジュール203は、最初にしきい値タイマを開始する。このしきい値タイマは、例えば、100ミリ秒の期間とすることができる。以下の説明からわかるように、しきい値タイマは、例えばMSAAアプリケーションプログラミングインタフェース213からのイベントメッセージなど、挿入位置追跡モジュール203が挿入位置状況情報を含む受信したメッセージの特徴をどのくらいの頻度でサンプリングするかを決定する。次に、ステップ403で、検索スレッド301は、MSAAアプリケーションプログラミングインタフェース213から挿入位置メッセージを取り出す(または受け取る)。ステップ405で、検索スレッド301は、受信した挿入位置メッセージをイベントメッセージキュー303に入れる。
ステップ407で、タイミングスレッド305は、しきい値時間が満期になっているかどうかを決定する。しきい値時間が満期になった場合、検索スレッド301は、引き続き挿入位置メッセージを受信し、受信したメッセージおよびイベントメッセージキュー303を格納する。しかし、タイミングスレッド305は、しきい値時間が満期になっていると判定した場合、ステップ409で、タイミングスレッド305は、最後に格納された挿入位置メッセージをイベントメッセージキュー303から取り出す。次に、挿入位置追跡モジュール203は、取り出された挿入位置メッセージに含まれる関連する特徴情報を分析し、その情報をユーザインタフェース決定モジュール205に提供する。従って、受信した各挿入位置メッセージからの特徴情報を分析しようと試みることより、挿入位置追跡モジュール203は、最後に受信された挿入位置メッセージ内の特徴情報を定期的に分析する。入ってくる挿入位置メッセージの抽出および記憶は、格納された挿入位置メッセージのサンプリングと同じプロセスの一部として説明しているが、タイミングスレッド305は、本発明の様々な実施形態で検索スレッド301と異なっていてよいことに注意されたい。スレッドが異なる場合、検索スレッド301は、タイミングスレッド305がイベントキュー303から格納された挿入位置メッセージをサンプリングするのと同時に、入ってくる挿入位置メッセージを引き続き受信し、格納することができる。
本発明の様々な実施形態では、挿入位置の状況の特定の変化によって、キューイングプロセスが一時的に中断することがある。例えば、本発明の一部の実施形態では、データ入力フォーカスが1つのユーザインタフェースから別のユーザインタフェースに変わったときに、キューイングプロセスが一時的に中断する。キューイングプロセスのこの一時的な中断によって、データ入力フォーカスを失ったユーザインタフェースに関してはデータ入力ユーザインタフェースパネルを直ちに非表示にし、データ入力フォーカスを取得したユーザインタフェースに関してはデータ入力ユーザインタフェースパネルを直ちに表示できるようになる。
また、本発明の一部の実施形態では、スレッド301および305の一方または両方は、「プロセス中」スレッドであり得る。より詳細には、スレッドは、挿入位置が配置されているユーザインタフェースの提供も行うソフトウェアアプリケーションプロセスによって提供され得る。当業者にはわかるように、スレッドは、アプリケーションプロセス自体の一部なので、プロセス中スレッドの使用によって、スレッドがアプリケーションプロセスによって提供された挿入位置の状況に関する特徴情報をより容易に変換できるようになる。あるいは、スレッド301および305の一方または両方は、挿入位置に関してユーザインタフェースを維持するアプリケーションプロセスからは独立した「プロセス外」スレッドであり得る。例えば、スレッドの一方または両方は、オペレーティングシステムなど、アプリケーションをホストするソフトウェアシステムによって提供することができる。当業者にはわかるように、この種類のスレッドは、アプリケーションの動作を管理するルールによって制約されないので、プロセス外スレッドの使用によって、動作の自由度がより高くなる。さらに、この種類のスレッドは、アプリケーションが偶発的に終了した場合、突然動作を停止することがない。
本発明の他の実施形態は、異なる技術を使用して一連の挿入位置メッセージに含まれる特徴情報を効率良く捕捉できることを理解されたい。例えば、本発明の一部の実施形態では、挿入位置追跡モジュール203は、1または複数のスレッドを使用して、受信された各挿入位置メッセージに含まれる特徴情報を処理することができる。挿入位置メッセージの処理中にスレッドが遅れ始めた場合、スレッドは、未処理の挿入位置メッセージの処理を停止して、挿入位置の現在の状況に追いつくまで、最後に受信された挿入位置メッセージのみを処理する。あるいは、本発明の実施形態の中には、挿入位置メッセージによって提供される特徴情報の変化を単に監視するだけのものもある。例えば、挿入ポイントカレットの状況に関する一連のメッセージが大量にある場合、典型的には、位置情報のみが変わり、挿入ポイントカレットが配置されているコントロールまたはユーザインタフェースに関連する特徴情報は一定のままである。位置情報は、挿入位置追跡モジュール203によって容易に処理することができる。コントロールまたはユーザインタフェースに関する特徴情報への変更は、かなり大きい処理オーバーヘッドを要するが、これらの変更は、比較的まれにしか起こらないため、これらの特徴の変化に気づいたときにのみ処理される。さらに、本発明の一部の実施形態では、1群の挿入位置メッセージを一度に処理して、メッセージのイベント順および最後に受信されたメッセージの特徴に基づいて、挿入位置の現在の状況を識別することができる。当然、さらに他の技術を使用して、挿入位置メッセージから挿入位置特徴情報を取得することができる。
上述したように、インタフェース決定モジュール205は、挿入位置メッセージから取得した挿入位置特徴情報を使用して、データ入力ユーザインタフェースなどユーザインタフェースの動作を制御する。例えば、挿入位置特徴情報は、X軸およびY軸において挿入ポイントカレットの場所を提供することができる。ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、挿入ポイントカレットの場所の近くにユーザインタフェースを配置するよう指示することができる。ユーザインタフェースの動作を制御するための挿入位置特徴情報のさらに別のアプリケーションについて、以下でより詳しく説明する。
挿入位置メッセージの監視に加えて、挿入位置追跡モジュール203は、本発明の様々な実施形態に従って他の種類のメッセージを監視することもできる。例えば、本発明の一部の実施形態では、挿入位置追跡モジュール203は、アプリケーションの入力フォーカスがいつ変わるかを示すフォーカス変更イベントメッセージの状況を監視することができる。ユーザインタフェース決定モジュール205は、フォーカス変更情報を使用して、例えば、ユーザインタフェースの可視性を変更することができる。さらに、ある状況では、挿入位置は、もはや入力フォーカスを有していないユーザインタフェースに配置されていることを示す挿入位置追跡メッセージが誤って生成され続けることがある。従って、挿入位置追跡モジュール203は、フォーカス変更イベントメッセージによって提供される情報を使用して、誤った挿入位置特徴情報を取り除くことができる。
本発明の様々な実施形態では、代わりに、またはそれに加えて、アプリケーションユーザインタフェースの境界での移動プロセスまたはサイズ変更プロセス(ウィンドウ表示ユーザインタフェースの移動またはサイズ変更など)の開始および終了を監視することができる。本発明の一部の実施形態では、例えば、挿入位置を含むアプリケーションユーザインタフェースが移動またはサイズ変更されている間に、ツール201が、挿入位置の場所に対するデータ入力ユーザインタフェースの場所を維持するのに、十分に速く挿入位置メッセージからの特徴情報を処理するのが難しい場合がある。従って、ツール201は、アプリケーションユーザインタフェースの移動またはサイズ変更の開始を示すイベントメッセージに気づき、それに応答してデータ入力ユーザインタフェースの表示を停止する。ツール201は、アプリケーションユーザインタフェースの移動またはサイズ変更が終了したことを示すイベントメッセージに気づくと、データ入力ユーザインタフェースを再表示することができる。
さらに、本発明の一部の実施形態は、アプリケーションユーザインタフェースのメニューの状態、または挿入位置の状態に影響は与えるが、挿入位置メッセージの挿入位置の特徴の変化を引き起こさないユーザインタフェース内の他の論理動作を監視することができる。例えば、アプリケーションユーザインタフェースの固定メニューが稼動された場合、挿入ポイントは、そのメニューに引き続き表示され得る。しかし、アプリケーションユーザインタフェースは、挿入ポイントが固定メニューにある間入力データを受け付けない。従って、ユーザインタフェース決定モジュール205は、挿入ポイントが固定メニューに配置されている間、データ入力パネルインタフェースの表示を停止することができる。当然、本発明のさらに別の実施形態では、アプリケーションまたはアプリケーションをホストするシステムの状況に関するさらに他のイベントメッセージを監視し、それに応答することができる。
(データ入力ユーザインタフェースの振舞い)
(概要)
上述したように、本発明の様々な実施形態による挿入位置追跡ツールを使用して、データ入力ユーザインタフェースの任意の特徴を制御することができる。例えば、本発明の一部の実施形態によるツールは、挿入位置の状況に基づいて、データ入力パネルなどのユーザインタフェースの位置および外観を制御することができる。本発明の様々な環境によるこうした特定の特徴の実装形態について、以下で詳しく説明する。
(ユーザインタフェースの配置)
本発明の様々な実施形態による挿入位置制御ツール201の1つの機能は、挿入位置の位置特徴に基づいて作業スペースのどこかに、データ入力パネルなどのデータ入力グラフィカルユーザインタフェースを配置する能力である。本発明の一部の実施形態では、作業スペースは、ユーザに表示される任意のスペースでよい。あるいは、作業スペースは、データ入力グラフィカルユーザインタフェースがユーザから入力データを受け取ることができる任意のスペースでもよい。例えば、データ入力グラフィカルユーザインタフェースがデジタイザ165のある面にわたるスタイラス166の動きを介して入力データを受け取る場合、作業スペースは、スタイラス166の動きを検出することができるその面の部分に対応するスペースとすることができる。
従って、本発明の一部の実施形態による挿入位置制御ツール201は、ユーザインタフェースからのデータが入力されるコントロールの近くにデータ入力グラフィカルユーザインタフェースを配置することができる。例えば、コントロールがエディットコントロールである場合、挿入位置制御ツール201のいくつかの実施形態は、データ入力ユーザインタフェースをエディットコントロールの近くに配置することができ、その結果ユーザは、ユーザインタフェースおよびコントロールへのデータの入力の両方を同時に見ることができる。この機能は、例えば、ユーザがデータ入力ユーザインタフェースを使用してフォームなど広いエリアにわたって広がる様々なエディットコントロールにデータを入力しているときに特に有用である。
図5は、アプリケーションユーザインタフェースのコントロールへのデータ入力に使用できる1つの種類のデータ入力グラフィカルユーザインタフェースを示している。データエントリグラフィカルユーザインタフェースは、本明細書ではデータ入力パネル501と呼ばれ、境界503を含む。境界503の内側が書き込み面505である。当業者にはわかるように、ユーザは、スタイラス166など、適切なポインティング装置を使用して電子インクを面505上に書き込むことができる。電子インクを、アプリケーションのユーザインタフェースへの挿入前に、テキストとして認識することができる。または、電子インクを、電子インクの形態でアプリケーションに直接入力することができる。(本発明の実施形態による一部のデータ入力パネルでは、書き込み面は、スタイラスからの接触に応答して電子インクを生成するだけの場合がある)。本発明の様々な実施形態では、スタイラスによって示された特定のジェスチャを、代わりにある機能を実行するコマンドとして認識する場合もある。データ入力パネル501は、送信ボタン507、複数のコントロールボタン509、および補助インタフェースボタン511および513も含む。
ユーザが書き込み面505上に電子インクを書き込んだ後、データ入力パネル501は、所定の期間の後、電子インクをテキストに変換する。しかし、ユーザは、認識プロセスのスピードアップを望む場合、ポインティング装置を使用して送信ボタン507を活性化させてもよい。テキストは、電子インクから認識されると、一般にアプリケーションの挿入位置に挿入される。認識されたテキストを挿入位置に挿入することに加えて、ユーザは、コントロールボタン509を使用して、文字以外のアクションも挿入位置で実施することができる。さらに、コントロールボタン509を使用して、ユーザは、挿入ポイントを既存のテキストにわたって前方または後方に移動させ、削除し、バックスペースし、改行を作成することができる。
以下でより詳しく説明するように、補助インタフェースボタン511および513の活性化によって、データ入力パネル501に、それぞれ数字および記号を含む補助ソフトキーボードを表示するよう命令し、クローズボタン515を活性化させることによってデータ入力パネル501を閉じる。データ入力パネル501は、面選択ボタン517および519も含む。以下でも詳しく説明するように、面選択ボタンによってユーザは、データ入力パネル501によって表示されるデータ入力面の間を切り換えることができる。図5で、書き込み面ボタン517が活性化されると、データ入力パネル501に、書き込み面505を表示するよう促す。
図6Aは、アプリケーションのグラフィカルユーザインタフェースの一例を示している。この図からわかるように、アプリケーションのグラフィカルユーザインタフェースが表示される作業スペースは、境界601を有する。上述したように、境界601は表示エリアの縁とすることができる。あるいは境界601は、データ入力ユーザインタフェースの入力データを受け付けることができるエリアに対応する表示スペースの縁とすることができる。これもまたこの図からわかるように、アプリケーションのユーザインタフェースは、3つのエディットコントロール603〜607を含み、それぞれは境界ボックスによって境界が定められている。各境界ボックスの下には、それぞれ関連付けられているエディットコントロール603〜607に入力すべきデータを識別するタイトル609〜613がある。従って、図6Aで示すアプリケーションのユーザインタフェースは、例えばユーザに個人情報を要求するコンピュータ上にレンダリングされたフォームでもよい。
ユーザは、エディットコントロールにデータを挿入したいとき、最初に、例えばスタイラスやマウスなどのポインティング装置を使用してエディットコントロールに挿入ポイントを設定する。次に図6Bを参照すると、例えば、エディットコントロール603にデータを挿入することを望んでいるユーザは、エディットコントロール603の境界内に挿入ポイント615を設定する。典型的には、エディットコントロール内に挿入ポイントを配置することによって、コンピュータのオペレーティングシステムが入力フォーカスをそのエディットコントロールにシフトする。つまり、オペレーティングシステムは、ユーザによる将来のデータ入力がそのエディットコントロールに引き渡されることを認識する。詳しく上述したように、挿入位置追跡モジュール203は、挿入ポイント615の状況の変化を検出する。
より詳細には、挿入位置追跡モジュール203は、コントロール605を提供するアプリケーションが今フォーカスしていることを示すフォーカス変更メッセージを検出する。さらに、挿入位置追跡モジュール203は、挿入ポイント615がコントロール605内にあり、挿入ポイントの場所が作業スペース601内(またはコントロール605内)に配置されていると判定する。挿入ポイントの状況の決定に応答して、本発明の様々な実施形態によるユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データをエディットコントロール605に入力するために、データ入力パネル501を表示するよう指示する。以下で詳しく説明するように、共有グラフィカルユーザインタフェースの特徴は、ユーザインタフェースを制御するオブジェクトによって提供されるデータに応じて異なる。
本発明の一部の実施形態では、ユーザインタフェース決定モジュール205は、ユーザが挿入位置をエディットコントロール内に配置するときはいつでも、データ入力パネル501を表示するようユーザインタフェースアプリケーションプログラミングインタフェース207に指示することができる。しかし、本発明の別の実施形態では、ユーザインタフェース決定モジュール205は、ユーザがスタイラスでコントロール内に挿入位置を配置したことのみに応答して、データ入力パネル501を表示するようユーザインタフェースアプリケーションプログラミングインタフェース207に指示することができる。挿入ポイント615がスタイラスのポインティング装置で配置されたときのみデータ入力パネル501を提供することによって、ユーザインタフェース決定モジュール205は、ユーザがキーボードやマウスなどの異なるデータ入力ツールを使用しているときに、データ入力パネル501が表示されないようにする。従って、データ入力パネル501は、実際にデータをコントロールに入力するのに必要なときのみに表示される。
挿入位置追跡モジュール203が、エディットコントロール605が入力フォーカスを受けていると判定したとき、ユーザインタフェース決定モジュール205は、エディットコントロール605に対して特定の位置にデータ入力パネル501を表示するようにユーザインタフェースアプリケーションプログラミングインタフェース207に指示することができる。例えば、ユーザインタフェース決定モジュール205は、データ入力パネル501の最も近い水平方向の境界の縁と、エディットコントロール605の最も近い水平方向の境界の縁との間の垂直方向のオフセットを指定することができる。同様に、ユーザインタフェース決定モジュール205は、データ入力パネル501の最も近い垂直方向の境界の縁と、エディットコントロール605の最も近い垂直方向の境界の縁との間の水平方向のオフセットを指定することができる。本発明の一部の実施形態では、ユーザインタフェース決定モジュール205は、データ入力パネル501の高さおよび幅を指定して、関連のエディットコントロールの近くにあるままで所定の作業スペース内に確実に収まるようにすることさえできる。
実施形態の例では、スペースが作業スペースの境界601内で使用可能な場合、ユーザインタフェース決定モジュール205は、データ入力パネル501をエディットコントロール605の境界の下側に、右側にシフトさせて表示するようユーザインタフェースアプリケーションプログラミングインタフェース207に指示する。例えば、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力パネル501の上側の境界を、エディットコントロール605の下側の境界の0.25インチ(0.635cm)に相当するピクセル下方に配置するよう指図することができる。同様に、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力パネル501の左側の垂直方向の境界をエディットコントロール605の左側の垂直方向の境界の1インチ(2.54cm)の1/16に相当するピクセル右方に配置するように指図することができる。
この位置構成は、特に、アプリケーションが様々なエディットコントロールを備えるフォームを表示しているときに便利である。データ入力パネル501をエディットコントロール603の下側に、わずかに右側にシフトさせて配置することにより、データ入力パネル501は、エディットコントロール605の近くに配置されたまま、しかし、エディットコントロール605に入力されるテキストを見るユーザの視界を妨げることはない。また、この配置によって、ユーザは、エディットコントロール605の少なくとも一部をエディットコントロール605のすぐ下で見ることができ、その結果ユーザは、エディットコントロール605へのデータ入力を忘れることもない。さらに、エディットコントロール605は部分的に可視であり、その結果ユーザは、スタイラスを使用して入力フォーカスをエディットコントロール605に移動させコントロールをターゲットにすることができる。さらに、エディットコントロール605に関連付けられたタイトル609が左寄せの場合、データ入力パネル501を右側にシフトさせた位置に配置することによって、ユーザは、タイトル609の少なくとも最初の数文字を見ることができ、従って、ユーザがどのデータをエディットコントロール605に入力すべきかを覚えておくのを助ける。
データ入力パネル501が表示されると、ユーザは、データ入力パネル501の書き込み面を使用して、テキストをエディットコントロール605に入力することができる。例えば、図6Cに示すように、ユーザは、名前「John Doe」を電子インク617で書き込み面に手書きするかもしれない。所定の時間の後、またはユーザが送信ボタン507を活性化させた場合、データ入力パネル501は、インク617からテキストを認識する。次いで、図6Dに示すように、データ入力パネル501は、認識されたテキスト619をエディットコントロール605に挿入する。
本発明の様々な実施形態で、ユーザインタフェース決定モジュール205は、データ入力パネル501のデフォルトの位置を使用すると関連するエディットコントロールを隠さざるを得ない状況を補償することさえできる。例えば、図7に示すように、データ入力パネル501を使用してエディットコントロール607にテキストを挿入している。エディットコントロール607は作業スペースの境界601のすぐ上にあるため、データ入力パネル501をエディットコントロール607の下に挿入することはできない。この状況で、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力パネル501をエディットコントロール607の上側に、右側にシフトさせた位置にレンダリングするよう指示することができる。より具体的には、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に垂直方向の負のオフセットを提供し、それによってデータ入力パネル501はエディットコントロール607の上側に配置されるようになる。
同様に、データ入力パネル501をエディットコントロールの右側にシフトさせて表示する余裕が十分ない場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力パネル501をエディットコントロールの左側にシフトさせてレンダリングするよう指示することができる。例えば、図8に示すように、エディットコントロール605は、作業スペースの境界601の垂直方向部分に近すぎて、データ入力パネル501をエディットコントロール605の右側にシフトさせて表示することができない。代わりに、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力パネル501をエディットコントロール605の左側にシフトさせて配置するよう指示する。つまり、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に水平方向の負のオフセット値を提供する。従って、データ入力パネル501は、背後にあるエディットコントロール605を完全には隠さない。また、アプリケーションがそのユーザインタフェースの右辺に沿ってエディットコントロールを含んでいる場合、これらのエディットコントロールの右寄せされたタイトルは、本発明のこれらの実施形態によるデータ入力パネル501を使用するユーザには、依然として部分的に可視である。同様に、データ入力パネル501をエディットコントロールの下側に、左側にシフトさせて表示する余裕が十分ない場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、図9に示すように、データ入力パネル501をエディットコントロールの上側に、左側にシフトさせて表示するよう指示することができる。
場合によっては、ユーザは、データ入力パネル501を使用して、データをマルチラインエディットコントロールに入力したいことがある。本発明の様々な実施形態によれば、データ入力パネル501を、上記のシングルラインエディットコントロールを基準にして配置したのと同じように、マルチラインエディットコントロールを基準にして配置することができる。しかし、マルチラインエディットコントロールが大きすぎてデータ入力パネル501をマルチラインエディットコントロールの上側または下側に配置できない場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力パネル501をエディットコントロール自体の中に配置するよう指示することができる。例えば、挿入ポイント615がマルチラインエディットコントロールの上半分(あるいは作業スペースの上半分)に配置されている場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力パネル501をマルチラインエディットコントロールの一番下の位置(または作業スペース内の一番下の使用可能な位置)に配置するよう指示することができる。
同様に、挿入ポイント615がマルチラインエディットコントロールの下半分(または作業スペースの下半分)に配置されている場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力パネル501をマルチラインエディットコントロールの一番上の位置または作業スペース内の一番上の使用可能な位置に配置するよう指示することができる。しかし、当業者にはわかるように、ユーザを混乱させる、あるいはユーザの作業の流れおよびデータの入力を妨害するのを避けるために、使用中、データ入力パネル501の動きを最小限に抑えることが有利である。従って、本発明の様々な実施形態では、ユーザが挿入ポイント615をマルチラインエディットコントロールの上半分から下半分に、またはその逆に移動させたときだけデータ入力パネル501を配置し直す。
(ユーザインタフェースの外観)
データ入力グラフィカルユーザインタフェースのサイズおよび位置を指定することに加えて、本発明の様々な実施形態によるユーザインタフェース決定モジュール205は、データ入力グラフィカルユーザインタフェースの外観を指定することもできる。従って、本発明の様々な実施形態によるユーザインタフェース決定モジュール205は、表示されたデータ入力パネル501に含まれる特徴を決定することができる。
ここで図5に戻ると、データ入力パネル501は、上述したように、異なる2つ以上のデータ入力面を提供することができる。データ入力パネル501は、その図に示すように書き込み面505を表示しているとき、書き込み面505にわたるスタイラスの動きに対応する電子インクを生成する。一方、データ入力パネル501は、キーボード面を表示している場合、ソフトキーボード上で活性化される各キーに対応するテキストの文字を生成する。上述したように、ユーザは、面ボタン517,519を活性化させることによってこれらの面の間を前後に切り換えることができる。しかし、本発明の様々な実施形態では、ユーザインタフェース決定モジュール205は、入力フォーカスがコントロールにシフトされたときにデータ入力パネル501が最初に特定の面を表示することを指定することができる。
例えば、アプリケーションは、パスワードや製品の型式番号など、数字および文字のランダムな組合せを受け取るエディットコントロールを含むことができる。この種のデータでは、書き込み面505は、データを入力するのに最適な面ではないことがある。多くの手書き認識器では、ランダムな文字を認識することは困難である。さらに、多くのパスワードエディットコントロールは、そのデータを正確には表示せず、代わりに「*」など単一の文字のみを表示して、傍観者があるユーザのパスワードをうっかり見ることを防ぐようにする。従って、ユーザの手書きが誤って認識された場合、ユーザは、認識結果を見てどの文字が誤って認識されているかを判断することさえできない。本発明の様々な実施形態では、挿入位置追跡モジュール203が、挿入位置はこの種類のコントロール内に配置されていると判定した場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、最初にキーボード面を表示するよう指示することができる。キーボード面は、ユーザに、各種数字および文字を入力するのにより信頼性の高い技術を提供するためである。
書き込み面505またはキーボード面の最初の表示を指定することに加えて、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207によって表示できる任意の面の最初の表示または永続的な表示を指定することができる。例えば、図10は、アジア言語ユーザが使用するデータ入力パネル1001を示す。単一エリアを備える書き込み面505の代わりに、このデータ入力パネル1001の書き込み面は、ユーザが単一のアジア言語文字を各エリア1003に書き込むことができるように複数の書き込みエリア1003を同時に表示する。従って、挿入位置追跡モジュール203が、挿入位置はデータをアジア言語文字の形で受け取るように構成されているエディットコントロールに配置されていることを検出した場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207がアジア言語のデータ入力パネル1001を最初に表示するよう指定することができる。ラテン語書き込み面505に加えて、アジア言語書き込み面をデータ入力パネル501に含めることができることに注意されたい。従って、本発明の一部の実施形態では、ユーザは、アジア言語書き込みエリア1003、ラテン語書き込み面505、およびキーボード面の間で切り換えることができる。
さらに別の実施形態では、任意の数の様々な特化された面を使用することができる。例えば、挿入位置追跡モジュール203が、挿入位置はURLアドレスを受け取るように構成されているブラウザのエディットコントロール内にあることを検出した場合、ユーザインタフェース決定モジュール205は、文字列「www.」、「.com」、「.net」、「.org」、および「.gov」のキーを含むソフトキーボードの表示を指定することができる。同様に、ユーザインタフェース決定モジュール205は、例えばデータ入力パネル501がパスワードや部品の型式番号のランダムな文字をよりよく認識するのを助けるために、ラテン語ユーザ用の分割された書き込み面を有する面の表示を指定することができる。また、本発明の様々な実施形態によるユーザインタフェース決定モジュール205は、ユーザインタフェースが電子インクをテキストに変換することなく電子インクを集める面を含むことを指定することもできる。この種類の面は、例えばユーザの原本の署名を捕捉するときに有用となり得る。
本発明の様々な実施形態で使用するデータ入力ユーザインタフェースは、所望の任意のソースから実施できることに注意されたい。例えば、ユーザインタフェースの異なる面は、ユーザインタフェース決定モジュールからの指示に応答してユーザインタフェースをレンダリングするユーザインタフェースアプリケーションプログラミングインタフェースによって提供することができる。あるいは、ユーザインタフェース決定モジュールは、1または複数の面を、ユーザインタフェースアプリケーションプログラミングインタフェースに提供することができる。さらに、アプリケーションは、1または複数の面をユーザインタフェース決定モジュールに提供し、その面をユーザインタフェースアプリケーションプログラミングインタフェースに提供することができる。本発明の一部の実施形態では、ユーザインタフェースアプリケーションプログラミングインタフェースは、ユーザインタフェース自体をインスタンス化する実行可能構成要素とすることができる。さらに、本発明の一部の実施形態では、ユーザインタフェースアプリケーションプログラミングインタフェースをまったく除外することができる。こうした実施形態では、ユーザインタフェース決定モジュールは、データ入力グラフィカルユーザインタフェース自体をレンダリングすることができる。
インタフェース面の表示を指定することに加えて、本発明の様々な実施形態では、挿入位置制御ツール201は、データ入力ユーザインタフェースが任意の特徴を最初に、または永続的に表示することを指定することができる。例えば、データ入力パネル501は、補助キーボードボタン511および513を含む。補助キーボードボタン511が活性化すると、データ入力パネル501は、図11に示すように、数字0〜9、「,」文字、および「.」文字を含む補助キーボード1101を表示する。同様に、補助キーボードボタン517が活性化すると、データ入力パネル501は、図12に示すように、様々な記号のキーを含む補助記号キーボード1201を表示する。本発明の様々な実施形態では、挿入位置制御ツール201は、データ入力パネル501が挿入位置の状況に応じてこれらのボタン、またはユーザに便利となり得る任意の追加の補助表示を表示または非表示できるようにすることを指定することができる。
さらに、本発明の様々な実施形態による挿入位置制御ツール201は、単にデータ入力ユーザインタフェース内の構成要素の構成を定義するだけとすることができる。例えば、図13に示すデータ入力パネル501の特徴は、図5に示すデータ入力パネル501のものと逆である。典型的には、この構成は、右手または左手で書き込む際のユーザの好みに基づく。ただし、この構成は、ユーザインタフェース決定モジュール205によって指定することもできる。さらに、挿入位置制御ツール201は、挿入位置の検出された状況に基づいて、データ入力パネルの手書きの認識にバイアスをかけて特定のコントロールの認識の精度を向上させるために疑似事実または他のヒューリスティックスの使用を指定することができる。例えば、挿入位置追跡モジュール203が、挿入位置がユーザの年齢を受け取るコントロール内に配置されていると判定した場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207が、入力電子インクを文字ではなく数字として認識するようにデータ入力パネルにバイアスをかける疑似事実を使用することを指定することができる。
本発明の一部の実施形態では、ユーザインタフェース決定モジュール205は、ユーザに表示するために、インタフェースの一部または全体をユーザインタフェースアプリケーションプログラミングインタフェース207に提供することに注意されたい。あるいは、挿入位置制御ツール201は、データ入力ユーザインタフェースの特徴をユーザインタフェースアプリケーションプログラミングインタフェース207に提供することができる。つまり、ユーザインタフェース決定モジュール205は、所定の値をユーザインタフェースアプリケーションプログラミングインタフェース207に提供し、ユーザインタフェースアプリケーションプログラミングインタフェース207は、これらの特徴に基づいて以前に格納されたユーザインタフェースをレンダリングする。
例えば、本発明の一部の実施形態では、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に高さ、幅、水平方向のオフセット、垂直方向のオフセットの値を提供することができる。上述したように、ユーザインタフェースアプリケーションプログラミングインタフェース207は、水平方向および垂直方向のオフセット値をユーザインタフェースアプリケーションプログラミングインタフェース207に提供して、挿入ポイントを含むエディットコントロールに対するデータ入力パネルの場所を定義することができる。水平方向のオフセット値のデフォルトは、例えば、1インチ(2.54cm)の1/16に相当するピクセルとすることができ、垂直方向のオフセット値のデフォルトは、0.25インチ(0.635cm)に相当するピクセルとすることができる。高さの値は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、テキストパネルユーザインタフェースの高さを提供する。本発明の様々な実施形態では、様々な画面解像度に適したパネルの一貫した外観サイズを維持するために、高さプロパティのデフォルト値を、例えば、96dpiのディスプレイでは157ピクセル、120dpiのディスプレイでは196.25ピクセル、133dpiのディスプレイでは217.51ピクセルとすることができる。同様に、幅の値は、ユーザインタフェースアプリケーションプログラミングインタフェース207にデータ入力パネルの幅を提供する。本発明の一部の実施形態では、様々な画面解像度に適したパネルの一貫した外観サイズを維持するために、幅プロパティのデフォルトの値を、96dpiのディスプレイでは570ピクセル、120dpiのディスプレイでは712.5ピクセル、133dpiのディスプレイでは789.7ピクセルとすることができる。
ユーザインタフェース決定モジュール205は、さらに、ユーザインタフェースアプリケーションプログラミングインタフェース207にデータ入力パネルの左縁の水平方向の位置を提供する左側の値、およびユーザインタフェースアプリケーションプログラミングインタフェース207にデータ入力パネルの上縁の垂直方向の位置を提供する上側の値を含むことができる。また、ユーザインタフェース決定モジュール205は、入力パネルの可視状態を取り出す、あるいは設定する可視プロパティを含むこともできる。従って、挿入位置追跡モジュール203が、挿入ポイントはアプリケーションが入力データを受け取らない可能性があるような状況(例えば、挿入ポイントが前に固定されたメニューリスト内に配置されているなど)であると判定した場合、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207が入力パネルを非表示するように可視値を変更することができる。
上述したプロパティに加えて、本発明の様々な実施形態による挿入位置制御ツール201は、挿入位置の状況に基づいてデータ入力グラフィカルユーザインタフェースの特徴を設定する任意の所望のプロパティを指定することができることを理解されたい。例えば、挿入位置追跡モジュール203は、特定の認識辞書、入力された手書きの認識にバイアスをかける疑似事実ヒューリスティック、一般的な、または特定のコントロールに挿入されるテキストを認識するための特定の認識エンジンの使用、あるいはユーザが新しい手書きを入力するのをやめるのを待つことなくユーザインタフェースが入力された手書きのバックグラウンド認識を行うようにする命令など、ユーザインタフェースに1または複数の認識コンテキストの特徴の使用を指定することができる。さらに、挿入位置追跡モジュール203は、ユーザインタフェースに、認識されたテキストを戻す割り当てられた認識タイムアウト値、特定の電子インクの濃さまたは色を使用させる、またキーボード面の所望のキーを強調表示させるプロパティを指定することができる。挿入位置制御ツール201によって指定されたプロパティまたはメソッドによって、さらに入力パネルは、インクを直接コントロールに挿入できる、またはすでにコントロールに挿入されているインクにアクセスできるようになる。また、挿入位置制御ツール201は、データ入力パネルに複数行を書き込み面に表示させる、またはユーザが自発的にデータ入力パネルを閉じるかどうかを決定することもできる。
また、上述したプロパティに加えて、本発明の様々な実施形態による挿入位置制御ツール201は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、様々なアクションを実行するよう指示することができる。例えば、挿入位置制御ツール201は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、未処理の任意の手書きに対して直ちに手書き認識を行い、認識結果を、挿入位置を含むエディットコントロールに送信するよう指示することができる。挿入位置制御ツール201は、例えば、挿入位置追跡モジュール203が、挿入位置がその既存のコントロールから動かされたことを検出したとき、または挿入位置追跡モジュール203がアプリケーションはシャットダウンしていることを検出したときに、このアクションを使用することができる。
さらに、挿入位置制御ツール201が、Microsoft WINDOWS(登録商標)ブランドのXP Tablet PC Versionオペレーティングシステムなど、テキストサービスフレームワークを提供するオペレーティングシステムとともに使用されている場合、挿入位置制御ツール201は、挿入位置追跡モジュール203が挿入位置はリッチエディットコントロールまたはインクエディットコントロールに(つまりテキストサービスをサポートするエディットコントロールとともに)配置されていると判定したときにテキストサービスフレームワークを実行可能にすることができる。当業者にはわかるように、テキストサービスフレームワークは、様々なメタデータをテキストに関連付けることができる。例えば、テキストが手書きまたは音声から認識された場合、そのテキストは別の認識選択を有する。アプリケーションがテキストサービスフレームワークをサポートしている場合、アプリケーションがテキストを受信したとき、そのテキストに関連付けられている任意のメタデータも受信し、維持する。従って、挿入位置制御ツール201はユーザインタフェースアプリケーションプログラミングインタフェース207に、結び付けられているコントロール上で適切なテキストサービスフレームワーク(Microsoft WINDOWS(登録商標)ブランドのXP Tablet PC Versionオペレーティングシステムとともに使用するCommon Text Frameworkなど)を開始するよう指示する。
修正機能の提供とともに、テキストサービスフレームワークを使用して、認識された入力データが確実にその宛先エディットコントロールと正確に一致するようにすることもできる。より具体的には、リッチエディットコントロールまたはインクエディットコントロールがCommon Text Frameworkを呼び出したとき、Common Text Frameworkは、認識されたテキストをコントロールと関連付ける、その後認識されるテキストのメタデータを作成する。従って、入力フォーカスがコントロールからシフトされた後でさえ、Common Text Frameworkは、認識されたテキストをコントロールと一致させ、認識されたテキストが確実にコントロールに挿入されるようにすることができる。しかし、Common Text Frameworkでは、挿入位置制御ツール201は、リッチエディットコントロールに、Common Text Frame workへのOLEインタフェースを要求するよう指示するメッセージが与えられていることを確実にする必要がある(つまりリッチエディットコントロールは、COMインタフェースへのポインタにCOMの特徴にアクセスするよう要求する必要がある)ことに注意されたい。
(データユーザインタフェースの呼出)
データ入力ユーザインタフェースなどのユーザインタフェースの外観または他のプロパティを決定することに加えて、挿入位置の特徴または他のイベント情報を使用して、ユーザインタフェースがどのように呼び出されるかを制御することもできる。例えば、本発明の一部の実施形態では、挿入位置追跡モジュール203は、デジタイザ166の面に対するスタイラス165の場所に関するイベントメッセージを監視することができる。この情報に基づいて、ツール201は、スタイラスまたはペンが挿入位置を含むコントロールに関連付けられている境界エリア内で動いている否かを決定することができる。それに応答して、ユーザインタフェース決定モジュール205は、ペンが境界エリアの内側で動いているか外側で動いているかに従って、インタフェースアプリケーションプログラミングインタフェース207に、データ入力ユーザインタフェースを自動的に表示または非表示するよう指示することができる。この境界エリアは、コントロールのまさに境界に接することができる、あるいはペンが可視のコントロールの境界に近づくだけでよいようにより大きいエリアをカバーするようにすることができる。
さらに、ペンが挿入位置を含むコントロールの範囲に移動するとき、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、データ入力ユーザインタフェースをすぐに、あるいはわずかの遅延の後で表示するよう指示することができる。遅延によってユーザは、他の隣接するコントロールを対象としているときに挿入位置を含むコントロールにわたって、またはその上をペンでドラッグし、その結果ユーザが挿入位置を含むコントロールの内側またはその上で瞬間的にペンを持つことによって、データ入力ユーザインタフェースにアクセスしたいことを明示的に示したときにのみ、データ入力ユーザインタフェースが表示されるようにすることができる。本発明の代替実施形態では、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、ペンが全画面の範囲内にあるときにのみデータ入力ユーザインタフェースが可視になるように、ペンが全表示エリアの範囲内にあるときにのみデータ入力ユーザインタフェースを表示するよう指示することができる。
本発明のさらに別の実施形態によれば、ユーザインタフェース決定モジュール205は、挿入位置がいくつかの種類のコントロール内に配置されているとき、または挿入位置が特定の種類であるときに、データ入力ユーザインタフェース表示ターゲットを作成することができる。例えば、挿入位置が挿入ポイントである場合、ユーザは、挿入ポイントの後にテキストを追加するために挿入位置を配置しているかもしれない。従って、ユーザがデータ入力パネルにアクセスして新しいテキストを挿入することを望んでいるという想定で、ユーザインタフェース決定モジュール205は、データ入力パネルを直ちにユーザに提示することができる。しかし、挿入位置が既存テキストの選択である場合、ユーザは、テキストを削除またはコピーし、または選択したテキストをすでにコピーしている別のテキストに置き換えたいだけかもしれない。従って、ユーザインタフェース決定モジュール205は、データ入力パネルを直ちにユーザに提示せず、代わりに後でデータ入力パネルにアクセスするためのターゲットをユーザに提供することができる。従って、ユーザが選択したテキストを削除、またはコピーすること、または前にコピーしたテキストに置き換えることだけを望んでいる場合、データ入力パネルを直ちに表示しても、ユーザの作業フローを妨害することはない。
さらに、ユーザインタフェース決定モジュール205は、ペンまたはスタイラス(または他の適切なポインティング装置)の位置に関連するイベントメッセージを監視して、ペンまたはスタイラス(または他のポインティング装置)がデータ入力ユーザインタフェースおよび表示ターゲット上、あるいは一部の実施形態ではその近くをいつ移動したかを決定することができる。それに応答して、ユーザインタフェース決定モジュール205は、ユーザインタフェースアプリケーションプログラミングインタフェース207に、ペン(または他のポインティング装置)がターゲットまたはデータ入力ユーザインタフェース上(もしくはその近く)に配置されている間のみにデータ入力ユーザインタフェースを表示するよう指示することができる。本発明の一部の実施形態では、例えば、データ入力ユーザインタフェース表示ターゲットは、四角形、円形、あるいは他の任意の形状とすることができ、挿入位置を含むコントロールの上、下、左、右に、および/またはそれに重なるように配置することができる。この場合もまた、ターゲットをすぐに、または遅延の後に表示し、次いでデータ入力ユーザインタフェースをすぐに、または遅延の後に表示することができる。
(結論)
本発明は、本発明を実行するいくつかの特定の様式を含む特定の例に関連して説明してきたが、上記で説明したシステムおよび技術の変形および置換が多数あることを当業者であれば理解できよう。従って、本発明の意図および範囲は、大筋で添付の特許請求の範囲に記載のものと解釈されるべきである。
本発明の様々な実施形態の実施に使用できる一般的な動作環境を示す図である。 本発明の様々な実施形態による挿入位置制御ツールを示す図である。 図2に示した挿入位置制御ツールとともに使用できる挿入位置追跡モジュールを示す図である。 本発明の様々な実施形態による挿入位置の状況を監視する方法を説明するフロー図である。 本発明の様々な実施形態による挿入位置の状況を監視する方法を説明するフロー図である。 本発明の様々な実施形態によるデータ入力パネルの一例を示す図である。 本発明の様々な実施形態とともに使用できるアプリケーションユーザインタフェースでのエディットコントロールの使用の一例を示す図である。 図6Aに示したエディットコントロールへのテキストの挿入を示す図である。 図6Aに示したエディットコントロールへのテキストの挿入を示す図である。 図6Aに示したエディットコントロールへのテキストの挿入を示す図である。 本発明の様々な実施形態によるエディットコントロール境界ウィンドウに対するデータ入力パネルの代替の配置を示す図である。 本発明の様々な実施形態によるエディットコントロール境界ウィンドウに対するデータ入力パネルの代替の配置を示す図である。 本発明の様々な実施形態によるエディットコントロール境界ウィンドウに対するデータ入力パネルの代替の配置を示す図である。 アジア言語の書き込み面を備えるデータ入力パネルの例を示す図である。 補助数字キーパッドを備えるデータ入力パネルの例を示す図である。 補助記号キーパッドを備えるデータ入力パネルの例を示す図である。 反対向きのテキスト入力パネルの例を示す図である。
符号の説明
201 挿入位置制御ツール
203 挿入位置追跡モジュール
205 ユーザインタフェース決定モジュール
207 ユーザインタフェースアプリケーションプログラミングインタフェース
209 テキストサービスフレームワークインタフェース
211 MSHTMLコントロール
213 MSAAアプリケーションプログラミングインタフェース
215 Win32アプリケーションプログラミングインタフェース
217 IMEインタフェース
301 検索スレッド
303 イベントメッセージキュー
305 タイミングスレッド

Claims (11)

  1. データ入力ユーザインタフェースを制御する方法であって、
    挿入位置追跡モジュールが、挿入位置の場所情報と該挿入位置が配置されているエディットコントロールを識別するコントロール情報とを含む挿入位置状況情報、ソフトウェアシステムプロセスまたは該ソフトウェアシステムプロセスがホストしているソフトウェアアプリケーションプロセスから取得すること
    ユーザインタフェース決定モジュールが、前記取得した挿入位置状況情報に基づいて、前記ソフトウェアアプリケーションプロセスにデータを挿入するためのデータ入力ユーザインタフェースを制御することであって、
    前記挿入位置追跡モジュールが、前記取得した挿入位置状況情報に含まれる前記コントロール情報から、前記挿入位置はランダムな配列の文字を受け取るエディットコントロール内に配置されていると判定したとき、前記ユーザインタフェース決定モジュールが、前記データ入力ユーザインタフェースにランダムな配列の文字を入力するためのキーボード面を提供すること、および
    前記挿入位置追跡モジュールが、前記取得した挿入位置状況情報に含まれる前記コントロール情報から、前記挿入位置は特定の言語種類に関連付けられたエディットコントロール内に配置されていると判定したとき、前記ユーザインタフェース決定モジュールが、前記データ入力ユーザインタフェースに前記特定の言語種類で書かれた電子インクを受け取るための書き込み面を提供すること
    を含む、前記データ入力ユーザインタフェースを制御することと、
    前記取得した挿入位置状況情報に含まれる前記場所情報に基づいて、前記データ入力ユーザインタフェースを表示することと
    を備えたことを特徴とする方法。
  2. 前記ソフトウェアアプリケーションプロセスのデータ入力フォーカス状態に関するフォーカスメッセージを受信すること
    前記受信したフォーカスメッセージに基づいて前記データ入力ユーザインタフェースの動作をさらに制御すること
    をさらに備えたことを特徴とする請求項1に記載の方法。
  3. 前記ソフトウェアアプリケーションプロセスによって提供されるアプリケーションユーザインタフェースのアプリケーションユーザインタフェース状態に関するアプリケーションユーザインタフェースメッセージを受信すること
    前記受信したアプリケーションユーザインタフェースメッセージに基づいて前記データ入力ユーザインタフェースの動作をさらに制御すること
    をさらに備えたことを特徴とする請求項1に記載の方法。
  4. 前記コントロール情報は、前記挿入位置が配置されている前記エディットコントロールが含まれるアプリケーションユーザインタフェースを識別するアプリケーションユーザインタフェース情報を含むことを特徴とする請求項1に記載の方法。
  5. 前記特定の言語種類は、アルファベットであることを特徴とする請求項1に記載の方法。
  6. 前記特定の言語種類は、絵文字であることを特徴とする請求項1に記載の方法。
  7. 前記データ入力ユーザインタフェースを表示することは、
    前記取得した挿入位置状況情報に含まれる前記場所情報から、前記挿入位置が、前記ソフトウェアアプリケーションプロセスによって提供されるアプリケーションユーザインタフェース内の作業スペースの境界に近いと判定すること、および、
    前記データ入力ユーザインタフェースを、前記作業スペースの前記境界内に留まる位置に表示すること
    含むことを特徴とする請求項1に記載の方法。
  8. 前記データ入力ユーザインタフェースを表示することは、
    前記取得した挿入位置状況情報に含まれる前記場所情報から、前記挿入位置が、前記ソフトウェアアプリケーションプロセスによって提供されるアプリケーションユーザインタフェース内の作業スペースの境界に近いと判定すること、および、
    前記データ入力ユーザインタフェースを、前記作業スペースの前記境界内に留まるサイズで表示すること
    含むことを特徴とする請求項1に記載の方法。
  9. 前記データ入力ユーザインタフェースを制御することは、
    前記取得した挿入位置状況情報に含まれる前記コントロール情報から、前記挿入位置はインターネットユニバーサルリソースアドレス位置を受け取るエディットコントロール内に配置されていると判定すること、および、
    前記データ入力ユーザインタフェースに、「www」、「org」、「com」、「net」、および「gov」から成るグループの文字列のうちの1または複数の専用キーを有するキーボード面を提供すること
    をさらに含むことを特徴とする請求項1に記載の方法。
  10. 前記データ入力ユーザインタフェースを制御することは、
    前記取得した挿入位置状況情報に含まれる前記コントロール情報から、前記挿入位置は数値データを受け取るエディットコントロール内に配置されていると判定すること、および、
    前記データ入力ユーザインタフェースに、数値キーを有するキーボード面を提供すること
    をさらに含むことを特徴とする請求項1に記載の方法。
  11. 前記データ入力ユーザインタフェースを制御することは、
    前記取得した挿入位置状況情報に含まれる前記コントロール情報から、前記挿入位置は数値データを受け取るエディットコントロール内に配置されていると判定すること、および、
    前記データ入力ユーザインタフェースに、稼動されると数値キーを有するキーボード面を提供するボタンを提供すること
    をさらに含むことを特徴とする請求項1に記載の方法。
JP2008326598A 2003-01-31 2008-12-22 ユーザインタフェースを制御するための挿入位置の追跡 Expired - Fee Related JP4868469B2 (ja)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US45370103P 2003-01-31 2003-01-31
US60/453,701 2003-01-31
US10/431,049 2003-05-06
US10/431,049 US20040225965A1 (en) 2003-05-06 2003-05-06 Insertion location tracking for controlling a user interface

Related Parent Applications (1)

Application Number Title Priority Date Filing Date
JP2004011114A Division JP4491249B2 (ja) 2003-01-31 2004-01-19 ユーザインタフェースを制御するための挿入位置の追跡

Publications (2)

Publication Number Publication Date
JP2009076105A JP2009076105A (ja) 2009-04-09
JP4868469B2 true JP4868469B2 (ja) 2012-02-01

Family

ID=32738231

Family Applications (2)

Application Number Title Priority Date Filing Date
JP2004011114A Expired - Fee Related JP4491249B2 (ja) 2003-01-31 2004-01-19 ユーザインタフェースを制御するための挿入位置の追跡
JP2008326598A Expired - Fee Related JP4868469B2 (ja) 2003-01-31 2008-12-22 ユーザインタフェースを制御するための挿入位置の追跡

Family Applications Before (1)

Application Number Title Priority Date Filing Date
JP2004011114A Expired - Fee Related JP4491249B2 (ja) 2003-01-31 2004-01-19 ユーザインタフェースを制御するための挿入位置の追跡

Country Status (4)

Country Link
EP (1) EP1450244A3 (ja)
JP (2) JP4491249B2 (ja)
KR (1) KR100975505B1 (ja)
CN (1) CN100378659C (ja)

Families Citing this family (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP5229871B2 (ja) 2008-01-10 2013-07-03 インターナショナル・ビジネス・マシーンズ・コーポレーション 使用者によるデータの入力を支援する技術
CN101751278B (zh) * 2009-12-17 2012-10-03 中兴通讯股份有限公司 一种数据延迟加载方法及装置
EP2360578B1 (en) * 2010-02-15 2013-04-24 Deutsche Telekom AG A method for detecting user screens in mobile devices working under symbian operating system
US8589950B2 (en) 2011-01-05 2013-11-19 Blackberry Limited Processing user input events in a web browser
CN102681751B (zh) * 2011-03-15 2015-09-23 联想(北京)有限公司 输入控制方法、输入识别方法及设备
US8941675B2 (en) 2011-04-05 2015-01-27 Blackberry Limited Backing store memory management for rendering scrollable webpage subregions

Family Cites Families (23)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5361310A (en) * 1990-01-19 1994-11-01 Fujitsu Limited Handwriting entry processing system using keyboard and mouse interfaces requiring no modification of an application program
US5953735A (en) * 1991-03-20 1999-09-14 Forcier; Mitchell D. Script character processing method and system with bit-mapped document editing
JP3190074B2 (ja) * 1991-09-11 2001-07-16 株式会社東芝 手書き入力装置
US6097392A (en) * 1992-09-10 2000-08-01 Microsoft Corporation Method and system of altering an attribute of a graphic object in a pen environment
JP3188039B2 (ja) * 1993-05-11 2001-07-16 三洋電機株式会社 手書き文字記入枠の制御方法
JP2944439B2 (ja) * 1994-12-27 1999-09-06 シャープ株式会社 手書き文字入力装置および方法
JPH09171429A (ja) * 1995-12-20 1997-06-30 Tsubasa Syst Kk データ入力装置
JPH09319503A (ja) * 1996-05-31 1997-12-12 Sanyo Electric Co Ltd 文書処理装置、文書処理方法、記憶媒体
US5914718A (en) * 1996-06-26 1999-06-22 Xerox Corporation Method and apparatus for organizing a work space for a computer controlled display system using borders and regions
JPH1049281A (ja) * 1996-07-29 1998-02-20 Kokusai Electric Co Ltd データ入力装置
US5889888A (en) * 1996-12-05 1999-03-30 3Com Corporation Method and apparatus for immediate response handwriting recognition system that handles multiple character sets
JP2000043484A (ja) * 1998-07-30 2000-02-15 Ricoh Co Ltd 電子黒板システム
JP2000148334A (ja) * 1998-11-10 2000-05-26 Canon Inc 文字処理装置及びその方法、及びそのプログラムを記憶した記憶媒体
US6411283B1 (en) * 1999-05-20 2002-06-25 Micron Technology, Inc. Computer touch screen adapted to facilitate selection of features at edge of screen
JP2003501718A (ja) * 1999-05-27 2003-01-14 ヴラジミロヴィッチ アファナシーフ,アレクセイ コンピュータ装置に情報を入力する方法、ステッカー・キーボード及びこの方法を用いた装置
FI19992504A (fi) * 1999-11-24 2001-05-25 Nokia Mobile Phones Ltd Käsialan tunnistus matkaviestimessä
US7259753B2 (en) * 2000-06-21 2007-08-21 Microsoft Corporation Classifying, anchoring, and transforming ink
US7032180B2 (en) * 2000-08-14 2006-04-18 Twin Communications Of America, Inc. User interface rendering component environment
US6941507B2 (en) * 2000-11-10 2005-09-06 Microsoft Corporation Insertion point bungee space tool
JP2002230466A (ja) * 2000-11-30 2002-08-16 Nippon Ics Kk 会計処理装置及び会計処理プログラムを記録した記録媒体
US20020063691A1 (en) * 2000-11-30 2002-05-30 Rich Rogers LCD and active web icon download
KR100433889B1 (ko) * 2001-04-24 2004-06-04 삼성전자주식회사 키패드를 이용한 인터넷주소 입력방법
US7490296B2 (en) * 2003-01-31 2009-02-10 Microsoft Corporation Utility object for specialized data entry

Also Published As

Publication number Publication date
JP2009076105A (ja) 2009-04-09
JP2004234651A (ja) 2004-08-19
JP4491249B2 (ja) 2010-06-30
EP1450244A3 (en) 2008-03-26
CN1525313A (zh) 2004-09-01
CN100378659C (zh) 2008-04-02
KR20040070001A (ko) 2004-08-06
KR100975505B1 (ko) 2010-08-11
EP1450244A2 (en) 2004-08-25

Similar Documents

Publication Publication Date Title
US20040225965A1 (en) Insertion location tracking for controlling a user interface
JP4658480B2 (ja) 特化されたデータ入力用のユーティリティオブジェクト
US10817175B2 (en) Input device enhanced interface
US6928619B2 (en) Method and apparatus for managing input focus and z-order
KR101015291B1 (ko) 동적으로 확장하는 입력 패널로 사용자 입력을 추가하는방법
US6903730B2 (en) In-air gestures for electromagnetic coordinate digitizers
RU2366006C2 (ru) Динамическая обратная связь для жестов
EP0394614A2 (en) Advanced user interface
EP0538705A1 (en) Graphical user interface with gesture recognition in a multiapplication environment
JP4868469B2 (ja) ユーザインタフェースを制御するための挿入位置の追跡
JP7496699B2 (ja) 表示装置
JP2021135911A (ja) 表示装置

Legal Events

Date Code Title Description
A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20110506

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20110808

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20111028

A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20111110

R150 Certificate of patent or registration of utility model

Free format text: JAPANESE INTERMEDIATE CODE: R150

FPAY Renewal fee payment (event date is renewal date of database)

Free format text: PAYMENT UNTIL: 20141125

Year of fee payment: 3

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

S111 Request for change of ownership or part of ownership

Free format text: JAPANESE INTERMEDIATE CODE: R313113

R350 Written notification of registration of transfer

Free format text: JAPANESE INTERMEDIATE CODE: R350

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees