(57)【特許請求の範囲】
【請求項１】
コンピュータのキーボードをキースキャンした結果を１キー当り１ビットに対応したメモリマップ形式で一時的に記憶するためのスキャンメモリと、
前記スキャンメモリに記憶されたメモリマップにおいて、２キー以上のＯＮキーが存在するラインがロウ側に少なくとも１つ存在するか否かを判定するロウ側判定手段と、
前記スキャンメモリに記憶されたメモリマップにおいて、２キー以上のＯＮキーが存在するラインがコラム側に少なくとも１つ存在するか否かを判定するコラム側判定手段と、
前記ロウ側判定手段及び前記コラム側判定手段が共に、２キー以上のＯＮキーが存在するラインが少なくとも１つ存在すると判定した場合において、新規に押下されたキーによるＯＮ状態の検出が同時に２個以上あったか否かを判定する同時キー押下判定手段と、
前記ロウ側判定手段もしくは前記コラム側判定手段のいずれか一方が、２キー以上のＯＮキーが存在しないと判定した場合に、あるいは、前記同時キー押下判定手段が、新規に押下されたキーによるＯＮ状態の検出が同時に２個以上はないと判定した場合に、前記スキャンメモリに記憶されている内容を確定キーとして確定し、前記同時キー押下判定手段が、新規に押下されたキーによるＯＮ状態の検出が同時に２個以上あったと判定した場合に、回り込みと判定するキー確定手段と、
前記キー確定手段により確定された確定キーを記憶する確定メモリと、
を備えることを特徴とするキーボード。
【請求項２】
前記同時キー押下判定手段は、前記スキャンメモリと前記確定メモリとを比較して変化ビットとして抽出することで、２キー以上の同時押下の有無を判定する請求項１に記載のキーボード。
【請求項３】
前記キー確定手段で回り込みがあると判定された場合に、回り込みであることを示すエラーコードを送信するエラーコード送信手段を更に備える請求項１または２に記載のキーボード。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、複数個のキースイッチをマトリクス状に配置したスキャンタイプのキーボードに関する。
【０００２】
【従来の技術】
近年、パーソナルコンピュータ等で使用されるキーボードは、アプリケーションの多機能化、及び通信の高速化に伴い、キースキャン処理の一層の高速化が求められている。
複数個のキースイッチをマトリクス状に配置したスキャンタイプのキーボードにおいては、一般に、メンブレンスイッチキーマトリクスがコラム側に８本、ロウ側に１６〜１８本のラインが配置されている。このようなキーマトリクスにおいて、ロウ側のラインを順次ローレベルにセットし、そのロウ側に対応するコラム側の８本の状態を読み込むことによりキースキャンがなされる。
【０００３】
このようなキーボードにおいて、同時に複数個のキースイッチが押下されたとき信号の回り込みが発生し、押下されたキー以外の別のキーが操作されたような擬似入力状態になる。このような回り込み現象を回避するために、キーボードの制御ファームウェアを用いて従来から様々な解決策がとられている。
その１つとしてＦキーロールオーバ技術による方法がある。これは既に押下されたキーと新たに押下されたキーとを合わせた総押下キー数が４キー以上であり、かつ、新規に押下されたキーが２キー以上である場合に回り込みが発生したと判定する方法である。
【０００４】
【発明が解決しようとする課題】
回り込み判定にＦキーロールオーバ技術を用いた従来例による方法では、まず１キーずつキースキャンを行ってキーが押下されているか否かをチェックし、押下されたキーが見つかった場合には、その押下されたキーから再度キースキャンを実行し、その他のキーの押下状態をチェックしてからキーの入力可否を判定していた。このため、キースキャンに要する時間も長くなってしまう問題があった。また、キースキャンのタイミングを解析することによって、外部からの信号入力を行うことにより、キーの押下による出力が第三者によって容易に解析されてしまうという問題があった。更に、Ｆキーロールオーバ技術を用いた方法では、４キー以上のキーが押下された場合は回り込みが発生したものと常に判定してしまい、例えば点字入力をキーボードで行う場合などのような、６キーあるいは８キーを同時に組み合わせた正常なキー入力には対応できない。
【０００５】
従って、本発明の第１の目的は、上記課題に鑑み、Ｆキーロールオーバ技術を用いた回り込み検査を行うキースキャン方法において、より高速なキースキャンを実現することにある。
本発明の第２の目的は、上記課題に鑑み、正常なキー操作として入力され得る複数のキー入力にも対応した回り込み検査が可能なキースキャン方法を提供することにある。
【０００６】
【課題を解決するための手段】
上記第１の目的を実現するために、第１の発明によれば、キーを１つずつスキャンし、新規に押下されたキーを検出する検出手段と、新規に押下されたキーは正常なキー入力であると確定されたときに、確定キーとして記憶するための確定メモリと、新規に押下されたキーのアドレスを一時的に記憶するためのキーバッファであって、新規に押下されたキーのアドレスは、該アドレスがキーバッファに未だ記憶されていない場合のみ記憶されるキーバッファと、新規に押下されたキーのアドレスがキーバッファに既に記憶されている場合に、キーバッファに記憶されているアドレスの数と確定メモリに記憶された確定キーの数との合計が４以上であり、かつキーバッファに記憶されているアドレスの数が２以上であるときに回り込みがあると判定する回り込み判定手段と、回り込み判定手段で回り込みがないと判定された場合に、新規に押下されたキーを確定キーとして確定メモリに記憶すると共に、当該確定キーに対するコードの送信を要求するフラグをセットし、次のキーのスキャンに移るキー確定手段とを備える。
【０００７】
上記第２の目的を実現するために、第２の発明によれば、コンピュータのキーボードをキースキャンした結果を１キー当り１ビットに対応したメモリマップ形式で一時的に記憶するためのスキャンメモリと、確定したキー入力を１キー当り１ビットに対応したメモリマップ形式で記憶する確定メモリと、スキャンメモリに記憶されたメモリマップにおいて、２キー以上のＯＮキーが存在するラインがロウ側に少なくとも１つ存在するか否かを判定するロウ側判定手段と、スキャンメモリに記憶されたメモリマップにおいて、２キー以上のＯＮキーが存在するラインがコラム側に少なくとも１つ存在するか否かを判定するコラム側判定手段と、ロウ側判定手段及びコラム側判定手段が共に、２キー以上のＯＮキーが存在するラインが少なくとも１つ存在すると判定した場合に、回り込みと判定するキー確定手段とを備える。
【０００８】
第１の発明によれば、回り込み検査のためのＦキーロールオーバー技術を、１回のキースキャン内に実現するので、高速なキースキャン処理を実行でき、また、第三者によるキースキャンの解析を困難にすることができる。
第２の発明によれば、例えば点字入力を行う場合などのような、６キーあるいは８キーといったような、複数キーの正常なキー入力が可能なキーボードに対しても回り込み検査を実現できる。
【０００９】
【発明の実施の形態】
本発明の第１の実施例のキースキャン方法によれば、スキャンされるキー毎にキー押下の有無がチェックされ、必要に応じて回り込み検査が実行される。
図１は、本発明の第１の実施例によるキーボード制御ファームウェアの概略図である。
【００１０】
本実施例によるキーボード制御ファームウェア１は、新規に押下されたキーのアドレスを１キー当り１バイトとして４キー分だけ記憶するキーバッファ１０１と、１キーが１ビットに対応するメモリマップ形式で確定されたキー入力を記憶する確定スキャンメモリ１０２と、キーバッファ１０１に記憶されているアドレスの数をカウントする第１のカウンタ１０３と、確定スキャンメモリ１０２で確定キーを表わす「１」が立っている数をカウントする第２のカウンタ１０４とを備える。
【００１１】
図２は、本発明の第１の実施例によるフローチャートを示す図である。
まず、キーボードの制御ファームウェア１は、ステップ２００でキースキャンするタイミングであるかどうかをチェックし、キースキャンするタイミングになった時点でステップ２０１以降のキースキャンを実行する。一般にキーの押下後８〜１０ｍｓまではキーの接点にチャタリングが発生しやすく、このチャタリングを避けるために、本実施例においてはキースキャンは８〜１０ｍｓ毎に実行するものとする。すなわち、本実施例では、ステップ２００によってキースキャン開始の周期が８〜１０ｍｓになるようにタイミングが取られる。ステップ２０１以降のキースキャン処理そのものに要する時間は、これよりも短い。
【００１２】
キースキャンは、スキャンポートの初期化及びカウンタ１０３及び１０４のクリア等のスキャン初期化処理（ステップ２０１）がなされることで開始される。この後、ステップ２０２以降の処理によって、キー１つ毎に対してスキャンし、キー押下の有無がチェックされ、必要に応じて回り込み検査が実行される。
ステップ２０２において、キーの状態の変化があるかどうかが判定される。キーの状態に変化がないときは、ステップ２０８へ進み、次のキーに対してスキャンがセットされる。
【００１３】
ステップ２０２でキーの状態に変化があったと判定されると、ステップ２０３へ進む。キーの状態の変化には、キーが押されたときのＯＦＦからＯＮへの変化と、指がキーから離されたときのＯＮからＯＦＦへの変化との２つの場合があるが、ステップ２０３では、そのどちらであるかが判定される。
ステップ２０３において、キーの状態がＯＮからＯＦＦへ変化したと判定された場合は、指がキーから離されたことを意味する。換言すれば、キーの押下が終了し、後述する回り込み検査も完了してキーが確定されたということであるので、ステップ２０４に進み、キーオフ処理がなされる。
【００１４】
ステップ２０４では、確定スキャンメモリ１０２がクリアされ、データ送信フラグがセットされる。すなわち、ステップ２０３においてキーの状態がＯＮからＯＦＦへ変化したと判定されたので、ステップ２０４では、キーＯＦＦを示すＯＦＦコードがデータ送信フラグとしてセットされる。この後、ステップ２０８に進み、次のキーに対してスキャンがセットされる。
【００１５】
ステップ２０３において、キーの状態がＯＦＦからＯＮへ変化したと判定された場合は、新規にキーの押下があったことを意味するので、ステップ２０５へ進む。
ステップ２０５では、新規に押下されたキーのアドレスとキーバッファ１０１に既に記憶されている未確定キーのアドレスとを比較し、一致の有無が判定される。このキーバッファ１０１は、後述する回り込み検出のために、新規に押下されたキーのアドレスを未確定キーのアドレスとして一時的に記憶するものである。キーバッファはマイコン内に存在するが、その容量はマイコンのハードウェアの制限があるのでできるだけコンパクトであるのが好ましい。本実施例におけるキーバッファ１０１は、キーのアドレスを１キー当り１バイトとして、回り込み検出のために最低限必要である４バイト分の容量を有するが、それ以上の容量を有してもよい。
【００１６】
ステップ２０５において、新規に押下されたキーのアドレスとキーバッファ１０１に既に記憶されている未確定キーのアドレスとが一致しないと判定された場合は、ステップ２０６へ進み、一致していると判定された場合は、ステップ２１０へ進む。
ステップ２０６では、第１のカウンタ１０３はキーバッファ１０１に記憶されているアドレスの数をカウントし、満杯であるか否かを判定する。
【００１７】
ステップ２０６でキーバッファ１０１が満杯であると判定された場合は、既に総キー数が４キー以上存在するということなので、回り込み現象が発生していることを意味し、従ってキーの確定はせずに、ステップ２０８に進む。
ステップ２０６でキーバッファ１０１が満杯ではないと判定された場合は、ステップ２０７に進む。
【００１８】
ステップ２０７では、新規に押下されたキーのアドレスが未確定キーのアドレスとしてキーバッファ１０１に記憶される。そしてステップ２０８へ進み、次のキーに対してスキャンがセットされる。
ステップ２１０では回り込み検査が実行される。この回り込み検査では、まず、第２のカウンタ１０４は、他の新規に押下されたキー（未確定キーも含む）も含めた新規キーのキー数と既に確定され確定スキャンメモリ１０２に格納されたキー数とを総押下キー数としてカウントする。そして、この総押下キー数が４キー以上であり、かつ新規に押下されたキーのキー数が２キー以上であるかが判定される。
【００１９】
ここで回り込み現象について説明する。複数個のキースイッチをマトリクス状に配置したスキャンタイプのキーボードにおいては、例えば、メンブレンスイッチキーマトリクスがコラム側に８本、ロウ側に１６〜１８本のラインが配置されている。コラム側の各ラインは抵抗を介して５Ｖの電源に接続されている。このようなキーマトリクスにおけるキースキャンでは、ロウ側のラインを順次ずつローレベル（０Ｖ）にセットし、そのロウ側に対応するコラム側の８本の状態を読み込み、ローレベルが検出されたときに当該キーが押下されたと判定する。
【００２０】
図３は「Ａ」キーが押下された場合を説明する図であり、図４は「Ｂ」、「Ｃ」、「Ｄ」キーが同時に押下された場合を説明する図である。
回り込み現象についての理解を容易にするために、図３及び４においては、コラム側ライン及びロウ側ラインはそれぞれ２本であると仮定し、検出ラインであるコラム側ラインをＸ１及びＸ２、検出ラインと交差するロウ側ラインをＹ１及びＹ２とする。
【００２１】
コラム側ラインＸ１及びＸ２は抵抗を介して５Ｖの電源に接続されており、通常、キーボードのスキャンはロウ側ラインを順次ローレベル（０Ｖ）にセットし、コラム側ラインＸ１及びＸ２の電圧レベルを見ることでキースキャンがなされる。
図３は通常の「Ａ」キーが正常に押下された場合である。Ｙ１をローレベルにセットしてＸ１の電圧レベルと見ると０Ｖであるので、「Ａ」キーが押下されたと検出される。
【００２２】
これに対し、図４において、Ｙ１をローレベルにセットすると、電流はスイッチを「Ｃ」、「Ｄ」、「Ｂ」の順に介してグランドに流れる。このとき、Ｘ１の電圧レベルと見ると０Ｖであるので、「Ａ」キーが押下されたと誤検出される。
これが回り込み現象である。
従って、回り込み現象を検出する回り込み条件として、上述のように、他の新規に押下されたキー（未確定キーも含む）も含めた新規キーのキー数と既に確定され確定スキャンメモリ１０２に格納されたキー数とを総押下キー数としてカウントし、この総押下キー数が４キー以上であり、かつ新規に押下されたキーのキー数が２キー以上であるか否かが判定される。
【００２３】
ステップ２１０で上述の回り込み条件に合致すると判定された場合は、新規に押下されたキーは回り込みにより発生した可能性があるので、キーの確定は行わない。このとき、例えば「ＦＦ」のコードを出力し、ホストはこれを受信すると警報を鳴らすなどしてユーザに注意を喚起してもよい。この後、ステップ２０８に進み、次のキーに対してスキャンがセットされる。
【００２４】
ステップ２１０で上述の回り込み条件に合致しないと判定された場合は、回り込み現象は発生していないので、新規に押下されたキーをキー入力として確定するため、ステップ２１１へ進む。
ステップ２１１では、キーバッファ１０１の内容をクリアし、新規に押下されたキーを確定キーとしてメモリマップ形式で確定スキャンメモリ１０２に記憶し、キーＯＮを示すＯＮコードがデータ送信フラグとしてセットされる。この後、ステップ２０８に進み、次のキーに対してスキャンがセットされる。
【００２５】
ステップ２０８では、ＭＣＵポートのセット及び次にスキャンするアドレスのセット等が実行される。
ステップ２０９では、スキャンエンドであるか否か、すなわちキーボード上の全てのキーに対してスキャンがされたか否か判定される。
ステップ２０９でスキャンエンドではないと判定されると、まだスキャンされていないキーがあるのでステップ２０２に戻る。
【００２６】
ステップ２０９でスキャンエンドであると判定されると、全てのキーに対してスキャンがされたことになるので、ステップ２１２へ進む。
例えば、キースキャン１周期の間に、ステップ２０２でキー変化ありと判定され、ステップ２０３でそのキー変化がＯＦＦからＯＮであると判定され、ステップ２０５でキーバッファ１０１に記憶されたアドレスと一致しないと判定され、ステップ２０６でキーバッファ１０１が満杯ではないと判定されるといったプロセスを４回経ると、キーバッファ１０１にキーのアドレスが４つ記憶されることになり、回り込み現象が発生していることを意味する。
【００２７】
ステップ２１２では、データ送信フラグがセットされているか否かが判定される。キーデータを送信するための送信用バッファに、確定されたキーデータを記憶していくが、送信フラグが立ったときに送信バッファからデータを出す。前述のように、データ送信フラグは、ステップ２０４あるいはステップ２１１においてセットされる。つまり、ステップ２０４でデータ送信フラグが立てられるのは、キーの変化がＯＮからＯＦＦであるからであり、ステップ２１１でデータ送信フラグが立てられるのは、ステップ２１０の回り込み検査により回り込み無しと判定されたので新規に押下されたキーが確定キーであるからである。
【００２８】
ステップ２１２でデータ送信フラグがセットされていると判定された場合は、対応するキーコードを出力し、ステップ２００へ戻る。
ステップ２１２でデータ送信フラグがセットされていないと判定された場合はキーボードに対して何の操作もされていないことを意味しており、ステップ２００へ戻る。
【００２９】
そして、前述のように、本実施例では、ステップ２００によってキースキャンの周期が所定の時間、例えば８〜１０ｍｓになるようにタイミングが取られ、次のキースキャンに移る。また、本実施例によれば、所定の時間毎にキースキャンを実行するので、キーの状態が変化しても単にキーバッファ１０１へのアドレスの記憶又は削除の処理をするのみであるので、キーのＯＮ／ＯＦＦの処理時間の差はほとんどなく、常にほぼ一定の時間でキースキャンを実行することができる。これにより第三者によるキースキャンの解析を困難にすることが可能であり、信頼性の高いキーボードの実現が可能となる。
【００３０】
このように本実施例によれば、回り込み検査のためのＦキーロールオーバー技術を、１回のキースキャン内に実行するので、高速なキースキャン処理が可能である。
次に、本発明の第２の実施例によるキースキャン方法について説明する。
本実施例では、キーマトリクスは、コラム側には８本のライン、ロウ側には１０〜１８本のラインが構成され、ロウ側の各ラインのスキャン毎にコラム側の各ラインの状態を一時的に記録しておく一時スキャンメモリを備える。
【００３１】
キーボードのスキャンは、第１の実施例の項でも説明したように、ロウ側のラインを１本ずつローレベル（又はハイレベル）にセットし、そのロウ側に対応するコラム側の８本のラインの状態を読み込むことでなされる。読み込まれた各キーの状態は、本実施例においては、一時スキャンメモリに一時的に記憶される。一時スキャンメモリでは、１ビットあたり１キーが記憶されるといったメモリマップ形式で記憶され、キーマトリクスに対応してコラム側は８ビット、ロウ側にはライン数分（例えば１０〜１８ビット）だけ用意される。
【００３２】
図５は、複数のキーが押下された場合の一時スキャンメモリのメモリマップを例示する図である。この図においては、キーがＯＮである状態を「１」で示している。
複数のキーを押下してキーの回り込み現象が発生すると、図５（ａ）に例示すように、キーのＯＮ状態がコラム側及びロウ側の格子位置に現れる。つまり、コラム側のいずれか１ライン及びロウ側のいずれか１ラインにおいて、それぞれ２個以上のキーのＯＮ状態が同時に発生することになる。
【００３３】
図５（ｂ）もまた、コラム側のいずれか１ライン及びロウ側のいずれか１ラインにおいて、それぞれ２個以上ＯＮ状態が発生した場合を例示した図であるが、この場合は、キーのＯＮ状態がコラム側及びロウ側の格子位置には現れておらず、従って、回り込み現象が発生しているわけではない。実際には、正常なキー操作ではキーは１つずつ順次押下されるので、図５（ｂ）に示されるマトリクスパターンは、キーのＯＮを示す「１」が１つずつ現れる。
【００３４】
このように、図５の（ａ）及び（ｂ）の両方とも、コラム側のいずれか１ライン及びロウ側のいずれか１ラインにおいてそれぞれ２個以上のキーのＯＮ状態が検出されるが、その相違は、新規にキーが押下されたときに同時に何個のＯＮ状態のキーが検出されるかである。
従って、本発明による第２の実施例では、まず、コラム側の各ライン及びロウ側の各ラインのキーのＯＮ数をカウントし、コラム側のライン及びロウ側のラインそれぞれにおいて、少なくとも１ラインに、２キー以上のＯＮキーが存在するか否かをカウントする。１ラインに２キー以上のＯＮキーが存在していた場合は、更に、新規に押下されたキーによるＯＮ状態の検出が２個以上あったかどうかをカウントし、２個以上あった場合は、回り込み現象が発生したと判定する。
【００３５】
図６は、本発明の第２の実施例によるフローチャートを示す図である。
まず、キーボードファームウェアは、スキャンする時間になったか否かをチェックし、スキャンのタイミングになった時点でスキャンを開始する。まずステップ５０１において、スキャンポートの初期化を実施する。
続いてステップ５０２において、キースキャンが実行される。ロウ側のラインを１本ずつローレベル（又はハイレベル）にセットし、そのロウ側に対応するコラム側の８本のラインの状態を読み込み、一時スキャンメモリに記憶していく。この一時スキャンメモリにおいては、１ビットあたり１キーが記憶されるといったメモリマップ形式で記憶され、キーマトリクスに対応してコラム側は８ビット、ロウ側にはライン数分（例えば１０〜１８ビット）だけ用意される。
【００３６】
次に、ステップ５０３において、コラム側の各ラインのキーのＯＮ数をカウントし、２キー以上のＯＮキーが存在するラインが少なくとも１つ存在するか否かを判定する。
図７は、本実施例によるコラム側のラインのカウントを説明する図である。この図は、一時スキャンメモリのメモリマップの一例を示しており、「１」はキーのＯＮ状態、「０」はキーのＯＦＦ状態をそれぞれ表す。また、説明を簡単にするため、各ロウをロウ１、ロウ２、ロウ３、・・・、ロウ８、各コラムをコラム１、コラム２、コラム３、・・・、と呼び、各ロウと各コラムは入れ替えて対角表示している。
【００３７】
前述のように、各キーのＯＮ、ＯＦＦ状態は一時スキャンメモリにメモリマップ形式で記憶されており、キーマトリクスの各コラムの８本におけるラインは一時スキャンメモリの各コラムの８ビットに対応している。
表１は、８ビットの各コラム内において、１個又は０個のキーのＯＮ状態がある場合を表しており、そのそれぞれを「＊＊ｈ」のように１６進数表示している。ステップ５０３では表１に基づいて、一時スキャンメモリに記憶されたコラムのそれぞれに対して２キー以上の押下を検出する。すなわち、ステップ５０３では、一時スキャンメモリに記憶されている各コラムのキーの状態が、００ｈ、０１ｈ、０２ｈ、０４ｈ、０８ｈ、１０ｈ、２０ｈ、４０ｈ、８０ｈのいずれにもあてはまらないときは、２キー以上が押下されたと判定する。
【００３８】
【表１】
0004906178.tif 000002
例えば、図７のようなメモリマップでは、コラム２が「２４ｈ」、コラム３が「Ｄ０ｈ」であり、これら各コラムは２キー以上の押下があるものと判定される。
上述の方法で、ステップ５０３で２キー以上のＯＮキーが存在するラインが存在しないと判定された場合は回り込み現象はないということであり、キーが確定され、確定スキャンメモリに記憶される。
【００３９】
また、ステップ５０３で２キー以上のＯＮキーが存在するラインが少なくとも１つ存在すると判定された場合はステップ５０４へ進む。
次に、ステップ５０４において、ロウ側の各ラインのキーのＯＮ数をカウントし、２キー以上のＯＮキーが存在するラインが少なくとも１つ存在するか否かを判定する。
【００４０】
図８は、本実施例によるロウ側のラインのカウントを説明する図である。この図は、図７と同様に一時スキャンメモリのメモリマップの一例を示しており、「１」はキーのＯＮ状態、「０」はキーのＯＦＦ状態をそれぞれ表す。図７同様、各ロウと各コラムは入れ替えて対角表示している。
本実施例では、各ロウ毎にカウンタを用いてデータを足し込み、カウンタの値が２以上であるか否かで２キー以上の押下を検出する。例えば図８においてはロウ２のカウンタの値は２であるので、ロウ２は２キー以上の押下があると判定される。
【００４１】
上述の方法で、ステップ５０４で２キー以上のＯＮキーが存在するラインが存在しないと判定された場合は回り込みはないということであり、キーが確定され、確定スキャンメモリに記憶される。
また、ステップ５０４で２キー以上のＯＮキーが存在するラインが少なくとも１つ存在すると判定された場合はステップ５０５へ進む。
【００４２】
ステップ５０５では新規に押下されたキーによるＯＮ状態の検出が同時に２個以上あったかどうかをチェックする。図５を参照して既に説明したように、ロウ側に２キー以上のＯＮキーが存在するラインが少なくとも１つ存在していても、必ずしも回り込みが発生しているとは限らない。正常なキー操作では、キーは１つずつ順次押下されるので、一時スキャンメモリにはキーのＯＮを示す「１」が１つずつ現れるが、キーの多重打鍵の場合は一時スキャンメモリにはキーのＯＮを示す「１」が同時に２以上現れることになる。従って、ステップ５０５において新規に押下されたキーによるＯＮ状態の検出が同時に２個以上あったかどうかを検査することでこのような誤認識を防ぎ、回り込み現象の有無の判定をより確実なものにする。
【００４３】
図９は、本実施例による新規に押下されるキー数のカウントを説明する図である。この図は、図７又は８と同様に一時スキャンメモリのメモリマップの一例を示しており、「１」はキーのＯＮ状態、「０」はキーのＯＦＦ状態をそれぞれ表す。図７及び８同様、各ロウと各コラムは入れ替えて対角表示している。
本実施例では、上述のようにキーボードのスキャンの結果はメモリマップ形式で一時スキャンメモリに一時的に記憶されている。ステップ５０５では、これを確定スキャンメモリと比較し、差分をとることで図９に示す変化ビットとして抽出する。ロウ側のラインのビット値が００ｈではないようなラインが２つ以上で存在すれば、キーが同時に２以上押下されたということになる。
【００４４】
上述の方法で、ステップ５０５で同時に２個以上はないと判定された場合は、回り込みはないということなのでキーが確定され、確定スキャンメモリに記憶される。
また、ステップ５０５で同時に２個以上あったと判定された場合は場合は、回り込み現象が発生したということになる。
【００４５】
このように、本発明の第２の実施例によれば、例えば点字入力を行う場合などのような、６キーあるいは８キーといったような、複数キーの正常なキー入力が可能なキーボードに対しても回り込み検査を実現することができる。
【００４６】
【発明の効果】
以上説明したように、第１の発明によれば、回り込み検査のためのＦキーロールオーバー技術を、１回のキースキャン内に実現するので、高速なキースキャン処理を実行でき、また、第三者によるキースキャンの解析を困難にすることが可能であり、安全性が高まる。
【００４７】
第２の発明によれば、例えば点字入力を行う場合などのような、６キーあるいは８キーといったような、複数キーの正常なキー入力が可能なキーボードに対しても回り込み検査を実現することができる。
【図面の簡単な説明】
【図１】本発明の第１の実施例によるキーボード制御ファームウェアの概略図である。
【図２】本発明の第１の実施例によるフローチャートを示す図である。
【図３】「Ａ」キーが押下された場合を説明する図である。
【図４】「Ｂ」、「Ｃ」、「Ｄ」キーが同時に押下された場合を説明する図である。
【図５】複数のキーが押下された場合の一時スキャンメモリのメモリマップを例示する図である。
【図６】本発明の第２の実施例によるフローチャートを示す図である。
【図７】本実施例によるコラム側のラインのカウントを説明する図である。
【図８】本実施例によるロウ側のラインのカウントを説明する図である。
【図９】本実施例による新規に押下されるキー数のカウントを説明する図である。
【符号の説明】
１…キーボード制御ファームウェア
１０１…キーバッファ
１０２…確定スキャンメモリ
１０３…第１のカウンタ
１０４…第２のカウンタ
【図１】
0004906178.tif 000003
【図２】
0004906178.tif 000004
【図３】
0004906178.tif 000005
【図４】
0004906178.tif 000006
【図５】
0004906178.tif 000007
【図６】
0004906178.tif 000008
【図７】
0004906178.tif 000009
【図８】
0004906178.tif 000010
【図９】
0004906178.tif 000011