{"id":15942182,"url":"https://github.com/discretetom/stickdeck-rs","last_synced_at":"2025-08-16T14:32:09.477Z","repository":{"id":245527238,"uuid":"813735474","full_name":"DiscreteTom/stickdeck-rs","owner":"DiscreteTom","description":"Turn your SteamDeck into a joystick for your PC, with trackpad and gyro support!","archived":false,"fork":false,"pushed_at":"2024-12-13T17:26:51.000Z","size":549,"stargazers_count":7,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"master","last_synced_at":"2025-04-04T13:11:16.325Z","etag":null,"topics":["gamepad","joystick","rust","steamdeck"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/DiscreteTom.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-06-11T16:30:05.000Z","updated_at":"2025-02-15T08:45:27.000Z","dependencies_parsed_at":"2024-06-22T16:09:38.012Z","dependency_job_id":"1b85322a-8782-412c-a6b8-6a1f59674796","html_url":"https://github.com/DiscreteTom/stickdeck-rs","commit_stats":null,"previous_names":["discretetom/stickdeck-rs"],"tags_count":7,"template":false,"template_full_name":null,"purl":"pkg:github/DiscreteTom/stickdeck-rs","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscreteTom%2Fstickdeck-rs","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscreteTom%2Fstickdeck-rs/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscreteTom%2Fstickdeck-rs/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscreteTom%2Fstickdeck-rs/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/DiscreteTom","download_url":"https://codeload.github.com/DiscreteTom/stickdeck-rs/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/DiscreteTom%2Fstickdeck-rs/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":270723251,"owners_count":24634347,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-08-16T02:00:11.002Z","response_time":91,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["gamepad","joystick","rust","steamdeck"],"created_at":"2024-10-07T07:40:33.659Z","updated_at":"2025-08-16T14:32:09.153Z","avatar_url":"https://github.com/DiscreteTom.png","language":"Rust","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StickDeck\n\n[![version](https://img.shields.io/github/v/tag/DiscreteTom/stickdeck-rs?label=release\u0026style=flat-square)](https://github.com/DiscreteTom/stickdeck-rs/releases/latest)\n![license](https://img.shields.io/github/license/DiscreteTom/stickdeck-rs?style=flat-square)\n![rust](https://img.shields.io/badge/built_with-rust-DEA584?style=flat-square)\n\nTurn your Steam Deck into a joystick for your PC, with trackpad and gyro support!\n\n## Setup\n\n### Server Side (Steam Deck)\n\n\u003c!-- \u003e [!NOTE]\n\u003e The Steam version and the GitHub version are totally the same,\n\u003e but setup via Steam is way more easier for most users,\n\u003e and you can also get automatic updates. --\u003e\n\n\u003e [!IMPORTANT]\n\u003e The server side will be treated as a game on Steam Deck, so you can't play Steam games on PC while the server side is running on Steam Deck \u003cins\u003e**_with the same Steam account_**\u003c/ins\u003e. You can still play non-Steam games on PC, or you can register a new Steam account for the server side.\n\n\u003c!-- #### Install from Steam (WIP)\n\nJust acquire the StickDeck from Steam and download it to your Steam Deck, then no further setup is needed.\n\nNow you can proceed to the [client side setup](#client-side-pc). --\u003e\n\n#### Install from GitHub\n\n1. **_Switch to Desktop Mode on Steam Deck. All the following steps are done on Steam Deck in the desktop mode._**\n2. Download `stickdeck-vX.X.X.zip` from the [latest release](https://github.com/DiscreteTom/stickdeck-rs/releases/latest) and extract it.\n3. Run `setup.sh` in the extracted folder.\n4. Run `launch.sh` on Steam Deck, this should open a new window, but your input is not captured now. Close the window by tapping the `Exit` button.\n5. Start `Steam` client (NOT `Returning to Gaming Mode`) in the Desktop Mode. In your library, you should find a game called `Spacewar`. [Edit its input mapping](https://partner.steamgames.com/doc/features/steam_controller/getting_started_for_devs#14) so that all the inputs are mapped to the correct game actions.\n6. Run `launch.sh` again, click `Start Server`, now you should see the input when you press buttons or move joysticks on Steam Deck.\n7. Now you can exit by tapping the `Exit` button. Next time you want to start the server, just run `launch.sh` and click `Start Server`.\n\n\u003e You can also add `launch.sh` as a non-Steam game on Steam Deck, so you can start the server directly from Steam Deck's Gaming Mode.\n\n### Client Side (PC)\n\n1. Install [ViGEm Bus Driver](https://github.com/nefarius/ViGEmBus) and **_restart_** your PC.\n2. Download `stickdeck-win-vX.X.X.zip` from the [latest release](https://github.com/DiscreteTom/stickdeck-rs/releases/latest) and extract it.\n\n## Usage\n\n### General\n\n1. Start the server on Steam Deck. Make sure the server is running and the input is captured.\n2. Make sure your PC and your Steam Deck are in the same network.\n3. Make sure the client on your PC is under the same minor version as the server on Steam Deck.\n4. Run `launch.bat` on your PC. Once you see `Virtual controller is ready` in the console, StickDeck is ready.\n5. (Optional) If you want to test the controller, run `joy.cpl` (which is a built-in Windows joystick test tool).\n\n\u003e [!NOTE]\n\u003e By default the client will try to connect `steamdeck:7777`. If you want to connect to a different server, you can edit `launch.bat`, replace the `steamdeck` with your server IP.\n\u003e You can find the server IP on the first line of the StickDeck UI window while the server is started.\n\n### Mouse Actions\n\nStickDeck supports mouse move, mouse buttons and mouse wheel. You can configure the trackpad and gyro to control the mouse movement or mouse wheel,\nand map any action to mouse buttons.\n\n## FAQ\n\n- Poll/update rate?\n  - Depends on the configurable input update interval. In my case, set the input update interval to 3ms to reach the max update rate of 250+Hz.\n  - Besides, the server side will only send the input when there is a change, so the actual update rate will be lower than the configured rate.\n  - You can checkout the actual update rate on the PC side by running `debug.bat`.\n\n## Credit\n\n- [ViGEm Bus Driver](https://github.com/nefarius/ViGEmBus)\n- [stickdeck (PoC version made with Python)](https://github.com/DiscreteTom/stickdeck)\n- [kontroller](https://github.com/DiscreteTom/kontroller/)\n\n## [CHANGELOG](./CHANGELOG.md)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiscretetom%2Fstickdeck-rs","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdiscretetom%2Fstickdeck-rs","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdiscretetom%2Fstickdeck-rs/lists"}