Back a year or so ago, @Julien described an on-host emulation of a keyboard in order to provide pendant control of the CNCjs UI.
I have taken a look at this general topic and wanted something portable, that would work with RPi, MacOS or Windows hosts, and yet still give the same level of functionality - and add a jog dial to the requirements too. Using an Arduino Leonardo derivative (based on Atmel 32u4 chip) I have created a HID USB device that plugs in using USB and appears as a keyboard to the host, but how it works is entirely under my control and thus implementing jog-dial to key-stroke translations is easy.
The whole thing is working exactly as envisaged, click the ‘X’ button on my pendant and whether CNCjs or C3D CM, the jog dial moves the X-axis left or right. Ditto Y and Z axis.
The one missing part of the puzzle is what official keyboard shortcuts are defined/accessible in CNCjs and CM for zeroing X, Y and Z individually, or all 3? Anyone go any ideas on this?
Once finished, I will upload the enclosure design files, Arduino source code, schematic and PCB layout (KiCAD) for anyone wishing to make something similar.