Synergy+ (synergy-plus) lets you easily share a single mouse and keyboard between multiple computers with different operating systems, without special hardware. All you need is a LAN connection. It's intended for users with multiple computers, where each system uses its own display. It's a little like having a 2nd or a 3rd desktop... It's not a KVM or VNC tool, but it does achieve similar results (but with added convenience). No need to press any buttons when you want to change desktops, and your keyboard input goes to the same screen that your mouse cursor is on.
* Move your mouse easily between computers
* Requires nothing other than existing ethernet
* Copy and paste between your computers
* No need to press any buttons (unlike KVM)
* You can still use multiple monitors on the same computer
* Lock the mouse to one screen temporarily (useful for games)
Synergy+ is free open source software. Please donate if you like what it does!
The Problem
After using synergy to hook my Mac keyboard and mouse over to an Ubunut netbook, I noticed that synergy on the Mac would crash with a strange error ... "Unknown Quartz Event type: 0x1d". After messing around with the Mac for a while, I noticed it happened every time I tapped the trackpad. Using a normal (admittedly... Microsoft) optical mouse worked like a charm.
The Solution
To fix this I began by grepping through the source code and looking for the strange message. It was easy to find. Then I ran synergys (the server part) through GDB to trace the flow of the application. Looking at the structure one can see that it is inside a switch statement that is dealing with events that an invalid memory address or possibly pointer to an invalid type is being passed. After a bit more hacking away and looking through the MacOS SDK headers I found a definition NX_LASTEVENT = 28. Now I thought this was strange because 0x1D = 29.
I checked back at the statement and the default behavior for the switch statement is to just pass the event object through. Now this is a problem because the event object seems to be either NULL or of an invalid type (I couldnt easily see which).
So basically I added a few lines of code to check that the type is within the bounds of NX_LASTEVENT, and if it isnt - we return NULL.
So far this is working well and I have submitted the patch to the Synergy-plus team for checking!
Post new comment