Re: Support for X1 tablet keyboard (was Re: [PATCH] platform/x86: thinkpad_acpi: handle HKEY 0x4012, 0x4013 events)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On 2/8/21 11:17 AM, Hans de Goede wrote:
> On 2/7/21 6:55 PM, Alexander Kobel wrote:
>> <snip>
>> I'll go off and try to improve.
> 
> So Nitin has been kind enough to provide us with some docs for this,
> please see me reply to Nitin's email and lets continue this part of this mail
> thread there.

Right. I have the other patch ready, thanks to your great help. I'm
waiting for Nitin's okay whether / how much info I can copy from the
reference sheet to source code comments. Once I have that confirmation,
I will post the revised patch.

> <snip>
> 
>> Finally, I mentioned some open ends already on a post to ibm-acpi-devel
>> at https://sourceforge.net/p/ibm-acpi/mailman/message/37200082/; this
>> very question is among them.
>> I will start tackling the SW_TABLET_MODE event issue first, but if Mark
>> and Nitin can already hint about the keyboard shortcuts, it'd be highly
>> appreciated.
> 
> I think I might be able to help there, a couple of months ago I bought
> a second-hand thinkpad-10 tablet which also has a USB attached keyboard.
> 
> In hindsight I guess I could have asked Mark and Nitin for some more info,
> but I went on autopilot and just ran hexdump -C on the /dev/hidraw node
> to see which events all the keys send.
> 
> And I fired up an usb-sniffer under Windows to figure out the audio-leds,
> since I'm used to just figure these things out without help from the vendor :)

Yeah, why take the boring route if you know how to do all the work on
your own... ;-)

> See the recent commits here for my work on this:
> 
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/log/drivers/hid/hid-lenovo.c

Thanks, very helpful.

> So on the ibm-acpi list message you said that the kbd sends the following:
> 
> type 4 (EV_MSC), code 4 (MSC_SCAN), value c0001
> type 1 (EV_KEY), code 240 (KEY_UNKNOWN), value 1
> 
> For the Fn-keys, does it send the same MSC_SCAN code for *all* the
> non-working Fn-keys ?

Correct. And I can confirm that /dev/hidraw1 lets me distinguish between
the keys.

> If so then it seems that this is very much like the thinkpad 10 kbd dock
> which also does this, see the lenovo_input_mapping_tp10_ultrabook_kbd()
> function in drivers/hid/hid-lenovo.c .
> 
> If I have that right, then I think we should be able to get the
> Fn keys to work without too much trouble. You could try hacking up
> drivers/hid/hid-lenovo.c a bit:

(Not yet there, but will investigate.)

