If you switch to microcontrollers with native USB –– Teensies, Pro Micro clones (ATmega32u4), ch552g ––, you can do your own USB HID device; from keyboards to mice to joysticks. Doing it via serial driver emulation is lame in my opinion: the native USB HID requires no drivers and works in all OSes just like bought ones. (If you use Chrome 89 or newer, Edge 89 or newer, or Opera 75 or newer, you can do games as web pages, no server or network connection needed, that can directly access the HID events from any USB HID device, via the
WebHID API. Say, creating a version of old Pong, using two rotary encoders or potentiometers.)
One I'd like to do is a full 3D ball controller, with all movement detected. (Compare to a trackball, where rotation around the vertical axis is not detected/supported.) I can easily handle the math, but I haven't found affordable documented optical mouse sensors to do it with (it needs two). I could use magnetic field sensors and a ball with one or more magnets inside it, too, but optical would be nicer.
My very first microcontroller project was an arcade plank (stick and buttons using microswitches just like in old arcade machines) and a 4-bit encoder to select the mapping to keypresses, using AT90USB1286 (Teensy 2.0++). This was in the era of lots of web-based Flash games (platform puzzle ones were my favourite).
I do have parts for an e-ink display with capacitive touch sensor, so I can make a reprogrammable macro/tool keyboard, perhaps with scroll/pan support (when you drag instead of poke at it). Currently, I don't use enough different programs to warrant that, as in Linux the keyboard shortcuts are user-configurable (especially in Inkscape, Gimp, LibreOffice, etc. with many options that I often use), so I just adjust the keyboard shortcuts to my needs, and don't really need a separate macro pad.