{"adoption": {"forks": 391, "observed_at": "2026-08-28T04:08:58.871330+00:00", "stars": 4755}, "canonical_url": "https://ross.abutalabs.com/products/betterjoy", "card": {"archived": false, "artifact_type": "application", "description": "Allows the Nintendo Switch Pro Controller, Joycons and SNES controller to be used with CEMU, Citra, Dolphin, Yuzu and as generic XInput", "domain": ["gaming-tools", "windows", "hardware"], "enriched": true, "function": ["gui", "middleware"], "health_score": 20, "homepage": null, "language": "C#", "license": "NOASSERTION", "license_family": "other", "maturity": "maintenance", "member_repos": ["Davidobot/BetterJoy"], "name": "Davidobot/BetterJoy", "platform": ["windows"], "pushed_at": "2024-07-19T14:44:47+00:00", "repo": "Davidobot/BetterJoy", "stars": 4755, "tags": ["nintendo-switch", "joycon", "xinput", "cemuhook", "gyro-controls", "controller-emulation", "vigem", "emulators", "driver", "desktop"], "topics": ["cemu-emulator", "nintendo-switch", "driver", "cemu", "cemuhook", "snes-controller", "joycon", "gyro", "switch", "citra", "cemuhook-motion-server", "xbox-controller", "bluetooth", "dolphin-emu", "xinput", "yuzu"], "urls": [], "use_cases": ["use Switch Pro Controller with Cemu", "connect Joycons to Dolphin as XInput controllers", "use gyro motion controls in Yuzu via Cemuhook", "use Switch controllers with Steam as Xbox controllers", "map Joycon SL/SR buttons to keyboard keys", "use Joycon gyro to control the mouse"], "what_it_is": "A Windows application that lets Nintendo Switch Pro Controllers, Joycons, and Switch SNES controllers work with emulators like Cemu, Citra, Dolphin, and Yuzu, as well as system-wide as generic XInput controllers. It also supports gyro-as-mouse control and remapping of special buttons.", "when_to_avoid": ["you are on Linux or macOS rather than Windows", "you need a controller driver for non-Switch controllers", "you require actively developed software with frequent updates"], "when_to_choose": ["you want to use Nintendo Switch controllers on a Windows PC with emulators or any XInput game", "you need motion/gyro support via Cemuhook for Cemu, Citra, Dolphin, or Yuzu", "you want button remapping and gyro-as-mouse features"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/betterjoy", "repo": "Davidobot/BetterJoy", "role": "main", "score": 23}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:08:58.871330+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-29T18:18:53.626859+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "f0eeec685eb81d36d48d246dd75f9c22a604e5babccfe84ed59ba9a5d6c8eeb4", "fetched_at": "2026-08-28T04:08:58.871330+00:00", "kind": "readme", "missing": false, "url": "https://github.com/Davidobot/BetterJoy"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 8}, "computed_at": "2026-09-03T02:20:16.233290+00:00", "flags": ["no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3109, "days_push": 775, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 23, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}