So I got coked up and tore out SDL’s still-beating event system, holding it triumphantly aloft before plunging it into the cleansing fire. From now on Boxer does rendering and input entirely by itself, keeping the SDL framework around only for audio. The new build is a Cocoa zen garden and I am at peace.
While much is changed under the hood, visible improvements from this recoding bacchanalia are fairly few:
Mouse-locking and cursor behaviour in general are much improved: the DOS and OS X cursors stay in sync whenever possible when locking and unlocking, and the cursor should now hide and unhide much more faithfully.
Minimizing or hiding the application from fullscreen now works properly.
Just because I could, I added a chic blur effect behind the Inspector panel.
CtrlOptclick now simulates clicking the left and right buttons simultaneously: a ray of hope for you Syndicate fans rocking a trackpad or a Magic Mouse. (Reminder that Ctrlclick on its own simulates a right-click, and Optclick simulates a middle-click.)
As a result of this input restructuring, joystick support is officially gone and it won’t be back until after 1.0. Which isn't a great loss, since the joystick support left over from DOSBox was a nightmare to configure and never worked very well on the Mac.
Which is not to say I don’t care about joysticks: on the contrary, I love them so dearly I couldn’t bear to support the feature as it was. Once 1.0 is properly out the door, I want to do joysticks right: make them work magically and beautifully, with no initial setup but enough graceful preferences to work how you want. More on this in a future blog entry.
This has been a major code overhaul: there are many small changes in input-handling behaviour and no doubt Lots Of Fun New Bugs. As always, if something seems wrong or broken or just worse than it was before, it is your duty as an Alert Alpha-Tester to report it as a bug so that I can fix it and make the world a better place.