2000 and twenty-one might not seem like an obvious year – or century – to give the world a new mouse engine for Windows 3.1, but a developer named Calvin Buckley wrote one nonetheless. His motive seems to be to ensure fast and reliable operations for rodents when the venerable Microsoft operating system acts as a virtual machine.
Buckley’s day job is to develop software for the IBMI platform. The resume mentions that he once ported the .NET framework Mono to help IBM i developers run .NET programs on i.
Cute – good.
Buckley also stands for GitHub’s NattyNarwhal, and in that capacity he appears to have spent the Thanksgiving weekend publishing a project called “vmwmouse” that provides a VMware mouse driver for Windows 3.x.
“You’re running Windows 3.1 in VMware….but annoyed about having to manually hold and release the cursor?” asks Buckley on the README project. “Wish you could move the cursor in and out like a modern OS (one that supports USB tablet or VMware Tools drivers), without Ctrl + Alt dancing? Or do you want to control the cursor at all within the ESXi web UI?”
His answer to these questions is: “With this driver, you can now.” The video below shows the driver in action.
The driver does its magic with VMware Tools – a set of utilities that Virtzilla offers to help vAdmins, replacing the current PS/2 mouse driver.
Buckley explains that writing a mouse driver presents significant challenges.
“Normally, mice work by sending a delta of their movements. You have to lock the mouse inside the guest for this to work; any difference in tracking could make it difficult to control the cursor. Being able to send absolute coordinates would be great, because you can tell the exact point when the cursor hits edge.”
But Buckley notes that there’s no way to send these coordinates until USB comes along, and Windows 3.x comes from a time before USB.
Buckley’s post goes into great detail about the fine art of drawing mouse positions, how Windows 3.x and VMware handle mouse input, the vagaries of the Intel 286 and 386 processors, and the Microsoft Macro Assembler (MASM).
He rated the project as “surprisingly easy, considering I didn’t know about x86 assembly before”.
“I did this in just one day – with a lot of struggle against MASM and typos.”
Those of us who have spent the weekend overeating salute you, Mr. Buckley. ®