Nice project! Initial thought: apart from ease of development, is there any reason to do it in user space? I looked into uinput before to get a Bluetooth mfi controller working, but couldn't figure out which modules of the kernel did what.
Not OP, but there is a history of writing game controller drivers for linux:
https://github.com/chrippa/ds4drv
https://github.com/kozec/sc-controller
I recently bought myself a dualshock4 for use with Kodi and RetroArch. No driver was needed, even for bluetooth!
Edit: formatting