{"id":34005,"date":"2025-06-12T18:30:04","date_gmt":"2025-06-13T01:30:04","guid":{"rendered":"https:\/\/www.podfeet.com\/blog\/?p=34005"},"modified":"2025-06-13T06:57:50","modified_gmt":"2025-06-13T13:57:50","slug":"virtual-streamdeck-devices","status":"publish","type":"post","link":"https:\/\/www.podfeet.com\/blog\/2025\/06\/virtual-streamdeck-devices\/","title":{"rendered":"Elgato Brings Us Virtual Stream Deck Devices"},"content":{"rendered":"<h2>The Problem to be Solved<\/h2>\n<p>Certain hardware devices seem to go into vogue, and everyone who&#8217;s anyone with a microphone seems to be talking about it, and then after a while, you don&#8217;t hear anything about it. When everyone first started talking about the Stream Deck from Elgato, I wanted to be one of the cool kids and bought the <a href =\"https:\/\/www.elgato.com\/us\/en\/p\/stream-deck-xl\" target=\"_blank\" rel=\"noopener\">32-button version<\/a>. I programmed up quite a few buttons, and even created multiple profiles to give me easy access depending on the task at hand.<\/p>\n<p><a href =\"https:\/\/www.elgato.com\/us\/en\/p\/stream-deck-xl\" target=\"_blank\" rel=\"noopener\"><\/p>\n<figure style=\"float: center; margin: 10px\"><img decoding=\"async\" src=\"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2025\/06\/Stream-Deck-XL-32-button.png\" alt=\"Stream Deck XL 32-button.\"  title=\"Stream Deck XL 32-button.png\" width=\"400 \" height=\"\"><figcaption style=\"text-align:center\">32-Button Stream Deck XL<\/figcaption><\/figure>\n<p><\/a><\/p>\n<p>Unlike many fad devices, I still use my Stream Deck, but I have to be honest and tell you that there&#8217;s one thing that holds me back from using it as much as I thought I would. I use a MacBook Pro connected to the Stream Deck on my desk, but I also use a MacBook Air that\u2019s very rarely connected to the Stream Deck on my desk. I travel a fair bit, and I often want to or need to do things that are programmed into the Stream Deck, but I\u2019m not going to carry it with me. This means that I have the cognitive load of remembering two ways to do the same thing.<\/p>\n<p>Let\u2019s take a simple example. When I import the recording of Bart and me from Security Bits into my audio editing software <a href=\"https:\/\/hindenburg.com\">Hindenburg<\/a>, the file comes in on one stereo track. For editing, I want to split that stereo track into two mono tracks.<\/p>\n<p>Under the Tools menu in Hindenburg, you can select Split Stereo. I found choosing from a dropdown menu tedious, so years ago I convinced the developers of Hindenburg to add a keystroke, and I suggested Option-T and they added it just for me. Sweet. When I got my Stream Deck, I took it up a notch and designed a little graphic that made sense to me, and assigned the hotkey Option-T to the button.<\/p>\n<p>When I\u2019m on my MacBook Air doing recording and editing, I need to remember to use Option-T, and when I\u2019m at my desk, I need to remember to reach with my left hand, look at the Stream Deck to find the split button, and then push it.  That\u2019s two different actions to perform the same function. I don\u2019t know about you but I can barely remember how to do things one way, let alone two ways. Option-T is easier and works in both places, so I sincerely forgot until recently that I even had that button on my Stream Deck to split tracks in Hindenburg..<\/p>\n<p>Let\u2019s take a weirder example. When I\u2019m done recording the NosillaCast and I\u2019m waiting for it to be transformed by <a href=\"https:\/\/www.podfeet.com\/blog\/2023\/05\/auphonic\/\">the wonder that is Auphonic<\/a>, I make a copy of everything in my top-level blog post for the episode in MarsEdit, and move it over to Feeder in a different format.  The blog post has every major link I want to include in the shownotes for your podcatcher, but it\u2019s also got a lot of other flotsam I need to remove. I want the feed to have just the links, followed by my referral links, and I want it all in a bulleted list.<\/p>\n<p>In 2021, I wrote up how I automated this process: <a href=\"https:\/\/www.podfeet.com\/blog\/2021\/04\/automation-url-mars-edit-feeder\/\">Fun Automation Project \u2013 Moving Blog Post Links to the Podcast Feed<\/a><\/p>\n<p>With a little bit of help from Allister and a few other folks, I wrote my own Regular Expression to find just the links, and I wrapped it in a Keyboard Maestro macro. The macro copies everything from the blog post in MarsEdit, runs it through the Regular Expression to reformat it, adds the referral links (which calls a TextExpander snippet), and then pastes all of it into the open entry in Feeder for the current show.  It\u2019s quite magical to watch.<\/p>\n<p>I just reread my blog post and at the end I said that it took me seven hours to write, but will only save 5 minutes a week. I calculated that it wouldn\u2019t be for another 19 months till I\u2019d break even. But guess what? That was in April of 2021, so I\u2019m now 31 months ahead!  Anywho, back to the plot at hand. I was running out of keystroke ideas when I wrote the macro, so I just mashed down most of the keys on my keyboard to run the macro: Command-Control-Option-Shift-U.<\/p>\n<p>If anything sounds like a candidate for a button on a Stream Deck, this should be it.  I assigned a button, added the Feeder logo, splatted \u201cCopy 2 Feeder\u201d on top of it, and assigned Command-Control-Option-Shift-U to the key.<\/p>\n<p>Even though this is an absurd keystroke to keep in my little pinhead (as Dorothy would say), I still forget I have a button on the Stream Deck for it. Sometimes, like when I\u2019m on the road at Lindsay\u2019s for the live show, I still have to mash those keys down because I don\u2019t carry the Stream Deck along. Also, I learned to mash all the keys down before I got the Stream Deck, so it\u2019s sort of stuck in there.<\/p>\n<p>I started this article by saying I still use my Stream Deck, and I do, but the utility is reduced by not having it connected everywhere I go.  I could have paid for the iOS app, which lets you use your phone or iPad as a control surface, but it was a monthly subscription, so I never pursued it.<\/p>\n<h2>Enter Virtual Stream Deck Devices<\/h2>\n<p>Elgato, makers of Stream Deck, have come out with something even cooler than a mobile control surface. <a href=\"https:\/\/www.elgato.com\/us\/en\/s\/virtual-stream-deck\">Version 7 of the Stream Deck &#40;currently in early access&#41;<\/a>, allows you to create a <em>virtual<\/em> Stream Deck device.  With a virtual device, you can put buttons right on your Mac\u2019s screen to run your automations without the Stream Deck hardware.<\/p>\n<p>Before you get too excited, you have to own a physical Stream Deck to create virtual devices. Once you install Version 7 of the Stream Deck software and then plug in a physical Stream Deck, you\u2019ll get a new menu choice under the dropdown in the upper left. For a long time, you could add a mobile device, but now you\u2019ll see \u201cAdd Virtual Device\u201d. I think I remember reading that you have to plug in a physical device every 30 days or so to retain this capability.  Seems like a legit way to make sure people still pay for what they\u2019re getting.<\/p>\n<figure style=\"float: center; margin: 10px\"><img decoding=\"async\" src=\"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2025\/06\/Virtual-device-from-dropdown.png\" alt=\"Add Virtual device from dropdown.\"  title=\"Virtual device from dropdown.png\" width=\"505 \" height=\"389\"><figcaption style=\"text-align:center\">Add Virtual Device&#8230;<\/figcaption><\/figure>\n<p>Choosing Add Virtual Device\u2026 from the dropdown will create \u201cVirtual Stream Deck 1\u201d, which you can rename. In the software, it will default to a 3&#215;2 matrix of empty buttons, <em>and<\/em> the same empty buttons will appear in the upper left of your screen.  Just like with a real Stream Deck, you can add actions to the buttons and graphics and assign macros. As you work in the app, you\u2019ll see the buttons filling in accordingly in the virtual on-screen Stream Deck device.<\/p>\n<p>It seemed natural to me to build a virtual Stream Deck that gave me quick access to the buttons I actually use most often from my physical Stream Deck. Rather than recreate them, I decided to copy them from the originals on my physical device.<\/p>\n<p>This is an easy but tedious process in the Stream Deck application. You have to flip back and forth between the real and virtual Stream Deck devices using a dropdown menu, and \u2318C and \u2318V do not work to copy from one device to the other. You have to right-click and pull down to copy, use the dropdown menu to flip to the other device, then right-click and choose paste. For a device that\u2019s all about efficiency and automating things, I\u2019d sure love to see a drag-and-drop process for this! Ok, enough whining.<\/p>\n<p>Virtual devices can have separate profiles and folders for organization, just like a real Stream Deck device. I\u2019ve never enabled this function, but virtual and real Stream Deck devices can have a profile of buttons that appear based on one specific application being open.  You can even add multiple pages to profiles for virtual devices.<\/p>\n<h2>Display Settings<\/h2>\n<p>I mentioned that when you first add a virtual device to your screen, you get a 3&#215;2 matrix of buttons. Unlike a physical Stream Deck, you&#8217;re not constrained to that layout configuration or to only six buttons. To the right of the name of your virtual device, there&#8217;s an icon that looks like two sliders. Which gives you a whole slew of display settings.<\/p>\n<p>You get an area to control the layout with the number of rows and columns you\u2019d like, with up to an 8&#215;8 grid.This is super handy because if you lay in some buttons but then realize you want to rearrange them, you can add more rows or columns to give you holding places while you\u2019re moving them around. It\u2019s like that kids\u2019 game with a matrix of little squares you have to slide around to form a pattern, but there\u2019s only one empty square, so you have to keep moving one thing over to move something else up to move something else to the left. After you\u2019re done sliding the buttons around in the Stream Deck interface, you can go back to the Display settings and collapse the number of rows and columns to fit.<\/p>\n<figure style=\"float: center; margin: 10px\"><img decoding=\"async\" src=\"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2025\/06\/Virtual-Device-settings-options-including-button-layout.png\" alt=\"Virtual Device settings options including button layout.\"  title=\"Virtual Device settings options including button layout.png\" width=\"248 \" height=\"476\"><figcaption style=\"text-align:center\">Virtual Device Display Settings<\/figcaption><\/figure>\n<p>In the same settings panel, you can set a hotkey to toggle your virtual device on and off, but this hotkey only works when the Stream Deck app is running. It\u2019s probably a good time to mention that in past versions (6 and below), Stream Deck was one of these weird apps that\u2019s running but you can\u2019t see it in \u2318-tab for app switching or in the Dock. I have never known what that kind of app is called, so I asked Claude, and it said these apps are called \u201cagent\u201d or \u201cbackground\u201d applications, and more specifically, it means they have their Launch Services User Interface Element set to \u201ctrue\u201d. So now you know. I\u2019ll keep calling them \u201cthose weird apps that don\u2019t show in \u2318-Tab or the Dock\u201d.<\/p>\n<p>Version 7 beta of Stream Deck is now a normal app, not a weird app.  But it\u2019s still a little bit weird. Like I said, using the hotkey to toggle on the virtual Stream Deck doesn\u2019t work if you quit the app. By quit the app, I mean use \u2318-Q or from the menu, File \u2192 Quit. I know that sounds obvious, but here\u2019s why I\u2019m being so specific. If you use the red dot in the upper left of the Stream Deck interface, the app disappears from being a foreground app as though you\u2019ve quit it, but the virtual Stream Deck remains on screen. This means you can use the hotkey you\u2019ve assigned to toggle the virtual Stream Deck on and off without having to launch Stream Deck. After using the red dot to close Stream Deck, it\u2019s no longer visible in \u2318-Tab, and it\u2019s gone from the Dock, but it remains as a menu bar app. Now what do we call it? Half-weird?<\/p>\n<p>Let\u2019s get back to what else you can configure in your virtual Stream Deck. You can set the onscreen buttons ( evidently called the panel) to auto-hide when the cursor leaves the panel and\/or after an action is triggered. In my initial testing, I thought I wouldn\u2019t like either of those options, but as I learned more, I found a good reason at least one of them might be great. We\u2019ll get to the reason in a moment.<\/p>\n<p>Let\u2019s say you\u2019ve created a 3&#215;4 grid of icons, but you\u2019ve only filled 10 of the 12 available slots. In layout settings, you can choose to hide empty keys. By default, the panel on which your buttons sit is a light grey rounded rectangle. If you choose to hide empty buttons, the rounded rectangle beautifully sculpts around that one button alone on the row. It\u2019s really a delightful effect. <\/p>\n<figure style=\"float: center; margin: 10px\"><img decoding=\"async\" src=\"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2025\/06\/Hide-empty-buttons-shows-3x3-then-one-alone-on-a-row-when-10-of-12-buttons-filled.png\" alt=\"Hide empty buttons shows 3x3 then one alone on a row when 10 of 12 buttons filled.\"  title=\"Hide empty buttons shows 3x3 then one alone on a row when 10 of 12 buttons filled.png\" width=\"241 \" height=\"334\"><figcaption style=\"text-align:center\">Virtual Stream Deck Device with Hide Empty Buttons<\/figcaption><\/figure>\n<p>From the display settings, you can also change the size of the keys, their opacity, and the color of the panel around them. I messed around with some truly garish colors for the panel around the keys, but then found that by reducing the intensity, I could create a pleasing look that was noticeable but not quite so jarring. Increasing the size of the keys could make the virtual Stream Deck more accessible to those with low vision, but don\u2019t kid yourself into thinking anything else in Stream Deck is accessible. VoiceOver can\u2019t access most of the interface, I\u2019m afraid.<\/p>\n<p>At the top of the display settings dropdown, there are two tabs: Fixed and Dynamic. I found this very confusing at first, because toggling between the two tabs at the top doesn\u2019t change what options are available below. You might think the auto-hide features had to do with dynamic, but that\u2019s not it either. I asked the bot on the Elgato support pages for help, and it took me to <a href=\"https:\/\/help.elgato.com\/hc\/en-us\/articles\/35492041288337-Elgato-Stream-Deck-How-to-Add-and-Remove-a-Virtual-Device-Virtual-Stream-Deck?utm_lp=forethought-chat\">some documentation that cleared it up<\/a>, but only because they used different terminology than in the app. Instead of calling the two tabs Fixed and Dynamic, they called them <em>Docked<\/em> and Dynamic.<\/p>\n<p>Fixed (or docked) means the virtual keys are always available in a consistent location on your screen. Dynamic means that when you hit your hotkey to enable the keys, they show up wherever your cursor happens to be when you toggle it on.  My first thought was to be repulsed at that level of anarchy. But what if you set the virtual keys to show up dynamically <em>and<\/em> turned on auto-hide after the action is triggered? With that combo, you could toggle it on, barely move your cursor to hit a key, and then have it automatically disappear. There when you want it, gone when you don\u2019t. With a big external display on my Mac, I\u2019m finding that combination to be more efficient. I don\u2019t have to drag my cursor 32 inches across the display to hit a button.<\/p>\n<p>One caveat on Dynamic vs. Fixed. If you have it set to Dynamic and the last place it opened was some rando place in the middle of your screen, and you switch it to Fixed, then that\u2019s where it will be docked. If you want it fixed say in the upper left (or any other specific location for that matter), open it there in Dynamic mode first, and only then switch it back to Fixed. At first, I thought it was a bug, but it\u2019s actually a feature if you get to choose where the fixed\/docked location is on your screen.<\/p>\n<figure style=\"float: center; margin: 10px\"><img decoding=\"async\" src=\"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2025\/06\/Stream-Deck-Software-and-virtual-Stream-Deck-both-showing-the-same-buttons.png\" alt=\"Stream Deck Software and virtual Stream Deck both showing the same buttons.\"  title=\"Stream Deck Software and virtual Stream Deck both showing the same buttons.png\" width=\"599 \" height=\"467\"><figcaption style=\"text-align:center\">Stream Deck Software Configuring Virtual Device<\/figcaption><\/figure>\n<h2>Bottom Line<\/h2>\n<p>The bottom line is that I\u2019m super excited about having virtual Stream Deck devices. The one thing I wish for is a way to sync Stream Deck settings across devices. While you can export a backup of an entire device (physical or virtual) and import it on another Mac, that\u2019s pretty clumsy when you just want to tweak a single button. I\u2019d like to be able to sync my new virtual device on my MacBook Pro over to my MacBook Air, but I haven\u2019t yet figured out the best way to do that.<\/p>\n<p>Wes Higbee produced a video entitled <a href=\"https:\/\/www.youtube.com\/watch?v=9YdyXMkv0dA\">StreamDeck Profiles Sync b\/w Accounts and Machines<\/a> that seems promising. The video is not for the faint of heart as he spends most of his time in Terminal traversing the user Library and Application support files from Elgato. He does this to explain how he figured it out and to prove that his solution works. His actual solution is just one step, but still a bit nerdy.<\/p>\n<p>He moved the folder that stores all of the profiles into Dropbox, and then created a symbolic link in each of the official Library\/Application Support locations on two Macs that point to the Dropbox folder. Now when he opens the Stream Deck software on either Mac, the symbolic link modifies the appropriate files in Dropbox so the other Mac picks up the changes automatically.<\/p>\n<p>I gave it a try but I borked it up so I had to back out. I\u2019ll probably revisit this idea when I get more time, but for now, I\u2019ll do the profile backup dance like an animal. I also tried an app I\u2019m testing to sync the files (even one way), but I haven&#8217;t gotten that working either.<\/p>\n<p>But one more time, virtual Stream Deck devices from Elgato are super cool.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>The Problem to be Solved Certain hardware devices seem to go into vogue, and everyone who&#8217;s anyone with a microphone seems to be talking about it, and then after a while, you don&#8217;t hear anything about it. When everyone first started talking about the Stream Deck from Elgato, I wanted to be one of the [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":34007,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"jetpack_post_was_ever_published":false,"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_memberships_contains_paid_content":false,"footnotes":""},"categories":[147],"tags":[1821,5026,7500,7501],"class_list":["post-34005","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-blog-posts","tag-automation","tag-stream-deck","tag-virtual-device","tag-virtual-streamdeck"],"jetpack_featured_media_url":"https:\/\/www.podfeet.com\/blog\/wp-content\/uploads\/2025\/06\/Hide-empty-buttons-shows-3x3-then-one-alone-on-a-row-when-10-of-12-buttons-filled-1040x520-1.png","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/34005","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/comments?post=34005"}],"version-history":[{"count":4,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/34005\/revisions"}],"predecessor-version":[{"id":34010,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/posts\/34005\/revisions\/34010"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/media\/34007"}],"wp:attachment":[{"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/media?parent=34005"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/categories?post=34005"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.podfeet.com\/blog\/wp-json\/wp\/v2\/tags?post=34005"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}