(57)【要約】【課題】  コンソールの種類に応じてコンピュータの操作性を向上することができるＫＶＭスイッチを提供する。【解決手段】  ＫＶＭスイッチは、コンソールによる操作対象のコンピュータを複数のコンピュータから選択するＫＶＭスイッチにおいて、前記コンソールによる操作に関する操作情報を前記コンソールから受信する第１通信部と、前記操作情報を前記複数のコンピュータにそれぞれ送信する複数の第２通信部とを有し、前記第１通信部は、前記コンソールと前記複数のコンピュータの間の通信の設定に関する設定情報を前記コンソールから取得して前記複数の第２通信部にそれぞれ出力し、前記複数の第２通信部は、前記設定情報を記憶し、前記設定情報に基づき前記複数のコンピュータとの間の通信の設定処理をそれぞれ行う。【選択図】図１
2019185316.tif 000002
【特許請求の範囲】
【請求項１】
コンソールによる操作対象のコンピュータを複数のコンピュータから選択するＫＶＭスイッチにおいて、
前記コンソールによる操作に関する操作情報を前記コンソールから受信する第１通信部と、
前記操作情報を前記複数のコンピュータにそれぞれ送信する複数の第２通信部とを有し、
前記第１通信部は、前記コンソールと前記複数のコンピュータの間の通信の設定に関する設定情報を前記コンソールから取得して前記複数の第２通信部にそれぞれ出力し、
前記複数の第２通信部は、前記設定情報を記憶し、前記設定情報に基づき前記複数のコンピュータとの間の通信の設定処理をそれぞれ行うことを特徴とするＫＶＭスイッチ。
【請求項２】
前記複数の第２通信部は、前記操作情報が格納されるパケットのサイズを前記設定情報に基づき設定し、前記パケットを前記複数のコンピュータにそれぞれ送信することを特徴とする請求項１に記載のＫＶＭスイッチ。
【請求項３】
前記複数の第２通信部は、前記複数のコンピュータに前記設定情報をそれぞれ送信することを特徴とする請求項１または２に記載のＫＶＭスイッチ。
【請求項４】
前記第１通信部は、前記コンソールから取得した前記設定情報を記憶し、前記ＫＶＭスイッチが起動されたとき、起動前に記憶した前記設定情報と新たに取得した前記設定情報を比較し、起動前に記憶した前記設定情報と新たに取得した前記設定情報が一致しない場合、新たに取得した前記設定情報を記憶して前記複数の第２通信部に出力し、
前記複数の第２通信部は、新たに取得した前記設定情報を記憶することを特徴とする請求項１乃至３の何れかに記載のＫＶＭスイッチ。
【請求項５】
前記第１通信部は、前記コンソールから取得した前記設定情報を記憶し、前記コンソールが前記ＫＶＭスイッチに再接続されたとき、再接続前に記憶した前記設定情報と新たに取得した前記設定情報を比較し、再接続前に記憶した前記設定情報と新たに取得した前記設定情報が一致しない場合、新たに取得した前記設定情報を記憶して前記複数の第２通信部に出力し、
前記複数の第２通信部は、新たに取得した前記設定情報を記憶することを特徴とする請求項１乃至３の何れかに記載のＫＶＭスイッチ。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、ＫＶＭ（Ｋ：キーボード、Ｖ：ビデオ、Ｍ：マウス）スイッチに関する。
【背景技術】
【０００２】
ＫＶＭスイッチは、キーボードやマウスなどのコンソールと、複数のコンピュータとに接続され、ユーザがコンソールを用いて操作するコンピュータを切り替えることにより、１つのコンソールで任意のコンピュータを操作することを可能とする（例えば、特許文献１及び２参照）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】特開２０１５−２３０６８０号公報
【特許文献２】特開２０１１−３９９１２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００４】
例えばＵＳＢ（Universal Serious Bus）に準拠するコンソールには、その種類に応じた固有の設定や構成に関する情報がディスクリプタとして保持される。しかし、ＫＶＭスイッチは、コンソールの種類によらず、予め定められた通信設定に基づいてコンピュータと通信する。
【０００５】
このため、ＫＶＭスイッチは、例えば、コンソールの機能を制限し、また、コンソールから受信した操作情報のフォーマットを変換する。したがって、この機能制限やＫＶＭスイッチの変換処理の所要時間によって、コンソールによるコンピュータの操作性が低下するおそれがある。
【０００６】
そこで本発明は上記の課題に鑑みてなされたものであり、コンソールの種類に応じてコンピュータの操作性を向上することができるＫＶＭスイッチを提供することを目的とする。
【課題を解決するための手段】
【０００７】
本明細書に記載のＫＶＭスイッチは、コンソールによる操作対象のコンピュータを複数のコンピュータから選択するＫＶＭスイッチにおいて、前記コンソールによる操作に関する操作情報を前記コンソールから受信する第１通信部と、前記操作情報を前記複数のコンピュータにそれぞれ送信する複数の第２通信部とを有し、前記第１通信部は、前記コンソールと前記複数のコンピュータの間の通信の設定に関する設定情報を前記コンソールから取得して前記複数の第２通信部にそれぞれ出力し、前記複数の第２通信部は、前記設定情報を記憶し、前記設定情報に基づき前記複数のコンピュータとの間の通信の設定処理をそれぞれ行う。
【発明の効果】
【０００８】
本発明のＫＶＭスイッチによると、コンソールの種類に応じてコンピュータの操作性を向上することができる。
【図面の簡単な説明】
【０００９】
【図１】実施例のＫＶＭスイッチを含むコンピュータシステムの構成図である。
【図２】ディスクリプタの一例を示す構成図である。
【図３】マウス操作データを含むパケットのフォーマットの一例を示す図である。
【図４】マウス、ＫＶＭスイッチ、及びサーバの間の通信の一例を示すシーケンス図である。
【図５】サーバ制御回路におけるマウス操作データの処理の一例を示すフローチャートである。
【図６】ＫＶＭスイッチの起動時の処理の一例を示すフローチャートである。
【図７】ＫＶＭスイッチにマウスが再接続された時の処理の一例を示すフローチャートである。
【図８】マウスの専用ドライバがサーバにインストールされた場合のマウス、ＫＶＭスイッチ、及びサーバの通信の一例を示すシーケンス図である。
【発明を実施するための形態】
【００１０】
図１は、実施例のＫＶＭスイッチ２を含むコンピュータシステム１の構成図である。コンピュータシステム１は、コンピュータの一例である複数のサーバ５ａ，５ｂと、ＫＶＭスイッチ２と、マウス３と、キーボード４とを備えている。ＫＶＭスイッチ２は、一例としてＵＳＢインターフェースを介して、サーバ５ａ，５ｂ、マウス３、及びキーボード４と接続されている。
【００１１】
マウス３及びキーボード４は、コンソールの一例であり、ユーザがサーバ５ａ，５ｂを操作するために用いられる。ＫＶＭスイッチ２は、ユーザがコンソールを用いて操作するサーバ５ａ，５ｂを切り替えることにより、１セットのマウス３及びキーボード４で任意のサーバ５ａ，５ｂの操作を可能とする。
【００１２】
すなわち、ＫＶＭスイッチ２は、マウス３及びキーボード４による操作対象のサーバ５ａ，５ｂを選択する。ここで、ユーザは、例えば、ＫＶＭスイッチ２のＯＳＤ（On-Screen Display）機能により操作対象のサーバ５ａ，５ｂを選択することができる。なお、ＫＶＭスイッチ２に接続されるサーバ５ａ，５ｂの台数は限定されない。また、サーバ５ａ，５ｂに代えて、パーソナルコンピュータがＫＶＭスイッチ２に接続されてもよい。
【００１３】
ＫＶＭスイッチ２は、装置制御回路１０と、複数のサーバ制御回路２０ａ，２０ｂとを備えている。装置制御回路１０は第１通信部の一例であり、サーバ制御回路２０ａ，２０ｂは複数の第２通信部の一例である。なお、ビデオ信号に関するＫＶＭスイッチ２の構成の図示は省略する。
【００１４】
装置制御回路１０は、装置制御モジュール１３と、コンソールモジュール１１と、メモリ１２とを有する。装置制御回路１０としては、例えばマイクロコンピュータが挙げられ、装置制御モジュール１３及びコンソールモジュール１１はＣＰＵ（Central Processing Unit）などの演算処理回路などを含む。
【００１５】
また、メモリ１２としては、例えば、フラッシュメモリなどの不揮発性メモリが挙げられる。装置制御モジュール１３及びコンソールモジュール１１は、メモリ１２に記憶されたプログラムに従って動作する。
【００１６】
コンソールモジュール１１は、ＵＳＢホストとしてマウス３及びキーボード４と通信する。つまり、コンソールモジュール１１は、マウス３及びキーボード４に対して、仮想的なサーバ５ａ，５ｂとして振る舞う。
【００１７】
コンソールモジュール１１は、ＫＶＭスイッチ２にマウス３またはキーボード４が物理的に接続されたとき、マウス３またはキーボード４からディスクリプタを取得する。より具体的には、コンソールモジュール１１は、マウス３またはキーボード４との通信を開始するためのネゴシエーション処理、つまりエニュメレーションにおいてディスクリプタを取得する。
【００１８】
ディスクリプタは、例えば、マウス３及びキーボード４の内部の各ＲＯＭ（Read Only Memory）にそれぞれ記憶され、マウス３及びキーボード４の種類に応じた固有の設定や構成に関する情報をプログラミング言語の構造体の形式で含む。
【００１９】
図２は、ディスクリプタの一例を示す構成図である。ディスクリプタには、例えば、デバイスディスクリプタ３１、コンフィグレーションディスクリプタ３２、インターフェースディスクリプタ３３、ＨＩＤ（Human Interface Device）ディスクリプタ３４、エンドポイントディスクリプタ３５、及びレポートディスクリプタ３６が含まれる。
【００２０】
デバイスディスクリプタ３１には、プロダクトＩＤやデバイスＩＤなどの基本情報が記述されている。コンフィグレーションディスクリプタ３２には、インターフェースの個数、又は消費電流などが記述されている。
【００２１】
インターフェースディスクリプタ３３には、インターフェースが使うエンドポイント数、サポートするクラス、どのようなデバイスのプロトコルであるかの情報（マウス、キーボードなど）等が記述されている。ＨＩＤディスクリプタ３４には、カントリーコード、レポートディスクリプタ３６のサイズ等のＨＩＤ通信用のディスクリプタが記述されている。
【００２２】
エンドポイントディスクリプタ３５には、デバイスの送信データ数、データ送信間隔、バルクやインタラプトなどの転送形態等が記述されている。レポートディスクリプタ３６には、ＨＩＤデバイス（マウス３やキーボード４）の送信データフォーマット、データの使い方が記述されている。
【００２３】
このように、ディスクリプタには、マウス３またはキーボード４とサーバ５ａ，５ｂの間の通信の設定に関する設定情報が含まれる。
【００２４】
再び図１を参照すると、コンソールモジュール１１は、マウス３から、ユーザがマウス３を操作することにより入力したマウス操作データを受信する。また、コンソールモジュール１１は、キーボード４から、ユーザがキーボード４を操作することにより入力したキーボード操作データを受信する。マウス操作データ及びキーボード操作データは、コンソールによる操作に関する操作情報の一例である。コンソールモジュール１１は、ディスクリプタ、マウス操作データ、及びキーボード操作データを装置制御モジュール１３に出力する。
【００２５】
装置制御モジュール１３は、ＫＶＭスイッチ２の動作を制御する。装置制御モジュール１３は、コンソールモジュール１１から入力されたディスクリプタをメモリ１２に書き込み、メモリ１２はディスクリプタを記憶する。
【００２６】
例えば、装置制御モジュール１３は、マウス３またはキーボード４がＫＶＭスイッチ２に再接続されたとき、あるいはＫＶＭスイッチ２が起動したとき、新たに取得したディスクリプタをメモリ１２に記憶済みのディスクリプタと比較する。装置制御モジュール１３は、比較の結果、各ディスクリプタが一致しない場合、新たに取得したディスクリプタをメモリ１２に記憶して各サーバ制御回路２０ａ，２０ｂに出力する。これにより、メモリ１２内のディスクリプタが書き換えられる。
【００２７】
また、装置制御モジュール１３は、比較の結果、各ディスクリプタが一致した場合、新たに取得したディスクリプタを、記憶も送信もすることなく廃棄する。
【００２８】
また、装置制御モジュール１３は、ＯＳＤ機能によりユーザからマウス３及びキーボード４による操作対象のサーバ５ａ，５ｂの指定を受け付ける。装置制御モジュール１３は、指定されたサーバ５ａ，５ｂに接続されたサーバ制御回路２０ａ，２０ｂを選択し、そのサーバ制御回路２０ａ，２０ｂにマウス操作データ及びキーボード操作データを出力する。これにより、ＫＶＭスイッチ２は、マウス３及びキーボード４による操作対象のサーバ５ａ，５ｂを切り替える。
【００２９】
サーバ制御回路２０ａ，２０ｂは、サーバモジュール２２ａ，２２ｂと、メモリ２１ａ，２１ｂとを有する。サーバ制御回路２０ａ，２０ｂしては、例えばマイクロコンピュータが挙げられ、サーバモジュール２２ａ，２２ｂはＣＰＵなどの演算処理回路などを含む。
【００３０】
また、メモリ２１ａ，２１ｂとしては、例えば、フラッシュメモリなどの不揮発性メモリが挙げられる。サーバモジュール２２ａ，２２ｂは、メモリ２１ａ，２１ｂに記憶されたプログラムに従って動作する。
【００３１】
サーバモジュール２２ａ，２２ｂは、ＵＳＢデバイスとしてサーバ５ａ，５ｂと通信する。つまり、サーバモジュール２２ａ，２２ｂは、サーバ５ａ，５ｂに対して、仮想的なマウス３及びキーボード４として振る舞う。サーバモジュール２２ａ，２２ｂは、サーバ５ａ，５ｂと常に通信を行うため、ユーザが操作対象のサーバ５ａ，５ｂを変更した場合でも、変更前の操作対象のサーバ５ａ，５ｂとＫＶＭスイッチ２の通信の確立状態が維持される。
【００３２】
サーバモジュール２２ａ，２２ｂは、ＫＶＭスイッチ２にマウス３またはキーボード４が物理的に接続されたとき、サーバ５ａ，５ｂとの通信を開始するためのネゴシエーション処理、つまりエニュメレーションを行う。サーバモジュール２２ａ，２２ｂは、エニュメレーションの後、装置制御モジュール１３から入力されたマウス操作データ及びキーボード操作データをサーバ５ａ，５ｂに送信する。
【００３３】
これにより、マウス操作データ及びキーボード操作データは、マウス３及びキーボード４からＫＶＭスイッチ２を介してサーバ５ａ，５ｂに送信されるため、マウス３及びキーボード４からサーバ５ａ，５ｂを操作することが可能となる。
【００３４】
サーバモジュール２２ａ，２２ｂは、装置制御モジュール１３から入力されたディスクリプタをメモリ２１ａ，２１ｂに書き込み、メモリ２１ａ，２１ｂはディスクリプタを記憶する。サーバモジュール２２ａ，２２ｂは、ディスクリプタに基づきサーバ５ａ，５ｂとの間の通信の設定処理を行う。ディスクリプタには、マウス３またはキーボード４とサーバ５ａ，５ｂの間の通信の設定に関する設定情報が含まれるため、サーバモジュール２２ａ，２２ｂは、ディスクリプタによりサーバ５ａ，５ｂとの通信設定を最適な状態とすることができる。
【００３５】
例えば、サーバモジュール２２ａ，２２ｂは、サーバ５ａ，５ｂに送信するマウス操作データを含むパケットのフォーマットを、ディスクリプタに基づき送信元のマウス３の種類に応じた適切なフォーマットに設定することができる。
【００３６】
図３は、マウス操作データを含むパケットのフォーマットの一例を示す図である。マウス３から出力されるマウス操作データのパケットは、例えば、マウスの左右のスイッチのうち、押下されたスイッチを示すスイッチデータ４１と、Ｘ方向の移動量を示すＸ座標データ４２と、Ｙ方向の移動量を示すＹ座標データ４３と、ホイールの回転量を示すホイールデータ４４とを含む。
【００３７】
スイッチデータ４１及びホイールデータ４４の各サイズは、例えば１バイトであり、Ｘ座標データ４２及びＹ座標データ４３の各サイズは、例えば２バイトである。したがってパケットのサイズは合計で６バイトとなる。
【００３８】
仮に、ＫＶＭスイッチ２からサーバ５ａ，５ｂに送信されるパケットのフォーマットが、ディスクリプタとは無関係に、ホイールデータ４４に対応していないものに予め設定されている場合、ＫＶＭスイッチ２は、マウスから入力されたマウス操作データからホイールデータ４４を削除し、あるいはホイールデータ４４を別のデータに変換して、サーバ５ａ，５ｂに出力する必要がある。この場合、マウス３のホイールが使用できないという機能制限に加え、ＫＶＭスイッチ２のフォーマットの変換処理の所要時間によって、マウス３によるサーバ５ａ，５ｂの操作性が低下するおそれがある。
【００３９】
しかし、本例のＫＶＭスイッチ２は、ディスクリプタを用いてサーバ５ａ，５ｂとの通信を設定するため、マウス３から受信したパケットをそのままサーバ５ａ，５ｂに送信することができる。このため、ＫＶＭスイッチ２は、パケットのサイズが６バイトであれば、６バイトのパケットをそのままサーバ５ａ，５ｂに送信し、パケットのサイズが８バイトであれば、８バイトのパケットをそのままサーバ５ａ，５ｂに送信することができる。なお、これは、キーボード操作データを含むパケットについても同様である。
【００４０】
このように、サーバモジュール２２ａ，２２ｂは、マウス操作データまたはキーボード操作データが格納されるパケットのサイズをディスクリプタに基づき設定し、パケットをサーバ５ａ，５ｂに送信する。これにより、サーバ５ａ，５ｂは、マウス３またはキーボード４の種類に応じた適切なサイズのパケットを受信することができるため、サーバ５ａ，５ｂの操作性を向上することができる。
【００４１】
また、サーバモジュール２２ａ，２２ｂは、例えば、ディスクリプタに基づいて、サーバ５ａ，５ｂとの通信におけるエンドポイント数を決定するため、マウス３及びキーボード４の種類に応じてエンドポイントが増減する。これにより、サーバ５ａ，５ｂは、マウス３またはキーボード４の種類に応じた適切な数のエンドポイントによりマウス３またはキーボード４と通信することができるため、サーバ５ａ，５ｂの操作性を向上することができる。
【００４２】
このように、サーバ制御回路２０ａ，２０ｂは、装置制御回路１０から入力されたディスクリプタを記憶し、マウス３及びキーボード４から取得されたディスクリプタに基づきサーバ５ａ，５ｂとの間の通信の設定処理を行う。このため、サーバ５ａ，５ｂとマウス３及びキーボード４は、ＫＶＭスイッチ２を介さずに直接的に通信する場合と同様に通信することができる。したがって、ＫＶＭスイッチ２は、マウス３及びキーボード４の種類に応じてサーバ５ａ，５ｂの操作性を向上することができる。
【００４３】
また、サーバモジュール２２ａ，２２ｂは、サーバ５ａ，５ｂにディスクリプタを送信する。このため、サーバ５ａ，５ｂも、ディスクリプタに基づいてサーバモジュール２２ａ，２２ｂとの通信を設定することができる。これにより、サーバ５ａは、マウス３と直接的に接続されている場合と同様の形態でＫＶＭスイッチ２と通信することができるため、サーバ５ａ，５ｂの操作性をさらに向上することができる。
【００４４】
次にＫＶＭスイッチ２の動作例を説明する。以下の例では、マウス３とサーバ５ａ，５ｂの間の通信に関する動作を挙げるが、キーボード４とサーバ５ａ，５ｂの間に通信についても同様の動作が行われる。
【００４５】
図４は、マウス３、ＫＶＭスイッチ２、及びサーバ５ａの間の通信の一例を示すシーケンス図である。本例では、マウス３による操作対象として、サーバ５ａが選択されている場合を挙げるが、サーバ５ｂが選択されている場合、サーバ制御回路２０ａがサーバ制御回路２０ｂに入れ替わるが、通信動作はサーバ５ａの場合と同様である。
【００４６】
ＫＶＭスイッチ２は、マウス３及びサーバ５ａが所定のＵＳＢポートに物理的に接続された状態で起動（電源オンまたはリセット）される。ＫＶＭスイッチ２が起動すると、装置制御回路１０は、マウス３との間でエニュメレーションを行う（符号Ｓ１）。装置制御回路１０は、エニュメレーションを行うことによりマウス３の認識処理を行う。これにより、装置制御回路１０は、マウス３との間でリンクを確立し、マウス３からマウス操作データを受信することができる。
【００４７】
装置制御回路１０は、エニュメレーションの実行中にマウス３からディスクリプタを取得する（符号Ｓ２）。装置制御回路１０は、エニュメレーションの完了後、ディスクリプタをメモリ１２に記憶する（符号Ｓ３）。
【００４８】
このように、装置制御回路１０は、ディスクリプタをメモリ１２に記憶するため、後述するように、ＫＶＭスイッチ２の起動時、またはマウス３の再接続時、新たに取得したディスクリプタと記憶済みのディスクリプタを比較することにより、マウス３の種類が変更されたか否かを判別することができる。
【００４９】
次に、装置制御回路１０は、記憶済みのディスクリプタをサーバ制御回路２０ａに出力する（符号Ｓ４）。サーバ制御回路２０ａは、装置制御回路１０から入力されたディスクリプタをメモリ２１ａに記憶する（符号Ｓ５）。このため、装置制御回路１０は、同一種類のマウス３がＫＶＭスイッチ２に再接続された場合、記憶済みのディスクリプタを用いることができる。
【００５０】
次に、サーバ制御回路２０ａは、サーバ５ａとの間でエニュメレーションを行う（符号Ｓ６）。サーバ制御回路２０ａは、エニュメレーションを行うことによりサーバ５ａの認識処理を行う。これにより、サーバ制御回路２０ａは、サーバ５ａとの間でリンクを確立し、サーバ５ａにマウス操作データを送信することができる。
【００５１】
サーバ制御回路２０ａは、エニュメレーションの実行中、記憶済みのディスクリプタに基づいてサーバ５ａとの通信の設定処理を行う（符号Ｓ７）。これにより、例えば、マウス操作データを含むパケットのサイズやエンドポイント数などが、マウス３の種類に応じた最適な値に設定される。このため、ＫＶＭスイッチ２は、マウス３の種類に応じてサーバ５ａの操作性を向上することができる。
【００５２】
また、サーバ制御回路２０ａは、エニュメレーションの実行中、記憶済みのディスクリプタをサーバ５ａに送信する（符号Ｓ８）。このため、サーバ５ａも、ディスクリプタに基づいてサーバ制御回路２０ａとの通信を設定することができる。これにより、サーバ５ａは、マウス３と直接的に接続されている場合と同様の形態でＫＶＭスイッチ２と通信することができるため、サーバ５ａの操作性をさらに向上することができる。
【００５３】
次に、ユーザがマウス３により操作入力を行うと（符号Ｓ９）、マウス３は、マウス操作データ（パケット）をＫＶＭスイッチ２に送信する（符号Ｓ１０）。装置制御回路１０は、マウス３からマウス操作データを受信してサーバ制御回路２０ａに出力する（符号Ｓ１１）。サーバ制御回路２０ａは、装置制御回路１０から入力されたマウス操作データをサーバ５ａに送信する（符号Ｓ１２）。サーバ５ａは、マウス操作データに基づいてマウス３の操作を処理する（符号Ｓ１３）。
【００５４】
ＫＶＭスイッチ２は、マウス３から取得したディスクリプタに基づきサーバ５ａとの通信設定を行っているため、マウス３から送信されたパケットを変換することなく、サーバ５ａに送信することができる。このため、サーバ５ａの操作性が向上する。このようにして、マウス３、ＫＶＭスイッチ２、及びサーバ５ａの間の通信は行われる。
【００５５】
図５は、サーバ制御回路２０ａ，２０ｂにおけるマウス操作データの処理の一例を示すフローチャートである。サーバモジュール２２ａ，２２ｂは、装置制御モジュール１３からマウス操作データが入力されているか否かを判定する（ステップＳｔ１）。サーバモジュール２２ａ，２２ｂは、マウス操作データが入力されていない場合（ステップＳｔ１のＮｏ）、再びステップＳｔ１の処理を行う。
【００５６】
また、サーバモジュール２２ａ，２２ｂは、マウス操作データが入力されている場合（ステップＳｔ１のＹｅｓ）、マウス操作データを、例えば、メモリ１２内に割り当てられたバッファに蓄積する（ステップＳｔ２）。次に、サーバモジュール２２ａ，２２ｂは、蓄積済みのマウス操作データが１パケット分のデータ量に達したか否かを判定する（ステップＳｔ３）。サーバモジュール２２ａ，２２ｂは、蓄積済みのマウス操作データが１パケット分のデータ量未満である場合（ステップＳｔ３のＮｏ）、再びステップＳｔ１の処理を行う。
【００５７】
また、サーバモジュール２２ａ，２２ｂは、蓄積済みのマウス操作データが１パケット分のデータ量に達している場合（ステップＳｔ３のＹｅｓ）、マウス操作データを含むパケットをサーバ５ａ，５ｂに送信する（ステップＳｔ４）。このようにして、サーバ制御回路２０ａ，２０ｂはマウス操作データの処理を行う。
【００５８】
図６は、ＫＶＭスイッチ２の起動時の処理の一例を示すフローチャートである。本処理は、例えば、ＫＶＭスイッチ２の電源がオンになったとき、あるいはＫＶＭスイッチ２がリセットされたときに行われる。
【００５９】
装置制御回路１０は、エニュメレーションを実行し、マウス３からディスクリプタを取得する（ステップＳｔ１１）。次に、装置制御回路１０は、ＫＶＭスイッチ２の起動前にメモリ１２に記憶したディスクリプタをメモリ１２から読み出す（ステップＳｔ１２）。次に、装置制御回路１０は、メモリ１２から読み出したディスクリプタと新たに取得したディスクリプタを比較する（ステップＳｔ１３）。
【００６０】
装置制御回路１０は、各ディスクリプタが一致する場合（ステップＳｔ１４のＹｅｓ）、ＫＶＭスイッチ２に接続中のマウス３が、起動前に接続されていたマウス３と同一種類であると判断し、マウス３から新たに取得したディスクリプタを廃棄する（ステップＳｔ１９）。次に、装置制御回路１０は、メモリ１２に記憶済みのディスクリプタをサーバ５ａ，５ｂに送信する（ステップＳｔ１８）。
【００６１】
また、装置制御回路１０は、各ディスクリプタが一致しない場合（ステップＳｔ１４のＮｏ）、ＫＶＭスイッチ２に接続中のマウス３が、起動前に接続されていたマウス３と異なる種類であると判断し、新たに取得したディスクリプタをメモリ１２に上書きする（ステップＳｔ１５）。これにより、メモリ１２内のディスクリプタが更新される。
【００６２】
次に、装置制御回路１０は、新たに取得したディスクリプタを各サーバ制御回路２０ａ，２０ｂに出力する（ステップＳｔ１６）。サーバ制御回路２０ａ，２０ｂは、装置制御回路１０から入力されたディスクリプタをメモリ２１ａ，２１ｂに上書きする（ステップＳｔ１７）。これにより、メモリ２１ａ，２１ｂ内のディスクリプタが更新される。したがって、サーバ制御回路２０ａ，２０ｂは、新たに取得したディスクリプタに基づいてサーバ５ａ，５ｂとの通信の設定処理を行うことができる。
【００６３】
次に、サーバ制御回路２０ａ，２０ｂは、サーバ５ａ，５ｂにディスクリプタを送信する（ステップＳｔ１８）。このようにして、ＫＶＭスイッチ２の起動時の処理は行われる。
【００６４】
この処理において、装置制御回路１０は、起動前に記憶したディスクリプタと新たに取得したディスクリプタを比較し、各ディスクリプタが一致しない場合、新たに取得したディスクリプタを記憶して各サーバ制御回路２０ａ，２０ｂに出力する。各サーバ制御回路２０ａ，２０ｂは、新たに取得したディスクリプタを記憶する。
【００６５】
このため、ＫＶＭスイッチ２は、起動時、起動前に記憶したディスクリプタと新たに取得したディスクリプタの比較結果によりマウス３の種類が変更されたか否かを判定し、マウス３の種類が変更されたとき、ディスクリプタを更新することができる。そして、サーバ５ａ，５ｂは、更新されたディスクリプタをＫＶＭスイッチ２から受信し、変更後のマウス３の種類に応じた通信を行うことができる。
【００６６】
図７は、ＫＶＭスイッチ２にマウス３が再接続された時の処理の一例を示すフローチャートである。図７において、図６と共通する処理には同一の符号を付し、その説明は省略する。
【００６７】
装置制御回路１０は、ステップＳｔ１４の処理を行うことにより、マウス３の再接続の前後でマウス３の種類が変更されたか否かを判定する。装置制御回路１０は、マウス３の種類が変更されていなければ（ステップＳｔ１４のＹｅｓ）、マウス３から新たに取得したディスクリプタを廃棄する（ステップＳｔ１９）。このとき、ディスクリプタに変更はないため、サーバ５ａ，５ｂにディスクリプタを送信する必要がない。
【００６８】
また、マウス３の種類が変更されていれば（ステップＳｔ１４のＮｏ）、各メモリ１２，２１ａ，２１ｂのディスクリプタは、マウス３から新たに取得したディスクリプタにより上書きされる（ステップＳｔ１５，Ｓｔ１７）。サーバ制御回路２０ａ，２０ｂは、ディスクリプタが変更されたため、サーバ５ａ，５ｂと再度エニュメレーションを行うようにサーバ５ａ，５ｂとのリンクを一時的に切断する（ステップＳｔ２０）。次に、サーバ制御回路２０ａ，２０ｂは、新たに取得したディスクリプタをサーバ５ａ，５ｂに送信する（ステップＳｔ２１）。
【００６９】
この処理において、装置制御回路１０は、マウス３の再接続前に記憶したディスクリプタと新たに取得したディスクリプタを比較し、各ディスクリプタが一致しない場合、新たに取得したディスクリプタを記憶して各サーバ制御回路２０ａ，２０ｂに出力する。各サーバ制御回路２０ａ，２０ｂは、新たに取得したディスクリプタを記憶する。
【００７０】
このため、ＫＶＭスイッチ２は、マウス３の再接続時、再接続前に記憶したディスクリプタと新たに取得したディスクリプタの比較結果によりマウス３の種類が変更されたか否かを判定し、マウス３の種類が変更されたとき、ディスクリプタを更新することができる。そして、サーバ５ａ，５ｂは、更新されたディスクリプタをＫＶＭスイッチ２から受信し、変更後のマウス３の種類に応じた通信を行うことができる。
【００７１】
これまで、マウス操作データまたはキーボード操作データの送受信について述べたが、ＫＶＭスイッチ２は、マウス３から取得したディスクリプタを用いて、マウス３またはキーボード４と、その専用ドライバがインストールされたサーバ５ａ，５ｂとの間でコマンド及びレスポンスを送受信することもできる。
【００７２】
図８は、マウス３の専用ドライバ９がサーバ５ａにインストールされた場合のマウス３、ＫＶＭスイッチ２、及びサーバ５ａの通信の一例を示すシーケンス図である。本処理は、図４に示されるシーケンスの実行後に実行される。
【００７３】
サーバ５ａは、専用ドライバ９によりコマンドを生成する（符号Ｓ２１）。コマンドには、例えば、マウス３に対する各種の設定指示などが含まれる。サーバ５ａは、コマンドをＫＶＭスイッチ２に送信する（符号Ｓ２２）。
【００７４】
サーバ制御回路２０ａは、サーバ５ａから受信したコマンドを装置制御回路１０に出力する（符号Ｓ２３）。次に、装置制御回路１０は、サーバ制御回路２０ａから入力されたコマンドをマウス３に送信する（符号Ｓ２４）。このとき、サーバ制御回路２０ａは、予めディスクリプタによる通信設定を行っているため、コマンドのフォーマットを変換することなく、装置制御回路１０に出力することができる。
【００７５】
マウス３は、ＫＶＭスイッチ２からコマンドを受信すると、コマンドの処理を行い（符号Ｓ２５）、コマンドに応じたレスポンスを生成する（符号Ｓ２６）。マウス３は、レスポンスを装置制御回路１０に送信する（符号Ｓ２７）。
【００７６】
装置制御回路１０は、マウス３からレスポンスを受信すると、サーバ制御回路２０ａに出力する（符号Ｓ２８）。次に、サーバ制御回路２０ａは、レスポンスをサーバ５ａに送信する（符号Ｓ２９）。このとき、サーバ制御回路２０ａは、予めディスクリプタによる通信設定を行っているため、レスポンスのフォーマットを変換することなく、サーバ５ａに出力することができる。
【００７７】
サーバ５ａは、レスポンスを受信すると、レスポンスの処理を行う（符号Ｓ３０）。このようにして、マウス３、ＫＶＭスイッチ２、及びサーバ５ａは通信する。
【００７８】
このように、マウス３とサーバ５ａが、専用ドライバ９を用いてコマンド及びレスポンスを送受信することにより、サーバ５ａからマウス３に対し各種の設定が可能となるため、マウス３によるサーバ５ａの操作性がより向上する。なお、本例では、マウス３の専用ドライバ９を挙げたが、キーボード４の専用ドライバがサーバ５ａにインストールされた場合でも、上記と同様の作用効果によりキーボード４によるサーバ５ａの操作性が向上する。
【００７９】
上述した実施形態は本発明の好適な実施の例である。但し、これに限定されるものではなく、本発明の要旨を逸脱しない範囲内において種々変形実施可能である。
【符号の説明】
【００８０】
１      コンピュータシステム
２      ＫＶＭスイッチ
３      マウス
４      キーボード
１０      装置制御回路
２０ａ，２０ｂ    サーバ制御回路
２１ａ，２１ｂ    メモリ
【図１】
2019185316.tif 000003
【図２】
2019185316.tif 000004
【図３】
2019185316.tif 000005
【図４】
2019185316.tif 000006
【図５】
2019185316.tif 000007
【図６】
2019185316.tif 000008
【図７】
2019185316.tif 000009
【図８】
2019185316.tif 000010