Synergy -複数のコンピュータの Input Device をひとつに

今、Macが2台、Windowsが1台という環境で仕事をしています。
メインマシンの PowerBook G4 と設定を頼まれた iMac (Core 2 Duo)、客先環境確認用のVAIO などです。
これに限らず、複数のマシンをとっかえひっかえして、作業している人は私の周りでも頻繁に見かけます。
モニタはモニタ切り替え器でなんとかなるが、そういった場合、最もうっとおしいのは、Input Device です。
マウスやキーボードを何セットもデスクにおいて、
「これは、これやったやんな…」
「あ、ちゃ!ちごた!」
などとやっている貴兄に。
Synergy です。

  • http://synergy2.sourceforge.net/

【用途】
使いたい Input Device 1セットだけで、複数の端末を切り替えて使えるようになります。
Mac だろうが、Windows だろうが Linux だろうが、なんでもこいです。
【方法】
メインの画面の上下左右すきなところに、仮想的にサブの画面があるかのようにあつかえます。
※ちょうど、デュアルモニタっぽい感じ
【困っちゃった点】

  1. 私の環境では、Expose を画面角に設定しているので、デスクトップを表示させようとしているのに、となりのマシンのコントロールにいっちゃったり…
  2. なにより、Intel Mac で Bus Error が…

【解決法】

  1. Configuration file の設定で解決できますた
    ↓ここみますた
    Synergy Configuration Guide
  2. 得意の他力本願で解決できますた
    ↓ここみますた
    IntelMacでSynergy2を動かす


あ、最初にことわっておきますが、Windowsは、exe形式のインストーラがありますので、説明しません。www
つか、Mac OS X の話しかしません。
わかりやすいように、<言い訳>つか、トラブルが出た場合の切り分けのためになるべく単純なことからと思い</言い訳>、iMac(Core2Duo)にくっつけたキーボードと Kensington の Expart Mouse を 共有する Input Device にして、PowerBook もこれで操作するように設定します。
■ダウンロード

  • http://synergy2.sourceforge.net/

ココ行って、Latest Release →typeが.gzな新しい版を落とします。*1
■インストール
展開してできた synergys がサーバ用とのこと。
これを、使いたい Input Device のくっついているマシン(現在のウチの状況では、お預かりのiMacですな)の適当なフォルダに持ってってやるわけです。
/usr/local/bin
あたりがよろしいかと思われますが、
今見たら、iMac には、
/usr/bin
っきゃねーや。
このために作るのもなんなので、
/usr/bin
でよしといたします。
あとは、configuration file つまり、synergy.conf ですが、ちょいと後述するように手を加えて、
/etc
にでもほりこんでおきましょう。
クライアントの方(synergyc)はPowerBookに入れるわけですな。
/usr/local/bin
があったことだし。
synergy.conf は、サーバのんと同一ファイルでOKです。
つーことで、これも後述の修正を加えて、
/etc
へ。
■Configuration file (synergy.conf)の記述
面倒くさいこといわずに、ウチの設定を書きますと…


<?php
section
screens

    PowerBook
.local:    #Client
    iMac.local:        #Server
end

sectionlinks

    iMac.local:
        left PowerBook.local

    PowerBook.local:
        right iMac.local

end
?>

*2
詳しくは、Synergy Configuration Guideをご覧下さいまし。
とりあえず、上記な感じで最低限、動きます。
■起動

  • Server (iMac)

<?php
$ /usr/bin/synergys --/etc/synergy.conf
?>

*3

  • Client (PowerBook)

<?php
$ /usr/local/bin/synergyc iMac.local
?>

このへんはさ。うまくいく状態を確認してから、AppleScript かなんかで、ログイン項目に食わせてやればよかっぺと思いまする。
■トラブル→解決
で、ややこしいことが…
iMac (intel) でこける…
本家のフォーラムで、こんな質問発見しますた。
http://sourceforge.net/forum/message.php?msg_id=3803878

