Each of these flags defines whether a given report-type uses numbered reports.
If numbered reports are used for a type, all messages from the kernel already have the report-number as prefix. Otherwise, no prefix is added by the kernel.
For messages sent by user-space to the kernel, you must adjust the prefixes according to these flags.
Any IO error will probably be ‘permission-denied’ if you don’t have access to open /dev/uhid
An unknown event type error should only occur if a new event has been added to uhid-sys that this wrapper is unaware of.