I was really pumped about this approach of having a second specialized keypad a couple years back. So much so that I bought Elgato's Streamdeck and their later released larger pro version.
I used them with fervor, taking pains to configure them to my liking and I felt I was on the right path to something amazing.
Over time, I kept wondering to myself what I was really gaining compared to just memorizing plain keyboard shortcuts mapped to the handful of functions I assigned to the separate keypad.
Every time I saw these devices unplugged I thought about plugging them back in again only to realize the moment I was removed from my workstation, I would lose the ability to use those shortcuts from my laptop's embedded keyboard.
I guess an advantage of the separate keypad is having dedicated keys, each with their own iconography for their function. But the whole idea is these are functions that are used often, so having their access embedded in muscle memory is in my opinion the better way to accomplish this.
For me the most useful thing about stream decks is that they’re tied to particular machines while not taking up much space.
So for example I usually listen to music through my personal mac since that’s what’s hooked up to my DAC/amp and has all of my music files, even if I’m currently got my work mac hooked up to my primary screen and KB+M. While I can use key shortcuts on my personal mac through Universal Control (like Synergy, except using P2P wifi), it’s nice to not have to mouse over to my personal mac’s screen first — just use the media controls on the stream deck hooked up to that machine.
This could also be done with a small macropad like is sold at numerous keyboard enthusiast shops, but it’s not a given that I’ll have keycaps to match the mapped functions which is where the deck’s screen-keys are nice.
think of the desktop "console" like the dash on your car before touchscreens. eventually, muscle memory knows where the buttons are and you can access them without looking. it just has to be useful enough to use often enough for it to become muscle memory.
i've sat in amazement watching a colorist navigate the large panels without ever taking their eyes off the screen/scopes. there are so many knobs, roller balls, buttons that it is almost sci-fi. lots of other jobs are like this with dedicated gear, and it's part of the mystery of how they do what they do
Yesss. Watching someone who knows what they're doing at, eg, a DaVinci Resolve Micro Panel is a thing of beauty, easily rivaling the performance of a skilled musician. Too bad they don't do performances to the public.
> But the whole idea is these are functions that are used often, so having their access embedded in muscle memory is in my opinion the better way to accomplish this
The problem with keyboard shortcuts is that they're more complicated to press, often requiring two hands or at least a specific hand to press them. Having a macro pad makes it equally easy to activate an action no matter what I'm doing. Outside of programming and writing, my hand is almost always on the mouse, so two-handed or right-handed chords are out of the questions. On the left side, there aren't many combos that are easy to press one-handed and aren't used already.
Additionally, macro pads are also great for rarely-used but annoying actions. Things that aren't common enough to waste screen space or keyboard shortcuts on, but are annoying to do by clicking through menus.
I've always felt the same, but there are some static scenarios where your shortcut device will always be there and mobility is not required.
Case in point a home golf simulator. Absolutely not portable and also have noob users who need to operate the system - easier for them to click a specific labeled button for mulligan rather than needing to press ctrl-M on the actual keyboard.
I had the same process with BlackMagic's dedicated video-editing keyboards - they seem really cool at first, but it's hardly an improvement on just getting good with keyboard shortcuts and the trackpad, and then you don't have to lug around specialized hardware.
The power of stream deck is that some of the plugins are more advanced. Recreating these with hammerspoon or auto hotkeys can be difficult for some of them. For example, exiting Zoom calls.
Having said that I use my steam deck on my Mac to play audio and exit from zoom calls. On windows I had a bunch of scripts to launch tools that required multiple steps.
To verify, the only thing those benefits have to do with having an extra custom hardware keyboard is that the company that made the software to do those functions thinks they can make more money selling a fancy piece of hardware, right?
That seems like a bad take, focused on the money changing hands aspect, and ignoring the other side if that transcation. Especially these days when you could totally build it yourself. Design your own PCB, build your own enclosure, solder all the switches up and write some microcontroller firmware to drive it. Or, y'know, you could just buy the product that someone else already spent the time building if you didn't want to do all that.
Some people want a button that very satisfyingly clicks to hang up at the end of that zoom call with their boss/lover/employee/whatever. Some of them are even willing to pay money for one. Others want to build one themselves from scratch. Sounds like you're not willing to. That's okay, it's not like someone is forcing you to buy this thing. (Thankfully, desktop computers are quite open and let you connect random hardware and run random supporting software, and they aren't locked down like, say, iPhones, which you are intimately more familiar with than I.)
The person I was responding to was specifically and narrowly saying that the plugins and software were the benefit, not having the clicky button. They were saying this in response to someone who didn't want a clicky button anymore and had actively given up on using a clicky button, so they were defending the product on the merit of something that explicitly wasn't the clicky button: that having to recreate the software would be hard, and so that's why I guess that other user should buy and use a clicky button even though they realized they didn't really want to have to carry around a clicky button. If what matters to YOU is the clicky button, and you are in a good position to use the clicky button, great!! I have no issue with that, and I purposefully did not reply to anyone else who wanted such, as that is a consistent position. In fact, if someone had asked me "why do people use this product?", I would have said "many people want a clicky button, and so this company makes the clickiest of clicky buttons". But... how does anything you said here have anything to do with the context of the comment I was replying to, which explicitly was trying to sell someone who didn't want a clicky button on the idea that "the power of stream deck" is its software? :(
> what I was really gaining compared to just memorizing plain keyboard shortcuts
For me the problem is that there are many shortcuts I need but not enough to memorize them. Also like in my IDE there are so many functions a lot of the shortcuts have to be 3 keys which is a hassle, you feel like you're playing a Chopin opus if you need them back to back.
Add to that the frustration of application specific shortcuts and system shortcuts that can clobber each other depending on focus. I’ve been able to mitigate most of it with KB maestro, but I still find new issues once every few months.
I still have plans to iron out the details of making a Stream Deck push actions to time tracking software (probably Toggl but maybe not) with toggled status on the buttons.
You could probably simplify this setup a bit by using a qmk-programmable macro pad[1]. You can program the keyboard to send keypresses like F23, F24, etc, and then handle those directly. This suppressed the need for the rpi entirely.
X-Keys (mentioned by the author as his source of the relegendable keycaps) and Genovation are two manufacturers of programmable macropads popular for commercial and industrial use. Especially Genovation can be found pretty cheap on eBay (I see as low as $25 right now). If you're looking used, also consider PrehKeyTec for larger programmable keypads ranging up to full-size keyboards with triple function rows and the gap between arrow keys and navigation block filled in (magstripe reader and keyswitch too, these are mostly popular for POS applications).
I have used dedicated key pads for video/photo editing on my desktop mac for many years. I’ve found that what matters most to make it more efficient and enjoyable is the quality of the key switches.
I started with a Genovation CP24 that triggers macros in Keyboard Maestro. I was very happy with the setup, but when Stream Deck arrived I got the big one and dove into making it work for me. Stream Deck is pretty impressive but the switches on the Gennovation are just better, so I went back. With the Gennovation a finger can just reach where it needs and feel that the click has been done. I could never get that level of comfort with the Stream Deck keys.
I also found that I preferred just making a paper label and popping it under the cover worked better that the cute Stream Deck key system. I can very quickly make paper labels that visually group similar keys. I can also make a key that needs to stand out from the rest. (Such as my universal delete key that works in all applications – saves me a lot of time but I had to learn to not be hitting it by accident.) Once I have labeled my keys just as I like, I don’t change them so the Stream Deck system seems like overkill.
I now have two Genovation CP24’s and one CP48 hooked up to my mac. I am so dependent on them that I browsed eBay to pick up some spares incase I ever need them.
Keyboard Maestro is the other indispensable element to my system. I has it’s quirks but seems to me that everyone should know it (or the PC equivalent) backward and forward. I have about 50 macros that get used every day. I have 252 macros in Keyboard Maestro right now. (I keep a lot of old ones around to serve as notes for making new ones, or for when software updates make one not work.) I can work on other peoples machines but I REALLY love using mine. There is just nothing like having a dedicated key that does a series of steps that you need done very often. It frees up my mind. Some of my macros in DaVinci Resolve do many operations without me having to think about stepping through each one. Same with Pixelmator Pro.
Snap. I also use i3 and rofi. I can't imagine life without them. But the desk controller I built turns off lights and monitors, mutes audio when I forget to and more.
I run i3, so practically everything I do is driven by keyboard shortcuts.
On Windows I use AutoHotKey to achieve a similar level of support when I have to use it.
To avoid collisions I'll often bind a single key to something like "Control + Shift + Alt + Meta + F14". No application I'm aware of goes hirer than F12 and most keyboard combos require a max of 3 keys. By binding such a ridiculous number of keys to one key I don't have to contort my hand too much and I can still always find the mute key.
Often the key will trigger a script, and the script will use information such as the active window to understand the exact output. (If Zoom mute is Space, if Teams it is Ctrl+Shift+M because of course it is, if Chime forget about Mute just play a recording of me telling our account rep at AWS this is why I won't work there).
You probably don't need the Pico. You can use luamacros or HIDMacros to remap the keys of the secondary keyboard.
I used to have an emoji + response template keyboard when I was doing social media management. I used HIDMacros[0] and Espanso [1].
My current setup is HIDMacros and Autohotkeys. With AHK's
:*:;<input_text>::{
Send "<expanded_text>"
}
you can do text expansion like Espanso. Nowadays, I am using the macro setup for virtual desktop management with SylphyHorn [2]. For text expansion stuff, I am doing auto correction of commonly mistyped words like: datbase, timstamp etc.
Notably if your keyboard supports VIA, you can use https://usevia.app/#/ which directly updates the keyboard firmware with any custom mapping you want.
Web apps like above show the power of adding USB support to web standards--no more having to actually install software to interact with hardware, it's awesome.
I've been doing something similar, leveraging a Stream Deck Mini and a handful of self-written python scripts to handle my Hue bulbs, Nanoleaf, and a smart plug running an air purifier. I also have a very nice Max Falcon-20 macropad, but I liked the ease of changing the virtual keycaps on the Stream Deck for prototyping.
All-in-all, it's a fun automation experiment for those of us who are WFH to automate things we do everyday, such as start up and shut down our spaces.
I like the idea but I definitely feel like this would benefit from a less regular design. Have separate banks of keys, maybe even different cap shapes.
Otherwise you're inevitable going to hit the "switch input" button when you meant "screen brightness" half the time and have to wait for 10 seconds while it switches back.
I've seen nuclear power stations use beer handles, and submarines use randomly shaped knobs to avoid the "easily confused controls" problem.
Wow, this was very cool. I don’t do anything with hardware / electronics, but it is so fun watching someone talented breakdown and solve each challenge like that. Similar to how I enjoy watching someone do a tutorial on Ruby on Rails or JS. I’d love to learn more about hacking things like that.
A similar although not the same project is Bitfocus Companion along with a streamdeck. A large number of us in the A/V production world use it to control a large amount of disparate pieces of equipment at once.
And you don't need the stream deck. I use the virtual one included with companion.
The only thing you’d need to figure out is the standing desk part. My usb switch came with a wireless controller which is the main way I interact with it.
Thanks! Your repo is already in my list of things to try for the display switching part.
Unfortunately, display switching via DDC is not supported on my current monitor, so if I want that to work I'll have to find a new one that does support it. I also need it to work with Linux, Windows, and Mac M1 machines. Seems like it might be easier to do send all the DDC commands from the Linux machine, rather than get DDC working on all three.
Yea so getting DDC to work is a huge pain. I had a it working OOTB for the three monitors I had miraculously even though they’re all super old. Then the oldest one started to have a pink hue when it woke from sleep for the first 30-45 min, and I was worried about getting stuck without it so then I went on the hunt for a monitor that supported DDC.
The biggest issue is there is no product page for any monitor I could find that ever mentions if it supports DDC. You’re almost guaranteed to get some sorta DDC support for enterprise-type monitors. Consumer facing stuff is a giant gamble. Basically all LGs are out, some support it others don’t. It is entirely dependent on which controller they had on hand when they did that run, so you could have inconsistencies within the same model. Monoprice doesn’t officially support it, but the two monitors I tired from them did…kinda there were some oddities and sometimes it would just crash and I’d have to unplug and wait 30sec to reset it. Along w the fact that they were VA panels made me send them back.
Dell and HP appear to be good choices, all the dells I’ve tried support it, tho I’ve only got business dell monitors. The HP gaming monitor I settled on supports it fully, tho it takes like 10 seconds to switch, that might be because of the difference in supported refresh rate between the two computers.
I will also add that the HP does support it but it doesn’t always like being told to switch by the computer it’s not currently displaying. Usually it will switch no matter which computer sends the command but there are times it just ignores it if the computer isn’t currently being displayed.
Finally I can’t tell if this is a monitor thing or a computer thing, but sometimes (rarely) the monitors will confuse each other and not switch and when you check the error logs it says that there’s an incorrect code on the ddc buffer, only thing to do is power cycle that monitor.
All that said, I still think this is a better and cheaper solution vs a full hardware usb+video switch.
I think a lot about what a workspace might look like in the future if you are using some form of XR device in a 360 6DOF visualization and control aware space. Almost anything tangible in your surroundings can be absorbed into the user interface experience on the fly or as built. I can see value in connections between these programmable knobs buttons sliders and the like tightly paired with the XR experience in an organized physical workspace setup to increase the bandwidth of flow in whatever particular direction you choose. Big fan of better standards and interop between these devices on the OS layer and USB/Bluetooth/MIDI/ZigBee/etc
I have one of these as well using a streamdeck. It also controls my blinds and AC unit via HomeAssistqnt. The cool thing is that each key shows current status as well as the function.
That sounds neat! What sort of automated blinds do you have? I've looked into some before but I had trouble finding one that I wouldn't be worried about recharging every couple of weeks.
What I am looking for is actually something much simpler. I have a laptop and a desktop. I want to click a button to switch between them for the same set of monitors and USB-connected devices.
The USB-connected devices is ok since I can use a USB switcher. But I can't figure out how to switch my monitors' input sources without manually using their OSD and control buttons.
I’ve had good luck with this CableMatters USB KVM switch. It switches the USB devices along with a DisplayPort. So I leave the monitor’s input alone, and run its DisplayPort to this, and then DP cables out to my Mac and PC (well, DP-to-USBC for the Mac)
I bought a macropad with some knobs on it that's programmable that I can plug into my PlayStation to use in games with keyboard support. Works pretty well, but I do have to reprogram it to match the game I want to play, so it's kinda a pain. I also tried it on my desktop, but I found I had nothing to use it for, I already know all of my IDE shortcuts and whatnot.
This project made me realize how sad it is that most generic/basic consumer electronics (think display input switching, or speaker input switching, or standing desk memory, etc) don't support zigbee.
I think I mentioned this somewhere and someone pointed out that zigbee is patent-encumbered and has per-device license fees. :/
Wasn't aware it was possible to switch LG TV sources via Home Assistant. Set up a Autokey script to call the Home Assistant API to trigger a script to switch sources between my work Mac and personal PC. Works great, don't need to move my hands from the keyboard and is much quicker than using the remote.
I've done something pretty similar with an Adafruit Macropad, Karabiner Elements (and Zoom's global hotkey support), hass-cli, and a few esphome-loaded ESP32 devices. Physical audio/video mute, raise hand, lights, speaker/headphone switch, and screen lock buttons are wonderful.
I just wound up using translucent ones which came with them, with the LEDs set to solid colors to group functionality together, and a legend on the display. Zoom keys blue, lights yellow, etc.
I had an XKeys strip for a previous iteration, which included similar keycaps. My hand-written labels were ugly, so I skipped them this time around.
Wow, this is a fantastic project; thank you for sharing! For a few years, I've been thinking about automating something with remote NumPad. I've also got "Velocifire" numpad and used it as MouseKeys. This project is a huge inspiration ;)
I did something similar a while ago, made a 9-key Macropad using a Teensy. I've been wanting to try making a new one with BLE support and an integrated battery for wireless. Using Home Assistant is quite a good application for a device like this!
I'd totally do this as well, if there were good software support in Ubuntu. Each time I think about another thing to maintain, I give up. I would like dedicated buttons for my different desktops (with proper labels), and there's a slew of other things I'd like. I wouldn't mind extra unicode characters either. My codemap lets my type 1+1≠3, but there are many more things I'd like to be able to type.
Ain't gonna happen. The problem isn't hardware but software.
Spare touchpad or trackball would also give me a lot, if I could configure it easily. Lots of places I want extra degrees of freedom.
Something that allows me to cleanly handle multiple keyboards and mice on Ubuntu, map them to interesting Unicode characters, as well as to macros.
I'm not sure what your link does for me. It points to some proprietary Mac app, as well as a few keypads. The keypads are listed as "programmable" but:
- Key codes don't correspond to Unicode characters or similar.
- Multiple keyboards are a mess. I can't, for example, have a Greek keyboard (for math equations) and a US one (for programming) because the key codes overlap.
- Most macro programming on these things is a train wreck. It's usually a proprietary app on an OS I don't use.
Proprietary Mac app...? Maybe you are looking at a different "qmk"?
You can do all of this without any need for additional runtime software (apart from build environment to build and make changes obv) directly in the keyboard/pad with the mentioned qmk-firmware.
You can build the pad from scratch, buy a kit, or a prebuilt (like the linked example).
I used them with fervor, taking pains to configure them to my liking and I felt I was on the right path to something amazing.
Over time, I kept wondering to myself what I was really gaining compared to just memorizing plain keyboard shortcuts mapped to the handful of functions I assigned to the separate keypad.
Every time I saw these devices unplugged I thought about plugging them back in again only to realize the moment I was removed from my workstation, I would lose the ability to use those shortcuts from my laptop's embedded keyboard.
I guess an advantage of the separate keypad is having dedicated keys, each with their own iconography for their function. But the whole idea is these are functions that are used often, so having their access embedded in muscle memory is in my opinion the better way to accomplish this.