ちょっと前に話題に上がっていたSynergyを入れてみた。 タイムリーで話題になっていたのに、その時は全然凄さにきがついて居なかった。 たぶん当時は錆び付いていて、感覚が麻痺していたに違いない。 Synergyは複数台のPCでキーボードとマウスを共有出来るソフトです。 Synergyの凄い所は、異なるOSでも共有ができる点。それどころかクリップボードの共有まで出来てしまいます。 WindowsでコピーしたものをMacOS上のテキストエディタに貼り付けなんて出来てしまう。 そんな事が、ハードウェアなしに出来るのか!?っておもったんですが、 どうやらデーモンプロセスを常駐させてTCP/IPでやりとりしている様です。 素晴らしいの一言。 早速自宅で、Windows+IntelMac+LinuxでSynergyを使ってみることにしました。

Synergyのインストール

各マシンにSynergy2をインストールします。現在最新版は1.3.1で、このバージョンを使います。 ◇Windows (WindowsXP) http://synergy2.sourceforge.net/からSynergyのバイナリ(exeファイル)をダウンロードしてきます。 単純にインストーラ形式なので楽ちん。 ◇Linux (fedora core6) Windowsの時と同じようにサイトからソースを落としてきてもいいんですが、yumでインストールしてしまいました。
$ yum install synergy
ソースからコンパイルするなら、
# . ./configure
# make
# make install
でOK。 ◇IntelMac ソースからコンパイルすれば良いんですが、IntelMacの場合はそのままコンパイルするとBus errorが起きます。 masuidriveさんの「IntelMacでSynergy2を動かす」というエントリに解決方が書いてあった。
lib/platform/COSXKeyState.cppの中でgetKeyMapでKCHRを取得する所でコケている様なので、356行のgetKeyMap(keyMap, g, kchr);をコメントアウトしてみたら、動いた。
バイナリ版を公開しているのですが、バージョンが1.3.0と若干違ったので、ソースを修正してmake installすることにしました。 バージョン1.3.1ではlib/platform/COSXKeyState.cppの354行目にgetKeyMap(keyMap, g, kchr);があるので、コレをコメントアウトしておきます。でいつもの奴でインストール。
# . ./configure
# make
# make install

synergy.confの作成

Synergyを使うには一台がサーバー機になってクライアントとして接続するようにします。また、サーバー機にはPC同士の配置をsynergy.confに書いてあげる必要が有ります。 現在私の構成だと、
      Windows                 Mac                 Linux    
という並びになって居るので、キーボード、マウスを使うMacをサーバーにします。 この並びを設定ファイルにしてあげればいいのですね。 ベタに/etcの下にsynergy.confを作成します。
$ sudo vi /etc/synergy.conf

section: screens
    hostname_mac:
    hostname_linux:
    hostname_win:
end

section: links
    hostname_linux:
       left = hostname_mac
    hostname_mac:
       right = hostname_linux
       left = hostname_win
    hostname_win:
       right = hostname_mac
end 
hostname_xxxを環境に合わせて読み替えてください。 hostname_xxxはターミナルでhostnameを実行した時の出力です。 自宅ではDNSが無いので、どうなるのかな?と思ったのですが、設定ファイルの名前はDNSが引けなくても良いようです。 逆にIPを書いてもダメでした。通信するときにhostnameの値をsynergy.confから引いている様です。

synergy起動

下記コマンドを実行してサーバーから起動します。通常はバックグラウンドプロセスになりますが、オプションに-fを付けるとデバック出力が見れます。 私の場合mac上で下記コマンドを実行。
# /usr/local/bin/synergys --daemon -f --config /etc/synergy.conf
これでサーバーが起動しました。 WindowsはSynergyのGUIの"Use anogher computer's shared keyboard and moouse (client)"のテキストインプットにサーバーのホスト名かIPを入力してStartボタンを押します。DNSでホスト名が引けない場合はIPで入力してください。 最後にLinuxです。
# /usr/bin/synergyc --daemon [サーバーのホスト名 or IP]
以上で設定終わりです。 サーバー機の画面左右にマウスポインタを持って行ってください。どうです?ちゃんとクライアント機のマウスポインタが動きますか? ちなみに、Windowsを親機にする場合は設定する内容は同じですが、GUIベースになります。 MYCOMジャーナルの「Synergyでキーボード、マウスを共有する」を参考にしてみてください。