So, I recently bought a new mechanical keyboard, and I've been having trouble with the F1-F12 keys. After some investigation, I discovered that this is happening because the keyboard, for some ungodly reason, has the same vendor ID and product ID as a completely different keyboard manufactured by Apple. My kernel then loads the hid_apple driver automatically, which causes the F1-F12 keys to function as they would on an Apple keyboard, which is not what I want.
I have tried remapping the keys using both xmodmap and an hwdb entry, with no luck. I also tried blacklisting the hid_apple kernel module, which prevents the keyboard from working at all. I want to force the keyboard to use the hid_generic driver, but I'm not sure how. Is there a way I can force that driver to be used, perhaps through a udev rule or similar?
UPDATE:
It turns out that the hid_generic driver does not work. Preventing hid_apple from being loaded simply stops the keyboard from being recognized.