説明

データ処理装置、多機能周辺装置、データ管理方法、プログラムおよびその記録媒体

【課題】キーボード装置とおよび当該キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスとがUSB接続された場合であっても、それら各装置から入力されるデータを適切に処理する。
【解決手段】第1キーボード装置431および第2キーボード装置432が接続された場合に、これら各キーボード装置のデバイスIDを取得し、取得したデバイスIDがキーボード装置および当該キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスのデバイスIDが登録されたデバイス照合データベースに含まれているデバイスIDの中に存在するか否かを照合し、一致するデバイスIDが存在する場合に、当該デバイスIDに対応するUSBデバイスから入力されるデータに対する処理のために上記データ処理部が占有される期間を、他の処理を行うために上記データ処理部が占有される期間と異ならせるためのデバイス管理スレッドを生成する。

【発明の詳細な説明】
【技術分野】
【0001】
本発明は、USB接続された複数の同種のUSBデバイスからの入力データを処理するデータ処理装置、多機能周辺装置、およびデータ管理方法に関するものである。より具体的には、複数のUSBデバイスからの入力データを、それら各入力データに対する処理を個別に行う複数のアプリケーションにそれぞれ入力するためのデータ処理装置、多機能周辺装置、およびデータ管理方法に関するものである。
【背景技術】
【0002】
一般に、コンピュータ装置はキーボード装置に対応している。キーボード装置は、ユーザーがコンピュータ装置あるいはそのコンピュータ装置内で起動するアプリケーションプログラムと対話するのになくてはならないメカニズムである。コンピュータ装置のキーボード装置は一般にユーザーインターフェースと密接に関連している。例えば、ユーザーインターフェースを制御するアプリケーションプログラムは、キーボード装置に打ち込まれた全てのキーストロークデータを取得して記録する。つまり、ユーザーが、キーボードに対する打ち込み(つまり、キーを押すまたは指定するキーストローク)を行うと、そのキーストロークが解釈されてユーザインターフェースディスプレイに表示される。典型的には、USB(Universal Serial Bus)ヒューマンインターフェースデバイス(HID)がコンピュータに最初に接続されると、コンピュータ上のUSBドライバーがそのデバイスを検出し、製造者ID、製品ID、および1または複数のデバイス記述子などの情報を抽出する。これらの処理はUSB仕様書に定義されている。一般に、USBインターフェースは、PC(パーソナルコンピュータ)と周辺機器間の標準インターフェースであり、キーボード装置用に最も一般的に普及しているインターフェースでもある。例えば、MFP(multifunction peripheral、多機能周辺装置)などのコンピュータ装置のUSBインターフェースでは、USBポートにUSBキーボード装置を直接接続して使用するようになっているものもある。
【0003】
ところで、ヒューマンインターフェースデバイス(HID)型の装置における同時アクセスをサポートするためのいくつかの提案がされている。例えば、Apple HID Manager(登録商標)は、Mac OS X(登録商標)における標準USB ヒューマンインターフェース(HID) アプリケーションプログラムインターフェース(API)である。 PowerBook(登録商標)キーボードやトラックパッドのようなApple Desktop Bus (ADB) devices(登録商標)も含む。「input.h,」に代表される、Linux(登録商標) Input Subsystemは、数多くのAPI(USB HID、PS/2、Wacom、シリアル・マウス、ADB、その他)を統一する大変クリーンでシンプルなAPIであり、大多数の流通しているGNU/Linuxにおいて入力デバイスを扱うための標準方法となっている。Microsoft(登録商標) Windows(登録商標) Driver Development Kit(DDK) HID APIは、USB HIDに続く低階層APIであるという点でApple HID Manager(登録商標)に似ている。
【0004】
また、特許文献1には、汎用デバイスドライバーを、プラグインされた装置毎、または装置によってサポートされている機能毎にロードすることにより、複数の装置を同じコンピュータ装置に接続することを可能にする技術が開示されている。
【先行技術文献】
【特許文献】
【0005】
【特許文献1】特開2005−317019号公報(平成17年11月10日公開)
【発明の概要】
【発明が解決しようとする課題】
【0006】
しかしながら、上記の従来技術では、同じ出力信号形式でデータを出力する複数のUSBデバイスが同じコンピュータ装置に接続された場合に、そのコンピュータ装置において、入力されたデータがいずれのUSBデバイスから入力されたデータであるのかを認識できないという問題がある。
【0007】
例えば、1つのコンピュータ装置にキーボード装置Aとキーボード装置Bとが接続されており、ユーザーがこれら両キーボード装置に対する打ち込みを同時に行った場合、これら両キーボード装置からの入力は同じアプリケーション(キーボードデータを記録しているアプリケーション)に入力される。このため、これら両キーボード装置に対するキーストロークに応じたキーボードデータは、ユーザーインターフェース上で混ざり合ってしまう。
【0008】
また、USBデバイスの中には、キーボード装置と同じ出力信号形式でデータの出力を行うUSBデバイス(USBキーボードエミュレート装置)がある。そのようなUSBデバイスの典型的な例としては、USBカードリーダー(カード記録媒体に記録されているデータを読み出してコンピュータ装置に伝達する装置。USBスマートカードリーダー等。)などが挙げられる。この種のUSBデバイスとキーボード装置とが同時にUSBポートに接続されている場合にも、これら各装置(キーボード装置および他のUSBデバイス)からの入力がコンピュータ装置において混ざり合ってしまう。
【0009】
本発明は、上記の問題点に鑑みてなされたものであり、その目的は、キーボード装置と、上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスとがUSB接続された場合であっても、それら各USBデバイス(キーボード装置および他のUSB装置)から入力されるデータをUSBデバイス毎に適切に処理することのできるデータ処理装置、多機能周辺装置、およびデータ管理方法を提供することにある。
【課題を解決するための手段】
【0010】
本発明のデータ処理装置は、上記の課題を解決するために、複数のUSBポートと、当該各USBポートに接続されるUSBデバイスから入力されるデータを処理するデータ処理部とを有するデータ処理装置であって、上記USBデバイスとして上記USBポートに接続されるキーボード装置、および上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスのデバイスIDが登録されたデバイス照合データベースを記憶するデータベース記憶手段と、上記USBポートに接続された各USBデバイスのデバイスIDを取得するデバイスID取得部と、上記デバイスID取得部が取得したデバイスIDと一致するデバイスIDが上記デバイス照合データベースに含まれるデバイスIDの中に存在するか否かを照合するデバイス照合部とを備え、上記データ処理部は、上記デバイス照合部による照合結果に応じて、上記キーボード装置から入力されるデータと、上記他のUSBデバイスから入力されるデータとを区別して処理することを特徴としている。
【0011】
上記の構成によれば、デバイス照合部が、デバイスID取得部の取得した各USBデバイスのデバイスIDが、データベース記憶手段に記憶されているデバイス照合データベースに含まれるデバイスIDの中に存在するか否かを照合し、データ処理部が、上記デバイス照合部による照合結果に応じて、上記キーボード装置から入力されるデータと、上記他のUSBデバイスから入力されるデータとを区別して処理する。これにより、キーボード装置と上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスとが接続された場合であっても、キーボード装置から入力されるデータと、他のUSBデバイスから入力されるデータとを区別して処理することができる。
これら各USBデバイス装置(キーボード装置および他のUSBデバイス)からの入力データが混ざり合ってしまうことを防止し、各USBデバイスから入力されるデータをUSBデバイス毎に適切に処理することができる。
【0012】
また、上記デバイス照合部によって一致するデバイスIDが存在すると判断された場合に、当該デバイスIDに対応するUSBデバイスから入力されるデータに対する処理のために上記データ処理部が占有される期間を、他の処理を行うために上記データ処理部が占有される期間と異ならせるためのデバイス管理スレッドを生成するスレッド生成部を備えている構成としてもよい。
【0013】
上記の構成によれば、各USBデバイスから入力されるデータを処理するためにデータ処理部が占有される期間を、USBデバイス毎に異ならせることができる。したがって、キーボード装置から入力されるデータと、他のUSBデバイスから入力されるデータとを確実に区別して処理することができる。
【0014】
また、上記デバイス照合部によって一致するデバイスIDが存在すると判断された場合に、当該デバイスIDに対応するUSBデバイスから入力されるデータに対する処理において使用するファイルおよび情報を識別するためのデバイス管理ハンドルを生成するハンドル生成部を備えている構成であってもよい。
【0015】
上記の構成によれば、USBデバイス毎に固有のデバイス管理ハンドルを生成してメモリー上のファイルや情報に対するアクセスをUSBデバイス毎に管理することができる。
【0016】
また、上記ハンドル生成部は、上記デバイス管理スレッドと上記デバイス管理ハンドルとを対応付ける構成であってもよい。
【0017】
上記の構成によれば、各USBデバイスに対応するデバイス管理スレッドを当該USBデバイスに固有のデバイス管理ハンドルに対応付けて管理することができる。
【0018】
また、上記データ処理部は、上記デバイス管理ハンドルに基づいて上記USBデバイスからデータを読み出す構成であってもよい。
【0019】
上記の構成によれば、各USBデバイスからのデータの読み出しをUSBデバイス毎に適切に管理することができる。
【0020】
本発明の多機能周辺装置は、コピー機能、スキャナー機能、ファクシミリ機能、およびプリンター機能のうちの2つ以上の機能を有する多機能周辺装置であって、上記したいずれかのデータ処理装置を備えていることを特徴としている。
【0021】
上記の構成によれば、出力信号形式が同一である複数のUSBデバイスが上記多機能周辺装置に接続された場合であっても、当該各USBデバイスに対応するスレッドを生成してUSBデバイス毎に分離して処理することができる。したがって、各USBデバイスからの入力データが混ざり合ってしまうことを防止し、各USBデバイスから入力されるデータをUSBデバイス毎に適切に処理することができる。
【0022】
また、上記データ処理部は、上記複数のUSBポートに接続された2以上のキーボード装置からの入力を受け付けて当該キーボード装置毎に処理する構成であってもよい。
【0023】
上記の構成によれば、多機能周辺装置に出力信号形式が同一である複数のキーボード装置が接続された場合であっても、それら各キーボード装置に対応するスレッドを生成してキーボード装置毎に分離して処理することができる。したがって、各キーボード装置からの入力データが混ざり合ってしまうことを防止し、各キーボード装置から入力されるデータをキーボード装置毎に適切に処理することができる。
【0024】
本発明のデータ管理方法は、複数のUSBポートと、当該各USBポートに接続されるUSBデバイスから入力されるデータを処理するデータ処理部とを有するデータ処理装置におけるデータ管理方法であって、上記各USBポートに接続された各USBデバイスのデバイスIDを取得するデバイスID取得工程と、上記デバイスID取得工程で取得したデバイスIDが、上記USBデバイスの1つであるキーボード装置および上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスのデバイスIDが登録されたデバイス照合データベースに含まれているデバイスIDの中に存在するか否かを照合するデバイス照合工程とを含み、上記デバイス照合工程の照合結果に応じて、上記データ処理部に、上記キーボード装置から入力されるデータと、上記他のUSBデバイスから入力されるデータとを区別して処理させることを特徴としている。
【0025】
上記の方法によれば、キーボード装置と上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスとが接続された場合であっても、キーボード装置から入力されるデータと、他のUSBデバイスから入力されるデータとを区別して処理することができる。
【0026】
なお、上記画データ処理装置は、コンピュータによって実現してもよく、この場合には、コンピュータを上記各部として動作させることにより、上記データ処理装置をコンピュータにて実現させるプログラム、およびそれを記録したコンピュータ読み取り可能な記録媒体も、本発明の範疇に含まれる。
【発明の効果】
【0027】
以上のように、本発明のデータ処理装置は、上記USBデバイスとして上記USBポートに接続されるキーボード装置、および上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスのデバイスIDが登録されたデバイス照合データベースを記憶するデータベース記憶手段と、上記USBポートに接続された各USBデバイスのデバイスIDを取得するデバイスID取得部と、上記デバイスID取得部が取得したデバイスIDと一致するデバイスIDが上記デバイス照合データベースに含まれるデバイスIDの中に存在するか否かを照合するデバイス照合部とを備え、上記データ処理部は、上記デバイス照合部による照合結果に応じて、上記キーボード装置から入力されるデータと、上記他のUSBデバイスから入力されるデータとを区別して処理する。
【0028】
また、本発明のデータ管理方法は、上記各USBポートに接続された各USBデバイスのデバイスIDを取得するデバイスID取得工程と、上記デバイスID取得工程で取得したデバイスIDが、上記USBデバイスの1つであるキーボード装置および上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスのデバイスIDが登録されたデバイス照合データベースに含まれているデバイスIDの中に存在するか否かを照合するデバイス照合工程とを含み、上記デバイス照合工程の照合結果に応じて、上記データ処理部に、上記キーボード装置から入力されるデータと、上記他のUSBデバイスから入力されるデータとを区別して処理させる。
【0029】
それゆえ、キーボード装置と上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスとが接続された場合であっても、キーボード装置から入力されるデータと、他のUSBデバイスから入力されるデータとを区別して処理することができる。
【図面の簡単な説明】
【0030】
【図1】本発明の一実施形態にかかるコンピュータ装置の概略構成を示すブロック図である。
【図2】本発明の一実施形態にかかるMFPの概略構成を示すブロック図である。
【図3】本発明における複数のキーボード装置を管理する処理の処理手順を示す説明図である。
【図4】(a)および(b)は本発明におけるコンピュータ装置に接続されたUSBキーボード装置に対応するキーボード機能構成を示す説明図であり、(a)は接続されたUSBキーボード装置が1つである場合、(b)は接続されたUSBキーボード装置が2つである場合を示している。
【図5】本発明におけるUSBキーボード装置の照合処理の流れを示す説明図である。
【図6】本発明におけるキーボード管理インターフェースの概略構成を示す説明図である。
【発明を実施するための形態】
【0031】
(1−1.コンピュータ装置の構成例)
図1は、本実施形態にかかるコンピュータ装置120の概略構成を示すブロック図である。この図に示すように、コンピュータ装置120は、制御部124、メモリー(アドレッサブルメモリー)127、デバイスインターフェース126、およびユーザーインターフェース128を備えており、これら各部はデータバス130を介して互いに通信可能に接続されている。
【0032】
制御部124はCPU(central processing unit、中央演算装置)等からなり、アプリケーション(アプリケーションプログラム)123やウェブブラウザーなどを実行するオペレーションシステム(オペレーションプログラム)125を用いて各種の処理を行う。例えば、キーボード照合データベースを生成する処理、デバイス管理スレッドを生成する処理、およびデバイス管理ハンドルを生成する処理などを行う。これら各処理の詳細については後述する。
【0033】
デバイスインターフェース126は、USB(universal serial bus)ポートおよびその処理部、イーサネット(登録商標)ポートおよびその処理部などからなる。なお、デバイスインターフェース126は、複数のUSBポートを有しており、これら複数のUSBポートに対して同時に複数のUSBデバイスを接続可能になっている。
【0034】
ユーザーインターフェース128は、状態を示すランプ、トグルスイッチ、表示装置、キーボード、マウス等のポインティングデバイス、タッチスクリーン、およびこれらの組み合わせなどからなる。
【0035】
(1−2.MFPの構成例)
図2は、本発明をMFP(multifunction peripheral device、多機能周辺装置)200に適用する場合の構成例を示す説明図である。この図に示すように、MFP200は、インターフェースポート202、インターフェース制御部204、データバス206、制御部(処理モジュール)208、ROM(read-only memory)210、RAM(random access memory)212、大容量記憶部214、画像ログ記憶部216、ユーザーインターフェース218、スキャン制御部220、FAX(facsimile)制御部222、コピー制御部224、プリント制御部226、スキャナー230、プリンター240、および出力方向センサー242を備えている。また、このMFP200は、複数のUSBデバイス(USBタイプの装置)を当該MFP200に同時にUSB接続できるようになっている。
【0036】
インターフェースポート202には、プリンターケーブル、USBデバイス、ネットワークリンク、あるいは外部無線モジュールなどが接続される。
【0037】
インターフェース制御部204は、インターフェースポート202とデータバス206との間に設けられており、データバス206を介して接続されているMFP200の1または複数の装置(制御部208、スキャン制御部220、FAX制御部222、コピー制御部224、プリント制御部226など)とインターフェースポート202との間を直接通信可能にしたり、これら各装置の状態を示す信号の送受信を制御したりする。
【0038】
制御部208は、命令を実行するプロセッサーおよび/または演算回路からなり、ROM210からのデータの取り出し、RAM212とのデータ交換、RAM212の記憶容量を超えるデータの大容量記憶部214への保存などを行う。なお、インターフェース制御部204、スキャン制御部220、FAX制御部222、コピー制御部224、およびプリント制御部226のうちの一部または全部の機能を制御部208が行う構成としてもよい。
【0039】
ユーザーインターフェース218は、ユーザーからの指示を受け付ける指示入力部、およびユーザーに各種情報を提示するための表示部を備えている(いずれも図示せず)。なお、上記指示入力部は、ユーザーからの指示入力に応じた出力データをUSBキーボード形式で制御部208に出力するキーボード、タッチパネル、あるいはキー操作部等であってもよい。
【0040】
画像ログ記憶部216は、MFP200において取り扱った画像のログ情報を記憶する。画像ログ記憶部216は、個別の記憶部であってもよく、分散して備えられる構成、例えば、制御部208が、パラメータ、ファイル、索引、あるいはこれらの組み合わせなどをROM210、RAM212、大容量記憶部214、あるいはこれらの組み合わせに分散して記憶させる構成であってもよい。
【0041】
スキャン制御部220、FAX制御部222、コピー制御部224は、スキャナー230との直接通信、および/または、例えばデータバス206を介したスキャナー230と1または複数の装置との間の信号の送受信を制御する。これら各制御部は、それぞれ個別に設けられていてもよく、一体的に設けられていてもよい。
【0042】
FAX制御部222、コピー制御部224、およびプリント制御部226は、プリンター240との直接通信、および/または、例えばデータバス206を介したプリンター240と1または複数の装置との間の信号の送受信を制御する。これら各制御部は、それぞれ個別に設けられていてもよく、一体的に設けられていてもよい。
【0043】
また、MFP200は、ROM210、RAM212、大容量記憶部214、あるいはこれらの組み合わせに、キャリブレーションテーブルを記憶している。制御部208、あるいは制御部208に接続される外部装置(例えばUSBポートを介して接続される1または複数のキーボード装置)は、プリント制御部226および/またはインターフェースポート202を介してこのキャリブレーションテーブルにアクセスすることができる。
【0044】
なお、MFP200が、ユーザーインターフェース218に対するユーザーからの指示入力や、プリンター240の出力方向センサー242の検出結果などを通知する通知手段を備えていてもよく、インターフェースポート202を介してMFP200に接続される外部装置に送信する送信手段を備えていてもよい。
【0045】
また、図1のコンピュータ装置120および/または図2のMFP200は、例えばvxWorks(登録商標) あるいはLinux(登録商標)などのオペレーションシステムを備えていてもよい。また、MFP200は、装置を適切に機能させるためのファームウェアに加えて、当該MFP200に対するUSB接続をサポートするためのUSBスタック(アプリケーション)を有している。MFP200における1つのUSBポートには1つのUSBキーボードが接続されており、当該MFP200における他のUSBポートにはUSBキーボードに類似するUSBキーボードエミュレートリーダー(USBキーボードエミュレート装置)が接続されている。MFP200に接続されているこれら各装置は、MFP200のオペレーションシステムにより、USBキーボード型のデバイスに分類される。すなわち、USBキーボード、およびUSBキーボードエミュレートリーダーは、いずれもUSBキーボード形式の出力データをMFP200に出力するようになっている。USBキーボードから入力される当該USBキーボードに対するキー操作内容(キーストローク)に応じた情報はユーザーインターフェース218として備えられる操作パネルに表示され、USBキーボードエミュレートリーダーからの情報(キーストローク)はログイン管理部(図示せず)に送られる。
【0046】
なお、MFP200がコンピュータ装置120を備えている構成であってもよい。
【0047】
(1−3.マルチキーボードの概要およびシーケンス)
図3は、マルチキーボード装置構成における処理シーケンスを示す説明図である。すなわち、図3は、USBサブシステム301、キーボードドライバー(デバイスドライバー)302、キーボードマネージャー(デバイスマネージャー)303、およびキーボード装置から受信したキーボードイベントデータ(キーボード操作情報)に応じた処理を行うアプリケーション304を有する典型的なシステムの例を示している。なお、各デバイス管理スレッドの特性に応じて図3の処理シーケンスを適宜変更してもよい。
【0048】
図3に示した、複数のUSBキーボード装置(複数のUSBデバイス)が接続されたシステム(コンピュータ装置120またはMFP200)では、以下に示す各工程(a)〜(t)のうちの一部または全部が実行される。
(a)USBサブシステム301(例えばデバイスインターフェース126またはインターフェース制御部204)が装着されたUSBデバイス(キーボード装置)を検出する処理(311)。
(b)USBサブシステム301がUSBデバイスドライバー(キーボードドライバー)302に検出したUSBデバイスを通知する処理(312)。
(c)USBサブシステム301が装着されたUSBデバイスの装置特性(例えば、デバイス名、デバイスID、デバイスタイプ、キーバッファー、製造者ID、製品ID、デバイス記述子など)をUSBデバイスドライバー302に提供する処理。
(d)USBデバイスドライバー302がデバイス入出力ハンドル(例えば“devHandle”)、すなわち当該USBデバイスとの間のデータの入出力処理において使用するファイルおよび情報を識別するためのハンドル(デバイス管理ハンドル)を生成する処理(313)。なお、ハンドルとは、ある処理を行うために用いられるオブジェクト(メモリ上に実体を有するファイル、スレッド、各種情報等)を識別するための値である。すなわち、本明細書におけるデバイス入出力ハンドルは、当該デバイス入出力ハンドルに対応するUSBデバイスに対するデータの入出力処理を行うために用いられるファイルおよび情報を識別するためのものである。
(e)USBデバイスドライバー302が装着されたUSBデバイスを照合データベースと比較・照合する処理、すなわち、装着されたUSBデバイスのデバイスIDとデバイス照合データベースに登録されているデバイスIDとを照合する処理(314)。
(f)装着されたUSBデバイスがデバイス照合データベースに登録されているデバイスと一致する場合に、USBデバイスドライバー302が当該USBデバイスに対応付けられたデバイスマネージャーハンドル(例えば“keyHandle”)、すなわち当該USBデバイスから入力されるデータの管理処理において使用するファイルおよび情報を識別するためのハンドル(デバイス管理ハンドル)を生成する処理(310)。
(g)USBデバイスドライバー302が上記の新たなデバイスマネージャーハンドルに対応付けられたデバイス管理スレッド(例えば“KeyMan(devHandle)”)を生成する処理(320)。なお、スレッドとはソフトウェアの実行単位であり、複数のスレッドが存在する場合には各スレッドによって制御部(CPU等)を交互に占有される。これにより、複数のスレッドに対応するソフトウェアが並行して実行される。すなわち、本明細書におけるデバイス管理スレッドは、当該デバイス管理スレッドに対応するUSBデバイスから入力されるデータに対する処理のためにコンピュータ装置120の制御部124(あるいはMFP200の制御部208)が占有される期間を他の処理を行うためにコンピュータ装置120の制御部124(あるいはMFP200の制御部208)が占有される期間と異ならせるためのものである。
(h)USBデバイスマネージャー303がアプリケーションハンドル(例えば”keyHandle”)を生成する処理。
(i)アプリケーション304がアプリケーションハンドルおよびイベント(例えば”event”)を登録する処理。なお、イベントとしては、例えば、USBデバイスの着脱操作、USBデバイスからのデータ入力(USBデバイスに対するキーストローク操作等)、ユーザーからのUSBデバイスに記憶されているデータの読み出し指示などが挙げられる。
(j)USBデバイスマネージャー303がUSBデバイスを開く処理(330)。
(k)USBデバイスマネージャー303がUSBデバイスドライバー302からデータ341を読み出す処理(340,341)。
(l)USBデバイスが取り外されたときに、USBデバイスドライバー302がその後のUSBデバイスからのデータ読み出し時にエラー信号をUSBデバイスマネージャー303へ出力する処理(350)。
(m)USBデバイスマネージャー303がアプリケーション304にUSBデバイスイベント(例えばUSBデバイスからのデータ入力など)を通知する処理(305)、および当該通知に対応してアプリケーション304がUSBデバイスマネージャー303にデータ読み取り指示を送り、USBデバイスマネージャー303からデータを受け取る処理。
(n)USBデバイスマネージャー303がUSBデバイスドライバー302から送信されたエラー信号を検出する処理。
(o)USBデバイスマネージャー303がUSBデバイスドライバー302から送信されたエラー信号に基づいてUSBデバイスを閉じる処理(360)。
(p)USBデバイスドライバー302がデバイス入出力ハンドル(例えば“devHandle”)を開放(削除)する処理(370)。
(q)USBデバイスマネージャー303がアプリケーション304にエラー信号を送る処理(381)。(r)アプリケーション304がエラー信号に基づいてUSBデバイスマネージャー303を閉じる処理(380)。
(s)USBデバイスマネージャー303を閉じることにより、メモリーを解放する処理(382)。
(t)アプリケーション304がデバイス管理スレッド(例えば“keyHandle”)を削除する処理(390)。
【0049】
なお、USBデバイスドライバー302、USBデバイスマネージャー303、およびアプリケーション304の各処理は、例えば、図1に示したコンピュータ装置120の制御部124、あるいは図2に示したMFP200の制御部208によって行われる。ただし、これに限らず、これらの処理の一部または全部をコンピュータ装置120またはMFP200の他の部材が行うようにしてもよい。
【0050】
(1−4.キーボード装置(USBデバイス)の構成)
本発明の典型的な実施例では、1または複数のキーボード装置(USBデバイス)がコンピュータ装置120あるいはMFP200に接続され、コンピュータ装置120の制御部124あるいは図2に示したMFP200の制御部208において、接続されたキーボード装置(USBデバイス)に応じたUSB階層構造が形成される。
【0051】
図4(a)は単一のキーボード装置(第1キーボード装置)410が接続された場合に形成されるキーボード機能構成(USB階層構造)400を示す説明図である。この図に示すように、キーボード機能構成400には、アプリケーション層401、第1キーボード装置マネージャー(USBデバイスマネージャー)402、システム入出力部403、キーボードドライバー404、およびUSB入出力部405が含まれる。
【0052】
USB入出力部405は、デバイスインターフェース126あるいはインターフェース制御部204を制御し、キーボード装置(USBデバイス)との間のデータの送受信を行わせる。
【0053】
キーボードドライバー404は、上述した図3のUSBデバイスドライバー302の処理を行う。
【0054】
システム入出力部403は、キーボードドライバー404と第1キーボード装置マネージャー(USBデバイスマネージャー)402との間のデータの授受を制御する。
【0055】
第1キーボード装置マネージャー(USBデバイスマネージャー)402は、上述した図3のUSBデバイスマネージャー303の処理を行う。
【0056】
アプリケーション層401は、上述した図3のアプリケーション304の処理を行う。
【0057】
キーボード装置から入力されるデータ(キーストロークデータ)は、最下層のUSB入出力部405からキーボード機能構成400に入力され、最終的に最上層のアプリケーション層401(例えばユーザーインターフェース(UI)アプリケーション)へ送られる。具体的には、キーボード装置(USBデバイス)を介したユーザー入力は、USB入出力部405から、キーボードドライバー404およびシステム入出力部403からなるアプリケーションプログラムインターフェース(API)、および第1キーボード装置マネージャー402(例えば“keyboard device_1 manager”)を経由して最上層のアプリケーション層401(例えばUIアプリケーション)へ送られる。
【0058】
アプリケーション層401が、第1キーボード装置マネージャー402からAPIを介して送られてくるイベント通知の登録処理を行い、アプリケーション層401がAPIを介してキーストロークデータを取得するようにしてもよい。より詳細には、第1キーボード装置マネージャー402がアプリケーション層401の指示に応じて入出力サブシステム(USBサブシステム。例えばUSB入出力部405、キーボードドライバー404、およびシステム入出力部405。)からキーストロークデータを取得する。第1キーボード装置マネージャー402は、入出力サブシステムにデータの読み出しを行うキーボード装置、および当該データを記憶するキーストロークバッファに対してキーボード装置名を通知する。そして、キーストロークデータを取得した後、第1キーボード装置マネージャー402は、登録されているアプリケーションにデータイベントを通知する。
【0059】
デバイス管理スレッドは、自身に対応するメモリー、システムリソース、および変数を有しており、各デバイス管理スレッドは対応するデバイス管理ハンドル(当該デバイス管理ハンドルに対応するUSBデバイスの管理に用いられるファイルおよび情報を識別するための情報)内にこれらの変数を記憶させる。すなわち、各デバイス管理スレッドに対応する新たなデバイス管理ハンドルがデバイス管理スレッド毎に生成され、生成されたデバイス管理ハンドルはアプリケーションが特定のキーボード装置(USBデバイス)にアクセスするため(例えば特定のキーボード装置(USBデバイス)から入力されるデータを処理あるいは管理するため)に用いられる。
【0060】
(1−5.キーボードマネージャー)
キーボードマネージャー(USBデバイスマネージャー)の仕事は、USBサブシステムからデータを取得し、取得したデータを上層のアプリケーション層に渡すことである。複数のキーボード装置をサポートするために、各キーボード装置について専用のデバイス管理スレッドが生成される。すなわち、各デバイス管理スレッドは接続された特定のキーボード装置(USBデバイス)を管理するために用いられる。各デバイス管理スレッドは、キーボード装置が装着されたときに動的に生成されてもよい。また、各デバイス管理スレッドは、キーボード装置が取り外されたときに削除されてもよい。各デバイス管理スレッドは、管理対象のキーボード装置(USBデバイス)を個別に識別し、当該キーボード装置からのキーストローク(入力データ)を、当該キーストロークを処理するアプリケーションに提供する。
【0061】
図4(b)は、複数のキーボード装置(USBデバイス)が接続された場合のキーボード機能構成(デュアルキーボード構成)420を示す説明図である。例えば、第1アプリケーション421(Application_A)はUSB入出力部427を介して第1キーボード装置431(device_A)から入力されるキーストロークを受け取り、第2アプリケーション422(Application_B)はUSB入出力部427を介して第2キーボード装置432(device_B)から入力されるキーストロークを受け取る。第1アプリケーション421は第1キーボード装置マネージャー423を介してアプリケーションプログラムインターフェース(API)に接続され、第2アプリケーション422は第2キーボード装置マネージャー424を介してアプリケーションプログラムインターフェース(API)に接続されている。
【0062】
(1−6.キーボードのタイプ)
キーボードのタイプは、マルチキーボード(複数のキーボード)をサポート可能にするための要素である。タイプ“KEYBOARD”はキーボードを識別するために定義され、タイプ“READER”はリーダー(読取装置)を識別するために定義されている。各デバイス管理スレッドは、管理するUSBデバイスのタイプを識別し、識別したタイプを示す情報(例えばデバイス入出力ハンドル)をアプリケーションに提供する(例えばデバイス管理ハンドルを介して提供する)。キーボードドライバー(USBデバイスドライバー)426はシステム入出力部425にキーボード装置(USBデバイス)が接続されたときにそのキーボード装置のタイプを識別する。また、キーボードドライバー426は、上記識別結果を示す識別情報をデバイス装着通知工程においてキーボード装置マネージャーに提供する。
【0063】
(1−7.USBデバイスの照合)
図5は、コンピュータ装置120(あるいはMFP200)によって監視されるキーボード装置(USBデバイス)を識別するためのデバイス照合データベースを用いた照合処理の流れを示す説明図である。
【0064】
USBサブシステムは、複数のUSBデバイスを検出した場合、USBデバイス(例えばキーボード装置)の設定情報510と、デバイス照合データベース520の照合基準情報とを比較し、一致するか否か、すなわち検出したUSBデバイスがデバイス照合データベース520に登録されているか否かを判断する。デバイス照合データベース520に一致するUSBデバイスが登録されていた場合、当該USBデバイスは内部の一致リスト540に加えられるとともに、当該USBデバイスのためのデバイス管理スレッド550が生成される。デバイス照合データベース520は例えばXMLファイル形式であってもよい。また、上記XMLファイルを修正することによって登録情報を追加できるようにしてもよく、システム管理機能によって登録情報を動的に付加できるようにしてもよい。コンピュータ装置120(あるいはMFP200)が、新規に装着されたキーボード装置(USBデバイス)を検知した場合、USBサブシステムによって検知された当該キーボード装置の情報は当該キーボード装置の管理ページに提示される。コンピュータ装置120(あるいはMFP200)が当該キーボード装置を上記デバイス照合データベースに自動的に加えるようにしてもよい。これにより、コンピュータ装置120(あるいはMFP200)は、互いに識別可能な複数のキーボード装置から入力されるキーストロークデータを当該キーボード装置に応じた適切なアプリケーションに送ることができる。
【0065】
(1−8.デバイス管理ハンドル)
図6は、デバイス管理スレッドに固有のデバイス管理ハンドルを用いたキーボード管理インターフェースの概略構成を示す説明図である。ユーザーインターフェースのアプリケーション610は、キーボードマネージャー(USBデバイスマネージャー)620からAPIを介して取得したイベント通知623の登録処理を行い、キーストロークデータ621を取得する。なお、上記イベントとしては、例えば、USBデバイスの着脱操作、USBデバイスからのデータ入力(USBデバイスに対するキーストローク操作等)、ユーザーからのUSBデバイスに記憶されているデータの読み出し指示などが挙げられる。
【0066】
アプリケーション610は、キーボードマネージャー620に、データおよびイベントを取得するキーボード装置(USBデバイス)に関連付けたキーボードハンドル(デバイス管理ハンドル)640を提供する(611)。なお、デバイス管理ハンドルとは、当該USBデバイスとの間のデータの入出力処理において使用するファイルおよび情報を識別するための情報である。また、キーボードハンドルとはキーボードを識別するための値(情報)であり、デバイスハンドルとはUSBデバイスを識別するための値(情報)である。
【0067】
キーボードマネージャー620は、入出力サブシステム630からキーストロークデータ631を取得する(622)。キーボードマネージャー620は、入出力サブシステム630およびキーストロークバッファに、データの読み出しを行うUSBデバイスのデバイスハンドル(デバイス管理ハンドル)を通知する。キーストロークデータを取得した後、キーボードマネージャー620は当該データを処理し、アプリケーション610にデータイベント623を通知する。
【0068】
デバイス管理スレッドは、当該デバイス管理スレッド毎に割り当てられたメモリー、システムリソース、および変数を利用する。これらの変数はデバイス管理ハンドル内に記憶される。新たなデバイス管理ハンドル640は各デバイス管理スレッドについてそれぞれ生成される。このデバイス管理ハンドル640は、アプリケーション610によって特定のキーボード装置(USBデバイス)にアクセスするために用いられる。デバイス管理ハンドル640により、複数のデバイス管理スレッドの適用が可能になる。デバイス管理ハンドル640は、USBサブシステムが当該デバイス管理ハンドルに対応するキーボード装置(USBデバイス)を検出したときに生成あるいは発生させられる。また、デバイス管理ハンドル640は、アプリケーションが当該デバイス管理ハンドル640に対応するデバイス管理スレッドからのサービスを必要としなくなったときに削除される。デバイス管理ハンドル640は、デバイス管理スレッドを生成する前に動的に割り付けられてもよい。デバイス管理ハンドル640のメモリーは、デバイス管理スレッドに固有の情報およびデバイス名を含めるために初期化されてもよい。デバイス管理ハンドル640は、その後、タスクエントリーでキーボードマネージャー620に渡されてもよく、キーストロークデータの登録処理を行うアプリケーション610によって利用可能にされてもよい。デバイス管理ハンドル640内の情報には、(a)デバイス名、(b)デバイスID、(c)デバイスタイプ、(d)キーバッファー、および(e)システムリソースが含まれていてもよい。キーボードマネージャー620は、デバイス管理ハンドル640内に含められたシステムリソースを初期化する。上記初期化には、典型的には、メモリーバッファーを割り当てる処理、および装着されたデバイスを特定するための信号を生成する処理が含まれる。
【0069】
(1−9.USBデバイスドライバー)
キーボードマネージャー(USBデバイスマネージャー)は、キーボードドライバー(USBデバイスドライバー)を介してキーボード装置(USBデバイス)からデータを受け取る。USBデバイスドライバーの入出力機能は、システム入出力機能(読み出し、書き込み、開く、閉じる、および入出力制御(“ioctl”))を内部的にマッピングしたものである。
【0070】
システム(コンピュータ装置120あるいはMFP200)にUSBデバイスが装着された場合、USBデバイスドライバーは、装着されたUSBデバイスに対応する新たなデバイス入出力ハンドル(デバイス管理ハンドル)、および当該デバイス入出力ハンドルに対応付けられたUSBデバイス名(例えば“/usbKb/0”)を生成する。
【0071】
上記USBデバイス(例えばキーボード装置など)は、その後、上記USBデバイスドライバーによって管理される内部デバイスリストに追加される。
【0072】
USBデバイスドライバーは、上記デバイス入出力ハンドル(内部キーボード入出力デバイスハンドル)の管理に加えて、装着されたUSBデバイスに関連付けたデバイスマネージャーハンドル(デバイス管理ハンドル)を生成し、当該デバイスマネージャーハンドルに上記デバイス入出力ハンドルの参照情報を記憶する。上記各ハンドルの生成に加えて、当該各ハンドルを初期化し、上記USBデバイスを管理するためのデバイス管理スレッドを生成してもよい。USBデバイスが取り外された場合、USBデバイスドライバーがメモリーを解放し、当該USBドライバーが管理する内部デバイスリストから当該USBデバイスを削除するようにしてもよい。
【0073】
(1−10.アプリケーションインターフェース)
アプリケーションは、USBデバイスマネージャーで登録されたキーストロークを受け取る。これを行うために、アプリケーションは、アプリケーションの提供するサービスのイベントのリストを生成するためにUSBデバイスマネージャーによって提供される一般的なAPIを活用する。適切なデバイス管理スレッドのデバイス管理ハンドルに基づいてデバイス管理スレッドの識別が行われる。イベントの登録をするために、アプリケーションが、登録するべきデバイス管理スレッドを識別するためのイベントのリストを提供するようにしてもよい。アプリケーションがデバイス管理ハンドルを取得する処理は典型的にはタスクエントリーの段階で行われる。例えば、デバイス管理スレッド自身を用いてアプリケーションスレッドを生成し、アプリケーションタスクエントリーでそのデバイス管理ハンドルを生成するようにしてもよい。あるいは、アプリケーションがデバイス管理ハンドルを取得する処理は、USBデバイスマネージャーが動作中の全デバイス管理スレッドのリストを維持し、一般的なAPIを介してこのリストを提供することによって行われてもよい。
【0074】
以上のように、本実施形態にかかるコンピュータ装置120(あるいはMFP200)は、複数のUSBポートを有しており、各USBポートに接続された各USBデバイスのデバイスIDを取得し、取得したデバイスIDがキーボード装置と同じ出力信号形式でデータ出力を行うUSBデバイスのデバイスIDが登録されたデバイス照合データベースに含まれているデバイスIDの中に存在するか否かを照合し、デバイス照合データベースに一致するデバイスIDが登録されている場合に、当該デバイスIDに対応するUSBデバイスから入力されるデータに対する処理のために制御部124(あるいは制御部208)が占有される期間を、他の処理を行うために制御部124(あるいは制御部208)が占有される期間と異ならせるためのデバイス管理スレッドを生成する。
【0075】
これにより、キーボード装置と上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスとが接続された場合であっても、これら各USBデバイス装置(キーボード装置および他のUSBデバイス)からの入力データが混ざり合ってしまうことを防止し、各USBデバイスから入力されるデータをUSBデバイス毎に適切に処理することができる。
【0076】
なお、本実施形態において、コンピュータ装置120の制御部124(あるいはMFP200の制御部208)を、CPU等のプロセッサーを用いてソフトウェアによって実現してもよい。この場合、コンピュータ装置120の制御部124(あるいはMFP200の制御部208)は、各機能を実現する制御プログラムの命令を実行するCPU(central processing unit)、上記プログラムを格納したROM(read only memory)、上記プログラムを展開するRAM(random access memory)、上記プログラムおよび各種データを格納するメモリー等の記憶装置(記録媒体)などを備えている。そして、本発明の目的は、上述した機能を実現するソフトウェアであるコンピュータ装置120(あるいはMFP200)の制御プログラムのプログラムコード(実行形式プログラム、中間コードプログラム、ソースプログラム)をコンピュータで読み取り可能に記録した記録媒体を、コンピュータ装置120(あるいはMFP200)に供給し、そのコンピュータ(またはCPUやMPU)が記録媒体に記録されているプログラムコードを読み出し実行することによって達成される。
【0077】
上記記録媒体としては、例えば、磁気テープやカセットテープ等のテープ系、フロッピー(登録商標)ディスク/ハードディスク等の磁気ディスクやCD−ROM/MO/MD/DVD/CD−R等の光ディスクを含むディスク系、ICカード(メモリカードを含む)/光カード等のカード系、あるいはマスクROM/EPROM/EEPROM/フラッシュROM等の半導体メモリー系などを用いることができる。
【0078】
また、コンピュータ装置120(あるいはMFP200)を通信ネットワークと接続可能に構成し、通信ネットワークを介して上記プログラムコードを供給してもよい。この通信ネットワークとしては、特に限定されず、例えば、インターネット、イントラネット、エキストラネット、LAN、ISDN、VAN、CATV通信網、仮想専用網(virtual private network)、電話回線網、移動体通信網、衛星通信網等が利用可能である。また、通信ネットワークを構成する伝送媒体としては、特に限定されず、例えば、IEEE1394、USB、電力線搬送、ケーブルTV回線、電話線、ADSL回線等の有線でも、IrDAやリモコンのような赤外線、Bluetooth(登録商標)、802.11無線、HDR、携帯電話網、衛星回線、地上波デジタル網等の無線でも利用可能である。なお、本発明は、上記プログラムコードが電子的な伝送で具現化された、搬送波に埋め込まれたコンピュータデータ信号の形態でも実現され得る。
【0079】
また、コンピュータ装置120の制御部124(あるいはMFP200の制御部208)は、ソフトウェアを用いて実現されるものに限らず、ハードウェアロジックによって構成されるものであってもよく、処理の一部を行うハードウェアと当該ハードウェアの制御や残余の処理を行うソフトウェアを実行する演算手段とを組み合わせたものであってもよい。
【0080】
本発明は上述した実施形態に限定されるものではなく、請求項に示した範囲で種々の変更が可能である。すなわち、請求項に示した範囲で適宜変更した技術的手段を組み合わせて得られる実施形態についても本発明の技術的範囲に含まれる。
【符号の説明】
【0081】
120 コンピュータ装置(データ処理装置)
124 制御部(データ処理部、デバイスID取得部、デバイス照合部、スレッド生成部、ハンドル生成部)
126 デバイスインターフェース(USBポート)
127 メモリー(データベース記憶手段)
128 ユーザーインターフェース
200 MFP(多機能周辺装置、データ処理装置)
202 インターフェースポート(USBポート)
204 インターフェース制御部
208 制御部(データ処理部、デバイスID取得部、デバイス照合部、スレッド生成部、ハンドル生成部)
210 ROM
212 RAM(データベース記憶手段)
214 大容量記憶部(データベース記憶手段)
301 USBサブシステム
302 USBデバイスドライバー
303 USBデバイスマネージャー
304 アプリケーション
410 第1キーボード装置(キーボード装置、USBデバイス)
431 第1キーボード装置(キーボード装置、USBデバイス)
432 第2キーボード装置(キーボード装置、USBデバイス)