> 1. Add an entry to the lenovo_devices array like this:
> 
> 	/*
> 	 * Note bind to the HID_GROUP_GENERIC group, so that we only bind to the keyboard part,
> 	 * while letting hid-multitouch.c handle the touchpad and trackpoint.
> 	 */
>         { HID_DEVICE(BUS_USB, HID_GROUP_GENERIC,
>                      USB_VENDOR_ID_LENOVO,
>                      USB_DEVICE_ID_LENOVO_X1_TAB),
> 
> 2. Add the following entry to the switch-case in lenovo_input_mapping() :
> 
>         case USB_DEVICE_ID_LENOVO_X1_TAB:
>                 return lenovo_input_mapping_tp10_ultrabook_kbd(hdev, hi, field,
>                                                                usage, bit, max);
> 
> And then build hid-lenovo.c and modprobe it.
> 
> After the modprobe to:
> 
> ls -l /sys/bus/hid/devices/0003:17EF:60A3.*/driver
> 
> This should show 2 devices (I guess) with one being bound to hid-lenovo
> and 1 being bound to hid-multitouch.

So far (without patching hid-lenovo), 2 bound to hid-generic and 1 to
hid-multitouch.

> If this works some of your Fn + F# keys will now hopefully start doing
> something, you can play around with modifying lenovo_input_mapping_tp10_ultrabook_kbd
> to make it do the right thing for your kbd.
> 
> ###
> 
> About LED support, just enabling the LED support bits for the
> USB_DEVICE_ID_LENOVO_TP10UBKBD handling for now might work fine,
> but there is a tiny chance that sending the wrong command somehow puts
> the kbd in firmware update mode, I had that happen once with a Logitech
> kbd which did not seem to have any kind of handshake / passcode to avoid
> accidental fw updates (*).
> 
> If you can give me a dump of the hid-descriptors for your keyboard,
> then I can check if that the LEDs might work the same way too (or not).
> 
> The easiest way to get a dump is to run the following command as root:
> 
> cat /sys/kernel/debug/hid/0003:17EF:60A3.*/rdesc > rdesc
> 
> And then attach rdesc to your next email.

Please find this one attached already now.
In case it helps, the * expands to 0057 0058 0059 on my system.


Thanks,
Alex


> Regards,
> 
> Hans
> 
> 
> 
> 
> 
> *) Luckily it at least had a separate firmware-bootlader mode in which it
> was stuck now, so with some cmdline magic to force an upgrade the Windows
> fw installer could still fix it.
> 
05 01 09 06 a1 01 05 07 19 e0 29 e7 15 00 25 01 75 01 95 08 81 02 95 01 75 08 81 01 95 05 75 01 05 08 19 01 29 05 91 02 95 01 75 03 91 01 95 06 75 08 15 00 26 ff 00 05 07 19 00 2a ff 00 81 00 05 0c 09 00 15 80 25 7f 95 40 75 08 b1 02 c0 

  INPUT[INPUT]
    Field(0)
      Application(GenericDesktop.Keyboard)
      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)
      Application(GenericDesktop.Keyboard)
      Usage(256)
        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
        Keyboard.0092
        Keyboard.0093
        Keyboard.0094
        Keyboard.0095
        Keyboard.0096
        Keyboard.0097
        Keyboard.0098
        Keyboard.0099
        Keyboard.009a
        Keyboard.009b
        Keyboard.009c
        Keyboard.009d
        Keyboard.009e
        Keyboard.009f
        Keyboard.00a0
        Keyboard.00a1
        Keyboard.00a2
        Keyboard.00a3
        Keyboard.00a4
        Keyboard.00a5
        Keyboard.00a6
        Keyboard.00a7
        Keyboard.00a8
        Keyboard.00a9
        Keyboard.00aa
        Keyboard.00ab
        Keyboard.00ac
        Keyboard.00ad
        Keyboard.00ae
        Keyboard.00af
        Keyboard.00b0
        Keyboard.00b1
        Keyboard.00b2
        Keyboard.00b3
        Keyboard.00b4
        Keyboard.00b5
        Keyboard.00b6
        Keyboard.00b7
        Keyboard.00b8
        Keyboard.00b9
        Keyboard.00ba
        Keyboard.00bb
        Keyboard.00bc
        Keyboard.00bd
        Keyboard.00be
        Keyboard.00bf
        Keyboard.00c0
        Keyboard.00c1
        Keyboard.00c2
        Keyboard.00c3
        Keyboard.00c4
        Keyboard.00c5
        Keyboard.00c6
        Keyboard.00c7
        Keyboard.00c8
        Keyboard.00c9
        Keyboard.00ca
        Keyboard.00cb
        Keyboard.00cc
        Keyboard.00cd
        Keyboard.00ce
        Keyboard.00cf
        Keyboard.00d0
        Keyboard.00d1
        Keyboard.00d2
        Keyboard.00d3
        Keyboard.00d4
        Keyboard.00d5
        Keyboard.00d6
        Keyboard.00d7
        Keyboard.00d8
        Keyboard.00d9
        Keyboard.00da
        Keyboard.00db
        Keyboard.00dc
        Keyboard.00dd
        Keyboard.00de
        Keyboard.00df
        Keyboard.00e0
        Keyboard.00e1
        Keyboard.00e2
        Keyboard.00e3
        Keyboard.00e4
        Keyboard.00e5
        Keyboard.00e6
        Keyboard.00e7
        Keyboard.00e8
        Keyboard.00e9
        Keyboard.00ea
        Keyboard.00eb
        Keyboard.00ec
        Keyboard.00ed
        Keyboard.00ee
        Keyboard.00ef
        Keyboard.00f0
        Keyboard.00f1
        Keyboard.00f2
        Keyboard.00f3
        Keyboard.00f4
        Keyboard.00f5
        Keyboard.00f6
        Keyboard.00f7
        Keyboard.00f8
        Keyboard.00f9
        Keyboard.00fa
        Keyboard.00fb
        Keyboard.00fc
        Keyboard.00fd
        Keyboard.00fe
        Keyboard.00ff
      Logical Minimum(0)
      Logical Maximum(255)
      Report Size(8)
      Report Count(6)
      Report Offset(16)
      Flags( Array Absolute )
  OUTPUT[OUTPUT]
    Field(0)
      Application(GenericDesktop.Keyboard)
      Usage(5)
        LED.NumLock
        LED.CapsLock
        LED.ScrollLock
        LED.Compose
        LED.Kana
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(5)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE[FEATURE]
    Field(0)
      Application(GenericDesktop.Keyboard)
      Usage(64)
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
        Consumer.0000
      Logical Minimum(-128)
      Logical Maximum(127)
      Report Size(8)
      Report Count(64)
      Report Offset(0)
      Flags( Variable Absolute )

