(57)【要約】【課題】所定の処理期間中に押下されたキーのコードを間違えることなく確実に取得できるようにする。【解決手段】電子機器は、ＢＩＯＳを格納するメモリ５とキーボードコントローラ（ＫＢＣ）２とを備えている。ＫＢＣ２は、押下されたキーのスキャンコードを一時記憶し、前記ＢＩＯＳが使用するレジスタへ転送するために使用される第１のバッファ２１と、押下されたキーのスキャンコードを記憶し、前記ＢＩＯＳからダンプリストコマンドが発行された場合に当該スキャンコードを出力する第２のバッファ２２とを有する。前記ＢＩＯＳは、ＫＢＣ２の初期化処理後に、前記ダンプリストコマンドを発行することにより、第２のバッファ２２に記憶されているスキャンコードを取得する。【選択図】    図１
2005165401.tif 000002
【特許請求の範囲】
【請求項１】
ＢＩＯＳ（Basic Input/Output System）を格納するメモリとキーボードコントローラとを備えた電子機器であって、
前記キーボードコントローラは、
押下されたキーのコードを一時記憶し、前記ＢＩＯＳが使用するレジスタへ転送するために使用される第１のバッファと、
押下されたキーのコードを記憶し、前記ＢＩＯＳから所定のコマンドが発行された場合に当該コードを出力する第２のバッファとを具備し、
前記ＢＩＯＳは、
前記キーボードコントローラの初期化処理後に、前記所定のコマンドを発行することにより、前記第２のバッファに記憶されているコードを取得する手段を具備することを特徴とする電子機器。
【請求項２】
前記ＢＩＯＳは、前記キーボードコントローラの初期化処理中においてキーの押下があった場合、前記第１のバッファから前記レジスタに転送されたコードを読み捨てることを特徴とする請求項１記載の電子機器。
【請求項３】
前記キーボードコントローラは、前記ＢＩＯＳから前記所定のコマンドが発行された場合に、前記第２のバッファに記憶されているコードのサイズを示す情報と当該コードとを前記ＢＩＯＳへ通知する手段を有することを特徴とする請求項１記載の電子機器。
【請求項４】
前記キーボードコントローラは、システムの再起動が行われた場合に、前記第２のバッファに記憶されているコードを消去する手段を有することを特徴とする請求項１記載の電子機器。
【請求項５】
ＢＩＯＳ（Basic Input/Output System）を格納するメモリとキーボードコントローラとを備えた電子機器に適用されるコード取得方法であって、
前記キーボードコントローラの側では、押下されたキーのコードを第１のバッファに一時記憶して前記ＢＩＯＳが使用するレジスタへ転送すると共に、当該コードを第２のバッファに記憶しておき、
前記ＢＩＯＳの側では、前記キーボードコントローラの初期化処理後に、前記所定のコマンドを発行することにより、前記第２のバッファに記憶されているコードを取得する
ことを特徴とするコード取得方法。
【請求項６】
前記キーボードコントローラの初期化処理中においてキーの押下があった場合、前記第１のバッファから前記レジスタに転送されたコードを破棄することを特徴とする請求項５記載のコード取得方法。
【請求項７】
前記ＢＩＯＳから前記所定のコマンドが発行された場合、前記第２のバッファに記憶されているコードのサイズを示す情報と当該コードとを前記ＢＩＯＳへ通知することを特徴とする請求項５記載のコード取得方法。
【請求項８】
システムの再起動が行われた場合に、前記第２のバッファに記憶されているコードを消去することを特徴とする請求項５記載のコード取得方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＢＩＯＳを備えた電子機器およびコード取得方法に関する。
【背景技術】
【０００２】
コンピュータなどに備えられるＢＩＯＳ（Basic Input/Output System）は、起動時に押下されたキーボード上のキーの判定を行うことにより、以下の機能を実現できるようになっている。
【０００３】
・ＢＩＯＳ及びＫＢＣ（Keyboard Controller）のファームウェアの書き換え処理を行うＢＩＯＳ及びＫＢＣ書き換え機能
・ブートデバイスの選択を行うブートセレクト機能
・ＢＩＯＳのセットアップ処理を行うＢＩＯＳセットアップ機能
押下されたキーの判定方法は、以下の通りである。  
（１）ＢＩＯＳは、ＰＯＳＴ（Power On Self Test）が行われている間、押下されたキーの有無をチェックする。
【０００４】
（２）押下されたキーがあることが判れば、スキャンコードを取得する。
【０００５】
（３）取得したスキャンコードを判別し、内部フラグにステータスを反映させる。
【０００６】
（４）ＢＩＯＳ機能の実行要求の判定時には、上記内部フラグを参照し、押下されたキーがＢＩＯＳ機能の実行を要求するキーであるかをチェックする。
【０００７】
また、押下されたキーの有無のチェック及びスキャンコードの取得方法は、ＢＩＯＳが行うＫＢＣの初期化処理の前後で若干異なる。すなわち、ＫＢＣの初期化処理までは、ステータスレジスタ（I/O 64Hに相当）を参照することで押下されたキーの有無をチェックし、データレジスタ（I/O 60Hに相当）を参照することでスキャンコードを取得する。一方、ＫＢＣの初期化処理後は、キーボード割り込みプログラム（INT 09Hに相当）を使用して、スキャンコードを取得する。
【０００８】
なお、上記ＢＩＯＳの技術とは直接関係しないが、特許文献１には、キーボード上の押下されたキーのコードを記憶部（ＲＡＭ）に格納する構成により、過去のキー操作を見ることができるようにしたキーボード装置が開示されている。
【特許文献１】特開平６−１０２９８１号公報
【発明の開示】
【発明が解決しようとする課題】
【０００９】
しかしながら、上述した従来技術では、ＢＩＯＳからＫＢＣへのアクセスに関して以下に掲げるような欠点があり、システムの起動時間の増加やＢＩＯＳの容量オーバーを招くという問題がある。
【００１０】
（イ）押下されたキーを認識できない場合がある
ＢＩＯＳ−ＢＫＣ間のインタフェースには、I/O (64H/60H)が使用される。ＢＩＯＳは、このI/Oを介して、ＫＢＣへのコマンド送信、ＫＢＣからのコマンドレスポンス受信、ＫＢＣからのスキャンコード受信等を行う。ＫＢＣは、スキャンコードよりもコマンドレスポンスを優先させる。そのため、ＢＩＯＳは、ＫＢＣの初期化処理においてＫＢＣへコマンドを送信する際に、以下のような一連の処理が行われた場合には、押下されたキーを認識できない。
【００１１】
１）ＢＩＯＳは、押下されたキーが無いことを確認する。
【００１２】
２）ＫＢＣは、押下されたキーを認識し、スキャンコードをデータレジスタへ書き込む。
【００１３】
３）ＢＩＯＳは、ＫＢＣへコマンドを送信する。
【００１４】
４）ＫＢＣは、コマンドに対するコマンドレスポンスをデータレジスタへ書き込む。
【００１５】
５）ＢＩＯＳは、コマンドレスポンスを取得する。
【００１６】
この場合、スキャンコードは、コマンドレスポンスに上書きされることになる。これは、上記２）の処理のタイミングで、ＫＢＣがスキャンコードをデータレジスタへ書き込むことによるものである。
【００１７】
（ロ）キー入力が誤動作する場合がある
ＫＢＣの初期化処理後、ＫＢＣからのスキャンコード取得の方法を、キーボード割り込みプログラムを使った方法に切り換える際に、以下のような一連の処理が行われた場合には、キー入力に関して誤動作が生じてしまう。
【００１８】
１）押下されたキーのスキャンコードを全て取得する前に、スキャンコードの取得方法を切り換える。
【００１９】
２）キーボード割り込みプログラムが、スキャンコード取得の途中から実行されることになるため、当該プログラムは間違った認識を行ってしまい、その影響で誤動作が起こる。
【００２０】
（ハ）システム起動が遅くなる場合がある
押下されたキーの取りこぼしを防ぐため、一般に、押下されたキーの有無が一定間隔でチェックされるようになっている。もしも、キーが押下され続けた場合には、スキャンコードが一定の間隔でＫＢＣから送信されてくるため、ＢＩＯＳは、押下されたキーが無いことを確認するまで次の処理を実行できない。その結果、システム起動が遅延してしまう。
【００２１】
また、特許文献１のように、キーボード上の押下されたキーのコードを格納する記憶部を単に設けるだけでは、上記問題を解決することはできない。
【００２２】
本発明は上記実情に鑑みてなされたものであり、所定の処理期間中に押下されたキーのコードを間違えることなく確実に取得することができる電子機器およびコード取得方法を提供することを目的とする。
【課題を解決するための手段】
【００２３】
本発明に係る電子機器は、ＢＩＯＳ（Basic Input/Output System）を格納するメモリとキーボードコントローラとを備えた電子機器であって、前記キーボードコントローラは、押下されたキーのコードを一時記憶し、前記ＢＩＯＳが使用するレジスタへ転送するために使用される第１のバッファと、押下されたキーのコードを記憶し、前記ＢＩＯＳから所定のコマンドが発行された場合に当該コードを出力する第２のバッファとを具備し、前記ＢＩＯＳは、前記キーボードコントローラの初期化処理後に、前記所定のコマンドを発行することにより、前記第２のバッファに記憶されているコードを取得する手段を具備することを特徴とする。
【００２４】
また、本発明に係るコード取得方法は、ＢＩＯＳ（Basic Input/Output System）を格納するメモリとキーボードコントローラとを備えた電子機器に適用されるコード取得方法であって、前記キーボードコントローラの側では、押下されたキーのコードを第１のバッファに一時記憶して前記ＢＩＯＳが使用するレジスタへ転送すると共に、当該コードを第２のバッファに記憶しておき、前記ＢＩＯＳの側では、前記キーボードコントローラの初期化処理後に、前記所定のコマンドを発行することにより、前記第２のバッファに記憶されているコードを取得することを特徴とする。
【発明の効果】
【００２５】
所定の処理期間中に押下されたキーのコードを間違えることなく確実に取得することができる。
【発明を実施するための最良の形態】
【００２６】
図１は、本発明の一実施形態に係る電子機器の概略構成を示すブロック図である。  
同図に示される電子機器は、例えばパーソナルコンピュータであり、キーボード１、キーボードコントローラ（以下、ＫＢＣと称す）２、ホストＣＰＵ３、メモリ４、ＢＩＯＳ−ＲＯＭ５、レジスタ６等を備えている。
【００２７】
キーボード１は、複数のキーを備えており、あるキーが押下された場合に該当する信号をＫＢＣ２に送る。
【００２８】
ＫＢＣ２は、ＲＡＭ２０、バスインタフェース２３、ＣＰＵ２４、ＲＯＭ２５等を備えている。また、上記ＲＡＭ２０は、各種の情報を記憶するものであり、第１のバッファ（記録領域）２１および第２のバッファ（記憶領域）２２を有している。
【００２９】
第１のバッファ２１は、押下されたキーのスキャンコードを一時記憶するＦＩＦＯとして実現され、一時記憶したスキャンコードをＢＩＯＳが使用するレジスタ６へ転送するために使用されるものである。
【００３０】
第２のバッファ２２は、上記押下されたキーのスキャンコードを記憶し、ＢＩＯＳから所定のコマンド（以下、ダンプリストコマンドと称す）が発行された場合に当該コードを出力するものである。
【００３１】
バスインタフェース２３は、ＢＩＯＳ−ＲＯＭ５などが接続されるシステムバスとＫＢＣ２の内部バスとの間のインタフェース処理を行うものであり、I/O (64H/60H)などが使用される。このI/Oは、ＢＩＯＳが、ＫＢＣ２へコマンドを送信したり、ＫＢＣ２からコマンドレスポンスを受信したり、ＫＢＣ２からスキャンコードを受信したりするために使用される。
【００３２】
ＣＰＵ２４は、ＫＢＣ２全体の動作を司るものである。このＣＰＵ２４は、例えば、ＢＩＯＳからＫＢＣ２に対してダンプリストコマンドが発行された場合に、第２のバッファ２２に記憶されているスキャンコードのサイズを示す情報と当該スキャンコードとをバスインタフェース２３を介してＢＩＯＳへ通知する機能などを備えている。また、上記ＣＰＵ２４は、システムの再起動が行われた場合に、第２のバッファ２２に記憶されているスキャンコードを消去（クリア）する機能なども備えている。
【００３３】
ＲＯＭ２５は、ＣＰＵ２４が使用するプログラムなどを格納するものである。
【００３４】
ホストＣＰＵ３は、電子機器全体の動作を司るものであり、メモリ４やＫＢＣ２などを制御する。  
メモリ４は、例えばＲＡＭであり、各種のプログラムを常駐させ、ホストＣＰＵ３の作業エリアとして使用される。
【００３５】
ＢＩＯＳ−ＲＯＭ５は、ＢＩＯＳを格納するものである。本実施形態におけるＢＩＯＳは、電源投入時に各種ハードウェアの診断や初期化処理などの一般的な処理を行うほか、特に、ＫＢＣ２の初期化処理中においてキーの押下があった場合、第１のバッファ２１からレジスタ６に転送されたコードを読み捨てると共に、ＫＢＣ２の初期化処理後に、ダンプリストコマンドを発行することにより、第２のバッファ２２に記憶されているスキャンコードをまとめて取得する機能を備えている。
【００３６】
また、本実施形態におけるＢＩＯＳは、通常のＢＩＯＳと同様に、システム起動時に押下されたキーボード上のキーの判定を行うことにより、以下の機能を実現できるようになっている。
【００３７】
・ＢＩＯＳ及びＫＢＣのファームウェアの書き換え処理を行うＢＩＯＳ及びＫＢＣ書き換え機能
・ブートデバイスの選択を行うブートセレクト機能
・ＢＩＯＳのセットアップ処理を行うＢＩＯＳセットアップ機能
レジスタ６は、ステータスレジスタ（I/O 64Hに相当）やデータレジスタ（I/O 60Hに相当）を含み、第１のバッファから出力されるスキャンコードやそのサイズ情報、押下されたキーの有無などを示す各種ステータスをＫＢＣ２が書き込んだり、ＢＩＯＳがこれらの情報を参照したりするために使用される。
【００３８】
次に、図２を参照して、ＫＢＣ２側でのキー入力処理の動作を説明する。  
ＫＢＣ２は、キーボード１上のキーの入力があるか否かを監視している（ステップＡ１）。ここで、キー入力があった場合には、押下されたキーのスキャンコードが第１のバッファ２１に一時記憶され、バスインタフェース２３を介してレジスタ６へ送られる（ステップＡ２）。但し、レジスタ６に送られたスキャンコードは、本実施形態においては使用されず、後に破棄されることになる。
【００３９】
また、上記押下されたキーのスキャンコードが第２のバッファ２２にも記憶（保存）できるか否かが判別される（ステップＡ３）。容量に余裕があり保存できる場合には、スキャンコードは第２のバッファ２２に記憶（保存）される（ステップＡ４）。
【００４０】
次に、図３を参照して、ＫＢＣ２側でのダンプリストコマンド応答の動作を説明する。
【００４１】
ＫＢＣ２は、システムバス上から当該ＫＢＣ２へコマンドが発行されたか否かを監視している（ステップＢ１）。ＫＢＣ２は、バスインタフェース２３を通じて何らかのコマンドを受信した場合、そのコマンドがＢＩＯＳから発行されたダンプリストコマンドであるか否かを判別する（ステップＢ２）。該当する場合には、ＫＢＣ２は、第２のバッファ２２に記憶されているスキャンコードのサイズを示す情報と当該スキャンコードとを順にバスインタフェース２３を介してレジスタ６へ送る（ステップＢ３）。これにより、ＢＩＯＳはスキャンコードを取得することになる。
【００４２】
次に、図４を参照して、ＢＩＯＳ側での一連の動作を説明する。  
ＢＩＯＳは、電源投入があると、すぐにメモリ類を含むハードウェアの初期化を開始する（ステップＣ１）。このハードウェアの初期化においては、ＫＢＣ２の初期化が行われる（ステップＣ２）。ＢＩＯＳは、レジスタ６を参照することにより、ＫＢＣ２の初期化処理中に押下されたキーの有無を調べる（ステップＣ３）。押下されたキーがある場合には、レジスタ６上の該当するスキャンコードを読み捨てる（ステップＣ４）。
【００４３】
ＢＩＯＳは、ＫＢＣ２の初期化処理が終了し（ステップＣ５）、残りのハードウェアの初期化処理も終了させると（ステップＣ６）、次に、ＫＢＣ２に対してダンプリストコマンドを発行することにより、第２のバッファ２２に記憶されているスキャンコードを取得する（ステップＣ７）。
【００４４】
ここで、ＢＩＯＳは、前述した３つのＢＩＯＳ機能のいずれかの実行要求が示されているか否かを判別する（ステップＣ８）。示されていれば、該当するＢＩＯＳ機能を実行する（ステップＣ９）。
【００４５】
次に、図５を参照して、再起動があった場合の動作を説明する。  
システムの再起動が行われた場合、ＢＩＯＳは、ＫＢＣ２に対してダンプリストクリアコマンドを発行する。このコマンドに基づいて、ＫＢＣ２は、第２のバッファに確保されているスキャンコードをクリアする（ステップＤ１，Ｄ２）。
【００４６】
次に、ＢＩＯＳは、すぐにメモリ類を含むハードウェアの初期化を開始する（ステップＤ３）。このハードウェアの初期化においては、ＫＢＣ２の初期化が行われる（ステップＤ４）。ＢＩＯＳは、レジスタ６を参照することにより、ＫＢＣ２の初期化処理中に押下されたキーの有無を調べる（ステップＤ５）。押下されたキーがある場合には、レジスタ６上の該当するスキャンコードを読み捨てる（ステップＤ６）。
【００４７】
ＢＩＯＳは、ＫＢＣ２の初期化処理が終了し（ステップＤ７）、残りのハードウェアの初期化処理も終了させると（ステップＤ８）、次に、ＫＢＣ２に対してダンプリストコマンドを発行することにより、第２のバッファ２２に記憶されているスキャンコードを取得する（ステップＤ９）。
【００４８】
ここで、ＢＩＯＳは、前述した３つのＢＩＯＳ機能のいずれかの実行要求が示されているか否かを判別する（ステップＤ１０）。示されていれば、該当するＢＩＯＳ機能を実行する（ステップＤ１１）。
【００４９】
このように、本実施形態によれば、ＢＩＯＳ側において各種ハードウェアの診断や初期化処理を行っているときにＫＢＣから送信されてくるスキャンコードを意識する必要はなく、当該スキャンコードを読み捨て、初期化処理後にダンプリストコマンドを発行することにより所望のスキャンコードを間違いなく取得でき、正しく判定することができる。また、従来技術における種々な欠点を克服することができる。
【００５０】
なお、本発明は上記実施形態そのままに限定されるものではなく、実施段階ではその要旨を逸脱しない範囲で構成要素を変形して具体化できる。また、上記実施形態に開示されている複数の構成要素の適宜な組み合わせにより、種々の発明を形成できる。例えば、実施形態に示される全構成要素から幾つかの構成要素を削除してもよい。さらに、異なる実施形態にわたる構成要素を適宜組み合わせてもよい。
【図面の簡単な説明】
【００５１】
【図１】本発明の一実施形態に係る電子機器の概略構成を示すブロック図。
【図２】ＫＢＣ側でのキー入力処理の動作を示すフローチャート。
【図３】ＫＢＣ側でのダンプリストコマンド応答の動作を示すフローチャート。
【図４】ＢＩＯＳ側での一連の動作を示すフローチャート。
【図５】再起動があった場合の動作を示すフローチャート。
【符号の説明】
【００５２】
１…キーボード、２…キーボードコントローラ（ＫＢＣ）、３…ホストＣＰＵ、４…メモリ、５…ＢＩＯＳ−ＲＯＭ、６…レジスタ、２０…ＲＡＭ、２１…第１のバッファ（記録領域）、２２…第２のバッファ（記憶領域）、２３…バスインタフェース、２４…ＣＰＵ、２５…ＲＯＭ。
【図１】
2005165401.tif 000003
【図２】
2005165401.tif 000004
【図３】
2005165401.tif 000005
【図４】
2005165401.tif 000006
【図５】
2005165401.tif 000007