multimedia keys on Kinesis Freestyle 2 keyboard
I have a Kinesis Freestyle 2 keyboard which has 4 multimedia keys -- mute, volume-down, volume-up, and calculator -- for Fn-F8 through Fn-F11, but the keys do not work on Fedora 19.
I tried monitoring for keyboard events with xev, evtest, showkey, and acpi_listen, and I get nothing from any of the utilities.
I noticed, however, that evtest reported I have two inputs for the keyboard:
~]# evtest
No device specified, trying to scan all of /dev/input/event*
Available devices:
...
/dev/input/event6: KINESIS FREESTYLE KB700 KB700 Kinesis Freestyle
/dev/input/event7: KINESIS FREESTYLE KB700 KB700 Kinesis Freestyle
...
I know very little about USB internals, but apparently this is because the standard keys are USB HID Code Page 0x07, whereas the multimedia keys are HID Code Page 0x0C, so the single keyboard actually appears somewhat like two devices?
I then tried usbmon on the bus and I finally got some feedback when I hit the keys.
~]# grep -B3 KINESIS /sys/kernel/debug/usb/devices
T: Bus=02 Lev=03 Prnt=03 Port=02 Cnt=02 Dev#= 6 Spd=1.5 MxCh= 0
D: Ver= 1.10 Cls=00(>ifc ) Sub=00 Prot=00 MxPS= 8 #Cfgs= 1
P: Vendor=058f ProdID=9410 Rev= 1.22
S: Manufacturer=KINESIS FREESTYLE KB700
~]# usbmon -i 2
2f822d80 0.990223 C Ii:2:006:1 0:8 8 =
00000000 00000000
2f822d80 0.990288 S Ii:2:006:1 -:8 8 <
2f17e900 3.335277 C Ii:2:006:2 0:128 3 =
03e200
2f17e900 3.335290 S Ii:2:006:2 -:128 3 <
2f17e900 3.463266 C Ii:2:006:2 0:128 3 =
030000
2f17e900 3.463279 S Ii:2:006:2 -:128 3 <
2f17e900 7.559341 C Ii:2:006:2 0:128 3 =
03ea00
2f17e900 7.559355 S Ii:2:006:2 -:128 3 <
2f17e900 7.687337 C Ii:2:006:2 0:128 3 =
030000
...
As a quick sanity check, I tried the keyboard on a Mac and the volume keys worked, so OS X knows what to do with the key events, but something in Linux is either blocking the events from being sent up to userspace, or the events are simply ignored.
Finally, I emailed Kinesis tech support and they replied:
The HID Usage ID for the multi-media keys in our Freestyle2 keyboard are:
Mute = E2
Volume Down = EA
Volume Up = E9
Calculator = 92
Kinesis even offered to burn a new firmware to my keyboard if I can tell them if the codes should be different for Linux, but I think this is something that can be solved in software. I just need the events sent up to userspace and then I can map them to the XF86AudioMute, XF86AudioLowerVolume, XF86AudioRaiseVolume, and XF86Calculator using setxkbmap or xmodmap.
What might be blocking/ignoring the key press events?
I have same keyboard and have not gotten the volume keys to work in Linux. Have you found how to solve this problem later? If you have, can you answer your own question here?