Disclaimer

The views expressed on this blog are my own and do not necessarily reflect the views of my employer.

Tuesday, February 4, 2014

Keyboard Mouse integration between Solaris 11.1 and Windows 7 using Synergy

Note: Please read the copyright notices and license agreements before making any changes to your software. This document is not intended to take care of legal issues.

I'm running Solaris 11.1 in my desktop machine, a keyboard and mouse is connected to this system. My laptop under the same network is running Windows 7. Following are the steps I have taken to use the same keyboard and mouse in my laptop using Synergy.

Solaris 11.1

Step 1. Install the required packages.

# pkg install SUNWPython SUNWcmake SUNWgcc SUNWxorg-headers
# pkg install pkg://solaris/SUNWxwinc

Step 2. Download and extract Synergy from -
http://synergy-foss.org/

Step 3. Navigate to the directory and run
$ ./hm.sh conf -g1

Step 4. Now run
$ ./hm.sh build

This step will fail with the following error message.

[ 89%] Building C object src/micro/CMakeFiles/micro.dir/uSynergy.o
In file included from /home/righosha/synergy-1.4.15-Source/src/micro/uSynergy.c:26:0:
/home/righosha/synergy-1.4.15-Source/src/micro/uSynergy.h:49:92: error: operator '==' has no right operand
*** Error code 1
The following command caused the error:
cd /home/righosha/synergy-1.4.15-Source/build/release/src/micro && /usr/bin/gcc  -DSYSAPI_UNIX=1 -DHAVE_CONFIG_H -DWINAPI_XWINDOWS=1 -O3 -DNDEBUG -o CMakeFiles/micro.dir/uSynergy.o   -c /home/righosha/synergy-1.4.15-Source/src/micro/uSynergy.c
make: Fatal error: Command failed for target `src/micro/CMakeFiles/micro.dir/uSynergy.o'

You will need to manually edit "src/micro/uSynergy.h" to resolve this issue. But before you do that, make sure you know if your system is little endian or big endian. Google it if you don't know how to figure that out. My system is little endian, most probably yours too.

Now open the file using your favorite editor, and comment out the following lines -

#if defined(USYNERGY_LITTLE_ENDIAN) && defined(USYNERGY_BIG_ENDIAN)
        /* Ambiguous: both endians specified */
        #error "Can't define both USYNERGY_LITTLE_ENDIAN and USYNERGY_BIG_ENDIAN"
#elif !defined(USYNERGY_LITTLE_ENDIAN) && !defined(USYNERGY_BIG_ENDIAN)
        /* Attempt to auto detect */
        #if defined(__LITTLE_ENDIAN__) || defined(LITTLE_ENDIAN) || (_BYTE_ORDER == _LITTLE_ENDIAN)
                #define USYNERGY_LITTLE_ENDIAN
        #elif defined(__BIG_ENDIAN__) || defined(BIG_ENDIAN) || (_BYTE_ORDER == _BIG_ENDIAN)
                #define USYNERGY_BIG_ENDIAN
        #else
                #error "Can't detect endian-nes, please defined either USYNERGY_LITTLE_ENDIAN or USYNERGY_BIG_ENDIAN";
        #endif
#else
        /* User-specified endian-nes, nothing to do for us */
#endif


and replace it with

#define USYNERGY_LITTLE_ENDIAN

Please clearly mark this change is done by you and this is not a part of the original software as mentioned in the copyright notice. Also if you are using a big endian machine then use "#define USYNERGY_BIG_ENDIAN" instead. Save your changes and go back to step 4 again. This time it should work fine.

Step 5. Create a synergy.conf file. You can create it anywhere e.g in your home directory. My Desktop system (hostname - host1.com and IP - a.b.c.d) is on the left side of my laptop (hostname - host2.com and IP - w.x.y.z) and my synergy.conf file looks like -

$ cat synergy.conf
section: screens
       host1:
       host2:
    end
    section: links
       host1:
           right = host2
       host2:
           left = host1
    end


Step 6. Start Synergy server from host1.
synergy-1.4.15-Source/bin$ ./synergys -f --config synergy.conf

Windows 7

Step 1. Download and install Synergy.
Step 2. Run Synergy
Step 3. Check client, enter server IP (IP of host1 i.e. a.b.c.d)
Step 4. Apply and Start.

Enjoy Synergy!

1 comment:

  1. Ritwik,

    I have a box running Solaris 11 x86_64. I followed you instructions and got the following error while compiling it:

    ./hm.sh conf -g1
    Mapping command: conf -> configure
    cmake version 2.8.6
    Entering dir: build/release
    CMake command: cmake -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release ../..
    CMake Error at CMakeLists.txt:153 (message):
    Missing library: pthread


    -- Configuring incomplete, errors occurred!
    Going back to: /home/xjjc004/Downloads/synergy-1.4.17-Source
    Error: CMake encountered error: 256

    Any thoughts?

    Jack

    ReplyDelete