synergyでキーボード、マウスを共用 -

差分表示


Sharing Keyboard and Mouse with synergy

* 概要

 synergyは一組のキーボードとマウスを複数のPCで共用するためのソフトウェアです。似たような用途に使用されるソフトウェアとしてVNCが在りますが、synergyでは複数のディスプレイを接続したPC間でキーボードとマウス入力だけを切り替える働きをします。

 操作はシンプルで、マウスカーソルを画面外に移動すると別のPCにカーソルが現れ、カーソルのあるPCを操作することが出来ます。また、クロスプラットフォームでの使用が可能です。ここではLinuxとWindows間での使用例を記します。

* ダウンロード
- http://synergy2.sourceforge.net/から必要なファイルをダウンロードします。
- 今回はソースファイルをダウンロードしてビルド、インストールします。
- 今回使用したソースファイルはsynergy-1.3.1.tar.gzです。
- synergyのソースはプラットフォーム非依存なのでWindows, Linux両方でビルドできます。

* 日本語環境対応パッチをあてる
- ソースファイルを適当なディレクトリに解凍し、ディレクトリを移動します。
-- tar xvzf synergy-1.3.1.tar.gz
-- cd synergy-1.3.1
- パッチファイルを同じディレクトリにコピーしておき、以下の手順でソースにパッチを当てます。
-- patch -p1 < synergy-1.3.1.kanji_kana.patch
- 以下、synergy-1.3.1.kanji_kana.patchの内容です。
---(
diff -ur synergy-1.3.1.original/lib/platform/CMSWindowsKeyState.cpp synergy-1.3.1/lib/platform/CMSWindowsKeyState.cpp
--- synergy-1.3.1.original/lib/platform/CMSWindowsKeyState.cpp	2006-04-11 17:56:19.000000000 +0900
+++ synergy-1.3.1/lib/platform/CMSWindowsKeyState.cpp	2006-04-11 20:31:35.000000000 +0900
@@ -277,9 +277,9 @@
 	/* 0x0ef */ { kKeyNone },		// OEM specific
 	/* 0x0f0 */ { kKeyNone },		// OEM specific
 	/* 0x0f1 */ { kKeyNone },		// OEM specific
-	/* 0x0f2 */ { kKeyNone },		// OEM specific
-	/* 0x0f3 */ { kKeyNone },		// OEM specific
-	/* 0x0f4 */ { kKeyNone },		// OEM specific
+	/* 0x0f2 */ { kKeyOEMCopy },	// VK_OEM_COPY
+	/* 0x0f3 */ { kKeyZenkaku },	// VK_OEM_AUTO
+	/* 0x0f4 */ { kKeyZenkaku },	// VK_OEM_ENLW
 	/* 0x0f5 */ { kKeyNone },		// OEM specific
 	/* 0x0f6 */ { kKeyNone },		// VK_ATTN			
 	/* 0x0f7 */ { kKeyNone },		// VK_CRSEL			
@@ -534,9 +534,9 @@
 	/* 0x1ef */ { kKeyNone },		// OEM specific
 	/* 0x1f0 */ { kKeyNone },		// OEM specific
 	/* 0x1f1 */ { kKeyNone },		// OEM specific
-	/* 0x1f2 */ { kKeyNone },		// OEM specific
-	/* 0x1f3 */ { kKeyNone },		// OEM specific
-	/* 0x1f4 */ { kKeyNone },		// OEM specific
+	/* 0x1f2 */ { kKeyNone },		// VK_OEM_COPY
+	/* 0x1f3 */ { kKeyNone },		// VK_OEM_AUTO
+	/* 0x1f4 */ { kKeyNone },		// VK_OEM_ENLW
 	/* 0x1f5 */ { kKeyNone },		// OEM specific
 	/* 0x1f6 */ { kKeyNone },		// VK_ATTN			
 	/* 0x1f7 */ { kKeyNone },		// VK_CRSEL			
diff -ur synergy-1.3.1.original/lib/synergy/KeyTypes.h synergy-1.3.1/lib/synergy/KeyTypes.h
--- synergy-1.3.1.original/lib/synergy/KeyTypes.h	2006-04-11 17:56:21.000000000 +0900
+++ synergy-1.3.1/lib/synergy/KeyTypes.h	2006-04-11 20:37:23.000000000 +0900
@@ -106,6 +106,7 @@
 static const KeyID		kKeyHenkan		= 0xEF23;	/* Start/Stop Conversion */
 static const KeyID		kKeyZenkaku		= 0xEF2A;	/* Zenkaku/Hankaku */
 static const KeyID		kKeyDelete		= 0xEFFF;	/* Delete, rubout */
+static const KeyID		kKeyOEMCopy		= 0xEF27;	/* OEMCopy(Kana in Japanese keyboard) */
 
 // cursor control
 static const KeyID		kKeyHome		= 0xEF50;
---)

