Re: Genius KB-29E USB Keyboard problems

Szekeres Istvan <[email protected]>
Newsgroups gmane.linux.usb.devel
Message-ID <[email protected]>
Jiri Kosina wrote:
> On Sat, 3 Nov 2007, Szekeres Istvan wrote:
> 
>> The keycodes reported when pressing the keys are the standard ones, i.e. 
>> when pressing a volume key:
>> hid-core.c: report (size 4) (numbered)
>> hid-core.c: report 3 (size 3) =  00 20 00
>> ...
>> hid-debug: input Button.00e9 = 1
>> ...
> 
> Well, the problem actually seems to be related to the fact that 
> Button.00e9 is not 'Volume' key at all!

Yeah, but 00e9 is the volume key. So not the e9 itself is the problem...

> Looks like this is another piece of keyboard which doesn't respect what 
> HUT standard says, and establishes its own creative mapping of HID usages 
> :/
> 
> Could you please send me hid-debug output for all the non-working keys, 
> with 'annotation' i.e. "this happens when I press the Volume key", etc. 
> We'll see what we can do.
> 
> Thanks,

I thank you for your help.

This is when hid-core initializes:


hid-core.c: report descriptor (size 54, read 54) =  05 01 09 06 a1 01 05
08 19 01 29 03 15 00 25 01 75 01 95 03 91 02 95 05 91 01 05 07 19 e0 29
e7 95 08 81 02 75 08 95 01 81 01 19 00 29 91 26 ff 00 95 06 81 00 c0
  INPUT[INPUT]
    Field(0)
      Usage(8)
        Keyboard.00e0
        Keyboard.00e1
        Keyboard.00e2
        Keyboard.00e3
        Keyboard.00e4
        Keyboard.00e5
        Keyboard.00e6
        Keyboard.00e7
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(8)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Usage(146)
        Keyboard.0000
        Keyboard.0001
        Keyboard.0002
        Keyboard.0003
        Keyboard.0004
        Keyboard.0005
        Keyboard.0006
        Keyboard.0007
        Keyboard.0008
        Keyboard.0009
        Keyboard.000a
        Keyboard.000b
        Keyboard.000c
        Keyboard.000d
        Keyboard.000e
        Keyboard.000f
        Keyboard.0010
        Keyboard.0011
        Keyboard.0012
        Keyboard.0013
        Keyboard.0014
        Keyboard.0015
        Keyboard.0016
        Keyboard.0017
        Keyboard.0018
        Keyboard.0019
        Keyboard.001a
        Keyboard.001b
        Keyboard.001c
        Keyboard.001d
        Keyboard.001e
        Keyboard.001f
        Keyboard.0020
        Keyboard.0021
        Keyboard.0022
        Keyboard.0023
        Keyboard.0024
        Keyboard.0025
        Keyboard.0026
        Keyboard.0027
        Keyboard.0028
        Keyboard.0029
        Keyboard.002a
        Keyboard.002b
        Keyboard.002c
        Keyboard.002d
        Keyboard.002e
        Keyboard.002f
        Keyboard.0030
        Keyboard.0031
        Keyboard.0032
        Keyboard.0033
        Keyboard.0034
        Keyboard.0035
        Keyboard.0036
        Keyboard.0037
        Keyboard.0038
        Keyboard.0039
        Keyboard.003a
        Keyboard.003b
        Keyboard.003c
        Keyboard.003d
        Keyboard.003e
        Keyboard.003f
        Keyboard.0040
        Keyboard.0041
        Keyboard.0042
        Keyboard.0043
        Keyboard.0044
        Keyboard.0045
        Keyboard.0046
        Keyboard.0047
        Keyboard.0048
        Keyboard.0049
        Keyboard.004a
        Keyboard.004b
        Keyboard.004c
        Keyboard.004d
        Keyboard.004e
        Keyboard.004f
        Keyboard.0050
        Keyboard.0051
        Keyboard.0052
        Keyboard.0053
        Keyboard.0054
        Keyboard.0055
        Keyboard.0056
        Keyboard.0057
        Keyboard.0058
        Keyboard.0059
        Keyboard.005a
        Keyboard.005b
        Keyboard.005c
        Keyboard.005d
        Keyboard.005e
        Keyboard.005f
        Keyboard.0060
        Keyboard.0061
        Keyboard.0062
        Keyboard.0063
        Keyboard.0064
        Keyboard.0065
        Keyboard.0066
        Keyboard.0067
        Keyboard.0068
        Keyboard.0069
        Keyboard.006a
        Keyboard.006b
        Keyboard.006c
        Keyboard.006d
        Keyboard.006e
        Keyboard.006f
        Keyboard.0070
        Keyboard.0071
        Keyboard.0072
        Keyboard.0073
        Keyboard.0074
        Keyboard.0075
        Keyboard.0076
        Keyboard.0077
        Keyboard.0078
        Keyboard.0079
        Keyboard.007a
        Keyboard.007b
        Keyboard.007c
        Keyboard.007d
        Keyboard.007e
        Keyboard.007f
        Keyboard.0080
        Keyboard.0081
        Keyboard.0082
        Keyboard.0083
        Keyboard.0084
        Keyboard.0085
        Keyboard.0086
        Keyboard.0087
        Keyboard.0088
        Keyboard.0089
        Keyboard.008a
        Keyboard.008b
        Keyboard.008c
        Keyboard.008d
        Keyboard.008e
        Keyboard.008f
        Keyboard.0090
        Keyboard.0091
      Logical Minimum(0)
      Logical Maximum(255)
      Report Size(8)
      Report Count(6)
      Report Offset(16)
      Flags( Array Absolute )
  OUTPUT[OUTPUT]
    Field(0)
      Usage(3)
        LED.NumLock
        LED.CapsLock
        LED.ScrollLock
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(3)
      Report Offset(0)
      Flags( Variable Absolute )
