Really appreciate you digging into this — your hypothesis was spot on. I tested it directly with real mouse drag events (not just reading the code): desktop mouse-drag does trigger the exact same relative-anchor joystick as touch. Click, drag, and the direction/anchor-recentering logic is identical to a touch drag, and keyboard (WASD/arrows) still takes priority until you actually drag past the dead zone, so it won't hijack keyboard play either.
One correction though: the joystick does draw itself already — a ring at the anchor point plus a knob that follows your drag. So it's not invisible, but I think you were still right about the real problem: the onboarding hint text only ever said "screen" / "finger" / "tap," in all 11 languages, so a desktop player would have no reason to guess that dragging with the mouse does anything. That's a UI-text bug, not a joystick bug.
Fixed in v0.9.31, just shipped: the movement hint now reads "Press anywhere and drag to move" instead of touch-specific wording, across all languages. Thanks for the sharp diagnosis — this was the kind of thing that's easy to miss without someone pointing at the actual mechanism.