Keyboard.00e0 ---> Key.LeftControl
Keyboard.00e1 ---> Key.LeftShift
Keyboard.00e2 ---> Key.LeftAlt
Keyboard.00e3 ---> Key.LeftMeta
Keyboard.00e4 ---> Key.RightCtrl
Keyboard.00e5 ---> Key.RightShift
Keyboard.00e6 ---> Key.RightAlt
Keyboard.00e7 ---> Key.RightMeta
Keyboard.0000 ---> Sync.Report
Keyboard.0001 ---> Sync.Report
Keyboard.0002 ---> Sync.Report
Keyboard.0003 ---> Sync.Report
Keyboard.0004 ---> Key.A
Keyboard.0005 ---> Key.B
Keyboard.0006 ---> Key.C
Keyboard.0007 ---> Key.D
Keyboard.0008 ---> Key.E
Keyboard.0009 ---> Key.F
Keyboard.000a ---> Key.G
Keyboard.000b ---> Key.H
Keyboard.000c ---> Key.I
Keyboard.000d ---> Key.J
Keyboard.000e ---> Key.K
Keyboard.000f ---> Key.L
Keyboard.0010 ---> Key.M
Keyboard.0011 ---> Key.N
Keyboard.0012 ---> Key.O
Keyboard.0013 ---> Key.P
Keyboard.0014 ---> Key.Q
Keyboard.0015 ---> Key.R
Keyboard.0016 ---> Key.S
Keyboard.0017 ---> Key.T
Keyboard.0018 ---> Key.U
Keyboard.0019 ---> Key.V
Keyboard.001a ---> Key.W
Keyboard.001b ---> Key.X
Keyboard.001c ---> Key.Y
Keyboard.001d ---> Key.Z
Keyboard.001e ---> Key.1
Keyboard.001f ---> Key.2
Keyboard.0020 ---> Key.3
Keyboard.0021 ---> Key.4
Keyboard.0022 ---> Key.5
Keyboard.0023 ---> Key.6
Keyboard.0024 ---> Key.7
Keyboard.0025 ---> Key.8
Keyboard.0026 ---> Key.9
Keyboard.0027 ---> Key.0
Keyboard.0028 ---> Key.Enter
Keyboard.0029 ---> Key.Esc
Keyboard.002a ---> Key.Backspace
Keyboard.002b ---> Key.Tab
Keyboard.002c ---> Key.Space
Keyboard.002d ---> Key.Minus
Keyboard.002e ---> Key.Equal
Keyboard.002f ---> Key.LeftBrace
Keyboard.0030 ---> Key.RightBrace
Keyboard.0031 ---> Key.BackSlash
Keyboard.0032 ---> Key.BackSlash
Keyboard.0033 ---> Key.Semicolon
Keyboard.0034 ---> Key.Apostrophe
Keyboard.0035 ---> Key.Grave
Keyboard.0036 ---> Key.Comma
Keyboard.0037 ---> Key.Dot
Keyboard.0038 ---> Key.Slash
Keyboard.0039 ---> Key.CapsLock
Keyboard.003a ---> Key.F1
Keyboard.003b ---> Key.F2
Keyboard.003c ---> Key.F3
Keyboard.003d ---> Key.F4
Keyboard.003e ---> Key.F5
Keyboard.003f ---> Key.F6
Keyboard.0040 ---> Key.F7
Keyboard.0041 ---> Key.F8
Keyboard.0042 ---> Key.F9
Keyboard.0043 ---> Key.F10
Keyboard.0044 ---> Key.F11
Keyboard.0045 ---> Key.F12
Keyboard.0046 ---> Key.SysRq
Keyboard.0047 ---> Key.ScrollLock
Keyboard.0048 ---> Key.Pause
Keyboard.0049 ---> Key.Insert
Keyboard.004a ---> Key.Home
Keyboard.004b ---> Key.PageUp
Keyboard.004c ---> Key.Delete
Keyboard.004d ---> Key.End
Keyboard.004e ---> Key.PageDown
Keyboard.004f ---> Key.Right
Keyboard.0050 ---> Key.Left
Keyboard.0051 ---> Key.Down
Keyboard.0052 ---> Key.Up
Keyboard.0053 ---> Key.NumLock
Keyboard.0054 ---> Key.KPSlash
Keyboard.0055 ---> Key.KPAsterisk
Keyboard.0056 ---> Key.KPMinus
Keyboard.0057 ---> Key.KPPlus
Keyboard.0058 ---> Key.KPEnter
Keyboard.0059 ---> Key.KP1
Keyboard.005a ---> Key.KP2
Keyboard.005b ---> Key.KP3
Keyboard.005c ---> Key.KP4
Keyboard.005d ---> Key.KP5
Keyboard.005e ---> Key.KP6
Keyboard.005f ---> Key.KP7
Keyboard.0060 ---> Key.KP8
Keyboard.0061 ---> Key.KP9
Keyboard.0062 ---> Key.KP0
Keyboard.0063 ---> Key.KPDot
Keyboard.0064 ---> Key.102nd
Keyboard.0065 ---> Key.Compose
Keyboard.0066 ---> Key.Power
Keyboard.0067 ---> Key.KPEqual
Keyboard.0068 ---> Key.F13
Keyboard.0069 ---> Key.F14
Keyboard.006a ---> Key.F15
Keyboard.006b ---> Key.F16
Keyboard.006c ---> Key.F17
Keyboard.006d ---> Key.F18
Keyboard.006e ---> Key.F19
Keyboard.006f ---> Key.F20
Keyboard.0070 ---> Key.F21
Keyboard.0071 ---> Key.F22
Keyboard.0072 ---> Key.F23
Keyboard.0073 ---> Key.F24
Keyboard.0074 ---> Key.Open
Keyboard.0075 ---> Key.Help
Keyboard.0076 ---> Key.Props
Keyboard.0077 ---> Key.Front
Keyboard.0078 ---> Key.Stop
Keyboard.0079 ---> Key.Again
Keyboard.007a ---> Key.Undo
Keyboard.007b ---> Key.Cut
Keyboard.007c ---> Key.Copy
Keyboard.007d ---> Key.Paste
Keyboard.007e ---> Key.Find
Keyboard.007f ---> Key.Mute
Keyboard.0080 ---> Key.VolumeUp
Keyboard.0081 ---> Key.VolumeDown
Keyboard.0082 ---> Key.Unknown
Keyboard.0083 ---> Key.Unknown
Keyboard.0084 ---> Key.Unknown
Keyboard.0085 ---> Key.KPComma
Keyboard.0086 ---> Key.Unknown
Keyboard.0087 ---> Key.RO
Keyboard.0088 ---> Key.Katakana/Hiragana
Keyboard.0089 ---> Key.Yen
Keyboard.008a ---> Key.Henkan
Keyboard.008b ---> Key.Muhenkan
Keyboard.008c ---> Key.KPJpComma
Keyboard.008d ---> Key.Unknown
Keyboard.008e ---> Key.Unknown
Keyboard.008f ---> Key.Unknown
Keyboard.0090 ---> Key.Hangeul
Keyboard.0091 ---> Key.Hanja
Keyboard.0092 ---> Key.Katakana
Keyboard.0093 ---> Key.HIRAGANA
Keyboard.0094 ---> Key.Zenkaku/Hankaku
Keyboard.0095 ---> Key.Unknown
Keyboard.0096 ---> Key.Unknown
Keyboard.0097 ---> Key.Unknown
Keyboard.0098 ---> Key.Unknown
Keyboard.0099 ---> Key.Unknown
Keyboard.009a ---> Key.Unknown
Keyboard.009b ---> Key.Unknown
Keyboard.009c ---> Key.Delete
Keyboard.009d ---> Key.Unknown
Keyboard.009e ---> Key.Unknown
Keyboard.009f ---> Key.Unknown
Keyboard.00a0 ---> Key.Unknown
Keyboard.00a1 ---> Key.Unknown
Keyboard.00a2 ---> Key.Unknown
Keyboard.00a3 ---> Key.Unknown
Keyboard.00a4 ---> Key.Unknown
Keyboard.00a5 ---> Key.Unknown
Keyboard.00a6 ---> Key.Unknown
Keyboard.00a7 ---> Key.Unknown
Keyboard.00a8 ---> Key.Unknown
Keyboard.00a9 ---> Key.Unknown
Keyboard.00aa ---> Key.Unknown
Keyboard.00ab ---> Key.Unknown
Keyboard.00ac ---> Key.Unknown
Keyboard.00ad ---> Key.Unknown
Keyboard.00ae ---> Key.Unknown
Keyboard.00af ---> Key.Unknown
Keyboard.00b0 ---> Key.Unknown
Keyboard.00b1 ---> Key.Unknown
Keyboard.00b2 ---> Key.Unknown
Keyboard.00b3 ---> Key.Unknown
Keyboard.00b4 ---> Key.Unknown
Keyboard.00b5 ---> Key.Unknown
Keyboard.00b6 ---> Key.KPLeftParenthesis
Keyboard.00b7 ---> Key.KPRightParenthesis
Keyboard.00b8 ---> Key.Unknown
Keyboard.00b9 ---> Key.Unknown
Keyboard.00ba ---> Key.Unknown
Keyboard.00bb ---> Key.Unknown
Keyboard.00bc ---> Key.Unknown
Keyboard.00bd ---> Key.Unknown
Keyboard.00be ---> Key.Unknown
Keyboard.00bf ---> Key.Unknown
Keyboard.00c0 ---> Key.Unknown
Keyboard.00c1 ---> Key.Unknown
Keyboard.00c2 ---> Key.Unknown
Keyboard.00c3 ---> Key.Unknown
Keyboard.00c4 ---> Key.Unknown
Keyboard.00c5 ---> Key.Unknown
Keyboard.00c6 ---> Key.Unknown
Keyboard.00c7 ---> Key.Unknown
Keyboard.00c8 ---> Key.Unknown
Keyboard.00c9 ---> Key.Unknown
Keyboard.00ca ---> Key.Unknown
Keyboard.00cb ---> Key.Unknown
Keyboard.00cc ---> Key.Unknown
Keyboard.00cd ---> Key.Unknown
Keyboard.00ce ---> Key.Unknown
Keyboard.00cf ---> Key.Unknown
Keyboard.00d0 ---> Key.Unknown
Keyboard.00d1 ---> Key.Unknown
Keyboard.00d2 ---> Key.Unknown
Keyboard.00d3 ---> Key.Unknown
Keyboard.00d4 ---> Key.Unknown
Keyboard.00d5 ---> Key.Unknown
Keyboard.00d6 ---> Key.Unknown
Keyboard.00d7 ---> Key.Unknown
Keyboard.00d8 ---> Key.Delete
Keyboard.00d9 ---> Key.Unknown
Keyboard.00da ---> Key.Unknown
Keyboard.00db ---> Key.Unknown
Keyboard.00dc ---> Key.Unknown
Keyboard.00dd ---> Key.Unknown
Keyboard.00de ---> Key.Unknown
Keyboard.00df ---> Key.Unknown
Keyboard.00e0 ---> Key.LeftControl
Keyboard.00e1 ---> Key.LeftShift
Keyboard.00e2 ---> Key.LeftAlt
Keyboard.00e3 ---> Key.LeftMeta
Keyboard.00e4 ---> Key.RightCtrl
Keyboard.00e5 ---> Key.RightShift
Keyboard.00e6 ---> Key.RightAlt
Keyboard.00e7 ---> Key.RightMeta
Keyboard.00e8 ---> Key.PlayPause
Keyboard.00e9 ---> Key.StopCD
Keyboard.00ea ---> Key.PreviousSong
Keyboard.00eb ---> Key.NextSong
Keyboard.00ec ---> Key.EjectCD
Keyboard.00ed ---> Key.VolumeUp
Keyboard.00ee ---> Key.VolumeDown
Keyboard.00ef ---> Key.Mute
Keyboard.00f0 ---> Key.WWW
Keyboard.00f1 ---> Key.Back
Keyboard.00f2 ---> Key.Forward
Keyboard.00f3 ---> Key.Stop
Keyboard.00f4 ---> Key.Find
Keyboard.00f5 ---> Key.ScrollUp
Keyboard.00f6 ---> Key.ScrollDown
Keyboard.00f7 ---> Key.Edit
Keyboard.00f8 ---> Key.Sleep
Keyboard.00f9 ---> Key.Coffee
Keyboard.00fa ---> Key.Refresh
Keyboard.00fb ---> Key.Calc
Keyboard.00fc ---> Key.Unknown
Keyboard.00fd ---> Key.Unknown
Keyboard.00fe ---> Key.Unknown
Keyboard.00ff ---> Key.Unknown
LED.NumLock ---> LED.NumLock
LED.CapsLock ---> LED.CapsLock
LED.ScrollLock ---> LED.ScrollLock
LED.Compose ---> LED.Compose
LED.Kana ---> LED.Kana
05 01 09 80 a1 01 85 02 05 01 19 81 29 83 15 00 25 01 95 03 75 01 81 02 95 01 75 05 81 01 c0 05 0c 09 01 a1 01 85 03 15 00 25 01 09 01 09 01 09 01 09 01 09 01 09 e2 09 01 09 01 09 01 09 01 09 01 09 b7 09 01 09 01 09 01 09 01 09 01 09 01 09 01 09 6f 09 ea 09 e9 09 70 09 01 75 01 95 18 81 02 c0 06 a0 ff 09 01 a1 01 85 09 15 00 25 ff 09 04 75 08 95 02 91 02 06 a1 ff 09 01 85 54 15 00 25 7f 0a 11 00 75 08 95 01 b1 02 06 a2 ff 09 01 85 64 15 00 25 01 0a 12 00 75 08 95 01 b1 02 06 a3 ff 09 01 85 74 15 00 25 01 0a 13 00 75 08 95 01 b1 02 06 a4 ff 09 01 85 90 09 08 b1 02 85 84 09 09 b1 02 85 20 09 0a b1 02 06 a5 ff 09 01 85 a2 09 0b 95 06 b1 02 85 a3 09 0c 95 03 b1 02 c0 09 22 a1 00 85 04 09 57 09 58 75 01 95 02 25 01 b1 02 95 06 b1 03 c0 

  INPUT(2)[INPUT]
    Field(0)
      Application(GenericDesktop.SystemControl)
      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)
      Application(Consumer.0001)
      Usage(24)
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.00e2
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.00b7
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.0001
        Consumer.006f
        Consumer.00ea
        Consumer.00e9
        Consumer.0070
        Consumer.0001
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(24)
      Report Offset(0)
      Flags( Variable Absolute )
  OUTPUT(9)[OUTPUT]
    Field(0)
      Application(ffa0.0001)
      Usage(2)
        ffa0.0004
        ffa0.0004
      Logical Minimum(0)
      Logical Maximum(255)
      Report Size(8)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(84)[FEATURE]
    Field(0)
      Application(ffa0.0001)
      Usage(2)
        ffa1.0001
        ffa1.0011
      Logical Minimum(0)
      Logical Maximum(127)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(100)[FEATURE]
    Field(0)
      Application(ffa0.0001)
      Usage(2)
        ffa2.0001
        ffa2.0012
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(116)[FEATURE]
    Field(0)
      Application(ffa0.0001)
      Usage(2)
        ffa3.0001
        ffa3.0013
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(144)[FEATURE]
    Field(0)
      Application(ffa0.0001)
      Usage(2)
        ffa4.0001
        ffa4.0008
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(132)[FEATURE]
    Field(0)
      Application(ffa0.0001)
      Usage(1)
        ffa4.0009
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(32)[FEATURE]
    Field(0)
      Application(ffa0.0001)
      Usage(1)
        ffa4.000a
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(162)[FEATURE]
    Field(0)
      Application(ffa0.0001)
      Usage(6)
        ffa5.0001
        ffa5.000b
        ffa5.000b
        ffa5.000b
        ffa5.000b
        ffa5.000b
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(6)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(163)[FEATURE]
    Field(0)
      Application(ffa0.0001)
      Usage(3)
        ffa5.000c
        ffa5.000c
        ffa5.000c
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(8)
      Report Count(3)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(4)[FEATURE]
    Field(0)
      Physical(ffa5.0022)
      Usage(2)
        ffa5.0057
        ffa5.0058
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute )

