(57)【特許請求の範囲】
【請求項１】
情報処理装置に接続され、複数のキーを具備したキーボードであって、
前記キーのいずれかが操作されたときに、当該操作されたキーを特定するキー特定情報を取得して情報処理装置に送信する送信手段と、
前記情報処理装置から、当該情報処理装置においてフォアグラウンドにて実行中のアプリケーションを特定するアプリケーション特定情報、または当該情報処理装置においてフォーカスされているウィンドウを特定するウィンドウ特定情報を取得する取得手段と、
前記キー特定情報を送信した時点で前記情報処理装置にて実行されていたアプリケーションを特定するアプリケーション特定情報または、前記キー特定情報を送信した時点で前記情報処理装置にてフォーカスされていたウィンドウを特定するウィンドウ特定情報と、前記キー特定情報とを、操作履歴として時系列順に記録する記録手段と、
を含み、
当該記録された情報を所定処理に供するキーボード。
【請求項２】
請求項１記載のキーボードであって、
前記取得手段は、少なくとも前記キーが押下されたタイミングと、押下されたキーが離されたタイミングとで、前記キー特定情報を取得し、
前記記録手段は、少なくとも前記キーが押下されたタイミングと、押下されたキーが離されたタイミングとで、前記取得手段が取得したキー特定情報を、時系列順に記録するキーボード。
【請求項３】
請求項１または２記載のキーボードであって、さらに、
前記記録手段に記録されている操作履歴を再生する指示を受け入れる手段と、
前記指示により再生の対象となった操作履歴に含まれる情報を記録順に読み出して、
（ａ）アプリケーション特定情報を読み出したときには当該アプリケーション特定情報で特定されるアプリケーションをフォアグラウンドで実行させる指示を出力し、
（ｂ）ウィンドウ特定情報を読み出したときには当該ウィンドウ特定情報で特定されるウィンドウをフォーカスさせる指示を出力し、
（ｃ）キー特定情報を読み出したときには、当該読み出したキー特定情報によって特定されるキーが操作されたときに出力するべき情報を生成して、出力する出力手段と、
を含むキーボード。
【請求項４】
情報処理装置とそれに接続されたキーボードとを含む情報処理システムであって、
前記情報処理装置は、前記キーボードから、キーボードにて操作されたキーを特定するキー特定情報を受け入れて、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウを管理するアプリケーションに出力する手段と、
フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウの切替えを検出する手段と、
前記切替えが検出されたときに、切替え後のフォアグラウンドで実行中のアプリケーションを特定するアプリケーション特定情報、または切替え後のフォーカスされたウィンドウを特定するウィンドウ特定情報を、前記キーボードへ送出する手段と、
を含み、
前記キーボードは、複数のキーを具備し、
前記キーのいずれかが操作されたときに、当該操作されたキーを特定するキー特定情報を取得して前記情報処理装置に送信する送信手段と、
前記情報処理装置から、アプリケーション特定情報、またはウィンドウ特定情報を取得する取得手段と、
前記アプリケーション特定情報または、ウィンドウ特定情報とともに、前記キー特定情報を時系列順に記録する記録手段と、
を含む情報処理システム。
【請求項５】
キーボードに接続された情報処理装置であって、
前記キーボードから、キーボードにて操作されたキーを特定するキー特定情報を受け入れて、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウを管理するアプリケーションに出力する手段と、
フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウの切替えを検出する手段と、
前記切替えが検出されたときに、切替え後のフォアグラウンドで実行中のアプリケーションを特定するアプリケーション特定情報、または切替え後のフォーカスされたウィンドウを特定するウィンドウ特定情報を、前記キーボードへ送出する手段と、
を含む情報処理装置。
【請求項６】
情報処理装置に接続され、複数のキーを具備したキーボードを制御するコンピュータを、
前記キーのいずれかが操作されたときに、当該操作されたキーを特定するキー特定情報を取得して情報処理装置に送信する送信手段と、
前記情報処理装置から、当該情報処理装置においてフォアグラウンドにて実行中のアプリケーションを特定するアプリケーション特定情報、または当該情報処理装置においてフォーカスされているウィンドウを特定するウィンドウ特定情報を取得する取得手段と、
前記キー特定情報を送信した時点で前記情報処理装置にて実行されていたアプリケーションを特定するアプリケーション特定情報または、前記キー特定情報を送信した時点で前記情報処理装置にてフォーカスされていたウィンドウを特定するウィンドウ特定情報と、前記キー特定情報とを操作履歴として時系列順に記録する記録手段と、
として機能させるプログラム。
【請求項７】
キーボードに接続された情報処理装置を、
前記キーボードから、キーボードにて操作されたキーを特定するキー特定情報を受け入れて、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウを管理するアプリケーションに出力する手段と、
フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウの切替えを検出する手段と、
前記切替えが検出されたときに、切替え後のフォアグラウンドで実行中のアプリケーションを特定するアプリケーション特定情報、または切替え後のフォーカスされたウィンドウを特定するウィンドウ特定情報を、前記キーボードへ送出する手段と、
として機能させるプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、コンピュータ等の情報処理装置に文字情報等を入力する際に利用されるキーボード、情報処理システム、情報処理装置、及びプログラムに関する。
【背景技術】
【０００２】
近年の情報処理装置では、文字情報の入力を行うにあたり、キーボードが主に利用されている。また同じ内容のキー入力を繰返し行う労を軽減するべく、情報処理装置側にてキーボードを介して入力された情報を保持し、当該保持した情報を参照しつつ、過去に入力された通りに、改めて入力が行われたかのように処理を行う、いわゆるキーボードマクロというものが考えられている。
【０００３】
また特許文献１には、キーボードへの入力内容に応じたキーデータを発生したときに、当該キーデータをバッファメモリに記憶しておき、後にキーデータを再生する指示を受けてバッファメモリの記憶内容を読み出してコンピュータへ送出するという、ログ取得再生機能つきのキーボードが開示されている。
【先行技術文献】
【特許文献】
【０００４】
【特許文献１】特開平８−２４１１５３号公報
【発明の概要】
【発明が解決しようとする課題】
【０００５】
しかしながら、上記従来のキーボードマクロでは、情報処理装置側においてキーデータを記憶するため、情報処理装置を交換した場合には入力をし直さなければならない。
【０００６】
例えばプログラムのデバッグ等においては、機種が相異なる複数の情報処理装置をそれぞれ利用して動作確認を行うような場合が想定されるが、キーボードマクロを用いる場合は、各機種の情報処理装置に対し、それぞれ一度は手作業で同じキー操作を行う必要がある。
【０００７】
また特許文献１に開示の技術では、記録したキーデータの入力対象となるアプリケーションやウィンドウを予め別途記録しておかないと、後にどのアプリケーションやウィンドウに対して作業をしていたかが特定できなくなる場合がある。
【０００８】
本発明は上記実情に鑑みて為されたもので、操作されたキーを特定する情報とともに、キーを特定する情報を送出したときの情報処理装置側の状況を後から把握可能とするキーボード、情報処理システム、情報処理装置、及びプログラムを提供することを、その目的の一つとする。
【課題を解決するための手段】
【０００９】
上記従来例の問題点を解決するための本発明は、情報処理装置に接続され、複数のキーを具備したキーボードであって、前記キーのいずれかが操作されたときに、当該操作されたキーを特定するキー特定情報を取得して情報処理装置に送信する送信手段と、前記情報処理装置から、当該情報処理装置においてフォアグラウンドにて実行中のアプリケーションを特定するアプリケーション特定情報、または当該情報処理装置においてフォーカスされているウィンドウを特定するウィンドウ特定情報を取得する取得手段と、前記キー特定情報を送信した時点で前記情報処理装置にて実行されていたアプリケーションを特定するアプリケーション特定情報または、前記キー特定情報を送信した時点で前記情報処理装置にてフォーカスされていたウィンドウを特定するウィンドウ特定情報と、前記キー特定情報とを、操作履歴として時系列順に記録する記録手段と、を含み、当該記録された情報を所定処理に供することとしたものである。
【００１０】
これにより、キー操作とともにアプリケーションやウィンドウの状況を表す情報も記録され、キーを特定する情報を送出したときの情報処理装置側でのアプリケーションやウィンドウの状況を後から把握できる。
【００１１】
またここで、前記取得手段は、少なくとも前記キーが押下されたタイミングと、押下されたキーが離されたタイミングとで、前記キー特定情報を取得し、前記記録手段は、少なくとも前記キーが押下されたタイミングと、押下されたキーが離されたタイミングとで、前記取得手段が取得したキー特定情報を、時系列順に記録することとしてもよい。
【００１２】
このように押下開始と終了とを記録することで、押下をし続けていることや、複数のキーが一斉に操作される状況、いわゆるキーコンビネーションが記録できることになる。
【００１３】
さらに、前記記録手段に記録されている操作履歴を再生する指示を受け入れる手段と、前記指示により再生の対象となった操作履歴に含まれる情報を記録順に読み出して、（ａ）アプリケーション特定情報を読み出したときには当該アプリケーション特定情報で特定されるアプリケーションをフォアグラウンドで実行させる指示を出力し、（ｂ）ウィンドウ特定情報を読み出したときには当該ウィンドウ特定情報で特定されるウィンドウをフォーカスさせる指示を出力し、（ｃ）キー特定情報を読み出したときには、当該読み出したキー特定情報によって特定されるキーが操作されたときに出力するべき情報を生成して、出力する出力手段と、を含んでもよい。
【００１４】
これによりキー操作が記録されたときのアプリケーションやウィンドウの状況を再現させることができることとなる。
【００１５】
さらに本発明の一態様に係る情報処理システムは、情報処理装置とそれに接続されたキーボードとを含み、前記情報処理装置は、前記キーボードから、キーボードにて操作されたキーを特定するキー特定情報を受け入れて、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウを管理するアプリケーションに出力する手段と、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウの切替えを検出する手段と、前記切替えが検出されたときに、切替え後のフォアグラウンドで実行中のアプリケーションを特定するアプリケーション特定情報、または切替え後のフォーカスされたウィンドウを特定するウィンドウ特定情報を、前記キーボードへ送出する手段と、を含み、前記キーボードは、複数のキーを具備し、前記キーのいずれかが操作されたときに、当該操作されたキーを特定するキー特定情報を取得して前記情報処理装置に送信する送信手段と、前記情報処理装置から、アプリケーション特定情報、またはウィンドウ特定情報を取得する取得手段と、前記アプリケーション特定情報または、ウィンドウ特定情報とともに、前記キー特定情報を時系列順に記録する記録手段と、を含むこととしたものである。
【００１６】
これにより、キー操作とともにアプリケーションやウィンドウの状況を表す情報も記録され、キーを特定する情報を送出したときの情報処理装置側でのアプリケーションやウィンドウの状況を後から把握できる。
【００１７】
また本発明の一態様に係る情報処理装置は、キーボードに接続され、前記キーボードから、キーボードにて操作されたキーを特定するキー特定情報を受け入れて、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウを管理するアプリケーションに出力する手段と、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウの切替えを検出する手段と、前記切替えが検出されたときに、切替え後のフォアグラウンドで実行中のアプリケーションを特定するアプリケーション特定情報、または切替え後のフォーカスされたウィンドウを特定するウィンドウ特定情報を、前記キーボードへ送出する手段と、を含むこととしたものである。
【００１８】
これにより、キー操作とともにアプリケーションやウィンドウの状況を表す情報も記録させることができるようになり、キーを特定する情報を送出したときの情報処理装置側でのアプリケーションやウィンドウの状況を後から把握できる。
【００１９】
また本発明の一態様に係るプログラムは、情報処理装置に接続され、複数のキーを具備したキーボードを制御するコンピュータを、前記キーのいずれかが操作されたときに、当該操作されたキーを特定するキー特定情報を取得して情報処理装置に送信する送信手段と、前記情報処理装置から、当該情報処理装置においてフォアグラウンドにて実行中のアプリケーションを特定するアプリケーション特定情報、または当該情報処理装置においてフォーカスされているウィンドウを特定するウィンドウ特定情報を取得する取得手段と、前記キー特定情報を送信した時点で前記情報処理装置にて実行されていたアプリケーションを特定するアプリケーション特定情報または、前記キー特定情報を送信した時点で前記情報処理装置にてフォーカスされていたウィンドウを特定するウィンドウ特定情報と、前記キー特定情報とを操作履歴として時系列順に記録する記録手段と、として機能させることとしたものである。
【００２０】
これにより、キー操作とともにアプリケーションやウィンドウの状況を表す情報も記録され、キーを特定する情報を送出したときの情報処理装置側でのアプリケーションやウィンドウの状況を後から把握できる。
【００２１】
さらに本発明の別の態様に係るプログラムは、キーボードに接続された情報処理装置を、前記キーボードから、キーボードにて操作されたキーを特定するキー特定情報を受け入れて、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウを管理するアプリケーションに出力する手段と、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウの切替えを検出する手段と、前記切替えが検出されたときに、切替え後のフォアグラウンドで実行中のアプリケーションを特定するアプリケーション特定情報、または切替え後のフォーカスされたウィンドウを特定するウィンドウ特定情報を、前記キーボードへ送出する手段と、として機能させることとしたものである。
【００２２】
これにより、キー操作とともにアプリケーションやウィンドウの状況を表す情報も記録させることができるようになり、キーを特定する情報を送出したときの情報処理装置側でのアプリケーションやウィンドウの状況を後から把握できる。
【発明の効果】
【００２３】
本発明によると、操作されたキーを特定する情報とともに、キーを特定する情報を送出したときの情報処理装置側の状況に関する情報を併せて記録するので、操作されたキーを記録した時点での情報処理装置側の状況を後から把握できる。
【図面の簡単な説明】
【００２４】
【図１】本発明の実施の形態に係る情報処理システムの構成例を表すブロック図である。
【図２】本発明の実施の形態に係るキーボードにおける記録処理の例を表すフローチャート図である。
【図３】本発明の実施の形態に係るキーボードが保持する操作履歴データベースの例を表す説明図である。
【図４】本発明の実施の形態に係る情報処理装置が表示する操作履歴データベースの選択のためのインタフェースの例を表す説明図である。
【図５】本発明の実施の形態に係るキーボードにおける再生処理の例を表すフローチャート図である。
【発明を実施するための形態】
【００２５】
本発明の実施の形態について図面を参照しながら説明する。本実施の形態に係る情報処理システムは図１に例示するように、キーボード１０と、情報処理装置２０とを含んで構成される。ここでキーボード１０は、複数のキーを含むキー入力部１１と、制御部１２と、記憶部１３と、インタフェース部１４とを含んで構成されている。また情報処理装置２０は、制御部２１と、記憶部２２と、インタフェース部２３と、表示部２４とを含んで構成されている。
【００２６】
キー入力部１１は、複数のキーを具備する。そしてこのキー入力部１１は、当該複数のキーのいずれかが押下開始（メイク）されるか、または押下終了（ブレーク）されたことを検出する。キー入力部１１は、いずれかのキーが押下開始または押下終了したことを検出すると、その時点で押下されているキーを表す情報のセット（押下中のキーのスキャンコードのセット）を出力するキー・スキャン・デバイスを含む。
【００２７】
制御部１２は、マイクロプロセッサ等であり、記憶部１３に格納されたプログラムに従って動作する。この制御部１２は、キー入力部１１から前回入力されたスキャンコードのセットを記憶するバッファを管理する。なお、初期状態ではこのバッファはクリアしておく。制御部１２は、キー入力部１１からスキャンコードのセットが入力されると、前回入力されたスキャンコードのセット（バッファに記憶している情報）との差分を演算する。そして制御部１２は、この差分から、押下開始となったキーのスキャンコードまたは押下終了となったキーのスキャンコードを検出し、当該検出したスキャンコードで特定されるキーの情報（キー特定情報と呼ぶ）を得る。そして制御部１２は、今回入力されたスキャンコードのセットをバッファに格納する。
【００２８】
一例として、前回入力されたスキャンコードのセットに、「Ａ」のキーを表すスキャンコードが含まれており、今回入力されたスキャンコードのセットに「Ａ」のキーを表すスキャンコードが含まれていなければ、「Ａ」のキーはブレーク（離された）と判断する。また、前回入力されたスキャンコードのセットに、「Ｂ」のキーを表すスキャンコードは含まれていないが、今回入力されたスキャンコードのセットに「Ｂ」のキーを表すスキャンコードが含まれていれば、「Ｂ」のキーはメイク（押下された）と判断する。さらに、前回入力されたスキャンコードのセットに、「Ｃ」のキーを表すスキャンコードが含まれており、今回入力されたスキャンコードのセットにも「Ｃ」のキーを表すスキャンコードが含まれていれば、「Ｃ」のキーは押下され続けていると判断する。
【００２９】
制御部１２は、キー入力部１１から入力されたスキャンコードのセットをインタフェース部１４を介して出力する。このような制御部１２の動作については、いわゆるＵＳＢ（Universal Serial Bus）キーボードの動作として広く知られているので、詳しい説明を省略する。
【００３０】
本実施の形態において特徴的なことの一つは、この制御部１２が、上記広く知られた動作のほかに、次の動作を行うことである。すなわち本実施の形態の制御部１２は、インタフェース部１４を介して情報処理装置２０から、後に述べるアプリケーション特定情報、またはウィンドウ特定情報を取得する。そしてこれらアプリケーション特定情報やウィンドウ特定情報とともに、操作されたキーを特定するキー特定情報を記憶部１３に、時系列順に記録する（記録処理）。
【００３１】
またこの制御部１２は、利用者の指示により、当該記録されている各種情報を情報処理装置２０へ出力する処理（再生処理）を行ってもよい。これら制御部１２の記録処理や再生処理については後に述べる。
【００３２】
また本実施の形態の別の例では、キー入力部１１と制御部１２とは次のようにして押下（メイク）または押下終了（ブレーク）されたキーを特定するキー特定情報を得てもよい。すなわち本実施の形態の別の例ではキー入力部１１は、当該複数のキーのそれぞれについて、押下開始と押下終了（リリース）とを検出し、検出ごとに押下された（または押下されていた）キーを特定するスキャンコードと、キーが押下開始されたか押下終了となったかのいずれであるかを表す操作内容情報とを出力するキー・スキャン・デバイスを含む。
【００３３】
この例において、制御部１２は、マイクロプロセッサ等であり、記憶部１３に格納されたプログラムに従って動作する。そしてこの制御部１２は、キー入力部１１から入力される、スキャンコードと操作内容情報とを受け入れ、操作内容情報によりキーが押下開始されたことを検出したときには、当該押下開始となったキーを、スキャンコードから特定する。制御部１２は、当該特定したキーを表す情報（キー特定情報）と、キーが押下されたことを表す情報（メイクコード）とをインタフェース部１４を介して出力する。またこの制御部１２は、押下されているキーについて、押下終了の操作内容情報が入力されるまで、予め定めたタイミングごとに繰返して、当該キーを特定するキー特定情報とメイクコードとをインタフェース部１４を介して出力してもよい。この制御部１２は、複数のキーが一斉に押下されているときには、各キーについてこの処理を行う。さらに、キー入力部１１から入力されるスキャンコードと操作内容情報により、当該スキャンコードで表されるキーが押下終了となったことを検出すると、制御部１２は、当該押下終了となったキーを、スキャンコードから特定する。そして制御部１２は、当該特定したキーを表す情報（キー特定情報）と、キーが押下終了となったことを表す情報（ブレークコード）とをインタフェース部１４を介して出力する。このような制御部１２の動作についても、広く知られているので詳しい説明を省略する。
【００３４】
なお、この例においても、制御部１２は、インタフェース部１４を介して情報処理装置２０から、後に述べるアプリケーション特定情報、またはウィンドウ特定情報を取得する。そしてこれらアプリケーション特定情報やウィンドウ特定情報とともに、操作されたキーを特定するキー特定情報を記憶部１３に、時系列順に記録する（後に述べる記録処理）。またこの例においても、制御部１２は、利用者の指示により、当該記録されている各種情報を情報処理装置２０へ出力する処理（後に述べる再生処理）を行ってもよい。
【００３５】
記憶部１３は、制御部１２によって実行されるプログラムを保持する。このプログラムはＤＶＤ−ＲＯＭ（Digital Versatile Disc Read Only Memory）や半導体メモリデバイス等、コンピュータ可読な記録媒体に格納されて提供され、この記憶部１３に格納されたものであってもよい。また、このプログラムはネットワークを介してダウンロードされて、この記憶部１３に格納されたものであってもよい。
【００３６】
またこの記憶部１３は制御部１２のワークメモリとしても機能する。そして記憶部１３は、制御部１２の記録処理により、制御部１２から記録の対象として指示された情報を保持する。
【００３７】
インタフェース部１４は、例えばＵＳＢ（Universal Serial Bus）等のインタフェースであり、ここでは情報処理装置２０と接続される。このインタフェース部１４は、制御部１２から入力される指示に従って各種情報を出力する。またこのインタフェース部１４は、情報処理装置２０が出力する情報を受け入れて制御部１２に出力する。
【００３８】
情報処理装置２０の制御部２１は、例えばマイクロプロセッサであり、記憶部２２に格納されたプログラムに従って動作する。この制御部２１は、例えばマイクロソフト社のウィンドウズ（登録商標）や、グーグル社のアンドロイド等のオペレーティングシステム（ＯＳ）を稼働させる。また、このＯＳの制御の下、種々のアプリケーションプログラム（以下アプリケーションと略称する）を実行する。
【００３９】
本実施の形態においてこの制御部２１が実行するＯＳは、例えば複数のアプリケーションを並行的に実行する（処理自体は時分割的であってもよい）、いわゆるマルチタスク型のものであってもよい。この場合、ある時点で利用者からの指示操作を受け入れる状態にあるアプリケーションは一般には一つに定まる。このように利用者からの指示操作を受け入れる状態にあるアプリケーションを、フォアグラウンドにて実行中のアプリケーションと呼ぶ。
【００４０】
また本実施の形態における制御部２１が実行するＯＳは、グラフィカルユーザインタフェースを提供可能となっていてもよい。一例としてウィンドウズ（登録商標）のように、アプリケーションが複数のウィンドウを表示可能となっているものであってもよい。このように、複数のウィンドウが表示可能となっているときには、入力操作の対象となるウィンドウを利用者が特定し、当該特定したウィンドウに対して操作を行うこととなる。このように入力操作の対象となっているウィンドウを、ここではフォーカスされているウィンドウと呼ぶ。
【００４１】
制御部２１は、キーボード１０から受信する情報から、入力された情報から押下されたキーまたは押下終了したキーを表す情報を得る。具体的に、キーボード１０から入力される情報が、いずれかのキーが押下または押下終了したタイミングごとに受け入れたスキャンコードのセットである場合は、前回入力されたスキャンコードのセットとの差分を演算する。そして制御部２１は、この差分から、押下開始となったキーのスキャンコードまたは押下終了となったキーのスキャンコードを検出し、当該検出したスキャンコードで特定されるキーの情報（キー特定情報と呼ぶ）と、キーが押下されたか、押下終了となったのか、あるいは押下され続けているかを判断する。そして制御部２１は、今回入力されたスキャンコードのセットを記憶しておく。
【００４２】
一例として、前回入力されたスキャンコードのセットに、「Ａ」のキーを表すスキャンコードが含まれており、今回入力されたスキャンコードのセットに「Ａ」のキーを表すスキャンコードが含まれていなければ、「Ａ」のキーはブレーク（離された）と判断する。また、前回入力されたスキャンコードのセットに、「Ｂ」のキーを表すスキャンコードは含まれていないが、今回入力されたスキャンコードのセットに「Ｂ」のキーを表すスキャンコードが含まれていれば、「Ｂ」のキーはメイク（押下された）と判断する。さらに、前回入力されたスキャンコードのセットに、「Ｃ」のキーを表すスキャンコードが含まれており、今回入力されたスキャンコードのセットにも「Ｃ」のキーを表すスキャンコードが含まれていれば、「Ｃ」のキーは押下され続けていると判断する。
【００４３】
制御部２１は、予め定められたタイミングごとに、前回の判断の結果、押下されている、あるいは押下されて続けていると判断されるキーを特定するキー特定情報を、キーイベントのキュー（待ち行列）に登録する。
【００４４】
また制御部２１は、キーボード１０から受信する情報が、キー特定情報とメイクコードとである場合、制御部２１は、当該キー特定情報で特定されるキーが押下されたと判断して、当該キー特定情報を、キーイベントのキュー（待ち行列）に登録する。
【００４５】
またキーボード１０から受信する情報が、キー特定情報とブレークコードとである場合は、制御部２１は、当該キー特定情報で特定されるキーの押下が終了したと判断する。
【００４６】
制御部２１はさらに、フォアグラウンドで実行中のアプリケーションにおける処理として、キーイベントのキューを予め定めたタイミングごとに調べて、キューに登録されたキー特定情報のうち、最初に登録されたキー特定情報を読み出して、キーイベントに関連する処理を実行する。これにより、フォアグラウンドで実行中のアプリケーション、またはフォーカスされたウィンドウを管理するアプリケーションに対し、キーボード１０から受信する情報が出力される。例えば、制御部２１は、このアプリケーションとしてのキーイベントに関連する処理として、キューからキー特定情報を読み出した時点でフォーカスされているウィンドウに、当該キー特定情報で表される文字を表示する。
【００４７】
また本実施の形態において特徴的なことの一つは、この制御部２１が、フォアグラウンドで実行中のアプリケーションが切替えられるごと、またはフォーカスされているウィンドウが切り替るごとに、当該切替えを検出することである。そして制御部２１は、切替えが検出されると、切替え後にフォアグラウンドで実行中のアプリケーションを特定するアプリケーション特定情報、または切替え後にフォーカスされたウィンドウを特定するウィンドウ特定情報の少なくとも一方を、キーボード１０へ送出する。
【００４８】
ここでアプリケーション特定情報は、アプリケーション名などでよく、ウィンドウ特定情報はウィンドウのタイトル（開かれているファイル名など）でよい。
【００４９】
また制御部２１は、利用者からキー操作の記録開始指示を受け入れると、当該指示を受け入れた時点においてフォアグラウンドで実行中のアプリケーションを特定するアプリケーション特定情報、または当該指示を受け入れた時点においてフォーカスされたウィンドウを特定するウィンドウ特定情報の少なくとも一方を、キーボード１０へ送出する。ここでキー操作の記録開始指示は、情報処理装置２０側にて例えばマウス操作等により利用者から受け入れてもよい。この場合は情報処理装置２０の制御部２１は、キーボード１０に対してキー操作の記録開始指示があった旨の情報を送出する。また制御部２１は利用者からキー操作の記録終了指示を受け入れると、キーボード１０に対してキー操作の記録終了指示があった旨の情報を送出する。またこのキー操作の記録開始指示はキーボード１０にて行われるものであってもよい。この場合は、制御部２１はキーボード１０からキー操作の記録開始指示があった旨の情報を受け入れる。
【００５０】
さらに制御部２１は、キーボード１０から、情報を表示するべき旨の指示とともに、表示するべき情報を受け入れて、当該情報を表示部２４に表示出力する。
【００５１】
記憶部２２は、メモリデバイスや、ハードディスク等のディスクデバイスを含んで構成される。この記憶部２２は、制御部２１によって実行されるプログラムを保持する。このプログラムは、ＤＶＤ−ＲＯＭや半導体メモリデバイス等のコンピュータ可読な記録媒体に格納されて提供され、この記憶部２２に格納されたものであってもよい。また、このプログラムはネットワークを介して受信され、この記憶部２２に格納されたものであってもよい。さらに、この記憶部２２は、制御部２１のワークメモリとしても動作する。
【００５２】
インタフェース部２３は、例えばＵＳＢインタフェースであり、マウスＭやキーボード１０に接続される。このインタフェース部２３は、マウスＭやキーボード１０から受け入れる情報を制御部２１に出力する。またこのインタフェース部２３は、制御部２１から入力される指示に従い、アプリケーション特定情報やウィンドウ特定情報をキーボード１０へ送出する。
【００５３】
表示部２４は、ディスプレイ等であり、制御部２１から入力される指示に従って情報を表示する。また、この情報処理装置２０は、ネットワークインタフェース等を備えて、インターネット等を介して、ウェブサーバ等と通信し、ウェブサーバ側から提供される情報を制御部２１に出力し、また制御部２１から入力される指示に従ってウェブサーバ側へ情報を送出することとしてもよい。
【００５４】
次に、本実施の形態のキーボード１０における制御部１２の記録処理と再生処理とについて説明する。本実施の形態の制御部１２は、キー操作の記録開始指示と記録終了指示とを受け入れる。この記録開始指示や記録終了指示は、既に述べたように、キーボード１０側のキー操作にて行われてもよい。また、マウスＭ等により、情報処理装置２０に対してキーボード１０に対する以外の操作にて行われてもよい。後者の場合、制御部１２は、情報処理装置２０側からキー操作の記録開始指示と記録終了指示とを受け入れることとなる。
【００５５】
本実施の形態の制御部１２は、キー操作の記録開始指示を受けて、新規の操作履歴データベースを記憶部１３内に生成する。そして制御部１２は、記録終了指示を受けるまでの間、図２に例示する記録処理を実行する。
【００５６】
この記録処理では、図２（ａ）に示すように、制御部１２がキー特定情報を得るとともに、当該キー特定情報で特定されたキーが押下されたことを検出すると（Ｓ１）、押下された時刻を表す時刻情報を、図示しない時刻計時用のＩＣ（Integrated Circuit）から取得する（Ｓ２）。そして制御部１２は、インタフェース部１４を介して、押下されたキーに関する情報（スキャンコードのセットや、キー特定情報等）を情報処理装置２０へ送出する（Ｓ３）。また制御部１２は、キー特定情報と、キーが押下されたことを表す情報と、押下された時刻を表す時刻情報とを関連付けて操作履歴データベースに記録（レコード）として格納する（記録：Ｓ４）。ここでステップＳ３は、ステップＳ１以降のどのタイミングでおこなってもよい。
【００５７】
またこの制御部１２は、図２（ｂ）に示すように、キー特定情報を得るとともに、当該キー特定情報で特定されたキーの押下が終了したことを検出すると（Ｓ６）、当該押下終了を検出した時刻を表す時刻情報を、図示しない時刻計時用のＩＣから取得する（Ｓ７）。そして制御部１２は、キー特定情報と、キーの押下が終了したことを表す情報と、押下終了の時刻を表す時刻情報とを関連付けて、操作履歴データベースに記録として格納する（記録：Ｓ８）。
【００５８】
また制御部１２は、ステップＳ６において押下が終了したキーを特定するキー特定情報と、押下が終了したことを表す情報とを受け入れたときに、当該押下が終了したキーに関する情報（スキャンコードのセットや、キー特定情報等）を情報処理装置２０へ送出してもよい。
【００５９】
なお、制御部１２は、例えばシフトキーが押下されてから「Ａ」のキーが押下され、次に「Ａ」のキーが離されて、次いでシフトキーが離される、という順序で操作が行われる場合、シフトキーについてステップＳ１からＳ４までの処理を行い、「Ａ」のキーについてステップＳ１からＳ４までの処理を行う。
【００６０】
そして「Ａ」のキーが離されると、「Ａ」のキーについてステップＳ６からＳ８の処理を行い、シフトキーが離されたときに、シフトキーについてステップＳ６からＳ８の処理を行う。これにより本実施の形態では、複数のキーが一斉に押下されている状態（キーコンビネーションの入力がされている状態）も、記録可能としている。
【００６１】
さらに本実施の形態の制御部１２は、キー操作の記録開始指示があった時点と、アプリケーションやフォーカスされたウィンドウが切替えられた時点とにおいて、情報処理装置２０からインタフェース部１４を介してアプリケーション特定情報、またはウィンドウ特定情報を受け入れる。そして制御部１２は、当該情報を受け入れた時刻を表す情報を、図示しない時刻計時用のＩＣから取得する。そして制御部１２は、受け入れた情報（アプリケーション特定情報、またはウィンドウ特定情報）と押下された時刻を表す情報とを関連付けて、記憶部１３に格納する。
【００６２】
ここで制御部１２は、記憶部１３に情報を記録する際に、過去に記録されている情報に続けて（前回記録した情報の次の情報として）、情報の記録を行う。従って制御部１２の処理により、記憶部１３には、記録開始指示を受けるごとに、当該記録開始指示を受けてから記録終了指示を受けるまでの操作履歴データベースとして、図３に例示するような情報が蓄積されることとなる。図３に例示するように、操作履歴データベースの記録（レコード）は、それぞれ情報の種別（タイプ）と、値（バリュー）と、時刻情報とを関連付けたものである。ここで情報の種別は、値が、アプリケーションやフォーカスされたウィンドウを切替えたときの、当該切替え後のアプリケーションやウィンドウを特定する情報と、操作されたキー特定情報とのいずれであるかを表す。
【００６３】
値は、アプリケーションやフォーカスされたウィンドウを切替えたときの、当該切替え後のアプリケーションやウィンドウを特定する情報そのもの、または操作されたキー特定情報であり、時刻情報は、それぞれの値を受け入れた時刻（キー特定情報の場合は押下された時刻または押下を終了した時刻）を表す情報となる。
【００６４】
このように操作履歴データベースはアプリケーションやフォーカスされたウィンドウを切替えたときの、当該切替え後のアプリケーションやウィンドウを特定する情報と、操作されたキー特定情報とを時系列順に記録したものとなる。本実施の形態では、記録開始指示を受けるごとに作成された複数の操作履歴データベースが記憶部１３に記録されることとなる。
【００６５】
本実施の形態では、このような記録がされることにより、あるキー特定情報を送信した時点で、情報処理装置２０にて実行されていたアプリケーションは、当該キー特定情報を送信した時点から記録を遡って、最初に見出されたアプリケーション特定情報で特定されるアプリケーションということになる。
【００６６】
また、あるキー特定情報を送信した時点で、情報処理装置２０にてフォーカスされていたウィンドウは、当該キー特定情報を送信した時点から記録を遡って、最初に見出されたウィンドウ特定情報で特定されるウィンドウということになる。
【００６７】
つまり、この例では、キー特定情報を送信した時点で情報処理装置２０にて実行されていたアプリケーションを特定するアプリケーション特定情報、または当該キー特定情報を送信した時点で情報処理装置２０にてフォーカスされていたウィンドウを特定するウィンドウ特定情報とともに、キー特定情報が時系列順に記録されていることとなる。
【００６８】
次に、本実施の形態のキーボード１０における制御部１２の再生処理について説明する。この再生処理では、キーボード１０は、利用者からどの記録を再生するかの指定を受け入れる。具体的にキーボード１０の制御部１２は、再生処理の開始指示を受けると、記録開始指示を受けるごとに作成され、記憶部１３に格納された複数の操作履歴データベースの一覧を作成して、情報処理装置２０に送出し、利用者に提示させる。
【００６９】
ここで操作履歴データベースの一覧を生成するにあたっては、制御部１２は、例えば各操作履歴データベースにおいて時系列上、最初に記録されているアプリケーション特定情報ないしウィンドウ特定情報と、最初のＮ個（Ｎは自然数）のキー特定情報により、入力された文字の列とを抽出する。制御部１２はまた、各操作履歴データベースに固有の識別情報と、各識別情報で識別される操作履歴データベースから抽出した情報とを関連付けた、操作履歴データベースの一覧を生成する。そして制御部１２は、この操作履歴データベースの一覧を表示するべき情報として、当該情報を表示するべき旨の指示を情報処理装置２０へ送出する。ここで識別情報は例えば記録された順序を表す連番であってもよい。
【００７０】
またこの操作履歴データベースの一覧を、表示すべき情報として受け入れた情報処理装置２０は、例えば図４に例示するように、操作履歴データベースの一覧を表示して利用者に提供する。また情報処理装置２０は提供した一覧から操作履歴データベースの一つが選択されると、当該選択された操作履歴データベースを識別する識別情報を、キーボード１０へ送出する。
【００７１】
キーボード１０の制御部１２は、情報処理装置２０から選択された操作履歴データベースを識別する識別情報を受け入れる。そして制御部１２は、当該識別情報で識別される操作履歴データベースから各情報を、記録順に記憶部１３から読み出しながら、再生の処理を行う。具体的にこの再生の処理は、ＵＳＢキーボードであれば図５に例示するようなものとなる。
【００７２】
すなわち制御部１２は、スキャンコードのセットを表す変数を初期化する（初期化処理：Ｓ１１）。制御部１２は、次に、情報処理装置２０から受け入れた識別情報で識別される操作履歴データベースを記憶部１３から読み出す（Ｓ１２）。そして制御部１２は、当該読み出した操作履歴データベースの先頭から順に、記録（レコード）を読み出す（Ｓ１３）。
【００７３】
制御部１２は当該読み出した記録がアプリケーション特定情報と、ウィンドウ特定情報と、キー特定情報とのどれを含むものかを判断する（Ｓ１４）。このステップＳ１４において、制御部１２は、読み出した記録がアプリケーション特定情報を含むものであれば、当該アプリケーション特定情報を情報処理装置２０へ送出する（Ｓ１５）。そして制御部１２は、情報処理装置２０からアプリケーション特定情報として、ステップＳ１５で送出したアプリケーション特定情報と同じ値の情報が受信されるまで待機する（Ｓ１６）。ここで情報処理装置２０からアプリケーション特定情報として、ステップＳ１５で送出したアプリケーション特定情報と同じ値の情報が受信されると、制御部１２は、次の記録がまだあるか否かを調べる（Ｓ１７）。
【００７４】
制御部１２は、次の記録はないと判断すると（Noであると）、処理を終了する。また制御部１２は、ステップＳ１７において、次の記録があると判断すると（Yesであると）、ステップＳ１３に戻って次の記録を読み出して処理を続ける。
【００７５】
また、ステップＳ１４において、読み出した記録がウィンドウ特定情報を含むものであれば、当該ウィンドウ特定情報を情報処理装置２０へ送出する（Ｓ１８）。そして制御部１２は、情報処理装置２０からウィンドウ特定情報として、ステップＳ１８で送出したウィンドウ特定情報と同じ値の情報が受信されるまで待機する（Ｓ１９）。ここで情報処理装置２０からステップＳ１８で送出したウィンドウ特定情報と同じ値の情報が受信されると、制御部１２は、ステップＳ１７に移行して処理を続ける。
【００７６】
さらにステップＳ１４において、読み出した記録がキー特定情報を含むものであれば、制御部１２は、当該記録に、キーが押下されたことを表す情報と、キーの押下が終了したことを表す情報のいずれが含まれているかを調べる（Ｓ２０）。ここで記録に含まれる情報がキーが押下されたことを表す情報である場合は、制御部１２は記録に含まれるキー特定情報が表すキーに対応するスキャンコードを、スキャンコードのセットを表す変数にセットする（Ｓ２１）。そして制御部１２は、当該変数にセットされたスキャンコードのセットを情報処理装置２０へ送出する（Ｓ２２）。制御部１２はステップＳ１７に移行して処理を続ける。
【００７７】
一方、ステップＳ２０において、記録に含まれる情報がキーの押下が終了したことを表す情報である場合は、制御部１２は記録に含まれるキー特定情報が表すキーに対応するスキャンコードを、スキャンコードのセットを表す変数から取り除く（Ｓ２３）。そして制御部１２は、ステップＳ２２に移行して処理を続ける。
【００７８】
またＵＳＢキーボードでなく、キー特定情報を送信するキーボードの場合は、ステップＳ２１にてステップＳ１４で読み出した記録に含まれるキー特定情報と、メイクコードとを情報処理装置２０に送出してステップＳ１７へ移行する。またステップＳ２３ではステップＳ１４で読み出した記録に含まれるキー特定情報と、ブレークコードとを情報処理装置２０に送出してステップＳ１７へ移行する。この例ではステップＳ２１の処理は必要ない。またこの例では初期化処理においてスキャンコードのセットを表す変数を初期化する必要はない。
【００７９】
情報処理装置２０では、キーボード１０からアプリケーション特定情報やウィンドウ特定情報を受信して、次のように動作する。すなわち本実施の形態の一態様では、この情報処理装置２０の制御部２１は受信したアプリケーション特定情報で特定されるアプリケーションをフォアグラウンドで実行するよう求めるメッセージを表示する。また制御部２１は、ウィンドウ特定情報を受信したときには、当該受信したウィンドウ特定情報で特定されるウィンドウをフォーカスするべき旨のメッセージを表示する。利用者はこれらのメッセージを見て情報処理装置２０を操作し、指定されたアプリケーションの起動やフォアグラウンド実行指示、ないしウィンドウのフォーカスを行うこととなる。
【００８０】
また、本実施の形態のある例では、情報処理装置２０の制御部２１は、受信したアプリケーション特定情報で特定されるアプリケーションを人為的操作を受けることなしに起動してもよい。具体的にアプリケーション特定情報がアプリケーションの名称である場合、情報処理装置２０は、当該名称のアプリケーションをフォアグラウンドで実行するよう設定することとすればよい。
【００８１】
さらに制御部２１は、ウィンドウ特定情報を受信したときには、当該受信したウィンドウ特定情報で特定されるウィンドウをフォーカスする。具体的に制御部２１は、フォアグラウンドで実行しているアプリケーションに対して、ウィンドウ特定情報で特定されるウィンドウをフォーカスするよう指示する。
【００８２】
制御部２１は、オペレーティングシステムやアプリケーションとしての処理を行う際に、これらの指示を受けて、特定されたアプリケーションを起動し、また特定されたウィンドウをフォーカスする。なお制御部２１は、特定されたアプリケーションが見つからないなど起動ないしフォアグラウンド実行できないとき、または特定されたウィンドウがフォーカスできない場合は、エラーを報知する。このようにエラーを報知したときには、制御部２１は、キーボード１０に対して再生処理を中断するべき旨の信号を送信してもよい。
【００８３】
また制御部２１は、キーボード１０からスキャンコードのセットが受信されると、当該スキャンコードのセットからキーの押下や押下終了を検出する。そして当該検出した結果に従い、押下されているキーを特定するキー特定情報を、キーイベントのキュー（待ち行列）に登録する。
【００８４】
本実施の形態の情報処理システムは以上の構成を備えてなるので、次のように動作する。以下の例では、アプリケーションＸがフォアグラウンドで起動され、ウィンドウαがフォーカスされている状態で、文字列「abcde」を入力してリターンキーが入力されると、ウィンドウβがポップアップし（開いてフォーカスされた状態になり）、利用者がこのウィンドウβに対して文字列「xyz」を入力する…というような動作が行われる例について述べる。
【００８５】
まず操作履歴を記録するときには、利用者は例えば情報処理装置２０にてアプリケーションＸがフォアグラウンドで起動され、ウィンドウαがフォーカスされている状態で、キー操作の記録開始指示を行う。すると情報処理装置２０は、キー操作の記録開始指示が行われた旨の情報をキーボード１０へ出力する。情報処理装置２０は、また、フォアグラウンドで実行されているアプリケーションＸを特定するアプリケーション特定情報と、フォーカスされているウィンドウαを特定するウィンドウ特定情報とをキーボード１０へ出力する。
【００８６】
キーボード１０では、記録開始指示を受けて、新たな操作履歴データベースを生成し、この操作履歴データベースに対して、情報処理装置２０から受信するアプリケーション特定情報と、ウィンドウ特定情報とを、それぞれ受信した時刻を表す情報に関連付けて記録する。
【００８７】
ここで利用者がキーボード１０を操作して文字列「abcde」を入力してリターンキーを押下すると、キーボード１０は各キーの押下及び押下終了を検出するごとに、押下または押下終了を検出したキーを特定するキー特定情報を、当該検出の時刻情報とともに記録する。
【００８８】
ここで情報処理装置２０側でウィンドウβがポップアップしてフォーカスされた状態となると、情報処理装置２０は、ウィンドウβがフォーカスされたことを検出し、ウィンドウβを特定するウィンドウ特定情報を生成してキーボード１０へ出力する。
【００８９】
キーボード１０ではこのウィンドウ特定情報を、それを受信した時刻を表す情報に関連付けて記録する。そして利用者がキーボード１０を操作して文字列「xyz」を入力すると、キーボード１０は各キーの押下及び押下終了を検出するごとに、押下または押下終了を検出したキーを特定するキー特定情報を、当該検出の時刻情報とともに記録する。このようにして、記録終了指示を受けるまで、操作履歴データベースへの記録が行われる。例えばこの操作履歴データベースにはアプリケーション特定情報と、記録されているキー特定情報の先頭数文字を採用して、「Ｘ-abcdexyz」などといった名称が関連付けて記憶部１３に保持される。
【００９０】
次に、利用者が情報処理装置２０に対して、操作履歴データベースからの再生処理を指示すると、情報処理装置２０はキーボード１０に対して操作履歴データベースの一覧を要求する。キーボード１０では記憶部１３に格納されている操作履歴データベースの一覧を生成して情報処理装置２０に提供する。情報処理装置２０では、この一覧を表示する。
【００９１】
利用者が、表示された一覧から再生の対象となる操作履歴データベースを特定すると、情報処理装置２０は、当該再生の対象として特定された操作履歴データベースを特定する情報（その名称等でよい）をキーボード１０に出力する。ここでは先に説明した「Ｘ-abcdexyz」の操作履歴データベースが選択されたものとする。
【００９２】
キーボード１０は、利用者に選択された操作履歴データベースから、記録されている各情報を、記録順に読み出しながら、再生の処理を行う。すなわちキーボード１０は、最初に記録されているアプリケーション特定情報「Ｘ」を参照し、情報処理装置２０に対して、このアプリケーション特定情報を送出する。そしてキーボード１０は、情報処理装置２０からアプリケーション特定情報として、ここで送出したアプリケーション特定情報と同じ値の情報が受信されるまで待機する。
【００９３】
情報処理装置２０ではこのアプリケーション特定情報を受けて、当該アプリケーション特定情報で特定されるアプリケーションをフォアグラウンドで実行するよう設定する。例えばアプリケーションＸは起動されているが、フォアグラウンドで実行されているアプリケーションがＹであった場合、情報処理装置２０はアプリケーションＸをフォアグラウンドアプリケーションとする。
【００９４】
また、これによりフォアグラウンドで実行されているアプリケーションが切り替わるので、情報処理装置２０は、切り替え後にフォアグラウンドで実行されているアプリケーションを特定するアプリケーション特定情報をキーボード１０へ送信する。ここで送信されるアプリケーション特定情報は、キーボード１０から送出したアプリケーション特定情報と同じ値となる。従ってキーボード１０は、このアプリケーション特定情報が情報処理装置２０から受信されると、処理を再開する。
【００９５】
またキーボード１０は、次に記録されているウィンドウ特定情報「α」を参照し、情報処理装置２０に対して、このウィンドウ特定情報を送出する。そしてキーボード１０は、情報処理装置２０からウィンドウ特定情報として、ここで送出したウィンドウ特定情報と同じ値の情報が受信されるまで待機する。
【００９６】
情報処理装置２０ではこのウィンドウ特定情報を受けて、当該ウィンドウ特定情報で特定されるウィンドウをフォーカスするよう設定する。また、これによりフォーカスされているウィンドウが切り替わるので、情報処理装置２０は、切り替え後にフォーカスされているウィンドウαを特定するウィンドウ特定情報をキーボード１０へ送信する。ここで送信されるウィンドウ特定情報は、先行してキーボード１０から送出したウィンドウ特定情報と同じ値となる。従ってキーボード１０は、このウィンドウ特定情報が情報処理装置２０から受信されると、処理を再開する。
【００９７】
さらにキーボード１０は続けて記録されている文字列「abcde」及びリターンキーに係るキー特定情報を読み出し、これらが順次押下され、押下終了した旨の情報（実際にキーが操作された場合と同じ情報）を、情報処理装置２０へ送出する。またキーボード１０は記録に基づいて、ウィンドウ特定情報「β」を情報処理装置２０へ送出する。そしてキーボード１０は、情報処理装置２０からウィンドウ特定情報として、ここで送出したウィンドウ特定情報と同じ値の情報が受信されるまで待機する。
【００９８】
情報処理装置２０では、キーボード１０から受信した情報に基づいて押下されたキーを検出し、文字列abcde及びリターンキーの入力を受け入れる。そしてウィンドウβをポップアップする。ここで情報処理装置２０においてフォーカスされているウィンドウが切り替わるため、情報処理装置２０は、切り替え後にフォーカスされているウィンドウβを特定するウィンドウ特定情報をキーボード１０へ送信する。
【００９９】
キーボード１０では、このウィンドウ特定情報の値が、先行して送信したウィンドウ特定情報の値に一致しているので、このウィンドウ特定情報が情報処理装置２０から受信されると、処理を再開する。キーボード１０は、そして文字列「xyz」に係るキー特定情報を含む記録を読み出して、これらのキーが操作されたときに送信する情報を生成して、情報処理装置２０へ当該生成した情報を送出する。
【０１００】
なお、ここまでの説明においてキーボード１０は、内蔵するメモリ等の記憶部１３に操作履歴データベースを格納することとしていたが、本実施の形態はこれに限られない。例えばキーボード１０は、ＳＤカード等の外部記憶メディアのインタフェースを備えてもよい。そしてキーボード１０は操作履歴データベースを、このインタフェースに接続された外部記憶メディアに格納してもよい。また、操作履歴データベースを記憶するデバイスを、不揮発性のメモリとしておくこととしてもよい。
【０１０１】
このようにしておくと、外部記憶メディアやキーボード１０自体を携行し、外出先で情報処理装置２０に接続して記録を再生することも可能となる。
【０１０２】
［一部の再生］
なお、キーボード１０は再生処理の対象として、操作履歴データベースではなく、その一部の指定を受けて再生処理を実行してもよい。この例では、キーボード１０は、利用者に選択された操作履歴データベースに含まれる情報の一覧を、情報処理装置２０に送信して利用者に提示する。そして利用者が再生の開始位置となる情報を指定すると、キーボード１０は当該指定を受け入れて、選択された操作履歴データベースに記録されている情報のうち、当該指定された情報以降に記録されている情報を読み出して再生処理を行う。
【０１０３】
この場合、キーボード１０は、指定された情報から記録をさかのぼって、最初に見出されたアプリケーション特定情報またはウィンドウ特定情報の少なくとも一方を検索する。そして、検索により見出されたアプリケーション特定情報またはウィンドウ特定情報を情報処理装置２０に対して送信する。そしてそれから指定された情報以後にあるキー特定情報から順に、図５に例示した再生処理を行う。
【０１０４】
例えば、先に述べた例において利用者が、文字列「xyz」に係るキー特定情報を含む記録から再生するよう指示する（文字列「xyz」に係るキー特定情報を含む記録を再生の開始位置として指定した）場合、キーボード１０は、当該文字列「xyz」の記録から、記録順にさかのぼって最初に見出されるウィンドウ特定情報（ウィンドウβを特定する情報）と、アプリケーション特定情報（アプリケーションＸを特定する情報）とを見出す。
【０１０５】
そしてキーボード１０は、当該見出したアプリケーション特定情報を、情報処理装置２０へ送出する。そしてキーボード１０は、情報処理装置２０からアプリケーション特定情報として、ここで送出したアプリケーション特定情報と同じ値の情報が受信されるまで待機する。
【０１０６】
情報処理装置２０ではこのアプリケーション特定情報を受けて、当該アプリケーション特定情報で特定されるアプリケーションをフォアグラウンドで実行するよう設定する。例えばアプリケーションＸは起動されているが、フォアグラウンドで実行されているアプリケーションがＹであった場合、情報処理装置２０はアプリケーションＸをフォアグラウンドアプリケーションとする。
【０１０７】
また、これによりフォアグラウンドで実行されているアプリケーションが切り替わるので、情報処理装置２０は、切り替え後にフォアグラウンドで実行されているアプリケーションを特定するアプリケーション特定情報をキーボード１０へ送信する。ここで送信されるアプリケーション特定情報は、キーボード１０から送出したアプリケーション特定情報と同じ値となる。従ってキーボード１０は、このアプリケーション特定情報が情報処理装置２０から受信されると、処理を再開する。
【０１０８】
またキーボード１０は、先の処理で見出したウィンドウβを特定するウィンドウ特定情報を、情報処理装置２０に対して送出する。そしてキーボード１０は、情報処理装置２０からウィンドウ特定情報として、ここで送出したウィンドウ特定情報と同じ値の情報が受信されるまで待機する。
【０１０９】
情報処理装置２０ではこのウィンドウ特定情報を受けて、当該ウィンドウ特定情報で特定されるウィンドウをフォーカスするよう設定する。また、これによりフォーカスされているウィンドウが切り替わるので、情報処理装置２０は、切り替え後にフォーカスされているウィンドウβを特定するウィンドウ特定情報をキーボード１０へ送信する。ここで送信されるウィンドウ特定情報は、先行してキーボード１０から送出したウィンドウ特定情報と同じ値となる。従ってキーボード１０は、このウィンドウ特定情報が情報処理装置２０から受信されると、処理を再開する。
【０１１０】
さらにキーボード１０は開始位置以降に記録されている文字列「xyz」に係るキー特定情報を読み出し、これらが順次押下され、押下終了した旨の情報（実際にキーが操作された場合と同じ情報）を、情報処理装置２０へ送出する。以下は図５に例示した処理と同様となる。
【０１１１】
［時間通りの再生］
また本実施の形態の操作履歴データベースでは各情報に対して、各情報が記録された時刻情報が関連付けられているので、この時刻情報を利用して、操作が行われた時間間隔通りの再生を行ってもよい。
【０１１２】
例えば制御部１２は、図５に示した処理を行う際に、ステップＳ１３で読み出した記録に含まれる時刻情報と、前回読み出した時刻情報との差を求める。そして制御部１２は、当該差の時刻だけ待ってから（実行待機）ステップＳ１４へ移行することとしてもよい。なお、前回読み出した時刻情報がない場合（最初の記録である場合）は、実行待機することなく、ステップＳ１４へ移行する。
【０１１３】
［記録開始指示の別の例］
さらにここまでの例では、情報処理装置２０において明示的に記録開始の指示が入力されることとしていたが、本実施の形態はこれに限られない。例えば、プログラム開発中に、デバッガーがアプリケーションを起動したときに、記録開始指示をキーボード１０へ送出することとしてもよい。
【符号の説明】
【０１１４】
１０  キーボード、１１  キー入力部、１２，２１  制御部、１３，２２  記憶部、１４，２３  インタフェース部、２０  情報処理装置、２４  表示部。
【図１】
0005811885.tif 000002
【図２】
0005811885.tif 000003
【図３】
0005811885.tif 000004
【図４】
0005811885.tif 000005
【図５】
0005811885.tif 000006