We use a codeless kext to stop the system USB HIB driver from matching our devices, which declare as USB HID, but are not true USB HID devices. All USB comms to the devices are via the userspace APIs
We also must use the OSBundleRequired Root flag to load at boot, or the System HID driver claims the device. Without this boot-time load, our devices would have to be phisically unplugged-replugged after a user application with embedded system extention is running - but this is not an acceptable situation for remote machines as an example.
We have plans to move away from HID-not-HID to a proper Vendor defined USB class, but we will continue to have a huge installed base of legacy devices to support going forward on the old HID stack.
How can we continue to support these devices moving forward as Kexts are deprecated?