Mapping: Keyboard.00e0 ---> Key.LeftControl
Mapping: Keyboard.00e1 ---> Key.LeftShift
Mapping: Keyboard.00e2 ---> Key.LeftAlt
Mapping: Keyboard.00e3 ---> Key.LeftMeta
Mapping: Keyboard.00e4 ---> Key.RightCtrl
Mapping: Keyboard.00e5 ---> Key.RightShift
Mapping: Keyboard.00e6 ---> Key.RightAlt
Mapping: Keyboard.00e7 ---> Key.RightMeta
Mapping: Keyboard.0000 ---> IGNORED
Mapping: Keyboard.0001 ---> IGNORED
Mapping: Keyboard.0002 ---> IGNORED
Mapping: Keyboard.0003 ---> IGNORED
Mapping: Keyboard.0004 ---> Key.A
Mapping: Keyboard.0005 ---> Key.B
Mapping: Keyboard.0006 ---> Key.C
Mapping: Keyboard.0007 ---> Key.D
Mapping: Keyboard.0008 ---> Key.E
Mapping: Keyboard.0009 ---> Key.F
Mapping: Keyboard.000a ---> Key.G
Mapping: Keyboard.000b ---> Key.H
Mapping: Keyboard.000c ---> Key.I
Mapping: Keyboard.000d ---> Key.J
Mapping: Keyboard.000e ---> Key.K
Mapping: Keyboard.000f ---> Key.L
Mapping: Keyboard.0010 ---> Key.M
Mapping: Keyboard.0011 ---> Key.N
Mapping: Keyboard.0012 ---> Key.O
Mapping: Keyboard.0013 ---> Key.P
Mapping: Keyboard.0014 ---> Key.Q
Mapping: Keyboard.0015 ---> Key.R
Mapping: Keyboard.0016 ---> Key.S
Mapping: Keyboard.0017 ---> Key.T
Mapping: Keyboard.0018 ---> Key.U
Mapping: Keyboard.0019 ---> Key.V
Mapping: Keyboard.001a ---> Key.W
Mapping: Keyboard.001b ---> Key.X
Mapping: Keyboard.001c ---> Key.Y
Mapping: Keyboard.001d ---> Key.Z
Mapping: Keyboard.001e ---> Key.1
Mapping: Keyboard.001f ---> Key.2
Mapping: Keyboard.0020 ---> Key.3
Mapping: Keyboard.0021 ---> Key.4
Mapping: Keyboard.0022 ---> Key.5
Mapping: Keyboard.0023 ---> Key.6
Mapping: Keyboard.0024 ---> Key.7
Mapping: Keyboard.0025 ---> Key.8
Mapping: Keyboard.0026 ---> Key.9
Mapping: Keyboard.0027 ---> Key.0
Mapping: Keyboard.0028 ---> Key.Enter
Mapping: Keyboard.0029 ---> Key.Esc
Mapping: Keyboard.002a ---> Key.Backspace
Mapping: Keyboard.002b ---> Key.Tab
Mapping: Keyboard.002c ---> Key.Space
Mapping: Keyboard.002d ---> Key.Minus
Mapping: Keyboard.002e ---> Key.Equal
Mapping: Keyboard.002f ---> Key.LeftBrace
Mapping: Keyboard.0030 ---> Key.RightBrace
Mapping: Keyboard.0031 ---> Key.BackSlash
Mapping: Keyboard.0032 ---> Key.BackSlash
Mapping: Keyboard.0033 ---> Key.Semicolon
Mapping: Keyboard.0034 ---> Key.Apostrophe
Mapping: Keyboard.0035 ---> Key.Grave
Mapping: Keyboard.0036 ---> Key.Comma
Mapping: Keyboard.0037 ---> Key.Dot
Mapping: Keyboard.0038 ---> Key.Slash
Mapping: Keyboard.0039 ---> Key.CapsLock
Mapping: Keyboard.003a ---> Key.F1
Mapping: Keyboard.003b ---> Key.F2
Mapping: Keyboard.003c ---> Key.F3
Mapping: Keyboard.003d ---> Key.F4
Mapping: Keyboard.003e ---> Key.F5
Mapping: Keyboard.003f ---> Key.F6
Mapping: Keyboard.0040 ---> Key.F7
Mapping: Keyboard.0041 ---> Key.F8
Mapping: Keyboard.0042 ---> Key.F9
Mapping: Keyboard.0043 ---> Key.F10
Mapping: Keyboard.0044 ---> Key.F11
Mapping: Keyboard.0045 ---> Key.F12
Mapping: Keyboard.0046 ---> Key.SysRq
Mapping: Keyboard.0047 ---> Key.ScrollLock
Mapping: Keyboard.0048 ---> Key.Pause
Mapping: Keyboard.0049 ---> Key.Insert
Mapping: Keyboard.004a ---> Key.Home
Mapping: Keyboard.004b ---> Key.PageUp
Mapping: Keyboard.004c ---> Key.Delete
Mapping: Keyboard.004d ---> Key.End
Mapping: Keyboard.004e ---> Key.PageDown
Mapping: Keyboard.004f ---> Key.Right
Mapping: Keyboard.0050 ---> Key.Left
Mapping: Keyboard.0051 ---> Key.Down
Mapping: Keyboard.0052 ---> Key.Up
Mapping: Keyboard.0053 ---> Key.NumLock
Mapping: Keyboard.0054 ---> Key.KPSlash
Mapping: Keyboard.0055 ---> Key.KPAsterisk
Mapping: Keyboard.0056 ---> Key.KPMinus
Mapping: Keyboard.0057 ---> Key.KPPlus
Mapping: Keyboard.0058 ---> Key.KPEnter
Mapping: Keyboard.0059 ---> Key.KP1
Mapping: Keyboard.005a ---> Key.KP2
Mapping: Keyboard.005b ---> Key.KP3
Mapping: Keyboard.005c ---> Key.KP4
Mapping: Keyboard.005d ---> Key.KP5
Mapping: Keyboard.005e ---> Key.KP6
Mapping: Keyboard.005f ---> Key.KP7
Mapping: Keyboard.0060 ---> Key.KP8
Mapping: Keyboard.0061 ---> Key.KP9
Mapping: Keyboard.0062 ---> Key.KP0
Mapping: Keyboard.0063 ---> Key.KPDot
Mapping: Keyboard.0064 ---> Key.102nd
Mapping: Keyboard.0065 ---> Key.Compose
Mapping: Keyboard.0066 ---> Key.Power
Mapping: Keyboard.0067 ---> Key.KPEqual
Mapping: Keyboard.0068 ---> Key.F13
Mapping: Keyboard.0069 ---> Key.F14
Mapping: Keyboard.006a ---> Key.F15
Mapping: Keyboard.006b ---> Key.F16
Mapping: Keyboard.006c ---> Key.F17
Mapping: Keyboard.006d ---> Key.F18
Mapping: Keyboard.006e ---> Key.F19
Mapping: Keyboard.006f ---> Key.F20
Mapping: Keyboard.0070 ---> Key.F21
Mapping: Keyboard.0071 ---> Key.F22
Mapping: Keyboard.0072 ---> Key.F23
Mapping: Keyboard.0073 ---> Key.F24
Mapping: Keyboard.0074 ---> Key.Open
Mapping: Keyboard.0075 ---> Key.Help
Mapping: Keyboard.0076 ---> Key.Props
Mapping: Keyboard.0077 ---> Key.Front
Mapping: Keyboard.0078 ---> Key.Stop
Mapping: Keyboard.0079 ---> Key.Again
Mapping: Keyboard.007a ---> Key.Undo
Mapping: Keyboard.007b ---> Key.Cut
Mapping: Keyboard.007c ---> Key.Copy
Mapping: Keyboard.007d ---> Key.Paste
Mapping: Keyboard.007e ---> Key.Find
Mapping: Keyboard.007f ---> Key.Mute
Mapping: Keyboard.0080 ---> Key.VolumeUp
Mapping: Keyboard.0081 ---> Key.VolumeDown
Mapping: Keyboard.0082 ---> Key.Unknown
Mapping: Keyboard.0083 ---> Key.Unknown
Mapping: Keyboard.0084 ---> Key.Unknown
Mapping: Keyboard.0085 ---> Key.KPComma
Mapping: Keyboard.0086 ---> Key.Unknown
Mapping: Keyboard.0087 ---> Key.RO
Mapping: Keyboard.0088 ---> Key.Katakana/Hiragana
Mapping: Keyboard.0089 ---> Key.Yen
Mapping: Keyboard.008a ---> Key.Henkan
Mapping: Keyboard.008b ---> Key.Muhenkan
Mapping: Keyboard.008c ---> Key.KPJpComma
Mapping: Keyboard.008d ---> Key.Unknown
Mapping: Keyboard.008e ---> Key.Unknown
Mapping: Keyboard.008f ---> Key.Unknown
Mapping: Keyboard.0090 ---> Key.Hangeul
Mapping: Keyboard.0091 ---> Key.Hanja
Mapping: LED.NumLock ---> LED.NumLock
Mapping: LED.CapsLock ---> LED.CapsLock
Mapping: LED.ScrollLock ---> LED.ScrollLock
input: HID 0566:3004 as /class/input/input2
input: USB HID v1.10 Keyboard [HID 0566:3004] on usb-0000:00:10.2-2
hid-core.c: report (size 8) (unnumbered)
hid-core.c: report 0 (size 8) =  00 00 00 00 00 00 00 00
hid-debug: input Keyboard.00e0 = 0
hid-debug: input Keyboard.00e1 = 0
hid-debug: input Keyboard.00e2 = 0
hid-debug: input Keyboard.00e3 = 0
hid-debug: input Keyboard.00e4 = 0
hid-debug: input Keyboard.00e5 = 0
hid-debug: input Keyboard.00e6 = 0
hid-debug: input Keyboard.00e7 = 0
hid-core.c: report descriptor (size 163, read 163) =  05 01 09 80 a1 01
85 02 19 81 29 83 15 00 25 01 25 01 75 01 95 03 81 02 95 05 81 01 c0 05
09 09 01 a1 01 85 03 0a 8a 01 0a 23 02 0a 2a 02 0a 21 02 0a 27 02 0a 5c
01 0a 25 02 0a 24 02 0a 83 01 0a cd 00 0a b7 00 0a b6 00 0a b5 00 0a e9
00 0a ea 00 0a e2 00 0a 94 01 0a 92 01 0a 34 00 0a b2 00 0a b4 00 0a 06
02 0a b8 00 0a 3d 02 15 00 25 01 95 18 75 01 81 02 c0 05 09 09 01 a1 01
85 04 0a 56 01 0a 57 01 0a 58 01 0a 59 01 0a 5a 01 0a 5b 01 15 00 25 01
95 06 75 01 81 02 95 01 75 02 81 01 c0
hid-core.c: report (size 8) (numbered)
hid-core.c: report 0 (size 7) =  01 02 01 01 00 02 00
hid-core.c: report (size 8) (numbered)
hid-core.c: report 0 (size 7) =  00 00 01 01 00 04 00
hid-core.c: report (size 8) (numbered)
hid-core.c: report 0 (size 7) =  01 04 01 01 00 02 00
  INPUT(2)[INPUT]
    Field(0)
      Usage(3)
        GenericDesktop.SystemPowerDown
        GenericDesktop.SystemSleep
        GenericDesktop.SystemWakeUp
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(3)
      Report Offset(0)
      Flags( Variable Absolute )
  INPUT(3)[INPUT]
    Field(0)
      Usage(24)
        Button.018a
        Button.0223
        Button.022a
        Button.0221
        Button.0227
        Button.015c
        Button.0225
        Button.0224
        Button.0183
        Button.00cd
        Button.00b7
        Button.00b6
        Button.00b5
        Button.00e9
        Button.00ea
        Button.00e2
        Button.0194
        Button.0192
        Button.0034
        Button.00b2
        Button.00b4
        Button.0206
        Button.00b8
        Button.023d
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(24)
      Report Offset(0)
      Flags( Variable Absolute )
  INPUT(4)[INPUT]
    Field(0)
      Usage(6)
        Button.0156
        Button.0157
        Button.0158
        Button.0159
        Button.015a
        Button.015b
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(6)
      Report Offset(0)
      Flags( Variable Absolute )
