(57)【要約】【課題】キーボード装置とおよび当該キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスとがＵＳＢ接続された場合であっても、それら各装置から入力されるデータを適切に処理する。【解決手段】第１キーボード装置４３１および第２キーボード装置４３２が接続された場合に、これら各キーボード装置のデバイスＩＤを取得し、取得したデバイスＩＤがキーボード装置および当該キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスのデバイスＩＤが登録されたデバイス照合データベースに含まれているデバイスＩＤの中に存在するか否かを照合し、一致するデバイスＩＤが存在する場合に、当該デバイスＩＤに対応するＵＳＢデバイスから入力されるデータに対する処理のために上記データ処理部が占有される期間を、他の処理を行うために上記データ処理部が占有される期間と異ならせるためのデバイス管理スレッドを生成する。【選択図】図４
2011210231.tif 000002
【特許請求の範囲】
【請求項１】
複数のＵＳＢポートと、当該各ＵＳＢポートに接続されるＵＳＢデバイスから入力されるデータを処理するデータ処理部とを有するデータ処理装置であって、
上記ＵＳＢデバイスとして上記ＵＳＢポートに接続されるキーボード装置、および上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスのデバイスＩＤが登録されたデバイス照合データベースを記憶するデータベース記憶手段と、
上記ＵＳＢポートに接続された各ＵＳＢデバイスのデバイスＩＤを取得するデバイスＩＤ取得部と、
上記デバイスＩＤ取得部が取得したデバイスＩＤと一致するデバイスＩＤが上記デバイス照合データベースに含まれるデバイスＩＤの中に存在するか否かを照合するデバイス照合部とを備え、
上記データ処理部は、上記デバイス照合部による照合結果に応じて、上記キーボード装置から入力されるデータと、上記他のＵＳＢデバイスから入力されるデータとを区別して処理することを特徴とするデータ処理装置。
【請求項２】
上記デバイス照合部によって一致するデバイスＩＤが存在すると判断された場合に、当該デバイスＩＤに対応するＵＳＢデバイスから入力されるデータに対する処理のために上記データ処理部が占有される期間を、他の処理を行うために上記データ処理部が占有される期間と異ならせるためのデバイス管理スレッドを生成するスレッド生成部を備えていることを特徴とする請求項１に記載のデータ処理装置。
【請求項３】
上記デバイス照合部によって一致するデバイスＩＤが存在すると判断された場合に、当該デバイスＩＤに対応するＵＳＢデバイスから入力されるデータに対する処理において使用するファイルおよび情報を識別するためのデバイス管理ハンドルを生成するハンドル生成部を備えていることを特徴とする請求項２に記載のデータ処理装置。
【請求項４】
上記ハンドル生成部は、上記デバイス管理スレッドと上記デバイス管理ハンドルとを対応付けることを特徴とする請求項３に記載のデータ処理装置。
【請求項５】
上記データ処理部は、上記デバイス管理ハンドルに基づいて上記ＵＳＢデバイスからデータを読み出すことを特徴とする請求項３または４に記載のデータ処理装置。
【請求項６】
コピー機能、スキャナー機能、ファクシミリ機能、およびプリンター機能のうちの２つ以上の機能を有する多機能周辺装置であって、
請求項１から５のいずれか１項に記載のデータ処理装置を備えていることを特徴とする多機能周辺装置。
【請求項７】
上記データ処理部は、上記複数のＵＳＢポートに接続された２以上のキーボード装置からの入力を受け付けて当該キーボード装置毎に処理することを特徴とする請求項６に記載の多機能周辺装置。
【請求項８】
複数のＵＳＢポートと、当該各ＵＳＢポートに接続されるＵＳＢデバイスから入力されるデータを処理するデータ処理部とを有するデータ処理装置におけるデータ管理方法であって、
上記各ＵＳＢポートに接続された各ＵＳＢデバイスのデバイスＩＤを取得するデバイスＩＤ取得工程と、
上記デバイスＩＤ取得工程で取得したデバイスＩＤが、上記ＵＳＢデバイスの１つであるキーボード装置および上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスのデバイスＩＤが登録されたデバイス照合データベースに含まれているデバイスＩＤの中に存在するか否かを照合するデバイス照合工程とを含み、
上記デバイス照合工程の照合結果に応じて、上記データ処理部に、上記キーボード装置から入力されるデータと、上記他のＵＳＢデバイスから入力されるデータとを区別して処理させることを特徴とするデータ処理方法。
【請求項９】
請求項１から５のいずれか１項に記載のデータ処理装置を動作させるプログラムであって、コンピュータを上記各部として機能させるためのプログラム。
【請求項１０】
請求項９に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＵＳＢ接続された複数の同種のＵＳＢデバイスからの入力データを処理するデータ処理装置、多機能周辺装置、およびデータ管理方法に関するものである。より具体的には、複数のＵＳＢデバイスからの入力データを、それら各入力データに対する処理を個別に行う複数のアプリケーションにそれぞれ入力するためのデータ処理装置、多機能周辺装置、およびデータ管理方法に関するものである。
【背景技術】
【０００２】
一般に、コンピュータ装置はキーボード装置に対応している。キーボード装置は、ユーザーがコンピュータ装置あるいはそのコンピュータ装置内で起動するアプリケーションプログラムと対話するのになくてはならないメカニズムである。コンピュータ装置のキーボード装置は一般にユーザーインターフェースと密接に関連している。例えば、ユーザーインターフェースを制御するアプリケーションプログラムは、キーボード装置に打ち込まれた全てのキーストロークデータを取得して記録する。つまり、ユーザーが、キーボードに対する打ち込み（つまり、キーを押すまたは指定するキーストローク）を行うと、そのキーストロークが解釈されてユーザインターフェースディスプレイに表示される。典型的には、ＵＳＢ（Universal Serial Bus）ヒューマンインターフェースデバイス（ＨＩＤ）がコンピュータに最初に接続されると、コンピュータ上のＵＳＢドライバーがそのデバイスを検出し、製造者ＩＤ、製品ＩＤ、および１または複数のデバイス記述子などの情報を抽出する。これらの処理はＵＳＢ仕様書に定義されている。一般に、ＵＳＢインターフェースは、ＰＣ（パーソナルコンピュータ）と周辺機器間の標準インターフェースであり、キーボード装置用に最も一般的に普及しているインターフェースでもある。例えば、ＭＦＰ（multifunction peripheral、多機能周辺装置）などのコンピュータ装置のＵＳＢインターフェースでは、ＵＳＢポートにＵＳＢキーボード装置を直接接続して使用するようになっているものもある。
【０００３】
ところで、ヒューマンインターフェースデバイス（ＨＩＤ）型の装置における同時アクセスをサポートするためのいくつかの提案がされている。例えば、Ａｐｐｌｅ ＨＩＤ Ｍａｎａｇｅｒ（登録商標）は、Ｍａｃ ＯＳ Ｘ（登録商標）における標準ＵＳＢ ヒューマンインターフェース（ＨＩＤ） アプリケーションプログラムインターフェース（ＡＰＩ）である。 PowerBook（登録商標）キーボードやトラックパッドのようなＡｐｐｌｅ Ｄｅｓｋｔｏｐ Ｂｕｓ （ＡＤＢ） ｄｅｖｉｃｅｓ（登録商標）も含む。「ｉｎｐｕｔ．ｈ，」に代表される、Ｌｉｎｕｘ（登録商標） Ｉｎｐｕｔ Ｓｕｂｓｙｓｔｅｍは、数多くのＡＰＩ（ＵＳＢ ＨＩＤ、ＰＳ／２、Ｗａｃｏｍ、シリアル・マウス、ＡＤＢ、その他）を統一する大変クリーンでシンプルなＡＰＩであり、大多数の流通しているＧＮＵ／Ｌｉｎｕｘにおいて入力デバイスを扱うための標準方法となっている。Ｍｉｃｒｏｓｏｆｔ（登録商標） Ｗｉｎｄｏｗｓ（登録商標） Ｄｒｉｖｅｒ Ｄｅｖｅｌｏｐｍｅｎｔ Ｋｉｔ（ＤＤＫ） ＨＩＤ ＡＰＩは、ＵＳＢ ＨＩＤに続く低階層ＡＰＩであるという点でＡｐｐｌｅ ＨＩＤ Ｍａｎａｇｅｒ（登録商標）に似ている。
【０００４】
また、特許文献１には、汎用デバイスドライバーを、プラグインされた装置毎、または装置によってサポートされている機能毎にロードすることにより、複数の装置を同じコンピュータ装置に接続することを可能にする技術が開示されている。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開２００５−３１７０１９号公報（平成１７年１１月１０日公開）
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上記の従来技術では、同じ出力信号形式でデータを出力する複数のＵＳＢデバイスが同じコンピュータ装置に接続された場合に、そのコンピュータ装置において、入力されたデータがいずれのＵＳＢデバイスから入力されたデータであるのかを認識できないという問題がある。
【０００７】
例えば、１つのコンピュータ装置にキーボード装置Ａとキーボード装置Ｂとが接続されており、ユーザーがこれら両キーボード装置に対する打ち込みを同時に行った場合、これら両キーボード装置からの入力は同じアプリケーション（キーボードデータを記録しているアプリケーション）に入力される。このため、これら両キーボード装置に対するキーストロークに応じたキーボードデータは、ユーザーインターフェース上で混ざり合ってしまう。
【０００８】
また、ＵＳＢデバイスの中には、キーボード装置と同じ出力信号形式でデータの出力を行うＵＳＢデバイス（ＵＳＢキーボードエミュレート装置）がある。そのようなＵＳＢデバイスの典型的な例としては、ＵＳＢカードリーダー（カード記録媒体に記録されているデータを読み出してコンピュータ装置に伝達する装置。ＵＳＢスマートカードリーダー等。）などが挙げられる。この種のＵＳＢデバイスとキーボード装置とが同時にＵＳＢポートに接続されている場合にも、これら各装置（キーボード装置および他のＵＳＢデバイス）からの入力がコンピュータ装置において混ざり合ってしまう。
【０００９】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、キーボード装置と、上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスとがＵＳＢ接続された場合であっても、それら各ＵＳＢデバイス（キーボード装置および他のＵＳＢ装置）から入力されるデータをＵＳＢデバイス毎に適切に処理することのできるデータ処理装置、多機能周辺装置、およびデータ管理方法を提供することにある。
【課題を解決するための手段】
【００１０】
本発明のデータ処理装置は、上記の課題を解決するために、複数のＵＳＢポートと、当該各ＵＳＢポートに接続されるＵＳＢデバイスから入力されるデータを処理するデータ処理部とを有するデータ処理装置であって、上記ＵＳＢデバイスとして上記ＵＳＢポートに接続されるキーボード装置、および上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスのデバイスＩＤが登録されたデバイス照合データベースを記憶するデータベース記憶手段と、上記ＵＳＢポートに接続された各ＵＳＢデバイスのデバイスＩＤを取得するデバイスＩＤ取得部と、上記デバイスＩＤ取得部が取得したデバイスＩＤと一致するデバイスＩＤが上記デバイス照合データベースに含まれるデバイスＩＤの中に存在するか否かを照合するデバイス照合部とを備え、上記データ処理部は、上記デバイス照合部による照合結果に応じて、上記キーボード装置から入力されるデータと、上記他のＵＳＢデバイスから入力されるデータとを区別して処理することを特徴としている。
【００１１】
上記の構成によれば、デバイス照合部が、デバイスＩＤ取得部の取得した各ＵＳＢデバイスのデバイスＩＤが、データベース記憶手段に記憶されているデバイス照合データベースに含まれるデバイスＩＤの中に存在するか否かを照合し、データ処理部が、上記デバイス照合部による照合結果に応じて、上記キーボード装置から入力されるデータと、上記他のＵＳＢデバイスから入力されるデータとを区別して処理する。これにより、キーボード装置と上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスとが接続された場合であっても、キーボード装置から入力されるデータと、他のＵＳＢデバイスから入力されるデータとを区別して処理することができる。
これら各ＵＳＢデバイス装置（キーボード装置および他のＵＳＢデバイス）からの入力データが混ざり合ってしまうことを防止し、各ＵＳＢデバイスから入力されるデータをＵＳＢデバイス毎に適切に処理することができる。
【００１２】
また、上記デバイス照合部によって一致するデバイスＩＤが存在すると判断された場合に、当該デバイスＩＤに対応するＵＳＢデバイスから入力されるデータに対する処理のために上記データ処理部が占有される期間を、他の処理を行うために上記データ処理部が占有される期間と異ならせるためのデバイス管理スレッドを生成するスレッド生成部を備えている構成としてもよい。
【００１３】
上記の構成によれば、各ＵＳＢデバイスから入力されるデータを処理するためにデータ処理部が占有される期間を、ＵＳＢデバイス毎に異ならせることができる。したがって、キーボード装置から入力されるデータと、他のＵＳＢデバイスから入力されるデータとを確実に区別して処理することができる。
【００１４】
また、上記デバイス照合部によって一致するデバイスＩＤが存在すると判断された場合に、当該デバイスＩＤに対応するＵＳＢデバイスから入力されるデータに対する処理において使用するファイルおよび情報を識別するためのデバイス管理ハンドルを生成するハンドル生成部を備えている構成であってもよい。
【００１５】
上記の構成によれば、ＵＳＢデバイス毎に固有のデバイス管理ハンドルを生成してメモリー上のファイルや情報に対するアクセスをＵＳＢデバイス毎に管理することができる。
【００１６】
また、上記ハンドル生成部は、上記デバイス管理スレッドと上記デバイス管理ハンドルとを対応付ける構成であってもよい。
【００１７】
上記の構成によれば、各ＵＳＢデバイスに対応するデバイス管理スレッドを当該ＵＳＢデバイスに固有のデバイス管理ハンドルに対応付けて管理することができる。
【００１８】
また、上記データ処理部は、上記デバイス管理ハンドルに基づいて上記ＵＳＢデバイスからデータを読み出す構成であってもよい。
【００１９】
上記の構成によれば、各ＵＳＢデバイスからのデータの読み出しをＵＳＢデバイス毎に適切に管理することができる。
【００２０】
本発明の多機能周辺装置は、コピー機能、スキャナー機能、ファクシミリ機能、およびプリンター機能のうちの２つ以上の機能を有する多機能周辺装置であって、上記したいずれかのデータ処理装置を備えていることを特徴としている。
【００２１】
上記の構成によれば、出力信号形式が同一である複数のＵＳＢデバイスが上記多機能周辺装置に接続された場合であっても、当該各ＵＳＢデバイスに対応するスレッドを生成してＵＳＢデバイス毎に分離して処理することができる。したがって、各ＵＳＢデバイスからの入力データが混ざり合ってしまうことを防止し、各ＵＳＢデバイスから入力されるデータをＵＳＢデバイス毎に適切に処理することができる。
【００２２】
また、上記データ処理部は、上記複数のＵＳＢポートに接続された２以上のキーボード装置からの入力を受け付けて当該キーボード装置毎に処理する構成であってもよい。
【００２３】
上記の構成によれば、多機能周辺装置に出力信号形式が同一である複数のキーボード装置が接続された場合であっても、それら各キーボード装置に対応するスレッドを生成してキーボード装置毎に分離して処理することができる。したがって、各キーボード装置からの入力データが混ざり合ってしまうことを防止し、各キーボード装置から入力されるデータをキーボード装置毎に適切に処理することができる。
【００２４】
本発明のデータ管理方法は、複数のＵＳＢポートと、当該各ＵＳＢポートに接続されるＵＳＢデバイスから入力されるデータを処理するデータ処理部とを有するデータ処理装置におけるデータ管理方法であって、上記各ＵＳＢポートに接続された各ＵＳＢデバイスのデバイスＩＤを取得するデバイスＩＤ取得工程と、上記デバイスＩＤ取得工程で取得したデバイスＩＤが、上記ＵＳＢデバイスの１つであるキーボード装置および上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスのデバイスＩＤが登録されたデバイス照合データベースに含まれているデバイスＩＤの中に存在するか否かを照合するデバイス照合工程とを含み、上記デバイス照合工程の照合結果に応じて、上記データ処理部に、上記キーボード装置から入力されるデータと、上記他のＵＳＢデバイスから入力されるデータとを区別して処理させることを特徴としている。
【００２５】
上記の方法によれば、キーボード装置と上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスとが接続された場合であっても、キーボード装置から入力されるデータと、他のＵＳＢデバイスから入力されるデータとを区別して処理することができる。
【００２６】
なお、上記画データ処理装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記各部として動作させることにより、上記データ処理装置をコンピュータにて実現させるプログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に含まれる。
【発明の効果】
【００２７】
以上のように、本発明のデータ処理装置は、上記ＵＳＢデバイスとして上記ＵＳＢポートに接続されるキーボード装置、および上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスのデバイスＩＤが登録されたデバイス照合データベースを記憶するデータベース記憶手段と、上記ＵＳＢポートに接続された各ＵＳＢデバイスのデバイスＩＤを取得するデバイスＩＤ取得部と、上記デバイスＩＤ取得部が取得したデバイスＩＤと一致するデバイスＩＤが上記デバイス照合データベースに含まれるデバイスＩＤの中に存在するか否かを照合するデバイス照合部とを備え、上記データ処理部は、上記デバイス照合部による照合結果に応じて、上記キーボード装置から入力されるデータと、上記他のＵＳＢデバイスから入力されるデータとを区別して処理する。
【００２８】
また、本発明のデータ管理方法は、上記各ＵＳＢポートに接続された各ＵＳＢデバイスのデバイスＩＤを取得するデバイスＩＤ取得工程と、上記デバイスＩＤ取得工程で取得したデバイスＩＤが、上記ＵＳＢデバイスの１つであるキーボード装置および上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスのデバイスＩＤが登録されたデバイス照合データベースに含まれているデバイスＩＤの中に存在するか否かを照合するデバイス照合工程とを含み、上記デバイス照合工程の照合結果に応じて、上記データ処理部に、上記キーボード装置から入力されるデータと、上記他のＵＳＢデバイスから入力されるデータとを区別して処理させる。
【００２９】
それゆえ、キーボード装置と上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスとが接続された場合であっても、キーボード装置から入力されるデータと、他のＵＳＢデバイスから入力されるデータとを区別して処理することができる。
【図面の簡単な説明】
【００３０】
【図１】本発明の一実施形態にかかるコンピュータ装置の概略構成を示すブロック図である。
【図２】本発明の一実施形態にかかるＭＦＰの概略構成を示すブロック図である。
【図３】本発明における複数のキーボード装置を管理する処理の処理手順を示す説明図である。
【図４】（ａ）および（ｂ）は本発明におけるコンピュータ装置に接続されたＵＳＢキーボード装置に対応するキーボード機能構成を示す説明図であり、（ａ）は接続されたＵＳＢキーボード装置が１つである場合、（ｂ）は接続されたＵＳＢキーボード装置が２つである場合を示している。
【図５】本発明におけるＵＳＢキーボード装置の照合処理の流れを示す説明図である。
【図６】本発明におけるキーボード管理インターフェースの概略構成を示す説明図である。
【発明を実施するための形態】
【００３１】
（１−１．コンピュータ装置の構成例）
図１は、本実施形態にかかるコンピュータ装置１２０の概略構成を示すブロック図である。この図に示すように、コンピュータ装置１２０は、制御部１２４、メモリー（アドレッサブルメモリー）１２７、デバイスインターフェース１２６、およびユーザーインターフェース１２８を備えており、これら各部はデータバス１３０を介して互いに通信可能に接続されている。
【００３２】
制御部１２４はＣＰＵ（central processing unit、中央演算装置）等からなり、アプリケーション（アプリケーションプログラム）１２３やウェブブラウザーなどを実行するオペレーションシステム（オペレーションプログラム）１２５を用いて各種の処理を行う。例えば、キーボード照合データベースを生成する処理、デバイス管理スレッドを生成する処理、およびデバイス管理ハンドルを生成する処理などを行う。これら各処理の詳細については後述する。
【００３３】
デバイスインターフェース１２６は、ＵＳＢ（universal serial bus）ポートおよびその処理部、イーサネット（登録商標）ポートおよびその処理部などからなる。なお、デバイスインターフェース１２６は、複数のＵＳＢポートを有しており、これら複数のＵＳＢポートに対して同時に複数のＵＳＢデバイスを接続可能になっている。
【００３４】
ユーザーインターフェース１２８は、状態を示すランプ、トグルスイッチ、表示装置、キーボード、マウス等のポインティングデバイス、タッチスクリーン、およびこれらの組み合わせなどからなる。
【００３５】
（１−２．ＭＦＰの構成例）
図２は、本発明をＭＦＰ（multifunction peripheral device、多機能周辺装置）２００に適用する場合の構成例を示す説明図である。この図に示すように、ＭＦＰ２００は、インターフェースポート２０２、インターフェース制御部２０４、データバス２０６、制御部（処理モジュール）２０８、ＲＯＭ（read-only memory）２１０、ＲＡＭ（random access memory）２１２、大容量記憶部２１４、画像ログ記憶部２１６、ユーザーインターフェース２１８、スキャン制御部２２０、ＦＡＸ（facsimile）制御部２２２、コピー制御部２２４、プリント制御部２２６、スキャナー２３０、プリンター２４０、および出力方向センサー２４２を備えている。また、このＭＦＰ２００は、複数のＵＳＢデバイス（ＵＳＢタイプの装置）を当該ＭＦＰ２００に同時にＵＳＢ接続できるようになっている。
【００３６】
インターフェースポート２０２には、プリンターケーブル、ＵＳＢデバイス、ネットワークリンク、あるいは外部無線モジュールなどが接続される。
【００３７】
インターフェース制御部２０４は、インターフェースポート２０２とデータバス２０６との間に設けられており、データバス２０６を介して接続されているＭＦＰ２００の１または複数の装置（制御部２０８、スキャン制御部２２０、ＦＡＸ制御部２２２、コピー制御部２２４、プリント制御部２２６など）とインターフェースポート２０２との間を直接通信可能にしたり、これら各装置の状態を示す信号の送受信を制御したりする。
【００３８】
制御部２０８は、命令を実行するプロセッサーおよび／または演算回路からなり、ＲＯＭ２１０からのデータの取り出し、ＲＡＭ２１２とのデータ交換、ＲＡＭ２１２の記憶容量を超えるデータの大容量記憶部２１４への保存などを行う。なお、インターフェース制御部２０４、スキャン制御部２２０、ＦＡＸ制御部２２２、コピー制御部２２４、およびプリント制御部２２６のうちの一部または全部の機能を制御部２０８が行う構成としてもよい。
【００３９】
ユーザーインターフェース２１８は、ユーザーからの指示を受け付ける指示入力部、およびユーザーに各種情報を提示するための表示部を備えている（いずれも図示せず）。なお、上記指示入力部は、ユーザーからの指示入力に応じた出力データをＵＳＢキーボード形式で制御部２０８に出力するキーボード、タッチパネル、あるいはキー操作部等であってもよい。
【００４０】
画像ログ記憶部２１６は、ＭＦＰ２００において取り扱った画像のログ情報を記憶する。画像ログ記憶部２１６は、個別の記憶部であってもよく、分散して備えられる構成、例えば、制御部２０８が、パラメータ、ファイル、索引、あるいはこれらの組み合わせなどをＲＯＭ２１０、ＲＡＭ２１２、大容量記憶部２１４、あるいはこれらの組み合わせに分散して記憶させる構成であってもよい。
【００４１】
スキャン制御部２２０、ＦＡＸ制御部２２２、コピー制御部２２４は、スキャナー２３０との直接通信、および／または、例えばデータバス２０６を介したスキャナー２３０と１または複数の装置との間の信号の送受信を制御する。これら各制御部は、それぞれ個別に設けられていてもよく、一体的に設けられていてもよい。
【００４２】
ＦＡＸ制御部２２２、コピー制御部２２４、およびプリント制御部２２６は、プリンター２４０との直接通信、および／または、例えばデータバス２０６を介したプリンター２４０と１または複数の装置との間の信号の送受信を制御する。これら各制御部は、それぞれ個別に設けられていてもよく、一体的に設けられていてもよい。
【００４３】
また、ＭＦＰ２００は、ＲＯＭ２１０、ＲＡＭ２１２、大容量記憶部２１４、あるいはこれらの組み合わせに、キャリブレーションテーブルを記憶している。制御部２０８、あるいは制御部２０８に接続される外部装置（例えばＵＳＢポートを介して接続される１または複数のキーボード装置）は、プリント制御部２２６および／またはインターフェースポート２０２を介してこのキャリブレーションテーブルにアクセスすることができる。
【００４４】
なお、ＭＦＰ２００が、ユーザーインターフェース２１８に対するユーザーからの指示入力や、プリンター２４０の出力方向センサー２４２の検出結果などを通知する通知手段を備えていてもよく、インターフェースポート２０２を介してＭＦＰ２００に接続される外部装置に送信する送信手段を備えていてもよい。
【００４５】
また、図１のコンピュータ装置１２０および／または図２のＭＦＰ２００は、例えばvxWorks（登録商標） あるいはLinux（登録商標）などのオペレーションシステムを備えていてもよい。また、ＭＦＰ２００は、装置を適切に機能させるためのファームウェアに加えて、当該ＭＦＰ２００に対するＵＳＢ接続をサポートするためのＵＳＢスタック（アプリケーション）を有している。ＭＦＰ２００における１つのＵＳＢポートには１つのＵＳＢキーボードが接続されており、当該ＭＦＰ２００における他のＵＳＢポートにはＵＳＢキーボードに類似するＵＳＢキーボードエミュレートリーダー（ＵＳＢキーボードエミュレート装置）が接続されている。ＭＦＰ２００に接続されているこれら各装置は、ＭＦＰ２００のオペレーションシステムにより、ＵＳＢキーボード型のデバイスに分類される。すなわち、ＵＳＢキーボード、およびＵＳＢキーボードエミュレートリーダーは、いずれもＵＳＢキーボード形式の出力データをＭＦＰ２００に出力するようになっている。ＵＳＢキーボードから入力される当該ＵＳＢキーボードに対するキー操作内容（キーストローク）に応じた情報はユーザーインターフェース２１８として備えられる操作パネルに表示され、ＵＳＢキーボードエミュレートリーダーからの情報（キーストローク）はログイン管理部（図示せず）に送られる。
【００４６】
なお、ＭＦＰ２００がコンピュータ装置１２０を備えている構成であってもよい。
【００４７】
（１−３．マルチキーボードの概要およびシーケンス）
図３は、マルチキーボード装置構成における処理シーケンスを示す説明図である。すなわち、図３は、ＵＳＢサブシステム３０１、キーボードドライバー（デバイスドライバー）３０２、キーボードマネージャー（デバイスマネージャー）３０３、およびキーボード装置から受信したキーボードイベントデータ（キーボード操作情報）に応じた処理を行うアプリケーション３０４を有する典型的なシステムの例を示している。なお、各デバイス管理スレッドの特性に応じて図３の処理シーケンスを適宜変更してもよい。
【００４８】
図３に示した、複数のＵＳＢキーボード装置（複数のＵＳＢデバイス）が接続されたシステム（コンピュータ装置１２０またはＭＦＰ２００）では、以下に示す各工程（ａ）〜（ｔ）のうちの一部または全部が実行される。
（ａ）ＵＳＢサブシステム３０１（例えばデバイスインターフェース１２６またはインターフェース制御部２０４）が装着されたＵＳＢデバイス（キーボード装置）を検出する処理（３１１）。
（ｂ）ＵＳＢサブシステム３０１がＵＳＢデバイスドライバー（キーボードドライバー）３０２に検出したＵＳＢデバイスを通知する処理（３１２）。
（ｃ）ＵＳＢサブシステム３０１が装着されたＵＳＢデバイスの装置特性（例えば、デバイス名、デバイスＩＤ、デバイスタイプ、キーバッファー、製造者ＩＤ、製品ＩＤ、デバイス記述子など）をＵＳＢデバイスドライバー３０２に提供する処理。
（ｄ）ＵＳＢデバイスドライバー３０２がデバイス入出力ハンドル（例えば“devHandle”）、すなわち当該ＵＳＢデバイスとの間のデータの入出力処理において使用するファイルおよび情報を識別するためのハンドル（デバイス管理ハンドル）を生成する処理（３１３）。なお、ハンドルとは、ある処理を行うために用いられるオブジェクト（メモリ上に実体を有するファイル、スレッド、各種情報等）を識別するための値である。すなわち、本明細書におけるデバイス入出力ハンドルは、当該デバイス入出力ハンドルに対応するＵＳＢデバイスに対するデータの入出力処理を行うために用いられるファイルおよび情報を識別するためのものである。
（ｅ）ＵＳＢデバイスドライバー３０２が装着されたＵＳＢデバイスを照合データベースと比較・照合する処理、すなわち、装着されたＵＳＢデバイスのデバイスＩＤとデバイス照合データベースに登録されているデバイスＩＤとを照合する処理（３１４）。
（ｆ）装着されたＵＳＢデバイスがデバイス照合データベースに登録されているデバイスと一致する場合に、ＵＳＢデバイスドライバー３０２が当該ＵＳＢデバイスに対応付けられたデバイスマネージャーハンドル（例えば“keyHandle”）、すなわち当該ＵＳＢデバイスから入力されるデータの管理処理において使用するファイルおよび情報を識別するためのハンドル（デバイス管理ハンドル）を生成する処理（３１０）。
（ｇ）ＵＳＢデバイスドライバー３０２が上記の新たなデバイスマネージャーハンドルに対応付けられたデバイス管理スレッド（例えば“KeyMan(devHandle)”）を生成する処理（３２０）。なお、スレッドとはソフトウェアの実行単位であり、複数のスレッドが存在する場合には各スレッドによって制御部（ＣＰＵ等）を交互に占有される。これにより、複数のスレッドに対応するソフトウェアが並行して実行される。すなわち、本明細書におけるデバイス管理スレッドは、当該デバイス管理スレッドに対応するＵＳＢデバイスから入力されるデータに対する処理のためにコンピュータ装置１２０の制御部１２４（あるいはＭＦＰ２００の制御部２０８）が占有される期間を他の処理を行うためにコンピュータ装置１２０の制御部１２４（あるいはＭＦＰ２００の制御部２０８）が占有される期間と異ならせるためのものである。
（ｈ）ＵＳＢデバイスマネージャー３０３がアプリケーションハンドル（例えば”keyHandle”）を生成する処理。
（ｉ）アプリケーション３０４がアプリケーションハンドルおよびイベント（例えば”event”）を登録する処理。なお、イベントとしては、例えば、ＵＳＢデバイスの着脱操作、ＵＳＢデバイスからのデータ入力（ＵＳＢデバイスに対するキーストローク操作等）、ユーザーからのＵＳＢデバイスに記憶されているデータの読み出し指示などが挙げられる。
（ｊ）ＵＳＢデバイスマネージャー３０３がＵＳＢデバイスを開く処理（３３０）。
（ｋ）ＵＳＢデバイスマネージャー３０３がＵＳＢデバイスドライバー３０２からデータ３４１を読み出す処理（３４０，３４１）。
（ｌ）ＵＳＢデバイスが取り外されたときに、ＵＳＢデバイスドライバー３０２がその後のＵＳＢデバイスからのデータ読み出し時にエラー信号をＵＳＢデバイスマネージャー３０３へ出力する処理（３５０）。
（ｍ）ＵＳＢデバイスマネージャー３０３がアプリケーション３０４にＵＳＢデバイスイベント（例えばＵＳＢデバイスからのデータ入力など）を通知する処理（３０５）、および当該通知に対応してアプリケーション３０４がＵＳＢデバイスマネージャー３０３にデータ読み取り指示を送り、ＵＳＢデバイスマネージャー３０３からデータを受け取る処理。
（ｎ）ＵＳＢデバイスマネージャー３０３がＵＳＢデバイスドライバー３０２から送信されたエラー信号を検出する処理。
（ｏ）ＵＳＢデバイスマネージャー３０３がＵＳＢデバイスドライバー３０２から送信されたエラー信号に基づいてＵＳＢデバイスを閉じる処理（３６０）。
（ｐ）ＵＳＢデバイスドライバー３０２がデバイス入出力ハンドル（例えば“devHandle”）を開放（削除）する処理（３７０）。
（ｑ）ＵＳＢデバイスマネージャー３０３がアプリケーション３０４にエラー信号を送る処理（３８１）。（ｒ）アプリケーション３０４がエラー信号に基づいてＵＳＢデバイスマネージャー３０３を閉じる処理（３８０）。
（ｓ）ＵＳＢデバイスマネージャー３０３を閉じることにより、メモリーを解放する処理（３８２）。
（ｔ）アプリケーション３０４がデバイス管理スレッド（例えば“keyHandle”）を削除する処理（３９０）。
【００４９】
なお、ＵＳＢデバイスドライバー３０２、ＵＳＢデバイスマネージャー３０３、およびアプリケーション３０４の各処理は、例えば、図１に示したコンピュータ装置１２０の制御部１２４、あるいは図２に示したＭＦＰ２００の制御部２０８によって行われる。ただし、これに限らず、これらの処理の一部または全部をコンピュータ装置１２０またはＭＦＰ２００の他の部材が行うようにしてもよい。
【００５０】
（１−４．キーボード装置（ＵＳＢデバイス）の構成）
本発明の典型的な実施例では、１または複数のキーボード装置（ＵＳＢデバイス）がコンピュータ装置１２０あるいはＭＦＰ２００に接続され、コンピュータ装置１２０の制御部１２４あるいは図２に示したＭＦＰ２００の制御部２０８において、接続されたキーボード装置（ＵＳＢデバイス）に応じたＵＳＢ階層構造が形成される。
【００５１】
図４（ａ）は単一のキーボード装置（第１キーボード装置）４１０が接続された場合に形成されるキーボード機能構成（ＵＳＢ階層構造）４００を示す説明図である。この図に示すように、キーボード機能構成４００には、アプリケーション層４０１、第１キーボード装置マネージャー（ＵＳＢデバイスマネージャー）４０２、システム入出力部４０３、キーボードドライバー４０４、およびＵＳＢ入出力部４０５が含まれる。
【００５２】
ＵＳＢ入出力部４０５は、デバイスインターフェース１２６あるいはインターフェース制御部２０４を制御し、キーボード装置（ＵＳＢデバイス）との間のデータの送受信を行わせる。
【００５３】
キーボードドライバー４０４は、上述した図３のＵＳＢデバイスドライバー３０２の処理を行う。
【００５４】
システム入出力部４０３は、キーボードドライバー４０４と第１キーボード装置マネージャー（ＵＳＢデバイスマネージャー）４０２との間のデータの授受を制御する。
【００５５】
第１キーボード装置マネージャー（ＵＳＢデバイスマネージャー）４０２は、上述した図３のＵＳＢデバイスマネージャー３０３の処理を行う。
【００５６】
アプリケーション層４０１は、上述した図３のアプリケーション３０４の処理を行う。
【００５７】
キーボード装置から入力されるデータ（キーストロークデータ）は、最下層のＵＳＢ入出力部４０５からキーボード機能構成４００に入力され、最終的に最上層のアプリケーション層４０１（例えばユーザーインターフェース（ＵＩ）アプリケーション）へ送られる。具体的には、キーボード装置（ＵＳＢデバイス）を介したユーザー入力は、ＵＳＢ入出力部４０５から、キーボードドライバー４０４およびシステム入出力部４０３からなるアプリケーションプログラムインターフェース（ＡＰＩ）、および第１キーボード装置マネージャー４０２（例えば“keyboard device_1 manager”）を経由して最上層のアプリケーション層４０１（例えばＵＩアプリケーション）へ送られる。
【００５８】
アプリケーション層４０１が、第１キーボード装置マネージャー４０２からＡＰＩを介して送られてくるイベント通知の登録処理を行い、アプリケーション層４０１がＡＰＩを介してキーストロークデータを取得するようにしてもよい。より詳細には、第１キーボード装置マネージャー４０２がアプリケーション層４０１の指示に応じて入出力サブシステム（ＵＳＢサブシステム。例えばＵＳＢ入出力部４０５、キーボードドライバー４０４、およびシステム入出力部４０５。）からキーストロークデータを取得する。第１キーボード装置マネージャー４０２は、入出力サブシステムにデータの読み出しを行うキーボード装置、および当該データを記憶するキーストロークバッファに対してキーボード装置名を通知する。そして、キーストロークデータを取得した後、第１キーボード装置マネージャー４０２は、登録されているアプリケーションにデータイベントを通知する。
【００５９】
デバイス管理スレッドは、自身に対応するメモリー、システムリソース、および変数を有しており、各デバイス管理スレッドは対応するデバイス管理ハンドル（当該デバイス管理ハンドルに対応するＵＳＢデバイスの管理に用いられるファイルおよび情報を識別するための情報）内にこれらの変数を記憶させる。すなわち、各デバイス管理スレッドに対応する新たなデバイス管理ハンドルがデバイス管理スレッド毎に生成され、生成されたデバイス管理ハンドルはアプリケーションが特定のキーボード装置（ＵＳＢデバイス）にアクセスするため（例えば特定のキーボード装置（ＵＳＢデバイス）から入力されるデータを処理あるいは管理するため）に用いられる。
【００６０】
（１−５．キーボードマネージャー）
キーボードマネージャー（ＵＳＢデバイスマネージャー）の仕事は、ＵＳＢサブシステムからデータを取得し、取得したデータを上層のアプリケーション層に渡すことである。複数のキーボード装置をサポートするために、各キーボード装置について専用のデバイス管理スレッドが生成される。すなわち、各デバイス管理スレッドは接続された特定のキーボード装置（ＵＳＢデバイス）を管理するために用いられる。各デバイス管理スレッドは、キーボード装置が装着されたときに動的に生成されてもよい。また、各デバイス管理スレッドは、キーボード装置が取り外されたときに削除されてもよい。各デバイス管理スレッドは、管理対象のキーボード装置（ＵＳＢデバイス）を個別に識別し、当該キーボード装置からのキーストローク（入力データ）を、当該キーストロークを処理するアプリケーションに提供する。
【００６１】
図４（ｂ）は、複数のキーボード装置（ＵＳＢデバイス）が接続された場合のキーボード機能構成（デュアルキーボード構成）４２０を示す説明図である。例えば、第１アプリケーション４２１（Application_A）はＵＳＢ入出力部４２７を介して第１キーボード装置４３１（device_A）から入力されるキーストロークを受け取り、第２アプリケーション４２２（Application_B）はＵＳＢ入出力部４２７を介して第２キーボード装置４３２（device_B）から入力されるキーストロークを受け取る。第１アプリケーション４２１は第１キーボード装置マネージャー４２３を介してアプリケーションプログラムインターフェース（ＡＰＩ）に接続され、第２アプリケーション４２２は第２キーボード装置マネージャー４２４を介してアプリケーションプログラムインターフェース（ＡＰＩ）に接続されている。
【００６２】
（１−６．キーボードのタイプ）
キーボードのタイプは、マルチキーボード（複数のキーボード）をサポート可能にするための要素である。タイプ“KEYBOARD”はキーボードを識別するために定義され、タイプ“READER”はリーダー（読取装置）を識別するために定義されている。各デバイス管理スレッドは、管理するＵＳＢデバイスのタイプを識別し、識別したタイプを示す情報（例えばデバイス入出力ハンドル）をアプリケーションに提供する（例えばデバイス管理ハンドルを介して提供する）。キーボードドライバー（ＵＳＢデバイスドライバー）４２６はシステム入出力部４２５にキーボード装置（ＵＳＢデバイス）が接続されたときにそのキーボード装置のタイプを識別する。また、キーボードドライバー４２６は、上記識別結果を示す識別情報をデバイス装着通知工程においてキーボード装置マネージャーに提供する。
【００６３】
（１−７．ＵＳＢデバイスの照合）
図５は、コンピュータ装置１２０（あるいはＭＦＰ２００）によって監視されるキーボード装置（ＵＳＢデバイス）を識別するためのデバイス照合データベースを用いた照合処理の流れを示す説明図である。
【００６４】
ＵＳＢサブシステムは、複数のＵＳＢデバイスを検出した場合、ＵＳＢデバイス（例えばキーボード装置）の設定情報５１０と、デバイス照合データベース５２０の照合基準情報とを比較し、一致するか否か、すなわち検出したＵＳＢデバイスがデバイス照合データベース５２０に登録されているか否かを判断する。デバイス照合データベース５２０に一致するＵＳＢデバイスが登録されていた場合、当該ＵＳＢデバイスは内部の一致リスト５４０に加えられるとともに、当該ＵＳＢデバイスのためのデバイス管理スレッド５５０が生成される。デバイス照合データベース５２０は例えばＸＭＬファイル形式であってもよい。また、上記ＸＭＬファイルを修正することによって登録情報を追加できるようにしてもよく、システム管理機能によって登録情報を動的に付加できるようにしてもよい。コンピュータ装置１２０（あるいはＭＦＰ２００）が、新規に装着されたキーボード装置（ＵＳＢデバイス）を検知した場合、ＵＳＢサブシステムによって検知された当該キーボード装置の情報は当該キーボード装置の管理ページに提示される。コンピュータ装置１２０（あるいはＭＦＰ２００）が当該キーボード装置を上記デバイス照合データベースに自動的に加えるようにしてもよい。これにより、コンピュータ装置１２０（あるいはＭＦＰ２００）は、互いに識別可能な複数のキーボード装置から入力されるキーストロークデータを当該キーボード装置に応じた適切なアプリケーションに送ることができる。
【００６５】
（１−８．デバイス管理ハンドル）
図６は、デバイス管理スレッドに固有のデバイス管理ハンドルを用いたキーボード管理インターフェースの概略構成を示す説明図である。ユーザーインターフェースのアプリケーション６１０は、キーボードマネージャー（ＵＳＢデバイスマネージャー）６２０からＡＰＩを介して取得したイベント通知６２３の登録処理を行い、キーストロークデータ６２１を取得する。なお、上記イベントとしては、例えば、ＵＳＢデバイスの着脱操作、ＵＳＢデバイスからのデータ入力（ＵＳＢデバイスに対するキーストローク操作等）、ユーザーからのＵＳＢデバイスに記憶されているデータの読み出し指示などが挙げられる。
【００６６】
アプリケーション６１０は、キーボードマネージャー６２０に、データおよびイベントを取得するキーボード装置（ＵＳＢデバイス）に関連付けたキーボードハンドル（デバイス管理ハンドル）６４０を提供する（６１１）。なお、デバイス管理ハンドルとは、当該ＵＳＢデバイスとの間のデータの入出力処理において使用するファイルおよび情報を識別するための情報である。また、キーボードハンドルとはキーボードを識別するための値（情報）であり、デバイスハンドルとはＵＳＢデバイスを識別するための値（情報）である。
【００６７】
キーボードマネージャー６２０は、入出力サブシステム６３０からキーストロークデータ６３１を取得する（６２２）。キーボードマネージャー６２０は、入出力サブシステム６３０およびキーストロークバッファに、データの読み出しを行うＵＳＢデバイスのデバイスハンドル（デバイス管理ハンドル）を通知する。キーストロークデータを取得した後、キーボードマネージャー６２０は当該データを処理し、アプリケーション６１０にデータイベント６２３を通知する。
【００６８】
デバイス管理スレッドは、当該デバイス管理スレッド毎に割り当てられたメモリー、システムリソース、および変数を利用する。これらの変数はデバイス管理ハンドル内に記憶される。新たなデバイス管理ハンドル６４０は各デバイス管理スレッドについてそれぞれ生成される。このデバイス管理ハンドル６４０は、アプリケーション６１０によって特定のキーボード装置（ＵＳＢデバイス）にアクセスするために用いられる。デバイス管理ハンドル６４０により、複数のデバイス管理スレッドの適用が可能になる。デバイス管理ハンドル６４０は、ＵＳＢサブシステムが当該デバイス管理ハンドルに対応するキーボード装置（ＵＳＢデバイス）を検出したときに生成あるいは発生させられる。また、デバイス管理ハンドル６４０は、アプリケーションが当該デバイス管理ハンドル６４０に対応するデバイス管理スレッドからのサービスを必要としなくなったときに削除される。デバイス管理ハンドル６４０は、デバイス管理スレッドを生成する前に動的に割り付けられてもよい。デバイス管理ハンドル６４０のメモリーは、デバイス管理スレッドに固有の情報およびデバイス名を含めるために初期化されてもよい。デバイス管理ハンドル６４０は、その後、タスクエントリーでキーボードマネージャー６２０に渡されてもよく、キーストロークデータの登録処理を行うアプリケーション６１０によって利用可能にされてもよい。デバイス管理ハンドル６４０内の情報には、（ａ）デバイス名、（ｂ）デバイスＩＤ、（ｃ）デバイスタイプ、（ｄ）キーバッファー、および（ｅ）システムリソースが含まれていてもよい。キーボードマネージャー６２０は、デバイス管理ハンドル６４０内に含められたシステムリソースを初期化する。上記初期化には、典型的には、メモリーバッファーを割り当てる処理、および装着されたデバイスを特定するための信号を生成する処理が含まれる。
【００６９】
（１−９．ＵＳＢデバイスドライバー）
キーボードマネージャー（ＵＳＢデバイスマネージャー）は、キーボードドライバー（ＵＳＢデバイスドライバー）を介してキーボード装置（ＵＳＢデバイス）からデータを受け取る。ＵＳＢデバイスドライバーの入出力機能は、システム入出力機能（読み出し、書き込み、開く、閉じる、および入出力制御（“ioctl”））を内部的にマッピングしたものである。
【００７０】
システム（コンピュータ装置１２０あるいはＭＦＰ２００）にＵＳＢデバイスが装着された場合、ＵＳＢデバイスドライバーは、装着されたＵＳＢデバイスに対応する新たなデバイス入出力ハンドル（デバイス管理ハンドル）、および当該デバイス入出力ハンドルに対応付けられたＵＳＢデバイス名（例えば“/usbKb/0”）を生成する。
【００７１】
上記ＵＳＢデバイス（例えばキーボード装置など）は、その後、上記ＵＳＢデバイスドライバーによって管理される内部デバイスリストに追加される。
【００７２】
ＵＳＢデバイスドライバーは、上記デバイス入出力ハンドル（内部キーボード入出力デバイスハンドル）の管理に加えて、装着されたＵＳＢデバイスに関連付けたデバイスマネージャーハンドル（デバイス管理ハンドル）を生成し、当該デバイスマネージャーハンドルに上記デバイス入出力ハンドルの参照情報を記憶する。上記各ハンドルの生成に加えて、当該各ハンドルを初期化し、上記ＵＳＢデバイスを管理するためのデバイス管理スレッドを生成してもよい。ＵＳＢデバイスが取り外された場合、ＵＳＢデバイスドライバーがメモリーを解放し、当該ＵＳＢドライバーが管理する内部デバイスリストから当該ＵＳＢデバイスを削除するようにしてもよい。
【００７３】
（１−１０．アプリケーションインターフェース）
アプリケーションは、ＵＳＢデバイスマネージャーで登録されたキーストロークを受け取る。これを行うために、アプリケーションは、アプリケーションの提供するサービスのイベントのリストを生成するためにＵＳＢデバイスマネージャーによって提供される一般的なＡＰＩを活用する。適切なデバイス管理スレッドのデバイス管理ハンドルに基づいてデバイス管理スレッドの識別が行われる。イベントの登録をするために、アプリケーションが、登録するべきデバイス管理スレッドを識別するためのイベントのリストを提供するようにしてもよい。アプリケーションがデバイス管理ハンドルを取得する処理は典型的にはタスクエントリーの段階で行われる。例えば、デバイス管理スレッド自身を用いてアプリケーションスレッドを生成し、アプリケーションタスクエントリーでそのデバイス管理ハンドルを生成するようにしてもよい。あるいは、アプリケーションがデバイス管理ハンドルを取得する処理は、ＵＳＢデバイスマネージャーが動作中の全デバイス管理スレッドのリストを維持し、一般的なＡＰＩを介してこのリストを提供することによって行われてもよい。
【００７４】
以上のように、本実施形態にかかるコンピュータ装置１２０（あるいはＭＦＰ２００）は、複数のＵＳＢポートを有しており、各ＵＳＢポートに接続された各ＵＳＢデバイスのデバイスＩＤを取得し、取得したデバイスＩＤがキーボード装置と同じ出力信号形式でデータ出力を行うＵＳＢデバイスのデバイスＩＤが登録されたデバイス照合データベースに含まれているデバイスＩＤの中に存在するか否かを照合し、デバイス照合データベースに一致するデバイスＩＤが登録されている場合に、当該デバイスＩＤに対応するＵＳＢデバイスから入力されるデータに対する処理のために制御部１２４（あるいは制御部２０８）が占有される期間を、他の処理を行うために制御部１２４（あるいは制御部２０８）が占有される期間と異ならせるためのデバイス管理スレッドを生成する。
【００７５】
これにより、キーボード装置と上記キーボード装置と同じ出力信号形式でデータを出力する他のＵＳＢデバイスとが接続された場合であっても、これら各ＵＳＢデバイス装置（キーボード装置および他のＵＳＢデバイス）からの入力データが混ざり合ってしまうことを防止し、各ＵＳＢデバイスから入力されるデータをＵＳＢデバイス毎に適切に処理することができる。
【００７６】
なお、本実施形態において、コンピュータ装置１２０の制御部１２４（あるいはＭＦＰ２００の制御部２０８）を、ＣＰＵ等のプロセッサーを用いてソフトウェアによって実現してもよい。この場合、コンピュータ装置１２０の制御部１２４（あるいはＭＦＰ２００の制御部２０８）は、各機能を実現する制御プログラムの命令を実行するＣＰＵ（central processing unit）、上記プログラムを格納したＲＯＭ（read only memory）、上記プログラムを展開するＲＡＭ（random access memory）、上記プログラムおよび各種データを格納するメモリー等の記憶装置（記録媒体）などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアであるコンピュータ装置１２０（あるいはＭＦＰ２００）の制御プログラムのプログラムコード（実行形式プログラム、中間コードプログラム、ソースプログラム）をコンピュータで読み取り可能に記録した記録媒体を、コンピュータ装置１２０（あるいはＭＦＰ２００）に供給し、そのコンピュータ（またはＣＰＵやＭＰＵ）が記録媒体に記録されているプログラムコードを読み出し実行することによって達成される。
【００７７】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー（登録商標）ディスク／ハードディスク等の磁気ディスクやＣＤ−ＲＯＭ／ＭＯ／ＭＤ／ＤＶＤ／ＣＤ−Ｒ等の光ディスクを含むディスク系、ＩＣカード（メモリカードを含む）／光カード等のカード系、あるいはマスクＲＯＭ／ＥＰＲＯＭ／ＥＥＰＲＯＭ／フラッシュＲＯＭ等の半導体メモリー系などを用いることができる。
【００７８】
また、コンピュータ装置１２０（あるいはＭＦＰ２００）を通信ネットワークと接続可能に構成し、通信ネットワークを介して上記プログラムコードを供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、ＬＡＮ、ＩＳＤＮ、ＶＡＮ、ＣＡＴＶ通信網、仮想専用網（virtual private network）、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、ＩＥＥＥ１３９４、ＵＳＢ、電力線搬送、ケーブルＴＶ回線、電話線、ＡＤＳＬ回線等の有線でも、ＩｒＤＡやリモコンのような赤外線、Ｂｌｕｅｔｏｏｔｈ（登録商標）、８０２．１１無線、ＨＤＲ、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【００７９】
また、コンピュータ装置１２０の制御部１２４（あるいはＭＦＰ２００の制御部２０８）は、ソフトウェアを用いて実現されるものに限らず、ハードウェアロジックによって構成されるものであってもよく、処理の一部を行うハードウェアと当該ハードウェアの制御や残余の処理を行うソフトウェアを実行する演算手段とを組み合わせたものであってもよい。
【００８０】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【００８１】
１２０  コンピュータ装置（データ処理装置）
１２４  制御部（データ処理部、デバイスＩＤ取得部、デバイス照合部、スレッド生成部、ハンドル生成部）
１２６  デバイスインターフェース（ＵＳＢポート）
１２７  メモリー（データベース記憶手段）
１２８  ユーザーインターフェース
２００  ＭＦＰ（多機能周辺装置、データ処理装置）
２０２  インターフェースポート（ＵＳＢポート）
２０４  インターフェース制御部
２０８  制御部（データ処理部、デバイスＩＤ取得部、デバイス照合部、スレッド生成部、ハンドル生成部）
２１０  ＲＯＭ
２１２  ＲＡＭ（データベース記憶手段）
２１４  大容量記憶部（データベース記憶手段）
３０１  ＵＳＢサブシステム
３０２  ＵＳＢデバイスドライバー
３０３  ＵＳＢデバイスマネージャー
３０４  アプリケーション
４１０  第１キーボード装置（キーボード装置、ＵＳＢデバイス）
４３１  第１キーボード装置（キーボード装置、ＵＳＢデバイス）
４３２  第２キーボード装置（キーボード装置、ＵＳＢデバイス）
【図１】
2011210231.tif 000003
【図２】
2011210231.tif 000004
【図３】
2011210231.tif 000005
【図４】
2011210231.tif 000006
【図５】
2011210231.tif 000007
【図６】
2011210231.tif 000008