CursorMagic, the local RDP program for IRIX
🪄CursorMagic is a pair of networked applications for Windows and IRIX. It provides mouse, keyboard, and clipboard sharing between Windows and Silicon Graphics (SGI) IRIX over the network. The cursor on the Windows machine will automatically transition between the two computers when dragged into a video capture window . If the IRIX machine is connected to the capture card, it will behave very similarly to an RDP or VM window.
You can see it demonstrated in this slightly confusing video:
Why?
Three reasons:
-
I didn’t have much space, so I wanted to be able to play with my SGIs without pulling out a second mouse/keyboard/monitor.
-
It was an opportunity to do some actual work on my SGI Indy.
-
I wanted to learn C++.
That last point wound up being pretty important, because I used this project to get my first job as a C++ developer.
Features
-
Whenever the mouse is in the capture window on the client, the mouse position and keystrokes are sent to the server.
-
There is bidirectional clipboard support for text (so long as the amount of copied text is under the X11
INCR
size of 256K). -
The client-side has a basic GUI written in raw Win32, for configuring things like the IP address of the server.
Platforms
Client (Windows)
The project is specifically designed for use with the AVerMedia capture card and uses their SDK. I have only tested it with an AVerMedia CD530. There’s no reason I know of that it couldn’t be adapted for use with more generic capture devices.
Porting to Linux would be a big task. Aside from the video capture hardware and API, there is some Windows specific code. In particular, the clipboard system is just entirely different between Windows and X11.
Server (IRIX)
In general, this serf application should compile for any POSIX-compliant Unix-like that uses X11R6 or later and has a C++ compiler. Some afternoon I may patch out the R6 requirement; I just need to tweak the server to keep all X11 calls on one thread.
At one point I compiled and ran the IRIX serf under Linux Mint and it worked perfectly.
The protocol is designed so that it is easy to create additional server applications for more platforms. There is no reason I could not write a server application for early Windows machines, or any other OS that provides some means of simulating mouse/keyboard.
Performance
On this 150MHz Indy, there is a noticeable bump in
the CPU usage reported by gr_osview
.
I believe that this is down to the XTest library.
So long as you keep the mouse polling rate down, it’s not too bad.
I’ve found 20 ms polling to provide a nice balance
of responsiveness and CPU usage.
Mouse messages are only sent while the mouse is moving within the capture window.