Hello,
Apologies if this has been posted before, I did find anything by searching. I purchased a Noppoo Choc Mini and couldn't resist looking at the usb interaction to see why it didn't work on MacOS. This was long enough ago that I've forgotten some of the details, hopefully the general idea remains.
The keyboard presents two keyboards, one has modifiers and letters, the other has punctuation. Like most keyboards it has an 8-byte HID report, but instead of using an array of 6 keycode entries it sends a bit vector of which keys are being pressed. This seems to be well within the HID spec. The unusual thing about it seems to be the way in which it specifies which bits correspond to which keys. HID descriptors have a method to describe a list of values or a range of values. The Noppoo does both in a single item, specifying usages of 4-40,0x4f,0x50,0x2b,0x2c,0x51,0x52. It's not clear to me if this is allowed or not, but Windows and Linux seem to handle it. On MacOS, it seems to cause an overlap. Pressing the key for usage 4 also causes 0x4f, 5 causes 0x50 and so on.
Since it looked like the HID reports are ok, but the HID descriptor is a bit wacky I wanted to replace the descriptor with one with two items, one for 4-40 and one for 0x4f,0x50, etc. With a bit of luck I discovered I was not the first person to encounter a device with an undesirable descriptor, there's a simple kext at (url removed to fit in forum limit, see the github link below) that overrides the descriptor from a plist. Adding a couple of entries for the Noppoo cleared up all the extraneous keypresses.
However, having the keyboard that contains the punctuation separate to the one that contains the modifiers is problematic on MacOS; modifier state is local to each keyboard. This has some partial solutions like (url removed to fit in forum limit). But that method of manipulating the keyboard events is bypassed during "Secure Keyboard Entry" (see, for example, the Terminal menu option). This might not matter for gaming, I haven't tested.
My changes to the kext to override the HID descriptor for the Noppoo are available from
https://github.com/thefloweringash/iousbhiddriver-descriptor-overrideHope this helps