For many years I have had a desktop computer with two monitors. I find it far easier to work with the increased screen space, and like to be able to maximise an application to one screen while still using others on another screen.
However, the computer used to power these screens is far more powerful than I usually need to write papers in LaTeX, or code a website. Only if I need to run an experiment for work do I actually want all the power that I have available to me... so I decided to "replace" it with a Raspberry Pi. [I haven't actually replaced it, but I just no longer need to use it except for CPU-intensive tasks].
Unfortunately a Raspberry Pi can only really output to one screen at a time (even if both the HDMI and RCA connectors can be used at the same time, the RCA provides an analogue output which looks quite bad on a high-resolution monitor).
So I realised I would need two! This now poses a problem... I don't want to have two keyboards and mice, and a KVM switch isn't really ideal - I'm used to just being able to move the mouse to the edge of one screen and see it appear on the other!
A quick Google later, and I have the solution - Synergy. This excellent program works on Windows, Linux, and OS X, and allows a "server" to share its keyboard and mouse with other "clients" across a network connection.
Unfortunately the version available in the Raspberry Pi repos (1.3.8) dates back to mid-2011 - I didn't want such an old version, so I downloaded the source and built it myself following these instructions. It works perfectly - completely smooth mouse movements on the server and client, and all keypresses worked as expected.
Attached is the result of compiling the current latest version (1.4.10). I don't attach the source, as I have linked to it above (and do not wish to deprive Synergy of any potential donations). I have also attached the config file I am using to share my keyboard and mouse between two Raspberry Pis and my desktop, as an example. More information on the config file can be found here.