Mapping: GenericDesktop.SystemPowerDown ---> Key.Power
Mapping: GenericDesktop.SystemSleep ---> Key.Sleep
Mapping: GenericDesktop.SystemWakeUp ---> Key.WakeUp
Mapping: Button.018a ---> Key.Btn9
Mapping: Button.0223 ---> Key.Btn2
Mapping: Button.022a ---> Key.?
Mapping: Button.0221 ---> Key.Btn0
Mapping: Button.0227 ---> Key.Btn6
Mapping: Button.015c ---> Key.?
Mapping: Button.0225 ---> Key.Btn4
Mapping: Button.0224 ---> Key.Btn3
Mapping: Button.0183 ---> Key.Btn5
Mapping: Button.00cd ---> Key.?
Mapping: Button.00b7 ---> Key.Btn7
Mapping: Button.00b6 ---> Key.Btn8
Mapping: Button.00b5 ---> Key.?
Mapping: Button.00e9 ---> Key.?
Mapping: Button.00ea ---> Key.?
Mapping: Button.00e2 ---> Key.Btn1
Mapping: Button.0194 ---> Key.LeftBtn
Mapping: Button.0192 ---> Key.RightBtn
Mapping: Button.0034 ---> Key.MiddleBtn
Mapping: Button.00b2 ---> Key.SideBtn
Mapping: Button.00b4 ---> Key.ExtraBtn
Mapping: Button.0206 ---> Key.ForwardBtn
Mapping: Button.00b8 ---> Key.BackBtn
Mapping: Button.023d ---> Key.TaskBtn
Mapping: Button.0156 ---> Key.?
Mapping: Button.0157 ---> Key.?
Mapping: Button.0158 ---> Key.?
Mapping: Button.0159 ---> Key.?
Mapping: Button.015a ---> Key.?
Mapping: Button.015b ---> Key.?
input: HID 0566:3004 as /class/input/input3
input,hiddev96: USB HID v1.10 Device [HID 0566:3004] on usb-0000:00:10.2-2
usbcore: registered new interface driver usbhid

