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