I’m experiencing the problem with 1.3.1 on Intel MacBook (OSX 10.4.7)
with Japanese keyboard. Both client and server are getting a bus
error right after starting.
(snip)
After some more investigation, it seems that getKeyID() gets an
unexpected? parameter like c=130 and CFStringCreateWithCStringNoCopy()
returns NULL only when it attempts to process KCHR resources. Is
there any wrong assumptions in the code using the keyboard layout
services?

まさしくこれや!
えらい!>八重樫君!たけし君!
しかし、同フォーラム内に、私の伝家の宝刀「他力本願」を振り下ろす書込はみつからず…
よろしく!Google 様!→はい発見。
IntelMacでSynergy2を動かす

ソースを追ってみたら、lib/platform/COSXKeyState.cppの中でgetKeyMapでKCHRを取得する所でコケている様なので、356行のgetKeyMap(keyMap, g, kchr);をコメントアウトしてみたら、動いた。多分UCHRを取得してるから問題ないと思うんだけどな。とりあえず使ってみて、おかしい所があったら考えよう。

そーね。そーしよー!
masuidrive 君てば、修正バイナリまで用意してくれるだもん!
えらい!
で、こいつは、1.3.0 なのね。
Latest Release は、1.3.1(2006/12/13現在)と。
んじゃ、masuidrive ヴァージョンのサーバの方(synergys)を iMac にいれて…。
Power Bood の方にも同 synergyc をば、つっこん…ん?うごかね。
じゃ、1.3.1の synergyc を…はい。うごきました。
はい、では次の問題点!
Expose と操作の動きがかぶるんです。
ウチは、Desktop だけを表示させる Expse の操作は、画面左下角にマウスを持ってくるわけね。
この動作をやると、iMac の画面からポインタが PowerBook に行っちゃうのさ。
Expose も同時に効いたりするんだけどね。
上記 Synergy Configuration Guide に素敵な記述はけーん!

You can use the following options:
* heartbeat = N
The server will expect each client to send a message no less than every N milliseconds. If no message arrives from a client within 3N seconds the server forces that client to disconnect.
If synergy fails to detect clients disconnecting while the server is sleeping or vice versa, try using this option.
* switchCorners =
Synergy won’t switch screens when the mouse reaches the edge of the screen if it’s in a listed corner. The size of all corners is given by the switchCornerSize option.
Corners are specified by a list using the following names:
o none — no corners
o top-left — the top left corner
o top-right — the top right corner
o bottom-left — the bottom left corner
o bottom-right — the bottom right corner
o left — top and bottom left corners
o right — top and bottom right corners
o top — left and right top corners
o bottom — left and right bottom corners
o all — all corners
The first name in the list is one of the above names and defines the initial set of corners. Subsequent names are prefixed with + or – to add the corner to or remove the corner from the set, respectively. For example:
all -left +top-left
starts will all corners, removes the left corners (top and bottom) then adds the top-left back in, resulting in the top-left, bottom-left and bottom-right corners.
* switchCornerSize = N
Sets the size of all corners in pixels. The cursor must be within N pixels of the corner to be considered to be in the corner.
* switchDelay = N
Synergy won’t switch screens when the mouse reaches the edge of a screen unless it stays on the edge for N milliseconds. This helps prevent unintentional switching when working near the edge of a screen.
* switchDoubleTap = N
Synergy won’t switch screens when the mouse reaches the edge of a screen unless it’s moved away from the edge and then back to the edge within N milliseconds. With the option you have to quickly tap the edge twice to switch. This helps prevent unintentional switching when working near the edge of a screen.

角っこは、左上が Expose の設定してないからさ。ここにすればいいじゃん!
コーナーサイズまで設定できるんだってさ!
ダブルタップっちゅーやつは、つまり、エッジを2回叩かないと、画面が切り替わらないようにできるんだってさ!
完璧じゃん!
じゃ、後でやってみよ。

  • 注11.3.1ですな2006/12/13現在
  • 注2iMacだのPowerBookだのってのは、システム環境設定→共有のコンピュータ名ってやつだお。
    ちなみに、.local ってのは、Mac OS X の場合かってにくっつくから気にせずつけましょう。
  • 注3テストですから明示的に -f オプションをつけてみました

コメント

タイトルとURLをコピーしました