(57)【特許請求の範囲】
【請求項１】
マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とＣＰＵを有する電子機器であって、
前記キースキャン装置は、
第１、第２、第３のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、
キースキャン部起動前の待機状態において、ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ割込み通知したあとで前記待機状態にするスキャン制御部とを有し、
前記ＣＰＵは、
キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記キースキャン結果情報をキースキャン装置から読み取る
ことを特徴とする電子機器。
【請求項２】
マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とＣＰＵを有する電子機器であって、
前記キースキャン装置は、
第１、第２、第３のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果として、零を含む押下キー数を検出して、押下キー数別の割込み種別情報を生成する割込み種別情報生成部と、
キースキャン部起動前の待機状態において、ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ前記割込み種別情報と共に割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ前記割込み種別情報と共に割込み通知したあとで前記待機状態にするスキャン制御部とを有し、
前記ＣＰＵは、
キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記キースキャン結果情報をキースキャン装置から読み取ると共に、前記割込み種別情報により押下キー数を認識する
ことを特徴とする電子機器。
【請求項３】
マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とＣＰＵを有する電子機器であって、
前記キースキャン装置は、
第１、第２、第３のトリガ条件のいずれかで起動されてマトリクスキーのキースキャ
ンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーのキー個数分全ての結果を順次読出しながら、読出し個数をカウントするキーコードカウンタと、
前記順次読出し中に押下有のときのキーコードカウンタの値をキーコードとしてキーコード記憶部に記憶させるキーコード変換部と、
キースキャン部起動前の待機状態において、ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ割込み通知したあとで前記待機状態にするスキャン制御部とを有し、
前記ＣＰＵは、
キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記キーコード記憶部のキーコードをキースキャン装置から読み取ることを特徴とする電子機器。
【請求項４】
マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とＣＰＵを有する電子機器であって、
前記キースキャン装置は、
第１、第２、第３のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が２以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が２以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部と、
キースキャン部起動前の待機状態において、ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ割込み通知したあとで前記待機状態にするスキャン制御部とを有し、
前記ＣＰＵは、
キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記ゴーストキー情報をキースキャン装置から読み取る
ことを特徴とする電子機器。
【請求項５】
前記キースキャン装置は、さらに、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が２以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が２以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部とを有し、
前記スキャン制御部は、
前記割込み種別情報に前記ゴーストキー情報を含ませる
ことを特徴とする請求項２記載の電子機器。
【請求項６】
前記キースキャン装置は、さらに、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が２以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が２以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部とを有し、
前記キーコード変換部は、
前記キーコードに前記ゴーストキー情報を含ませる
ことを特徴とする請求項３記載の電子機器。
【請求項７】
前記ＣＰＵは、
前記キースキャン装置に対して、キースキャン起動の前記第３のトリガ条件の所定待ち時間と、キースキャンのスキャン行数と、キースキャンの行幅時間を設定し、
前記キースキャン装置は、
前記ＣＰＵから設定された所定待ち時間とスキャン行数と行幅時間に基づいて、キースキャンを実行する
ことを特徴とする請求項１乃至４のいずれか１項に記載の電子機器。
【請求項８】
外部のマトリクスキーとＣＰＵとのそれぞれのインターフェース部を有するキースキャン装置であって、
第１、第２、第３のトリガ条件のいずれかで起動されて前記マトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、
キースキャン部起動前の待機状態において、前記ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ割込み通知したあとで前記待機状態にするスキャン制御部と
を備えることを特徴とするキースキャン装置。
【請求項９】
外部のマトリクスキーとＣＰＵとのそれぞれのインターフェース部を有するキースキャン装置であって、
第１、第２、第３のトリガ条件のいずれかで起動されて前記マトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果として、零を含む押下キー数を検出して、押下キー数別の割込み種別情報を生成する割込み種別情報生成部と、
キースキャン部起動前の待機状態において、ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ前記割込み種別情報と共に割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ前記割込み種別情報と共に割込み通知したあとで前記待機状態にするスキャン制御部と
を備えることを特徴とするキースキャン装置。
【請求項１０】
外部のマトリクスキーとＣＰＵとのそれぞれのインターフェース部を有するキースキャン装置であって、
第１、第２、第３のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーのキー個数分全ての結果を順次読出しながら、読出し個数をカウントするキーコードカウンタと、
前記順次読出し中に押下有のときのキーコードカウンタの値をキーコードとしてキーコード記憶部に記憶させるキーコード変換部と、
キースキャン部起動前の待機状態において、ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ割込み通知したあとで前記待機状態にするスキャン制御部と
を備えることを特徴とするキースキャン装置。
【請求項１１】
外部のマトリクスキーとＣＰＵとのそれぞれのインターフェース部を有するキースキャン装置であって、
第１、第２、第３のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、
前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が２以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が２以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部と、
キースキャン部起動前の待機状態において、ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ割込み通知したあとで前記待機状態にするスキャン制御部と
を備えることを特徴とするキースキャン装置。
【請求項１２】
さらに、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が２以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が２以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部とを有し、
前記スキャン制御部は、
前記割込み種別情報に前記ゴーストキー情報を含ませる
ことを特徴とする請求項９記載のキースキャン装置。
【請求項１３】
さらに、
前記キースキャン結果情報を記憶するキースキャン結果記憶部と、
前記キースキャン結果記憶部からマトリクスキーの行をシフトしながら単位行内の押下有の個数を検出する行内押下数カウンタと、
前記単位行内の押下有の個数が２以上の場合に該当行の列毎の押下有の個数をカウントする列毎の押下数カウンタと、
前記いずれかの列毎の押下数カウンタの値が２以上の場合にゴーストキーと判断してゴーストキー情報を作成するゴースト判定部とを有し、
前記キーコード変換部は、
前記キーコードに前記ゴーストキー情報を含ませる
ことを特徴とする請求項１０記載のキースキャン装置。
【請求項１４】
さらに、
前記キースキャン起動の前記第３のトリガ条件の所定待ち時間と、キースキャンのスキャン行数と、キースキャンの行幅時間を記憶する記憶部を有し、
前記ＣＰＵから前記記憶部に設定された所定待ち時間とスキャン行数と行幅時間に基づいてキースキャンを実行する
ことを特徴とする請求項８乃至１１のいずれか１項に記載のキースキャン装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、マトリクスキーのキースキャン装置、およびこのキースキャン装置とＣＰＵとを有する電子機器に関する。
【背景技術】
【０００２】
マトリクスキーのキースキャンをキースキャン装置が行い、結果を外部のＣＰＵ等へ通知する構成がある。  
例えば、特許文献１は、キースキャン装置の一例を開示しており、外部（ＣＰＵ）との割込みＩ／Ｆを有する。特許文献１の図３、図４に示されるように、キースキャン装置は、まず、キー押下開始を検出し、それをトリガとしてキースキャンしてスキャン結果であるマトリクスの状態をキーレジスタに記憶し、割込みで外部へ通知する。外部は、割込みを受信すると、キーレジスタを読んでスキャン結果を認識する。
【０００３】
次に、外部は、キー押下の継続状態を確認するために、キースキャン装置に対してスキャン要求を送出する。キースキャン装置は、スキャン要求を受信すると、それをトリガとしてキースキャンしてスキャン結果をキーレジスタに記憶し、割込みで外部へ通知する。外部は、割込みを受信すると、キーレジスタを読んでスキャン結果を認識する。
【０００４】
また、キースキャン装置は、キー開放開始も検出し、それをトリガとしてキースキャンしてスキャン結果をキーレジスタに記憶し、割込みで外部へ通知する。外部は、割込みを受信すると、キーレジスタを読んでスキャン結果を認識する。
【０００５】
特許文献１では、キー押下の継続状態を確認するためには、外部は、何回もキースキャン装置へスキャン要求を送信する必要がある。また、キー開放開始のタイミングはユーザのキー操作次第であり、キー開放開始によるキースキャンと外部からのスキャン要求によるキースキャンとは非同期に発生し、重なるおそれがあり、外部は、この重なりが発生しないように制御する必要がある。また、外部は、キーレジスタを読んでスキャン結果を認識するが、マトリクス状態をそのまま記憶したキーレジスタなので、押下キーの認識に手間取るという問題がある。
【０００６】
特許文献２は、キー入力装置の一例を開示しており、ＣＰＵとのＩ／Ｆを有する。キー入力装置は、マトリクスキーのキーが押下されると、そのキーに応じたキーコードを作成してラッチ回路に保持しＣＰＵはそのラッチ回路を読んでキーコードを認識している。  
特許文献２では、キーコードがどのようなものであり、どのように生成するかの記載がない。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２２７８３１号公報（段落００２８〜００３４、図３、図４）
【特許文献２】特開平３−９０９２４号公報（頁２、第１図）
【発明の概要】
【発明が解決しようとする課題】
【０００８】
特許文献１、２のキースキャン装置（キー入力装置）では、外部（ＣＰＵ）の処理負担が増えるという問題がある。また、マトリクスキー自体は元来、本質的にゴーストキーが発生する。すなわち、マトリクスキーの交点を単純にキーで短絡する方式のマトリクスキーのキースキャン装置では、実際に同時に押下されたキーの数が３個以上で特定の配置条件の場合に、キースキャンの結果として、実際に同時に押下されたキー以外のキーも押下されたと認識してしまうゴーストキーが原理的に発生する。従来は、ゴーストキーの判断をＣＰＵ側で行っており、ＣＰＵの処理負担が増えるという問題がある。
【０００９】
本発明は、使用者のキー押下開始からキー開放に至るまでを検出する構成において、キースキャン装置に繋がるＣＰＵの負担を軽減することができるキースキャン装置、およびこのキースキャン装置とＣＰＵとを有する電子機器を提供することを目的とする。
【課題を解決するための手段】
【００１０】
上記目的を達成するために、本発明の電子機器は、マトリクスキーとマトリクスキーのキースキャンを行うキースキャン装置とＣＰＵを有する電子機器であって、前記キースキャン装置は、第１、第２、第３のトリガ条件のいずれかで起動されてマトリクスキーのキースキャンを行ってキースキャン結果情報を特定するキースキャン部と、前記キースキャン結果として、キー開放と、キースキャン結果と前回のキースキャン結果との変化有と、変化無を検出するスキャン結果変化検出部と、キースキャン部起動前の待機状態において、ＣＰＵからの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを前記第１のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化有の場合にはＣＰＵへ割込み通知した後でＣＰＵからの２度目の自動スキャン許可を受信したことを前記第２のトリガ条件として前記キースキャン部を起動し、及び、キースキャンが行われて前記キースキャン結果の変化無の場合には前回キースキャンから所定待ち時間経過したことを第３のトリガ条件として前記キースキャン部を起動し、及びキースキャンが行われて前記キースキャン結果のキー開放の場合にはＣＰＵへ割込み通知したあとで前記待機状態にするスキャン制御部とを有し、前記ＣＰＵは、キースキャン装置へ自動スキャン許可を送信し、キースキャン装置からの割込み通知を受信した場合に、前記キースキャン結果情報をキースキャン装置から読み取る
ことを特徴とする。
【発明の効果】
【００１１】
本発明によれば、キースキャン装置に繋がるＣＰＵの負担を軽減することができる。
【図面の簡単な説明】
【００１２】
【図１】本発明の実施例に係る電子機器１００のキースキャン関連部分のブロック図。
【図２】本発明の実施例に係るキースキャン装置１０のキーコード変換＆ゴースト検出部３０のブロック図。
【図３】本発明の実施例に係るキースキャン装置１０のキーマトリクスＶＳキーコードカウンタを説明する図。
【図４】ゴーストキー発生の原理を説明する図。
【図５】本発明の実施例に係るキースキャン装置１０のゴーストキー検出方法を説明する図。
【図６】本発明の実施例に係る電子機器１００のキースキャン装置１０とＣＰＵ７０の動作フローチャート。
【発明を実施するための形態】
【００１３】
図１は、本発明の実施例に係る電子機器１００のキースキャン関連部分のブロック図である。使用者のキー押下開始からキー開放に至るまでを検出する構成であり、キー押下継続中のキー押下数の変化なども検出する。このために、一連のシーケンス中、所定のトリガ条件で複数回のキースキャンを行う。
【００１４】
電子機器１００のキースキャン関連部分は、大きく分けると、マトリクスキー１、キースキャン装置１０、ＣＰＵ７０等から構成される。ＣＰＵ７０は、図示しないＲＯＭ、ＲＡＭなどを有し、ＲＯＭに記憶されているソフトウェアに基づいて処理を実行する。
【００１５】
マトリクスキー１は、８行８桁のマトリクス構成で、各交点にキーがあり、押下されたキーの交点が短絡する。  
キースキャン装置１０は、８個のトランジスタ１１、８個の抵抗１２、８個のシュミット回路１３、論理和ゲート１４、チャタリング除去回路１５、８行分のスキャン結果記憶部１６、比較回路１７、８行分のスキャン結果変化記憶部１８、スキャン制御部２０等から構成される。
【００１６】
スキャン制御部２０は、キーコード変換＆ゴースト検出部３０、キーコードレジスタ３２、割込み制御部５０、スキャン許可部６１、自動スキャン許可レジスタ６２、スキャン待ちタイマレジスタ６３、スキャン行数レジスタ６４、スキャン行幅レジスタ６５、行スキャン部６６等を有する。
【００１７】
８個のトランジスタ１１は、マトリクスキー１の行０〜行７をドライブして、各行をＧＮＤレベル出力する。８個の抵抗１２はプルアップ用である。マトリクスキー１の桁０〜桁７からは、ドライブされた行（ＧＮＤレベルに落ちる）の押下されたキーに該当する桁がＧＮＤレベル信号となって出力される。すなわち、キー押下状態でＬｏｗレベル、キー開放状態でＨｉｇｈレベルである。
【００１８】
この信号は、使用者のキー押下圧力状態やキーのＯＮ抵抗の影響でロジックレベルではないアナログ信号状態なので、８個のシュミット回路１３でヒステリシス波形整形する。いずれかのキーが押下されると、論理和ゲート１４、チャタリング除去回路１５を経て、キー押下が検出される。
【００１９】
スキャン許可部６１は、所定の条件で、行スキャン部６６を許可して、行スキャンを行わせる。行スキャン部６６は、マトリクスキー１の行０〜行７を順次ドライブし、各行毎の列０〜列７の信号を、スキャン結果記憶部１６の行０レジスタ〜行７レジスタに記憶する。全スキャンの所用時間はごく短時間で終了する。スキャンした結果、スキャン結果記憶部１６には、マトリクスキー１の各キーの押下／開放状態が記憶される。１個のキー押下であれ、複数個のキーの同時押しであれ、それらの状態がそのまま記憶される。
【００２０】
比較回路１７は、スキャン結果記憶部１６に記憶された前回スキャン時の全キーの状態と、今回スキャン時のシュミット回路１３からの全キーの状態とを比較し変化を判断して、全キー分の変化有無情報をスキャン結果変化記憶部１８に記憶する。この変化有無情報（＊１）は、スキャン許可部６１でスキャン許可条件の１つとして判断される。
【００２１】
キーコード変換＆ゴースト検出部３０は、スキャン結果記憶部１６に記憶された全キーの状態を読み出して、キーコード変換とゴースト検出を行い、キーコードレジスタ３２に記録する。キーコードレジスタ３２は、ＣＰＵ７０とのインターフェース用であり、ＣＰＵ７０がこのレジスタを読んで、押下キーを特定する。キーコード変換＆ゴースト検出部３０の詳細は、あと（図２〜図５）で説明する。
【００２２】
自動スキャン許可レジスタ６２、スキャン待ちタイマレジスタ６３、スキャン行数レジスタ６４、スキャン行幅レジスタ６５は、ＣＰＵ７０とのインターフェース用である。ＣＰＵ７０がこれらのレジスタに設定し、スキャン制御部２０は、これらのレジスタの内容に基づいてスキャンを制御する。
【００２３】
自動スキャン許可レジスタ６２は、スキャン許可部６１でのスキャン許可条件の１つとして判断される。スキャン待ちタイマレジスタ６３も、スキャン許可部６１でのスキャン許可条件の１つとして判断される。
【００２４】
スキャン行数レジスタ６４は、行０〜行７の内、スキャンする行数を設定するものであり、行スキャン部６６は、このレジスタの行数分のスキャンを行う。スキャン行幅レジスタ６５は、１行あたりのスキャン時間を設定するものであり、行スキャン部６６は、このレジスタの行幅時間で１行あたりのスキャンを行う。
【００２５】
キースキャン装置１０とＣＰＵ７０とのインターフェースは、割込み信号とＩ２Ｃバスである。
【００２６】
図２は、本発明の実施例に係る電子機器１００のキースキャン装置１０のキーコード変換＆ゴースト検出部３０のブロック図である。キーコード変換＆ゴースト検出部３０は、スキャン結果記憶部１６（図１）に記憶された全キー６４個の情報を基に、キーコード変換とゴースト検出を行う。
【００２７】
キーコード変換に関係する部分は、スキャン結果記憶部１６、キーコードカウンタ３１、キーコードレジスタ３２、同時押下数カウンタ３３である。  
ゴーストキー検出に関係する部分は、スキャン結果記憶部１６、行内押下数カウンタ４１、８個の論理積ゲート４２、列０〜列７それぞれ用の８個のＧＦＣＴ４３（ゴースト検出カウンタ）、列０〜列７それぞれ用の８個のＧＦフラグ４４（ゴースト検出フラグ）、論理和ゲート４５、ゴースト判定部４６である。
【００２８】
［キーコード変換］
図２、および図３のキーマトリクスＶＳキーコードカウンタの図も用いて説明する。  
スキャン結果記憶部１６には、全キーである８行×８桁＝６４ビットの押下情報が記憶されている。スキャン結果記憶部１６の全６４ビットを順次、（行，列）＝（０，０）〜（７，７）の順で、読出しＣｋ６４個で読出しながら、その読出しＣｋ６４個をキーコードカウンタ３１でカウントする。したがって、キーコードカウンタ３１の値は、（行，列）＝（０，０）〜（７，７）のマトリクスキーの６４個のキーに一義的に割り振られた値、すなわち、キーコードとなる。
【００２９】
図３において、キーコードカウンタ３１の初期値は４０ｈ（１６進数）の例であり、４０ｈから開始する。４０ｈが（行，列）＝（０，０）のキーのキーコードである。（行，列）＝（０，０）〜（７，７）の順に進むにつれてカウントアップし、（行，列）＝（７，７）のキーのキーコードは７Ｆｈである。
【００３０】
キーコードレジスタ３２は、スキャン結果記憶部１６の押下情報が押下有のときのキーコードカウンタ３１の値を記憶することにより、押下されたキーのみのキーコードが記憶される。キーコードレジスタ３２は、最大４個、すなわち同時押し４個までのキーコードが記憶される。
【００３１】
図３において、スキャン結果記憶部１６の二重枠のキーのキー押下情報が押下有の場合、スキャン結果記憶部１６を順次読み出しながら、スキャン結果記憶部１６の二重枠の読出し時点において、それぞれ押下有が検出されて、その時のそれぞれのキーコードカウンタ３１の値の４１ｈと４８ｈの２個がキーコードレジスタ３２に記憶される。
【００３２】
同時押下数カウンタ３３は、６４個のキーの内の押下有の個数をカウント、すなわち、同時押しの個数をカウントし、この例では２個を個数情報として割込み制御部５０へ送る。割込み制御部５０は、同時押し個数に応じた割込み種別情報のＩＮＴＫＥＹ０（キー押下０個）、ＩＮＴＫＥＹ１（キー1個）、ＩＮＴＫＥＹ２（キー２個）、ＩＮＴＫＥＹ３（キー３個）、ＩＮＴＫＥＹ４（キー４個以上）を作成する。
【００３３】
このように、簡単なハードウェア構成により、押下検出されたキーのキーコード変換と、同時押下数も検出することができる。
【００３４】
［ゴーストキー検出］
図２、および図４のゴーストキー発生の原理図と図５のゴーストキー検出方法の図も用いて説明する。
【００３５】
図４は、ゴーストキー発生の原理を説明する図である。キーマトリクス１は、マトリクス構成で、各交点にキーがあり、押下されたキーの交点にある１個の行線と１個の列線が短絡する。このような構成のキーマトリクスでは、３個以上のキーが特定の配置で同時押しされた場合、キースキャンの結果、実際に押下されていないキーが押下されたとして検出されてしまう。それがゴーストキーである。
【００３６】
ゴーストキーが発生する特定の配置は、使用者により実際に同時押しされた３個のキーにより、２個の行線と２個の列線が全て短絡してしまう配置の場合である。例として、３個の黒丸のＡ、Ｂ、Ｃが同時押しされると、四角枠のＧキーが押下されてないのに、行２は、Ａ、Ｂ、Ｃを経て列５と繋がってしまう。２個の行線（行０と行２）と２個の列線（列２と列５）の全ては、３個のＡ、Ｂ、Ｃにより短絡されてしまう。
【００３７】
この状態で、以下に説明するキースキャンの結果、四角枠のＧキーが押下されていないのに押下されたとして検出されてしまう。  
キースキャンのステップは、まず、行０のみをＧＮＤレベルにドライブし、列０〜列７情報を読み取ると、行０とＢ、Ｃで短絡された列２と列５の信号がＧＮＤレベルとして読み取られ、行０と、列２、列５それぞれの交点であるＢ、Ｃのポイントのキーが押下されたとして認識される。
【００３８】
次に、順次、行１のみドライブして、行１上はキーで短絡されていないので、列０〜列７情報はＨｉｇｈレベルであり、行１上は、キー押下無しと認識される。  
次に、順次、行２のみをＧＮＤレベルにドライブし、列０〜列７情報を読み取ると、行０と行２と列２と列５は、３個のＡ、Ｂ、Ｃにより全て短絡されているので、列２と列５の信号がＧＮＤレベルとして読み取られ、行２と、列２、列５それぞれの交点である黒丸Ａと四角枠Ｇのポイントのキーが押下されたとして認識される。
【００３９】
ゴーストキーが発生する特定の配置は、前述したように、実際に同時押しされた３個のキーにより、２個の行線と２個の列線が相互に短絡してしまう場合であり、たとえば、実際に押下された３個が、図のＡ、Ｇ、Ｃの場合であっても、同様である。また、Ａ、Ｂ、Ｃ、Ｇの４個のキーが実際に同時押しされた場合も、スキャン結果は同じであるが、Ｇが実際に押下されたかゴーストであるかの区別はつかないのでゴーストキーとして処理する必要がある。
【００４０】
スキャンした結果として、４個のキー押下有が検出され、その配置が、図４のＡ、Ｂ、Ｃ、Ｇのように、２個の行線上それぞれに２個のキー押下有、且つ、２個の列線上それぞれに２個のキー押下有が検出されれば、ゴーストキーが含まれていることになる。これがゴーストキー判断の定理である。図４のような配置の場合、Ａ、Ｂ、Ｃの３個のみのキー押下有が検出されることはなく、必ず４個が検出される。もし、使用者により、Ａが左の列１にずれたポイントが押下された場合は、スキャン結果、３個が正常に検出される。
【００４１】
Ａ、Ｂ、Ｃ、Ｇの４個の内、どのキーがゴーストキーであるかは本質的に判別できないが、ゴーストキーが含まれていることを簡単なハードウェア構成で検出する方法について、次に説明する。  
図２のゴーストキー検出部分は、前述のゴーストキーの定理を簡単なハードウェアで検出することができる構成である。図２において、前述のキーコード変換で、スキャン結果記憶部１６の全６４ビットを順次、（行，列）＝（０，０）〜（７，７）の順で、読出しＣｋ６４個で読出しを行うが、そのキーコード変換の読出しと並行して、ゴーストキー検出を行う。
【００４２】
行内押下数カウンタ４１は、スキャン結果記憶部１６の読出し情報の内、押下有の個数を行単位でカウントするカウンタである。このカウンタは、スキャン結果記憶部１６の読出しの行の切替り時のタイミングでクリアされることにより、各行内の押下有の個数をカウントし、カウントが２個以上有りの情報を行単位で出力し、論理積ゲート４２の一方の入力に繋がる。
【００４３】
論理積ゲート４２の他方の入力は、スキャン結果記憶部１６の各行毎の列０〜列７の情報であり、スキャン結果記憶部１６の読出しの行と同じ行の列０〜列７の出力情報が繋がる。したがって、論理積ゲート４２の出力は、行内の押下有の個数が２個以上ある場合のみを条件に各列毎に押下有の条件を満足する場合に出力がアクティブになる。
【００４４】
これにより、ＧＦＣＴ４３（ゴースト検出カウンタ）は、各列について、論理積ゲート４２の出力をカウント、すなわち、行内の押下有の個数が２個以上ある場合のみを条件に各列毎に押下有の個数をカウントする。そして、８個の列のＧＦＣＴ４３の内のいずれかのカウント値が２以上となった場合に、ゴーストキーと判定する。
【００４５】
図５は、ゴーストキー検出方法を説明する図である。キースキャンの結果として、スキャン結果記憶部１６には、図の二重枠の４２ｈ、４５ｈ、４Ｃｈ、５２ｈ、５５ｈのキー押下が検出された例である。この内、４２ｈ、４５ｈ、５２ｈ、５５ｈのキーは、前述したように、いずれかがゴーストキーである。
【００４６】
ＧＦＣＴ４３の各列のカウント値は、初期値は、いずれも零である。行０確認時は、行０を読み出して、行内押下数カウンタが２個（４２ｈ、４５ｈ）であることが検出される。２個以上であれば、行０の各列の押下有の４２ｈ、４５ｈの情報により、ＧＦＣＴ４３列２とＧＦＣＴ４３列５の値がインクリメントされて、各１となる。
【００４７】
行１確認時は、行１を読み出して、行内押下数カウンタが１個（４Ｃｈ）であることが検出される。２個未満であれば、行１の４Ｃｈは押下されているが、ＧＦＣＴ４３列４はノーカウントである。
【００４８】
行２確認時は、行２を読み出して、行内押下数カウンタが２個（５２ｈ、４５ｈ）であることが検出される。２個以上であれば、行０の各列の押下有の４２ｈ、５５ｈの情報により、ＧＦＣＴ４３列２とＧＦＣＴ４３列５の値がインクリメントされて、各２となる。ＧＦＣＴ４３のいずれかのカウント値が２個になったことで、ゴーストキーと見なすものであり、ＧＦフラグ４４の列２と列５をセットする。
【００４９】
図２において、ＧＦフラグ４４の出力は、論理和ゲート４５を経て、ゴースト判定部４６に導かれる。ゴースト判定部４６は、ゴーストキーであることを、割込み制御部５０へ送る。また、ゴーストキーであることをキーコードレジスタ３２に送り、キーコードレジスタ３２は、押下有を検出したキーコードのＭＳＢ（最上位ビット）を１に設定して、キーコード情報の中にゴーストキー情報を含めて、記憶する。
【００５０】
割込み制御部５０は、ゴーストキーであることを示すＩＮＴＫＥＹＧＦを作成する。ゴーストキーの原理で説明したように、ゴーストキーは、同時キー押し個数が４個以上検出され、且つ、特定の配置の場合に発生するので、ＩＮＴＫＥＹ０（キー押下０個）、ＩＮＴＫＥＹ１（キー1個）、ＩＮＴＫＥＹ２（キー２個）、ＩＮＴＫＥＹ３（キー３個）では、ＩＮＴＫＥＹＧＦは発生せず、正常キーである。ＩＮＴＫＥＹ４（キー４個以上）は単独の場合は正常キーであり、ＩＮＴＫＥＹＧＦが発生時は、ＩＮＴＫＥＹ４も発生している。
【００５１】
本発明のキーコード変換＆ゴースト検出によれば、簡単なハードウェア構成で、キーコード変換とゴースト検出を行うことができる。また、この検出結果をＣＰＵ７０へ通知するので、ＣＰＵ７０のソフトウェアの処理負担を軽減することができる。
【００５２】
図６は、本発明の実施例に係る電子機器１００のキースキャン装置１０とＣＰＵ７０の動作フローチャートである。使用者のキー押下開始からキー開放に至るまでを検出するシーケンスであり、キー押下継続中のキー押下数の変化なども検出する。このために、一連のシーケンス中、所定のトリガ条件で複数回のキースキャンを行う。
【００５３】
キースキャン装置１０とＣＰＵ７０が相互に連絡してキースキャン制御を行うので、両者の動作フローチャートを併記して説明する。キースキャン装置１０側は、スキャン制御部２０の機能である。スキャン制御部２０の動作ステップは符号Ｓで示し、ＣＰＵ７０の動作ステップは符号Ｃで示す。
【００５４】
ＣＰＵ７０は、キーの確認が必要となる種々の時点において、開始する。まず、キースキャン装置１０に対して、スキャン行数レジスタ６４、スキャン行幅レジスタ６５、スキャン待ちタイマレジスタ６３の値を設定する（ステップＣ１）。そして、自動スキャン許可レジスタ６２を許可状態に設定する（ステップＣ２）。
【００５５】
キースキャン装置１０は、開始状態では待機状態であり、自動スキャン許可レジスタ６２をチェックし（ステップＳ１）、許可状態であれば、次に、マトリクスキーのキー押下を待つ（ステップＳ２）。キー押下開始を検出すると、すなわち、ＣＰＵ７０からの自動スキャン許可を受信したあとでマトリクスキーのいずれかのキーが押下開始されたことを第１のトリガ条件として、キースキャンを実行する（ステップＳ３）。
【００５６】
このキースキャン（ステップＳ３）は、スキャン行数レジスタ６４の指定行数と、スキャン行幅レジスタ６５の指定行幅で行う。また、スキャン結果から、図２〜図５で説明したキーコード変換＆ゴースト検出部３０の処理も行わせる。
【００５７】
そして、キースキャン装置１０は、検出したキーの数とゴーストキー検出結果に応じて、割込みの種別のＩＮＴＫＥＹ１（キー1個検出）、ＩＮＴＫＥＹ２（キー２個検出）、ＩＮＴＫＥＹ３（キー３個検出）、ＩＮＴＫＥＹ４（キー４個検出）、のいずれかと、またＩＮＴＫＥＹ４の場合には、ゴーストキーの可能性もあるので、ＩＮＴＫＥＹＧＦを指定して、割込み信号をＣＰＵ７０へ送信し、自動スキャン許可レジスタ６２を禁止状態にする（ステップＳ４）。
【００５８】
また、ステップＳ４では、スキャン結果変化記憶部１８のスキャン結果変化有無情報と、キーコード変換＆ゴースト検出部３０からのキー数とゴースト情報をチェックして、変化有でゴーストならば、待機状態のステップＳ１へ戻る。
【００５９】
変化有でキーの押下数１個、２個、３個、４個以上であれば、次のステップＳ５へ移行する。
【００６０】
ＣＰＵ７０は、ステップＣ３で割込み有無をチェックしており、所定時間経過しても（ステップＣ４）、キースキャン装置１０から割込みが来なかった場合は、マトリクスキーの押下がまだ無いと判断する（ステップＣ５）。この判断後、どうするかは、種々の状況に応じて、処理すればよく、例えば、全く異なる処理に移行したり、ステップＣ４の割込み有無のチェックを再び継続するなどでもよい。
【００６１】
ＣＰＵ７０は、ステップＣ３でキースキャン装置１０からの割込みを受信し、ＩＮＴＫＥＹＧＦであれば、ゴーストキー処理に入る（ステップＣ６）。ゴーストキー処理でどうするかは、種々の状況に応じて、処理すればよく、例えば、再び、ステップＣ１に戻ってもよい。
【００６２】
ＣＰＵ７０は、ステップＣ３で正常キー押下の割込みであるＩＮＴＫＥＹ１（キー1個検出）、ＩＮＴＫＥＹ２（キー２個検出）、ＩＮＴＫＥＹ３（キー３個検出）、ＩＮＴＫＥＹ４（キー４個検出）、のいずれかを受信すると、キー押下開始と判断して、キースキャン装置１０からのキーコードを読み取り、押下されたキーを特定することができる（ステップＣ７）。
【００６３】
次に、ＣＰＵ７０は、キー押下開始されたキーの状態変化を確認するために、自動スキャン許可レジスタ６２を許可状態に設定する（ステップＣ８）。
【００６４】
キースキャン装置１０は、最初のキースキャン処理であるステップＳ３、Ｓ４のあとは、再び、自動スキャン許可レジスタ６２待ち状態（ステップＳ５）にあり、許可状態を検出すると、これを第２のとりが条件として、キースキャンを実行する（ステップＳ６）。
【００６５】
そして、キースキャン装置１０は、スキャン結果変化記憶部１８のスキャン結果変化有無情報をチェックする（ステップＳ７）。変化無の場合、これは、ステップＳ２のキー押下開始から僅かの時間しか経っていないため、使用者によるキー押下状態がそのまま継続している場合がほとんどであり、その場合は、スキャン待ちタイマレジスタ６４の値をタイマに設定して設定時間経過後に、これを第３のトリガ条件として、キースキャンを再度実行する（ステップＳ６）。
【００６６】
このキースキャン装置１０のステップＳ６、Ｓ７、Ｓ８のキースキャン実行の繰り返しループにより、ＣＰＵ７０は、ステップＣ８のスキャン許可設定以降は、キースキャンの指示をキースキャン装置１０に対して設定する必要がなく、ＣＰＵ７０のソフトウェアの負担を軽減することができる。
【００６７】
キースキャン装置１０は、ステップＳ６、Ｓ７、Ｓ８のキースキャン実行の繰り返しループを行いながら、使用者によるキー開放や他の追加キー押下等を待ち、ステップＳ７でスキャン結果変化記憶部１８のスキャン結果変化が有れば、すなわち、キー状態に変化があったことを意味するので、検出したキーの数とゴーストキー検出結果に応じて、割込みの種別のＩＮＴＫＥＹ１（キー1個検出）、ＩＮＴＫＥＹ２（キー２個検出）、ＩＮＴＫＥＹ３（キー３個検出）、ＩＮＴＫＥＹ４（キー４個検出）、のいずれかと、またＩＮＴＫＥＹ４の場合には、ゴーストキーの可能性もあるので、ＩＮＴＫＥＹＧＦを指定して、割込み信号をＣＰＵ７０へ送信し、自動スキャン許可レジスタ６２を禁止状態にする（ステップＳ９）。
【００６８】
キースキャン装置１０は、ステップＳ９で変化有でゴーストならば、待機状態のステップＳ１へ戻る。変化有でキー０個であれば、キー開放を意味するので、やはり、待機状態のステップＳ１へ戻る。変化有で正常キーであれば、ステップＳ５へ戻り、第２のトリガ条件であるＣＰＵ７０からの自動スキャン許可レジスタ６２の許可を待つ。
【００６９】
ＣＰＵ７０は、ステップＣ８で、キースキャン装置１０に対して、自動スキャン許可レジスタ６２の許可設定を行った後は、キースキャン装置１０が自動で検出してくれるキー開放や他の追加キー押下やゴーストキー報告である割込みを待つ（ステップＣ９）のみでよく、ソフトウェアの負担を軽減することができる。
【００７０】
ＣＰＵ７０は、ステップＣ８で、割込みを受信すると、キー押下状態に変化有と判断し、ＩＮＴＫＥＹ０であれば、キー開放に伴う処理を行う（ステップＣ１１）。キー開放に伴う処理は、ステップＣ１へ戻って再び、キースキャン装置１０に対して、キー押下開始のチェックの指示を行ってもよいし、全く別の処理に移行してもよい。
【００７１】
ＣＰＵ７０は、ステップＣ８で、ＩＮＴＫＥＹＧＦであれば、ゴーストキーに伴う処理を行う（ステップＣ１０）。
【００７２】
ＣＰＵ７０は、ステップＣ８で、ＩＮＴＫＥＹ１、２、３、４の正常キーであれば、キーコードを読み取って（ステップＣ１２）、そのキーに応じた処理を行い、ステップＣ８へ戻る。
【００７３】
ＣＰＵ７０は、ステップＣ８で、キースキャン装置１０に対して、再び、自動スキャン許可レジスタ６２を許可状態に設定して、ステップＳ６、Ｓ７、Ｓ８の繰り返しのキースキャンを実行させ、キー開放またはゴースト検出まで待つ。
【００７４】
以上のステップにより、キー押下からキー開放までの一連のキースキャンが実行されて、キー開放により、ＣＰＵ７０、キースキャン装置１０共に初期のステップに戻る。
【００７５】
本発明の実施例によれば、ＣＰＵ７０は、キースキャン装置１０に対して、キー押下開始を知るために、最初の自動スキャン許可設定を行い、キースキャン装置１０がキー押下開始を検出して、ＣＰＵ７０へ通知する。ＣＰＵ７０は、キー押下開始を知ったあとは、キー状態の変化を知るために、２回目の自動スキャン許可設定を行うだけで、キースキャン装置１０がキー押下数の変化やキー開放までのキー状態をチェックして、ＣＰＵ７０へ通知する。したがって、ＣＰＵ７０のソフトウェアの負担を軽減することができる。
【００７６】
なお、本発明の電子機器１００は、携帯電話機、カメラ、ノートパソコンなどのマトリクスキーを持つ機器に適用することができる。
【符号の説明】
【００７７】
１  マトリクスキー
１０  キースキャン装置
１１  トランジスタ
１２  抵抗
１３  シュミット回路
１４  論理和ゲート
１５  チャタリング除去回路
１６  スキャン結果記憶部
１７  比較回路
１８  スキャン結果変化記憶部
２０  スキャン制御部
３０  キーコード変換＆ゴースト検出部
３１  キーコードカウンタ
３２  キーコードレジスタ
３３  同時押下数カウンタ
４１  行内押下数カウンタ
４２  論理積ゲート
４３  ＧＦＣＴ
４４  ＧＦフラグ
４５  論理和ゲート
４６  ゴースト判定部
５０  割込み制御部
６１  スキャン許可部
６２  自動スキャン許可レジスタ
６３  スキャン待ちタイマレジスタ
６４  スキャン行数レジスタ
６５  スキャン行幅レジスタ
６６  行スキャン部
７０  ＣＰＵ
１００  電子機器
【図１】
0005407919.tif 000002
【図２】
0005407919.tif 000003
【図３】
0005407919.tif 000004
【図４】
0005407919.tif 000005
【図５】
0005407919.tif 000006
【図６】
0005407919.tif 000007