• v0.1 c79debdcbe

    v0.1 Stable

    cristhian released this 2026-09-16 09:31:32 +00:00 | 1 commits to main since this release

    First 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.
    • present is 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_INDEX selects 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:
          - joy
    

    Requirements

    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