Bluetooth keypad for UGS

Bought a 20$ bluetooth keypad, printed some custom labels:

I’d like to use it to generate shortcuts for UGS. I want to remap each key to e.g. Ctrl+Alt+, so that the key strokes from this keypad cannot do anything else that triggering the associated UGS shortcut.

To achieve this, it seems like it is required to have some SW-in-the-middle solution that intercepts the keystrokes from THIS specific keyboard, and remaps them dynamically.

I’ve tried HIDmacros, it almost works but some keys are causing issues. I am now on to installing Interception and using that.

I wonder how you guys use your keypads with UGS and whether you have a simpler solution that does not require any SW trick ?


This on Mac or Windows?, I use USB Overdrive (macOS) for some custom shortcuts/key binding overrides.

1 Like

I should have mentioned it, I am using Windows, so I am looking for something that does the same but on Windows. Interception (for Windows) seems to work similarly, i.e. it’s actually a driver that catches all keystrokes from any keyboard before the OS does anything with it. I’m fairly confident I’ll make it work, but as this is a bit convoluted to install/use, I wondered how others deal with their keypad and UGS.

This programmable keypad may be a better keypad solution:
I have one, but have yet to work with it.

Yep, a programmable keypad would be on my list of next steps if I failed to make this work correctly, but I’m sure not everyone got a programmable one, and still manage to use it in their work routine.

I finally had time to set this up, and it turned out to be WAY more convoluted than I anticipated, so I’ll leave some info here in case anyone needs it someday.

  • My requirement was to be able to map the keys from THIS keypad only, i.e. that any keystroke from the main keyboard is managed separately.
  • I tried HIDMacros, but it did not work out for me.
  • I then moved to using “Interception”, which is basically a windows driver that…intercepts all keystrokes from all connected input devices at kernel level, and allows a user-side application to get that information.
  • on top of that, I used “Intercept” (the user-side app), and created a specific config file that remaps each keypad button to an associated “Ctrl+Shift+” combination
  • I then setup UGS to use the various Ctrl+Shift+ combos as shortcuts for the actions seen on the keypad.
  • the instructions to install Interception and use Intercept were taken from here
  • the “bluetooth/calculator” key had a specific issue: Windows has a built-in behavior of launching the calculator app when this key is used, which somehow cannot be overriden by Intercept. So using the information from here I modified the Windows registry key “HKEY_LOCAL_MACHINE/software/microsoft/windows/currentversion/explorer/appkey/18/ShellExecute” so that it executes the Intercept remapping app instead of the calculator. I used the key string " C:\Users\Julien\Desktop\intercept\intercept.exe /apply" to do that, the “/apply” param allows Intercept to just use the predefined config file for remapping keys
  • the “00” key produces two keystrokes, which gave problem of it own, so I gave that one up too.
  • in the end my keypad looks like this:

FINALLY I have this keypad set up with UGS. If there are easier/smarter ways to achieve this, I’d be happy to hear about them, but try as I might I could not find any simpler solution that allows keystrokes to be filtered by their “source” keyboard when multiple keyboards are connected.

1 Like

Just out of curiosity, did you try the “pendant” built into UGS? Click on the “phone” icon to get the link, then use the browser on your phone as a pendant. Doesn’t do everything, but does do a fair number of things.


Hi Mike,

thanks for the suggestion. No, I did not even try it, because I really do not like to have to use my phone to control my CNC (I was never a big fan of mixing touchscreens and safety, but mostly the garage is the one place where I don’t bring it with me, this is my digital detox space :slight_smile: )

Also, I wanted to have an app-independent way to remap any keyboard. So for UGS there are probably other options (like the pendant functionality), but this method should pay off when I decide to switch to a different UI, and I can just remap the keys freely to any obscure combo of keystrokes.

1 Like

Hey Julien, i don´t know if you still use the keypad, but i want to ask if you still know, how to set the step sizes of all 3 axis (XYZ) in 0.01/0.1/1/10. In UGS i only find this steps for x and y axis and the step sizes for z are other ones. so i would like to know if there is a trick how to set it for all 3 axis?
Also i would like to know if the Goto Z0 +10 is a macro. Can you send me this and the Goto X0Y0 macro maybe?
Thanks for your help,

Hi Tim,

Sorry I’m afraid I will not be very helpful, I have not used UGS in years and I was not able to find my notes from 2019 :frowning:
As far as I remember UGS does not support dynamic variables in its gcode macros so I probably never got around to implementing anything behind the goto Z0+10 button
If you consider using other senders, gSender is what the cool kids seem to use these days (I’m still using CNCjs out of habit), you may have better luck with getting support around interfacing with gSender.

Hey Julien, thanks for your reply, as i use fluidNC the gSender don´t work for me.
But thanks for the advise!
Happy new year,