* Linux環境でのビルド
- Linux環境ではgccがあればビルドできます。
- 以下の手順でビルド、インストールします。
-- ./configure
-- make
-- make install
- &verb(RedHat)系のLinuxでは以下の手順でシンボリックリンクを張ります。
-- ln -s /usr/local/bin/synergyc /usr/bin/synergyc
-- ln -s /usr/local/bin/synergys /usr/bin/synergys

* Windows環境でのビルド
- Windows環境では&verb(VisualStudio)が必要です。
- インストーラまでビルドするには、NSIS(Nullsoft Scriptable Install System)が必要です。以下のURLから取得してインストールしておきます。
-- http://nsis.sourceforge.net/
- &verb(VisualStudio)からプロジェクトを開きます。今回使用した&verb(VisualStudio.NET)ではプロジェクトファイルの変換が必要と言われましたが、指示に従って変換することによりビルドできました。
- Releaseビルドに設定して、メニューのビルド>ソリューションのリビルドで全てが自動的にビルドされ、buildディレクトリにファイル一式が出来上がります。
- NSISが入っていればインストーラまで出来上がりますので、それを使ってインストールできますが、インストーラがなくても出来上がったファイル一式をまとめて適当なディレクトリにコピーすれば使用可能です。

* Linuxをサーバとして起動する
- 最初にサーバとクライアントディスプレイの関係を記述した/etc/synergy.confファイルを作成します。
---(
section: screens     # synergyの管理するディスプレイを全て列挙します。
        localhost.localdomain:
        client.localdomain:
end

section: aliases     # 別名を指定します。(IP-Address指定にも応用できます。)
        localhost.localdomain:
                < IP-Address >
        client.localdomain:
                < IP-Address >
end

section: links       # スクリーン間の関係を記述します。
        localhost.localdomain:
                right = client.localdomain
        client.localdomain:
                left = localhost.localdomain
end
---)
- 以下のコマンドでサーバを起動します。
-- /usr/bin/synergys --daemon --config /etc/synergy.conf

* Linuxをクライアントとして起動する
- Linuxをクライアントとして動作させるにはsynergy.confは不要です。
- 以下のコマンドで起動します。
-- /usr/bin/synergyc --daemon <server_name>

* Windowsをサーバとして起動する
- Windowsをサーバとして設定するには以下の手順を行います。
-- synergyを起動します。
-- Share this computer's keyboard and mouse (server)をチェックします。
-- Configureをクリックします。
-- Screens:のセクションで+ボタンをクリックしてsynergyの管理するディスプレイ名を全て追加します。
-- 必要に応じてEditをクリックして設定を追加します。
-- Links:セクションでそれぞれのスクリーンに対する他方の位置関係を設定します。
-- 設定が終わったらOKをクリックます。
-- Startをクリックすればサービスがスタートします。

* Windowsをクライアントとして起動する
- Windowsをクライアントとして起動するのは極めて簡単です。
-- synergyを起動します。
-- use another computer's shared keyboard and mouse (client)をチェックします。
-- Other Computers Host Name:にサーバの名前(今回はIP-Addressでも可)を入力します。
-- Startボタンをクリックする。

* Linuxでsynergyを自動起動に設定する
- FedoraCore4のGnome上での設定例です。
-- &verb(/etc/X11/gdm/Init/:0)に以下の記述を追加
---(
/usr/bin/killall synergys
sleep 1
/usr/bin/synergys --daemon --config /etc/synergy.conf
---)
-- &verb(/etc/X11/gdm/PostLogin/Default)に以下の記述を追加
---(
/usr/bin/killall synergys
sleep 1
---)
-- &verb(ユーザホームディレクトリ~/.bashrc)に以下の記述を追加
---(
/usr/bin/synergys --daemon --config /etc/synergy.conf
---)
- クライアントとして自動起動するにはsynergysをsynergycに変更すれば、基本的にはOKです。ただし、オプションや引数などは適当に変更する必要があります。

* Windowsでsynergyを自動起動に設定する
- Windowsをサーバ又はクライアントとして設定した後、以下の操作を行います。
-- synergyのウィンドウで&verb(AutoStart)ボタンをクリックします。
-- ログイン画面で起動するか、ログイン後に起動するかの希望に応じてInstallボタンをクリックします。

* Tips
- 参考:
-- http://journal.mycom.co.jp/column/yetanother/091/
-- http://www.simeji.com/synergy/running_ja.html
-- http://synergy2.sourceforge.net/autostart.html