I have a "Ozone Strike Pro" USB keyboard that is pretty bugged on FreeBSD -CURRENT r299864 (yesterday's head) and 20160429-r298793 (the latest snapshot). Relevant dmesg output:
ugen1.3: <vendor 0x058f> at usbus1
uhub5: <vendor 0x058f product 0x6254, class 9/0, rev 2.00/1.00, addr 3> on usbus1
uhub5: 4 ports with 4 removable, self powered
ugen1.4: <vendor 0x04d9> at usbus1
ukbd1: <vendor 0x04d9 USB Keyboard, class 0/0, rev 2.00/d.04, addr 4> on usbus1
kbd3 at ukbd1
ukbd2: <vendor 0x04d9 USB Keyboard, class 0/0, rev 2.00/d.04, addr 4> on usbus1
kbd4 at ukbd2
uhid0: <vendor 0x04d9 USB Keyboard, class 0/0, rev 2.00/d.04, addr 4> on usbus1
Note that plugging in the keyboard create *two* ukbd devices. When keys on the keyboard are pressed, various bugs happen:
* The "space" key enters an "a" character
* The "d" key switches the active tty
* All other keys misbehave as well
Additionally, only sometimes, the internal keyboard of the notebook also starts entering the wrong things when the Ozone is plugged in.
There is a workaround that fixes the issue when the following steps are executed in this exact order:
1. Plug in the keyboard
2. Run "usbconfig -d ugen1.4 add_quirk UQ_KBD_BOOTPROTO" on *both* devices
3. Plug out the keyboard
4. Plug it in again
After going through this procedure once, the correct behavior persists, even through a standby cycle, but it does not persist through reboots.
The keyboard works completely fine on Linux and OpenBSD. It does not work on another machine running FreeBSD -CURRENT. I did not test it on any -RELEASE.
I am not sure what else would help to track this down, please let me know if I can provide anything else.