(57)【要約】【課題】  キーの操作方法によって、複数の機能を割り当てられるキーの操作結果が機能毎に異なった仮想キーイベントとして通知される状況において、ウィンドウシステムを介してグラブウィンドウが特定のキーイベントを横取りすることで発生する誤動作を解消すること。【解決手段】  優先取得受付部１４は、グラブウィンドウ１０から、所望のキーイベントをフォーカスウィンドウ３４より優先して取得したい旨の要求を受け付け、優先取得要求部１６は、ユーザの操作結果に対応するキーイベントを確定するまでに発行され得る複数のキーイベントからなるキーイベント要求集合を保持し、グラブウィンドウ１０が取得しようとするキーイベントを含むキーイベント要求集合に属する全てのキーイベントの通知をウィンドウシステム３２に要求する。
2006502651.tif 000002
【特許請求の範囲】
【請求項１】
キー操作の結果を示すキーイベントをキーの状態変化を通知するキー配送装置から取得し、当該取得したキーイベントを所定の配送先プログラムに配送するキーイベント制御装置であって、
第１の配送先プログラムから、所望のキーイベントを前記キー配送装置によるキーイベントの通常の配送先である第２の配送先プログラムより優先して取得したい旨の要求を受け付ける優先取得受付部と、
ユーザのキー操作結果に対応するキーイベントを確定するまでに発行され得る複数のキーイベントからなる、少なくとも１つのキーイベント要求集合を保持し、当該少なくとも１つのキーイベント要求集合のうちの、前記所望のキーイベントを含むキーイベント要求集合に属する全てのキーイベントを当該キーイベント制御装置に通知するよう前記キー配送装置に要求する優先取得要求部とを備えたキーイベント制御装置。
【請求項２】
前記所望のキーイベントについては当該第１の配送先プログラムに、その他のキーイベントについては前記第２の配送先プログラムに配送するキーイベント分配配送部とをさらに備えた、請求項１に記載のキーイベント制御装置。
【請求項３】
前記優先取得要求部が前記キー配送装置にその通知を要求したキーイベントが、前記キー配送装置においてすでに他のキーイベント制御装置に優先的に通知するように指定されていた場合に、そのキーイベント制御装置を検索する検索部と、
前記検索部によって検出されたキーイベント制御装置に対し、前記キーイベントを転送するように要求する転送要求部と、
他のキーイベント制御装置から所定のキーイベントの転送を要求された場合に、当該所定のキーイベントを当該他のキーイベント制御装置に転送するキーイベント転送部とをさらに備えた、請求項１に記載のキーイベント制御装置。
【請求項４】
所定のキーイベントを全ての配送先プログラムに配送するブロードキャスト部をさらに備えた、請求項１に記載のキーイベント制御装置。
【請求項５】
前記キー配送装置から通知されるキーイベントのうち、単独ではキー操作が確定できないキーイベントを保持しておくキーイベント保持部と、
キー操作を確定するために必要となる複数のキーイベントにより構成される、少なくとも１つのキーイベント確定集合を保持し、前記キーイベント保持部に前記少なくとも１つのキーイベント確定集合のいずれかを構成する全てのキーイベントが保持されたときに、当該キーイベントを配送キーイベントとして決定する配送キーイベント決定部と、
前記配送キーイベントを、前記第１の配送先プログラムに配送するキーイベント配送部とをさらに備えた、請求項１に記載のキーイベント制御装置。
【請求項６】
前記キー配送装置は、キーの押下を通知する押下キーイベントとキーの押上を通知する押上キーイベントを発行し、かつキーを押す長さに応じて異なるキーイベントを発行するものであり、
当該キーイベント制御装置は、
前記キー配送装置から前記押下キーイベントが通知された場合に、それ以降に前記キー配送装置から発行される、当該押下キーイベントを発行するために必要な押下時間より短い押下時間で発行される押下キーイベントと対となる押上キーイベントを破棄する押上キーイベント破棄部と、
キーを最も長い時間押し続けた場合に発行される押下キーイベント以外の押下キーイベントを破棄する押下キーイベント破棄部と、
前記押上キーイベント破棄部によって破棄されなかった押上キーイベントであって、キーを最も長い時間押し続けた場合に発行されるもの以外の押上キーイベントと対となる押下キーイベントを生成するキーイベント生成部と、
前記キー配送装置から通知されたキーイベントのうち前記押上キーイベント破棄部および前記押下キーイベント破棄部によって破棄されなかったキーイベントと、前記キーイベント生成部によって生成されたキーイベントとを前記第１の配送先プログラムに配送するキーイベント配送部をとをさらに備えた、請求項１に記載のキーイベント制御装置。
【請求項７】
前記キー配送装置から特定のキーイベントが通知されたことを受けて、前記キーイベント保持部が保持する任意のキーイベントを削除するキーイベント削除部をさらに備えた、請求項６に記載のキーイベント制御装置。
【請求項８】
前記配送キーイベントを特定のキーイベントに変換してから前記キーイベント配送部に通知するキーイベント変換部をさらに備えた、請求項６に記載のキーイベント制御装置。
【請求項９】
前記キー配送装置から当該キーイベント制御装置にキーイベントが一定時間通知されなかったときに前記キーイベント保持部が保持しているキーイベントを全て削除する保持内容クリア部をさらに備えた、請求項６に記載のキーイベント制御装置。
【請求項１０】
前記キー配送装置は、キーの押下を通知する短押下キーイベントとキーの押上を通知する短押上キーイベントを発行するものであり、かつキーを一定時間押し続けた時にキーが長押しされたことを通知する長押下キーイベントを発行し、その後当該キーが離されたときに長押上キーイベントを発行するものであり、
当該キーイベント制御装置は、
配送先プログラムにキーイベントを配送するキーイベント配送部と、
前記キー配送装置から通知されるキーイベントのうち、単独ではキー操作が確定できないキーイベントを保持しておくキーイベント保持部と、
前記キー配送装置から前記長押下キーイベントが通知されたときに前記キーイベント保持部が保持しているキーイベントを削除し、当該長押下キーイベントを前記キーイベント配送部を用いて前記第１の配送先プログラムに配送する押下キーイベント処理部と、
前記長押上キーイベントを取得した時に当該長押上キーイベントを前記キーイベント配送部を用いて前記第１の配送先プログラムに配送し、前記短押上キーイベントを取得しかつ前記キーイベント保持部に当該短押下キーイベントが保持されている時に当該短押下キーイベントと当該短押上キーイベントを前記キーイベント配送部を用いて前記第１の配送先プログラムに配送し、前記短押上キーイベントを取得しかつ前記キーイベント保持部に当該短押下キーイベントが保持されていないときに当該短押上キーイベントを破棄する押上キーイベント処理部とをさらに備えた、請求項１に記載のキーイベント制御装置。
【請求項１１】
前記キー配送装置がウィンドウシステムである、請求項１に記載のキーイベント制御装置。
【請求項１２】
キー操作の結果を示すキーイベントをキーの状態変化を通知するキー配送装置から取得し、当該取得したキーイベントを所定の配送先プログラムに配送するキーイベント制御方法であって、
第１の配送先プログラムから、所望のキーイベントを前記キー配送装置によるキーイベントの通常の配送先である第２の配送先プログラムより優先して取得したい旨の要求を受け付ける優先取得受付ステップと、
ユーザの操作結果に対応するキーイベントを確定するまでに発行され得る複数のキーイベントからなるキーイベント要求集合であって、前記所望のキーイベントを含むキーイベント要求集合に属する全てのキーイベントの通知を前記キー配送装置に要求する優先取得要求ステップとを備えたキーイベント制御方法。
【請求項１３】
キー操作の結果を示すキーイベントをキーの状態変化を通知するキー配送装置から取得し、当該取得したキーイベントを所定の配送先プログラムに配送するためのキーイベント制御プログラムであって、コンピュータに、
第１の配送先プログラムから、所望のキーイベントを前記キー配送装置によるキーイベントの通常の配送先である第２の配送先プログラムより優先して取得したい旨の要求を受け付ける優先取得受付ステップと、
ユーザの操作結果に対応するキーイベントを確定するまでに発行され得る複数のキーイベントからなるキーイベント要求集合であって、前記所望のキーイベントを含むキーイベント要求集合に属する全てのキーイベントの通知を前記キー配送装置に要求する優先取得要求ステップとを実行させるためのキーイベント制御プログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、キーイベント制御装置に関し、より特定的には、特定キーイベントの配送先変更およびキーイベントのフィルタリングを行うための装置に関する。
【背景技術】
【０００２】
キーの状態を管理し、状態変化を通知する仕組みとして一般的なXWindowSystem（マサチュセッツ工科大学の商標）等のウィンドウシステムにおいては、シフトキーやコントロールキー等のモディファイアキーと他のキーを組み合わせた場合に、キー操作に応じて仮想的なキーのイベントの発行が行われる（例えば、非特許文献１参照）。
【０００３】
また、複数のウィンドウを扱うウィンドウシステム上のイベント管理の手法として、ウィンドウの制御に関する情報を一元管理することにより、イベントの通知先であるフォーカスウィンドウの自動切り替えを行うマルチウィンドウイベント管理装置がある（例えば、特許文献１参照）。
【０００４】
しかし、これら非特許文献１および特許文献１に記載された技術では、短押しや長押し等のキーを押す時間、又は、半押しや全押し等のキーを押す深さ等のようなキーの操作方法によって、キーの機能割り当てを変更する場合については、考慮されていない。
【０００５】
短押しや長押し等のようにキーを押す時間によってキーの機能割り当てを変更する仕組みとしては、キー操作に応じて短押しと長押しで異なったイベントを通知する仕組みがある（例えば、特許文献２参照）。
【０００６】
また、短押しと長押し等キー操作により異なった機能を割り当てる状況においては、長押し確定時には短押しイベントを抑制したい場合と、長押し確定時でも短押しイベントを通知すべき場合が考えられるが、最初にキーを押した段階である動作を行い、その後長押しが確定した時点で次の動作を行うような場合を考慮すると、長押し確定時でも短押しイベントを通知する必要がある。一例をあげると、キー押し下時にスクロールを開始し、長押し確定時にスクロール速度を上げるなどの場合である（例えば、特許文献３参照）。
【０００７】
このような場合、キーの状態変化を通知するように機能するキー配送装置は、一連のキー操作が終了し、対応する仮想キーが一意に決定する以前であっても、キー操作の途中段階で、対応するキーまたは仮想キーの状態を通知する。例えば、あるキーの長押しには“長押しキー”の仮想キーが、短押しには“短押しキー”の仮想キーが割り当てられており、そのキーを長押ししたと仮定した場合のシーケンスを図２１に示す。まず、キー配送装置は、キー押下時に、“短押し”仮想キーの状態変化を通知する。このキー押下のタイミングでは、キー操作の途中段階のため、短押しキーか長押しキーのどちらかに一意には確定していない。その後、キー押下状態が一定時間経過し、長押し操作と確定した時に、“長押し”仮想キーの状態変化を通知するといった方法が取られている。上記の方法により、各アプリケーションには、キーの操作確定前にも仮想的なキーイベントが通知されるため、アプリケーション側で受け取った一連の仮想キーイベントを総合的に判断して、どのキーイベントが確定されたかを決定し、それに応じた処理を行うという方法が取られていた。
【０００８】
また、キーイベントの優先取得については、一般的に広く普及しているXWindowSystemの場合、優先取得対象キーが押下された時点で、キーイベントの配送先をアクティブなアプリケーションから優先取得要求元に切り替え、押上された時点で配送経路を元に戻すという手段が取られている（例えば、前記非特許文献１参照）。
【０００９】
また、ユーザが特定のアプリケーションではなく存在する全てのアプリケーションに対して処理を行う場合が存在する。具体例を挙げると、全アプリケーションが表示する画面を閉じたり、最小化、最大化したりする場合である。このような場合、一般的なウィンドウシステムでは、全てのウィンドウにキーイベントを配送するという仕組みが存在しないため、ウィンドウを管理するウィンドウマネージャを置き、ウィンドウマネージャに全体操作要求を通知し、それを受けたウィンドウマネージャが全ウィンドウに対して操作を行うという手段がとられている。しかしながら、FVWM等に代表されるような一般的なウィンドウマネージャはウィンドウを管理するという性質上、全ウィンドウに対して行う操作は、ウィンドウの最大化、最小化といったウィンドウ自体の操作のみに限定されている（例えば、非特許文献２参照）。
【００１０】
これを補うため、複数のウィンドウに同時に文字を入力する場合において、入力文字と入力先のウィンドウの対応付けを記した文字−ウィンドウ対応テーブルを参照することにより、各文字入力を対応するウィンドウに出力する複数ウィンドウに対する入力装置がある（例えば、特許文献４参照）。
【特許文献１】特開平０２−１３９６２６号公報
【特許文献２】特開２０００−３５３３５７号公報
【特許文献３】特開２００３−１６２３５６号公報
【特許文献４】特開平０８−５０５４２号公報
【非特許文献１】オリバー・ジョーンズ（Oliver Jones）著、西村  亨  監修、三浦明美  訳、“エックスウィンドウズ（XWindow）ハンドブック”、アスキー出版、1990年
【非特許文献２】デビッド・フリース（David Fries）他、“ジ・オフィシャル・エフブイダブリューエム・ホームページ（The Official FVWM Homepage）”、[online]、平成１４年７月２０日、[平成１４年９月９日検索]、インターネット＜URL：http://www.fvwm.org＞
【発明の開示】
【発明が解決しようとする課題】
【００１１】
しかしながら、前記従来の技術では、第一の課題として、１連のキー操作によって発行された複数のキーのイベントが、キーイベントの優先取得によって、ユーザやアプリケーションからキーイベント配送先として指定されたアプリケーション（以下、アクティブアプリとする）と優先配送先のアプリケーション（以下、グラブアプリとする）とに分かれて配送された場合、それぞれのアプリケーションは一連のキー操作の一部しか通知されないため、正確に機能を確定することができずシステムとして想定外の動作を行うという問題がある。
【００１２】
一例として、あるキーに“長押し”と“短押し”の仮想キーが割り当てられており、アプリケーションＡがアクティブアプリで、アプリケーションＢが“長押し”仮想キーのグラブアプリである際に、そのキーが長押しされたと仮定した場合のシーケンスを図２２に示す。まず、キー押下時に、“短押し”仮想キー押下イベントがアプリケーションＡに通知される。次に、“長押し”仮想キー押下イベントがアプリケーションＢに通知される。その後、キー押上時に、“短押し”仮想キー押上イベントがアプリケーションＡに通知され、“長押し”仮想キー押上イベントがアプリケーションＢに通知される。一連の４つ全ての仮想キーイベントを受け取れば、キー操作が長押しであることが分かるが、アプリケーションＡには“短押し”仮想キーイベントしか通知されていないため、ユーザは短押し操作を行っていないにも関わらず、短押しに対応する処理を実行してしまう。
【００１３】
また、前記例にあるようにキーに“長押し”と“短押し”の仮想キーが割り当てられている場合には、キー押下時にはユーザ操作結果が確定しないため押下イベントの発行は行わず、キー操作結果が確定したキー押上時に、操作結果に対応した“長押し”又は“短押し”仮想キー押上イベントのみを発行することで上記課題を解決する方法が考えられるが、この方法では長押しをサポートするキーについて押下キーイベントが発行されないため、長押し操作をサポートしないキーと長押し操作をサポートするキーで、異なる種類のキーイベントが発行されてしまう。このため、長押し操作をサポートするキーを変更する度に、そのキーイベントを処理するアプリケーションを変更しなければならないという問題点がある。これに対処するため、長押し操作をサポートしないキーについても押下キーイベントを発行しないことが考え得るが、この方法では全てのキーにおいてキーイベントの遅延が発生するため、ユーザの操作性を低下させる原因となる。
【００１４】
次に第二の課題として、XWindowSystemなどに代表される一般的なウィンドウシステムでは、特定キーを優先取得する場合、そのキーの押下時から押上時までの間、キーイベント配送先が優先配送先に変更されてしまうので、仮想キー配送の順序に依存して、優先取得対象でないキーのイベントまで優先配送先に配送されてしまうという問題点がある。
【００１５】
一例として、あるキーに“長押し”と“短押し”の仮想キーが割り当てられており、アプリケーションＡがアクティブアプリで、アプリケーションＢが“短押し”仮想キーを優先取得するグラブアプリである際に、そのキーが長押しされたと仮定した場合のシーケンスを図２３に示す。“長押し”仮想キー押下イベントから“長押し”仮想キー押上キーイベントまでの間のキーイベントがアプリケーションＢに配送されるため、仮想キーイベントの発行順が、“短押し”仮想キー押下イベント、“長押し”仮想キー押下イベント、“短押し”仮想キー押上イベント、“長押し”仮想キー押上イベントの順である場合、“短押し”仮想キー押上イベントまでアプリケーションＢに送られる。これにより、アプリケーションＡには、キー押上が通知されないことになる。
【００１６】
このようなキーイベントの優先取得の誤配送を避けるため、優先取得を行わずに、常にキーイベントをアクティブアプリケーションに配送し、アクティブアプリが配送されたキーイベントを総合的に判断して処理を切り替えたり他のアプリケーションに通知を行ったりする方法も考えられるが、システム全体で統一的に特定のキー操作に対し特定の処理を行いたい場合には、前記のような対応をアクティブアプリになり得る全てのアプリケーションが前記対応を行う必要があるため開発量が増加するうえ、例えば第３者が開発したオープンなアプリケーション等の前記対応が考慮されていないアプリケーションを導入した場合には、そのアプリケーション上では前記対応に関するキー操作が無効になるという問題点を抱える。例えば、マナーキーが長押しされたときにシステムで統一的にマナーモードに移行する場合には、全てのアプリケーションがマナーキーの長押しを通知されたときにマナーモードに移行する処理を行う必要がある上、この処理を記述していないダウンロードしたオープンソフトではマナーキーの長押しが無効になったり、異なった処理を実行したりしてしまう。
【００１７】
次に第三の課題として、XWindowSystemなどに代表される一般的なウィンドウシステムでは、優先取得同士の競合を避けるため、１つのキーについては、最初に要求した１つのウィンドウしか優先配送先とすることができず、複数のウィンドウが同時に同一キーに関するキーイベントを優先取得できないという問題がある。
【００１８】
次に第四の課題として、ユーザが全てのウィンドウに対して一括処理を行いたい場合、前記従来の技術では、ウィンドウマネージャが管理制御を行っているため、直前の操作を取り消して1つ前の状態に戻す処理やデータ保存処理など、ウィンドウ自体の操作ではない処理を全ウィンドウに対して行うことはできない。
【００１９】
また、従来の技術として先に挙げた複数ウィンドウに対する入力装置（例えば、前記特許文献２参照）は、文字入力のみを対象としている上に、文字とウィンドウとの対応テーブルに従って、通知された文字入力を複数ウィンドウに配送するだけなので、ユーザのキー操作過程において複数のキーイベントが発生する場合は、発生したキーイベント全てを各々対応するウィンドウに配送してしまうため、第１の課題として挙げたシステムとして想定外の動作を行うという問題が発生する。
【００２０】
本発明は、前記課題のうちの少なくとも第一の課題及び第二の課題（変形例によってはさらに第三の課題または第四の課題も）を解決するためになされたものであり、複数のウィンドウが存在する環境において、ユーザのキー操作過程で発生した複数のキーイベントに基づいて確定したキーイベントを、優先配送先ウィンドウまたはフォーカスウィンドウに配送するキーイベント制御装置を提供することを目的としている。
【課題を解決するための手段】
【００２１】
本発明は、第１の配送先プログラム（例えば上記グラブアプリ）から、所望のキーイベントをキー配送装置（例えば上記ウィンドウシステム）によるキーイベントの通常の配送先である第２の配送先プログラム（例えば上記アクティブアプリ）より優先して取得したい旨の要求を受け付ける優先取得受付部と、ユーザの操作結果に対応するキーイベントを確定するまでに発行され得る複数のキーイベントからなるキーイベント要求集合を保持し、前記所望のキーイベントを含むキーイベント要求集合に属する全てのキーイベントの通知を前記キー配送装置に要求する優先取得要求部とを備える。
【発明の効果】
【００２２】
本発明によれば、1つのキーイベント制御装置が１連のキー操作によって発行される複数のキーのイベント全てを一括して取得するため、フォーカスウィンドウと優先配送先のウィンドウとに分かれて配送されることに起因する誤動作を防ぐことができる。
【００２３】
なお、本発明の種々の変形例によれば、下記のような効果を得ることができる。
【００２４】
一般的なウィンドウシステムの優先キー取得機構の仕様に起因する、キー優先取得対象外のキーイベントを優先取得してしまう問題点や、複数のウィンドウが同一のキーイベントを優先取得できないという問題を防ぐことが可能である。
【００２５】
これらのことから、キー操作によってキーの機能が異なる環境においても、キーイベント優先取得をアプリケーションが利用できるようになるため、システム全体で統一的に特定のキー操作に対し特定の処理を行いたい場合には、そのキーイベントを優先取得するアプリケーション１つが対応すれば、存在する他のアプリケーションでの特別な処理は不要であり、ダウンロードしたオープンソフトウェア等のアプリケーション上においても、システム全体で統一された処理を行うことが出来る。
【００２６】
また、特定のキーイベントを全ウィンドウにブロードキャストすることにより、ウィンドウマネージャが対応しないウィンドウ操作以外の処理も、ユーザが全ウィンドウに対して一括操作を行うことが可能である。
【００２７】
さらに、既存のシステムに対して本発明を適用する際には、キーイベント制御装置を新たに追加するだけでよく、ウィンドウシステムを変更する必要がないため、一般的なウィンドウシステムの流用が可能であり、ソフトウェアの開発の規模や開発コスト、開発工数を低減することができる。
【発明を実施するための最良の形態】
【００２８】
以下、本発明の実施の形態について、図面を参照しながら説明する。
【００２９】
実施の形態においては、キー配送装置としてウィンドウシステムを採用した場合について記述しているが、例えば、リアルタイムＯＳにおいてキーの状態変化をタスク間通信で通知するような仕組みなど、ウィンドウシステム以外のキー配送装置を使用する場合にも本発明を適用可能であり、キーの配送対象は、ウィンドウに限らず、任意のプログラム（アプリケーション、子ウィンドウなどを含む）であってもよい。
【００３０】
（実施の形態１）
本発明の実施の形態１として、キーイベント制御装置がキーイベントの優先取得要求処理およびキーイベントのフィルタリング処理を行う場合について図１に示す。
【００３１】
図１は、本発明の実施の形態１におけるキーイベント制御装置の構成の一例を示すブロック図である。
【００３２】
ウィンドウシステム３２は、キー配送装置の一例であって、キーイベントを所定のウィンドウへと配送する機能を有している。ウィンドウシステム３２は、通常はフォーカスウィンドウにキーイベントを配送するが、特定のキーイベントを特定のウィンドウに配送する機能も有している。フォーカスウィンドウは、ユーザやアプリケーションによってキーイベント配送先として指定されたウィンドウである。
【００３３】
本実施の形態では、ウィンドウシステム３２は通常はフォーカスウィンドウ３４へとキーイベントを配送するが、一部のキーイベントについてはウィンドウシステム３２からキーイベント制御装置１２を経由して、グラブウィンドウ４１へ通知される。ここで、グラブウィンドウ１０は、キーイベント制御装置１２に特定のキーイベントの優先取得を要求したウィンドウである。なお、グラブウィンドウ１０がフォーカスウィンドウ３４であってもよい。
【００３４】
図１のキーイベント制御装置１２は、優先取得受付部１４と、優先取得要求部１６と、キーイベント配送部１８と、キーイベント変換部２０と、配送キーイベント決定部２２と、キーイベント保持部２４と、キーイベント削除部２６と、保持内容クリア部２８と、キーイベント取得部３０とを備えている。
【００３５】
まず、キーイベントの優先取得要求処理について説明する。
【００３６】
優先取得受付部１４は、グラブウィンドウ１０から発せられた優先取得要求（どのキーイベントを優先取得したいかを示す情報を含む）を受け付け、この要求を記憶し、優先取得要求部１６に優先取得要求を受け付けた旨を通知する。
【００３７】
優先取得要求部１６は、図２に例示されるような複数のキーイベントにより構成されるキーイベント要求集合３６を予め保持している。優先取得要求部１６は、複数のキーイベント要求集合を保持していてもよい。優先取得受付部１４から通知された優先取得対象のキーイベントが、優先取得要求部１６によって保持されているいずれかのキーイベント要求集合に属する場合は、優先取得要求部１６はそのキーイベント要求集合に属するキーイベント全てについてウィンドウシステム３２に優先取得要求する。
【００３８】
なお、各キーイベント要求集合は、ユーザの操作結果に対応するキーイベントを確定するまでに発行され得る複数のキーイベントにより構成される。
【００３９】
一例を挙げて説明すると、あるキーＸの長押し、短押し操作をそれぞれ通知する長押しキーイベント、短押しキーイベントが存在していて、そのキーＸをユーザが長押しした時には、まずユーザがキーＸを押下した時点でＸ短押下キーイベントがウィンドウシステム３２から発行され、その後、一定時間経過して長押しが確定した時点でＸ長押下キーイベントがウィンドウシステム３２から発行され、そして、ユーザがキーＸを離した（押し上げた）時にＸ短押上キーイベントおよびＸ長押上キーイベントがウィンドウシステム３２から発行される。このように、ユーザによる長押しキー操作の過程で短押しキーイベントも発行される。優先取得要求部１６は、長押しキー操作で発行される上記の４つのキーイベント全てを図２に示すようにキーイベント要求集合３６として纏めて保持している。グラブウィンドウ１０によってキーイベント要求集合３６に含まれる上記の４つのキーイベントのうちの何れかに対する優先取得要求がなされると、優先取得要求部１６はウィンドウシステム３２に対してキーイベント要求集合３６ａに含まれる上記の４つのキーイベント全てについて優先取得要求する。
【００４０】
他の例として、２つのキーＡ，Ｂを同時押ししたときに、キーＡやキーＢを単独に押した場合と異なる仮想キーイベントが発行される場合には、優先取得要求部１６は、図３に示すように、この同時押し操作の過程で発行され得る４つのキーイベント（Ａ押下、Ａ押上、Ｂ押下、Ｂ押上）を纏めてキーイベント要求集合３７として保持しておく。そして、これら４つのキーイベントのうちの何れかに対する優先取得がなされると、優先取得要求部１６はウィンドウシステム３２に対してキーイベント要求集合３７に含まれる上記の４つのキーイベント全てについて優先取得要求する。
【００４１】
優先取得要求部１６は、図２に示すキーイベント要求集合３６と図３に示すキーイベント要求集合３７を同時に保持していても構わない。
【００４２】
こうしてキーイベント制御装置１２からウィンドウシステム３２に対して特定のキーイベントの優先取得要求がなされると、それ以降、ウィンドウシステム３２は、これらの特定のキーイベントについてはキーイベント制御装置１２に通知し、その他のキーイベントについてはフォーカスウィンドウ３４に通知する。この結果、キーイベント制御装置１２が特定のキー操作の過程で発行されるキーイベント全てを一括して取得することになるため、キー操作の過程で発行される一連のキーイベントがフォーカスウィンドウと優先配送先のウィンドウ（グラブウィンドウ）に分かれて配送されることに起因する誤動作を防ぐことができる。
【００４３】
次に、キーイベントのフィルタリング処理について説明する。
【００４４】
キーイベント取得部３０は、ウィンドウシステム３２から通知されたキーイベントを取得し、配送キーイベント決定部２２にそのキーイベントを通知する。また同時に、キーイベント取得部３０は、キーイベント削除部２６と保持内容クリア部２８に、キーイベントの取得が発生した旨を通知する。このときキーイベント取得部３０は、キーイベントの取得が発生したことを意味する特定のイベントを用いて通知してもよいし、取得したキーイベント自身をそのまま用いて通知してもよい。
【００４５】
配送キーイベント決定部２２は、キーイベント取得部３０からキーイベントを受け取り、そのキーイベントをキーイベント保持部２４に格納し、配送すべきキーイベントを決定する。そして、配送すべきキーイベントが一意に確定した時、配送キーイベント決定部２２は、キーイベント変換部２０にこの確定したキーイベントを通知し、それからキーイベント保持部２４に格納されているこの確定したキーイベントをクリアする。なお、配送すべきキーイベントが一意に確定しない場合のみ、配送キーイベント決定部２２はキーイベント取得部３０から受け取ったキーイベントをキーイベント保持部２４に格納してもよい。キーイベント保持部２４の詳細については後述する。
【００４６】
配送キーイベント決定部２２は、配送すべきキーイベントを決定する際に、前もって設定されたキーイベント確定集合を決定のための判断基準として用いる。このキーイベント確定集合は、単一のキーイベントだけでは確定しないようなキー操作を確定するための複数のキーイベントからなる。例えば、ある特定のキーＸに対して、短押し操作と長押し操作が想定されている場合に、ウィンドウシステム３２からＸ短押下キーイベントが発行された時点では、ユーザのキー操作が短押し操作か長押し操作かを一意に特定することができない。つまり、Ｘ短押下キーイベントとＸ短押上キーイベントが両方揃った時点で初めて、ユーザのキー操作が短押し操作であると特定することができる。したがって、配送キーイベント決定部２２には、このようなＸ短押下キーイベントとＸ短押上キーイベントの組が、図４に示すようにキーイベント確定集合３８として予め保持される。なお、長押し操作については、Ｘ長押下キーイベントが単独で発行された時点でユーザのキー操作が長押し操作であると特定することができるため、長押し操作に係るキーイベント確定集合は不要である。なお、配送キーイベント決定部２２には、複数のキーイベント確定集合が設定されていてもよい。
【００４７】
キーイベント確定集合の他の例として、２つのキーＡ，Ｂを同時押ししたときに、キーＡやキーＢを単独に押した場合とは異なる仮想キーイベント（Ｘ押下）が発行される場合には、配送キーイベント決定部２２には、図５（ａ）〜図５（ｄ）に示す４つのキーイベント確定集合３９ａ、３９ｂ。３９ｃ、３９ｄを設定しておく。なお、この場合、キーイベント変換部２０において、Ａ押下キーイベントとＢ押下キーイベントの組はＸ押下キーイベントに変換され、Ａ押上キーイベントとＢ押上キーイベントの組はＸ押上キーイベントに変換され、Ａ押下キーイベントとＡ押上キーイベントの組、およびＢ押下キーイベントとＢ押上キーイベントの組については変換されない。
【００４８】
配送キーイベント決定部１２に設定されたキーイベント確定集合のデータ構造の一例を図６に示す。設定管理情報４０は、設定されている複数のキーイベント確定集合データ４４のアドレス４２ａ、４２ｂ、４２ｃ、４２ｄの一覧を含んでいる。各キーイベント確定集合データ４４は、その集合に属する各キーイベントの情報を示すキーイベント情報４８のアドレス４６ａ、４６ｂ、４６ｃ、４６ｄを含んでいる。そして、キーイベント情報４８は、キーイベントを特定するための情報として、押下や押上などイベントの種類を表すイベント種別５０と、どのキーに対応したイベントであるかを示すキーコード５２を含んでいる。なお、キーイベント情報４８は、キーイベントを特定可能な任意の情報であればよく、イベント種別５０およびキーコード５２をキーイベント情報４８として記述する替わりに、キーイベントごとにＩＤを割り当て、そのＩＤをキーイベント情報４８として記述してもよい。キーイベント確定集合の設定は、システム開発時に静的に組み込んでおく他、アプリケーションの要求に応じて動的に任意のタイミングで設定することも可能である。このキーイベント確定集合は、単一のキーイベントだけではキー操作の結果が確定しないようなキーイベントを構成要素とし、キー操作が確定されるのに必要なキーイベント全てを含むように設定される。
【００４９】
キーイベント保持部２４は、少なくとも単一のキーイベントだけでは操作結果が確定しないようなキーイベントを一時的に保持するものであり、保持すべきキーイベントを一時的に保持可能なメモリなどの記憶装置により実現される。キーイベント保持部２４の保持データの構造の一例を図７に示す。保持データ５４は、保持されるイベントデータ５８のアドレス５６ａ、５６ｂ、５６ｃ、５６ｄ、５６ｅの一覧を保持している。各イベントデータ５８は、押下や押上などイベントの種類を表すイベント種別６０と、そのイベントが発生した時点におけるフォーカスウィンドウを識別するためのウィンドウ識別子６２と、イベント発生時刻６４と、どのキーに対応したイベントであるかを示すキーコード６６を含んでいる。ただし、このイベントデータ５８は、イベントを通知するウィンドウシステム３２の仕様に依存しており、前述のイベント種別６０、ウィンドウ識別子６２、イベント発生時刻６４、キーコード６６のうちのいずれか不必要なものが除かれている場合がある。また、イベントデータ５８に、イベントが発生した画面上の座標や、複数の画面が存在する場合には画面を特定するための画面識別子などが含まれている場合もある。
【００５０】
単一のキーイベントだけでは操作結果が確定しないようなキーイベントだけがキーイベント保持部２４に格納される場合には、キーイベント保持部２４に保持されるキーイベントは、配送キーイベント決定部２２に設定されているいずれかのキーイベント確定集合に含まれているキーイベントに限られる。
【００５１】
キーイベント変換部２０は、配送キーイベント決定部２２で決定されたキーイベントを別のキーイベントに変換する。キーイベントの変換方法としては、複数のキーイベントを合成して他の一つのキーイベントに変換する方法、単一のキーイベントを複数のキーイベントに変換する方法、一つのキーイベントを他の一つのキーイベントに変換する方法などがある。複数のキーイベントの合成は、例えば右キー押下イベントと上キー押下イベントが配送すべきキーイベントとして決定された場合、これら２つのキーイベントを右上キー押下イベントに変換することである。単一のキーイベントから複数のキーイベントへの変換は、先の例の逆であり、例えば右上キー押下イベントを、右キー押下イベントと上キー押下イベントに変換することである。一つのキーイベントから他の一つのキーイベントへの変換は、例えば右キー押下イベントを上キー押下イベントに変換することである。このような変換は、これらの例に挙げたような変換ルールを予めキーイベント変換部２０に設定しておき、配送キーイベント決定部２２によって配送すべきキーイベントとして決定されたキーイベントを、キーイベント変換部２０がその変換ルールに従って変換することで実現される。また、キーイベント変換部２０は必ずしも全てのキーイベントを変換するわけではなく、変換対象でないキーイベントについては、何も行わずにキーイベント配送部１８に通知する。
【００５２】
キーイベント配送部１８は、キーイベント変換部２０から通知されたキーイベントをグラブウィンドウ１０に通知する。グラブウィンドウ１０のイベントキューにキーイベントを書き込む等により、イベントの配送が実現される。
【００５３】
キーイベント削除部２６は、キーイベント取得部３０からの通知を受け、キーイベント制御装置１２が特定のキーイベントを取得することをトリガとして、キーイベント保持部２４に保持されている特定のキーイベントを削除する。
【００５４】
一例をあげて説明すると、キーイベントａの取得をトリガにキーイベントｂを削除する場合では、キーイベント取得部３０からキーイベントａの取得が通知された際に、キーイベント保持部２４にキーイベントｂが保持されていればキーイベント削除部２６はそれを削除する。キーイベント保持部２４にキーイベントｂが保持されていない場合はキーイベント削除部２６は何も行わない。なお、キーイベントａを取得したときにキーイベントｂとｃを削除する等のように、削除対象となるキーイベントを複数にすることも可能である。
【００５５】
このキーイベント削除のルールは、特定のキーイベント取得時に以前のキーイベントをキャンセルする必要がある場合に設定される。一例を挙げて説明すると、あるキーの短押と長押でそれぞれ短押キーイベント、長押キーイベントが通知される場合は、長押下キーイベント取得時に、その直前に通知された短押下キーイベントをキャンセルする必要があるため、長押下キーイベントをトリガとして、短押下キーイベントを削除するルールを設定する。また、同様に長押上キーイベント取得時に短押上キーイベントを削除するルールも設定する。また、キーイベントの種類に押上と押下がある場合は、押下キーイベント取得時に、キーイベント保持部２４に保持された押上キーイベントを削除することで、以前のキー操作で発行された押上イベントがキーイベント保持部２４に残っていることに対する誤動作を防ぐことが出来る。
【００５６】
保持内容クリア部２８は、キーイベント制御装置１２がキーイベントを一定時間取得しなかった場合、キーイベント保持部２４が保持するキーイベントを全て削除する。保持内容クリア部２８は、キーイベントを取得しなかった時間を計測するタイマを持ち、キーイベント取得部３０からの通知に基づいて、キーイベント制御装置１２がキーイベントを取得するごとにタイマのリセットを行い、タイマの時間が前もって設定されている一定値を超えた時にキーイベント保持部２４の保持内容をクリアすることで実現される。
【００５７】
以下に、一例を挙げて具体的に説明する。あるキーの短押と長押でそれぞれ短押キーイベント、長押キーイベントが通知される場合は、短押下キーイベントのみでは、その後長押し操作が行われる可能性があるために、キー操作が確定せず、短押下キーイベントと短押上キーイベントの両方が揃って初めて短押し操作が確定するので、短押下キーイベントと短押上キーイベントの２つを構成要素とするキーイベント確定集合を配送キーイベント決定部２２において設定する。配送キーイベント決定部２２は、キーイベント保持部２４が保持するキーイベントと、設定されたキーイベント確定集合とを比較し、あるキーイベント確定集合に属するキーイベントが全てキーイベント保持部２４に保持されている場合、それらのキーイベントを配送キーイベントとして確定する。
【００５８】
一例をあげて説明すると、キーイベントａ、ｂ、ｃの３つがあり、キーイベント確定集合として、キーイベントａとキーイベントｂで構成される組Ｘ、キーイベントａとキーイベントｃで構成される組Ｙが設定されている場合、キーイベントａのみがキーイベント保持部２４に保持されている時は、配送キーイベント決定部２２は何も行わない。その後、キーイベント保持部２４にキーイベントｂが追加保持された時には、キーイベント確定集合Ｘに属するキーイベントａ、ｂが全て保持されているので、キーイベントａ、ｂを配送キーイベントとして確定し、これらキーイベントａ、ｂをキーイベント保持部２４から削除した上で、これらキーイベントａ、ｂをキーイベント変換部２０に通知する。同様に、キーイベントａが保持されている時にキーイベントｃが保持内容に追加されると、キーイベント確定集合Yに属するキーイベントａ、ｃが全て揃うので、キーイベントａ、ｃを配送キーイベントとして確定する。また、キーイベントｂ、ｃが保持されている時にキーイベントａが保持内容に追加された場合は、キーイベントｂ、ｃのうち先に保持されているものとキーイベントａとの組を作る方法や、キーイベント確定集合に優先順位を付ける方法などで、キーイベント確定集合ＸまたはＹのどちらに属するキーイベントを配送するか決定する。
【００５９】
キーイベントａ、ｂ、ｃ、ｄの４つがあり、キーイベント確定集合として、キーイベントａとキーイベントｂで構成される組Ｘ、キーイベントａとキーイベントｃで構成される組Ｙが設定されている場合は、組Ｘ、Ｙの構成要素であるキーイベントａ、ｂ、ｃはキーイベント保持部２４に保持され、キーイベントｄはキーイベント保持部２４に保持されずにキーイベント変換部２０経由でキーイベント配送部１８へ通知される。
【００６０】
また、解決すべき課題として先に挙げたように、キーの状態変化をグラブウィンドウ１０に直ちに通知することが必要な場合は、直ちに取得したいキーイベントが属するキーイベント確定集合を無効にすることで実現可能である。先にあげた例を用いて説明すると、キーイベントｂを直ちに取得したい場合には、キーイベント確定集合Ｘを無効にすることによって、キーイベントｂはキーイベント保持部２４に保持されることなくキーイベント変換部２０経由でキーイベント配送部１８に通知され、キーイベント配送部１８からグラブウィンドウ１０に通知される。
【００６１】
次に、本発明の実施の形態１におけるキーイベント優先取得要求処理の流れを図８のフローチャートを参照して説明する。
【００６２】
まず、優先取得受付部１４は、グラブウィンドウ１０から優先取得を要求されたキーイベントを受け付け、この要求を記憶し、優先取得要求部１６に要求を受け付けた旨を通知する（Ｓ１０）。
【００６３】
次に、優先取得要求部１６は、優先取得を要求されたキーイベントの種類を取得し、そのキーイベントが、優先取得要求部１６の内部で保持しているキーイベント要求集合の何れかに含まれているかどうかをチェックする（Ｓ１２）。そのキーイベントが何れかのキーイベント要求集合に含まれていた場合（Ｓ１２でＹＥＳ）には、優先取得要求部１６は、そのキーイベントの含まれているキーイベント要求集合の要素全てに対してウィンドウシステム３２に優先取得要求を行う（Ｓ１４）。一方、そのキーイベントが何れのキーイベント要求集合にも含まれていなかった場合（Ｓ３０２がＮＯ）には、優先取得要求部１６は、そのキーイベントに対してのみウィンドウシステム３２に優先取得要求を行う（Ｓ１６）。
【００６４】
次に、実施の形態１におけるキーイベントのフィルタリング処理の流れを図９のフローチャートを参照して説明する。
【００６５】
まず、キーイベント取得部３０が、ウィンドウシステム３２からキーイベントを取得し、配送キーイベント決定部２２に取得したキーイベントを通知し、保持内容クリア部２８とキーイベント削除部２６にキーイベントを取得した旨を通知する（Ｓ１８）。そして、保持内容クリア部２８は、タイマをリセットする（Ｓ２０）。キーイベント削除部２６は、削除のトリガとなるキーイベントを取得した場合、その削除の対象となるキーイベントがキーイベント保持部２４に保持されているかどうかをチェックし（Ｓ２２）、保持されていた場合（Ｓ２２でＹＥＳ）、キーイベント削除部２６は削除対象となるキーイベントをキーイベント保持部２４から削除する（Ｓ２４）。
【００６６】
次に、配送キーイベント決定部２２は、取得したキーイベントのみで操作が確定するかどうか、言い換えると他のキーイベントが通知されるまでキー操作が確定しないかどうかをチェックする（Ｓ２６）。これは、配送キーイベント決定部２２に設定された何れかのキーイベント確定集合に取得したキーイベントが含まれているか否かによって判断される。取得したキーイベントが何れのキーイベント確定集合にも含まれていなかった場合（Ｓ２６でＹＥＳ）、処理はステップＳ３８に遷移する。一方、取得したキーイベントが何れかのキーイベント確定集合に含まれていた場合は（Ｓ２６でＮＯ）、キーイベント保持部２４に、取得したキーイベントを保持する（Ｓ２８）。
【００６７】
次に、配送キーイベント決定部２２が、設定されたキーイベント確定集合のうち、その構成要素となるキーイベントが全てキーイベント保持部２４に保持されているような組（キーイベント確定集合）が存在するかどうかをチェックする（Ｓ３０）。そして、該当する組が存在していた場合は、その組に属するキーイベント全てを配送キーイベントとして決定し、これらの配送キーイベントをキーイベント変換部２０に通知する（Ｓ３２）。その後、キーイベント変換部２０が、これらの配送キーイベントを変換するルールがあるかどうかをチェックし（Ｓ３４）、該当するルールがあった場合は、これらの配送キーイベントをそのルールに従って変換する（Ｓ３６）。
【００６８】
キーイベント配送部１８は、ステップＳ２６のチェックで何れのキーイベント確定集合にも含まれないと判断されたキーイベント、ステップＳ３６で変換された場合は変換後の配送キーイベント、およびステップＳ３６で変換されない場合はＳ３２で決定された配送キーイベントを、グラブウィンドウ１０に配送する（Ｓ３８）。
【００６９】
なお、図９のフローチャートには示されていないが、保持内容クリア部２８は、ウィンドウシステム３２からキーイベント制御装置１２にキーイベントが通知されていない時間を計測するタイマのカウント値が一定値を超えると、キーイベント保持部２４の保持内容をクリアする。
【００７０】
以上により、キーイベント制御装置１２が、キー操作の過程でウィンドウシステム３２から発行されたキーイベントを必要に応じて一時保持し、キー操作が確定してからグラブウィンドウ１０にキーイベントを通知することにより、キー操作過程で発行されるキーイベントによる誤動作を防ぐことが可能となる。
【００７１】
なお、キー状態の変化をグラブウィンドウ１０に直ちに通知する必要がある場合は、配送キーイベント決定部２２に設定されているキーイベント確定集合を無効にすることで実現可能である。
【００７２】
また、保持内容クリア部２８やキーイベント変換部２０は、必要がない場合は取り除いても良い。
【００７３】
また、キーイベント削除部２６と同等の機能を、キーイベント削除部２６を設けずに実現する方法もある。その場合は、まずキーイベント確定集合を構成する各キーイベント情報４８に、キーイベント確定集合に属するキーイベントが全て揃った時に、どのキーイベントを配送し、どのイベントを配送しないかを指定する配送可・不可フラグを追加する。そして、配送キーイベント決定部２２は、キーイベント保持部２４においてキーイベント確定集合１０２に属する全てのキーイベントが揃った時（Ｓ３０でＹＥＳ）に、Ｓ３２において、配送可・不可フラグが“配送可”になっているものだけを配送キーイベントとし、“配送不可”になっているものはキーイベント保持部２４から削除する。これによって、キーイベント削除部２６が無くても、キー操作過程発生するキーイベントを抑制し、キー操作の結果となるキーイベントのみを配送することが可能となる。
【００７４】
（実施の形態２）
本発明の実施の形態２として、実施の形態１とは異なるキーイベントのフィルタリング処理を行うキーイベント制御装置の例について説明する。
【００７５】
図１０は、本発明の実施の形態２におけるキーイベント制御装置の構成の一例を示すブロック図である。なお、図１０において、図１と同様の構成には同一の参照符号を付し、説明を省略する。
【００７６】
図１０のキーイベント制御装置６８は、優先取得受付部１４と、優先取得要求部１６と、キーイベント配送部１８と、キーイベント生成部７０と、押下キーイベント破棄部７２と、押上キーイベント破棄部７４と、キーイベント取得部３０とを備えている。
【００７７】
優先取得受付部１４と、優先取得要求部１６と、キーイベント配送部１８と、キーイベント取得部３０は、実施の形態１の場合と同様なので説明を省略する。
【００７８】
押上キーイベント破棄部７４は、内部に破棄対象を記憶しており、キーイベント取得部３０から通知されるキーイベントのうち、その破棄対象と一致する押上キーイベントを破棄する。また、押上キーイベント破棄部７４は、押上キーイベントを１つ破棄するとそのキーイベントを破棄対象から外す。初期状態では押上キーイベント破棄部７４の破棄対象はなく、キーイベント取得部３０から押下キーイベント（仮に“Ｌ押下キーイベント”とする）を通知された時に、Ｌ押下キーイベントが発行される押下時間よりも短い押下時間で発行される押下キーイベント（仮に“Ｓ押下キーイベント”とする）が存在する場合、Ｓ押下キーイベントと対になるＳ押上キーイベントを破棄対象に設定する。
【００７９】
押上キーイベント破棄部７４の処理について一例を挙げて説明する。あるキーＸを押した時に押下キーイベントＸ０が発生し、その後Ｔ１時間押し続けると押下キーイベントＸ１が、Ｔ２（Ｔ１＜Ｔ２）時間押し続けると押下キーイベントＸ２がそれぞれ発生し、さらにキーＸの押し上げ時に押上キーイベントＸ０と、Ｔ１時間以上押し続けた後でキーＸを押し上げた場合は押上キーイベントＸ１と、Ｔ２時間以上押し続けた後でキーＸを押し上げた場合は押上キーイベントＸ２が発生する場合において、押下キーイベントＸ０取得時には、それより短い押下時間で発生するキーイベントは無いので、押上キーイベント破棄部７４は何もしない。押下キーイベントＸ１取得時には、押下キーイベントＸ１より短い押下時間で発生する押下キーイベント（押下キーイベントＸ０）が存在するため、押上キーイベント破棄部７４は、それに対応する押上キーイベントＸ０を破棄対象として設定する。押下キーイベントＸ２取得時には、押下キーイベントＸ２より短い押下時間で発生する押下キーイベント（押下キーイベントＸ０および押下キーイベントＸ１）が存在するため、押上キーイベント破棄部７４は、それらに対応する押上キーイベントＸ０および押上キーイベントＸ１を破棄対象として設定する。その後、押上キーイベント破棄部７４は、押上キーイベントＸ０取得時には、押上キーイベントＸ０が破棄対象に設定されていれば、押上キーイベントＸ０を破棄した後、押上キーイベントＸ０を破棄対象から外す。同様に、押上キーイベントＸ１取得時には、押上キーイベントＸ１が破棄対象に設定されていれば、押上キーイベントＸ１を破棄した後、押上キーイベントＸ１を破棄対象から外す。
【００８０】
キーイベント生成部７０は、それぞれのキーについて一番長くキーを押し続けた後でキーを押し上げた際に発行される押上キーイベント以外の押上キーイベントを押上キーイベント破棄部７４から取得すると、その押上キーイベントに対応する押下キーイベントを生成し、キーイベント配送部１８に通知する。前記の例を用いて説明すると、キーＸについて、一番長く押下し続けた後でキーを押し上げた際に発生する押上キーイベントは押上キーイベントＸ２である。そのため、キーイベント生成部７０は、押上キーイベントＸ０取得時に押下キーイベントＸ０を、押上キーイベントＸ１取得時に押下キーイベントＸ１をそれぞれ生成する。他のキーについても同様に、例えばキーＹの押上イベントに押上キーイベントＹ０〜Ｙ４があり、一番長い時間押下し続けた後でキーを押し上げた場合に押上キーイベントＹ４が発生するとすれば、キーイベント生成部７０は、押上キーイベントＹ０〜Ｙ３の取得に応じて押下キーイベントＹ０〜Ｙ３をそれぞれ生成する。
【００８１】
押下キーイベント破棄部７２は、それぞれのキーについて一番長くキーを押し続けた際に発行される押下キーイベント以外の押下キーイベントを破棄する。前記の例を用いて説明すると、キーＸについて、一番長く押下した場合に発生する押下キーイベントは押下キーイベントＸ２である。そのため、押下キーイベント破棄部７２は、押下キーイベントＸ０と押下キーイベントＸ１を取得時に、これを破棄する。他のキーについても同様に、例えばキーＹの押下イベントに押下キーイベントＹ０〜Ｙ４があり、一番長い時間押下した場合に押下キーイベントＹ４が発生するとすれば、押下キーイベント破棄部７２は押下キーイベントＹ０〜Ｙ３を取得時にこれらを破棄する。
【００８２】
次に、本発明の実施の形態２におけるキーイベント制御装置のキーイベントのフィルタリング処理の流れを図１１のフローチャートを参照して説明する。なお、図１１において図９と同様のステップには同一の参照符号を付している。
【００８３】
まず、キーイベント取得部３０が、ウィンドウシステム３２からキーイベントを取得し、取得したキーイベントを押上キーイベント破棄部７４に通知する（Ｓ１８）。押上キーイベント破棄部７４が、取得したキーイベントが押下キーイベントかどうかチェックする（Ｓ４０）。押下キーイベントであった場合は（Ｓ４０でＹＥＳ）、押上キーイベント破棄部７４が、その押下キーイベントより短い押下時間で発生する押下キーイベントと対になる押上キーイベントを破棄対象として自身に設定し、取得した押下キーイベントを押下キーイベント破棄部７２に通知する（Ｓ４２）。そして、押下キーイベント破棄部７２は、押上キーイベント破棄部７４から通知された押下キーイベントがキーを一番長い時間押下した時に発生するものかどうかをチェックし（Ｓ４４）、一番長い時間押下した時に発生するものでなければ（Ｓ４４でＮＯ）、それを破棄する（Ｓ４６）。また、一番長い時間押下した時に発生するものであれば（Ｓ４４でＹＥＳ）、キーイベント配送部１８に、その押下キーイベントを通知する。
【００８４】
一方、キーイベント取得部３０が取得したキーイベントが押上キーイベントであった場合は（Ｓ４０でＮＯ）、取得した押上キーイベントが破棄対象に設定されているかどうかを押上キーイベント破棄部７４がチェックする（Ｓ４８）。取得した押上キーイベントが破棄対象に設定されていた場合は（Ｓ４８でＹＥＳ）、押上キーイベント破棄部７４が、その押上キーイベントを破棄した後に（Ｓ５０）、その押上キーイベントを破棄対象から外す（Ｓ５２）。一方、取得した押上キーイベントが破棄対象に設定されていなかった場合は（Ｓ４８でＮＯ）、押上キーイベント破棄部７４が、取得した押上キーイベントをキーイベント生成部７０に通知する。そして、キーイベント生成部７０が、押上キーイベント破棄部７４から通知された押上キーイベントがキーを一番長い時間押下した後に発生するものかどうかをチェックし（Ｓ５４）、一番長い時間押下した後に発生するものであれば（Ｓ５４でＹＥＳ）押上キーイベント破棄部７４より通知されたキーイベントのみをキーイベント配送部１８に通知する。また、一番長い時間押下した後に発生するものでなければ（Ｓ５４でＮＯ）、キーイベント生成部７０は、通知された押上キーイベントに対応するキーと同じキーの押下を通知する押下キーイベントを生成し、押上キーイベント破棄部７４より通知されたキーイベントと生成した押下キーイベントをキーイベント配送部１８に通知する（Ｓ５６）。
【００８５】
最後に、キーイベント配送部１８が、キーイベント生成部７０または、押下キーイベント破棄部７２より通知されたキーイベントをグラブウィンドウ１０に配送する（Ｓ３８）。
【００８６】
以上の処理により、例えば、あるキーの短押し（０）、中押し（１）、長押し（２）に対してそれぞれ押下、押上のキーイベントが発行される場合、キーが長押しされた場合には図１２に示すように長押しを示すキーイベント（押下２、押上２）のみがキーイベント配送部１８に通知され、キーが中押しされた場合には図１３に示すように中押しを示すキーイベント（押下１、押上１）のみがキーイベント配送部１８に通知され、キーが短押しされた場合には図１４に示すように短押しを示すキーイベント（押下０、押上０）のみがキーイベント配送部１８に通知される。
【００８７】
このように、キーイベント種別に押上、押下の２種類があり、キーを押す長さによって異なったキーのイベントとして通知される場合に、キーイベント制御装置が、キー操作の過程で発行されるキーイベントを抑制し、キー操作確定時に確定されたキーイベントを通知することにより、キー操作過程で発行されるキーイベントによる誤動作を防ぐことが可能となる。
【００８８】
なお、キー状態の変化を直ちに取得したい場合は、キーイベント制御装置１２を使用せず、グラブウィンドウ１０がウィンドウシステム３２からキーイベントを直接取得することで、実現可能である。
【００８９】
（実施の形態３）
本発明の実施の形態３として、実施の形態１、２とは異なるキーイベントのフィルタリング処理を行うキーイベント制御装置の例を説明する。
【００９０】
図１５は、本発明の実施の形態３におけるキーイベント制御装置の構成の一例を示すブロック図である。なお、図１５において、図１と同様の構成には同一の参照符号を付し、説明を省略する。
【００９１】
図１５のキーイベント制御装置７６は、優先取得受付部１４と、優先取得要求部１６と、キーイベント配送部１８と、キーイベント保持部２４と、押下キーイベント処理部７８と、押上キーイベント処理部８０と、キーイベント取得部８２とを備えている。
【００９２】
優先取得受付部１４と、優先取得要求部１６と、キーイベント配送部１８と、キーイベント保持部２４は、実施の形態１の場合と同様なので説明を省略する。
【００９３】
キーイベント取得部８２は、ウィンドウシステム３２から通知されたキーイベントを取得し、キーイベントの種類に応じて押下キーイベント処理部７８または、押上キーイベント処理部８０に渡す。押下キーイベント処理部７８は、長押下キーイベントをキーイベント配送部１８に渡し、短押下キーイベントをキーイベント保持部２４に渡す。押上キーイベント処理部８０は、長押上キーイベントをキーイベント配送部１８に渡し、短押上キーイベントを受け取った場合は、キーイベント保持部２４に押下キーイベントが保持されている場合にこの保持されている押下キーイベントと受け取った短押上キーイベントをキーイベント配送部１８に渡す。
【００９４】
次に、本発明の実施の形態３におけるキーイベント制御装置のキーイベントのフィルタリング処理の流れを図１６のフローチャートを参照して説明する。なお、図１６において図９と同様のステップには同一の参照符号を付している。
【００９５】
まず、キーイベント取得部８２が、ウィンドウシステム３２からキーイベントを取得し（Ｓ１８）、取得したキーイベントが押下キーイベントならばこれを押下キーイベント処理部７８に渡し、押上キーイベントならばこれを押上キーイベント処理部８０に渡す（S５８）。
【００９６】
押下キーイベント処理部７８にキーイベントが渡された場合は、押下キーイベント処理部７８が、キーイベント取得部３０から渡されたキーイベントが長押下キーイベントか否かを判断する（Ｓ６０）。長押下キーイベントでなかった場合は（Ｓ６０でＮＯ）、そのキーイベントをキーイベント保持部２４に記憶させる（Ｓ６６）。一方、渡されたキーイベントが長押下キーイベントの場合は（Ｓ６０でＹＥＳ）、キーイベント保持部２４に記憶されている押下キーイベントを削除し（Ｓ６２）、長押下キーイベントをキーイベント配送部１８へ渡し、キーイベント配送部１８がこの渡されたキーイベントをグラブウィンドウ１０へ配送する（Ｓ６４）。
【００９７】
押上キーイベント処理部８０にキーイベントが渡された場合は、押上キーイベント処理部８０がキーイベント取得部８２から渡されたキーイベントが長押上キーイベントか否かを判断する（Ｓ６８）。長押上キーイベントでなかった場合は（Ｓ６８でＮＯ）、キーイベント保持部２４に押下キーイベントが保持されているかどうかをチェックする（Ｓ７２）。押下キーイベントが保持されていれば（Ｓ７２でＹＥＳ）、この押下キーイベントをキーイベント保持部２４から取り出してキーイベント配送部１８に渡した上で、キーイベント取得部８２から渡された押上キーイベントもキーイベント配送部１８に渡され、キーイベント配送部１８がこの渡されたキーイベントをグラブウィンドウ１０に配送する（Ｓ７６）。一方、キーイベント保持部２４に押下キーイベントが保持されていなければ（Ｓ７２でＮＯ）、キーイベント取得部８２から渡された押上キーイベントを破棄する（Ｓ７４）。また、キーイベント取得部８２から渡されたキーイベントが長押上キーイベントの場合は、そのキーイベントをキーイベント配送部１８に渡し、キーイベント配送部１８がこの渡されたキーイベントをグラブウィンドウ１０に配送する（Ｓ７０）。
【００９８】
このように、キーイベント種別に押上、押下の２種類があり、キーを押す長さによって異なったキーのイベントとして通知される場合に、キーイベント制御装置が、キー操作の過程で発行されるキーイベントを抑制し、キー操作確定時に確定されたキーイベントを通知することにより、キー操作過程で発行されるキーイベントによる誤動作を防ぐことが可能となる。
【００９９】
（実施の形態４）
本発明の実施の形態４のキーイベント制御装置の例について説明する。
【０１００】
図１７は、本発明の実施の形態４におけるキーイベント制御装置の構成の一例を示すブロック図である。なお、図１７において、図１と同様の構成には同一の参照符号を付し、説明を省略する。
【０１０１】
ウィンドウシステム３２から通知された入力キーイベントは、キーイベント制御装置９６を経由して、グラブウィンドウ１０や、フォーカスウィンドウ３４や、その他のウィンドウ８４や、他のキーイベント制御装置８３ａ、８３ｂに通知される。グラブウィンドウが複数存在する場合に、グラブウィンドウ毎にキーイベント確定集合や優先取得すべきキーイベント等のキーイベント制御装置９６の属性を設定できるように、１つのグラブウィンドウ毎に１つのキーイベント制御装置を使用する。その他のウィンドウ８４は、グラブウィンドウでもフォーカスウィンドウでもないその他のウィンドウである。他のキーイベント制御装置８３ａ、８３ｂは、キーイベント制御装置９６以外のキーイベント制御装置であり、グラブウィンドウ１０以外のグラブウィンドウがそれぞれ使用している。なお、グラブウィンドウ１０がフォーカスウィンドウ３４であってもよい。
【０１０２】
図１７のキーイベント制御装置９６は、優先取得受付部１４と、転送要求部８６と、検索部８８と、優先取得要求部１６と、キーイベント分配配送部９０と、キーイベント転送部９２と、ブロードキャスト部９４と、キーイベント変換部２０と、配送キーイベント決定部２２と、キーイベント保持部２４と、キーイベント削除部２６と、保持内容クリア部２８と、キーイベント取得部３０とを備えている。
【０１０３】
優先取得受付部１４と、優先取得要求部１６と、キーイベント変換部２０と、配送キーイベント決定部２２と、キーイベント保持部２４と、キーイベント削除部２６と、保持内容クリア部２８と、キーイベント取得部３０は、実施の形態１の場合と同様なので説明を省略する。
【０１０４】
優先取得要求部１６は、ユーザの操作結果に対応するキーイベントを確定するまでに発行され得る複数のキーイベント全てを纏めてキーイベント要求集合として保持しており、優先取得受付部１４から通知された優先取得対象のキーイベントがキーイベント要求集合の何れかに属する場合は、そのキーイベント要求集合に属するキーイベント全てに対してウィンドウシステム３２に優先取得要求する。また、その結果、優先取得要求したキーイベントが他のいずれかのキーイベント制御装置により既に優先取得されていることがウィンドウシステム３２からの応答により明らかになった場合、優先取得要求部１６は、検索部８８にその旨を通知する。
【０１０５】
検索部８８は、グラブウィンドウ１０から要求されたキーイベントが他のいずれかのキーイベント制御装置により既に優先取得されているためウィンドウシステム３２への優先取得要求に失敗したことを優先取得要求部１６から通知された時に、複数の他のキーイベント制御装置の中から、グラブウィンドウ１０から要求されたキーイベントの優先取得に既に成功しているキーイベント制御装置を検索する。この検索方法の具体例としては、優先取得要求に成功したキーイベント制御装置の識別子を共有メモリなどに記憶しておき、その共有メモリに問合せを行う方法や、検索時に全てのキーイベント制御装置に対して検索要求をブロードキャストして、その返答を取得する方法等がある。
【０１０６】
転送要求部８６は、検索部８８で見つけ出した既に優先取得に成功しているキーイベント制御装置（ここでは他のキーイベント制御装置８３ａとする）に対して、グラブウィンドウ１０が優先取得を要求したキーイベントをキーイベント制御装置９６のキーイベント取得部３０に転送するように要求する。この転送要求の通知は、XWindowSystemにおけるXSendEventに代表されるようなウィンドウシステムが提供するイベント送信機能や共有メモリ等を使用して実現される。
【０１０７】
ブロードキャスト部９４は、ブロードキャストすべきキーイベントの種類を保持しており、ブロードキャストすべきキーイベントをキーイベント変換部２０から取得した際に、現時点で作成されているウィンドウ全てにそのキーイベントをブロードキャストする。
【０１０８】
キーイベント転送部９２は、他のキーイベント制御装置８３ｂの転送要求部から転送要求を受けると、要求されたキーイベントと要求元のキーイベント制御装置８３ｂの識別子を記憶し、要求されたキーイベントを取得した場合にそのキーイベントを要求元のキーイベント制御装置８３ｂに転送する。
【０１０９】
キーイベント分配配送部９０は、配送キーイベント決定部２２で配送すべきと決定された配送キーイベント（キーイベント変換部２０で配送キーイベントが変換された場合は変換後のキーイベント）を、グラブウィンドウ１０とフォーカスウィンドウ３４に配送する。キーイベント分配配送部９０は、優先取得受付部１４がグラブウィンドウ１０から要求されたキーイベントはグラブウィンドウ１０へ、それ以外のキーイベントはフォーカスウィンドウ３４へ通知する。フォーカスウィンドウの特定には、XwindowSystemのXGetWindowFocusに代表されるようなウィンドウシステムのフォーカスウィンドウ取得機能を用いて実現される。
【０１１０】
次に、実施の形態４におけるキーイベント優先取得要求処理の流れを図１８のフローチャートを参照して説明する。なお、図１８において図８と同様のステップには同一の参照符号を付し、説明を省略する。
【０１１１】
ステップＳ１０、ステップＳ１２、ステップＳ１４、ステップＳ１６については実施の形態１と同様である。
【０１１２】
優先取得要求部１６は、ステップＳ１４またはステップＳ１６でウィンドウシステム３２にキーイベントの優先取得要求を行った後、優先取得要求の結果をチェックする（Ｓ７８）。要求したキーイベントがすでに他のキーイベント制御装置によって優先取得済みであったことにより優先取得要求が失敗した場合（Ｓ７８でＹＥＳ）は、優先取得要求部１６は検索部８８にその旨を通知する。この通知を受けて、検索部８８は、要求したキーイベントを優先取得しているキーイベント制御装置を検索する（Ｓ８０）。
【０１１３】
最後に、転送要求部８６が、検索部８８が検索したキーイベント制御装置（ここでは他のキーイベント制御装置８３ａとする）に対して、グラブウィンドウ１０によって優先取得要求されたキーイベントを転送するように転送要求を通知して処理を終了する（Ｓ８２）。
【０１１４】
次に、実施の形態４におけるキーイベント取得時の処理について説明する。実施の形態４では、図６のステップＳ１１１の処理が実施の形態１と異なっている。キーイベントを取得してから配送キーイベントを決定するまでの処理は図６のＳ１０１〜Ｓ１１０と同様のため、説明を省略する。
【０１１５】
実施の形態４のキーイベント配送処理のフローチャートを図１０に示す。まず、ブロードキャスト部９４が、キーイベント変換部２０から受け取った配送キーイベントをチェックし、内部で記憶しているブロードキャスト対象とするキーイベントの種類に含まれるか否かを判定する（Ｓ８４）。配送キーイベントがブロードキャスト対象に含まれる場合（Ｓ８４でＹＥＳ）は、ブロードキャスト部９４が、ウィンドウシステム３２が表示する全てのウィンドウに対して配送キーイベントを配送し、処理を終了する（Ｓ８６）。
【０１１６】
一方、配送キーイベントがブロードキャスト対象に含まれない場合（Ｓ８４でＮＯ）は、ブロードキャスト部９４がキーイベント転送部９２に配送キーイベントを通知し、通知を受けたキーイベント転送部９２は、受け取った配送キーイベントに対して、他のキーイベント制御装置から転送要求されているかどうかをチェックする（Ｓ８８）。配送キーイベントが転送要求されている場合（Ｓ８８でＹＥＳ）は、キーイベント転送部９２が、転送要求を行ったキーイベント制御装置（ここでは、他のキーイベント制御装置８３ｂとする）に対して、配送キーイベントを配送するとともに、この配送キーイベントをキーイベント分配配送部９０に通知する（Ｓ９０）。次に、キーイベント分配配送部９０が、キーイベント転送部９２から受け取った配送キーイベントをチェックし、グラブウィンドウ１０から要求されたキーイベントの種類に含まれるか否かをチェックする（Ｓ９２）。配送キーイベントがグラブウィンドウ１０から優先取得を要求されていた場合（Ｓ９２でＹＥＳ）は、キーイベント分配配送部９０が、配送キーイベントをグラブウィンドウ１０に配送する（Ｓ９４）。一方、配送キーイベントがグラブウィンドウ１０から優先取得を要求されてなかった場合（Ｓ９２でＮＯ）は、キーイベント分配配送部９０が、配送キーイベントをフォーカスウィンドウ３４に配送する（Ｓ９６）。
【０１１７】
以上により、キーイベント制御装置間でキーイベントの転送を行うことによって、複数のウィンドウが同時に同じキーイベントを優先取得することが可能になる。
【０１１８】
なお、ブロードキャスト部９４、検索部８８、転送要求部８６は、必要ない場合には無くても良い。
【０１１９】
また、本実施の形態において、実施の形態１で説明したキーイベントのフィルタリング処理に係る部分（キーイベント変換部２０、配送キーイベント決定部２２、キーイベント保持部２４、キーイベント削除部２６、保持内容クリア部２８）を実施の形態２で説明したもの（キーイベント生成部７０、押下キーイベント破棄部７２、押上キーイベント破棄部７４）に置き換えてもよい。
【０１２０】
（実施の形態５）
本発明の実施の形態５のキーイベント制御装置の例について説明する。
【０１２１】
図２０は、本発明の実施の形態５におけるキーイベント制御装置の構成の一例を示すブロック図である。なお、図２０において、図１５および図１７と同様の構成には同一の参照符号を付し、説明を省略する。
【０１２２】
実施の形態５が実施の形態３と異なる点は、キーイベント配送部１８の替わりにキーイベント分配配送部９０を設けた点である。キーイベント分配配送部９０は、押上キーイベント処理部７８または押下キーイベント処理部８０から渡されたキーイベントがグラブウィンドウ１０から優先取得要求されたものか否かを優先取得受付部１４に問い合わせ、優先取得要求されたものであった場合は、このキーイベントをグラブウィンドウ１０に配送する。一方、渡されたキーイベントがグラブウィンドウ１０から優先取得要求されたものでなかった場合は、このキーイベントをフォーカスウィンドウ３４に配送する。
【０１２３】
なお、以上の実施の形態１〜５のキーイベント制御装置のそれぞれは、典型的には、演算装置と、ハードディスクやＲＡＭ等の記憶装置を備えるコンピュータと、このコンピュータに上述したフローチャートの各ステップの処理を実行させるためのプログラムとを用いて実現可能である。このとき、プログラムは、記憶装置に予め格納されていてもよいし、通信回線を通じて演算装置に供給されても良いし、ＣＤ−ＲやＤＶＤ等の任意の記録媒体を通じて演算装置に供給されてもよい。
【産業上の利用可能性】
【０１２４】
本発明によれば、例えばウィンドウシステムから発行されるキーイベントのうちの所定のキーイベントだけを特定のウィンドウに優先的に配送する場合の誤動作を防止することができる。
【図面の簡単な説明】
【０１２５】
【図１】本発明の実施の形態１に係るキーイベント制御装置の構成の一例を示すブロック図
【図２】本発明のキーイベント要求集合の一例を示す図
【図３】本発明のキーイベント要求集合の他の例を示す図
【図４】本発明のキーイベント確定集合の一例を示す図
【図５】本発明のキーイベント確定集合の他の例を示す図
【図６】本発明のキーイベント確定集合のデータ構造の一例を示す図
【図７】本発明のキーイベント保持部のデータ構造の一例を示す図
【図８】本発明の実施の形態１に係るキーイベントの優先取得要求処理の流れを示すフローチャート
【図９】本発明の実施の形態１に係るキーイベントのフィルタリング処理の流れを示すフローチャート
【図１０】本発明の実施の形態２に係るキーイベント制御装置の構成の一例を示すブロック図
【図１１】本発明の実施の形態２に係るキーイベントのフィルタリング処理の流れを示すフローチャート
【図１２】本発明の実施の形態２に係るキーイベントのフィルタリング処理の具体例を示す図
【図１３】本発明の実施の形態２に係るキーイベントのフィルタリング処理の他の具体例を示す図
【図１４】本発明の実施の形態２に係るキーイベントのフィルタリング処理のさらに他の具体例を示す図
【図１５】本発明の実施の形態３に係るキーイベント制御装置の構成の一例を示すブロック図
【図１６】本発明の実施の形態３に係るキーイベントのフィルタリング処理の流れを示すフローチャート
【図１７】本発明の実施の形態４に係るキーイベント制御装置の構成の一例を示すブロック図
【図１８】本発明の実施の形態４に係るキーイベントの優先取得要求処理の流れを示すフローチャート
【図１９】本発明の実施の形態４に係るキーイベント配送処理の流れを示すフローチャート
【図２０】本発明の実施の形態５に係るキーイベント制御装置の構成の一例を示すブロック図
【図２１】従来技術おける“長押し”・“短押し”仮想キーがサポートされる場合の処理シーケンス図
【図２２】従来技術における短押し処理誤動作発生時の処理シーケンス図
【図２３】従来のウィンドウシステムにおける優先取得対象外キーの誤配送発生時の処理シーケンス図
【符号の説明】
【０１２６】
１０  グラブウィンドウ
１２  キーイベント制御装置
１４  優先取得受付部
１６  優先取得要求部
１８  キーイベント配送部
２０  キーイベント変換部
２２  配送キーイベント決定部
２４  キーイベント保持部
２６  キーイベント削除部
２８  保持内容クリア部
３０  キーイベント取得部
３２  ウィンドウシステム
３４  フォーカスウィンドウ
３６  キーイベント要求集合
３８  キーイベント確定集合
４０  設定管理情報
４２ａ〜４２ｄ  アドレス
４４  キーイベント確定集合データ
４６ａ〜４６ｄ  アドレス
４８  キーイベント情報
５０  イベント種別
５２  キーコード
５４  保持データ
５６ａ〜５６ｅ  アドレス
５８  イベントデータ
６０  イベント種別
６２  ウィンドウ識別子
６４  イベント発生時刻
６６  キーコード
６８  キーイベント制御装置
７０  キーイベント生成部
７２  押下キーイベント破棄部
７４  押上キーイベント破棄部
７６  キーイベント制御装置
７８  押下キーイベント処理部
８０  押上キーイベント処理部
８２  キーイベント取得部
８３ａ、８３ｂ  他のキーイベント制御装置
８４  その他のウィンドウ
８６  転送要求部
８８  検索部
９０  キーイベント分配配送部
９２  キーイベント転送部
９４  ブロードキャスト部
９６  キーイベント制御装置
【図１】
2006502651.tif 000003
【図２】
2006502651.tif 000004
【図３】
2006502651.tif 000005
【図４】
2006502651.tif 000006
【図５】
2006502651.tif 000007
【図６】
2006502651.tif 000008
【図７】
2006502651.tif 000009
【図８】
2006502651.tif 000010
【図９】
2006502651.tif 000011
【図１０】
2006502651.tif 000012
【図１１】
2006502651.tif 000013
【図１２】
2006502651.tif 000014
【図１３】
2006502651.tif 000015
【図１４】
2006502651.tif 000016
【図１５】
2006502651.tif 000017
【図１６】
2006502651.tif 000018
【図１７】
2006502651.tif 000019
【図１８】
2006502651.tif 000020
【図１９】
2006502651.tif 000021
【図２０】
2006502651.tif 000022
【図２１】
2006502651.tif 000023
【図２２】
2006502651.tif 000024
【図２３】
2006502651.tif 000025
【国際調査報告】
2006502651.tif 000026
2006502651.tif 000027
2006502651.tif 000028