Joysticks and mice, done properly
Plenty of Spectrum software expects a joystick or a mouse, and ZenZX supports the real interfaces those programs were actually written for — not a generic "gamepad" abstraction bolted on afterward.
Joysticks
- Kempston — the most common interface, and the one most games default to.
- Sinclair — the keyboard-remapping style joystick interface, in both its ports. The 128K, +2, +2A, and +3 genuinely had two built-in Sinclair joystick ports side by side, and ZenZX models both, active at once, matching the real hardware.
-joystick=auto (the default) picks whichever configuration the selected model actually shipped with. You can also force a specific one — kempston, sinclair1, sinclair2, sinclair-both — if a particular game needs it.
Mice
- Kempston Mouse — the standard third-party mouse interface a huge amount of Spectrum mouse-driven software (art packages, some late-era games) was written for.
- AMX Mouse — the earlier, different interface some software specifically expects instead.
Both can be active at the same time, each behaving independently and correctly — so software looking for either one finds it, without you having to guess which interface a given program wants before you start it.
Why it matters
Getting an old input interface approximately right is often enough to break software that's checking for a specific device at a specific port. ZenZX models the actual interfaces — not just "does moving the mouse do something" — so joystick- and mouse-driven Spectrum software behaves the way it did on the real machine it was written for.