----------------------------------------------------

This is when I press a volume key (Button.00E9 = 1, others are 0):

hid-core.c: report (size 4) (numbered)
hid-core.c: report 3 (size 3) =  00 20 00
hid-debug: input Button.018a = 0
hid-debug: input Button.0223 = 0
hid-debug: input Button.022a = 0
hid-debug: input Button.0221 = 0
hid-debug: input Button.0227 = 0
hid-debug: input Button.015c = 0
hid-debug: input Button.0225 = 0
hid-debug: input Button.0224 = 0
hid-debug: input Button.0183 = 0
hid-debug: input Button.00cd = 0
hid-debug: input Button.00b7 = 0
hid-debug: input Button.00b6 = 0
hid-debug: input Button.00b5 = 0
hid-debug: input Button.00e9 = 1
hid-debug: input Button.00ea = 0
hid-debug: input Button.00e2 = 0
hid-debug: input Button.0194 = 0
hid-debug: input Button.0192 = 0
hid-debug: input Button.0034 = 0
hid-debug: input Button.00b2 = 0
hid-debug: input Button.00b4 = 0
hid-debug: input Button.0206 = 0
hid-debug: input Button.00b8 = 0
hid-debug: input Button.023d = 0

This is when I then release the volume key (Button.00E9 goes back to 0):