【特許請求の範囲】
【請求項1】
複数のUSBポートと、当該各USBポートに接続されるUSBデバイスから入力されるデータを処理するデータ処理部とを有するデータ処理装置であって、
上記USBデバイスとして上記USBポートに接続されるキーボード装置、および上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスのデバイスIDが登録されたデバイス照合データベースを記憶するデータベース記憶手段と、
上記USBポートに接続された各USBデバイスのデバイスIDを取得するデバイスID取得部と、
上記デバイスID取得部が取得したデバイスIDと一致するデバイスIDが上記デバイス照合データベースに含まれるデバイスIDの中に存在するか否かを照合するデバイス照合部とを備え、
上記データ処理部は、上記デバイス照合部による照合結果に応じて、上記キーボード装置から入力されるデータと、上記他のUSBデバイスから入力されるデータとを区別して処理することを特徴とするデータ処理装置。
【請求項2】
上記デバイス照合部によって一致するデバイスIDが存在すると判断された場合に、当該デバイスIDに対応するUSBデバイスから入力されるデータに対する処理のために上記データ処理部が占有される期間を、他の処理を行うために上記データ処理部が占有される期間と異ならせるためのデバイス管理スレッドを生成するスレッド生成部を備えていることを特徴とする請求項1に記載のデータ処理装置。
【請求項3】
上記デバイス照合部によって一致するデバイスIDが存在すると判断された場合に、当該デバイスIDに対応するUSBデバイスから入力されるデータに対する処理において使用するファイルおよび情報を識別するためのデバイス管理ハンドルを生成するハンドル生成部を備えていることを特徴とする請求項2に記載のデータ処理装置。
【請求項4】
上記ハンドル生成部は、上記デバイス管理スレッドと上記デバイス管理ハンドルとを対応付けることを特徴とする請求項3に記載のデータ処理装置。
【請求項5】
上記データ処理部は、上記デバイス管理ハンドルに基づいて上記USBデバイスからデータを読み出すことを特徴とする請求項3または4に記載のデータ処理装置。
【請求項6】
コピー機能、スキャナー機能、ファクシミリ機能、およびプリンター機能のうちの2つ以上の機能を有する多機能周辺装置であって、
請求項1から5のいずれか1項に記載のデータ処理装置を備えていることを特徴とする多機能周辺装置。
【請求項7】
上記データ処理部は、上記複数のUSBポートに接続された2以上のキーボード装置からの入力を受け付けて当該キーボード装置毎に処理することを特徴とする請求項6に記載の多機能周辺装置。
【請求項8】
複数のUSBポートと、当該各USBポートに接続されるUSBデバイスから入力されるデータを処理するデータ処理部とを有するデータ処理装置におけるデータ管理方法であって、
上記各USBポートに接続された各USBデバイスのデバイスIDを取得するデバイスID取得工程と、
上記デバイスID取得工程で取得したデバイスIDが、上記USBデバイスの1つであるキーボード装置および上記キーボード装置と同じ出力信号形式でデータを出力する他のUSBデバイスのデバイスIDが登録されたデバイス照合データベースに含まれているデバイスIDの中に存在するか否かを照合するデバイス照合工程とを含み、
上記デバイス照合工程の照合結果に応じて、上記データ処理部に、上記キーボード装置から入力されるデータと、上記他のUSBデバイスから入力されるデータとを区別して処理させることを特徴とするデータ処理方法。
【請求項9】
請求項1から5のいずれか1項に記載のデータ処理装置を動作させるプログラムであって、コンピュータを上記各部として機能させるためのプログラム。
【請求項10】
請求項9に記載のプログラムを記録したコンピュータ読み取り可能な記録媒体。


【図1】
image rotate

【図2】
image rotate

【図3】
image rotate

【図4】
image rotate

【図5】
image rotate

【図6】
image rotate