自行編譯 Synergy 來試用

看到網路上有人在討論如何用一套鍵盤滑鼠來控制一台 Mac 和一台 Windows,我自己目前的做法是透過硬體 KVM,而且為了支援 Ducky Shine 3 的鍵盤,還得有 DDM 支援才行,但總覺得在兩台電腦之間的切換不夠流暢(大概要等兩秒才能完全切換),所以想試試軟體 KVM 能不能有更無縫的體驗。

Survey 出來的方案有:

  1. Synergy
  2. Share Mouse

Synergy 雖然是 open source 的 project (目前版本號為 1.7.0),但它目前沒有免費提供安裝包,要 donate 10 USD 才可以下載,而 Share Mouse 雖然可以免費使用,但如果有超過兩台螢幕(定義為 Power User),則要購買授權。因此最後的選擇是自己編譯 Synergy 來試用。

目前 Synergy 的 source 擺在 GutHub 上,可以把整個 repo 打包,用 Zip 檔下載回來,或是用 git clone 的方式來取得。官方有一份 Wiki 文件解釋如何編譯,但只照著文件做可能還是會遇到一些小問題,以下依照 Mac 和 Windows 平台來做步驟說明。

Mac

環境:Mac OS X 10.10.1, 已先安裝 Homebrew, Xcode, 及 Command Line Tools.

安裝 CMake 及 Qt

brew install cmake
brew install qt

目前 code 只支援到 Mavericks (OS X 10.9),另外 Qt 的路徑也需要修改,有一位韓國人已經先改好了,以下是 patch 檔:

修改 ext/toolchain/commands1.py

Configuration & Build

產生設定檔之前,可以先用 ./hm.sh genlist 來看看支援哪些編譯器:

1: Unix Makefiles
2: Xcode
3: Eclipse CDT4 - Unix Makefiles

我是用 1: Unix Makefiles 來 build, 另外兩個沒試過。

./hm.sh conf -g1 --mac-sdk 10.10 --mac-identity test
./hm.sh build

產生安裝檔

其實 Mac 版的 compile 好之後,就可以直接拿 bin/Synergy/Synergy.app 來用,倒不一定要透過 .dmg 的安裝包來安裝,不過包成 .dmg 檔還是比較賞心悅目些。

./hm.sh package mac

安裝包會在 bin/synergy-1.7.0-MacOSX1010-x86_64.dmg

Win XP

環境:Windows XP 32-bit, 沒有預先安裝好什麼特別的 compiler

安裝 Compiler

hm genlist 中可以看出

1: Visual Studio 10
2: Visual Studio 10 Win64
3: Visual Studio 9 2008
4: Visual Studio 9 2008 Win64
5: Visual Studio 8 2005
6: Visual Studio 8 2005 Win64

如果不做任何修改,系統只支援 VC8/9/10, 如果考慮免費的方案,可以選用

  1. Visual C++ Express 2008
  2. Visual C++ Express 2010

不過用 2008 會遇到沒有 stdint.h 的錯誤(VS 2010 以後版本有提供),另外在製作安裝包時也會遇到錯誤,所以請使用 2010,另外,經過 patch 也可以讓 VS2012 和 VS2013 編譯(但該 patch 並沒有修改到 Merge Module,會導致在製作安裝包時錯誤)。

Patch for VS2012/2013

另外編譯時會遇到找不到 dns_sd.h 的問題,可以到 apple 提供的 mDNSResponder 裡去拿出來,把 mDNSShared/dns_sd.h 放到 src/gui/src 裡。(參考)

安裝 CMake, Python, Qt, WiX Toolset

  1. CMake
  2. Python (要用 Python 2.x 版)
  3. Qt SDK 2010.02 (預設用這個版本,似乎有點老舊。XD)
  4. Wix Toolset

Python installer 可以自動加入 PATH 環境變數(安裝時勾選此選項),但 Qt 要手動加入 C:\Qt\2010.02\qt\bin;C:\Qt\2010.02\mingw\bin 路徑。

製作安裝包會用到 WiX Toolset,但其預設的 Merge Module 是 VC10 (Visual Studio 2010),但免費版的 Visual C++ Express 2010 並沒有提供 Merge Module,這個部分可以拜請 google 大神,或是可以考慮用上述 patch 再用 VS 2013 (有提供 Merge Module)來編譯和製作安裝包。但該 patch 並沒有修改到 WiX Toolset 的設定檔,所以需要再修改 src\setup\win32\Include.wxi:

編譯及製作安裝包

hm genlist 先找看看想用的 compiler 是哪個, 再給參數:

hm conf -g1
hm build
hm package win

測試心得

我的環境是 Windows XP 當 server, 另一台 MacBook Pro 當作 client,成功連線後的確可以讓鍵盤和滑鼠做無縫的切換,但還是有一些小細節不如預期:

  1. 沒辦法完整模擬滑鼠按鍵,在 client 端,除了左中右鍵以及滾輪外,其餘按鍵皆無法使用,這樣一些自訂功能就被辦法使用了。
  2. 在 Mac client 端滑鼠滾輪方向會顛倒,無法採用 Mac 特有的自然捲動方式。
  3. 沒辦法微調螢幕的相對位置。設定不同電腦間的相對位置是以 3×5 方格來排列的,所以沒辦法像外接螢幕那樣微調到滑鼠切換螢幕時,依舊平順滑過。
  4. 當 client 也有多螢幕的時候,會用最邊界的螢幕當作相連之處,而無法與 server 的螢幕形成一個上下左右二度空間的相關性。
  5. 在 Mac client 上,使用上下鍵做注音輸入的選字會有問題。
  6. 不知是不是我處的無線網路環境有問題,有時連線會斷斷續續?另外也有一些些輕微的 lag 現象。這個現象暫時持保留態度。

或許應該再試用個幾次才有辦法決定續不續用,以這類 Network KVM 相連,雖然遇到上述問題,但可以把我目前三螢幕的工作環境,再延伸到四螢幕(查資料、打報告、看片、看片)(如果配上 Duet Display 就成了五螢幕了,不過說不定也是因為這樣才不穩的?)。畢竟我已經有硬體的 KVM,在硬體 KVM 的環境下,不只鍵盤滑鼠可以共用,連螢幕也可以共用,要是軟體穩定度真的不夠,再換回硬體的方式也 ok。所以這兩天的嘗試,等於賺了 10 USD 的試用費。XD


3 Comments

  • 林夕

    2015/03/16

    你好,能否提供下已经编译好的版本.不胜感激 email : [email protected]

    Reply
    • tsaiid

      2015/03/16

      Sorry, 如果我提供了編譯好的版本,這樣就對 Synerge team 有點不好意思了,建議到他們官網提供贊助併下載

      Reply
  • leochao

    2015/05/15

    請問一下,在win中的patch要怎麼使用?

    Reply

Leave a Reply