hid-core.c: report (size 4) (numbered)
hid-core.c: report 3 (size 3) =  00 00 00
hid-debug: input Button.018a = 0
hid-debug: input Button.0223 = 0
hid-debug: input Button.022a = 0
hid-debug: input Button.0221 = 0
hid-debug: input Button.0227 = 0
hid-debug: input Button.015c = 0
hid-debug: input Button.0225 = 0
hid-debug: input Button.0224 = 0
hid-debug: input Button.0183 = 0
hid-debug: input Button.00cd = 0
hid-debug: input Button.00b7 = 0
hid-debug: input Button.00b6 = 0
hid-debug: input Button.00b5 = 0
hid-debug: input Button.00e9 = 0
hid-debug: input Button.00ea = 0
hid-debug: input Button.00e2 = 0
hid-debug: input Button.0194 = 0
hid-debug: input Button.0192 = 0
hid-debug: input Button.0034 = 0
hid-debug: input Button.00b2 = 0
hid-debug: input Button.00b4 = 0
hid-debug: input Button.0206 = 0
hid-debug: input Button.00b8 = 0
hid-debug: input Button.023d = 0


The other keys follow the same pattern, with the following values (all
are "standard" values):

W		156
Ex		157
P		158

Back		224
Forward		225
Cancel		15c
Reload		227
Search		221
Favourites	22a

www		223
email		18A
file manager	194

music		183
mute		e2
playpause	cd
back		b6
forward		b5
stop		b7
volume up	e9
volume down	ea

Maybe a new kind of quirk is necessary for this keyboard which changes
Button.xxx events into Key.xxx events?

Thanks,
Pista


-------------------------------------------------------------------------
This SF.net email is sponsored by: Splunk Inc.
Still grepping through log files to find problems?  Stop.
Now Search log events and configuration files using AJAX and a browser.
Download your FREE copy of Splunk now >> http://get.splunk.com/
_______________________________________________
[email protected]
To unsubscribe, use the last form field at:
https://lists.sourceforge.net/lists/listinfo/linux-usb-devel
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.