Skip to content

Latest commit

Β 

History

8 Commits

Folders and files

NameName
Last commit message
Last commit date
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 
Β 

Repository files navigation

VR Macro Pad

VR Macro Pad

Colored push-button macros and live mini screens for Windows. Use it on your desktop, or float it in VR as a real SteamVR overlay.

Download License: MIT Windows 10/11

Downloads Stars Electron Made for VR

Website Β· Download Β· Build a plugin Β· Full guide


VR Macro Pad as a SteamVR overlay: a deck floating in front of you, a copy on the wrist, and the editor in the SteamVR dashboard

✨ What is it?

A grid of big, colored buttons that run macros, plus mini screens that show live information (SteamVR battery, the song playing, your stream's ad timer and viewers, a clock, dice...). Press a button and it mutes your mic, switches your OBS scene, sends a chat message on Twitch, Kick or YouTube, changes your Voicemod voice, shows your CPU and GPU temperature live, changes your Voicemeeter volume, posts "I'm live" to Discord, jumps in VRChat, and much more.

It is a native SteamVR overlay: grab it, move it, resize it, snap it to your wrist, or leave it in the room, all from inside VR, and edit everything without taking the headset off. No VR? It works just as well as a desktop window (and you can hide that window if you only use VR).

The VR Macro Pad window with buttons, clock, timer, dice, coin and a SteamVR battery screen

πŸ†• What's new in 3.0.2

Live hardware widgets: CPU temperature and GPU usage with graphs, an overview list, the hottest parts, network speed and drives

  • πŸ“Š Libre Hardware Monitor and πŸ–₯️ HWiNFO (new): live CPU, GPU, memory, drive and network stats as mini screens. A stat with a small graph that turns amber and red when it gets hot (CPU / GPU temperature and usage, GPU memory, power, clock, fan, memory used, drive temperature, network speed, or any sensor you pick), an overview list, "hottest parts", network speed and drives. Buttons can also light up on "the CPU is hot", "the GPU is hot", "a drive is hot" or "memory is nearly full", and a button can pop a stat up. Read-only: nothing on your PC is changed.
  • Pick whichever you like: Libre Hardware Monitor is free with no time limit (turn on its Remote Web Server). HWiNFO needs Shared Memory Support ticked and HWiNFO restarted once; the free version switches it off again after 12 hours, HWiNFO Pro does not.
  • 🧩 Plugin authors: a widget can now draw a small graph (spark). See the Plugin reference.

What's new in 3.0.1

  • 🎭 Voicemod (new): change voice (the whole list, or only Voicemod's or your Community voices), random voice, voice changer / mute / hear-myself / background effects on and off with buttons that light up to match, and play any soundboard sound (all sounds, or one soundboard: yours are found by themselves and listed first). Needs a Voicemod client key: press Instructions on the Voicemod card.
  • πŸ—£οΈ TeamSpeak 3 (new): mute your microphone or speakers and set yourself away, with buttons that follow your real TeamSpeak state. TeamSpeak 5 / 6 have no way for other apps to control them.
  • πŸŽ›οΈ Mix It Up (new): run your Mix It Up commands, send a chat message, clear chat, and turn commands on or off, through its Developer API.
  • πŸ”Ž Better pick lists everywhere: long lists (voices, sounds, scenes, actions) scroll, open showing everything, and narrow as you type, with several words in any order ("demon radio" finds "Radio Demon").

πŸ†• What's new in 3.0

Everything is a plugin now. OBS, Twitch, VRChat, Spotify, SteamVR, Voicemeeter and the rest were moved out of the app's core into plugins that you can switch on and off, and you can write your own.

Every bundled plugin: Discord, Discord Notifications, HWiNFO, Kick, Libre Hardware Monitor, Mix It Up, OBS, YouTube Music, Spotify, SteamVR, Streamer.bot, TeamSpeak 3, Twitch, Voicemeeter, Voicemod, VRChat and YouTube

  • 🧩 A real plugin system. A plugin is a folder with a few small JavaScript files: no build step, no touching the app. Drop it in, restart, and it has its own settings card, actions, mini screens, sign-in and connection status. Start with the step-by-step tutorial: Build your own plugin.
  • πŸ’¬ Discord (new): post "I'm live" messages, cards and screenshots through a webhook, share a new Steam screenshot or your last VRChat photo, and press your Discord mute / deafen / push-to-talk shortcuts.
  • πŸ”” Discord Notifications (new): mini screens that show who last messaged you, with filters for DMs, @everyone, @you and server events, and buttons that light up on a new message.
  • 🟒 Kick (new): chat, title and category, ad breaks and timeouts, live status and viewers, through Kick's official API. Press Connect and log in on Kick.
  • πŸ€– Streamer.bot (new): run your Streamer.bot actions from a button (emote-only, slow mode, clear chat, anything you built), by name and grouped like in Streamer.bot itself. It uses Streamer.bot's normal WebSocket server, so it works with the default settings and no password.
  • ▢️ YouTube (new): live chat, go live and end stream, ad breaks, title, description and category, public / unlisted / private, plus live-status and channel-number mini screens. See the note below about signing in.
  • πŸ“ Any grid size, up to 100 Γ— 100, with "Fit the whole page on screen" so a big grid shrinks to the window instead of scrolling.
  • ↩️ A Back button in the action picker, so after picking something you land where you were in the long list.
  • πŸ”„ Optional update check (off by default): Settings β†’ General β†’ Check for updates. When a new version is out you get a box with a link, a Download button and a Skip button. Portable copies save the new exe next to the old one; installed copies can install it and restart for you.
  • πŸ”Œ One connections icon in the top bar (dot and count) that opens a list, instead of one chip per plugin.
  • πŸ“– "Instructions" buttons on plugins that need a one-time setup, with numbered steps, links that open in your browser, and Copy buttons.
  • πŸŽ™οΈ Mic and speaker buttons tied to a device now follow that device's real Windows mute state.
  • 🌐 A website with the privacy policy and terms: vrmacropad.jayconius.com.

Note

YouTube sign-in: the one-click Log in with Google is not available yet. It is waiting for Google to verify the app, which I can't rush. The YouTube plugin still works today: open Settings β†’ Plugins β†’ YouTube, press Instructions, and follow the steps to make your own free Google app (about five minutes, no cost), then paste its Client ID and Secret. Once Google verifies the app, it will become a single button.

Everything from 2.0 is still here: the native SteamVR overlay with its dashboard entry and in-VR editor, button effects, your own pictures and GIFs, Voicemeeter, the SteamVR functions, VRChat OSC, and the buttons-only view. VR overlay guide

πŸ“₯ Download

πŸ’Ώ Installer Start menu + desktop shortcut, uninstaller. VR-Macro-Pad-Setup-x.y.z.exe
πŸŽ’ Portable One file, nothing to install, run it from anywhere. VR-Macro-Pad-x.y.z-portable.exe

Note

The exes are not code-signed yet, so Windows SmartScreen may say "unknown publisher". Click More info β†’ Run anyway. The first start takes a few seconds while it builds its small Windows helper programs. Your layout and settings live in %APPDATA%\VR Macro Pad, so updating (or switching between installer and portable) keeps them.

πŸš€ Quick start

  1. Start it. You get a starter layout with a mic button, volume, media and a few tools.
  2. Press a button to run it. Buttons light up to match reality (mic muted, recording, emote-only on...).
  3. Hold the πŸ”’ button for a second to unlock editing. Then drag buttons to move them, drag a corner to resize, click one to edit it, or press οΌ‹ Add button.
  4. It locks itself again a few minutes later, so a stray click in VR can never rearrange your deck.

πŸŽ›οΈ What can a button do?

πŸŽ™οΈ Audio mic mute, output mute, switch devices, volume, per-app volume
⌨️ Keyboard & system shortcuts, type text, media keys, launch programs, open links
πŸ₯½ SteamVR start / quit / restart, battery on a mini screen, supersampling, motion smoothing, brightness, dim the view, play-area bounds, performance graph, recenter
🎚️ Voicemeeter mute / solo / route, gain and fades, macro buttons, recorder, audio devices, per-app volume, any script
🎬 OBS switch scene, record, stream, save replay, mute a source
πŸ‘Ύ VRChat mic mute, chatbox (with song / time), avatar parameters and steps, game controls, walk / turn, any OSC message
πŸ’œ Twitch chat messages, emote-only, followers-only, shield mode, ads, clip, raid, title...
🟒 Kick chat, title and category, ad breaks, timeouts
▢️ YouTube live chat, go live / end stream, ad breaks, title / description / category, public / unlisted / private
πŸ€– Streamer.bot run any of your Streamer.bot actions
πŸŽ›οΈ Mix It Up run your commands, send a chat message, clear chat, turn commands on or off
πŸ“Š Libre Hardware Monitor live CPU, GPU, memory, drive and network stats, and buttons that follow "the GPU is hot"
πŸ–₯️ HWiNFO the same stats from HWiNFO's Shared Memory Support
🎭 Voicemod change voice, random voice, voice changer / mute / hear-myself / background effects, play or stop soundboard sounds
πŸ—£οΈ TeamSpeak 3 mute your microphone or speakers, set yourself away
πŸ’¬ Discord post messages, cards and screenshots, share a Steam screenshot or VRChat photo, mute / deafen / push-to-talk
🎡 Spotify play / skip, shuffle, repeat, seek, volume, and Like
▢️ YouTube Music through Pear Desktop: like, shuffle, repeat, volume
🏠 Web & smart home webhooks, Home Assistant

Every button is a list of steps with optional delays. Give it a picture or GIF (a different one when active), and an animation for its states (pulse, flash, glow, ripple, hazard stripes...) so a live mic or a running stream cannot be missed. It can also fire on its own: a hotkey, an app starting or closing, a state changing (recording started, low battery, ad coming up...), or a time of day.

πŸ“Ί Mini screens

Buttons that show live information instead of just running steps:

πŸ•’ Clock, ⏳ Timer, ⏱️ Stopwatch timers survive restarts and can run actions when they finish
πŸͺ™ Coin flip, 🎲 Dice d4 to d100, advantage / disadvantage, and they can post the result to Twitch chat
πŸ”‹ SteamVR battery headset, controllers, trackers and base stations, as a list or as pictures
🎢 Now playing album cover, title, progress, controls. Spotify and most players
πŸ“Ί Stream status Twitch, Kick and YouTube: live badge, viewers, uptime, and the countdown to your next ad
πŸ”” Discord messages who last messaged you, and buttons that light up on a new one
πŸ“Š Hardware stats CPU / GPU temperature and usage with a live graph, overview, hottest parts, network speed, drives. From Libre Hardware Monitor or HWiNFO

πŸ«₯ Buttons only (see-through)

One click on the πŸ‘ button (or Ctrl+Alt+Shift+V) makes everything except your pages and buttons fully transparent, so they float over your game or desktop.

Only the buttons and page tabs are visible, floating over a background

πŸ₯½ Use it in VR

  1. Settings β†’ VR overlay β†’ Show the deck in SteamVR, then start SteamVR. (The app never starts SteamVR itself.)
  2. Point a controller at the deck and pull the trigger. Hold the trigger on the dotted handle to grab it; carry it to your other wrist and let go to snap it there.
  3. Open the SteamVR menu: VR Macro Pad is in the bar at the bottom, with Controls and a full Editor.

It works next to XSOverlay and OVR Toolkit and with any SteamVR headset (Quest over Link / Air Link / Virtual Desktop, Index, Vive, Steam Frame streaming...). The full guide is docs/VR-OVERLAY.md.

Prefer a window capture? The desktop window still works with OVR Toolkit / XSOverlay / Desktop+, and clicking it does not steal focus from your game.

πŸ”Œ Setting up OBS, VRChat, Twitch, Kick, YouTube, Streamer.bot, Mix It Up, Voicemod, TeamSpeak 3, Libre Hardware Monitor, HWiNFO, Discord, Spotify Like, Pear...

Open Settings β†’ Plugins and expand the plugin. Ones that need a one-time setup have an Instructions button.

How
OBS Tools β†’ WebSocket Server Settings β†’ enable. Enter the port and password on the OBS card.
VRChat Action Menu β†’ Options β†’ OSC β†’ Enabled.
Twitch Connect Twitch, then approve on twitch.tv. Nothing else to set up.
Kick Connect Kick, then log in and approve on kick.com. Nothing else to set up.
YouTube Not one-click yet (Google's verification is pending). Press Instructions on the YouTube card, make your own free Google app, paste its Client ID and Secret, then Connect YouTube.
Streamer.bot In Streamer.bot: Servers/Clients β†’ WebSocket Server β†’ start it (the defaults are fine). Then the plugin lists your actions. Only fill in a password if you turned on Authentication.
Mix It Up In Mix It Up: Services β†’ Developer API β†’ Connect. Then Save and test connection on the Mix It Up card.
Voicemod Voicemod's Control API needs a client key, which you ask Voicemod for (the Instructions button has the link). Paste it on the Voicemod card and press Save and test connection. A sound or soundboard you have just added only shows up after it has been played once in Voicemod (then press ⟳).
TeamSpeak 3 In TeamSpeak 3: Tools β†’ Options β†’ Addons β†’ ClientQuery β†’ Settings, copy the API key into the TeamSpeak 3 card, connect to a server, then Save and test connection.
Libre Hardware Monitor Run Libre Hardware Monitor (as administrator, so it can read every sensor), then Options β†’ Remote Web Server β†’ Run. Press Save and test connection on its card.
HWiNFO In HWiNFO Settings (General / User Interface tab) tick Shared Memory Support, press OK, then restart HWiNFO (close it completely, also from the tray, and open it again) with its Sensors window running. The free version turns Shared Memory Support off after 12 hours: tick it again and restart. Then press Save and test connection.
Discord Channel settings β†’ Integrations β†’ Webhooks β†’ copy the webhook URL into the Discord card. The mute / deafen / push-to-talk buttons press the shortcuts you set in Discord.
Spotify Play, skip, shuffle, repeat, seek and volume need no setup and no login. Like needs a one-time connection with your own Spotify developer app (see the guide).
YouTube Music In Pear: Plugins β†’ API Server β†’ enable. Then Connect Pear.
SteamVR Nothing. It only looks at SteamVR when something needs it, and never starts it.
Voicemeeter Install Voicemeeter (Standard, Banana or Potato) and start it. Nothing to configure.

πŸ”’ Privacy and safety

  • Everything stays on your PC. The app runs a small web server on 127.0.0.1 only, protected by a secret token.
  • Logins (Twitch, Spotify, Kick, YouTube...) are stored encrypted with your Windows account, never in your layout file, so sharing a layout never leaks them. The one exception: a Client ID / Secret you type into a plugin's settings box is saved in your settings file in plain text (and is left out when you export a layout).
  • Kick's and YouTube's one-click sign-in goes through a tiny free relay that only swaps the sign-in code for a token (those services need a secret the app can't safely carry). It stores nothing. Details: Privacy policy.
  • The update check is off by default. When on, it asks GitHub for the latest release number and nothing else, and it downloads only from this project's releases, verifying size and checksum first.
  • Editing (and linking accounts) is locked by default and can be limited to a hotkey or the tray menu.

⚠️ Honest limits

  • Windows only.
  • YouTube's one-click sign-in is not available yet (waiting on Google's app verification). Use your own Google app for now (Instructions button). Once verified, anyone will be able to log in with one click, and it will still show Google's normal permission screen.
  • Hardware stats were tested against a real Libre Hardware Monitor and a real HWiNFO. Which sensor counts as "the CPU temperature" is picked automatically (the package temperature, or the GPU that is busiest); any reading can be picked by hand instead. HWiNFO must be restarted after Shared Memory Support is ticked, and the free version stops sharing after 12 hours.
  • Tried less in 3.0.1: Voicemod was tested against a real Voicemod. Mix It Up and TeamSpeak 3 were built from their official documentation and tested against stand-ins, not yet against the real apps. Reports welcome!
  • Voicemod only tells other apps about a sound after it has been played once in Voicemod, and never says which voices are on a soundboard (only which sounds), so voices have no soundboard lists.
  • The YouTube plugin has no actions that target one viewer (bans, timeouts) on purpose, and Kick has no ban / unban either: they are slow and error-prone to do from inside VR.
  • Tried on real hardware: the overlay, the dashboard entry and editor. Not tried on real hardware yet: the SteamVR battery screen, Voicemeeter (built against VB-Audio's official documentation and a built-in test double), headset brightness (depends on the headset's driver; "Dim the view" works everywhere), and the SteamVR keyboard in the VR editor. Reports welcome!
  • Spotify Like talks to Spotify's Web API, which (since Feb 2026) only lets a development-mode app work while its owner has Premium, for up to 5 people. So each person uses their own Client ID.
  • Keystrokes can't be sent into programs running as administrator unless VR Macro Pad runs as administrator too.
  • The overlay needs SteamVR. There are no controller bindings yet (grab and click use the laser and trigger).
  • The "install and restart" update path (installed copies) has had less real-world testing than the rest; if it ever misbehaves, download the Setup from the release page and run it yourself.
  • OVR Advanced Settings cannot be controlled from other apps, so its features are done directly where SteamVR allows (supersampling, brightness, bounds...). VRChat's web API (friends, status) is not used.

🧩 Write your own plugin

Every integration above is a plugin, and yours works exactly the same way: a folder with a few small JavaScript files, no build step. Two guides:

πŸ› οΈ Build it yourself

git clone https://github.com/Jayconius/VRMacroPad.git
cd VRMacroPad
npm install
npm start          # run it
npm test           # 388 tests
npm run dist       # build the installer and portable exe into dist/

Needs Node.js. The full guide (every setting, how to add an action or a mini screen) is in docs/GUIDE.md.

Two files are deliberately not in the repository: the address of the private sign-in relay for Kick and YouTube (plugins/kick/kick-app.json, plugins/youtube/youtube-app.json; examples sit next to them). Without them, a source build still works, and Kick / YouTube use your own developer app.

πŸ™ Credits

  • OpenVR SDK by Valve (BSD-3), used for the overlay and to read SteamVR batteries and settings.
  • Voicemeeter and its Remote API by VB-Audio (the API is used through the DLL that comes with Voicemeeter; nothing of theirs is bundled).
  • Libre Hardware Monitor (MPL-2.0) and HWiNFO by Martin Malik (REALiX): the Hardware plugins only read the numbers these free programs show, through Libre Hardware Monitor's web server and HWiNFO's Shared Memory Support. Nothing of theirs is bundled.
  • Voicemod (Control API), Mix It Up (Developer API) and TeamSpeak (ClientQuery): controlled through their own official interfaces on your PC; nothing of theirs is bundled.
  • The device pictures come from the author's other app, OhFudgeMyBatteryChat (MIT).
  • Built with Electron and ws.

VR Macro Pad is an independent project. It is not affiliated with Macro Deck (a different app by SuchByte), Valve, Meta, Twitch, Kick, Google / YouTube, Discord, Streamer.bot, Spotify, OBS, VRChat, VB-Audio, Voicemod, Mix It Up, TeamSpeak, Libre Hardware Monitor or HWiNFO. Those names belong to their owners.

πŸ’¬ Contact

Made by Jayconius (jayconius.com) and Claude, an AI assistant from Anthropic. Jayconius came up with it and tested it in VR; Claude wrote the code, tests and docs.

Found a bug or want a feature? Open an issue.

Privacy policy Β· Terms

πŸ“„ License

MIT Β© 2026 Jayconius

About

Colored push-button macros and live mini screens for Windows: a native SteamVR overlay (grab, wrist, dashboard editor) or a desktop window. Voicemeeter, OBS, VRChat, Twitch, Spotify.

Topics

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages