(57)【特許請求の範囲】
【請求項１】
コンピュータとキーボード及びマウスとの間に接続されるＫＶＭ（Ｋ：キーボード、Ｖ：ビデオ、Ｍ：マウス）スイッチであって、
他のＫＶＭスイッチとカスケード接続する接続手段と、
前記他のＫＶＭスイッチの動作を制御する制御情報を含む制御データの作成指示を入力する入力手段と、
前記制御データの作成指示が入力された場合に、前記キーボード又は前記マウスから入力されるキーコードデータと同一のデータ形式を有すると共に前記制御データを示す第１識別子と前記制御情報とを含む制御データを作成する作成手段と、
前記作成された制御データを前記他のＫＶＭスイッチに出力する出力手段と
を備えることを特徴とするＫＶＭスイッチ。
【請求項２】
前記他のＫＶＭスイッチとのカスケード接続が確立しているか否かを判別する判別手段を備え、
前記他のＫＶＭスイッチとのカスケード接続が確立していないと判別された場合に、前記作成手段は、前記制御データを作成しないことを特徴とする請求項１に記載のＫＶＭスイッチ。
【請求項３】
前記制御データの作成指示としてＯＳＤ（On-Screen Display）が起動された場合には、前記作成手段は、前記キーボード又は前記マウスから入力されるキーコードデータに含まれるキーコードに対応する制御情報と前記第１識別子とを含む制御データを作成することを特徴とする請求項１又は２に記載のＫＶＭスイッチ。
【請求項４】
前記他のＫＶＭスイッチに接続される操作対象のコンピュータを切り替えるボタンを有し、
前記制御データの作成指示として前記ボタンが押下された場合には、前記作成手段は、前記押下されたボタンに対応する制御情報と前記第１識別子とを含む制御データを作成することを特徴とする請求項１乃至３のいずれか１項に記載のＫＶＭスイッチ。
【請求項５】
前記判別手段は、前記他のＫＶＭスイッチとのＵＳＢ（Universal Serial Bus）接続が確立した場合に、前記他のＫＶＭスイッチとのカスケード接続の機能を有するか否かを判別することを特徴とする請求項２に記載のＫＶＭスイッチ。
【請求項６】
コンピュータと他のＫＶＭスイッチとの間に接続されるＫＶＭ（Ｋ：キーボード、Ｖ：ビデオ、Ｍ：マウス）スイッチであって、
前記他のＫＶＭスイッチとカスケード接続する接続手段と、
前記他のＫＶＭスイッチに接続されたキーボード又はマウスから入力されるキーコードデータと、前記キーコードデータと同一のデータ形式を有すると共に前記ＫＶＭスイッチの動作を制御する制御情報を含む制御データとを受信する受信手段と、
前記他のＫＶＭスイッチとのカスケード接続が確立しており且つ前記他のＫＶＭスイッチから受信したデータが前記制御データである場合に、前記制御情報に応じた処理を実行し、前記他のＫＶＭスイッチとのカスケード接続が確立しておらず且つ前記他のＫＶＭスイッチから受信したデータが前記制御データである場合に、当該受信したデータを廃棄する制御手段と
を備えることを特徴とするＫＶＭスイッチ。
【請求項７】
前記他のＫＶＭスイッチから受信したデータが前記キーコードデータである場合には、前記制御手段は、当該キーコードデータを前記コンピュータに送信し、前記他のＫＶＭスイッチから受信したデータが前記制御データである場合には、前記制御手段は、当該制御データを前記コンピュータに送信しないことを特徴とすることを請求項６に記載のＫＶＭスイッチ。
【請求項８】
前記制御データは、前記制御データを示す第１識別子と前記制御情報とを含み、
前記キーコードデータは、キーコードと、当該キーコードデータを示す第２識別子と含み、
さらに、前記第１識別子及び前記第２識別子に基づいて、前記他のＫＶＭスイッチから受信したデータが前記制御データであるか又は前記キーコードデータであるかを判別する第１判別手段を備えることを特徴とする請求項６又は７に記載のＫＶＭスイッチ。
【請求項９】
前記他のＫＶＭスイッチに所定のリクエストを送信したか否かに基づいて、前記他のＫＶＭスイッチとのカスケード接続が確立しているか否かを判別する第２判別手段を備えていることを特徴とする請求項６乃至８のいずれか１項に記載のＫＶＭスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＫＶＭスイッチに関する。
【背景技術】
【０００２】
従来より、キーボード、マウス及びモニタで構成されるコンソールを複数のコンピュータで共有する際に、その複数のサーバを切り替えるＫＶＭスイッチが知られている（例えば、特許文献１参照）。このＫＶＭスイッチは、別のＫＶＭスイッチをカスケード接続することができる。
【０００３】
図１は、カスケード接続された複数のＫＶＭスイッチと、複数のコンピュータと、キーボード及びマウスとを有するシステムを示す図である。尚、図１では、ビデオデータに関する構成を省略している。
【０００４】
図１に示すシステム１０は、コンピュータ１，２、マスタＫＶＭスイッチ３、スレーブＫＶＭスイッチ４、及びキーボード及びマウス５を備えている。コンピュータ１は、ＵＳＢ（Universal Serial Bus）ホストとして機能するＵＳＢポート１ａを有し、ＵＳＢケーブル６を介してマスタＫＶＭスイッチ３のＵＳＢポート３ｄに接続されている。コンピュータ２は、ＵＳＢホストとして機能するＵＳＢポート２ａを有し、ＵＳＢケーブル７を介してスレーブＫＶＭスイッチ４のＵＳＢポート４ｄに接続されている。
【０００５】
マスタＫＶＭスイッチ３は、ＵＳＢホストとして機能するＵＳＢポート３ａ、ＫＶＭスイッチ全体の動作を制御するコントローラ３ｂ、ＵＳＢポート３ｄ〜３ｇを切り替える切替スイッチ３ｃ及びＵＳＢデバイスとして機能するＵＳＢポート３ｄ〜３ｇを備えている。スレーブＫＶＭスイッチ４は、ＵＳＢホストとして機能するＵＳＢポート４ａ、ＫＶＭスイッチ全体の動作を制御するコントローラ４ｂ、ＵＳＢポート４ｄ〜４ｇを切り替える切替スイッチ４ｃ及びＵＳＢデバイスとして機能するＵＳＢポート４ｄ〜４ｇを備えている。ＵＳＢポート４ａは、ＵＳＢケーブル８を介してＵＳＢポート３ｇに接続されている。ＵＳＢデバイスとして機能するキーボード及びマウス５は、ＵＳＢケーブル９を介してマスタＫＶＭスイッチ３のＵＳＢポート３ａに接続されている。
【０００６】
キーボード及びマウス５は、キーコードおよびマウスデータをマスタＫＶＭスイッチ３又はスレーブＫＶＭスイッチ４に送信する。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２００５−１８１３５号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
上記のシステム１０において、マスタＫＶＭスイッチ３がスレーブＫＶＭスイッチ４のＵＳＢポート４ｄ〜４ｇを切り替える場合、マスタＫＶＭスイッチ３が、切り替え元及び切り替え先のポートを示すポート情報をスレーブＫＶＭスイッチ４に送信する必要がある。
【０００９】
しかしながら、ＵＳＢ規格では、ポート情報の送信の指示がＵＳＢホストからＵＳＢデバイスに送られないと、ＵＳＢデバイスはポート情報をＵＳＢホストに送信することはできない。つまり、ポート情報の送信の指示がスレーブＫＶＭスイッチ４のＵＳＢポート４ａからマスタＫＶＭスイッチ３のＵＳＢポート３ｇに送られないと、ＵＳＢポート３ｇはポート情報をＵＳＢポート４ａに送信することはできない。
【００１０】
そのため、スレーブＫＶＭスイッチ４がＵＳＢのセットアップリクエストを定期的にマスタＫＶＭスイッチ３に送信し、その応答データとしてマスタＫＶＭスイッチ３がポート情報をスレーブＫＶＭスイッチ４に送信する方法が考えられる。
【００１１】
しかしながら、スレーブＫＶＭスイッチ４がＵＳＢのセットアップリクエストを定期的にマスタＫＶＭスイッチ３に送信する場合、ＵＳＢインタフェース（すなわち、ＵＳＢポート４ａ，３ｇ）に負荷がかかり、ＵＳＢのセットアップリクエストの発行間隔によっては、マスタＫＶＭスイッチ３からのポート情報の送信が遅延するおそれがある。
【００１２】
本発明は、他のＫＶＭスイッチからの制御データの送信指示なしに、他のＫＶＭスイッチの制御データを送信することができるＫＶＭスイッチを提供することを目的とする。また、本発明は、他のＫＶＭスイッチへの制御データの送信指示なしに、自身の制御データを受信し、当該制御データに応じた処理を実行することができるＫＶＭスイッチを提供することを目的とする。
【課題を解決するための手段】
【００１３】
上記目的を達成するため、明細書に開示されたＫＶＭスイッチは、コンピュータとキーボード及びマウスとの間に接続されるＫＶＭ（Ｋ：キーボード、Ｖ：ビデオ、Ｍ：マウス）スイッチであって、他のＫＶＭスイッチとカスケード接続する接続手段と、前記他のＫＶＭスイッチの動作を制御する制御情報を含む制御データの作成指示を入力する入力手段と、前記制御データの作成指示が入力された場合に、前記キーボード又は前記マウスから入力されるキーコードデータと同一のデータ形式を有すると共に前記制御データを示す第１識別子と前記制御情報とを含む制御データを作成する作成手段と、前記作成された制御データを前記他のＫＶＭスイッチに出力する出力手段とを備える。
【００１４】
上記目的を達成するため、明細書に開示されたＫＶＭスイッチは、コンピュータと他のＫＶＭスイッチとの間に接続されるＫＶＭ（Ｋ：キーボード、Ｖ：ビデオ、Ｍ：マウス）スイッチであって、前記他のＫＶＭスイッチとカスケード接続する接続手段と、前記他のＫＶＭスイッチに接続されたキーボード又はマウスから入力されるキーコードデータと、前記キーコードデータと同一のデータ形式を有すると共に前記ＫＶＭスイッチの動作を制御する制御情報を含む制御データとを受信する受信手段と、前記他のＫＶＭスイッチとのカスケード接続が確立しており且つ前記他のＫＶＭスイッチから受信したデータが前記制御データである場合に、前記制御情報に応じた処理を実行し、前記他のＫＶＭスイッチとのカスケード接続が確立しておらず且つ前記他のＫＶＭスイッチから受信したデータが前記制御データである場合に、当該受信したデータを廃棄する制御手段とを備える。
【発明の効果】
【００１５】
本発明によれば、他のＫＶＭスイッチからの制御データの送信指示なしに、他のＫＶＭスイッチの制御データを送信することができる。また、本発明によれば、他のＫＶＭスイッチへの制御データの送信指示なしに、自身のＫＶＭスイッチの制御データを受信し、当該制御データに応じた処理を実行することができる。
【図面の簡単な説明】
【００１６】
【図１】カスケード接続された複数のＫＶＭスイッチと、複数のコンピュータと、キーボード及びマウスとを有するシステムを示す図である。
【図２】本実施の形態に係るＫＶＭ（Ｋ：キーボード、Ｖ：ビデオ、Ｍ：マウス）スイッチを備えるシステムの構成図である。
【図３】ＵＳＢ  ＩＤの一例を示す図である。
【図４】ＫＶＭバージョン情報の対応テーブルの一例を示す図である。
【図５】ＵＳＢのキーコードデータのデータフォーマットを示す図である。
【図６】マスタＫＶＭスイッチ及びスレーブＫＶＭスイッチの制御データのデータフォーマットを示す図である。
【図７】（Ａ）は、ＯＳＤを起動することにより、制御データを作成する方法を示すフローチャートである。（Ｂ）は、ボタン群のボタンを押下することにより、制御データを作成する方法を示すフローチャートである。
【図８】マスタＫＶＭスイッチとスレーブＫＶＭスイッチとの間のカスケード接続を確立する処理を示すシーケンス図である。
【図９】マスタＫＶＭスイッチで実行される処理を示すフローチャートである。
【図１０】スレーブＫＶＭスイッチで実行される処理を示すフローチャートである。
【発明を実施するための形態】
【００１７】
以下、図面を参照しながら本発明の実施の形態を説明する。
【００１８】
図２は、本実施の形態に係るＫＶＭ（Ｋ：キーボード、Ｖ：ビデオ、Ｍ：マウス）スイッチを備えるシステムの構成図である。図２に示すシステム１００では、ビデオデータに関するＫＶＭスイッチの構成、サーバの構成及びコンソールとしてＫＶＭスイッチに接続されるモニタを省略している。
【００１９】
図２に示すシステム１００は、コンピュータ２１，２２、マスタＫＶＭスイッチ３０、スレーブＫＶＭスイッチ４０、及びキーボード及びマウス５０を備えている。マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０に接続されるコンピュータの台数は１つに限定されるものではなく、複数のコンピュータがマスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０の各々に接続されてもよい。
【００２０】
コンピュータ２１は、ＵＳＢ（Universal Serial Bus）ホストとして機能するＵＳＢポート２１ａを有し、ＵＳＢケーブル１１を介してマスタＫＶＭスイッチ３０のＵＳＢポート３４ａに接続されている。コンピュータ２２は、ＵＳＢホストとして機能するＵＳＢポート２２ａを有し、ＵＳＢケーブル１２を介してスレーブＫＶＭスイッチ４０のＵＳＢポート４４ａに接続されている。
【００２１】
マスタＫＶＭスイッチ３０は、ＵＳＢホストとして機能するＵＳＢポート３１と、マスタＫＶＭスイッチ３０全体の動作を制御するコントローラ３２と、ＵＳＢポート３４ａ〜３４ｄを切り替える切替スイッチ３３と、コンピュータ２１及びスレーブＫＶＭスイッチ４０と接続可能であり、ＵＳＢデバイスとして機能するＵＳＢポート３４ａ〜３４ｄとを備えている。コントローラ３２は、入力手段、作成手段及び判別手段として機能する。ＵＳＢポート３４ａ〜３４ｄは接続手段及び出力手段として機能する。さらに、マスタＫＶＭスイッチ３０は、コンピュータと接続されるＵＳＢポート（例えばＵＳＢポート３４ａ〜３４ｄ及び４４ａ〜４４ｄ）を切り替えたり、各種のマスタＫＶＭスイッチ３０の制御情報を設定するためのＯＳＤ（On-Screen Display）を不図示のモニタに表示するＯＳＤコントローラ３５と、コンピュータと接続されるＵＳＢポート（例えばＵＳＢポート３４ａ〜３４ｄ及び４４ａ〜４４ｄ）を切り替えるための複数のボタンで構成されるボタン群３６とを備えている。
【００２２】
コントローラ３２は、ＵＳＢポート３１、切替スイッチ３３、ＯＳＤコントローラ３５及びボタン群３６に接続されている。さらに、切替スイッチ３３は、ＵＳＢポート３４ａ〜３４ｄに接続されている。コントローラ３２はキャッシュメモリ３２ａを備えている。
【００２３】
スレーブＫＶＭスイッチ４０は、ＵＳＢホストとして機能するＵＳＢポート４１と、スレーブＫＶＭスイッチ４０全体の動作を制御するコントローラ４２と、ＵＳＢポート４４ａ〜４４ｄを切り替える切替スイッチ４３と、コンピュータ２２と接続可能であり、ＵＳＢデバイスとして機能するＵＳＢポート４４ａ〜４４ｄとを備えている。ＵＳＢポート４１は接続手段として機能する。コントローラ４２は、受信手段、制御手段、第１判別手段及び第２判別手段として機能する。さらに、スレーブＫＶＭスイッチ４０は、コンピュータと接続されるＵＳＢポート（例えば、ＵＳＢポート４４ａ〜４４ｄ）を切り替えたり、各種のスレーブＫＶＭスイッチ４０の制御情報を設定するためのＯＳＤ（On-Screen Display）を不図示のモニタに表示するＯＳＤコントローラ４５と、コンピュータと接続されるＵＳＢポート（例えばＵＳＢポート４４ａ〜４４ｄ）を切り替えるための複数のボタンで構成されるボタン群４６とを備えている。
【００２４】
コントローラ４２は、ＵＳＢポート４１、切替スイッチ４３、ＯＳＤコントローラ４５及びボタン群４６に接続されている。さらに、切替スイッチ４３は、ＵＳＢポート４４ａ〜４４ｄに接続されている。コントローラ４２はキャッシュメモリ４２ａを備えている。
【００２５】
ＵＳＢポート４１は、ＵＳＢケーブル１４を介してＵＳＢポート３４ｄに接続されている。尚、ＵＳＢポート４１は、ＵＳＢケーブル１４を介してＵＳＢポート３４ａ〜３４ｃのいずれかに接続されてもよい。ＵＳＢデバイスとして機能するキーボード及びマウス５０は、マスタＫＶＭスイッチ３０のＵＳＢポート３１に接続されている。
【００２６】
キーボード及びマウス５０は、キーコードデータに加えて、マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０の制御情報をマスタＫＶＭスイッチ３０に送信する。制御情報は、マスタＫＶＭスイッチ３０がスレーブＫＶＭスイッチ４０のＵＳＢポート４４ａ〜４４ｄを切り替えるためのコマンド、マスタＫＶＭスイッチ３０がＵＳＢポート３４ａ〜３４ｄを切り替えるためのコマンド、マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０に接続されている複数のコンピュータを順次切り替え、各コンピュータの動作を監視するためのコマンド（オートスキャンコマンド）、及びスレーブＫＶＭスイッチ４０に対してリセットを指示するためのリセット開始コマンドを含む。
【００２７】
マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０は、実質的に同じ構成を備えているので、マスタＫＶＭスイッチ３０をスレーブＫＶＭスイッチとして使用することもでき、スレーブＫＶＭスイッチ４０をマスタＫＶＭスイッチとして使用することもできる。各ＫＶＭスイッチへのマスタ又はスレーブの設定は、ＯＳＤコントローラ３５で読み出されたＯＳＤ上で行われる。
【００２８】
ここで、キャッシュメモリ３２ａ，４２ａは、各々図３に示すＵＳＢ  ＩＤと、図４に示すＫＶＭバージョン情報の対応テーブルを備えている。図３はＵＳＢ  ＩＤの一例を示す図であり、図４は、ＫＶＭバージョン情報の対応テーブルの一例を示す図である。
【００２９】
図３に示すように、ＵＳＢ  ＩＤは、ベンダＩＤ及びプロダクトＩＤを含む。ベンダＩＤはＫＶＭスイッチの販売会社を特定する識別子であり、プロダクトＩＤはＫＶＭスイッチの種類を特定する識別子である。ＵＳＢ  ＩＤは、マスタＫＶＭスイッチ３０がカスケード接続機能を有するか否かを判断するためにスレーブＫＶＭスイッチ４０のコントローラ４２によって利用される。具体的には、マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０がＵＳＢ接続された場合に、スレーブＫＶＭスイッチ４０のコントローラ４２は、マスタＫＶＭスイッチ３０からＵＳＢ  ＩＤを取得する。そして、コントローラ４２は、その取得されたＵＳＢ  ＩＤがキャッシュメモリ４２ａに格納されたＵＳＢ  ＩＤと一致する場合に、マスタＫＶＭスイッチ３０がカスケード接続機能を有すると判断する。コントローラ４２は、その取得されたＵＳＢ  ＩＤがキャッシュメモリ４２ａに格納されたＵＳＢ  ＩＤと一致しない場合に、マスタＫＶＭスイッチ３０がカスケード接続機能を有しないと判断する。
【００３０】
本実施の形態では、キャッシュメモリ３２ａ，４２ａは、各々自ＫＶＭスイッチのＫＶＭバージョン情報（例えば「０００１ｈ」）を有する。ＫＶＭバージョン情報は、カスケード接続に対応するＫＶＭスイッチを示す情報である。
【００３１】
図４のＫＶＭバージョン情報の対応テーブルは、マスタＫＶＭスイッチ３０がスレーブＫＶＭスイッチ４０のＫＶＭバージョン情報を確認し、スレーブＫＶＭスイッチ４０がマスタＫＶＭスイッチ３０のＫＶＭバージョン情報を確認することを示している。つまり、マスタＫＶＭスイッチ３０はスレーブＫＶＭスイッチ４０のＫＶＭバージョン情報を取得し、その取得したＫＶＭバージョン情報が、対応テーブルに記載されたスレーブのＫＶＭバージョン情報と一致する場合には、マスタＫＶＭスイッチ３０はスレーブＫＶＭスイッチ４０がカスケード接続に対応するＫＶＭスイッチであると判断する。取得したＫＶＭバージョン情報が、対応テーブルに記載されたスレーブのＫＶＭバージョン情報と一致しない場合に、マスタＫＶＭスイッチ３０はスレーブＫＶＭスイッチ４０がカスケード接続に対応するＫＶＭスイッチでないと判断する。
【００３２】
スレーブＫＶＭスイッチ４０はマスタＫＶＭスイッチ３０のＫＶＭバージョン情報を取得し、その取得したＫＶＭバージョン情報が、対応テーブルに記載されたマスタのＫＶＭバージョン情報と一致する場合には、スレーブＫＶＭスイッチ４０はマスタＫＶＭスイッチ３０がカスケード接続に対応するＫＶＭスイッチであると判断する。取得したＫＶＭバージョン情報が、対応テーブルに記載されたマスタのＫＶＭバージョン情報と一致しない場合には、スレーブＫＶＭスイッチ４０はマスタＫＶＭスイッチ３０がカスケード接続に対応するＫＶＭスイッチでないと判断する。
【００３３】
図５は、ＵＳＢのキーコードデータのデータフォーマットを示す図である。
【００３４】
キーコードデータは、キーボード又はマウスからマスタＫＶＭスイッチ３０に入力され、８バイトで構成される。１バイト目にＳｈｉｆｔキーやＣｔｒｌキーなどのモディファイヤーキー情報が設定され、３バイト目から８バイト目に数字キーや文字キーのキーコードが設定される。２バイト目は、リザーブ（Ｒｅｓｅｒｖｅ）の領域であり、０固定である。この２バイト目に入力される「０」は、後述するように、キーコードデータの識別子として機能する。尚、本実施の形態では、マウスから入力されるデータ及びキーボードから入力されるデータは、同一のデータフォーマットを有し、キーコードデータとして説明される。
【００３５】
図６は、マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０の制御データのデータフォーマットを示す図である。
【００３６】
マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０の制御データは、キーコードデータと同様に８バイトで構成される。１バイト目は、リザーブ（Ｒｅｓｅｒｖｅ）の領域であり、０固定である又は制御情報が設定される。２バイト目には、制御データを示す制御データ識別子として「８０ｈ」が設定される。３バイト目から８バイト目には、マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０の制御情報が設定される。
【００３７】
マスタＫＶＭスイッチ３０及びスレーブＫＶＭスイッチ４０の制御データは、制御情報を設定するためのＯＳＤが起動している場合やコンピュータと接続されるＵＳＢポート（例えばＵＳＢポート３４ａ〜３４ｄ，４４ａ〜４４ｄ）を切り替えるためボタン群３６，４６のボタンが押下された場合に、コントローラ３２，４２によって作成される。なお、本実施の形態では、マスタＫＶＭスイッチ３０がスレーブＫＶＭスイッチ４０とカスケード接続されており、スレーブＫＶＭスイッチ４０にキーボード及びマウスが接続されていないため、制御データはコントローラ３２によって作成される。スレーブＫＶＭスイッチ４０にキーボード及びマウスが接続されている場合（例えば、スレーブＫＶＭスイッチ４０が単体で使用される場合やマスターＫＶＭスイッチとして機能する場合）は、コントローラ４２が制御データを作成する。
【００３８】
ここで、コントローラ３２が制御データを作成する方法について説明する。図７（Ａ）は、ＯＳＤを起動することにより、制御データを作成する方法を示すフローチャートである。図７（Ｂ）は、ボタン群３６のボタンを押下することにより、制御データを作成する方法を示すフローチャートである。
【００３９】
図７（Ａ）では、予め規定されたホットキー（たとえば、ファンクションキー＋「１」キー）が入力されると、コントローラ３２は、ＯＳＤコントローラ３５を使って、ＯＳＤを起動する（ステップＳ１）。オペレータがキーボード及びマウス５０でキーコードを入力すると、コントローラ３２は制御データを新たに作成する。この場合、コントローラ３２は、入力されたキーコードに対応する制御情報を制御データの３バイト目から８バイト目に設定し（ステップＳ２）、制御データの１バイト目に「０」を設定し、制御データの２バイト目に制御データ識別子を設定する（ステップＳ３）。これにより、制御データの作成が完了する。
【００４０】
また、図７（Ｂ）においてボタン群３６のいずれかのボタンが押下された場合には（ステップＳ４でＹＥＳ）、コントローラ３２は、制御データを新たに作成する。この場合、コントローラ３２は、押下されたボタンに対応する制御情報を制御データの３バイト目から８バイト目に設定し（ステップＳ５）、制御データの１バイト目に「０」を設定し、制御データの２バイト目に制御データ識別子を設定する（ステップＳ６）。これにより、制御データの作成が完了する。
【００４１】
このように、本実施の形態では、制御データのデータフォーマットをキーコードデータのデータフォーマットと同一にし、マスタＫＶＭスイッチ３０からの制御情報の送信にキーコードデータのデータフォーマットを利用している。これにより、スレーブＫＶＭスイッチ４０のコントローラ４２が、キーコードデータと同様に制御データを受信することができるので、従来のように、スレーブＫＶＭスイッチ４０がＵＳＢのセットアップリクエストを定期的にマスタＫＶＭスイッチ３０に送信する必要がなくなる。
【００４２】
ここで、制御データのデータフォーマットをキーコードデータのデータフォーマットと同一にしない場合を検討する。例えば、ＵＳＢのベンダー定義として制御情報をキーボード及びマウス５０からのキーコードデータに追加する方法が考えられる。
【００４３】
この場合、ＵＳＢのデータ構成を示すレポートディスクリプタがベンダー定義の制御情報を含むので、コンピュータ２１，２２のＢＩＯＳ（Basic Input/Output System）セットアップにおいてキーボード及びマウス５０が動作しない可能性がある。つまり、制御データのデータフォーマットをキーコードデータのデータフォーマットと同一にしない場合には、コンピュータ２１，２２の操作で不具合が発生するおそれがある。したがって、制御データのデータフォーマットをキーコードデータのデータフォーマットと同一にすることで、コンピュータ２１，２２の操作で不具合が発生することを回避できる。
【００４４】
制御情報が、スレーブＫＶＭスイッチ４０の動作を制御するコマンド（例えば、スレーブＫＶＭスイッチ４０のＵＳＢポート４４ａ〜４４ｄを切り替えるためのコマンド）である場合には、制御データは、マスタＫＶＭスイッチ３０とスレーブＫＶＭスイッチ４０との間のカスケード接続が確立した後にマスタＫＶＭスイッチ３０からスレーブＫＶＭスイッチ４０に送信される。
【００４５】
スレーブＫＶＭスイッチ４０が８バイトのデータをマスタＫＶＭスイッチ３０から受信すると、コントローラ４２は、受信したデータの２バイト目が「０」であるか、又は制御データ識別子（８０ｈ）であるかを判別する。これにより、コントローラ４２は、マスタＫＶＭスイッチ３０からキーコードデータが送られたのか又は制御データが送られたのかを判断することができる。
【００４６】
マスタＫＶＭスイッチ３０から受信したデータの２バイト目が制御データ識別子である場合には、コントローラ４２は、受信したデータの１バイト目及び／又は３バイト目から８バイト目の制御情報を確認する。制御情報が、例えば、ＵＳＢポート４４ａからＵＳＢポート４４ｂに切り替えるためのコマンドである場合には、コントローラ４２は、ＵＳＢポート４４ａからＵＳＢポート４４ｂに切り替える処理を行う、即ち、ＵＳＢポート４４ａからＵＳＢポート４４ｂに切り替えるように切替スイッチ４３を制御する。
【００４７】
図８は、マスタＫＶＭスイッチ３０とスレーブＫＶＭスイッチ４０との間のカスケード接続を確立する処理を示すシーケンス図である。
【００４８】
マスタＫＶＭスイッチ３０がスレーブＫＶＭスイッチ４０にＵＳＢ接続されると、スレーブＫＶＭスイッチ４０のＵＳＢポート４１（ＵＳＢホスト）は、マスタＫＶＭスイッチ３０のＵＳＢポート３４ｄ（ＵＳＢデバイス）に対し、エニュメレーション処理を行う（ステップＳ１１）。エニュメレーション処理では、ＵＳＢデバイス側の機器（ここではマスタＫＶＭスイッチ３０）がどのようなＵＳＢ機器であるかを示すＵＳＢ  ＩＤがＵＳＢホスト側の機器（ここではスレーブＫＶＭスイッチ４０）に送信される。
【００４９】
コントローラ４２は、マスタＫＶＭスイッチ３０のＵＳＢ ＩＤが、カスケード接続機能を有するＫＶＭスイッチのＵＳＢ ＩＤと一致するか否かを判別する（ステップＳ１２）。カスケード接続機能を有するＫＶＭスイッチのＵＳＢ ＩＤは予めキャッシュメモリ４２ａに格納されている。マスタＫＶＭスイッチ３０のＵＳＢ ＩＤが、カスケード接続機能を有するＫＶＭスイッチのＵＳＢ ＩＤと一致する場合には、コントローラ４２は、ＵＳＢ接続を認識する（ステップＳ１３）。マスタＫＶＭスイッチ３０のＵＳＢ ＩＤが、カスケード接続機能を有するＫＶＭスイッチのＵＳＢ ＩＤと一致しない場合には、コントローラ４２は、ＵＳＢ接続を認識できないので、カスケード接続を確立する処理を中止する。マスタＫＶＭスイッチ３０のＵＳＢ ＩＤが、カスケード接続機能を有するＫＶＭスイッチのＵＳＢ ＩＤと一致する場合には、コントローラ４２は、スレーブＫＶＭスイッチ４０のＫＶＭバージョン情報を含むカスケードバージョン通知リクエスト（GET_CASCADE_VERSION）をマスタＫＶＭスイッチ３０のコントローラ３２に送信する（ステップＳ１４）。
【００５０】
コントローラ３２は、カスケードバージョン通知リクエストを受信すると、カスケードバージョン通知リクエストに含まれるスレーブＫＶＭスイッチ４０のＫＶＭバージョン情報が、図４の対応テーブルに記載されたスレーブＫＶＭスイッチ４０のＫＶＭバージョン情報と一致するか否かを判別する（ステップＳ１５）。スレーブＫＶＭスイッチ４０のＫＶＭバージョン情報が、図４の対応テーブルに記載されたスレーブＫＶＭスイッチ４０のＫＶＭバージョン情報と一致する場合、コントローラ３２は、マスタＫＶＭスイッチ３０のＫＶＭバージョン情報をスレーブＫＶＭスイッチ４０に返信する（ステップＳ１６）。
【００５１】
コントローラ４２は、マスタＫＶＭスイッチ３０のＫＶＭバージョン情報を受信すると、受信したマスタＫＶＭスイッチ３０のＫＶＭバージョン情報が、図４の対応テーブルに記載されたマスタＫＶＭスイッチ３０のＫＶＭバージョン情報と一致するか否かを判別する（ステップＳ１７）。受信したマスタＫＶＭスイッチ３０のＫＶＭバージョン情報が、図４の対応テーブルに記載されたマスタＫＶＭスイッチ３０のＫＶＭバージョン情報と一致する場合には、コントローラ４２は、カスケードイネーブルリクエスト（SET_CASCADE_ENABLE）をマスタＫＶＭスイッチ３０に送信する（ステップＳ１８）。コントローラ３２は、カスケードイネーブルリクエストを受信し、スレーブＫＶＭスイッチ４０のコントローラ４２とカスケード接続を確立する（ステップＳ１９）。
【００５２】
スレーブＫＶＭスイッチ４０の制御データは、カスケード接続の確立後に、マスタＫＶＭスイッチ３０のコントローラ３２からスレーブＫＶＭスイッチ４０のコントローラ４２に送信される。
【００５３】
図９は、マスタＫＶＭスイッチ３０で実行される処理を示すフローチャートである。
【００５４】
まず、マスタＫＶＭスイッチ３０のコントローラ３２は、カスケード接続が確立しているか否かを判別する（ステップＳ２１）。上述したように、コントローラ３２は、カスケード接続を確立する前にカスケードイネーブルリクエストをマスタＫＶＭスイッチ３０から受信しているので（図８のステップＳ１８）、カスケードイネーブルリクエストをマスタＫＶＭスイッチ３０に受信しているか否かに基づいてカスケード接続が確立しているか否かを判断することができる。
【００５５】
カスケード接続が確立している場合には（ステップＳ２１でＹＥＳ）、コントローラ３２は、スレーブＫＶＭスイッチ４０用の制御データの作成指示が入力されたか否かを判別する（ステップＳ２２）。スレーブＫＶＭスイッチ４０用の制御データは、ＯＳＤでの制御データの入力又はボタン群３６のボタンの押下により作成されるので、ここでは、コントローラ３２は、ＯＳＤでのスレーブＫＶＭスイッチ４０用の制御データの入力又はボタン群３６のボタンの押下を監視することにより、ステップＳ２２の判別を実行する。
【００５６】
スレーブＫＶＭスイッチ４０用の制御データの作成指示が入力されている場合には（ステップＳ２２でＹＥＳ）、コントローラ３２は、キーボード及びマウス５０から入力されたキーコードデータ又はボタン群３６のボタンの押下に基づいて、スレーブＫＶＭスイッチ４０用の制御データを作成する（ステップＳ２３）。なお、具体的なスレーブＫＶＭスイッチ４０用の制御データの作成方法は、図７（Ａ）又は図７（Ｂ）に基づいている。その後、コントローラ３２は、作成された制御データをスレーブＫＶＭスイッチ４０のコントローラ４２に送信し（ステップＳ２４）、本処理を終了する。
【００５７】
一方、スレーブＫＶＭスイッチ４０用の制御データの作成指示が入力されていない場合には（ステップＳ２２でＮＯ）、コントローラ３２は、キーボード及びマウス５０から入力されたキーコードデータをスレーブＫＶＭスイッチ４０のコントローラ４２に送信し（ステップＳ２５）、本処理を終了する。
【００５８】
カスケード接続が確立していない場合には（ステップＳ２１でＮＯ）、コントローラ３２は、スレーブＫＶＭスイッチ４０用の制御データの作成指示が入力されたか否かを判別する（ステップＳ２６）。スレーブＫＶＭスイッチ４０用の制御データの作成指示が入力されている場合には（ステップＳ２６でＹＥＳ）、コントローラ３２は、そのスレーブＫＶＭスイッチ４０用の制御データの作成指示を無視し（ステップＳ２７）、本処理を終了する。この場合、ＵＳＢ接続は確立していても、カスケード接続が確立していないので、コントローラ３２がスレーブＫＶＭスイッチ４０用の制御データをコントローラ４２に送信しても、コントローラ４２はコントローラ３２からのスレーブＫＶＭスイッチ４０用の制御データをキーコードデータとして誤認識するからである。
【００５９】
スレーブＫＶＭスイッチ４０用の制御データの作成指示が入力されていない場合（ステップＳ２６でＮＯ）、コントローラ３２は、キーボード及びマウス５０から入力されたキーコードデータをスレーブＫＶＭスイッチ４０のコントローラ４２に送信し（ステップＳ２８）、本処理を終了する。
【００６０】
図１０は、スレーブＫＶＭスイッチ４０で実行される処理を示すフローチャートである。
【００６１】
まず、スレーブＫＶＭスイッチ４０のコントローラ４２は、カスケード接続が確立しているか否かを判別する（ステップＳ３１）。上述したように、コントローラ４２は、カスケード接続を確立する前にカスケードイネーブルリクエストをマスタＫＶＭスイッチ３０に送信しているので（図８のステップＳ１８）、カスケードイネーブルリクエストをマスタＫＶＭスイッチ３０に送信しているか否かに基づいてカスケード接続が確立しているか否かを判断することができる。
【００６２】
カスケード接続が確立している場合には（ステップＳ３１でＹＥＳ）、コントローラ４２は、８バイトのデータをマスタＫＶＭスイッチ３０から受信したか否かを判別する（ステップＳ３２）。８バイトのデータをマスタＫＶＭスイッチ３０から受信していない場合には（ステップＳ３２でＮＯ）、本処理を終了する。一方、８バイトのデータをマスタＫＶＭスイッチ３０から受信した場合には（ステップＳ３２でＹＥＳ）、コントローラ４２は、受信したデータの２バイト目が「０」であるか、又は制御データ識別子（８０ｈ）であるかを判別する（ステップＳ３３）。ここでは、コントローラ４２は、マスタＫＶＭスイッチ３０からキーコードデータが送られたのか又は制御データが送られたのかを判断している。
【００６３】
ステップＳ３３において、マスタＫＶＭスイッチ３０から受信したデータの２バイト目が制御データ識別子である場合には、コントローラ４２は、受信したデータの１バイト目及び／又は３バイト目から８バイト目の制御情報に応じた処理を実行し、この受信したデータをスレーブＫＶＭスイッチ４０に接続されているコンピュータに送信しない（ステップＳ３４）。この場合、受信したデータは、スレーブＫＶＭスイッチ４０用の制御データであるので、受信したデータがスレーブＫＶＭスイッチ４０に接続されているコンピュータに送信されると、当該コンピュータが誤動作を引き起こすためである。
【００６４】
ステップＳ３３において、マスタＫＶＭスイッチ３０から受信したデータの２バイト目が「０」である場合には、コントローラ４２は、受信したデータをスレーブＫＶＭスイッチ４０に接続されているコンピュータに送信し（ステップＳ３５）、本処理を終了する。
【００６５】
カスケード接続が確立していない場合には（ステップＳ３１でＮＯ）、コントローラ４２は、８バイトのデータをマスタＫＶＭスイッチ３０から受信したか否かを判別する（ステップＳ３６）。８バイトのデータをマスタＫＶＭスイッチ３０から受信していない場合には（ステップＳ３６でＮＯ）、本処理を終了する。
【００６６】
８バイトのデータをマスタＫＶＭスイッチ３０から受信した場合には（ステップＳ３６でＹＥＳ）、コントローラ４２は、受信したデータの２バイト目が「０」であるか、又は制御データ識別子（８０ｈ）であるかを判別する（ステップＳ３７）。
【００６７】
ステップＳ３７において、マスタＫＶＭスイッチ３０から受信したデータの２バイト目が制御データ識別子である場合には、コントローラ４２は、受信したデータを無効な制御データとして廃棄し、この受信したデータをスレーブＫＶＭスイッチ４０に接続されているコンピュータに送信しない（ステップＳ３８）。この場合、カスケード接続が確立していないので、スレーブＫＶＭスイッチ４０が受信したデータを処理できないためである。また、受信したデータがスレーブＫＶＭスイッチ４０に接続されているコンピュータに送信されると、当該コンピュータが誤動作を引き起こすためである。
【００６８】
ステップＳ３７において、マスタＫＶＭスイッチ３０から受信したデータの２バイト目が「０」である場合には、コントローラ４２は、受信したデータをスレーブＫＶＭスイッチ４０に接続されているコンピュータに送信し（ステップＳ３９）、本処理を終了する。
【００６９】
上記実施の形態では、マスタＫＶＭスイッチ３０とスレーブＫＶＭスイッチ４０との間のインターフェースとして、ＵＳＢインターフェースを利用したが、I2C（HID Over I2C）のようなマスタ／スレーブ関係を持つインターフェースも利用できる。
【００７０】
以上説明したように、本実施の形態によれば、マスタＫＶＭスイッチ３０のコントローラ３２が制御データのデータフォーマットをキーコードデータのデータフォーマットと同一にし、マスタＫＶＭスイッチ３０からの制御情報の送信にキーコードデータのデータフォーマットを利用している。これにより、スレーブＫＶＭスイッチ４０のコントローラ４２が、キーコードデータと同様に制御データを受信することができるので、従来のように、スレーブＫＶＭスイッチ４０がＵＳＢのセットアップリクエストを定期的にマスタＫＶＭスイッチ３０に送信する必要がなくなる。
【００７１】
また、本実施の形態では、スレーブＫＶＭスイッチ４０の制御データを送信する専用のＵＳＢポート（ＵＳＢデバイス）をマスタＫＶＭスイッチ３及びスレーブＫＶＭスイッチ４に新たに設ける必要がない。また、多くのＵＳＢデバイスに対応するコントローラをマスタＫＶＭスイッチ３及びスレーブＫＶＭスイッチ４に新たに設ける必要がない。従って、マスタＫＶＭスイッチ３及びスレーブＫＶＭスイッチ４の製造コストを抑制できる。
【００７２】
尚、本発明は、上述した実施の形態に限定されるものではなく、その要旨を逸脱しない範囲内で種々変形して実施することが可能である。
【符号の説明】
【００７３】
２１，２２  コンピュータ
３０  マスタＫＶＭスイッチ
３１，３４ａ〜３４ｄ，４１，４４ａ〜４４ｄ  ＵＳＢポート
３２，４２  コントローラ
３３，４３  切替スイッチ
３５，４５  ＯＳＤコントローラ
３６，４６  ボタン群
４０  スレーブＫＶＭスイッチ
５０  キーボード及びマウス
１００  システム
【図１】
0006388816.tif 000002
【図２】
0006388816.tif 000003
【図３】
0006388816.tif 000004
【図４】
0006388816.tif 000005
【図５】
0006388816.tif 000006
【図６】
0006388816.tif 000007
【図７】
0006388816.tif 000008
【図８】
0006388816.tif 000009
【図９】
0006388816.tif 000010
【図１０】
0006388816.tif 000011