{"id":19894653,"url":"https://github.com/fritzandfriends/streamdeckemulator","last_synced_at":"2025-05-02T20:30:41.743Z","repository":{"id":34043254,"uuid":"166723617","full_name":"FritzAndFriends/StreamDeckEmulator","owner":"FritzAndFriends","description":"A simple emulator for the Stream Deck Application to allow plugin developers to test their plugins","archived":false,"fork":false,"pushed_at":"2022-04-10T01:17:34.000Z","size":70,"stargazers_count":53,"open_issues_count":8,"forks_count":4,"subscribers_count":5,"default_branch":"dev","last_synced_at":"2025-04-07T05:11:11.162Z","etag":null,"topics":["javascript","nodejs","streamdeck"],"latest_commit_sha":null,"homepage":null,"language":"JavaScript","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/FritzAndFriends.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2019-01-21T00:13:21.000Z","updated_at":"2025-01-23T19:15:20.000Z","dependencies_parsed_at":"2022-08-07T23:31:37.121Z","dependency_job_id":null,"html_url":"https://github.com/FritzAndFriends/StreamDeckEmulator","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FritzAndFriends%2FStreamDeckEmulator","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FritzAndFriends%2FStreamDeckEmulator/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FritzAndFriends%2FStreamDeckEmulator/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/FritzAndFriends%2FStreamDeckEmulator/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/FritzAndFriends","download_url":"https://codeload.github.com/FritzAndFriends/StreamDeckEmulator/tar.gz/refs/heads/dev","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":252103915,"owners_count":21695387,"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","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":["javascript","nodejs","streamdeck"],"created_at":"2024-11-12T18:34:13.201Z","updated_at":"2025-05-02T20:30:41.487Z","avatar_url":"https://github.com/FritzAndFriends.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# StreamDeckEmulator\n\nA simple emulator for the Stream Deck Application to allow plugin developers to develop, test, and debug their plugins without requiring a physical [Stream Deck][] device.\n\n\n## Pre-requisites\n\nIn order to be able to run this emulator, you will need to have [Node.js][] installed. The most recent \u003cabbr title=\"Long Term Service\"\u003eLTS\u003c/abbr\u003e is suggested.\n\n## Setup\n\n```bash\nnpm i -g streamdeckemulator\n```\n\n## Usage\n\n### Run the Emulator on a Specific Plugin\n\n```bash\nsde -p /path/to/built/streamdeck/plugin -e nameofplugin\n```\n\n### Using the Emulator\n\n\n## Local Development\n\n### Runing local to the cloned repository\n\n#### Getting Started\n\n1. Clone the repository using git: `git clone https://github.com/FritzAndFriends/StreamDeckEmulator.git`.\n2. Change directory to the repository: `cd StreamDeckEmulator`.\n3. Run `npm install`.\n4. Create a copy of the .env_sample file: `cp .env_sample .env`.\n5. Update `.env` file to set your environment specific values.\n   1. Update the value of `BUILD_PATH` to be the build output path of your plugin's executable.\n   *Note*: Make sure you use the correct path syntax for your operating system.\n   2. Update the value of `WINEXE_NAME` (if you're on Windows) or `OSXEXE_NAME` (if you're on macOS) to be the filename of the your plugin's executable.\n6. Run `npm start` to launch the emulator.\n\n\n#### Starting and Stopping the Emulator\n\n1. Open a command prompt/terminal/shell and navigate to the current directory.\n2. Start the emulator with the command `npm start`\n3. When you are done, use the `q` option to shut down the emulator.\n\n### Running as a global tool\n\n1. Clone the repository using git: `git clone https://github.com/FritzAndFriends/StreamDeckEmulator.git`.\n2. Change directory to the repository: `cd StreamDeckEmulator`.\n3. Run `npm install`.\n4. Run `npm link`\n\n### Using the Emulator\n\n#### Simulating events\n\nAt this time, the following are the events supported by the emulator, and their associated keyboard commands.\n\n* `keyDown` (\u003ckbd\u003ekd\u003c/kbd\u003e)\n* `keyUp` (\u003ckbd\u003eku\u003c/kbd\u003e)\n* `willAppear` (\u003ckbd\u003ewa\u003c/kbd\u003e)\n* `willDisappear` (\u003ckbd\u003ewd\u003c/kbd\u003e)\n* `deviceDidConnect` (\u003ckbd\u003edc\u003c/kbd\u003e)\n* `deviceDidDisconnect` (\u003ckbd\u003edd\u003c/kbd\u003e)\n\n#### Caveats, Limitations, and Known Issues\n\n**Caveat**: The emulator will only send events to the first action defined in the `manifest.json` (manifest) file.  \n**Workaround**: To test a different action, move its definition to the top of the `actions` array in the manifest.  \n\n**Issue**: If, for any reason, when sending a command to the plugin, the websocket connection is closed or otherwise broken, no further messages can be sent.  \n**Workaround**: Quit the emulator (using the \u003ckbd\u003eq\u003c/kbd\u003e command) and restart it.  \n\n**Issue**: If the emulator is force quit (using \u003ckbd\u003eCtrl\u003c/kbd\u003e+\u003ckbd\u003eC\u003c/kbd\u003e), the WebSocket connection *may* not be closed, and the configured port *could* remain in use.  \n**Workaround**: Find if there is an instance of `node` running for the `index.js` script, and end it. This varies per operating system.  \n\nYou should now have the CLI command `sde` installed globally as if it were installed via NPM.\n\n\u003c!-- Reference Links --\u003e\n\n[Stream Deck]: https://www.elgato.com/gaming/stream-deck/ \"Elgato's Stream Deck product page\"\n\n[Node.js]: https://nodejs.org/ \"Learn about and get Node.js\"\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffritzandfriends%2Fstreamdeckemulator","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ffritzandfriends%2Fstreamdeckemulator","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ffritzandfriends%2Fstreamdeckemulator/lists"}