Files
cristhian 3624c63ead
validate / validate (pull_request) Successful in 58m42s
validate / test (pull_request) Successful in 58m47s
validate / markdownlint (pull_request) Successful in 58m40s
add dora-joy node publishing gamepad axes and buttons
2026-09-16 05:10:33 -05:00

31 lines
935 B
Python

"""Prints every `joy` message, so `dataflow.yml` is self-contained.
It exists so the repo's own dataflow can be validated and run by CI with no
gamepad and no consumer attached. It is not a test of anything: it prints what
arrived and forgets it.
"""
from dora import Node
def main() -> None:
"""Print one line per reading."""
node = Node("printer")
count = 0
for event in node:
if event["type"] != "INPUT" or event["id"] != "joy":
continue
row = event["value"][0].as_py()
count += 1
if not row["present"]:
print(f"joy {count:5d} no gamepad", flush=True)
continue
axes = " ".join(f"{value:+6.3f}" for value in row["axes"])
held = ",".join(str(index) for index, down in enumerate(row["buttons"]) if down) or "-"
print(f"joy {count:5d} axes [{axes}] buttons [{held}]", flush=True)
if __name__ == "__main__":
main()