A brand-spanking-new Windows 3.1 mouse driver. Seriously.
It's for use in VMWare. You know. So you don't need to grab and ungrab the mouse.
If you had ever wondered how to get Lunduke to stop doing whatever heβs doing and pay attention to something, try uttering the phrase βnew Windows 3.1 mouse driverβ.
Gets me every time.
Just two days ago (in the year of our Lord, Two Thousand and Twenty One), a most excellent gentleman by the name of Calvin Buckley, published the source code for exactly that β a brand new Windows 3.1 mouse driver.
This driver is intended entirely for usage within VMWare. From the ReadMe:
Running Windows 3.1 in VMware (or seemingly, QEMU, but it's not yet tested), but annoyed by having to grab and ungrab the cursor manually?
Wish you could just move the cursor in and out like a modern OS (one with USB tablet support or VMware Tools drivers), with no Ctrl+Alt dancing?
Or want to control your cursor at all under the ESXi web UI? (It doesn't do relative input.)
With this driver, now you can. It implements the interface that VMware uses (the backdoor), replacing the existing PS/2 mouse driver.
The details on how it works a pretty fascinating read.
Normally, mice work by sending a delta of their movements. You'd have to trap the mouse inside of the guest for this to work; any tracking difference would result in a very hard to control cursor. Being able to send the absolute coordinates would be great, because you can know the exact point when the cursor hits the edge.
However, there wasn't a standard way of doing absolute positioning with PC input devices until the USB tablet standard, and Windows 3.x/DOS massively predate USB, let alone have a USB stack. For those situations, VMware offers absolute positioning through a port I/O interface.
Oh. Oh! Check this craziness out:
Overall, I'm glad this was surprisingly easy, considering I didn't know x86 assembly before, and I only implemented this in a day - with lots of struggling against MASM and typos.
Yeah.
You read that right.
The developer didnβt know Assembly before starting this project. He went from βI donβt know assemblyβ to βI just coded a mouse driver, in Assembly, for a 29 year old platformβ in one day.
Calvin Buckley. You, sir, are legendary.
If you arenβt currently a subscriber to The Lunduke Journal, I highly recommend it. It is so choice. The free edition is great. If you pitch in a few bucks you get some fun perks (and warm fuzzies). The Lunduke Journal community is also a ton of fun.)