My desk setup has too many separate controllers.
I have one to control the screen, one for the light on top, one for the bias light in
the back, buttons for the USB switch, and one for my standing desk.
And a lot of these controllers need to be used in conjunction with each other, so it
gets a little annoying to reach here and there to switch each one individually to get the
settings just right.
But what if I program a single remote to control it all.
And even better, make it smart enough to do multiple actions in a single press.
Like switch the HDMI on the screen and the USB to my laptop, and then switch all back
when I need to use my desktop PC in a single click.
Or turn off both lights on the monitor at the end of the day along with the screen,
again, a single click.
But why stop there, why not also add macros to the keypad.
For example, when managing my Windows across my large screen, I mainly still use FancyZones.
But even with that tool, I still fumble around with manual resizing.
So, I added keys that let me quickly expand, shrink and move the current window around.
I also added even more keys for custom windows sizes like my primary large center location,
a smaller floating window that I use for my tools and notes, and even one I use for YouTube
videos that are too big to watch completely full screen.
But I’m free to add anything I need here, like a mute button for video conferencing,
or a quick launcher for my most used applications.
And I can even switch my motorized desk from sitting to standing.
Hi, I’m David and here’s my wireless macro pad to control my entire computer desk setup.
So, I started this journey a couple months ago and had the following requirements for
a single controller for my desk setup:
One, I wanted it to be wireless for a clean setup because all my current devices are wire
free, so it had to match.
Two, it needed to have a very long battery life because I can’t be bothered to charge
this every day or even weekly, which ruled out using something like using a dedicate
phone or tablet for the controls.
Three, I wanted it to be Quick and Responsive to button presses.
I did try creating an ESP32 to control it all over WIFI which works but I couldn’t
get it to be as fast or reliable enough to reconnect to Wifi from deep sleeps.
And there’s also the option to use bluetooth units, but again I tend to find bluetooth
slower than RF with the initial connection, and little less reliable.
And finally, it needed to be Simple and intuitive to use.
So lots of buttons that I could label and easily see what does what.
Alternatively, You don’t actually need a separate keypad to do all this, you can make
additional shortcuts on your existing keyboard and this work just as well.
But with the amount of shortcuts I’m using here, I start forgetting what does what.
In the end I ended up with this implementation
An RF wireless numberpad from Velocifire, where I swapped out the keycaps with these
relegendable ones, where you can just print out new labels in here, and then just pop
them in place over the mechanical switches.
The USB dongle for the keypad is then plugged into a Raspberry Pico that’s been flashed
with an HID remapper firmware from jfedor2, links to it below.
This tool lets me remap the all the buttons on this numberpad to alternate key presses.
Those commands are sent to my desktop PC through the PICO via USB connection.
And it’s received by my AutoHotKey script.
Some of the automation logic is programmed right into the script.
For example, Pressing the 7 key on the keypad, is remapped to Shift F23, that is caught by
AutoHotKey to expand the current active window to the left by 200 pixels.
But for controlling things like my lights or the TV screen, I instead initiate these
by sending a POST request to my Home Assistant Server.
In Home Assistant I have my all my smart devices integrated, like the LG OLED TV and the IKEA
Tradfri Smart Bulb, so I can control them in a variety of ways, and build scripts to
automate multiple devices together that I’ll mention more later on.
But for my non-smart devices, like my Monitor Lightbar, I made it smart with this Sonoff
USB power switch to control turning it on and off.
And for the USB Switch, I found this 4 in, 4 out USB switch that also has an external
controller.
And after some reverse engineering of what the pins over the micro usb connector do,
I was able to program an ESP microcontroller with a some optocouplers, wire it into a male
micro USB connector to simulate the button presses, and then control it in Home Assistant.
And similar with my Fully Standing Desk, it’s not smart by default and is normally controlled
with this touch panel.
But found this GitHub page by Phil Hord where he already did the hard work of reverse engineering
the pin signals on the original controller, and I just programmed that logic again with
an ESP microcontroller wired into a pair of RJ45 keystone jacks that passthrough the signal,
so I can still use the original touch controller but now it also works in Home Assistant.
And all this work.
So, I can have the following controls.
Starting with these buttons in the lower middle:
PC2 is for my laptop that switches the HDMI and USB input to it.
The PS5 button that switches the TV to the correct HDMI input, and lowers the desk to
lowest setting for better comfort while gaming.
And press, the HDMI 4 button, to wake up my test PC and switch the inputs accordingly
And back to my main desktop PC
I can also manually select the USB switch input by clicking the USB Select button and
the corresponding device, for example switching between controlling my laptop and my desktop
At the top, I have my desk height controls for sitting height and standing.
At the bottom are my buttons for the lights, like the bias light in the back
And another for the monitor lightbar on top
Right next to it is a quick toggle to black out the OLED screen
And a large power button that turn on the screen and off along with all the lights
I also have a large button on the right that easy to press with my pinky finger that I
use for toggling the microphone in specific chat applications.
And the top section contains the various window management keys, like expanding and shrinking
the current window.
I can also modify the keys by holding down the control button and have them instead shift
the window to the left or the right.
A shout out to Will H who gave me the inspiration for this implementation.
And then buttons to quickly resize them to the center, a smaller window size for my tools,
expand the current window vertically, and one specifically for my preferred YouTube
video size.
And lastly, couple quick launchers for my web browser and file explorer.
In the end, I’m super pleased with this solution, as it meets all my primary requirements
when I first started on this path a couple months ago.
Is this the solution perfect?
No.
One big limitation is that my main desktop PC needs to be On all the time for this keypad
to work and those macros only work on the desktop PC it’s connected to.
So, in the future I would like to find a way to get it to run independent of it.
Another issue with my solution is if you press too many keys quickly together, they might
activate the wrong function as autohotkey gets confused.
I had other concepts and prototypes that I might revisit in the future like that ESP32
device where I can add a screen or dedicated buttons, or I was also looking at the Pico
W with its built in WiFi but I’m terrible at C programming and couldn’t get my code
to work.
A custom Zigbee controller is another option but that’s more stuff to learn.
And I even bought a 3D printer for this project to make those custom cases.
So maybe I’ll reprint a nicer case for the keypad or make a completely custom one.
But anyways, hope you got something out of this huge time sink I’ve been working on
the last couple months.
You know what to do.
And I’ll see you in the next video.