* [PATCH] HID: fix horizontal wheel for ms comfort mouse 4500
@ 2011-07-04 8:59 Ari Savolainen
2011-07-11 12:47 ` Jiri Kosina
0 siblings, 1 reply; 5+ messages in thread
From: Ari Savolainen @ 2011-07-04 8:59 UTC (permalink / raw)
To: Jiri Kosina, linux-input
Microsoft comfort mouse 4500 has a report descriptor that contains
usage Consumer.HorizontalWheel three times under three different
input reports (the report descriptor from debugfs is copied
below).
The first of the usages gets mapping REL_WHEEL, but the other two
get REL_DIAL and REL_MISC due this loop in function
hidinput_configure_usage (in hid-input.c soon after label
'mapped'):
while (usage->code <= max && test_and_set_bit(usage->code, bit))
usage->code = find_next_zero_bit(bit, max + 1, usage->code);
REL_MISC gets eventually reported when the horizontal wheel is used.
The purpose of the loop is not clear and deserves, perhaps, an
explanatory comment. Most of the code works around the loop by
using map_xxx_clear macros anyway.
The patch below introduces another such macro (map_rel_clear) and
changes the wheel mapping to use it.
It would have been possible to add another quirk in
hid-microsoft.c but the proposed patch seems to be more in line to
what is currently done in similar cases. It would be possible to
replace rdesc by a fragment that wholly describes the mouse (see
report INPUT(16) below) or, equivalently to the proposed patch, to
check if the hid_usage.code bit is already set in (currently
undefined) hid_driver.input_mapped and return -1 if that is the
case.
---
drivers/hid/hid-input.c | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/drivers/hid/hid-input.c b/drivers/hid/hid-input.c
index 6559e2e..f82ca82 100644
--- a/drivers/hid/hid-input.c
+++ b/drivers/hid/hid-input.c
@@ -65,6 +65,8 @@ static const struct {
#define map_abs_clear(c) hid_map_usage_clear(hidinput, usage, &bit, \
&max, EV_ABS, (c))
+#define map_rel_clear(c) hid_map_usage_clear(hidinput, usage, &bit, \
+ &max, EV_REL, (c))
#define map_key_clear(c) hid_map_usage_clear(hidinput, usage, &bit, \
&max, EV_KEY, (c))
@@ -610,7 +612,7 @@ static void hidinput_configure_usage(struct
hid_input *hidinput, struct hid_fiel
case 0x22f: map_key_clear(KEY_ZOOMRESET); break;
case 0x233: map_key_clear(KEY_SCROLLUP); break;
case 0x234: map_key_clear(KEY_SCROLLDOWN); break;
- case 0x238: map_rel(REL_HWHEEL); break;
+ case 0x238: map_rel_clear(REL_HWHEEL); break;
case 0x23d: map_key_clear(KEY_EDIT); break;
case 0x25f: map_key_clear(KEY_CANCEL); break;
case 0x269: map_key_clear(KEY_INSERT); break;
--
1.7.4.1
Report descriptor for the mouse:
05 0c 09 01 a1 01 05 01 09 02 a1 02 85 13 05 0c 0a 38 02 95 01 75 08
15 81 25 7f 81 06 c0 85 20 06 00 ff 15 00 26 ff 00 75 08 95 12 0a 0a
fa b1 02 85 2e 06 00 ff 15 00 26 ff 00 75 08 95 07 0a 0a fa b1 02 85
2f 06 00 ff 15 00 26 ff 00 75 08 95 07 0a 0a fa 81 02 85 18 06 00 ff
15 00 26 ff 00 75 08 95 01 0a 0a fa b1 02 85 16 05 0c 19 00 2a ff 03
95 01 75 10 15 00 26 ff 03 81 00 06 00 ff 1a 01 fd 2a ff fd 15 01 26
ff 00 75 08 81 00 81 01 85 17 0a 06 ff 15 00 25 01 35 01 45 10 95 01
75 02 b1 02 0a 0f ff 45 10 95 01 75 02 b1 02 0a 04 ff 35 00 45 00 95
01 75 01 b1 02 75 03 b1 01 85 1c 06 00 ff 0a 25 ff 15 00 25 04 75 08
95 01 81 02 0a 26 ff 75 10 15 00 27 ff ff 81 02 c0 05 01 09 02 a1 01
05 01 09 02 a1 02 85 10 09 01 a1 00 05 09 19 01 29 05 95 05 75 01 25
00 25 01 81 02 75 03 95 01 81 01 05 01 09 30 09 31 95 02 75 10 16 01
80 26 ff 7f 81 06 a1 02 85 12 09 48 95 01 75 02 15 00 25 01 35 01 45
10 b1 02 85 10 09 38 35 00 45 00 15 81 25 7f 75 08 81 06 c0 a1 02 85
12 09 48 75 02 15 00 25 01 35 01 45 10 b1 02 35 00 45 00 75 04 b1 01
85 10 05 0c 15 81 25 7f 75 08 0a 38 02 81 06 c0 c0 c0 c0
INPUT(19)[INPUT]
Field(0)
Logical(GenericDesktop.Mouse)
Usage(1)
Consumer.HorizontalWheel
Logical Minimum(-127)
Logical Maximum(127)
Report Size(8)
Report Count(1)
Report Offset(0)
Flags( Variable Relative )
INPUT(47)[INPUT]
Field(0)
Usage(7)
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
Logical Minimum(0)
Logical Maximum(255)
Report Size(8)
Report Count(7)
Report Offset(0)
Flags( Variable Absolute )
INPUT(22)[INPUT]
Field(0)
Usage(1024)
Consumer.0000
Consumer.0001
Consumer.0002
Consumer.0003
Consumer.0004
Consumer.0005
Consumer.0006
Consumer.0007
Consumer.0008
Consumer.0009
Consumer.000a
Consumer.000b
Consumer.000c
Consumer.000d
Consumer.000e
Consumer.000f
Consumer.0010
Consumer.0011
Consumer.0012
Consumer.0013
Consumer.0014
Consumer.0015
Consumer.0016
Consumer.0017
Consumer.0018
Consumer.0019
Consumer.001a
Consumer.001b
Consumer.001c
Consumer.001d
Consumer.001e
Consumer.001f
Consumer.0020
Consumer.0021
Consumer.0022
Consumer.0023
Consumer.0024
Consumer.0025
Consumer.0026
Consumer.0027
Consumer.0028
Consumer.0029
Consumer.002a
Consumer.002b
Consumer.002c
Consumer.002d
Consumer.002e
Consumer.002f
Consumer.0030
Consumer.0031
Consumer.0032
Consumer.0033
Consumer.0034
Consumer.0035
Consumer.0036
Consumer.0037
Consumer.0038
Consumer.0039
Consumer.003a
Consumer.003b
Consumer.003c
Consumer.003d
Consumer.003e
Consumer.003f
Consumer.0040
Consumer.0041
Consumer.0042
Consumer.0043
Consumer.0044
Consumer.0045
Consumer.0046
Consumer.0047
Consumer.0048
Consumer.0049
Consumer.004a
Consumer.004b
Consumer.004c
Consumer.004d
Consumer.004e
Consumer.004f
Consumer.0050
Consumer.0051
Consumer.0052
Consumer.0053
Consumer.0054
Consumer.0055
Consumer.0056
Consumer.0057
Consumer.0058
Consumer.0059
Consumer.005a
Consumer.005b
Consumer.005c
Consumer.005d
Consumer.005e
Consumer.005f
Consumer.0060
Consumer.0061
Consumer.0062
Consumer.0063
Consumer.0064
Consumer.0065
Consumer.0066
Consumer.0067
Consumer.0068
Consumer.0069
Consumer.006a
Consumer.006b
Consumer.006c
Consumer.006d
Consumer.006e
Consumer.006f
Consumer.0070
Consumer.0071
Consumer.0072
Consumer.0073
Consumer.0074
Consumer.0075
Consumer.0076
Consumer.0077
Consumer.0078
Consumer.0079
Consumer.007a
Consumer.007b
Consumer.007c
Consumer.007d
Consumer.007e
Consumer.007f
Consumer.0080
Consumer.0081
Consumer.0082
Consumer.0083
Consumer.0084
Consumer.0085
Consumer.0086
Consumer.0087
Consumer.0088
Consumer.0089
Consumer.008a
Consumer.008b
Consumer.008c
Consumer.008d
Consumer.008e
Consumer.008f
Consumer.0090
Consumer.0091
Consumer.0092
Consumer.0093
Consumer.0094
Consumer.0095
Consumer.0096
Consumer.0097
Consumer.0098
Consumer.0099
Consumer.009a
Consumer.009b
Consumer.009c
Consumer.009d
Consumer.009e
Consumer.009f
Consumer.00a0
Consumer.00a1
Consumer.00a2
Consumer.00a3
Consumer.00a4
Consumer.00a5
Consumer.00a6
Consumer.00a7
Consumer.00a8
Consumer.00a9
Consumer.00aa
Consumer.00ab
Consumer.00ac
Consumer.00ad
Consumer.00ae
Consumer.00af
Consumer.00b0
Consumer.00b1
Consumer.00b2
Consumer.00b3
Consumer.00b4
Consumer.00b5
Consumer.00b6
Consumer.00b7
Consumer.00b8
Consumer.00b9
Consumer.00ba
Consumer.00bb
Consumer.00bc
Consumer.00bd
Consumer.00be
Consumer.00bf
Consumer.00c0
Consumer.00c1
Consumer.00c2
Consumer.00c3
Consumer.00c4
Consumer.00c5
Consumer.00c6
Consumer.00c7
Consumer.00c8
Consumer.00c9
Consumer.00ca
Consumer.00cb
Consumer.00cc
Consumer.00cd
Consumer.00ce
Consumer.00cf
Consumer.00d0
Consumer.00d1
Consumer.00d2
Consumer.00d3
Consumer.00d4
Consumer.00d5
Consumer.00d6
Consumer.00d7
Consumer.00d8
Consumer.00d9
Consumer.00da
Consumer.00db
Consumer.00dc
Consumer.00dd
Consumer.00de
Consumer.00df
Consumer.00e0
Consumer.00e1
Consumer.00e2
Consumer.00e3
Consumer.00e4
Consumer.00e5
Consumer.00e6
Consumer.00e7
Consumer.00e8
Consumer.00e9
Consumer.00ea
Consumer.00eb
Consumer.00ec
Consumer.00ed
Consumer.00ee
Consumer.00ef
Consumer.00f0
Consumer.00f1
Consumer.00f2
Consumer.00f3
Consumer.00f4
Consumer.00f5
Consumer.00f6
Consumer.00f7
Consumer.00f8
Consumer.00f9
Consumer.00fa
Consumer.00fb
Consumer.00fc
Consumer.00fd
Consumer.00fe
Consumer.00ff
Consumer.0100
Consumer.0101
Consumer.0102
Consumer.0103
Consumer.0104
Consumer.0105
Consumer.0106
Consumer.0107
Consumer.0108
Consumer.0109
Consumer.010a
Consumer.010b
Consumer.010c
Consumer.010d
Consumer.010e
Consumer.010f
Consumer.0110
Consumer.0111
Consumer.0112
Consumer.0113
Consumer.0114
Consumer.0115
Consumer.0116
Consumer.0117
Consumer.0118
Consumer.0119
Consumer.011a
Consumer.011b
Consumer.011c
Consumer.011d
Consumer.011e
Consumer.011f
Consumer.0120
Consumer.0121
Consumer.0122
Consumer.0123
Consumer.0124
Consumer.0125
Consumer.0126
Consumer.0127
Consumer.0128
Consumer.0129
Consumer.012a
Consumer.012b
Consumer.012c
Consumer.012d
Consumer.012e
Consumer.012f
Consumer.0130
Consumer.0131
Consumer.0132
Consumer.0133
Consumer.0134
Consumer.0135
Consumer.0136
Consumer.0137
Consumer.0138
Consumer.0139
Consumer.013a
Consumer.013b
Consumer.013c
Consumer.013d
Consumer.013e
Consumer.013f
Consumer.0140
Consumer.0141
Consumer.0142
Consumer.0143
Consumer.0144
Consumer.0145
Consumer.0146
Consumer.0147
Consumer.0148
Consumer.0149
Consumer.014a
Consumer.014b
Consumer.014c
Consumer.014d
Consumer.014e
Consumer.014f
Consumer.0150
Consumer.0151
Consumer.0152
Consumer.0153
Consumer.0154
Consumer.0155
Consumer.0156
Consumer.0157
Consumer.0158
Consumer.0159
Consumer.015a
Consumer.015b
Consumer.015c
Consumer.015d
Consumer.015e
Consumer.015f
Consumer.0160
Consumer.0161
Consumer.0162
Consumer.0163
Consumer.0164
Consumer.0165
Consumer.0166
Consumer.0167
Consumer.0168
Consumer.0169
Consumer.016a
Consumer.016b
Consumer.016c
Consumer.016d
Consumer.016e
Consumer.016f
Consumer.0170
Consumer.0171
Consumer.0172
Consumer.0173
Consumer.0174
Consumer.0175
Consumer.0176
Consumer.0177
Consumer.0178
Consumer.0179
Consumer.017a
Consumer.017b
Consumer.017c
Consumer.017d
Consumer.017e
Consumer.017f
Consumer.0180
Consumer.0181
Consumer.0182
Consumer.0183
Consumer.0184
Consumer.0185
Consumer.0186
Consumer.0187
Consumer.0188
Consumer.0189
Consumer.018a
Consumer.018b
Consumer.018c
Consumer.018d
Consumer.018e
Consumer.018f
Consumer.0190
Consumer.0191
Consumer.0192
Consumer.0193
Consumer.0194
Consumer.0195
Consumer.0196
Consumer.0197
Consumer.0198
Consumer.0199
Consumer.019a
Consumer.019b
Consumer.019c
Consumer.019d
Consumer.019e
Consumer.019f
Consumer.01a0
Consumer.01a1
Consumer.01a2
Consumer.01a3
Consumer.01a4
Consumer.01a5
Consumer.01a6
Consumer.01a7
Consumer.01a8
Consumer.01a9
Consumer.01aa
Consumer.01ab
Consumer.01ac
Consumer.01ad
Consumer.01ae
Consumer.01af
Consumer.01b0
Consumer.01b1
Consumer.01b2
Consumer.01b3
Consumer.01b4
Consumer.01b5
Consumer.01b6
Consumer.01b7
Consumer.01b8
Consumer.01b9
Consumer.01ba
Consumer.01bb
Consumer.01bc
Consumer.01bd
Consumer.01be
Consumer.01bf
Consumer.01c0
Consumer.01c1
Consumer.01c2
Consumer.01c3
Consumer.01c4
Consumer.01c5
Consumer.01c6
Consumer.01c7
Consumer.01c8
Consumer.01c9
Consumer.01ca
Consumer.01cb
Consumer.01cc
Consumer.01cd
Consumer.01ce
Consumer.01cf
Consumer.01d0
Consumer.01d1
Consumer.01d2
Consumer.01d3
Consumer.01d4
Consumer.01d5
Consumer.01d6
Consumer.01d7
Consumer.01d8
Consumer.01d9
Consumer.01da
Consumer.01db
Consumer.01dc
Consumer.01dd
Consumer.01de
Consumer.01df
Consumer.01e0
Consumer.01e1
Consumer.01e2
Consumer.01e3
Consumer.01e4
Consumer.01e5
Consumer.01e6
Consumer.01e7
Consumer.01e8
Consumer.01e9
Consumer.01ea
Consumer.01eb
Consumer.01ec
Consumer.01ed
Consumer.01ee
Consumer.01ef
Consumer.01f0
Consumer.01f1
Consumer.01f2
Consumer.01f3
Consumer.01f4
Consumer.01f5
Consumer.01f6
Consumer.01f7
Consumer.01f8
Consumer.01f9
Consumer.01fa
Consumer.01fb
Consumer.01fc
Consumer.01fd
Consumer.01fe
Consumer.01ff
Consumer.0200
Consumer.0201
Consumer.0202
Consumer.0203
Consumer.0204
Consumer.0205
Consumer.0206
Consumer.0207
Consumer.0208
Consumer.0209
Consumer.020a
Consumer.020b
Consumer.020c
Consumer.020d
Consumer.020e
Consumer.020f
Consumer.0210
Consumer.0211
Consumer.0212
Consumer.0213
Consumer.0214
Consumer.0215
Consumer.0216
Consumer.0217
Consumer.0218
Consumer.0219
Consumer.021a
Consumer.021b
Consumer.021c
Consumer.021d
Consumer.021e
Consumer.021f
Consumer.0220
Consumer.0221
Consumer.0222
Consumer.0223
Consumer.0224
Consumer.0225
Consumer.0226
Consumer.0227
Consumer.0228
Consumer.0229
Consumer.022a
Consumer.022b
Consumer.022c
Consumer.022d
Consumer.022e
Consumer.022f
Consumer.0230
Consumer.0231
Consumer.0232
Consumer.0233
Consumer.0234
Consumer.0235
Consumer.0236
Consumer.0237
Consumer.HorizontalWheel
Consumer.0239
Consumer.023a
Consumer.023b
Consumer.023c
Consumer.023d
Consumer.023e
Consumer.023f
Consumer.0240
Consumer.0241
Consumer.0242
Consumer.0243
Consumer.0244
Consumer.0245
Consumer.0246
Consumer.0247
Consumer.0248
Consumer.0249
Consumer.024a
Consumer.024b
Consumer.024c
Consumer.024d
Consumer.024e
Consumer.024f
Consumer.0250
Consumer.0251
Consumer.0252
Consumer.0253
Consumer.0254
Consumer.0255
Consumer.0256
Consumer.0257
Consumer.0258
Consumer.0259
Consumer.025a
Consumer.025b
Consumer.025c
Consumer.025d
Consumer.025e
Consumer.025f
Consumer.0260
Consumer.0261
Consumer.0262
Consumer.0263
Consumer.0264
Consumer.0265
Consumer.0266
Consumer.0267
Consumer.0268
Consumer.0269
Consumer.026a
Consumer.026b
Consumer.026c
Consumer.026d
Consumer.026e
Consumer.026f
Consumer.0270
Consumer.0271
Consumer.0272
Consumer.0273
Consumer.0274
Consumer.0275
Consumer.0276
Consumer.0277
Consumer.0278
Consumer.0279
Consumer.027a
Consumer.027b
Consumer.027c
Consumer.027d
Consumer.027e
Consumer.027f
Consumer.0280
Consumer.0281
Consumer.0282
Consumer.0283
Consumer.0284
Consumer.0285
Consumer.0286
Consumer.0287
Consumer.0288
Consumer.0289
Consumer.028a
Consumer.028b
Consumer.028c
Consumer.028d
Consumer.028e
Consumer.028f
Consumer.0290
Consumer.0291
Consumer.0292
Consumer.0293
Consumer.0294
Consumer.0295
Consumer.0296
Consumer.0297
Consumer.0298
Consumer.0299
Consumer.029a
Consumer.029b
Consumer.029c
Consumer.029d
Consumer.029e
Consumer.029f
Consumer.02a0
Consumer.02a1
Consumer.02a2
Consumer.02a3
Consumer.02a4
Consumer.02a5
Consumer.02a6
Consumer.02a7
Consumer.02a8
Consumer.02a9
Consumer.02aa
Consumer.02ab
Consumer.02ac
Consumer.02ad
Consumer.02ae
Consumer.02af
Consumer.02b0
Consumer.02b1
Consumer.02b2
Consumer.02b3
Consumer.02b4
Consumer.02b5
Consumer.02b6
Consumer.02b7
Consumer.02b8
Consumer.02b9
Consumer.02ba
Consumer.02bb
Consumer.02bc
Consumer.02bd
Consumer.02be
Consumer.02bf
Consumer.02c0
Consumer.02c1
Consumer.02c2
Consumer.02c3
Consumer.02c4
Consumer.02c5
Consumer.02c6
Consumer.02c7
Consumer.02c8
Consumer.02c9
Consumer.02ca
Consumer.02cb
Consumer.02cc
Consumer.02cd
Consumer.02ce
Consumer.02cf
Consumer.02d0
Consumer.02d1
Consumer.02d2
Consumer.02d3
Consumer.02d4
Consumer.02d5
Consumer.02d6
Consumer.02d7
Consumer.02d8
Consumer.02d9
Consumer.02da
Consumer.02db
Consumer.02dc
Consumer.02dd
Consumer.02de
Consumer.02df
Consumer.02e0
Consumer.02e1
Consumer.02e2
Consumer.02e3
Consumer.02e4
Consumer.02e5
Consumer.02e6
Consumer.02e7
Consumer.02e8
Consumer.02e9
Consumer.02ea
Consumer.02eb
Consumer.02ec
Consumer.02ed
Consumer.02ee
Consumer.02ef
Consumer.02f0
Consumer.02f1
Consumer.02f2
Consumer.02f3
Consumer.02f4
Consumer.02f5
Consumer.02f6
Consumer.02f7
Consumer.02f8
Consumer.02f9
Consumer.02fa
Consumer.02fb
Consumer.02fc
Consumer.02fd
Consumer.02fe
Consumer.02ff
Consumer.0300
Consumer.0301
Consumer.0302
Consumer.0303
Consumer.0304
Consumer.0305
Consumer.0306
Consumer.0307
Consumer.0308
Consumer.0309
Consumer.030a
Consumer.030b
Consumer.030c
Consumer.030d
Consumer.030e
Consumer.030f
Consumer.0310
Consumer.0311
Consumer.0312
Consumer.0313
Consumer.0314
Consumer.0315
Consumer.0316
Consumer.0317
Consumer.0318
Consumer.0319
Consumer.031a
Consumer.031b
Consumer.031c
Consumer.031d
Consumer.031e
Consumer.031f
Consumer.0320
Consumer.0321
Consumer.0322
Consumer.0323
Consumer.0324
Consumer.0325
Consumer.0326
Consumer.0327
Consumer.0328
Consumer.0329
Consumer.032a
Consumer.032b
Consumer.032c
Consumer.032d
Consumer.032e
Consumer.032f
Consumer.0330
Consumer.0331
Consumer.0332
Consumer.0333
Consumer.0334
Consumer.0335
Consumer.0336
Consumer.0337
Consumer.0338
Consumer.0339
Consumer.033a
Consumer.033b
Consumer.033c
Consumer.033d
Consumer.033e
Consumer.033f
Consumer.0340
Consumer.0341
Consumer.0342
Consumer.0343
Consumer.0344
Consumer.0345
Consumer.0346
Consumer.0347
Consumer.0348
Consumer.0349
Consumer.034a
Consumer.034b
Consumer.034c
Consumer.034d
Consumer.034e
Consumer.034f
Consumer.0350
Consumer.0351
Consumer.0352
Consumer.0353
Consumer.0354
Consumer.0355
Consumer.0356
Consumer.0357
Consumer.0358
Consumer.0359
Consumer.035a
Consumer.035b
Consumer.035c
Consumer.035d
Consumer.035e
Consumer.035f
Consumer.0360
Consumer.0361
Consumer.0362
Consumer.0363
Consumer.0364
Consumer.0365
Consumer.0366
Consumer.0367
Consumer.0368
Consumer.0369
Consumer.036a
Consumer.036b
Consumer.036c
Consumer.036d
Consumer.036e
Consumer.036f
Consumer.0370
Consumer.0371
Consumer.0372
Consumer.0373
Consumer.0374
Consumer.0375
Consumer.0376
Consumer.0377
Consumer.0378
Consumer.0379
Consumer.037a
Consumer.037b
Consumer.037c
Consumer.037d
Consumer.037e
Consumer.037f
Consumer.0380
Consumer.0381
Consumer.0382
Consumer.0383
Consumer.0384
Consumer.0385
Consumer.0386
Consumer.0387
Consumer.0388
Consumer.0389
Consumer.038a
Consumer.038b
Consumer.038c
Consumer.038d
Consumer.038e
Consumer.038f
Consumer.0390
Consumer.0391
Consumer.0392
Consumer.0393
Consumer.0394
Consumer.0395
Consumer.0396
Consumer.0397
Consumer.0398
Consumer.0399
Consumer.039a
Consumer.039b
Consumer.039c
Consumer.039d
Consumer.039e
Consumer.039f
Consumer.03a0
Consumer.03a1
Consumer.03a2
Consumer.03a3
Consumer.03a4
Consumer.03a5
Consumer.03a6
Consumer.03a7
Consumer.03a8
Consumer.03a9
Consumer.03aa
Consumer.03ab
Consumer.03ac
Consumer.03ad
Consumer.03ae
Consumer.03af
Consumer.03b0
Consumer.03b1
Consumer.03b2
Consumer.03b3
Consumer.03b4
Consumer.03b5
Consumer.03b6
Consumer.03b7
Consumer.03b8
Consumer.03b9
Consumer.03ba
Consumer.03bb
Consumer.03bc
Consumer.03bd
Consumer.03be
Consumer.03bf
Consumer.03c0
Consumer.03c1
Consumer.03c2
Consumer.03c3
Consumer.03c4
Consumer.03c5
Consumer.03c6
Consumer.03c7
Consumer.03c8
Consumer.03c9
Consumer.03ca
Consumer.03cb
Consumer.03cc
Consumer.03cd
Consumer.03ce
Consumer.03cf
Consumer.03d0
Consumer.03d1
Consumer.03d2
Consumer.03d3
Consumer.03d4
Consumer.03d5
Consumer.03d6
Consumer.03d7
Consumer.03d8
Consumer.03d9
Consumer.03da
Consumer.03db
Consumer.03dc
Consumer.03dd
Consumer.03de
Consumer.03df
Consumer.03e0
Consumer.03e1
Consumer.03e2
Consumer.03e3
Consumer.03e4
Consumer.03e5
Consumer.03e6
Consumer.03e7
Consumer.03e8
Consumer.03e9
Consumer.03ea
Consumer.03eb
Consumer.03ec
Consumer.03ed
Consumer.03ee
Consumer.03ef
Consumer.03f0
Consumer.03f1
Consumer.03f2
Consumer.03f3
Consumer.03f4
Consumer.03f5
Consumer.03f6
Consumer.03f7
Consumer.03f8
Consumer.03f9
Consumer.03fa
Consumer.03fb
Consumer.03fc
Consumer.03fd
Consumer.03fe
Consumer.03ff
Logical Minimum(0)
Logical Maximum(1023)
Report Size(16)
Report Count(1)
Report Offset(0)
Flags( Array Absolute )
Field(1)
Usage(255)
ff00.fd01
ff00.fd02
ff00.fd03
ff00.fd04
ff00.fd05
ff00.fd06
ff00.fd07
ff00.fd08
ff00.fd09
ff00.fd0a
ff00.fd0b
ff00.fd0c
ff00.fd0d
ff00.fd0e
ff00.fd0f
ff00.fd10
ff00.fd11
ff00.fd12
ff00.fd13
ff00.fd14
ff00.fd15
ff00.fd16
ff00.fd17
ff00.fd18
ff00.fd19
ff00.fd1a
ff00.fd1b
ff00.fd1c
ff00.fd1d
ff00.fd1e
ff00.fd1f
ff00.fd20
ff00.fd21
ff00.fd22
ff00.fd23
ff00.fd24
ff00.fd25
ff00.fd26
ff00.fd27
ff00.fd28
ff00.fd29
ff00.fd2a
ff00.fd2b
ff00.fd2c
ff00.fd2d
ff00.fd2e
ff00.fd2f
ff00.fd30
ff00.fd31
ff00.fd32
ff00.fd33
ff00.fd34
ff00.fd35
ff00.fd36
ff00.fd37
ff00.fd38
ff00.fd39
ff00.fd3a
ff00.fd3b
ff00.fd3c
ff00.fd3d
ff00.fd3e
ff00.fd3f
ff00.fd40
ff00.fd41
ff00.fd42
ff00.fd43
ff00.fd44
ff00.fd45
ff00.fd46
ff00.fd47
ff00.fd48
ff00.fd49
ff00.fd4a
ff00.fd4b
ff00.fd4c
ff00.fd4d
ff00.fd4e
ff00.fd4f
ff00.fd50
ff00.fd51
ff00.fd52
ff00.fd53
ff00.fd54
ff00.fd55
ff00.fd56
ff00.fd57
ff00.fd58
ff00.fd59
ff00.fd5a
ff00.fd5b
ff00.fd5c
ff00.fd5d
ff00.fd5e
ff00.fd5f
ff00.fd60
ff00.fd61
ff00.fd62
ff00.fd63
ff00.fd64
ff00.fd65
ff00.fd66
ff00.fd67
ff00.fd68
ff00.fd69
ff00.fd6a
ff00.fd6b
ff00.fd6c
ff00.fd6d
ff00.fd6e
ff00.fd6f
ff00.fd70
ff00.fd71
ff00.fd72
ff00.fd73
ff00.fd74
ff00.fd75
ff00.fd76
ff00.fd77
ff00.fd78
ff00.fd79
ff00.fd7a
ff00.fd7b
ff00.fd7c
ff00.fd7d
ff00.fd7e
ff00.fd7f
ff00.fd80
ff00.fd81
ff00.fd82
ff00.fd83
ff00.fd84
ff00.fd85
ff00.fd86
ff00.fd87
ff00.fd88
ff00.fd89
ff00.fd8a
ff00.fd8b
ff00.fd8c
ff00.fd8d
ff00.fd8e
ff00.fd8f
ff00.fd90
ff00.fd91
ff00.fd92
ff00.fd93
ff00.fd94
ff00.fd95
ff00.fd96
ff00.fd97
ff00.fd98
ff00.fd99
ff00.fd9a
ff00.fd9b
ff00.fd9c
ff00.fd9d
ff00.fd9e
ff00.fd9f
ff00.fda0
ff00.fda1
ff00.fda2
ff00.fda3
ff00.fda4
ff00.fda5
ff00.fda6
ff00.fda7
ff00.fda8
ff00.fda9
ff00.fdaa
ff00.fdab
ff00.fdac
ff00.fdad
ff00.fdae
ff00.fdaf
ff00.fdb0
ff00.fdb1
ff00.fdb2
ff00.fdb3
ff00.fdb4
ff00.fdb5
ff00.fdb6
ff00.fdb7
ff00.fdb8
ff00.fdb9
ff00.fdba
ff00.fdbb
ff00.fdbc
ff00.fdbd
ff00.fdbe
ff00.fdbf
ff00.fdc0
ff00.fdc1
ff00.fdc2
ff00.fdc3
ff00.fdc4
ff00.fdc5
ff00.fdc6
ff00.fdc7
ff00.fdc8
ff00.fdc9
ff00.fdca
ff00.fdcb
ff00.fdcc
ff00.fdcd
ff00.fdce
ff00.fdcf
ff00.fdd0
ff00.fdd1
ff00.fdd2
ff00.fdd3
ff00.fdd4
ff00.fdd5
ff00.fdd6
ff00.fdd7
ff00.fdd8
ff00.fdd9
ff00.fdda
ff00.fddb
ff00.fddc
ff00.fddd
ff00.fdde
ff00.fddf
ff00.fde0
ff00.fde1
ff00.fde2
ff00.fde3
ff00.fde4
ff00.fde5
ff00.fde6
ff00.fde7
ff00.fde8
ff00.fde9
ff00.fdea
ff00.fdeb
ff00.fdec
ff00.fded
ff00.fdee
ff00.fdef
ff00.fdf0
ff00.fdf1
ff00.fdf2
ff00.fdf3
ff00.fdf4
ff00.fdf5
ff00.fdf6
ff00.fdf7
ff00.fdf8
ff00.fdf9
ff00.fdfa
ff00.fdfb
ff00.fdfc
ff00.fdfd
ff00.fdfe
ff00.fdff
Logical Minimum(1)
Logical Maximum(255)
Report Size(8)
Report Count(1)
Report Offset(16)
Flags( Array Absolute )
INPUT(28)[INPUT]
Field(0)
Usage(1)
ff00.ff25
Logical Minimum(0)
Logical Maximum(4)
Report Size(8)
Report Count(1)
Report Offset(0)
Flags( Variable Absolute )
INPUT(16)[INPUT]
Field(0)
Physical(GenericDesktop.Pointer)
Logical(GenericDesktop.Mouse)
Usage(5)
Button.0001
Button.0002
Button.0003
Button.0004
Button.0005
Logical Minimum(0)
Logical Maximum(1)
Report Size(1)
Report Count(5)
Report Offset(0)
Flags( Variable Absolute )
Field(1)
Physical(GenericDesktop.Pointer)
Logical(GenericDesktop.Mouse)
Usage(2)
GenericDesktop.X
GenericDesktop.Y
Logical Minimum(-32767)
Logical Maximum(32767)
Report Size(16)
Report Count(2)
Report Offset(8)
Flags( Variable Relative )
Field(2)
Physical(GenericDesktop.Pointer)
Usage(1)
GenericDesktop.Wheel
Logical Minimum(-127)
Logical Maximum(127)
Report Size(8)
Report Count(1)
Report Offset(40)
Flags( Variable Relative )
Field(3)
Physical(GenericDesktop.Pointer)
Usage(1)
Consumer.HorizontalWheel
Logical Minimum(-127)
Logical Maximum(127)
Report Size(8)
Report Count(1)
Report Offset(48)
Flags( Variable Relative )
FEATURE(32)[FEATURE]
Field(0)
Usage(18)
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
Logical Minimum(0)
Logical Maximum(255)
Report Size(8)
Report Count(18)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(46)[FEATURE]
Field(0)
Usage(7)
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
ff00.fa0a
Logical Minimum(0)
Logical Maximum(255)
Report Size(8)
Report Count(7)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(24)[FEATURE]
Field(0)
Usage(1)
ff00.fa0a
Logical Minimum(0)
Logical Maximum(255)
Report Size(8)
Report Count(1)
Report Offset(0)
Flags( Variable Absolute )
FEATURE(23)[FEATURE]
Field(0)
Usage(1)
ff00.ff06
Logical Minimum(0)
Logical Maximum(1)
Physical Minimum(1)
Physical Maximum(16)
Report Size(2)
Report Count(1)
Report Offset(0)
Flags( Variable Absolute )
Field(1)
Usage(1)
ff00.ff0f
Logical Minimum(0)
Logical Maximum(1)
Physical Minimum(1)
Physical Maximum(16)
Report Size(2)
Report Count(1)
Report Offset(2)
Flags( Variable Absolute )
Field(2)
Usage(1)
ff00.ff04
Logical Minimum(0)
Logical Maximum(1)
Report Size(1)
Report Count(1)
Report Offset(4)
Flags( Variable Absolute )
FEATURE(18)[FEATURE]
Field(0)
Physical(GenericDesktop.Pointer)
Usage(1)
GenericDesktop.0048
Logical Minimum(0)
Logical Maximum(1)
Physical Minimum(1)
Physical Maximum(16)
Report Size(2)
Report Count(1)
Report Offset(0)
Flags( Variable Absolute )
Field(1)
Physical(GenericDesktop.Pointer)
Usage(1)
GenericDesktop.0048
Logical Minimum(0)
Logical Maximum(1)
Physical Minimum(1)
Physical Maximum(16)
Report Size(2)
Report Count(1)
Report Offset(2)
Flags( Variable Absolute )
Consumer.HorizontalWheel ---> Relative.HWheel
ff00.fa0a ---> Sync.Report
ff00.fa0a ---> Sync.Report
ff00.fa0a ---> Sync.Report
ff00.fa0a ---> Sync.Report
ff00.fa0a ---> Sync.Report
ff00.fa0a ---> Sync.Report
ff00.fa0a ---> Sync.Report
Consumer.0000 ---> Sync.Report
Consumer.0001 ---> Sync.Report
Consumer.0002 ---> Sync.Report
Consumer.0003 ---> Sync.Report
Consumer.0004 ---> Sync.Report
Consumer.0005 ---> Sync.Report
Consumer.0006 ---> Sync.Report
Consumer.0007 ---> Sync.Report
Consumer.0008 ---> Sync.Report
Consumer.0009 ---> Sync.Report
Consumer.000a ---> Sync.Report
Consumer.000b ---> Sync.Report
Consumer.000c ---> Sync.Report
Consumer.000d ---> Sync.Report
Consumer.000e ---> Sync.Report
Consumer.000f ---> Sync.Report
Consumer.0010 ---> Sync.Report
Consumer.0011 ---> Sync.Report
Consumer.0012 ---> Sync.Report
Consumer.0013 ---> Sync.Report
Consumer.0014 ---> Sync.Report
Consumer.0015 ---> Sync.Report
Consumer.0016 ---> Sync.Report
Consumer.0017 ---> Sync.Report
Consumer.0018 ---> Sync.Report
Consumer.0019 ---> Sync.Report
Consumer.001a ---> Sync.Report
Consumer.001b ---> Sync.Report
Consumer.001c ---> Sync.Report
Consumer.001d ---> Sync.Report
Consumer.001e ---> Sync.Report
Consumer.001f ---> Sync.Report
Consumer.0020 ---> Sync.Report
Consumer.0021 ---> Sync.Report
Consumer.0022 ---> Sync.Report
Consumer.0023 ---> Sync.Report
Consumer.0024 ---> Sync.Report
Consumer.0025 ---> Sync.Report
Consumer.0026 ---> Sync.Report
Consumer.0027 ---> Sync.Report
Consumer.0028 ---> Sync.Report
Consumer.0029 ---> Sync.Report
Consumer.002a ---> Sync.Report
Consumer.002b ---> Sync.Report
Consumer.002c ---> Sync.Report
Consumer.002d ---> Sync.Report
Consumer.002e ---> Sync.Report
Consumer.002f ---> Sync.Report
Consumer.0030 ---> Key.Power
Consumer.0031 ---> Key.Restart
Consumer.0032 ---> Key.Sleep
Consumer.0033 ---> Sync.Report
Consumer.0034 ---> Key.Sleep
Consumer.0035 ---> Key.KbdIlluminationToggle
Consumer.0036 ---> Key.Btn0
Consumer.0037 ---> Sync.Report
Consumer.0038 ---> Sync.Report
Consumer.0039 ---> Sync.Report
Consumer.003a ---> Sync.Report
Consumer.003b ---> Sync.Report
Consumer.003c ---> Sync.Report
Consumer.003d ---> Sync.Report
Consumer.003e ---> Sync.Report
Consumer.003f ---> Sync.Report
Consumer.0040 ---> Key.Menu
Consumer.0041 ---> Key.Select
Consumer.0042 ---> Key.Up
Consumer.0043 ---> Key.Down
Consumer.0044 ---> Key.Left
Consumer.0045 ---> Key.Right
Consumer.0046 ---> Key.Esc
Consumer.0047 ---> Key.KPPlus
Consumer.0048 ---> Key.KPMinus
Consumer.0049 ---> Sync.Report
Consumer.004a ---> Sync.Report
Consumer.004b ---> Sync.Report
Consumer.004c ---> Sync.Report
Consumer.004d ---> Sync.Report
Consumer.004e ---> Sync.Report
Consumer.004f ---> Sync.Report
Consumer.0050 ---> Sync.Report
Consumer.0051 ---> Sync.Report
Consumer.0052 ---> Sync.Report
Consumer.0053 ---> Sync.Report
Consumer.0054 ---> Sync.Report
Consumer.0055 ---> Sync.Report
Consumer.0056 ---> Sync.Report
Consumer.0057 ---> Sync.Report
Consumer.0058 ---> Sync.Report
Consumer.0059 ---> Sync.Report
Consumer.005a ---> Sync.Report
Consumer.005b ---> Sync.Report
Consumer.005c ---> Sync.Report
Consumer.005d ---> Sync.Report
Consumer.005e ---> Sync.Report
Consumer.005f ---> Sync.Report
Consumer.0060 ---> Key.Info
Consumer.0061 ---> Key.Subtitle
Consumer.0062 ---> Sync.Report
Consumer.0063 ---> Key.VCR
Consumer.0064 ---> Sync.Report
Consumer.0065 ---> Key.Camera
Consumer.0066 ---> Sync.Report
Consumer.0067 ---> Sync.Report
Consumer.0068 ---> Sync.Report
Consumer.0069 ---> Key.Red
Consumer.006a ---> Key.Green
Consumer.006b ---> Key.Blue
Consumer.006c ---> Key.Yellow
Consumer.006d ---> Key.Zoom
Consumer.006e ---> Sync.Report
Consumer.006f ---> Sync.Report
Consumer.0070 ---> Sync.Report
Consumer.0071 ---> Sync.Report
Consumer.0072 ---> Sync.Report
Consumer.0073 ---> Sync.Report
Consumer.0074 ---> Sync.Report
Consumer.0075 ---> Sync.Report
Consumer.0076 ---> Sync.Report
Consumer.0077 ---> Sync.Report
Consumer.0078 ---> Sync.Report
Consumer.0079 ---> Sync.Report
Consumer.007a ---> Sync.Report
Consumer.007b ---> Sync.Report
Consumer.007c ---> Sync.Report
Consumer.007d ---> Sync.Report
Consumer.007e ---> Sync.Report
Consumer.007f ---> Sync.Report
Consumer.0080 ---> Sync.Report
Consumer.0081 ---> Sync.Report
Consumer.0082 ---> Key.?
Consumer.0083 ---> Key.Last
Consumer.0084 ---> Key.Enter
Consumer.0085 ---> Sync.Report
Consumer.0086 ---> Sync.Report
Consumer.0087 ---> Sync.Report
Consumer.0088 ---> Key.PC
Consumer.0089 ---> Key.TV
Consumer.008a ---> Key.WWW
Consumer.008b ---> Key.DVD
Consumer.008c ---> Key.Phone
Consumer.008d ---> Key.Program
Consumer.008e ---> Key.?
Consumer.008f ---> Key.?
Consumer.0090 ---> Key.Memo
Consumer.0091 ---> Key.CD
Consumer.0092 ---> Key.VCR
Consumer.0093 ---> Key.Tuner
Consumer.0094 ---> Key.Exit
Consumer.0095 ---> Key.Help
Consumer.0096 ---> Key.Tape
Consumer.0097 ---> Key.TV2
Consumer.0098 ---> Key.Sat
Consumer.0099 ---> Sync.Report
Consumer.009a ---> Key.PVR
Consumer.009b ---> Sync.Report
Consumer.009c ---> Key.ChannelUp
Consumer.009d ---> Key.ChannelDown
Consumer.009e ---> Sync.Report
Consumer.009f ---> Sync.Report
Consumer.00a0 ---> Key.VCR2
Consumer.00a1 ---> Sync.Report
Consumer.00a2 ---> Sync.Report
Consumer.00a3 ---> Sync.Report
Consumer.00a4 ---> Sync.Report
Consumer.00a5 ---> Sync.Report
Consumer.00a6 ---> Sync.Report
Consumer.00a7 ---> Sync.Report
Consumer.00a8 ---> Sync.Report
Consumer.00a9 ---> Sync.Report
Consumer.00aa ---> Sync.Report
Consumer.00ab ---> Sync.Report
Consumer.00ac ---> Sync.Report
Consumer.00ad ---> Sync.Report
Consumer.00ae ---> Sync.Report
Consumer.00af ---> Sync.Report
Consumer.00b0 ---> Key.Play
Consumer.00b1 ---> Key.Pause
Consumer.00b2 ---> Key.Record
Consumer.00b3 ---> Key.FastForward
Consumer.00b4 ---> Key.Rewind
Consumer.00b5 ---> Key.NextSong
Consumer.00b6 ---> Key.PreviousSong
Consumer.00b7 ---> Key.StopCD
Consumer.00b8 ---> Key.EjectCD
Consumer.00b9 ---> Key.Shuffle
Consumer.00ba ---> Sync.Report
Consumer.00bb ---> Sync.Report
Consumer.00bc ---> Key.?
Consumer.00bd ---> Sync.Report
Consumer.00be ---> Sync.Report
Consumer.00bf ---> Key.Slow
Consumer.00c0 ---> Sync.Report
Consumer.00c1 ---> Sync.Report
Consumer.00c2 ---> Sync.Report
Consumer.00c3 ---> Sync.Report
Consumer.00c4 ---> Sync.Report
Consumer.00c5 ---> Sync.Report
Consumer.00c6 ---> Sync.Report
Consumer.00c7 ---> Sync.Report
Consumer.00c8 ---> Sync.Report
Consumer.00c9 ---> Sync.Report
Consumer.00ca ---> Sync.Report
Consumer.00cb ---> Sync.Report
Consumer.00cc ---> Sync.Report
Consumer.00cd ---> Key.PlayPause
Consumer.00ce ---> Sync.Report
Consumer.00cf ---> Sync.Report
Consumer.00d0 ---> Sync.Report
Consumer.00d1 ---> Sync.Report
Consumer.00d2 ---> Sync.Report
Consumer.00d3 ---> Sync.Report
Consumer.00d4 ---> Sync.Report
Consumer.00d5 ---> Sync.Report
Consumer.00d6 ---> Sync.Report
Consumer.00d7 ---> Sync.Report
Consumer.00d8 ---> Sync.Report
Consumer.00d9 ---> Sync.Report
Consumer.00da ---> Sync.Report
Consumer.00db ---> Sync.Report
Consumer.00dc ---> Sync.Report
Consumer.00dd ---> Sync.Report
Consumer.00de ---> Sync.Report
Consumer.00df ---> Sync.Report
Consumer.00e0 ---> Absolute.Volume
Consumer.00e1 ---> Sync.Report
Consumer.00e2 ---> Key.Mute
Consumer.00e3 ---> Sync.Report
Consumer.00e4 ---> Sync.Report
Consumer.00e5 ---> Key.BassBoost
Consumer.00e6 ---> Sync.Report
Consumer.00e7 ---> Sync.Report
Consumer.00e8 ---> Sync.Report
Consumer.00e9 ---> Key.VolumeUp
Consumer.00ea ---> Key.VolumeDown
Consumer.00eb ---> Sync.Report
Consumer.00ec ---> Sync.Report
Consumer.00ed ---> Sync.Report
Consumer.00ee ---> Sync.Report
Consumer.00ef ---> Sync.Report
Consumer.00f0 ---> Sync.Report
Consumer.00f1 ---> Sync.Report
Consumer.00f2 ---> Sync.Report
Consumer.00f3 ---> Sync.Report
Consumer.00f4 ---> Sync.Report
Consumer.00f5 ---> Key.Slow
Consumer.00f6 ---> Sync.Report
Consumer.00f7 ---> Sync.Report
Consumer.00f8 ---> Sync.Report
Consumer.00f9 ---> Sync.Report
Consumer.00fa ---> Sync.Report
Consumer.00fb ---> Sync.Report
Consumer.00fc ---> Sync.Report
Consumer.00fd ---> Sync.Report
Consumer.00fe ---> Sync.Report
Consumer.00ff ---> Sync.Report
Consumer.0100 ---> Sync.Report
Consumer.0101 ---> Sync.Report
Consumer.0102 ---> Sync.Report
Consumer.0103 ---> Sync.Report
Consumer.0104 ---> Sync.Report
Consumer.0105 ---> Sync.Report
Consumer.0106 ---> Sync.Report
Consumer.0107 ---> Sync.Report
Consumer.0108 ---> Sync.Report
Consumer.0109 ---> Sync.Report
Consumer.010a ---> Sync.Report
Consumer.010b ---> Sync.Report
Consumer.010c ---> Sync.Report
Consumer.010d ---> Sync.Report
Consumer.010e ---> Sync.Report
Consumer.010f ---> Sync.Report
Consumer.0110 ---> Sync.Report
Consumer.0111 ---> Sync.Report
Consumer.0112 ---> Sync.Report
Consumer.0113 ---> Sync.Report
Consumer.0114 ---> Sync.Report
Consumer.0115 ---> Sync.Report
Consumer.0116 ---> Sync.Report
Consumer.0117 ---> Sync.Report
Consumer.0118 ---> Sync.Report
Consumer.0119 ---> Sync.Report
Consumer.011a ---> Sync.Report
Consumer.011b ---> Sync.Report
Consumer.011c ---> Sync.Report
Consumer.011d ---> Sync.Report
Consumer.011e ---> Sync.Report
Consumer.011f ---> Sync.Report
Consumer.0120 ---> Sync.Report
Consumer.0121 ---> Sync.Report
Consumer.0122 ---> Sync.Report
Consumer.0123 ---> Sync.Report
Consumer.0124 ---> Sync.Report
Consumer.0125 ---> Sync.Report
Consumer.0126 ---> Sync.Report
Consumer.0127 ---> Sync.Report
Consumer.0128 ---> Sync.Report
Consumer.0129 ---> Sync.Report
Consumer.012a ---> Sync.Report
Consumer.012b ---> Sync.Report
Consumer.012c ---> Sync.Report
Consumer.012d ---> Sync.Report
Consumer.012e ---> Sync.Report
Consumer.012f ---> Sync.Report
Consumer.0130 ---> Sync.Report
Consumer.0131 ---> Sync.Report
Consumer.0132 ---> Sync.Report
Consumer.0133 ---> Sync.Report
Consumer.0134 ---> Sync.Report
Consumer.0135 ---> Sync.Report
Consumer.0136 ---> Sync.Report
Consumer.0137 ---> Sync.Report
Consumer.0138 ---> Sync.Report
Consumer.0139 ---> Sync.Report
Consumer.013a ---> Sync.Report
Consumer.013b ---> Sync.Report
Consumer.013c ---> Sync.Report
Consumer.013d ---> Sync.Report
Consumer.013e ---> Sync.Report
Consumer.013f ---> Sync.Report
Consumer.0140 ---> Sync.Report
Consumer.0141 ---> Sync.Report
Consumer.0142 ---> Sync.Report
Consumer.0143 ---> Sync.Report
Consumer.0144 ---> Sync.Report
Consumer.0145 ---> Sync.Report
Consumer.0146 ---> Sync.Report
Consumer.0147 ---> Sync.Report
Consumer.0148 ---> Sync.Report
Consumer.0149 ---> Sync.Report
Consumer.014a ---> Sync.Report
Consumer.014b ---> Sync.Report
Consumer.014c ---> Sync.Report
Consumer.014d ---> Sync.Report
Consumer.014e ---> Sync.Report
Consumer.014f ---> Sync.Report
Consumer.0150 ---> Sync.Report
Consumer.0151 ---> Sync.Report
Consumer.0152 ---> Sync.Report
Consumer.0153 ---> Sync.Report
Consumer.0154 ---> Sync.Report
Consumer.0155 ---> Sync.Report
Consumer.0156 ---> Sync.Report
Consumer.0157 ---> Sync.Report
Consumer.0158 ---> Sync.Report
Consumer.0159 ---> Sync.Report
Consumer.015a ---> Sync.Report
Consumer.015b ---> Sync.Report
Consumer.015c ---> Sync.Report
Consumer.015d ---> Sync.Report
Consumer.015e ---> Sync.Report
Consumer.015f ---> Sync.Report
Consumer.0160 ---> Sync.Report
Consumer.0161 ---> Sync.Report
Consumer.0162 ---> Sync.Report
Consumer.0163 ---> Sync.Report
Consumer.0164 ---> Sync.Report
Consumer.0165 ---> Sync.Report
Consumer.0166 ---> Sync.Report
Consumer.0167 ---> Sync.Report
Consumer.0168 ---> Sync.Report
Consumer.0169 ---> Sync.Report
Consumer.016a ---> Sync.Report
Consumer.016b ---> Sync.Report
Consumer.016c ---> Sync.Report
Consumer.016d ---> Sync.Report
Consumer.016e ---> Sync.Report
Consumer.016f ---> Sync.Report
Consumer.0170 ---> Sync.Report
Consumer.0171 ---> Sync.Report
Consumer.0172 ---> Sync.Report
Consumer.0173 ---> Sync.Report
Consumer.0174 ---> Sync.Report
Consumer.0175 ---> Sync.Report
Consumer.0176 ---> Sync.Report
Consumer.0177 ---> Sync.Report
Consumer.0178 ---> Sync.Report
Consumer.0179 ---> Sync.Report
Consumer.017a ---> Sync.Report
Consumer.017b ---> Sync.Report
Consumer.017c ---> Sync.Report
Consumer.017d ---> Sync.Report
Consumer.017e ---> Sync.Report
Consumer.017f ---> Sync.Report
Consumer.0180 ---> Sync.Report
Consumer.0181 ---> Sync.Report
Consumer.0182 ---> Key.Bookmarks
Consumer.0183 ---> Key.Config
Consumer.0184 ---> Key.?
Consumer.0185 ---> Key.?
Consumer.0186 ---> Key.?
Consumer.0187 ---> Key.?
Consumer.0188 ---> Key.?
Consumer.0189 ---> Key.?
Consumer.018a ---> Key.Mail
Consumer.018b ---> Key.?
Consumer.018c ---> Key.?
Consumer.018d ---> Key.?
Consumer.018e ---> Key.Calendar
Consumer.018f ---> Sync.Report
Consumer.0190 ---> Sync.Report
Consumer.0191 ---> Key.Finance
Consumer.0192 ---> Key.Calc
Consumer.0193 ---> Key.Player
Consumer.0194 ---> Key.File
Consumer.0195 ---> Sync.Report
Consumer.0196 ---> Key.WWW
Consumer.0197 ---> Sync.Report
Consumer.0198 ---> Sync.Report
Consumer.0199 ---> Key.Chat
Consumer.019a ---> Sync.Report
Consumer.019b ---> Sync.Report
Consumer.019c ---> Key.Logoff
Consumer.019d ---> Sync.Report
Consumer.019e ---> Key.Coffee
Consumer.019f ---> Sync.Report
Consumer.01a0 ---> Sync.Report
Consumer.01a1 ---> Sync.Report
Consumer.01a2 ---> Sync.Report
Consumer.01a3 ---> Sync.Report
Consumer.01a4 ---> Sync.Report
Consumer.01a5 ---> Sync.Report
Consumer.01a6 ---> Key.Help
Consumer.01a7 ---> Key.Documents
Consumer.01a8 ---> Sync.Report
Consumer.01a9 ---> Sync.Report
Consumer.01aa ---> Sync.Report
Consumer.01ab ---> Key.SpellCheck
Consumer.01ac ---> Sync.Report
Consumer.01ad ---> Sync.Report
Consumer.01ae ---> Key.Keyboard
Consumer.01af ---> Sync.Report
Consumer.01b0 ---> Sync.Report
Consumer.01b1 ---> Sync.Report
Consumer.01b2 ---> Sync.Report
Consumer.01b3 ---> Sync.Report
Consumer.01b4 ---> Sync.Report
Consumer.01b5 ---> Sync.Report
Consumer.01b6 ---> Key.?
Consumer.01b7 ---> Key.Audio
Consumer.01b8 ---> Key.Video
Consumer.01b9 ---> Sync.Report
Consumer.01ba ---> Sync.Report
Consumer.01bb ---> Sync.Report
Consumer.01bc ---> Key.?
Consumer.01bd ---> Key.Info
Consumer.01be ---> Sync.Report
Consumer.01bf ---> Sync.Report
Consumer.01c0 ---> Sync.Report
Consumer.01c1 ---> Sync.Report
Consumer.01c2 ---> Sync.Report
Consumer.01c3 ---> Sync.Report
Consumer.01c4 ---> Sync.Report
Consumer.01c5 ---> Sync.Report
Consumer.01c6 ---> Sync.Report
Consumer.01c7 ---> Sync.Report
Consumer.01c8 ---> Sync.Report
Consumer.01c9 ---> Sync.Report
Consumer.01ca ---> Sync.Report
Consumer.01cb ---> Sync.Report
Consumer.01cc ---> Sync.Report
Consumer.01cd ---> Sync.Report
Consumer.01ce ---> Sync.Report
Consumer.01cf ---> Sync.Report
Consumer.01d0 ---> Sync.Report
Consumer.01d1 ---> Sync.Report
Consumer.01d2 ---> Sync.Report
Consumer.01d3 ---> Sync.Report
Consumer.01d4 ---> Sync.Report
Consumer.01d5 ---> Sync.Report
Consumer.01d6 ---> Sync.Report
Consumer.01d7 ---> Sync.Report
Consumer.01d8 ---> Sync.Report
Consumer.01d9 ---> Sync.Report
Consumer.01da ---> Sync.Report
Consumer.01db ---> Sync.Report
Consumer.01dc ---> Sync.Report
Consumer.01dd ---> Sync.Report
Consumer.01de ---> Sync.Report
Consumer.01df ---> Sync.Report
Consumer.01e0 ---> Sync.Report
Consumer.01e1 ---> Sync.Report
Consumer.01e2 ---> Sync.Report
Consumer.01e3 ---> Sync.Report
Consumer.01e4 ---> Sync.Report
Consumer.01e5 ---> Sync.Report
Consumer.01e6 ---> Sync.Report
Consumer.01e7 ---> Sync.Report
Consumer.01e8 ---> Sync.Report
Consumer.01e9 ---> Sync.Report
Consumer.01ea ---> Sync.Report
Consumer.01eb ---> Sync.Report
Consumer.01ec ---> Sync.Report
Consumer.01ed ---> Sync.Report
Consumer.01ee ---> Sync.Report
Consumer.01ef ---> Sync.Report
Consumer.01f0 ---> Sync.Report
Consumer.01f1 ---> Sync.Report
Consumer.01f2 ---> Sync.Report
Consumer.01f3 ---> Sync.Report
Consumer.01f4 ---> Sync.Report
Consumer.01f5 ---> Sync.Report
Consumer.01f6 ---> Sync.Report
Consumer.01f7 ---> Sync.Report
Consumer.01f8 ---> Sync.Report
Consumer.01f9 ---> Sync.Report
Consumer.01fa ---> Sync.Report
Consumer.01fb ---> Sync.Report
Consumer.01fc ---> Sync.Report
Consumer.01fd ---> Sync.Report
Consumer.01fe ---> Sync.Report
Consumer.01ff ---> Sync.Report
Consumer.0200 ---> Sync.Report
Consumer.0201 ---> Key.New
Consumer.0202 ---> Key.Open
Consumer.0203 ---> Key.Close
Consumer.0204 ---> Key.Exit
Consumer.0205 ---> Sync.Report
Consumer.0206 ---> Sync.Report
Consumer.0207 ---> Key.Save
Consumer.0208 ---> Key.Print
Consumer.0209 ---> Key.Props
Consumer.020a ---> Sync.Report
Consumer.020b ---> Sync.Report
Consumer.020c ---> Sync.Report
Consumer.020d ---> Sync.Report
Consumer.020e ---> Sync.Report
Consumer.020f ---> Sync.Report
Consumer.0210 ---> Sync.Report
Consumer.0211 ---> Sync.Report
Consumer.0212 ---> Sync.Report
Consumer.0213 ---> Sync.Report
Consumer.0214 ---> Sync.Report
Consumer.0215 ---> Sync.Report
Consumer.0216 ---> Sync.Report
Consumer.0217 ---> Sync.Report
Consumer.0218 ---> Sync.Report
Consumer.0219 ---> Sync.Report
Consumer.021a ---> Key.Undo
Consumer.021b ---> Key.Copy
Consumer.021c ---> Key.Cut
Consumer.021d ---> Key.Paste
Consumer.021e ---> Sync.Report
Consumer.021f ---> Key.Find
Consumer.0220 ---> Sync.Report
Consumer.0221 ---> Key.Search
Consumer.0222 ---> Key.Goto
Consumer.0223 ---> Key.HomePage
Consumer.0224 ---> Key.Back
Consumer.0225 ---> Key.Forward
Consumer.0226 ---> Key.Stop
Consumer.0227 ---> Key.Refresh
Consumer.0228 ---> Sync.Report
Consumer.0229 ---> Sync.Report
Consumer.022a ---> Key.Bookmarks
Consumer.022b ---> Sync.Report
Consumer.022c ---> Sync.Report
Consumer.022d ---> Key.?
Consumer.022e ---> Key.?
Consumer.022f ---> Key.?
Consumer.0230 ---> Sync.Report
Consumer.0231 ---> Sync.Report
Consumer.0232 ---> Sync.Report
Consumer.0233 ---> Key.ScrollUp
Consumer.0234 ---> Key.ScrollDown
Consumer.0235 ---> Sync.Report
Consumer.0236 ---> Sync.Report
Consumer.0237 ---> Sync.Report
Consumer.HorizontalWheel ---> Relative.Dial
Consumer.0239 ---> Sync.Report
Consumer.023a ---> Sync.Report
Consumer.023b ---> Sync.Report
Consumer.023c ---> Sync.Report
Consumer.023d ---> Key.Edit
Consumer.023e ---> Sync.Report
Consumer.023f ---> Sync.Report
Consumer.0240 ---> Sync.Report
Consumer.0241 ---> Sync.Report
Consumer.0242 ---> Sync.Report
Consumer.0243 ---> Sync.Report
Consumer.0244 ---> Sync.Report
Consumer.0245 ---> Sync.Report
Consumer.0246 ---> Sync.Report
Consumer.0247 ---> Sync.Report
Consumer.0248 ---> Sync.Report
Consumer.0249 ---> Sync.Report
Consumer.024a ---> Sync.Report
Consumer.024b ---> Sync.Report
Consumer.024c ---> Sync.Report
Consumer.024d ---> Sync.Report
Consumer.024e ---> Sync.Report
Consumer.024f ---> Sync.Report
Consumer.0250 ---> Sync.Report
Consumer.0251 ---> Sync.Report
Consumer.0252 ---> Sync.Report
Consumer.0253 ---> Sync.Report
Consumer.0254 ---> Sync.Report
Consumer.0255 ---> Sync.Report
Consumer.0256 ---> Sync.Report
Consumer.0257 ---> Sync.Report
Consumer.0258 ---> Sync.Report
Consumer.0259 ---> Sync.Report
Consumer.025a ---> Sync.Report
Consumer.025b ---> Sync.Report
Consumer.025c ---> Sync.Report
Consumer.025d ---> Sync.Report
Consumer.025e ---> Sync.Report
Consumer.025f ---> Key.Cancel
Consumer.0260 ---> Sync.Report
Consumer.0261 ---> Sync.Report
Consumer.0262 ---> Sync.Report
Consumer.0263 ---> Sync.Report
Consumer.0264 ---> Sync.Report
Consumer.0265 ---> Sync.Report
Consumer.0266 ---> Sync.Report
Consumer.0267 ---> Sync.Report
Consumer.0268 ---> Sync.Report
Consumer.0269 ---> Key.Insert
Consumer.026a ---> Key.Delete
Consumer.026b ---> Sync.Report
Consumer.026c ---> Sync.Report
Consumer.026d ---> Sync.Report
Consumer.026e ---> Sync.Report
Consumer.026f ---> Sync.Report
Consumer.0270 ---> Sync.Report
Consumer.0271 ---> Sync.Report
Consumer.0272 ---> Sync.Report
Consumer.0273 ---> Sync.Report
Consumer.0274 ---> Sync.Report
Consumer.0275 ---> Sync.Report
Consumer.0276 ---> Sync.Report
Consumer.0277 ---> Sync.Report
Consumer.0278 ---> Sync.Report
Consumer.0279 ---> Key.Redo
Consumer.027a ---> Sync.Report
Consumer.027b ---> Sync.Report
Consumer.027c ---> Sync.Report
Consumer.027d ---> Sync.Report
Consumer.027e ---> Sync.Report
Consumer.027f ---> Sync.Report
Consumer.0280 ---> Sync.Report
Consumer.0281 ---> Sync.Report
Consumer.0282 ---> Sync.Report
Consumer.0283 ---> Sync.Report
Consumer.0284 ---> Sync.Report
Consumer.0285 ---> Sync.Report
Consumer.0286 ---> Sync.Report
Consumer.0287 ---> Sync.Report
Consumer.0288 ---> Sync.Report
Consumer.0289 ---> Key.Reply
Consumer.028a ---> Sync.Report
Consumer.028b ---> Key.ForwardMail
Consumer.028c ---> Key.Send
Consumer.028d ---> Sync.Report
Consumer.028e ---> Sync.Report
Consumer.028f ---> Sync.Report
Consumer.0290 ---> Sync.Report
Consumer.0291 ---> Sync.Report
Consumer.0292 ---> Sync.Report
Consumer.0293 ---> Sync.Report
Consumer.0294 ---> Sync.Report
Consumer.0295 ---> Sync.Report
Consumer.0296 ---> Sync.Report
Consumer.0297 ---> Sync.Report
Consumer.0298 ---> Sync.Report
Consumer.0299 ---> Sync.Report
Consumer.029a ---> Sync.Report
Consumer.029b ---> Sync.Report
Consumer.029c ---> Sync.Report
Consumer.029d ---> Sync.Report
Consumer.029e ---> Sync.Report
Consumer.029f ---> Sync.Report
Consumer.02a0 ---> Sync.Report
Consumer.02a1 ---> Sync.Report
Consumer.02a2 ---> Sync.Report
Consumer.02a3 ---> Sync.Report
Consumer.02a4 ---> Sync.Report
Consumer.02a5 ---> Sync.Report
Consumer.02a6 ---> Sync.Report
Consumer.02a7 ---> Sync.Report
Consumer.02a8 ---> Sync.Report
Consumer.02a9 ---> Sync.Report
Consumer.02aa ---> Sync.Report
Consumer.02ab ---> Sync.Report
Consumer.02ac ---> Sync.Report
Consumer.02ad ---> Sync.Report
Consumer.02ae ---> Sync.Report
Consumer.02af ---> Sync.Report
Consumer.02b0 ---> Sync.Report
Consumer.02b1 ---> Sync.Report
Consumer.02b2 ---> Sync.Report
Consumer.02b3 ---> Sync.Report
Consumer.02b4 ---> Sync.Report
Consumer.02b5 ---> Sync.Report
Consumer.02b6 ---> Sync.Report
Consumer.02b7 ---> Sync.Report
Consumer.02b8 ---> Sync.Report
Consumer.02b9 ---> Sync.Report
Consumer.02ba ---> Sync.Report
Consumer.02bb ---> Sync.Report
Consumer.02bc ---> Sync.Report
Consumer.02bd ---> Sync.Report
Consumer.02be ---> Sync.Report
Consumer.02bf ---> Sync.Report
Consumer.02c0 ---> Sync.Report
Consumer.02c1 ---> Sync.Report
Consumer.02c2 ---> Sync.Report
Consumer.02c3 ---> Sync.Report
Consumer.02c4 ---> Sync.Report
Consumer.02c5 ---> Sync.Report
Consumer.02c6 ---> Sync.Report
Consumer.02c7 ---> Sync.Report
Consumer.02c8 ---> Sync.Report
Consumer.02c9 ---> Sync.Report
Consumer.02ca ---> Sync.Report
Consumer.02cb ---> Sync.Report
Consumer.02cc ---> Sync.Report
Consumer.02cd ---> Sync.Report
Consumer.02ce ---> Sync.Report
Consumer.02cf ---> Sync.Report
Consumer.02d0 ---> Sync.Report
Consumer.02d1 ---> Sync.Report
Consumer.02d2 ---> Sync.Report
Consumer.02d3 ---> Sync.Report
Consumer.02d4 ---> Sync.Report
Consumer.02d5 ---> Sync.Report
Consumer.02d6 ---> Sync.Report
Consumer.02d7 ---> Sync.Report
Consumer.02d8 ---> Sync.Report
Consumer.02d9 ---> Sync.Report
Consumer.02da ---> Sync.Report
Consumer.02db ---> Sync.Report
Consumer.02dc ---> Sync.Report
Consumer.02dd ---> Sync.Report
Consumer.02de ---> Sync.Report
Consumer.02df ---> Sync.Report
Consumer.02e0 ---> Sync.Report
Consumer.02e1 ---> Sync.Report
Consumer.02e2 ---> Sync.Report
Consumer.02e3 ---> Sync.Report
Consumer.02e4 ---> Sync.Report
Consumer.02e5 ---> Sync.Report
Consumer.02e6 ---> Sync.Report
Consumer.02e7 ---> Sync.Report
Consumer.02e8 ---> Sync.Report
Consumer.02e9 ---> Sync.Report
Consumer.02ea ---> Sync.Report
Consumer.02eb ---> Sync.Report
Consumer.02ec ---> Sync.Report
Consumer.02ed ---> Sync.Report
Consumer.02ee ---> Sync.Report
Consumer.02ef ---> Sync.Report
Consumer.02f0 ---> Sync.Report
Consumer.02f1 ---> Sync.Report
Consumer.02f2 ---> Sync.Report
Consumer.02f3 ---> Sync.Report
Consumer.02f4 ---> Sync.Report
Consumer.02f5 ---> Sync.Report
Consumer.02f6 ---> Sync.Report
Consumer.02f7 ---> Sync.Report
Consumer.02f8 ---> Sync.Report
Consumer.02f9 ---> Sync.Report
Consumer.02fa ---> Sync.Report
Consumer.02fb ---> Sync.Report
Consumer.02fc ---> Sync.Report
Consumer.02fd ---> Sync.Report
Consumer.02fe ---> Sync.Report
Consumer.02ff ---> Sync.Report
Consumer.0300 ---> Sync.Report
Consumer.0301 ---> Sync.Report
Consumer.0302 ---> Sync.Report
Consumer.0303 ---> Sync.Report
Consumer.0304 ---> Sync.Report
Consumer.0305 ---> Sync.Report
Consumer.0306 ---> Sync.Report
Consumer.0307 ---> Sync.Report
Consumer.0308 ---> Sync.Report
Consumer.0309 ---> Sync.Report
Consumer.030a ---> Sync.Report
Consumer.030b ---> Sync.Report
Consumer.030c ---> Sync.Report
Consumer.030d ---> Sync.Report
Consumer.030e ---> Sync.Report
Consumer.030f ---> Sync.Report
Consumer.0310 ---> Sync.Report
Consumer.0311 ---> Sync.Report
Consumer.0312 ---> Sync.Report
Consumer.0313 ---> Sync.Report
Consumer.0314 ---> Sync.Report
Consumer.0315 ---> Sync.Report
Consumer.0316 ---> Sync.Report
Consumer.0317 ---> Sync.Report
Consumer.0318 ---> Sync.Report
Consumer.0319 ---> Sync.Report
Consumer.031a ---> Sync.Report
Consumer.031b ---> Sync.Report
Consumer.031c ---> Sync.Report
Consumer.031d ---> Sync.Report
Consumer.031e ---> Sync.Report
Consumer.031f ---> Sync.Report
Consumer.0320 ---> Sync.Report
Consumer.0321 ---> Sync.Report
Consumer.0322 ---> Sync.Report
Consumer.0323 ---> Sync.Report
Consumer.0324 ---> Sync.Report
Consumer.0325 ---> Sync.Report
Consumer.0326 ---> Sync.Report
Consumer.0327 ---> Sync.Report
Consumer.0328 ---> Sync.Report
Consumer.0329 ---> Sync.Report
Consumer.032a ---> Sync.Report
Consumer.032b ---> Sync.Report
Consumer.032c ---> Sync.Report
Consumer.032d ---> Sync.Report
Consumer.032e ---> Sync.Report
Consumer.032f ---> Sync.Report
Consumer.0330 ---> Sync.Report
Consumer.0331 ---> Sync.Report
Consumer.0332 ---> Sync.Report
Consumer.0333 ---> Sync.Report
Consumer.0334 ---> Sync.Report
Consumer.0335 ---> Sync.Report
Consumer.0336 ---> Sync.Report
Consumer.0337 ---> Sync.Report
Consumer.0338 ---> Sync.Report
Consumer.0339 ---> Sync.Report
Consumer.033a ---> Sync.Report
Consumer.033b ---> Sync.Report
Consumer.033c ---> Sync.Report
Consumer.033d ---> Sync.Report
Consumer.033e ---> Sync.Report
Consumer.033f ---> Sync.Report
Consumer.0340 ---> Sync.Report
Consumer.0341 ---> Sync.Report
Consumer.0342 ---> Sync.Report
Consumer.0343 ---> Sync.Report
Consumer.0344 ---> Sync.Report
Consumer.0345 ---> Sync.Report
Consumer.0346 ---> Sync.Report
Consumer.0347 ---> Sync.Report
Consumer.0348 ---> Sync.Report
Consumer.0349 ---> Sync.Report
Consumer.034a ---> Sync.Report
Consumer.034b ---> Sync.Report
Consumer.034c ---> Sync.Report
Consumer.034d ---> Sync.Report
Consumer.034e ---> Sync.Report
Consumer.034f ---> Sync.Report
Consumer.0350 ---> Sync.Report
Consumer.0351 ---> Sync.Report
Consumer.0352 ---> Sync.Report
Consumer.0353 ---> Sync.Report
Consumer.0354 ---> Sync.Report
Consumer.0355 ---> Sync.Report
Consumer.0356 ---> Sync.Report
Consumer.0357 ---> Sync.Report
Consumer.0358 ---> Sync.Report
Consumer.0359 ---> Sync.Report
Consumer.035a ---> Sync.Report
Consumer.035b ---> Sync.Report
Consumer.035c ---> Sync.Report
Consumer.035d ---> Sync.Report
Consumer.035e ---> Sync.Report
Consumer.035f ---> Sync.Report
Consumer.0360 ---> Sync.Report
Consumer.0361 ---> Sync.Report
Consumer.0362 ---> Sync.Report
Consumer.0363 ---> Sync.Report
Consumer.0364 ---> Sync.Report
Consumer.0365 ---> Sync.Report
Consumer.0366 ---> Sync.Report
Consumer.0367 ---> Sync.Report
Consumer.0368 ---> Sync.Report
Consumer.0369 ---> Sync.Report
Consumer.036a ---> Sync.Report
Consumer.036b ---> Sync.Report
Consumer.036c ---> Sync.Report
Consumer.036d ---> Sync.Report
Consumer.036e ---> Sync.Report
Consumer.036f ---> Sync.Report
Consumer.0370 ---> Sync.Report
Consumer.0371 ---> Sync.Report
Consumer.0372 ---> Sync.Report
Consumer.0373 ---> Sync.Report
Consumer.0374 ---> Sync.Report
Consumer.0375 ---> Sync.Report
Consumer.0376 ---> Sync.Report
Consumer.0377 ---> Sync.Report
Consumer.0378 ---> Sync.Report
Consumer.0379 ---> Sync.Report
Consumer.037a ---> Sync.Report
Consumer.037b ---> Sync.Report
Consumer.037c ---> Sync.Report
Consumer.037d ---> Sync.Report
Consumer.037e ---> Sync.Report
Consumer.037f ---> Sync.Report
Consumer.0380 ---> Sync.Report
Consumer.0381 ---> Sync.Report
Consumer.0382 ---> Sync.Report
Consumer.0383 ---> Sync.Report
Consumer.0384 ---> Sync.Report
Consumer.0385 ---> Sync.Report
Consumer.0386 ---> Sync.Report
Consumer.0387 ---> Sync.Report
Consumer.0388 ---> Sync.Report
Consumer.0389 ---> Sync.Report
Consumer.038a ---> Sync.Report
Consumer.038b ---> Sync.Report
Consumer.038c ---> Sync.Report
Consumer.038d ---> Sync.Report
Consumer.038e ---> Sync.Report
Consumer.038f ---> Sync.Report
Consumer.0390 ---> Sync.Report
Consumer.0391 ---> Sync.Report
Consumer.0392 ---> Sync.Report
Consumer.0393 ---> Sync.Report
Consumer.0394 ---> Sync.Report
Consumer.0395 ---> Sync.Report
Consumer.0396 ---> Sync.Report
Consumer.0397 ---> Sync.Report
Consumer.0398 ---> Sync.Report
Consumer.0399 ---> Sync.Report
Consumer.039a ---> Sync.Report
Consumer.039b ---> Sync.Report
Consumer.039c ---> Sync.Report
Consumer.039d ---> Sync.Report
Consumer.039e ---> Sync.Report
Consumer.039f ---> Sync.Report
Consumer.03a0 ---> Sync.Report
Consumer.03a1 ---> Sync.Report
Consumer.03a2 ---> Sync.Report
Consumer.03a3 ---> Sync.Report
Consumer.03a4 ---> Sync.Report
Consumer.03a5 ---> Sync.Report
Consumer.03a6 ---> Sync.Report
Consumer.03a7 ---> Sync.Report
Consumer.03a8 ---> Sync.Report
Consumer.03a9 ---> Sync.Report
Consumer.03aa ---> Sync.Report
Consumer.03ab ---> Sync.Report
Consumer.03ac ---> Sync.Report
Consumer.03ad ---> Sync.Report
Consumer.03ae ---> Sync.Report
Consumer.03af ---> Sync.Report
Consumer.03b0 ---> Sync.Report
Consumer.03b1 ---> Sync.Report
Consumer.03b2 ---> Sync.Report
Consumer.03b3 ---> Sync.Report
Consumer.03b4 ---> Sync.Report
Consumer.03b5 ---> Sync.Report
Consumer.03b6 ---> Sync.Report
Consumer.03b7 ---> Sync.Report
Consumer.03b8 ---> Sync.Report
Consumer.03b9 ---> Sync.Report
Consumer.03ba ---> Sync.Report
Consumer.03bb ---> Sync.Report
Consumer.03bc ---> Sync.Report
Consumer.03bd ---> Sync.Report
Consumer.03be ---> Sync.Report
Consumer.03bf ---> Sync.Report
Consumer.03c0 ---> Sync.Report
Consumer.03c1 ---> Sync.Report
Consumer.03c2 ---> Sync.Report
Consumer.03c3 ---> Sync.Report
Consumer.03c4 ---> Sync.Report
Consumer.03c5 ---> Sync.Report
Consumer.03c6 ---> Sync.Report
Consumer.03c7 ---> Sync.Report
Consumer.03c8 ---> Sync.Report
Consumer.03c9 ---> Sync.Report
Consumer.03ca ---> Sync.Report
Consumer.03cb ---> Sync.Report
Consumer.03cc ---> Sync.Report
Consumer.03cd ---> Sync.Report
Consumer.03ce ---> Sync.Report
Consumer.03cf ---> Sync.Report
Consumer.03d0 ---> Sync.Report
Consumer.03d1 ---> Sync.Report
Consumer.03d2 ---> Sync.Report
Consumer.03d3 ---> Sync.Report
Consumer.03d4 ---> Sync.Report
Consumer.03d5 ---> Sync.Report
Consumer.03d6 ---> Sync.Report
Consumer.03d7 ---> Sync.Report
Consumer.03d8 ---> Sync.Report
Consumer.03d9 ---> Sync.Report
Consumer.03da ---> Sync.Report
Consumer.03db ---> Sync.Report
Consumer.03dc ---> Sync.Report
Consumer.03dd ---> Sync.Report
Consumer.03de ---> Sync.Report
Consumer.03df ---> Sync.Report
Consumer.03e0 ---> Sync.Report
Consumer.03e1 ---> Sync.Report
Consumer.03e2 ---> Sync.Report
Consumer.03e3 ---> Sync.Report
Consumer.03e4 ---> Sync.Report
Consumer.03e5 ---> Sync.Report
Consumer.03e6 ---> Sync.Report
Consumer.03e7 ---> Sync.Report
Consumer.03e8 ---> Sync.Report
Consumer.03e9 ---> Sync.Report
Consumer.03ea ---> Sync.Report
Consumer.03eb ---> Sync.Report
Consumer.03ec ---> Sync.Report
Consumer.03ed ---> Sync.Report
Consumer.03ee ---> Sync.Report
Consumer.03ef ---> Sync.Report
Consumer.03f0 ---> Sync.Report
Consumer.03f1 ---> Sync.Report
Consumer.03f2 ---> Sync.Report
Consumer.03f3 ---> Sync.Report
Consumer.03f4 ---> Sync.Report
Consumer.03f5 ---> Sync.Report
Consumer.03f6 ---> Sync.Report
Consumer.03f7 ---> Sync.Report
Consumer.03f8 ---> Sync.Report
Consumer.03f9 ---> Sync.Report
Consumer.03fa ---> Sync.Report
Consumer.03fb ---> Sync.Report
Consumer.03fc ---> Sync.Report
Consumer.03fd ---> Sync.Report
Consumer.03fe ---> Sync.Report
Consumer.03ff ---> Sync.Report
ff00.fd01 ---> Sync.Report
ff00.fd02 ---> Sync.Report
ff00.fd03 ---> Sync.Report
ff00.fd04 ---> Sync.Report
ff00.fd05 ---> Sync.Report
ff00.fd06 ---> Sync.Report
ff00.fd07 ---> Sync.Report
ff00.fd08 ---> Sync.Report
ff00.fd09 ---> Sync.Report
ff00.fd0a ---> Sync.Report
ff00.fd0b ---> Sync.Report
ff00.fd0c ---> Sync.Report
ff00.fd0d ---> Sync.Report
ff00.fd0e ---> Sync.Report
ff00.fd0f ---> Sync.Report
ff00.fd10 ---> Sync.Report
ff00.fd11 ---> Sync.Report
ff00.fd12 ---> Sync.Report
ff00.fd13 ---> Sync.Report
ff00.fd14 ---> Sync.Report
ff00.fd15 ---> Sync.Report
ff00.fd16 ---> Sync.Report
ff00.fd17 ---> Sync.Report
ff00.fd18 ---> Sync.Report
ff00.fd19 ---> Sync.Report
ff00.fd1a ---> Sync.Report
ff00.fd1b ---> Sync.Report
ff00.fd1c ---> Sync.Report
ff00.fd1d ---> Sync.Report
ff00.fd1e ---> Sync.Report
ff00.fd1f ---> Sync.Report
ff00.fd20 ---> Sync.Report
ff00.fd21 ---> Sync.Report
ff00.fd22 ---> Sync.Report
ff00.fd23 ---> Sync.Report
ff00.fd24 ---> Sync.Report
ff00.fd25 ---> Sync.Report
ff00.fd26 ---> Sync.Report
ff00.fd27 ---> Sync.Report
ff00.fd28 ---> Sync.Report
ff00.fd29 ---> Sync.Report
ff00.fd2a ---> Sync.Report
ff00.fd2b ---> Sync.Report
ff00.fd2c ---> Sync.Report
ff00.fd2d ---> Sync.Report
ff00.fd2e ---> Sync.Report
ff00.fd2f ---> Sync.Report
ff00.fd30 ---> Sync.Report
ff00.fd31 ---> Sync.Report
ff00.fd32 ---> Sync.Report
ff00.fd33 ---> Sync.Report
ff00.fd34 ---> Sync.Report
ff00.fd35 ---> Sync.Report
ff00.fd36 ---> Sync.Report
ff00.fd37 ---> Sync.Report
ff00.fd38 ---> Sync.Report
ff00.fd39 ---> Sync.Report
ff00.fd3a ---> Sync.Report
ff00.fd3b ---> Sync.Report
ff00.fd3c ---> Sync.Report
ff00.fd3d ---> Sync.Report
ff00.fd3e ---> Sync.Report
ff00.fd3f ---> Sync.Report
ff00.fd40 ---> Sync.Report
ff00.fd41 ---> Sync.Report
ff00.fd42 ---> Sync.Report
ff00.fd43 ---> Sync.Report
ff00.fd44 ---> Sync.Report
ff00.fd45 ---> Sync.Report
ff00.fd46 ---> Sync.Report
ff00.fd47 ---> Sync.Report
ff00.fd48 ---> Sync.Report
ff00.fd49 ---> Sync.Report
ff00.fd4a ---> Sync.Report
ff00.fd4b ---> Sync.Report
ff00.fd4c ---> Sync.Report
ff00.fd4d ---> Sync.Report
ff00.fd4e ---> Sync.Report
ff00.fd4f ---> Sync.Report
ff00.fd50 ---> Sync.Report
ff00.fd51 ---> Sync.Report
ff00.fd52 ---> Sync.Report
ff00.fd53 ---> Sync.Report
ff00.fd54 ---> Sync.Report
ff00.fd55 ---> Sync.Report
ff00.fd56 ---> Sync.Report
ff00.fd57 ---> Sync.Report
ff00.fd58 ---> Sync.Report
ff00.fd59 ---> Sync.Report
ff00.fd5a ---> Sync.Report
ff00.fd5b ---> Sync.Report
ff00.fd5c ---> Sync.Report
ff00.fd5d ---> Sync.Report
ff00.fd5e ---> Sync.Report
ff00.fd5f ---> Sync.Report
ff00.fd60 ---> Sync.Report
ff00.fd61 ---> Sync.Report
ff00.fd62 ---> Sync.Report
ff00.fd63 ---> Sync.Report
ff00.fd64 ---> Sync.Report
ff00.fd65 ---> Sync.Report
ff00.fd66 ---> Sync.Report
ff00.fd67 ---> Sync.Report
ff00.fd68 ---> Sync.Report
ff00.fd69 ---> Sync.Report
ff00.fd6a ---> Sync.Report
ff00.fd6b ---> Sync.Report
ff00.fd6c ---> Sync.Report
ff00.fd6d ---> Sync.Report
ff00.fd6e ---> Sync.Report
ff00.fd6f ---> Sync.Report
ff00.fd70 ---> Sync.Report
ff00.fd71 ---> Sync.Report
ff00.fd72 ---> Sync.Report
ff00.fd73 ---> Sync.Report
ff00.fd74 ---> Sync.Report
ff00.fd75 ---> Sync.Report
ff00.fd76 ---> Sync.Report
ff00.fd77 ---> Sync.Report
ff00.fd78 ---> Sync.Report
ff00.fd79 ---> Sync.Report
ff00.fd7a ---> Sync.Report
ff00.fd7b ---> Sync.Report
ff00.fd7c ---> Sync.Report
ff00.fd7d ---> Sync.Report
ff00.fd7e ---> Sync.Report
ff00.fd7f ---> Sync.Report
ff00.fd80 ---> Sync.Report
ff00.fd81 ---> Sync.Report
ff00.fd82 ---> Sync.Report
ff00.fd83 ---> Sync.Report
ff00.fd84 ---> Sync.Report
ff00.fd85 ---> Sync.Report
ff00.fd86 ---> Sync.Report
ff00.fd87 ---> Sync.Report
ff00.fd88 ---> Sync.Report
ff00.fd89 ---> Sync.Report
ff00.fd8a ---> Sync.Report
ff00.fd8b ---> Sync.Report
ff00.fd8c ---> Sync.Report
ff00.fd8d ---> Sync.Report
ff00.fd8e ---> Sync.Report
ff00.fd8f ---> Sync.Report
ff00.fd90 ---> Sync.Report
ff00.fd91 ---> Sync.Report
ff00.fd92 ---> Sync.Report
ff00.fd93 ---> Sync.Report
ff00.fd94 ---> Sync.Report
ff00.fd95 ---> Sync.Report
ff00.fd96 ---> Sync.Report
ff00.fd97 ---> Sync.Report
ff00.fd98 ---> Sync.Report
ff00.fd99 ---> Sync.Report
ff00.fd9a ---> Sync.Report
ff00.fd9b ---> Sync.Report
ff00.fd9c ---> Sync.Report
ff00.fd9d ---> Sync.Report
ff00.fd9e ---> Sync.Report
ff00.fd9f ---> Sync.Report
ff00.fda0 ---> Sync.Report
ff00.fda1 ---> Sync.Report
ff00.fda2 ---> Sync.Report
ff00.fda3 ---> Sync.Report
ff00.fda4 ---> Sync.Report
ff00.fda5 ---> Sync.Report
ff00.fda6 ---> Sync.Report
ff00.fda7 ---> Sync.Report
ff00.fda8 ---> Sync.Report
ff00.fda9 ---> Sync.Report
ff00.fdaa ---> Sync.Report
ff00.fdab ---> Sync.Report
ff00.fdac ---> Sync.Report
ff00.fdad ---> Sync.Report
ff00.fdae ---> Sync.Report
ff00.fdaf ---> Sync.Report
ff00.fdb0 ---> Sync.Report
ff00.fdb1 ---> Sync.Report
ff00.fdb2 ---> Sync.Report
ff00.fdb3 ---> Sync.Report
ff00.fdb4 ---> Sync.Report
ff00.fdb5 ---> Sync.Report
ff00.fdb6 ---> Sync.Report
ff00.fdb7 ---> Sync.Report
ff00.fdb8 ---> Sync.Report
ff00.fdb9 ---> Sync.Report
ff00.fdba ---> Sync.Report
ff00.fdbb ---> Sync.Report
ff00.fdbc ---> Sync.Report
ff00.fdbd ---> Sync.Report
ff00.fdbe ---> Sync.Report
ff00.fdbf ---> Sync.Report
ff00.fdc0 ---> Sync.Report
ff00.fdc1 ---> Sync.Report
ff00.fdc2 ---> Sync.Report
ff00.fdc3 ---> Sync.Report
ff00.fdc4 ---> Sync.Report
ff00.fdc5 ---> Sync.Report
ff00.fdc6 ---> Sync.Report
ff00.fdc7 ---> Sync.Report
ff00.fdc8 ---> Sync.Report
ff00.fdc9 ---> Sync.Report
ff00.fdca ---> Sync.Report
ff00.fdcb ---> Sync.Report
ff00.fdcc ---> Sync.Report
ff00.fdcd ---> Sync.Report
ff00.fdce ---> Sync.Report
ff00.fdcf ---> Sync.Report
ff00.fdd0 ---> Sync.Report
ff00.fdd1 ---> Sync.Report
ff00.fdd2 ---> Sync.Report
ff00.fdd3 ---> Sync.Report
ff00.fdd4 ---> Sync.Report
ff00.fdd5 ---> Sync.Report
ff00.fdd6 ---> Sync.Report
ff00.fdd7 ---> Sync.Report
ff00.fdd8 ---> Sync.Report
ff00.fdd9 ---> Sync.Report
ff00.fdda ---> Sync.Report
ff00.fddb ---> Sync.Report
ff00.fddc ---> Sync.Report
ff00.fddd ---> Sync.Report
ff00.fdde ---> Sync.Report
ff00.fddf ---> Sync.Report
ff00.fde0 ---> Sync.Report
ff00.fde1 ---> Sync.Report
ff00.fde2 ---> Sync.Report
ff00.fde3 ---> Sync.Report
ff00.fde4 ---> Sync.Report
ff00.fde5 ---> Sync.Report
ff00.fde6 ---> Sync.Report
ff00.fde7 ---> Sync.Report
ff00.fde8 ---> Sync.Report
ff00.fde9 ---> Sync.Report
ff00.fdea ---> Sync.Report
ff00.fdeb ---> Sync.Report
ff00.fdec ---> Sync.Report
ff00.fded ---> Sync.Report
ff00.fdee ---> Sync.Report
ff00.fdef ---> Sync.Report
ff00.fdf0 ---> Sync.Report
ff00.fdf1 ---> Sync.Report
ff00.fdf2 ---> Sync.Report
ff00.fdf3 ---> Sync.Report
ff00.fdf4 ---> Sync.Report
ff00.fdf5 ---> Sync.Report
ff00.fdf6 ---> Sync.Report
ff00.fdf7 ---> Sync.Report
ff00.fdf8 ---> Sync.Report
ff00.fdf9 ---> Sync.Report
ff00.fdfa ---> Sync.Report
ff00.fdfb ---> Sync.Report
ff00.fdfc ---> Sync.Report
ff00.fdfd ---> Sync.Report
ff00.fdfe ---> Sync.Report
ff00.fdff ---> Sync.Report
ff00.ff25 ---> Sync.Report
Button.0001 ---> Key.LeftBtn
Button.0002 ---> Key.RightBtn
Button.0003 ---> Key.MiddleBtn
Button.0004 ---> Key.SideBtn
Button.0005 ---> Key.ExtraBtn
GenericDesktop.X ---> Relative.X
GenericDesktop.Y ---> Relative.Y
GenericDesktop.Wheel ---> Relative.Wheel
Consumer.HorizontalWheel ---> Relative.Misc
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] HID: fix horizontal wheel for ms comfort mouse 4500
2011-07-04 8:59 [PATCH] HID: fix horizontal wheel for ms comfort mouse 4500 Ari Savolainen
@ 2011-07-11 12:47 ` Jiri Kosina
2011-07-11 17:28 ` Ari Savolainen
2011-07-11 18:42 ` Ari Savolainen
0 siblings, 2 replies; 5+ messages in thread
From: Jiri Kosina @ 2011-07-11 12:47 UTC (permalink / raw)
To: Ari Savolainen; +Cc: linux-input
On Mon, 4 Jul 2011, Ari Savolainen wrote:
> Microsoft comfort mouse 4500 has a report descriptor that contains
> usage Consumer.HorizontalWheel three times under three different
> input reports (the report descriptor from debugfs is copied
> below).
>
> The first of the usages gets mapping REL_WHEEL, but the other two
> get REL_DIAL and REL_MISC due this loop in function
> hidinput_configure_usage (in hid-input.c soon after label
> 'mapped'):
>
> while (usage->code <= max && test_and_set_bit(usage->code, bit))
> usage->code = find_next_zero_bit(bit, max + 1, usage->code);
>
> REL_MISC gets eventually reported when the horizontal wheel is used.
>
> The purpose of the loop is not clear and deserves, perhaps, an
> explanatory comment. Most of the code works around the loop by
> using map_xxx_clear macros anyway.
>
> The patch below introduces another such macro (map_rel_clear) and
> changes the wheel mapping to use it.
>
> It would have been possible to add another quirk in
> hid-microsoft.c but the proposed patch seems to be more in line to
> what is currently done in similar cases.
Hi,
thanks a lot for debuging this.
For rational of HWHEEL mapping, please see commit 25914662b.
So what I'd like to ask you to do instead would be adding a new quirk.
Wouldn't DUPLICATE_USAGES be enough here?
If not, please just add a really simple quirk into hid-microsoft.
Thanks,
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] HID: fix horizontal wheel for ms comfort mouse 4500
2011-07-11 12:47 ` Jiri Kosina
@ 2011-07-11 17:28 ` Ari Savolainen
2011-07-11 18:42 ` Ari Savolainen
1 sibling, 0 replies; 5+ messages in thread
From: Ari Savolainen @ 2011-07-11 17:28 UTC (permalink / raw)
To: Jiri Kosina; +Cc: linux-input
2011/7/11 Jiri Kosina <jkosina@suse.cz>:
> Hi,
>
> thanks a lot for debuging this.
>
> For rational of HWHEEL mapping, please see commit 25914662b.
>
> So what I'd like to ask you to do instead would be adding a new quirk.
> Wouldn't DUPLICATE_USAGES be enough here?
>
> If not, please just add a really simple quirk into hid-microsoft.
>
> Thanks,
>
> --
> Jiri Kosina
> SUSE Labs
>
Hi,
The generic DUPLICATE_USAGES quirk doesn't exist any more. The
following patch is somewhat simplified version of what is done in
hid-lg.c in similar cases.
---
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-microsoft.c | 26 +++++++++++++++++++++-----
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index a756ee6..92de0d5 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -472,6 +472,7 @@
#define USB_DEVICE_ID_MS_LK6K 0x00f9
#define USB_DEVICE_ID_MS_PRESENTER_8K_BT 0x0701
#define USB_DEVICE_ID_MS_PRESENTER_8K_USB 0x0713
+#define USB_DEVICE_ID_MS_COMFORT_MOUSE_4500 0x076c
#define USB_VENDOR_ID_MOJO 0x8282
#define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c
index 0f6fc54..8f31362 100644
--- a/drivers/hid/hid-microsoft.c
+++ b/drivers/hid/hid-microsoft.c
@@ -23,11 +23,12 @@
#include "hid-ids.h"
-#define MS_HIDINPUT 0x01
-#define MS_ERGONOMY 0x02
-#define MS_PRESENTER 0x04
-#define MS_RDESC 0x08
-#define MS_NOGET 0x10
+#define MS_HIDINPUT 0x01
+#define MS_ERGONOMY 0x02
+#define MS_PRESENTER 0x04
+#define MS_RDESC 0x08
+#define MS_NOGET 0x10
+#define MS_DUPLICATE_USAGES 0x20
/*
* Microsoft Wireless Desktop Receiver (Model 1028) has
@@ -109,6 +110,18 @@ static int ms_input_mapping(struct hid_device
*hdev, struct hid_input *hi,
return 0;
}
+static int ms_input_mapped(struct hid_device *hdev, struct hid_input *hi,
+ struct hid_field *field, struct hid_usage *usage,
+ unsigned long **bit, int *max)
+{
+ unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
+
+ if (quirks & MS_DUPLICATE_USAGES)
+ clear_bit(usage->code, *bit);
+
+ return 0;
+}
+
static int ms_event(struct hid_device *hdev, struct hid_field *field,
struct hid_usage *usage, __s32 value)
{
@@ -181,6 +194,8 @@ static const struct hid_device_id ms_devices[] = {
.driver_data = MS_PRESENTER },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0),
.driver_data = MS_NOGET },
+ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT,
USB_DEVICE_ID_MS_COMFORT_MOUSE_4500),
+ .driver_data = MS_DUPLICATE_USAGES },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT,
USB_DEVICE_ID_MS_PRESENTER_8K_BT),
.driver_data = MS_PRESENTER },
@@ -193,6 +208,7 @@ static struct hid_driver ms_driver = {
.id_table = ms_devices,
.report_fixup = ms_report_fixup,
.input_mapping = ms_input_mapping,
+ .input_mapped = ms_input_mapped,
.event = ms_event,
.probe = ms_probe,
};
--
1.7.4.1
Ari
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH] HID: fix horizontal wheel for ms comfort mouse 4500
2011-07-11 12:47 ` Jiri Kosina
2011-07-11 17:28 ` Ari Savolainen
@ 2011-07-11 18:42 ` Ari Savolainen
2011-07-12 8:33 ` Jiri Kosina
1 sibling, 1 reply; 5+ messages in thread
From: Ari Savolainen @ 2011-07-11 18:42 UTC (permalink / raw)
To: Jiri Kosina; +Cc: linux-input
Microsoft comfort mouse 4500 report descriptor contains duplicate
usages for horizontal wheel. This patch fixes the wrong mapping
caused by that.
Signed-off-by: Ari Savolainen <ari.m.savolainen@gmail.com>
---
drivers/hid/hid-ids.h | 1 +
drivers/hid/hid-microsoft.c | 26 +++++++++++++++++++++-----
2 files changed, 22 insertions(+), 5 deletions(-)
diff --git a/drivers/hid/hid-ids.h b/drivers/hid/hid-ids.h
index a756ee6..92de0d5 100644
--- a/drivers/hid/hid-ids.h
+++ b/drivers/hid/hid-ids.h
@@ -472,6 +472,7 @@
#define USB_DEVICE_ID_MS_LK6K 0x00f9
#define USB_DEVICE_ID_MS_PRESENTER_8K_BT 0x0701
#define USB_DEVICE_ID_MS_PRESENTER_8K_USB 0x0713
+#define USB_DEVICE_ID_MS_COMFORT_MOUSE_4500 0x076c
#define USB_VENDOR_ID_MOJO 0x8282
#define USB_DEVICE_ID_RETRO_ADAPTER 0x3201
diff --git a/drivers/hid/hid-microsoft.c b/drivers/hid/hid-microsoft.c
index 0f6fc54..8f31362 100644
--- a/drivers/hid/hid-microsoft.c
+++ b/drivers/hid/hid-microsoft.c
@@ -23,11 +23,12 @@
#include "hid-ids.h"
-#define MS_HIDINPUT 0x01
-#define MS_ERGONOMY 0x02
-#define MS_PRESENTER 0x04
-#define MS_RDESC 0x08
-#define MS_NOGET 0x10
+#define MS_HIDINPUT 0x01
+#define MS_ERGONOMY 0x02
+#define MS_PRESENTER 0x04
+#define MS_RDESC 0x08
+#define MS_NOGET 0x10
+#define MS_DUPLICATE_USAGES 0x20
/*
* Microsoft Wireless Desktop Receiver (Model 1028) has
@@ -109,6 +110,18 @@ static int ms_input_mapping(struct hid_device *hdev, struct hid_input *hi,
return 0;
}
+static int ms_input_mapped(struct hid_device *hdev, struct hid_input *hi,
+ struct hid_field *field, struct hid_usage *usage,
+ unsigned long **bit, int *max)
+{
+ unsigned long quirks = (unsigned long)hid_get_drvdata(hdev);
+
+ if (quirks & MS_DUPLICATE_USAGES)
+ clear_bit(usage->code, *bit);
+
+ return 0;
+}
+
static int ms_event(struct hid_device *hdev, struct hid_field *field,
struct hid_usage *usage, __s32 value)
{
@@ -181,6 +194,8 @@ static const struct hid_device_id ms_devices[] = {
.driver_data = MS_PRESENTER },
{ HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_WIRELESS_OPTICAL_DESKTOP_3_0),
.driver_data = MS_NOGET },
+ { HID_USB_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_COMFORT_MOUSE_4500),
+ .driver_data = MS_DUPLICATE_USAGES },
{ HID_BLUETOOTH_DEVICE(USB_VENDOR_ID_MICROSOFT, USB_DEVICE_ID_MS_PRESENTER_8K_BT),
.driver_data = MS_PRESENTER },
@@ -193,6 +208,7 @@ static struct hid_driver ms_driver = {
.id_table = ms_devices,
.report_fixup = ms_report_fixup,
.input_mapping = ms_input_mapping,
+ .input_mapped = ms_input_mapped,
.event = ms_event,
.probe = ms_probe,
};
--
1.7.4.1
The previous mail contained extra newlines inserted by gmail web
client. I'm resending the patch with "git send-email".
Ari
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] HID: fix horizontal wheel for ms comfort mouse 4500
2011-07-11 18:42 ` Ari Savolainen
@ 2011-07-12 8:33 ` Jiri Kosina
0 siblings, 0 replies; 5+ messages in thread
From: Jiri Kosina @ 2011-07-12 8:33 UTC (permalink / raw)
To: Ari Savolainen; +Cc: linux-input
On Mon, 11 Jul 2011, Ari Savolainen wrote:
> Microsoft comfort mouse 4500 report descriptor contains duplicate
> usages for horizontal wheel. This patch fixes the wrong mapping
> caused by that.
>
> Signed-off-by: Ari Savolainen <ari.m.savolainen@gmail.com>
Applied, thanks Ari.
--
Jiri Kosina
SUSE Labs
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-07-12 8:33 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2011-07-04 8:59 [PATCH] HID: fix horizontal wheel for ms comfort mouse 4500 Ari Savolainen
2011-07-11 12:47 ` Jiri Kosina
2011-07-11 17:28 ` Ari Savolainen
2011-07-11 18:42 ` Ari Savolainen
2011-07-12 8:33 ` Jiri Kosina
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.