GenericDesktop.SystemPowerDown ---> Key.Power
GenericDesktop.SystemSleep ---> Key.Sleep
GenericDesktop.SystemWakeUp ---> Key.WakeUp
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.00e2 ---> Key.Mute
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.00b7 ---> Key.StopCD
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.0001 ---> Key.Unknown
Consumer.006f ---> Key.BrightnessUp
Consumer.00ea ---> Key.VolumeDown
Consumer.00e9 ---> Key.VolumeUp
Consumer.0070 ---> Key.BrightnessDown
Consumer.0001 ---> Key.Unknown
ffa0.0004 ---> Sync.Report
ffa0.0004 ---> Sync.Report
05 01 09 02 a1 01 85 02 09 01 a1 00 05 09 19 01 29 02 15 00 25 01 75 01 95 02 81 02 95 06 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 05 01 09 02 a1 01 85 10 09 01 a1 00 05 09 19 01 29 03 15 00 25 01 75 01 95 03 81 02 95 05 81 01 05 01 09 30 09 31 15 81 25 7f 75 08 95 02 81 06 c0 c0 05 0d 09 05 a1 01 85 03 05 0d 09 22 a1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 95 01 75 03 25 05 09 51 81 02 75 01 95 03 81 03 05 01 15 00 26 16 04 75 10 55 0e 65 11 09 30 35 00 46 67 03 95 01 81 02 46 d0 01 26 2d 02 09 31 81 02 c0 05 0d 09 22 a1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 95 01 75 03 25 05 09 51 81 02 75 01 95 03 81 03 05 01 15 00 26 16 04 75 10 55 0e 65 11 09 30 35 00 46 67 03 95 01 81 02 46 d0 01 26 2d 02 09 31 81 02 c0 05 0d 09 22 a1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 95 01 75 03 25 05 09 51 81 02 75 01 95 03 81 03 05 01 15 00 26 16 04 75 10 55 0e 65 11 09 30 35 00 46 67 03 95 01 81 02 46 d0 01 26 2d 02 09 31 81 02 c0 05 0d 09 22 a1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 95 01 75 03 25 05 09 51 81 02 75 01 95 03 81 03 05 01 15 00 26 16 04 75 10 55 0e 65 11 09 30 35 00 46 67 03 95 01 81 02 46 d0 01 26 2d 02 09 31 81 02 c0 05 0d 09 22 a1 02 15 00 25 01 09 47 09 42 95 02 75 01 81 02 95 01 75 03 25 05 09 51 81 02 75 01 95 03 81 03 05 01 15 00 26 16 04 75 10 55 0e 65 11 09 30 35 00 46 67 03 95 01 81 02 46 d0 01 26 2d 02 09 31 81 02 c0 05 0d 55 0c 66 01 10 47 ff ff 00 00 27 ff ff 00 00 75 10 95 01 09 56 81 02 09 54 25 7f 95 01 75 08 81 02 05 09 09 01 25 01 75 01 95 01 81 02 95 07 81 03 05 0d 85 08 09 55 09 59 75 04 95 02 25 0f b1 02 85 0d 09 60 75 01 95 01 15 00 25 01 b1 02 95 07 b1 03 85 07 06 00 ff 09 c5 15 00 26 ff 00 75 08 96 00 01 b1 02 c0 05 0d 09 0e a1 01 85 04 09 22 a1 02 09 52 15 00 25 0a 75 08 95 01 b1 02 c0 09 22 a1 00 85 06 09 57 09 58 75 01 95 02 25 01 b1 02 95 06 b1 03 c0 c0 06 00 ff 09 01 a1 01 85 09 09 02 15 00 26 ff 00 75 08 95 14 91 02 85 0a 09 03 15 00 26 ff 00 75 08 95 14 91 02 85 0b 09 04 15 00 26 ff 00 75 08 95 3d 81 02 85 0c 09 05 15 00 26 ff 00 75 08 95 3d 81 02 85 0f 09 06 15 00 26 ff 00 75 08 95 03 b1 02 85 0e 09 07 15 00 26 ff 00 75 08 95 01 b1 02 c0 

  INPUT(2)[INPUT]
    Field(0)
      Physical(GenericDesktop.Pointer)
      Application(GenericDesktop.Mouse)
      Usage(2)
        Button.0001
        Button.0002
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Physical(GenericDesktop.Pointer)
      Application(GenericDesktop.Mouse)
      Usage(2)
        GenericDesktop.X
        GenericDesktop.Y
      Logical Minimum(-127)
      Logical Maximum(127)
      Report Size(8)
      Report Count(2)
      Report Offset(8)
      Flags( Variable Relative )
  INPUT(16)[INPUT]
    Field(0)
      Physical(GenericDesktop.Pointer)
      Application(GenericDesktop.Mouse)
      Usage(3)
        Button.0001
        Button.0002
        Button.0003
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(3)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Physical(GenericDesktop.Pointer)
      Application(GenericDesktop.Mouse)
      Usage(2)
        GenericDesktop.X
        GenericDesktop.Y
      Logical Minimum(-127)
      Logical Maximum(127)
      Report Size(8)
      Report Count(2)
      Report Offset(8)
      Flags( Variable Relative )
  INPUT(3)[INPUT]
    Field(0)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(2)
        Digitizers.Confidence
        Digitizers.TipSwitch
      Logical Minimum(0)
      Logical Maximum(1)
      Report Size(1)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute )
    Field(1)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        Digitizers.ContactID
      Logical Minimum(0)
      Logical Maximum(5)
      Report Size(3)
      Report Count(1)
      Report Offset(2)
      Flags( Variable Absolute )
    Field(2)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.X
      Logical Minimum(0)
      Logical Maximum(1046)
      Physical Minimum(0)
      Physical Maximum(871)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(8)
      Flags( Variable Absolute )
    Field(3)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.Y
      Logical Minimum(0)
      Logical Maximum(557)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(24)
      Flags( Variable Absolute )
    Field(4)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(2)
        Digitizers.Confidence
        Digitizers.TipSwitch
      Logical Minimum(0)
      Logical Maximum(1)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(1)
      Report Count(2)
      Report Offset(40)
      Flags( Variable Absolute )
    Field(5)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        Digitizers.ContactID
      Logical Minimum(0)
      Logical Maximum(5)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(3)
      Report Count(1)
      Report Offset(42)
      Flags( Variable Absolute )
    Field(6)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.X
      Logical Minimum(0)
      Logical Maximum(1046)
      Physical Minimum(0)
      Physical Maximum(871)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(48)
      Flags( Variable Absolute )
    Field(7)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.Y
      Logical Minimum(0)
      Logical Maximum(557)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(64)
      Flags( Variable Absolute )
    Field(8)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(2)
        Digitizers.Confidence
        Digitizers.TipSwitch
      Logical Minimum(0)
      Logical Maximum(1)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(1)
      Report Count(2)
      Report Offset(80)
      Flags( Variable Absolute )
    Field(9)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        Digitizers.ContactID
      Logical Minimum(0)
      Logical Maximum(5)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(3)
      Report Count(1)
      Report Offset(82)
      Flags( Variable Absolute )
    Field(10)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.X
      Logical Minimum(0)
      Logical Maximum(1046)
      Physical Minimum(0)
      Physical Maximum(871)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(88)
      Flags( Variable Absolute )
    Field(11)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.Y
      Logical Minimum(0)
      Logical Maximum(557)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(104)
      Flags( Variable Absolute )
    Field(12)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(2)
        Digitizers.Confidence
        Digitizers.TipSwitch
      Logical Minimum(0)
      Logical Maximum(1)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(1)
      Report Count(2)
      Report Offset(120)
      Flags( Variable Absolute )
    Field(13)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        Digitizers.ContactID
      Logical Minimum(0)
      Logical Maximum(5)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(3)
      Report Count(1)
      Report Offset(122)
      Flags( Variable Absolute )
    Field(14)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.X
      Logical Minimum(0)
      Logical Maximum(1046)
      Physical Minimum(0)
      Physical Maximum(871)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(128)
      Flags( Variable Absolute )
    Field(15)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.Y
      Logical Minimum(0)
      Logical Maximum(557)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(144)
      Flags( Variable Absolute )
    Field(16)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(2)
        Digitizers.Confidence
        Digitizers.TipSwitch
      Logical Minimum(0)
      Logical Maximum(1)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(1)
      Report Count(2)
      Report Offset(160)
      Flags( Variable Absolute )
    Field(17)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        Digitizers.ContactID
      Logical Minimum(0)
      Logical Maximum(5)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(3)
      Report Count(1)
      Report Offset(162)
      Flags( Variable Absolute )
    Field(18)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.X
      Logical Minimum(0)
      Logical Maximum(1046)
      Physical Minimum(0)
      Physical Maximum(871)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(168)
      Flags( Variable Absolute )
    Field(19)
      Logical(Digitizers.Finger)
      Application(Digitizers.TouchPad)
      Usage(1)
        GenericDesktop.Y
      Logical Minimum(0)
      Logical Maximum(557)
      Physical Minimum(0)
      Physical Maximum(464)
      Unit Exponent(-2)
      Unit(SI Linear : Centimeter)
      Report Size(16)
      Report Count(1)
      Report Offset(184)
      Flags( Variable Absolute )
    Field(20)
      Application(Digitizers.TouchPad)
      Usage(1)
        Digitizers.0056
      Logical Minimum(0)
      Logical Maximum(65535)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(16)
      Report Count(1)
      Report Offset(200)
      Flags( Variable Absolute )
    Field(21)
      Application(Digitizers.TouchPad)
      Usage(1)
        Digitizers.ContactCount
      Logical Minimum(0)
      Logical Maximum(127)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(216)
      Flags( Variable Absolute )
    Field(22)
      Application(Digitizers.TouchPad)
      Usage(1)
        Button.0001
      Logical Minimum(0)
      Logical Maximum(1)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(1)
      Report Count(1)
      Report Offset(224)
      Flags( Variable Absolute )
  INPUT(11)[INPUT]
    Field(0)
      Application(ff00.0001)
      Usage(61)
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
        ff00.0004
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(61)
      Report Offset(0)
      Flags( Variable Absolute )
  INPUT(12)[INPUT]
    Field(0)
      Application(ff00.0001)
      Usage(61)
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
        ff00.0005
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(61)
      Report Offset(0)
      Flags( Variable Absolute )
  OUTPUT(9)[OUTPUT]
    Field(0)
      Application(ff00.0001)
      Usage(20)
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
        ff00.0002
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(20)
      Report Offset(0)
      Flags( Variable Absolute )
  OUTPUT(10)[OUTPUT]
    Field(0)
      Application(ff00.0001)
      Usage(20)
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
        ff00.0003
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(20)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(8)[FEATURE]
    Field(0)
      Application(Digitizers.TouchPad)
      Usage(2)
        Digitizers.ContactMaximumNumber
        Digitizers.ButtonType
      Logical Minimum(0)
      Logical Maximum(15)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(4)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(13)[FEATURE]
    Field(0)
      Application(Digitizers.TouchPad)
      Usage(1)
        Digitizers.0060
      Logical Minimum(0)
      Logical Maximum(1)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(1)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(7)[FEATURE]
    Field(0)
      Application(Digitizers.TouchPad)
      Usage(256)
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
        ff00.00c5
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(256)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(4)[FEATURE]
    Field(0)
      Logical(Digitizers.Finger)
      Application(Digitizers.DeviceConfiguration)
      Usage(1)
        Digitizers.InputMode
      Logical Minimum(0)
      Logical Maximum(10)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(6)[FEATURE]
    Field(0)
      Physical(Digitizers.Finger)
      Application(Digitizers.DeviceConfiguration)
      Usage(2)
        Digitizers.0057
        Digitizers.0058
      Logical Minimum(0)
      Logical Maximum(1)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(1)
      Report Count(2)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(15)[FEATURE]
    Field(0)
      Application(ff00.0001)
      Usage(3)
        ff00.0006
        ff00.0006
        ff00.0006
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(3)
      Report Offset(0)
      Flags( Variable Absolute )
  FEATURE(14)[FEATURE]
    Field(0)
      Application(ff00.0001)
      Usage(1)
        ff00.0007
      Logical Minimum(0)
      Logical Maximum(255)
      Physical Minimum(0)
      Physical Maximum(65535)
      Unit Exponent(-4)
      Unit(SI Linear : Seconds)
      Report Size(8)
      Report Count(1)
      Report Offset(0)
      Flags( Variable Absolute )

