So far the assumption has been that a vid/pid/device/configuration is enough to identify to descriptor to use in place of the device's descriptor. In issue #8 it appears there are two keyboards with the same identifiers but with different report layouts.
Solutions:
Use a map from provided descriptor to replacement descriptor
This is very similar to the current approach in terms of complexity and overhead for new devices.
Move the fixing algorithm into the kext
This would fix every keyboard automatically reducing overhead for new devices, at the cost of significantly increasing the complexity of the code running in the kernel.
So far the assumption has been that a vid/pid/device/configuration is enough to identify to descriptor to use in place of the device's descriptor. In issue #8 it appears there are two keyboards with the same identifiers but with different report layouts.
Solutions:
Use a map from provided descriptor to replacement descriptor
This is very similar to the current approach in terms of complexity and overhead for new devices.
Move the fixing algorithm into the kext
This would fix every keyboard automatically reducing overhead for new devices, at the cost of significantly increasing the complexity of the code running in the kernel.