One program that I have used that works well is called Synergy.

How it works is that you put a small piece of server/client software on each of the machines and configure them to point at each other.

One of the nice things about it is that it runs different platforms. In my case I had my WindowXP pc in the middle, A RedHat Linux PC to my left and sometimes my dual booting Dell Laptop to my right, all on my desk, all controled by the keyboard and mouse attached to the Windows PC.

Since I was the sysadmin for that company and am the slightly paranoid type I deceided that the connections should be encrypted. I installed a Cygwin SSH daemon on the Windows PC and forwarded the connection ports over SSH. A couple of 3 line bash scripts so I didn't have to remember flags and port numbers, and I was up and running.

It worked really well. I recomend it.