-
v0.1 Stable
released this
2026-09-16 09:31:32 +00:00 | 1 commits to main since this releaseFirst release.
A dora node that reads a gamepad and publishes its axes and buttons, raw and unshaped.
It takes a tick and produces readings; it names no consumer.Contract
One output,
joy, carrying the Arrow struct
{axes: list<float32>, buttons: list<bool>, present: bool}.- Raw values. No deadzone, no response curve, no rescaling. A resting trigger reads
-1.0, not 0.0. What a reading means belongs to whoever acts on it. presentis explicit. False when no pad is open — unplugged, never plugged in, or
taken away by SDL mid-run. An absent pad is not a centred pad.- Published on every tick, changed or not, so the stream doubles as a heartbeat:
silence means the node died and nothing else. - The Arrow schema is declared, never inferred, so the type does not change the
moment a pad is unplugged.
JOYSTICK_INDEXselects the pad when more than one is plugged in (default 0).Usage
nodes: - id: joy git: https://gitea.liria.cl/liria/dora-joy.git tag: v0.1 build: pip install . path: dora-joy inputs: tick: dora/timer/millis/20 outputs: - joyRequirements
dora 1.0+ (verified with
dora-cli 1.0.1), Python 3.11+,uv. Every dependency ships
prebuilt wheels for linux-x86_64, linux-aarch64 and macos-arm64: no system packages, no
compiler.Downloads
- Raw values. No deadzone, no response curve, no rescaling. A resting trigger reads