Button.0001 ---> Key.LeftBtn
Button.0002 ---> Key.RightBtn
GenericDesktop.X ---> Relative.X
GenericDesktop.Y ---> Relative.Y
Button.0001 ---> Key.LeftBtn
Button.0002 ---> Key.RightBtn
Button.0003 ---> Key.MiddleBtn
GenericDesktop.X ---> Relative.X
GenericDesktop.Y ---> Relative.Y
Digitizers.Confidence ---> Sync.Report
Digitizers.TipSwitch ---> Sync.Report
Digitizers.ContactID ---> Sync.Report
GenericDesktop.X ---> Sync.Report
GenericDesktop.Y ---> Sync.Report
Digitizers.Confidence ---> Sync.Report
Digitizers.TipSwitch ---> Sync.Report
Digitizers.ContactID ---> Sync.Report
GenericDesktop.X ---> Sync.Report
GenericDesktop.Y ---> Sync.Report
Digitizers.Confidence ---> Sync.Report
Digitizers.TipSwitch ---> Sync.Report
Digitizers.ContactID ---> Sync.Report
GenericDesktop.X ---> Sync.Report
GenericDesktop.Y ---> Sync.Report
Digitizers.Confidence ---> Sync.Report
Digitizers.TipSwitch ---> Sync.Report
Digitizers.ContactID ---> Sync.Report
GenericDesktop.X ---> Sync.Report
GenericDesktop.Y ---> Sync.Report
Digitizers.Confidence ---> Sync.Report
Digitizers.TipSwitch ---> Sync.Report
Digitizers.ContactID ---> Sync.Report
GenericDesktop.X ---> Sync.Report
GenericDesktop.Y ---> Sync.Report
Digitizers.0056 ---> Sync.Report
Digitizers.ContactCount ---> Sync.Report
Button.0001 ---> Key.LeftBtn
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0004 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0005 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0002 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report
ff00.0003 ---> Sync.Report

Attachment: smime.p7s
Description: S/MIME Cryptographic Signature


[Index of Archives]     [Linux Kernel Development]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]

  Powered by Linux