(57)【特許請求の範囲】
【請求項１】
ネイティブコードで記述されたアプリケーションプログラムであるネイティブＡＰと、仮想マシンコードで記述されたアプリケーションプログラムである仮想マシンＡＰと、を実行可能な情報処理装置であって、
稼働中のアプリケーションに応じて予め用意されたモード毎に、前記各アプリケーションが生成する画像が対応付けられたレイヤの表示・非表示を定めたモード定義管理情報を記憶する記憶手段と、
情報処理装置のモードを変更する変更手段と、
前記モードに応じて表示が定まる前記レイヤを、ディスプレイに所定の順番で重畳して出力する出力手段と、
利用者からのキー操作を受け付ける入力手段と、を備え、
前記変更手段は、
前記キー操作により発生したキーイベントが前記アプリケーションの何れかを示すものであった場合、前記情報処理装置のモードを、前記キーイベントが示すアプリケーションに応じたモードに変更する第１の状態変更手段と、
前記ネイティブＡＰと連携した処理を行う前記仮想マシンＡＰから、稼働したことを示す通知を受け付けた場合に、前記情報処理装置のモードを、当該仮想マシンＡＰに応じたモードに変更する第２の状態変更手段と、を有し、
前記第１の状態変更手段は、前記キーイベントのイベントデータを送る送信先タスクを、前記モードに応じて決定すること
を特徴とする情報処理装置。
【請求項２】
請求項１に記載の情報処理装置であって、
前記第１の状態変更手段は、
前記送信先タスクを決定する際に、前記モード定義管理情報で管理されているモードに応じて、前記入力手段のキー種別毎に、キー操作により発生したキーイベントの送信先タスクを示すキーフォーカスを決定し、
前記情報処理装置は、
前記情報処理装置に接続されている入力装置のキー操作により発生したキーイベントを、前記第１の状態変更手段により決定されたキーフォーカスにより特定される送信先タスクに送信する送信手段をさらに有すること
を特徴とする情報処理装置。
【請求項３】
請求項１又は２に記載の情報処理装置であって、
前記入力手段のキー操作により発生したキーイベントの種別に従い、当該種別のイベントを処理するタスクのタスク優先度を高くする優先制御手段をさらに有すること
を特徴とする情報処理装置。
【請求項４】
請求項１乃至３のいずれか一項に記載の情報処理装置であって、
前記変更手段が定めたモードに応じて、前記入力手段の各キーの機能を表す文字列データを含むキー割当て表示メニューを生成する生成手段をさらに有し、
前記出力手段は、
前記生成手段が生成した前記キー割当て表示メニューの画像、および、前記表示変更手段により表示の決定がされた画像を、所定の順番で重畳して出力すること
を特徴とする情報処理装置。
【請求項５】
コンピュータで読取り可能なプログラムであって、
前記コンピュータは、
ネイティブコードで記述されたアプリケーションプログラムであるネイティブＡＰと、仮想マシンコードで記述されたアプリケーションプログラムである仮想マシンＡＰと、を実行可能であり、
前記プログラムは、前記コンピュータを、
稼働中のアプリケーションに応じて予め用意されたモード毎に、前記各アプリケーションが生成する画像が対応付けられたレイヤの表示・非表示を定めたモード定義管理情報を記憶する記憶手段、
情報処理装置のモードを変更する変更手段、
前記モードに応じて表示が定まる前記レイヤを、ディスプレイに所定の順番で重畳して出力する出力手段、
利用者からのキー操作を受け付ける入力手段、として機能させ、
前記変更手段は、
前記キー操作により発生したキーイベントが、前記アプリケーションの何れかを示すものであった場合、前記情報処理装置のモードを、前記キーイベントが示すアプリケーションに応じたモードに変更する第１の状態変更手段、
前記ネイティブＡＰと連携した処理を行う前記仮想マシンＡＰから、稼働したことを示す通知を受け付けた場合に、前記情報処理装置のモードを、当該仮想マシンＡＰに応じたモードに変更する第２の状態変更手段、として機能し、
前記第１の状態変更手段は、前記キーイベントのイベントデータを送る送信先タスクを、前記モードに応じて決定すること
を特徴とするプログラム。
【請求項６】
ネイティブコードで記述されたアプリケーションプログラムであるネイティブＡＰと、仮想マシンコードで記述されたアプリケーションプログラムである仮想マシンＡＰと、を実行可能な情報処理装置が、前記ネイティブＡＰが生成した画像および前記仮想マシンＡＰが生成した画像の表示を制御する表示画面制御方法であって、
稼働中のアプリケーションに応じて予め用意されたモード毎に、前記各アプリケーションが生成する画像が対応付けられたレイヤの表示・非表示を定めたモード定義管理情報を記憶するステップと、
利用者からのキー操作を受け付けるステップと、
前記キー操作により発生したキーイベントが、前記アプリケーションの何れかを示すものであった場合、前記情報処理装置のモードを、前記キーイベントが示すアプリケーションに応じたモードに変更するステップと、
前記キーイベントのイベントデータを送る送信先タスクを、前記モードに応じて決定するステップと、
前記ネイティブＡＰと連携した処理を行う前記仮想マシンＡＰから、稼働したことを示す通知を受け付けた場合に、前記情報処理装置のモードを、当該仮想マシンＡＰに応じたモードに変更するステップと、
前記モードに応じて表示が定まる前記レイヤを、ディスプレイに所定の順番で重畳して出力させるステップと、
を特徴とする表示画面制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＯＳ（Operating System）上でＶＭ（Virtual Machine）が稼動する情報処理装置において、ＯＳが実行するＡＰ（Application Program）の表示画面と、ＶＭが実行するＡＰの表示画面とを制御する技術に関する。
【背景技術】
【０００２】
ナビゲーション装置では、車載センサデータやＧＰＳ（Global Positioning System）データ等の車両情報取得等のための割り込み処理に対して、リアルタイム性を保証することが大切である。このため、μＩＴＲＯＮ、ＶｘＷｏｒｋｓ（登録商標）といったＲＴＯＳ（Real Time OS）上でナビゲーション用ＡＰを稼動させることが多い。
【０００３】
ナビゲーション用ＡＰは、ネイティブコード（ＯＳが直接実行できるプログラムコード）で記述する必要がある。しかし、ＲＴＯＳのネイティブコードで記述されるＡＰは、開発ツールの充実度等の点において、Ｊａｖａ（登録商標）等のＯＳに依存しないコードで記述されたＡＰ（ＶＭ用ＡＰと呼ぶ）に比べて、開発が困難であることが多い。このため、ＲＴＯＳ上でＶＭを稼動させ、該ＶＭ上でＲＴＯＳに依存しないコードで記述されたＡＰを稼動させるナビゲーション装置が提案されている（特許文献１参照）。
【０００４】
【特許文献１】特開２００１-１１７７５０号公報
【発明の開示】
【発明が解決しようとする課題】
【０００５】
ナビゲーション装置において、ＲＴＯＳは、通常、ＶＭの表示画面がナビゲーション用ＡＰの表示画面上に重畳表示されるように、ナビゲーション用ＡＰおよびＶＭの表示画面をレイヤ管理している。このため、ナビゲーション装置上で、ネイティブコードで記述されたナビゲーション用ＡＰと、ＶＭ用ＡＰとを同時に稼動させた場合に、次のような問題が生じることがある。
【０００６】
すなわち、ナビゲーション用ＡＰがＲＴＯＳにナビ画面を表示させている状態で、ユーザがＶＭ用ＡＰに割り当てられた操作キーを用いて、ＶＭ用ＡＰのメニュー呼出し操作を行ったとする。これを受けて、ＶＭ用ＡＰは、ＶＭを介してＲＴＯＳに、メニュー画面を表示させる。このメニュー画面は、ＲＴＯＳのレイヤ管理により、ナビ画面上に重畳表示される。その後、ユーザがナビゲーション用ＡＰに割り当てられた操作キーを用いて、ナビゲーション用ＡＰの設定操作を行ったとする。通常、ユーザの操作キーに対する操作は、当該操作キーが割り当てられたＡＰにのみ通知される。このため、ＶＭ用ＡＰはナビゲーション用ＡＰの設定操作が行われたことを認識できない。その結果、ＶＭ用ＡＰは、ＶＭを介してＲＴＯＳに、メニュー画面を表示させることを停止しない。したがって、ナビゲーション用ＡＰの設定操作が行われたにも関わらず、ナビ画面上にＶＭ用ＡＰの画面が表示され続けてしまう。
【０００７】
本発明は上記事情に鑑みてなされたものであり、本発明の目的は、ネイティブＡＰおよび仮想マシンＡＰの画面切替えの操作性を向上させることにある。
【課題を解決するための手段】
【０００８】
上記課題を解決するために、本発明では、情報処理装置のモードを管理し、現状のモードに応じてディスプレイに表示する画面の組合せを決定する。また、当該情報処理装置に接続される入力装置の各キーに割り当てられているＡＰを識別するためのフォーカスと呼ばれるフラグを導入する。そして、現状のモードに応じて各キーのフォーカスを決定し、いずれかのキー操作により発生したキーイベントを、当該キーのフォーカスが示すＡＰのタスクＩＤに送信する。なお、モードの遷移は、入力装置のキー操作により発生するキーイベント、あるいは、起動された所定のＡＰから通知によって行われる。
【０００９】
例えば、本発明の情報処理装置は、ネイティブコードで記述されたアプリケーションプログラムであるネイティブＡＰと、仮想マシンコードで記述されたアプリケーションプログラムである仮想マシンＡＰと、を実行可能な情報処理装置であって、稼働中のアプリケーションに応じて予め用意されたモード毎に、前記各アプリケーションが生成する画像が対応付けられたレイヤの表示・非表示を定めたモード定義管理情報を記憶する記憶手段と、情報処理装置のモードを変更する変更手段と、前記モードに応じて表示が定まる前記レイヤを、ディスプレイに所定の順番で重畳して出力する出力手段と、利用者からのキー操作を受け付ける入力手段と、を備え、前記変更手段は、前記キー操作により発生したキーイベントが前記アプリケーションの何れかを示すものであった場合、前記情報処理装置のモードを、前記キーイベントが示すアプリケーションに応じたモードに変更する第１の状態変更手段と、前記ネイティブＡＰと連携した処理を行う前記仮想マシンＡＰから、稼働したことを示す通知を受け付けた場合に、前記情報処理装置のモードを、当該仮想マシンＡＰに応じたモードに変更する第２の状態変更手段と、を有し、前記第１の状態変更手段は、前記キーイベントのイベントデータを送る送信先タスクを、前記モードに応じて決定する。
【発明の効果】
【００１０】
本発明によれば、ネイティブＡＰおよび仮想マシンＡＰの画面切替えの操作性を向上させることができる。
【発明を実施するための最良の形態】
【００１１】
以下、本発明の一実施形態を説明する。
【００１２】
図１は本発明の一実施形態が適用された車載用ナビゲーションシステムの概略図である。図示するように、車載用ナビゲーションシステムは、ナビゲーション装置本体１０と、操作パネル２０と、ＬＣＤ等のディスプレイ３１と、携帯電話機等の無線端末３２と、ＧＰＳ受信機３３と、車速センサ、方位センサ、ジャイロ等の車載センサ３４と、チューナ３５と、スピーカ３６と、を有する。
【００１３】
操作パネル２０は、ユーザから各種操作を受け付け、受け付けた操作内容に応じた信号をナビゲーション装置本体１０に送信する。
【００１４】
図２は操作パネル２０の概略図である。図示するように、操作パネル２０は、ファンクションキースイッチ群２０１と、操作キースイッチ群２０２と、ファンクションキースイッチ群２０２と、現在地付近の地図を表示させるための現在地キースイッチ２０３と、テレビ放送をディスプレイ３１に表示させるためのＴＶキースイッチ２０４と、ＪａｖａＡＰの操作メニューをディスプレイ３１に表示させるためのＪａｖａキースイッチ２０５と、を有する。
【００１５】
ファンクションキースイッチ群２０１は、特定の機能の実行を指示するためのキースイッチのスイッチ群である。ここで、ファンクションキースイッチ群２０１の実行対象は、後述するモードによって異なる。
【００１６】
操作キースイッチ群２０２は、カーソルの移動方向およびカーソルが指し示す項目の決定を指示するためのキースイッチのスイッチ群である。ここで、操作キースイッチ群２０２の操作対象も、ファンクションキースイッチ群２０１と同様に、後述するモードによって異なる。
【００１７】
ナビゲーション装置本体１０は、ＧＰＳ受信機３３から出力されるＧＰＳデータや、車載センサ３４から出力されるセンサデータを用いて現在位置を検出し、検出した現在位置の情報を基に地図表示に必要な地図メッシュデータを図示していない地図データベースから読み出す。そして、読み出した地図メッシュデータをグラフィックス展開して、そこに現在地を示すマークを重ねてディスプレイ３１に表示する（現在位置表示処理）。また、ナビゲーション装置本体１０は、現在地と所望の目的地とを結ぶ最適なルートを探索して、当該ルートを地図に重ねてディスプレイ３１に表示したり、スピーカ３７から音声ガイダンスを出力したりして、ユーザを目的地に誘導する（経路誘導処理）。また、ナビゲーション装置本体１０は、無線端末３２を介して、基地局４０およびネットワーク（インターネット等）４１経由で情報サーバ４２にアクセスし、所望の情報（ＰＯＩ（Point Oｆ Interrest）情報や、現在位置付近の交通情報、店舗情報や、音楽コンテンツ等）を入手する。そして、ＰＯＩ情報や現在位置付近の交通情報、店舗情報等をディスプレイ３１に表示したり、音楽コンテンツを再生してスピーカ３６か出力する（情報収集処理）。また、ナビゲーション装置本体１０は、チューナ３５に選局させたＴＶ信号を処理して、映像および音声をディスプレイ３１およびスピーカ３６から出力する（ＴＶ受信処理）。また、ナビゲーション装置本体１０は、上述の処理の他、様々な処理を行う中心的なユニットである。
【００１８】
図３はナビゲーション装置本体１０のソフトウエア構成図である。
【００１９】
図示するように、ナビゲーション装置本体１０は、μＩＴＲＯＮ、ＶｘＷｏｒｋｓ（登録商標）等のＲＴＯＳ１０１と、デバイスドライバ１０２と、ナビ機能ネイティブＡＰ１０３と、ナビＨＭＩ（Human Machine Interface）１０４と、テレビ機能ネイティブＡＰ１０５と、テレビＨＭＩ１０６と、ＪａｖａＶＭ１０７と、Ｊａｖａアプリケーションプラットフォーム１０８と、ＴＶ連携ＪａｖａＡＰ１０９と、ナビ連携ＪａｖａＡＰ１１０と、ＪａｖａＡＰ１１１とを有する。
【００２０】
ナビ機能ネイティブＡＰ１０３およびテレビ機能ネイティブＡＰ１０５は、いずれもＲＴＯＳ１０１が直接実行できるネイティブコードで記述されたネイティブＡＰである。
【００２１】
ナビ機能ネイティブＡＰ１０３は、ナビゲーション装置としての機能（現在位置表示処理、経路誘導処理）を実現するためのプログラムである。テレビ機能ネイティブＡＰ１０５は、テレビ受信機としての機能（ＴＶ受信処理）を実現するためプログラムである。
【００２２】
ナビＨＭＩ１０４は、ナビ機能ネイティブＡＰ１０３が提供する機能を利用するためのＨＭＩである。操作パネル２０に入力されたナビ機能ネイティブＡＰ１０３に対する指示は、ＲＴＯＳ１０１およびデバイスドライバ１０２を介して、ナビＨＭＩ１０４に送られる。ナビＨＭＩ１０４は、受け取った指示をナビ機能ネイティブＡＰ１０３に通知する。
【００２３】
テレビＨＭＩ１０６は、テレビ機能ネイティブＡＰ１０５が提供する機能を利用するためのＨＭＩである。操作パネル２０に入力されたテレビ機能ネイティブＡＰ１０５に対する指示は、ＲＴＯＳ１０１およびデバイスドライバ１０２を介して、テレビＨＭＩ１０６に送られる。テレビＨＭＩ１０６は、受け取った指示をテレビ機能ネイティブＡＰ１０５に通知する。
【００２４】
ＪａｖａＶＭ１０７は、ＲＴＯＳ１０１が直接実行できないＪａｖａバイトコードで記述されたＪａｖａＡＰを実行できるようにするためのプログラムであり、ＲＴＯＳ１０１が直接実行できるネイティブコードで記述されたネイティブＡＰである。ＪａｖａＶＭ１０７には、ＡＷＴ、ネイティブメソッドインタフェース、Ｊａｖａバイトコードインタプリタ等のライブラリを有する。なお、ＡＷＴは、ＪａｖａにおいてＧＵＩを実現するウィンドウツールキットである。フレーム、ボタン、プルダウンメニュー、テキストボックスなどのＧＵＩ部品を保持し、これらを組み合わせてアプリケーションを構成することができる。ネイティブメソッドインタフェースは、ＪａｖａＡＰからネイティブＡＰを呼び出したり、あるいは、ネイティブＡＰからＪａｖａＡＰを呼び出すためのインタフェースである。Ｊａｖａバイトコードインタプリタは、Ｊａｖａバイトコードを解釈実行する。
【００２５】
Ｊａｖａアプリケーションプラットフォーム１０８は、ＪａｖａＶＭ１０７が様々なＪａｖａＡＰを実行できるようにするためのプラットフォームである。Ｊａｖａアプリケーションプラットフォーム１０８としては、ＡＭＩ-Ｃ、ＩＩＣ等のコンソーシアムにおいてＯＳＧｉ（Open Services Gateway Initiative）が策定した仕様をベースとするのもが提案されている。
【００２６】
テレビ連携ＪａｖａＡＰ１０９、ナビ連携ＪａｖａＡＰ１１０およびＪａｖａＡＰ１１１は、いずれもＪａｖａバイトコードで記述されたＪａｖａＡＰである。
【００２７】
テレビ連携ＪａｖａＡＰ１０９は、テレビ機能ネイティブＡＰ１０５と連携して処理を行う。具体的には、情報サーバ４２にアクセスして番組表データを入手してユーザに提示し、所望の番組を選択させる。そして、選択された番組をテレビ機能ネイティブＡＰ１０５に通知する。これを受けて、テレビ機能ネイティブＡＰ１０５は、通知された番組を選局するようにチューナ３５を制御し、チューナ３５で受信されたテレビ放送信号を復調しディスプレイ３１およびスピーカ３６から出力する。
【００２８】
ナビ連携ＪａｖａＡＰ１１０は、ナビ機能ネイティブＡＰ１０３と連携して処理を行う。具体的には、情報サーバ４２にアクセスしてＰＯＩ情報を入手してユーザに提示し、所望のＰＯＩ情報を選択させる。そして、選択されたＰＯＩ情報をナビ機能ネイティブＡＰ１０３に通知する。これを受けて、ナビ機能ネイティブＡＰ１０３は、通知されたＰＯＩ情報により特定される地点を地点登録する。
【００２９】
ＪａｖａＡＰ１１１は、音楽コンテンツを再生するアプリケーションである。具体的には、情報サーバ４２にアクセスして楽曲リストを入手してユーザに提示し、所望の音楽コンテンツを選択させる。そして、選択された音楽コンテンツを情報サーバ４２からダウンロードし再生して、スピーカ３６から出力する。
【００３０】
デバイスドライバ１０２は、ＲＴＯＳ１０１がナビゲーション装置本体１０の各部を制御したり、ナビゲーション装置本体１０に接続された各装置と情報のやり取りを行ったりするためのドライバである。図示するように、キードライバ１０２１と、グラフィックスドライバ１０２３とを有する。
【００３１】
キードライバ１０２１は、図４に示すように、操作パネル２０のいずれかのキーが操作された場合に、当該キーに割り当てられているキーコード１０２６と、当該キーの状態（押圧状態および解放状態のいずれか）１０２７と、を有するイベントデータ１０２５を生成し、イベントキュー１０２２に格納する。また、キードライバ１０２１は、最も古くベントキュー１０２２に格納されたイベントデータ１０２２から順番に取り出して、キーイベント処理部１１２に送信する。
【００３２】
グラフィックスドライバ１０２３は、図５に示すように、複数のレイヤ用バッファ１０２３１〜１０２３５と、レイヤスイッチ１０２３６と、レイヤ合成処理部１０２３７と、を有する。レイヤ用バッファ１０２３１〜１０２３５は、予め割り当てられたＡＰ（もしくは機能）が生成するイメージをバッファリングするフレームバッファである。図５に示す例では、ナビ機能ネイティブＡＰ１０３の地図表示機能が生成する地図イメージをバッファリングするための地図表示レイヤ用バッファ１０２３１と、テレビ機能ネイティブＡＰ１０５が生成するテレビ画面イメージをバッファリングするためのテレビ画面表示レイヤ用バッファ１０２３２と、ナビ機能ネイティブＡＰ１０３が生成するナビ画面イメージをバッファリングするためのナビ画面表示レイヤ用バッファ１０２３３と、ＪａｖａＶＭ１０７が生成するイメージ（Ｊａｖａ画面イメージ）をバッファリングするためのＪａｖａ画面表示レイヤ用バッファ１０２３４と、後述するキーイベント処理部１１２が生成するファンクションキー割当て表示メニューの画面イメージをバッファリングするためのファンクションキー表示レイヤ用バッファ１０２３５と、を有する。
【００３３】
レイヤスイッチ１０２３６は、レイヤ用バッファ１０２３１〜１０２３５各々にバッファリングされているイメージの出力をオン・オフする。なお、どのイメージの出力をオン・オフするかは、後述するキーイベント処理部１１２よりの指示に従う。
【００３４】
レイヤ合成処理部１０２３７は、レイヤスイッチ１０２３６から出力された各イメージを、当該イメージをバッファリングしていたレイヤ用バッファ１０２３１〜１０２３５に付与されている順番に従って重ね合わせて合成する。そして、合成イメージをディスプレイ３１に出力する。
【００３５】
キーイベント処理部１１２は、キードライバ１０２１からイベントデータを受信し、該イベントデータをそのときのモードに応じて定まるイベント送信先に送信する。また、キーイベント処理部１１２は、受信したイベントデータに基づいて、モード変更の必要性を判断する。そして、変更が必要と判断したならば、モードを変更すると共に、変更後のモードに応じて定まるレイヤのみディスプレイ３１に表示されるように、グラフィックスドライバ１０２３に指示を出力する。
【００３６】
図６はキーイベント処理部１１２の概略図である。
【００３７】
図示するように、キーイベント処理部１１２は、状態管理テーブル１１２１と、キーマップ管理テーブル１１２２と、モード定義管理テーブル１１２３と、イベント送信先管理テーブル１１２４と、ファンクションキー割当て表示管理テーブル１１２５と、テーブル設定部１１２６と、イベントデータ受信部１１２７と、フォーカス変更処理部１１２８と、タスク優先制御処理部１１２９と、ファンクションキー割当て表示処理部１１３０と、キーイベント送信部１１３１と、を有する。
【００３８】
状態管理テーブル１１２１は、ナビゲーション装置本体１０の現在の状態を管理するためのテーブルである。図７は状態管理テーブル１１２１を模式的に表した図である。図示するように、状態管理テーブル１１２１には、状態を管理する項目毎にレコード１１２１０が設けられている。レコード１１２１０は、管理する項目を登録するフィールド１１２１１と、該項目の状態値を登録するフィールド１１２１２と、を有する。
【００３９】
本実施形態では、フィールド１１２１１に登録する項目として、「モード」、「操作キーフォーカス」、「ファンクションキーフォーカス」、「地図表示レイヤ」、「テレビ画面レイヤ」、「ナビ画面レイヤ」、「Ｊａｖａ画面レイヤ」、「ファンクションキー表示レイヤ」を用意している。
【００４０】
ここで、項目「モード」は、アクティブ（稼動中）となっているアプリケーションによって定まるナビゲーション装置本体１０の動作モードである。本実施形態では、モードとして、ナビ機能ネイティブＡＰ１０３のみアクティブとなっている「ナビモード」、ＪａｖａＡＰ１１１のみがアクティブとなっている「Ｊａｖａモード」、テレビ機能ネィティブＡＰ１０５のみがアクティブとなっている「ＴＶモード」、ナビ機能ネイティブＡＰ１０３およびナビ連携ＪａｖａＡＰ１１０がアクティブとなっている「ナビ連携Ｊａｖａモード」、そして、テレビ機能ネイティブＡＰ１０５およびテレビ連携ＪａｖａＡＰ１０９がアクティブとなっている「テレビ連携Ｊａｖａモード」を設けている。したがって、項目「モード」のレコード１１２１０のフィールド１１２１２には、「ナビモード」、「Ｊａｖａモード」、「ＴＶモード」、「ナビ連携Ｊａｖａモード」および「テレビ連携Ｊａｖａモード」のいずれかが登録される。
【００４１】
項目「操作キーフォーカス」は、操作キー群２０２に割当てられているＡＰを示すフラグである。上述したように、操作キー群２０２は、モードによって操作対象となるＡＰが異なる。本実施形態では、操作キーフォーカスとして、ナビ機能ネィティブＡＰ１０３が割当てられている状態を示す「ナビ」、テレビ機能ネィティブＡＰ１０５が割当てられている状態を示す「テレビ」、そして、ＪａｖａＡＰ１０９〜１１１のいずれかが割当てられている状態を示す「Ｊａｖａ」を設けている。したがって、項目「操作キーフォーカス」のレコード１１２１０のフィールド１１２１２には、「ナビ」、「テレビ」および「Ｊａｖａ」のいずれかが登録される。
【００４２】
項目「ファンクションキーフォーカス」は、ファンクションキー群２０１に割当てられているＡＰを示すフラグである。上述したように、ファンクションキー群２０１も、操作キー群２０２と同様、モードによって実行対象となるＡＰが異なる。本実施形態では、ファンクションキーフォーカスとして、ナビ機能ネィティブＡＰ１０３が割当てられている状態を示す「ナビ」、テレビ機能ネィティブＡＰ１０５が割当てられている状態を示す「テレビ」、そして、ＪａｖａＡＰ１０９〜１１１のいずれかが割当てられている状態を示す「Ｊａｖａ」を設けている。したがって、項目「ファンクションキーフォーカス」のレコード１１２１０のフィールド１１２１２には、「ナビ」、「テレビ」および「Ｊａｖａ」のいずれかが登録される。
【００４３】
項目「地図表示レイヤ」は、グラフィックスドライバ１０２３の地図表示レイヤ用バッファ１０２３１に格納されているイメージデータ（ナビ機能ネイティブＡＰ１０３が生成した地図データ）である。グラフィックスドライバ１０２３のレイヤスイッチ１０２３６に該イメージデータを表示させる場合、項目「地図表示レイヤ」のレコード１１２１０のフィールド１１２１２に「表示」が登録され、表示させない場合、当該フィールド１１２１２に「非表示」が登録される。
【００４４】
項目「テレビ画面レイヤ」は、グラフィックスドライバ１０２３のテレビ画面レイヤ用バッファ１０２３２に格納されているイメージデータ（テレビ機能ネイティブＡＰ１０５が生成したテレビ画面データ）である。グラフィックスドライバ１０２３のレイヤスイッチ１０２３６に該イメージデータを表示させる場合、項目「テレビ画面レイヤ」のレコード１１２１０のフィールド１１２１２に「表示」が登録され、表示させない場合、当該フィールド１１２１２に「非表示」が登録される。
【００４５】
項目「ナビ画面レイヤ」は、グラフィックスドライバ１０２３のナビ画面レイヤ用バッファ１０２３３に格納されているイメージデータ（ナビ機能ネイティブＡＰ１０３が生成した地図データ以外のナビ画面データ）である。グラフィックスドライバ１０２３のレイヤスイッチ１０２３６に該イメージデータを表示させる場合、項目「ナビ画面レイヤ」のレコード１１２１０のフィールド１１２１２に「表示」が登録され、表示させない場合、当該フィールド１１２１２に「非表示」が登録される。
【００４６】
項目「Ｊａｖａ画面レイヤ」は、グラフィックスドライバ１０２３のＪａｖａ画面レイヤ用バッファ１０２３４に格納されているイメージデータ（いずれかのＪａｖａＡＰ１０９〜１１１が生成したＪａｖａ画面データ）である。グラフィックスドライバ１０２３のレイヤスイッチ１０２３６に該イメージデータを表示させる場合、項目「Ｊａｖａ画面レイヤ」のレコード１１２１０のフィールド１１２１２に「表示」が登録され、表示させない場合、当該フィールド１１２１２に「非表示」が登録される。
【００４７】
項目「ファンクションキー表示レイヤ」は、グラフィックスドライバ１０２３のファンクションキー表示レイヤ用バッファ１０２３５に格納されているイメージデータ（キーイベント処理部１１２が生成したファンクションキーのメニュー画面データ）である。グラフィックスドライバ１０２３のレイヤスイッチ１０２３６に該イメージデータを表示させる場合、項目「ファンクションキー表示レイヤ」のレコード１１２１０のフィールド１１２１２に「表示」が登録され、表示させない場合、当該フィールド１１２１２に「非表示」が登録される。
【００４８】
キーマップ管理テーブル１１２２は、操作されたキーの種別、および、該操作されたキーにＪａｖａＡＰ１０９〜１１１が割当てられている場合にはＪａｖａイベントを、イベントデータ１０２５のキーコード１０２６から決定するためのキーマップを管理するテーブルである。図８はキーマップ管理テーブル１１２２を模式的に表した図である。図示するように、キーマップ管理テーブル１１２２には、操作パネル２０の各キースイッチに割当てられているキーコード毎にレコード１１２２０が設けられている。レコード１１２２０は、キーコードを登録するフィールド１１２２１と、該キーコードが割当てられたキースイッチの名称を登録するフィールド１１２２２と、該キーコードが割当てられたキースイッチのキー種別を登録するフィールド１１２２３と、該キーコードが割当てたれたキースイッチにＪａｖａＡＰ１０９〜１１１が割当てられている場合に、当該キースイッチに割当てるＪａｖａイベントを登録するフィールド１１２２４と、を有する。
【００４９】
本実施形態では、キー種別として、ファンクションキースイッチ群２０１のいずれかに属することを示す「ファンクションキー」、操作キースイッチ群２０２のいずれかに属することを示す「操作キー」、現在地付近の地図を表示させるための現在地キースイッチ２０３であることを示す「ナビキー」、テレビ放送をディスプレイ３１に表示させるためのＴＶキースイッチ２０４であることを示す「テレビキー」、そして、ＪａｖａＡＰ１０９〜１１１の操作メニューをディスプレイ３１に表示させるためのＪａｖａキースイッチ２０５であることを示す「Ｊａｖａキー」を用意している（図２参照）。また、本実施形態では、Ｊａｖａイベントとして、"java.awt.event.KeyEvent"クラスで定義されているイベントと同じものを用いている。
【００５０】
モード定義管理テーブル１１２３は、各モードでのナビゲーション装置本体１０の動作状態を定義するためのテーブルである。図９はモード定義管理テーブル１１２３を模式的に表した図である。図示するように、モード定義管理テーブル１１２３には、モード毎にレコード１１２３０が設けられている。レコード１１２３０は、モードを登録するフィールド１１２３１と、該モードのときの操作キーフォーカスを登録するフィールド１１２３２と、該モードのときのファンクションキーフォーカスを登録するフィールド１１２３３と、該モードのときの地図表示レイヤの表示/非表示を登録するフィールド１１２３４と、該モードのときのテレビ画面レイヤの表示/非表示を登録するフィールド１１２３５と、該モードのときのナビ画面レイヤの表示/非表示を登録するフィールド１１２３６と、該モードのときのＪａｖａ画面レイヤの表示/非表示を登録するフィールド１１２３７と該モードのときのファンクションキー表示レイヤの表示/非表示を登録するフィールド１１２３８と、を有する。
【００５１】
イベント送信先管理テーブル１１２４は、イベントデータ１０２５の送信先タスクＩＤおよびそのタスク優先度を管理するテーブルである。なお、送信先タスクはイベントを受信するためのイベントキューを持つ。イベント送信先管理テーブル１１２４において、タスクＩＤとは、ＲＴＯＳ１０１におけるタスクを管理するためにタスクに付与されるＩＤである。このタスクＩＤによって、イベントデータ１０２５の送信先が決定される。また、タスク優先度は、イベントデータ１０２５を優先的に送信すべきタスクの順位を示す情報である。数字が小さいものほど優先度が高くなる。図１０はイベント送信先管理テーブル１１２４を模式的に表した図である。図示するように、イベント送信先管理テーブル１１２４には、タスク種別毎にレコード１１２４０が設けられている。レコード１１２４０は、タスク種別を登録するフィールド１１２４１と、送信先のタスクＩＤを登録するフィールド１１２４２と、高タスク優先度を登録するフィールド１１２４３と、低タスク優先度を登録するフィールド１１２４４と、を有する。
【００５２】
タスク種別としては、ナビ機能ネイティブＡＰ１０３が処理すべきことを示す「ナビ」、テレビ機能ネイティブＡＰ１０５が処理すべきことを示す「テレビ」、そして、ＪａｖａＡＰ１０９〜１１１が処理すべきことを示す「Ｊａｖａ」がある。高タスク優先度とは、フィールド１１２４１に登録されているタスクＩＤのタスク優先度を「高」に変更する場合に当該タスクに設定するタスク優先度であり、低タスク優先度とは、フィールド１１２４１に登録されているタスクＩＤのタスク優先度を「低」に変更する場合に当該タスクに設定するタスク優先度である。
【００５３】
ファンクションキー割当て表示管理テーブル１１２５は、モード毎に、ファンクションキーのメニュー画面データに表示する、ファンクションキースイッチ群２０２の各キースイッチの文字列データを管理するテーブルである。図１１はファンクションキー割当て表示管理テーブル１１２５を模式的に表した図である。図示するように、ファンクションキー割当管理テーブル１１２５には、モード毎にレコード１１２５０が設けられている。レコード１１２５０は、モードを登録するフィールド１１２５１と、ファンクションキーのメニュー画面データの表示時間を登録するフィールド１１２５２と、ファンクションキースイッチ群２０１のキースイッチＦ１〜Ｆ６に対応付けて表示する文字列を登録するフィールド１１２５３〜１１２５８と、を有する。
【００５４】
図６に戻って説明を続ける。テーブル設定部１１２６は、ＲＴＯＳ１０１を介してＡＰより受け付けた指示に従い各管理テーブル１１２１〜１１２５の内容を変更する。
【００５５】
イベントデータ受信部１１２７は、キードライバ１０２１のイベントキュー１０２２からイベントデータ１０２５を取得する。フォーカス変更処理部１１２８は、イベントデータ受信部１１２７で受信したイベントデータ１０２５に従って状態管理テーブル１１２１の登録内容を変更する。タスク優先制御部処理部１１２９は、ＲＴＯＳ１０１で管理するタスクのタスク優先度を変更する。ファンクションキー割当て表示処理部１１３０は、イベントデータ受信部１１２７で受信したイベントデータ１０２５に従い、グラフィックドライバ１０２３のファンクションキー表示レイヤ用バッファに格納するファンクションキーのメニュー画面データ（イメージデータ）を更新する。
【００５６】
図１２はキーイベント処理部１１２の動作フローを説明するための図である。
【００５７】
先ず、イベントデータ受信部１１２７は、キードライバ１０２１のイベントキュー１０２２に格納されたイベントデータ１０２５を順番に一つ読込む（Ｓ１００１）。次に、イベントデータ受信部１１２７は、キーマップ管理テーブル１１２２を参照し、イベントキュー１０２２から読込んだイベントデータ１０２５のキーコード１０２６がフィールド１１２２１に登録されているレコード１１２２０を検索する。そして、検索したレコード１１２２０のフィールド１１２２３に登録されているキー種別を特定する（Ｓ１００２）。
【００５８】
それから、イベントデータ受信部１１２７は、特定したキー種別が「操作キー」であるか否かを調べる。「操作キー」ならば（Ｓ１００３でＹＥＳ）、Ｓ１０２１に進む。一方、「操作キー」でないならば（Ｓ１００３でＮＯ）、Ｓ１００４に進む。
【００５９】
Ｓ１００４において、イベントデータ受信部１１２７は、特定したキー種別が「ファンクションキー」であるか否かを調べる。「ファンクションキー」ならば（Ｓ１００４でＹＥＳ）、Ｓ１０３１に進み、「ファンクションキー」でないならば（Ｓ１００４でＮＯ）Ｓ１００５に進む。
【００６０】
Ｓ１００５において、イベントデータ受信部１１２７は、イベントキュー１０２２から読込んだイベントデータ１０２５の状態１０２７が「解放」であるか否かを調べる。状態１０２７が「解放」ならば（Ｓ１００５でＹＥＳ）、Ｓ１００６に進み、「解放」でないならば（Ｓ１００４でＮＯ）、Ｓ１０３１に進む。
【００６１】
Ｓ１００６において、フォーカス変更処理部１１２８は、後述するフォーカス変更処理を行ってモードを変更する。次に、Ｓ１００７において、タスク優先制御処理部１１２９は、後述するタスク優先制御を行ってタスク優先度を変更する。それから、Ｓ１００８において、ファンクションキー割当て表示処理部１１３０は、後述するファンクションキー表示処理を行ってファンクションキーの割当て表示を行う。その後、Ｓ１０３１に進む。
【００６２】
さて、Ｓ１０２１において、イベントデータ送信部１１３１は、状態管理テーブル１１２１にアクセスして、フィールド１１２１１に項目「操作キーフォーカス」が登録されているレコード１１２１０を検索し、検索したレコード１１２１０のフィールド１１２１２に登録されている操作キーフォーカスの状態値を取得する。次に、イベントデータ送信部１１３１は、イベント送信先管理テーブル１１２４にアクセスして、フィールド１１２４１に、Ｓ１０２１で取得した操作キーフォーカスの状態値に対応するタスク種別が登録されているレコード１１２４０を検索し、検索したレコード１１２４０のフィールド１１２４２に登録されている送信先タスクＩＤを取得する（Ｓ１０２２）。その後、Ｓ１０２３に進む。
【００６３】
また、Ｓ１０３１において、イベントデータ送信部１１３１は、状態管理テーブル１１２１にアクセスして、フィールド１１２１１に項目「ファンクションキーフォーカス」が登録されているレコード１１２１０を検索し、検索したレコード１１２１０のフィールド１１２１２に登録されているファンクションキーフォーカスの状態値を取得する。次に、イベントデータ送信部１１３１は、イベント送信先管理テーブル１１２４にアクセスして、フィールド１１２４１に、Ｓ１０３２１で取得したファンクションキーフォーカスの状態値に対応するタスク種別が登録されているレコード１１２４０を検索し、検索したレコード１１２４０のフィールド１１２４２に登録されている送信先タスクＩＤを取得する（Ｓ１０３２）。その後、Ｓ１０２３に進む。
【００６４】
Ｓ１０２３において、イベントデータ送信部１１３１は、Ｓ１０２１、Ｓ１０３１で取得したキーフォーカスの状態値が「Ｊａｖａ」であるか否かを調べる。キーフォーカスの状態値が「Ｊａｖａ」の場合（Ｓ１０２３でＹＥＳ）、イベントデータ送信部１１３１は、キーマップ管理テーブル１１２２にアクセスして、イベントキュー１０２２から読込んだイベントデータ１０２５のキーコード１０２６がフィールド１１２２１に登録されているレコード１１２２０を検索する。そして、該イベントデータ１０２５の状態１０２７に登録されている内容を、検索したレコード１１２２０のフィールド１１２２４に登録されているＪａｖａイベントに変換する（Ｓ１０２４）。それから、Ｓ１０２５に進む。一方、キーフォーカスの状態値が「Ｊａｖａ」でない場合（Ｓ１０２３でＮＯ）は、直ちに、Ｓ１０２５に進む。
【００６５】
Ｓ１０２５において、イベントデータ送信部１１３１は、イベントデータ１０２５を、ＲＴＯＳ１０１のＳ１０２２、Ｓ１０３２で取得した送信先タスクＩＤに送信する。その後、Ｓ１００１に戻る。
【００６６】
図１３はフォーカス変更処理（図１２のＳ１００６）を説明するための図である。
【００６７】
フォーカス変更処理部１１２８は、図１２のＳ１００２で特定したキー種別を調べる（Ｓ１００６１）。キー種別が「ナビキー」の場合はＳ１００６２に進み、「ＴＶキー」の場合はＳ１００６３に進み、そして、「Ｊａｖａキー」の場合はＳ１００６４に進む。
【００６８】
Ｓ１００６２において、フォーカス変更処理部１１２８は、モード定義管理テーブル１１２３にアクセスし、フィールド１１２３１に「ナビモード」が登録されているレコード１１２３０を読み出す。その後、Ｓ１００６５に進む。
【００６９】
また、Ｓ１００６３において、フォーカス変更処理部１１２８は、モード定義管理テーブル１１２３にアクセスし、フィールド１１２３１に「ＴＶモード」が登録されているレコード１１２３０を読み出す。その後、Ｓ１００６５に進む。
【００７０】
また、Ｓ１００６４において、フォーカス変更処理部１１２８は、モード定義管理テーブル１１２３にアクセスし、フィールド１１２３１に「Ｊａｖａモード」が登録されているレコード１１２３０を読み出す。その後、Ｓ１００６５に進む。
【００７１】
さて、Ｓ１００６５において、フォーカス変更処理部１１２８は、Ｓ１００６２〜Ｓ１００６４で読み出したレコード１１２３０のフィールド１１２３４〜１１２３８に従い、表示するレイヤをグラフィックスドライバ１０２３に通知する。具体的には、「フィールド１１２４〜１１２３８のうち「表示」が格納されているフィールドに対応するレイヤをグラフィックスドライバ１０２３に通知する。これを受けて、グラフィックスドライバ１０２３のレイヤスイッチ１０２３６は、「表示」が通知されたレイヤに対応するバッファ１０２３１〜１０２３５をレイヤ合成処理部１０２３７に接続する。
【００７２】
最後に、フォーカス変更処理部１１２８は、状態管理テーブル１１２１に登録内容をＳ１００６２〜Ｓ１００６４で読み出したレコード１１２３０の登録内容に変更する（Ｓ１００６６）。
【００７３】
図１４はタスク優先制御処理（図１２のＳ１００７）を説明するための図である。
【００７４】
先ず、タスク優先制御部１１２９は、状態管理テーブル１１２１からファンクションキーフォーカスを取得する。そして、取得したファンクションキーフォーカスが「ナビ」であるか否かを調べる（Ｓ１００７１）。「ナビ」である場合（Ｓ１００７１でＹＥＳ）、ＲＴＯＳ１０１で管理されているタスクのうち、タスク種別「ナビ」のタスクのタスク優先度を、イベント先管理テーブル１１２４のフィールド１１２４１にタスク種別「ナビ」が登録されているレコード１１２４０のフィールド１２４３に登録されているタスク優先度高に変更する（Ｓ１００７２）。一方、「ナビ」でない場合（Ｓ１００７２でＮＯ）、ＲＴＯＳ１０１で管理されているタスクのうち、タスク種別「ナビ」のタスクのタスク優先度を、イベント先管理テーブル１１２４のフィールド１１２４１にタスク種別「ナビ」が登録されているレコード１１２４０のフィールド１２４４に登録されているタスク優先度低に変更する（Ｓ１００７３）。
【００７５】
また、タスク優先制御部１１２９は、該取得したファンクションキーフォーカスが「ＴＶ」であるか否かを調べる（Ｓ１００７４）。「ＴＶ」である場合（Ｓ１００７４でＹＥＳ）、ＲＴＯＳ１０１で管理されているタスクのうち、タスク種別「ＴＶ」のタスクのタスク優先度を、イベント先管理テーブル１１２４のフィールド１１２４１にタスク種別「ＴＶ」が登録されているレコード１１２４０のフィールド１２４３に登録されているタスク優先度高に変更する（Ｓ１００７５）。一方、「ＴＶ」でない場合（Ｓ１００７４でＮＯ）、ＲＴＯＳ１０１で管理されているタスクのうち、タスク種別「ＴＶ」のタスクのタスク優先度を、イベント先管理テーブル１１２４のフィールド１１２４１にタスク種別「ＴＶ」が登録されているレコード１１２４０のフィールド１２４４に登録されているタスク優先度低に変更する（Ｓ１００７６）。
【００７６】
また、タスク優先制御部１１２９は、該取得したファンクションキーフォーカスが「Ｊａｖａ」であるか否かを調べる（Ｓ１００７７）。「Ｊａｖａ」である場合（Ｓ１００７７でＹＥＳ）、ＲＴＯＳ１０１で管理されているタスクのうち、タスク種別「Ｊａｖａ」のタスクのタスク優先度を、イベント先管理テーブル１１２４のフィールド１１２４１にタスク種別「Ｊａｖａ」が登録されているレコード１１２４０のフィールド１２４３に登録されているタスク優先度高に変更する（Ｓ１００７８）。一方、「Ｊａｖａ」でない場合（Ｓ１００７７でＮＯ）、ＲＴＯＳ１０１で管理されているタスクのうち、タスク種別「Ｊａｖａ」のタスクのタスク優先度を、イベント先管理テーブル１１２４のフィールド１１２４１にタスク種別「Ｊａｖａ」が登録されているレコード１１２４０のフィールド１２４４に登録されているタスク優先度低に変更する（Ｓ１００７９）。
【００７７】
図１５はファンクションキー表示処理（図１２のＳ１００８）を説明するための図である。
【００７８】
先ず、ファンクションキー割当て表示処理部１１３０は、状態管理テーブル１１２１からモードを取得する。次に、ファンクションキー割当て表示管理テーブル１１２５にアクセスし、該取得したモードがフィールド１１２５１に登録されているレコード１１２５０を検索する（Ｓ１００８１）。
【００７９】
次に、ファンクションキー割当て表示処理部１１３０は、検索したレコード１１２５０のフィールド１１２５３〜１１２５８に登録されているファンクションキーＦ１〜Ｆ６の文字列データを用いて、ファンクションキー割当て表示メニューを生成する。そして、生成したメニュー（イメージデータ）をグラフィックスドライバ１０２３のファンクションキー表示レイヤ用バッファ１０２３５に格納する（Ｓ１００８２）。
【００８０】
それから、ファンクションキー割当て表示処理部１１３０は、グラフィックスドライバ１０２３のレイヤスイッチ１０２３６を制御し、ファンクションキー表示レイヤ用バッファ１０２３５をレイヤ合成処理部１０２３７に接続する（Ｓ１００８３）。これにより、レイヤ合成処理部１０２３７は、ファンクションキー表示レイヤ用バッファ１０２３５に格納されているファンクションキー割当て表示メニューを、レイヤスイッチ１０２３６により接続されている他のバッファ１０２３１〜１０２３４のイメージデータに重畳して、ディスプレイ３１に画像を表示する。
【００８１】
図１６はモード「ナビモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。図示するように、ディスプレイ３１には、地図データ（地図表示レイヤ）３１０が表示され、その上に、「ナビモード」に対応する各ファンクションキーの文字列データが記載されたファンクションキー割当て表示メニュー３１１が表示される。
【００８２】
図１７はモード「Ｊａｖａモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。図示するように、ディスプレイ３１には、地図データ（地図表示レイヤ）３１０が表示され、その上に、ＪａｖａＡＰ（音楽再生アプリ）のメニュー画面（Ｊａｖａ画面レイヤ）３１２と、「Ｊａｖａモード」に対応する各ファンクションキーの文字列データが記載されたファンクションキー割当て表示の表示メニュー３１１とが表示される。
【００８３】
図１８はモード「ＴＶモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。図示するように、ディスプレイ３１には、ＴＶ画面データ（テレビ画面レイヤ）３１３が表示され、その上に、「ＴＶモード」に対応する各ファンクションキーの文字列データが記載されたファンクションキー割当て表示の表示メニュー３１１が表示される。
【００８４】
図１９はモード「ナビ連携Ｊａｖａモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。図示するように、ディスプレイ３１には、地図データ（地図表示レイヤ）３１０が表示され、その上に、ナビ連携ＪａｖａＡＰ（地点登録アプリ）のメニュー画面（Ｊａｖａ画面レイヤ）３１４と、「ナビ連携Ｊａｖａモード」に対応する各ファンクションキーの文字列データが記載されたファンクションキー割当て表示の表示メニュー３１１とが表示される。
【００８５】
図２０はモード「テレビ連携Ｊａｖａモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。図示するように、ディスプレイ３１には、ＴＶ画面データ（テレビ画面レイヤ）３１３が表示され、その上に、テレビ連携ＪａｖａＡＰ（番組表アプリ）のメニュー画面（Ｊａｖａ画面レイヤ）３１５と、「テレビ連携Ｊａｖａモード」に対応する各ファンクションキーの文字列データが記載されたファンクションキー割当て表示の表示メニュー３１１とが表示される。
【００８６】
図１５に戻って説明を続ける。さて、ファンクションキー割当て表示処理部１１３０は、ファンクションキー表示レイヤ用バッファ１０２３５をレイヤ合成処理部１０２３７に接続してから、Ｓ１００８１で検索したレコード１１２５０のフィールド１１２５２に登録されている表示時間を経過したならば、グラフィックスドライバ１０２３のレイヤスイッチ１０２３６を制御し、ファンクションキー表示レイヤ用バッファ１０２３５をレイヤ合成処理部１０２３７から切断する（Ｓ１００８４）。これにより、レイヤ合成処理部１０２３７は、ファンクションキー表示レイヤ用バッファ１０２３５に格納されているファンクションキー割当て表示メニューのディスプレイ３１への重畳表示を停止する。
【００８７】
図２１はキーイベント処理部１１２のテーブル設定部１１２６の動作フローを説明するための図である。なお、本実施形態において、テレビ連携ＪａｖａＡＰ１０９およびナビ連携ＪａｖａＡＰ１１０は、自身がアクティブ（稼動中）となった場合に、その旨をキーイベント処理部１１２に通知するものとする。
【００８８】
さて、テーブル設定部１１２６は、テレビ連携ＪａｖａＡＰ１０９から当該テレビ連携ＪａｖａＡＰ１０９がアクティブになったことを通知されると（Ｓ１１０１でＹＥＳ）、モード定義管理テーブル１１２３にアクセスし、フィールド１１２３１に「テレビ連携Ｊａｖａモード」が登録されているレコード１１２３０を読み出す（Ｓ１１０３）。その後、Ｓ１１０５に進む。
【００８９】
また、テーブル設定部１１２６は、ナビ連携ＪａｖａＡＰ１１０から当該ナビ連携ＪａｖａＡＰ１１０がアクティブになったことを通知されると（Ｓ１１０２でＹＥＳ）、モード定義管理テーブル１１２３にアクセスし、フィールド１１２３１に「ナビ連携Ｊａｖａモード」が登録されているレコード１１２３０を読み出す（Ｓ１１０４）。その後、Ｓ１１０５に進む。
【００９０】
さて、Ｓ１１０５において、テーブル設定部１１２６は、Ｓ１１０３〜Ｓ１１０４で読み出したレコード１１２３０のフィールド１１２３４〜１１２３８に従い、表示するレイヤをグラフィックスドライバ１０２３に通知する。具体的には、フィールド１１２４〜１１２３８のうち「表示」が格納されているフィールドに対応するレイヤをグラフィックスドライバ１０２３に通知する。これを受けて、グラフィックスドライバ１０２３のレイヤスイッチ１０２３６は、「表示」が通知されたレイヤに対応するバッファ１０２３１〜１０２３５をレイヤ合成処理部１０２３７に接続する。
【００９１】
最後に、テーブル設定部１１２６は、状態管理テーブル１１２１の登録内容をＳ１１０３〜Ｓ１１０４で読み出したレコード１１２３０の登録内容に変更する（Ｓ１１０６）。
【００９２】
上記構成のナビゲーション装置本体１０は、例えば図２２に示すような、ＣＰＵ９０１と、メモリ９０２と、ＨＤＤ等の外部記憶装置９０３と、ＣＤ-ＲＯＭやＤＶＤ-ＲＯＭやＩＣカードなどの記憶媒体９０４からデータを読み取る読取装置９０５と、操作パネル２０、ディスプレイ３１、スピーカ３６、ＧＰＳ受信機３３、車載センサ３４、チューナ３５および無線端末３２に接続するためのインターフェース９０６と、これらの各装置を接続するバス９０７と、を備えた一般的なコンピュータシステムにおいて、ＣＰＵ９０１がメモリ９０２上にロードされたプログラムを実行することで実現できる。このプログラムは、読取装置９０５を介して記憶媒体９０４から、あるいは、インターフェース９０６を介してネットワーク４１から、外部記憶装置９０３にダウンロードされ、それから、メモリ９０２上にロードされてＣＰＵ９０１により実行されるようにしてもよい。あるいは、外部記憶装置９０３を経由せずに、メモリ９０２上に直接ロードされ、ＣＰＵ９０１により実行されるようにしてもよい。
【００９３】
以上、本発明の一実施形態について説明した。
【００９４】
本実施形態では、キーイベント処理部１１２がナビゲーション装置本体１０のモードを管理し、現状のモードに応じてディスプレイ３１に表示するレイヤの組合せを決定するようにしている（図９参照）。ここで、モードの遷移は、所定のキーイベント（キー種別：ナビキー、テレビキー、Ｊａｖａキー）の発生、あるいは、起動された所定のＡＰ（テレビ連携ＪａｖａＡＰ１０９、ナビ連携ＪａｖａＡＰ１１０）から通知によって行われる。したがって、本実施形態によれば、ユーザのキー操作に応じて自動的にモードの設定を変更できるので、ナビ画面、テレビ画面およびＪａｖａ画面間の画面切替えにおける操作性を向上させることができる。
【００９５】
なお、本実施形態の上記の実施形態に限定されるものではなく、その要旨の範囲内で数々の変形が可能である。例えば、上記の実施形態では、ＶＭを構築する技術としてＪａｖａ技術を利用する場合について説明したが、本発明はこれに限定されるものではなく、その他のＶＭ上で実行されるアプリケーションとネイティブアプリケーションの組み合わせであってもよい。また、ＯＳとして、組み込み機器向けのＲＴＯＳを用いた場合を例にとり説明したが、いわゆる市販ＯＳであってもかまわない。
【００９６】
また、上記の実施形態ではナビゲーションシステムを例にとり説明したが、本発明は、ＯＳ上でＶＭが稼動する情報処理装置に広く適用できる。
【図面の簡単な説明】
【００９７】
【図１】図１は本発明の一実施形態が適用された車載用ナビゲーションシステムの概略図である。
【図２】図２は操作パネル２０の概略図である。
【図３】図３はナビゲーション装置本体１０のソフトウエア構成図である。
【図４】図４はキードライバ１０２１を説明するための図である。
【図５】図５はグラフィックスドライバ１０２３を説明するための図である。
【図６】図６はキーイベント処理部１１２の概略図である。
【図７】図７は状態管理テーブル１１２１を模式的に表した図である。
【図８】図８はキーマップ管理テーブル１１２２を模式的に表した図である。
【図９】図９はモード定義管理テーブル１１２３を模式的に表した図である。
【図１０】図１０はイベント送信先管理テーブル１１２４を模式的に表した図である。
【図１１】図１１はファンクションキー割当て表示管理テーブル１１２５を模式的に表した図である。
【図１２】図１２はキーイベント処理部１１２の動作フローを説明するための図である。
【図１３】図１３はフォーカス変更処理（図１２のＳ１００６）を説明するための図である。
【図１４】図１４はタスク優先制御処理（図１２のＳ１００７）を説明するための図である。
【図１５】図１５はファンクションキー表示処理（図１２のＳ１００８）を説明するための図である。
【図１６】図１６はモード「ナビモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。
【図１７】図１７はモード「Ｊａｖａモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。
【図１８】図１８はモード「ＴＶモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。
【図１９】図１９はモード「ナビ連携Ｊａｖａモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。
【図２０】図２０はモード「テレビ連携Ｊａｖａモード」の場合におけるファンクションキー割当て表示の表示メニューの例を示す図である。
【図２１】図２１はキーイベント処理部１１２のテーブル設定部１１２６の動作フローを説明するための図である。
【図２２】ナビゲーション装置本体１０のハードウエア構成例を示す図である。
【符号の説明】
【００９８】
１０…ナビゲーション装置本体、２０…操作パネル、３１…ディスプレイ、３２…無線端末、３３…ＧＰＳ受信機、３４…車載センサ、３５…チューナ、４０…基地局、４１…ネットワーク、４２…情報サーバ、１０１…ＲＴＯＳ、１０２…デバイスドライバ、１０３…ナビ機能ネイティブＡＰ、１０４…テレビ機能ネイティブＡＰ、１０５…ナビＨＭＩ、１０６…テレビＨＭＩ、１０７…ＪａｖａＶＭ、１０８…Ｊａｖａアプリケーションプラットフォーム、１０９…ＴＶ連携ＪａｖａＡＰ、１１０…ナビ連携ＪａｖａＡＰ、１１１…ＪａｖａＡＰ
【図１】
0004839049.tif 000002
【図２】
0004839049.tif 000003
【図３】
0004839049.tif 000004
【図４】
0004839049.tif 000005
【図５】
0004839049.tif 000006
【図６】
0004839049.tif 000007
【図７】
0004839049.tif 000008
【図８】
0004839049.tif 000009
【図９】
0004839049.tif 000010
【図１０】
0004839049.tif 000011
【図１１】
0004839049.tif 000012
【図１２】
0004839049.tif 000013
【図１３】
0004839049.tif 000014
【図１４】
0004839049.tif 000015
【図１５】
0004839049.tif 000016
【図１６】
0004839049.tif 000017
【図１７】
0004839049.tif 000018
【図１８】
0004839049.tif 000019
【図１９】
0004839049.tif 000020
【図２０】
0004839049.tif 000021
【図２１】
0004839049.tif 000022
【図２２】
0004839049.tif 000023