Why there's no plugin
A Stream Deck, at heart, is a box of buttons that presses keys for you. That's the native thing it does, with no help from anyone: you tell it a button means SHIFT+1 and from then on that button means SHIFT+1 to every program on the machine.
So we didn't write a plugin. We made the console's keyboard map a first-class, configurable part of the console, and then wrote the profile down. You get the same result with less machinery, and the parts that usually break aren't there to break:
- Nothing to install. No plugin, no helper app, no service sitting in a dispatcher's tray. A fresh workstation needs a browser and the profile file.
- No port open. A plugin has to reach the console somehow, which means something listening on the dispatcher's machine or on your server. There's nothing here to reach, so there's nothing to secure or to punch through a firewall.
- Nothing to keep in step. Plugins break when the software on either side of them updates. A keystroke is a keystroke.
- It isn't only Stream Deck. Any device that sends a keystroke works the same way, and that's most of them. See Other hardware.
None of this touches our hosted platform. The keys are the console's own, they're read and acted on in the browser, and they keep working whatever the state of your subscription or your internet connection to us.
The short version
- Sign on to the console. Everything below already works, out of the box.
- Open SETTINGS → KEYS AND CONTROL SURFACE to see the whole map, and change anything you don't like.
- Give each button on your hardware one of those keystrokes. For a Stream Deck MK.2, import our profile and skip the typing.
Setting up a Stream Deck
Import the profile
Download sals-kewl-dispatch-mk2.streamDeckProfile and double-click it, or use
Stream Deck → Preferences → Profiles → the + at the bottom → Import. It lands as a
profile called Sal's Kewl Dispatch and lays out fifteen buttons like this:
LATCHTG 1TG 2TG 3TG 4 MONTG
▲ PREVTG
▼ NEXTALERT
1ALERT
2 MUTETONE
OUTEMERG
ACKEMERG
CLEARALERT
3
It's worth setting the profile to activate automatically when your browser is in front, so the deck goes back to whatever else you use it for when the console isn't the window you're looking at. That's the application dropdown at the top of the profile list.
We wrote this profile from Elgato's published profile format rather than by exporting one from a device, so import it and press a couple of buttons before you hand it to your dispatchers. If anything in it is wrong, building it by hand takes about five minutes and the next section says how.
Or build it by hand
Every button is the same two steps, and it's the stock Stream Deck action, not one of ours:
- Drag System → Hotkey onto a button.
- Click the Hotkey field and press the key from the table below. Give the button a title you can read at a glance.
For transmit, use TRANSMIT LATCH (SHIFT+SPACE) rather than push to talk. A Stream Deck button sends a keystroke as a tap, so the console can't tell how long you held the button down. The latch is built for that: one press opens the channel, the next one closes it, and the button lights the way any toggle does. Push to talk on SPACE is still there for the keyboard, and a foot switch is the better answer if you want to hold.
The keys
This is the console as it ships. Lane numbers follow what's on your screen, so 3 is the third module in your own arrangement on the tab you're looking at, not the third talkgroup in the codeplug.
TRANSMIT
| Key | What it does |
|---|---|
| SPACE | PUSH TO TALK ON SELECT |
| SHIFT+SPACE | TRANSMIT LATCH (PRESS ON, PRESS OFF) |
TALKGROUPS
| Key | What it does |
|---|---|
| DOWN | SELECT THE NEXT TALKGROUP |
| UP | SELECT THE PREVIOUS TALKGROUP |
| M | MONITOR THE SELECTED TALKGROUP |
| 1 | SELECT TALKGROUP 1 ON SCREEN |
| 2 | SELECT TALKGROUP 2 ON SCREEN |
| 3 | SELECT TALKGROUP 3 ON SCREEN |
| 4 | SELECT TALKGROUP 4 ON SCREEN |
| 5 | SELECT TALKGROUP 5 ON SCREEN |
| 6 | SELECT TALKGROUP 6 ON SCREEN |
| 7 | SELECT TALKGROUP 7 ON SCREEN |
| 8 | SELECT TALKGROUP 8 ON SCREEN |
ALERTS AND PAGING
| Key | What it does |
|---|---|
| SHIFT+1 | ALERT 1 (STEADY) |
| SHIFT+2 | ALERT 2 (PULSED) |
| SHIFT+3 | ALERT 3 (HI-LO) |
| T | OPEN THE PAGER TONE-OUT |
EMERGENCY
| Key | What it does |
|---|---|
| A | ACKNOWLEDGE: GO TO THE EMERGENCY |
| SHIFT+C | CLEAR THE OLDEST EMERGENCY |
AUDIO
| Key | What it does |
|---|---|
| SHIFT+M | MUTE EVERYTHING |
Reserved
These three cannot be rebound, and nothing else can take them.
| Key | What it does |
|---|---|
| CTRL+K | COMMAND PALETTE |
| ESC | CLOSE WHAT IS OPEN |
| CTRL+1 | SWITCH TO TAB 1 THROUGH 9 |
| CTRL+0 | SWITCH TO THE OTHER TAB |
A few that deserve a sentence
- ACKNOWLEDGE moves your selected talkgroup onto the one the emergency came in on, so your next transmission goes to that unit. It clears nothing. If the emergency is on a talkgroup your position doesn't carry, the console says so instead of doing something quietly wrong.
- CLEAR clears the oldest active emergency, exactly as the CLEAR button on the emergency bar does.
- MONITOR acts on the talkgroup you have selected, which is the gesture it's for: select a channel, turn MON on, move on, and you keep hearing it.
- OPEN THE PAGER TONE-OUT opens the window. Picking the sets and the stations is a decision, so we didn't put a tone-out behind a single button press.
Changing a key
Open SETTINGS → KEYS AND CONTROL SURFACE. Click the key beside an action, then:
- press the key you want, and it's taken;
- press BACKSPACE to leave that action with no key at all;
- press ESC to walk away without changing it.
Two actions can't share a key. If you pick one that's already taken, the console refuses it and tells you which action has it, so you can decide what to do rather than discovering next shift that something stopped working. The reserved keys above are refused the same way.
Your map is saved against your dispatcher account, not against the position, so it follows you to the next desk and the next browser. Two people sharing a position don't inherit each other's keys. RESET TO DEFAULTS under the list puts back everything in the table above and nothing else.
If you rebind anything, re-record it on your hardware too. The console doesn't know your Stream Deck exists, which is the whole point, and that cuts both ways.
Other hardware
Everything on this page works with anything that sends a keystroke, which covers more than people expect:
- Stream Deck Mini, MK.2, +, XL and Neo. The profile here is cut for the MK.2's fifteen keys. On a Mini or an XL, import it and move the buttons, or build the handful you want from the table.
- Loupedeck, X-keys, Elgato Pedal, and the macro keys on a gaming keyboard. Same approach: one keystroke per button.
- A USB foot switch. This is the one piece of hardware we'd actually recommend buying. Program it to SPACE and you have real push to talk with both hands free, which is what a dispatcher does all shift.
- A plain keyboard. It all works already. Lots of dispatchers never want anything else.
Buttons that aren't keystrokes won't work, and we'd rather say so than have you find out: a device whose software only sends its own proprietary events, or which needs a plugin to do anything, needs that plugin here too, and we don't ship one.
Worth knowing
- Typing wins. While a text box has focus, nothing in the key map fires. A dispatcher writing a text page can use the space bar and the digits like anybody else, and won't key the radio or clear an emergency doing it. Only the palette and ESC reach past a text field, because those are how you get out of one.
- Keys follow physical position, not the printed letter. If your keyboard isn't a US layout, the key in the same place as a US M is the one that works, which is what you want from a box of buttons. Rebind it if you'd rather it matched the print.
- The browser window has to be the one in front. A keystroke goes to whatever has focus, so clicking into another window stops the keys working, and the console drops any held transmission when it loses focus rather than leaving your channel open.
- Lane numbers are what you see. Rearranging modules or switching tabs changes what 1 through 8 select, on purpose: the numbers follow the screen the person pressing them is looking at.
- A key can only do what you could. Every one of these calls the same thing the on-screen button calls, and the game server decides the same way it always does. A key can't reach a talkgroup your personality doesn't carry.
When it doesn't work
A button does nothing
Click once on the console page first. Then check that the key the button sends is the key the console has, under SETTINGS. If you changed a binding and forgot to re-record it on the hardware, this is the symptom.
The browser does something instead
A few combinations are the browser's before they're ours. CTRL plus a digit switches browser tabs in some browsers, which is why nothing in the table above uses CTRL except the three reserved keys. If you rebind something onto a combination your browser wants, you'll see the browser win. Pick another key, or run the console in a dedicated window.
Transmit cuts off straight away
You're on push to talk from a device that taps the key rather than holding it. Use the transmit latch instead.
Transmit stays open
With the latch, press it again. The console also drops a transmission on its own if the window loses focus, is hidden, or the position times out, so a latch left open isn't permanent.