This past week I've been looking into VNC again for a quite different use - not for watching a remote display, but to control a machine right next to mine.
This odd turn of events was largely prompted by my PowerBook-toting colleagues' quest for a way to use a single keyboard and mouse to control both their PowerBooks and their work PCs (often more than one, too). A keyboard-video-mouse switch (which is what I use at my desk) is useless when you want/need to see both machines' display at once (it can be made to work, but gets in the way) and the tried-and-true approach of using x2x looked like a good starting point.
x2x joins a pair of X displays together, as if they were a single multiheaded display. The pointer can be warped between displays, or, depending on how you start x2x, can slide from one display to the other when it runs off the edge of the screen. Keyboard focus also moves between displays in the way you'd expect.
However, x2x cannot control a native Aqua display. VNC can, though, since beside carting bitmap updates to and fro it also sends both keyboard and mouse input. Looking around a bit, I soon found a few similar programs, one or two of which I had tried before:
- x2vnc - X to VNC
- win2vnc - Windows to VNC, not multi-display friendly yet
- osx2x - does it all, Mac to X or VNC
All of these were duly added to my VNC page and the URLs kicked around a bit. However, my colleagues reported a number of difficulties associated with controlling the Mac OS X desktop from Linux and Windows (and vice-versa):
- None of the solutions works properly with multiple displays on one machine (whether it is running Windows, Linux or Mac OS X, and independently of which is the server or the client).
- Mouse wheel support is flaky at best.
- All solutions suffer from the infamous "US Keyboard Spoken Here" approach - that is, they don't support international keyboards (except a few hard-coded layouts)
Now, VNC keymapping problems are nothing new, especially for people using non-US keyboards (the best VNC client I know of for the Mac in this regard - i.e., that can use a Portuguese keyboard layout against a UNIX server - is VNCthing, which seems to have vanished...). But, for the sake of argument, I decided to try it myself this weekend - I set up osx2x to control my Windows laptop from my iMac, and got pretty much the same result: The keyboard mappings don't work, with everything being mapped to the US keyboard layout.
As usual, there is a possible solution: Synergy currently delivers tighter integration than VNC for this, with mouse wheel support, multiple display support, simultaneous screensaver activation and clipboard conversion. The catch is, of course, that it only runs on Windows and X-oriented systems like BSD and Linux (and using Mac OS X's X11 won't help you here). There is talk of a native Mac OS X port, but it's likely to be a patch to osx2x called osx2vnc and take a while.
(Oh, and although I've looked around, there is no guarantee that it will work properly with all keyboard layouts.)
In the meantime, we'll just have to stretch our arms a bit and use another keyboard and mouse. I suppose the exercise won't hurt much, but it's a waste of time and desktop space...