1 // SPDX-License-Identifier: GPL-2.0-or-later 2 /* 3 * (c) 1999 Andreas Gal <gal@cs.uni-magdeburg.de> 4 * (c) 2000-2001 Vojtech Pavlik <vojtech@ucw.cz> 5 * (c) 2007-2009 Jiri Kosina 6 * 7 * HID debugging support 8 */ 9 10 /* 11 * 12 * Should you need to contact me, the author, you can do so either by 13 * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail: 14 * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic 15 */ 16 17 #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt 18 19 #include <linux/debugfs.h> 20 #include <linux/seq_file.h> 21 #include <linux/kfifo.h> 22 #include <linux/sched/signal.h> 23 #include <linux/export.h> 24 #include <linux/slab.h> 25 #include <linux/uaccess.h> 26 #include <linux/poll.h> 27 28 #include <linux/hid.h> 29 #include <linux/hid-debug.h> 30 31 static struct dentry *hid_debug_root; 32 33 struct hid_usage_entry { 34 unsigned page; 35 unsigned usage; 36 const char *description; 37 }; 38 39 static const struct hid_usage_entry hid_usage_table[] = { 40 { 0x00, 0, "Undefined" }, 41 { 0x01, 0, "GenericDesktop" }, 42 { 0x01, 0x0001, "Pointer" }, 43 { 0x01, 0x0002, "Mouse" }, 44 { 0x01, 0x0004, "Joystick" }, 45 { 0x01, 0x0005, "Gamepad" }, 46 { 0x01, 0x0006, "Keyboard" }, 47 { 0x01, 0x0007, "Keypad" }, 48 { 0x01, 0x0008, "MultiaxisController" }, 49 { 0x01, 0x0009, "TabletPCSystemControls" }, 50 { 0x01, 0x000a, "WaterCoolingDevice" }, 51 { 0x01, 0x000b, "ComputerChassisDevice" }, 52 { 0x01, 0x000c, "WirelessRadioControls" }, 53 { 0x01, 0x000d, "PortableDeviceControl" }, 54 { 0x01, 0x000e, "SystemMultiAxisController" }, 55 { 0x01, 0x000f, "SpatialController" }, 56 { 0x01, 0x0010, "AssistiveControl" }, 57 { 0x01, 0x0011, "DeviceDock" }, 58 { 0x01, 0x0012, "DockableDevice" }, 59 { 0x01, 0x0013, "CallStateManagementControl" }, 60 { 0x01, 0x0030, "X" }, 61 { 0x01, 0x0031, "Y" }, 62 { 0x01, 0x0032, "Z" }, 63 { 0x01, 0x0033, "Rx" }, 64 { 0x01, 0x0034, "Ry" }, 65 { 0x01, 0x0035, "Rz" }, 66 { 0x01, 0x0036, "Slider" }, 67 { 0x01, 0x0037, "Dial" }, 68 { 0x01, 0x0038, "Wheel" }, 69 { 0x01, 0x0039, "HatSwitch" }, 70 { 0x01, 0x003a, "CountedBuffer" }, 71 { 0x01, 0x003b, "ByteCount" }, 72 { 0x01, 0x003c, "MotionWakeup" }, 73 { 0x01, 0x003d, "Start" }, 74 { 0x01, 0x003e, "Select" }, 75 { 0x01, 0x0040, "Vx" }, 76 { 0x01, 0x0041, "Vy" }, 77 { 0x01, 0x0042, "Vz" }, 78 { 0x01, 0x0043, "Vbrx" }, 79 { 0x01, 0x0044, "Vbry" }, 80 { 0x01, 0x0045, "Vbrz" }, 81 { 0x01, 0x0046, "Vno" }, 82 { 0x01, 0x0047, "FeatureNotification" }, 83 { 0x01, 0x0048, "ResolutionMultiplier" }, 84 { 0x01, 0x0049, "Qx" }, 85 { 0x01, 0x004a, "Qy" }, 86 { 0x01, 0x004b, "Qz" }, 87 { 0x01, 0x004c, "Qw" }, 88 { 0x01, 0x0080, "SystemControl" }, 89 { 0x01, 0x0081, "SystemPowerDown" }, 90 { 0x01, 0x0082, "SystemSleep" }, 91 { 0x01, 0x0083, "SystemWakeUp" }, 92 { 0x01, 0x0084, "SystemContextMenu" }, 93 { 0x01, 0x0085, "SystemMainMenu" }, 94 { 0x01, 0x0086, "SystemAppMenu" }, 95 { 0x01, 0x0087, "SystemMenuHelp" }, 96 { 0x01, 0x0088, "SystemMenuExit" }, 97 { 0x01, 0x0089, "SystemMenuSelect" }, 98 { 0x01, 0x008a, "SystemMenuRight" }, 99 { 0x01, 0x008b, "SystemMenuLeft" }, 100 { 0x01, 0x008c, "SystemMenuUp" }, 101 { 0x01, 0x008d, "SystemMenuDown" }, 102 { 0x01, 0x008e, "SystemColdRestart" }, 103 { 0x01, 0x008f, "SystemWarmRestart" }, 104 { 0x01, 0x0090, "DpadUp" }, 105 { 0x01, 0x0091, "DpadDown" }, 106 { 0x01, 0x0092, "DpadRight" }, 107 { 0x01, 0x0093, "DpadLeft" }, 108 { 0x01, 0x0094, "IndexTrigger" }, 109 { 0x01, 0x0095, "PalmTrigger" }, 110 { 0x01, 0x0096, "Thumbstick" }, 111 { 0x01, 0x0097, "SystemFunctionShift" }, 112 { 0x01, 0x0098, "SystemFunctionShiftLock" }, 113 { 0x01, 0x0099, "SystemFunctionShiftLockIndicator" }, 114 { 0x01, 0x009a, "SystemDismissNotification" }, 115 { 0x01, 0x009b, "SystemDoNotDisturb" }, 116 { 0x01, 0x00a0, "SystemDock" }, 117 { 0x01, 0x00a1, "SystemUndock" }, 118 { 0x01, 0x00a2, "SystemSetup" }, 119 { 0x01, 0x00a3, "SystemBreak" }, 120 { 0x01, 0x00a4, "SystemDebuggerBreak" }, 121 { 0x01, 0x00a5, "ApplicationBreak" }, 122 { 0x01, 0x00a6, "ApplicationDebuggerBreak" }, 123 { 0x01, 0x00a7, "SystemSpeakerMute" }, 124 { 0x01, 0x00a8, "SystemHibernate" }, 125 { 0x01, 0x00a9, "SystemMicrophoneMute" }, 126 { 0x01, 0x00b0, "SystemDisplayInvert" }, 127 { 0x01, 0x00b1, "SystemDisplayInternal" }, 128 { 0x01, 0x00b2, "SystemDisplayExternal" }, 129 { 0x01, 0x00b3, "SystemDisplayBoth" }, 130 { 0x01, 0x00b4, "SystemDisplayDual" }, 131 { 0x01, 0x00b5, "SystemDisplayToggleIntExtMode" }, 132 { 0x01, 0x00b6, "SystemDisplaySwapPrimarySecondary" }, 133 { 0x01, 0x00b7, "SystemDisplayToggleLCDAutoscale" }, 134 { 0x01, 0x00c0, "SensorZone" }, 135 { 0x01, 0x00c1, "RPM" }, 136 { 0x01, 0x00c2, "CoolantLevel" }, 137 { 0x01, 0x00c3, "CoolantCriticalLevel" }, 138 { 0x01, 0x00c4, "CoolantPump" }, 139 { 0x01, 0x00c5, "ChassisEnclosure" }, 140 { 0x01, 0x00c6, "WirelessRadioButton" }, 141 { 0x01, 0x00c7, "WirelessRadioLED" }, 142 { 0x01, 0x00c8, "WirelessRadioSliderSwitch" }, 143 { 0x01, 0x00c9, "SystemDisplayRotationLockButton" }, 144 { 0x01, 0x00ca, "SystemDisplayRotationLockSliderSwitch" }, 145 { 0x01, 0x00cb, "ControlEnable" }, 146 { 0x01, 0x00d0, "DockableDeviceUniqueID" }, 147 { 0x01, 0x00d1, "DockableDeviceVendorID" }, 148 { 0x01, 0x00d2, "DockableDevicePrimaryUsagePage" }, 149 { 0x01, 0x00d3, "DockableDevicePrimaryUsageID" }, 150 { 0x01, 0x00d4, "DockableDeviceDockingState" }, 151 { 0x01, 0x00d5, "DockableDeviceDisplayOcclusion" }, 152 { 0x01, 0x00d6, "DockableDeviceObjectType" }, 153 { 0x01, 0x00e0, "CallActiveLED" }, 154 { 0x01, 0x00e1, "CallMuteToggle" }, 155 { 0x01, 0x00e2, "CallMuteLED" }, 156 { 0x02, 0, "SimulationControls" }, 157 { 0x02, 0x0001, "FlightSimulationDevice" }, 158 { 0x02, 0x0002, "AutomobileSimulationDevice" }, 159 { 0x02, 0x0003, "TankSimulationDevice" }, 160 { 0x02, 0x0004, "SpaceshipSimulationDevice" }, 161 { 0x02, 0x0005, "SubmarineSimulationDevice" }, 162 { 0x02, 0x0006, "SailingSimulationDevice" }, 163 { 0x02, 0x0007, "MotorcycleSimulationDevice" }, 164 { 0x02, 0x0008, "SportsSimulationDevice" }, 165 { 0x02, 0x0009, "AirplaneSimulationDevice" }, 166 { 0x02, 0x000a, "HelicopterSimulationDevice" }, 167 { 0x02, 0x000b, "MagicCarpetSimulationDevice" }, 168 { 0x02, 0x000c, "BicycleSimulationDevice" }, 169 { 0x02, 0x0020, "FlightControlStick" }, 170 { 0x02, 0x0021, "FlightStick" }, 171 { 0x02, 0x0022, "CyclicControl" }, 172 { 0x02, 0x0023, "CyclicTrim" }, 173 { 0x02, 0x0024, "FlightYoke" }, 174 { 0x02, 0x0025, "TrackControl" }, 175 { 0x02, 0x00b0, "Aileron" }, 176 { 0x02, 0x00b1, "AileronTrim" }, 177 { 0x02, 0x00b2, "AntiTorqueControl" }, 178 { 0x02, 0x00b3, "AutopilotEnable" }, 179 { 0x02, 0x00b4, "ChaffRelease" }, 180 { 0x02, 0x00b5, "CollectiveControl" }, 181 { 0x02, 0x00b6, "DiveBrake" }, 182 { 0x02, 0x00b7, "ElectronicCountermeasures" }, 183 { 0x02, 0x00b8, "Elevator" }, 184 { 0x02, 0x00b9, "ElevatorTrim" }, 185 { 0x02, 0x00ba, "Rudder" }, 186 { 0x02, 0x00bb, "Throttle" }, 187 { 0x02, 0x00bc, "FlightCommunications" }, 188 { 0x02, 0x00bd, "FlareRelease" }, 189 { 0x02, 0x00be, "LandingGear" }, 190 { 0x02, 0x00bf, "ToeBrake" }, 191 { 0x02, 0x00c0, "Trigger" }, 192 { 0x02, 0x00c1, "WeaponsArm" }, 193 { 0x02, 0x00c2, "WeaponsSelect" }, 194 { 0x02, 0x00c3, "WingFlaps" }, 195 { 0x02, 0x00c4, "Accelerator" }, 196 { 0x02, 0x00c5, "Brake" }, 197 { 0x02, 0x00c6, "Clutch" }, 198 { 0x02, 0x00c7, "Shifter" }, 199 { 0x02, 0x00c8, "Steering" }, 200 { 0x02, 0x00c9, "TurretDirection" }, 201 { 0x02, 0x00ca, "BarrelElevation" }, 202 { 0x02, 0x00cb, "DivePlane" }, 203 { 0x02, 0x00cc, "Ballast" }, 204 { 0x02, 0x00cd, "BicycleCrank" }, 205 { 0x02, 0x00ce, "HandleBars" }, 206 { 0x02, 0x00cf, "FrontBrake" }, 207 { 0x02, 0x00d0, "RearBrake" }, 208 { 0x03, 0, "VRControls" }, 209 { 0x03, 0x0001, "Belt" }, 210 { 0x03, 0x0002, "BodySuit" }, 211 { 0x03, 0x0003, "Flexor" }, 212 { 0x03, 0x0004, "Glove" }, 213 { 0x03, 0x0005, "HeadTracker" }, 214 { 0x03, 0x0006, "HeadMountedDisplay" }, 215 { 0x03, 0x0007, "HandTracker" }, 216 { 0x03, 0x0008, "Oculometer" }, 217 { 0x03, 0x0009, "Vest" }, 218 { 0x03, 0x000a, "AnimatronicDevice" }, 219 { 0x03, 0x0020, "StereoEnable" }, 220 { 0x03, 0x0021, "DisplayEnable" }, 221 { 0x04, 0, "SportControls" }, 222 { 0x04, 0x0001, "BaseballBat" }, 223 { 0x04, 0x0002, "GolfClub" }, 224 { 0x04, 0x0003, "RowingMachine" }, 225 { 0x04, 0x0004, "Treadmill" }, 226 { 0x04, 0x0030, "Oar" }, 227 { 0x04, 0x0031, "Slope" }, 228 { 0x04, 0x0032, "Rate" }, 229 { 0x04, 0x0033, "StickSpeed" }, 230 { 0x04, 0x0034, "StickFaceAngle" }, 231 { 0x04, 0x0035, "StickHeelToe" }, 232 { 0x04, 0x0036, "StickFollowThrough" }, 233 { 0x04, 0x0037, "StickTempo" }, 234 { 0x04, 0x0038, "StickType" }, 235 { 0x04, 0x0039, "StickHeight" }, 236 { 0x04, 0x0050, "Putter" }, 237 { 0x04, 0x0051, "1Iron" }, 238 { 0x04, 0x0052, "2Iron" }, 239 { 0x04, 0x0053, "3Iron" }, 240 { 0x04, 0x0054, "4Iron" }, 241 { 0x04, 0x0055, "5Iron" }, 242 { 0x04, 0x0056, "6Iron" }, 243 { 0x04, 0x0057, "7Iron" }, 244 { 0x04, 0x0058, "8Iron" }, 245 { 0x04, 0x0059, "9Iron" }, 246 { 0x04, 0x005a, "10Iron" }, 247 { 0x04, 0x005b, "11Iron" }, 248 { 0x04, 0x005c, "SandWedge" }, 249 { 0x04, 0x005d, "LoftWedge" }, 250 { 0x04, 0x005e, "PowerWedge" }, 251 { 0x04, 0x005f, "1Wood" }, 252 { 0x04, 0x0060, "3Wood" }, 253 { 0x04, 0x0061, "5Wood" }, 254 { 0x04, 0x0062, "7Wood" }, 255 { 0x04, 0x0063, "9Wood" }, 256 { 0x05, 0, "GameControls" }, 257 { 0x05, 0x0001, "3DGameController" }, 258 { 0x05, 0x0002, "PinballDevice" }, 259 { 0x05, 0x0003, "GunDevice" }, 260 { 0x05, 0x0020, "PointofView" }, 261 { 0x05, 0x0021, "TurnRightLeft" }, 262 { 0x05, 0x0022, "PitchForwardBackward" }, 263 { 0x05, 0x0023, "RollRightLeft" }, 264 { 0x05, 0x0024, "MoveRightLeft" }, 265 { 0x05, 0x0025, "MoveForwardBackward" }, 266 { 0x05, 0x0026, "MoveUpDown" }, 267 { 0x05, 0x0027, "LeanRightLeft" }, 268 { 0x05, 0x0028, "LeanForwardBackward" }, 269 { 0x05, 0x0029, "HeightofPOV" }, 270 { 0x05, 0x002a, "Flipper" }, 271 { 0x05, 0x002b, "SecondaryFlipper" }, 272 { 0x05, 0x002c, "Bump" }, 273 { 0x05, 0x002d, "NewGame" }, 274 { 0x05, 0x002e, "ShootBall" }, 275 { 0x05, 0x002f, "Player" }, 276 { 0x05, 0x0030, "GunBolt" }, 277 { 0x05, 0x0031, "GunClip" }, 278 { 0x05, 0x0032, "GunSelector" }, 279 { 0x05, 0x0033, "GunSingleShot" }, 280 { 0x05, 0x0034, "GunBurst" }, 281 { 0x05, 0x0035, "GunAutomatic" }, 282 { 0x05, 0x0036, "GunSafety" }, 283 { 0x05, 0x0037, "GamepadFireJump" }, 284 { 0x05, 0x0039, "GamepadTrigger" }, 285 { 0x05, 0x003a, "FormfittingGamepad" }, 286 { 0x06, 0, "GenericDeviceControls" }, 287 { 0x06, 0x0001, "BackgroundNonuserControls" }, 288 { 0x06, 0x0020, "BatteryStrength" }, 289 { 0x06, 0x0021, "WirelessChannel" }, 290 { 0x06, 0x0022, "WirelessID" }, 291 { 0x06, 0x0023, "DiscoverWirelessControl" }, 292 { 0x06, 0x0024, "SecurityCodeCharacterEntered" }, 293 { 0x06, 0x0025, "SecurityCodeCharacterErased" }, 294 { 0x06, 0x0026, "SecurityCodeCleared" }, 295 { 0x06, 0x0027, "SequenceID" }, 296 { 0x06, 0x0028, "SequenceIDReset" }, 297 { 0x06, 0x0029, "RFSignalStrength" }, 298 { 0x06, 0x002a, "SoftwareVersion" }, 299 { 0x06, 0x002b, "ProtocolVersion" }, 300 { 0x06, 0x002c, "HardwareVersion" }, 301 { 0x06, 0x002d, "Major" }, 302 { 0x06, 0x002e, "Minor" }, 303 { 0x06, 0x002f, "Revision" }, 304 { 0x06, 0x0030, "Handedness" }, 305 { 0x06, 0x0031, "EitherHand" }, 306 { 0x06, 0x0032, "LeftHand" }, 307 { 0x06, 0x0033, "RightHand" }, 308 { 0x06, 0x0034, "BothHands" }, 309 { 0x06, 0x0040, "GripPoseOffset" }, 310 { 0x06, 0x0041, "PointerPoseOffset" }, 311 { 0x07, 0, "KeyboardKeypad" }, 312 { 0x07, 0x0001, "ErrorRollOver" }, 313 { 0x07, 0x0002, "POSTFail" }, 314 { 0x07, 0x0003, "ErrorUndefined" }, 315 { 0x07, 0x0004, "KeyboardA" }, 316 { 0x07, 0x0005, "KeyboardB" }, 317 { 0x07, 0x0006, "KeyboardC" }, 318 { 0x07, 0x0007, "KeyboardD" }, 319 { 0x07, 0x0008, "KeyboardE" }, 320 { 0x07, 0x0009, "KeyboardF" }, 321 { 0x07, 0x000a, "KeyboardG" }, 322 { 0x07, 0x000b, "KeyboardH" }, 323 { 0x07, 0x000c, "KeyboardI" }, 324 { 0x07, 0x000d, "KeyboardJ" }, 325 { 0x07, 0x000e, "KeyboardK" }, 326 { 0x07, 0x000f, "KeyboardL" }, 327 { 0x07, 0x0010, "KeyboardM" }, 328 { 0x07, 0x0011, "KeyboardN" }, 329 { 0x07, 0x0012, "KeyboardO" }, 330 { 0x07, 0x0013, "KeyboardP" }, 331 { 0x07, 0x0014, "KeyboardQ" }, 332 { 0x07, 0x0015, "KeyboardR" }, 333 { 0x07, 0x0016, "KeyboardS" }, 334 { 0x07, 0x0017, "KeyboardT" }, 335 { 0x07, 0x0018, "KeyboardU" }, 336 { 0x07, 0x0019, "KeyboardV" }, 337 { 0x07, 0x001a, "KeyboardW" }, 338 { 0x07, 0x001b, "KeyboardX" }, 339 { 0x07, 0x001c, "KeyboardY" }, 340 { 0x07, 0x001d, "KeyboardZ" }, 341 { 0x07, 0x001e, "Keyboard1andBang" }, 342 { 0x07, 0x001f, "Keyboard2andAt" }, 343 { 0x07, 0x0020, "Keyboard3andHash" }, 344 { 0x07, 0x0021, "Keyboard4andDollar" }, 345 { 0x07, 0x0022, "Keyboard5andPercent" }, 346 { 0x07, 0x0023, "Keyboard6andCaret" }, 347 { 0x07, 0x0024, "Keyboard7andAmpersand" }, 348 { 0x07, 0x0025, "Keyboard8andStar" }, 349 { 0x07, 0x0026, "Keyboard9andLeftBracket" }, 350 { 0x07, 0x0027, "Keyboard0andRightBracket" }, 351 { 0x07, 0x0028, "KeyboardReturnEnter" }, 352 { 0x07, 0x0029, "KeyboardEscape" }, 353 { 0x07, 0x002a, "KeyboardDelete" }, 354 { 0x07, 0x002b, "KeyboardTab" }, 355 { 0x07, 0x002c, "KeyboardSpacebar" }, 356 { 0x07, 0x002d, "KeyboardDashandUnderscore" }, 357 { 0x07, 0x002e, "KeyboardEqualsandPlus" }, 358 { 0x07, 0x002f, "KeyboardLeftBrace" }, 359 { 0x07, 0x0030, "KeyboardRightBrace" }, 360 { 0x07, 0x0031, "KeyboardBackslashandPipe" }, 361 { 0x07, 0x0032, "KeyboardNonUSHashandTilde" }, 362 { 0x07, 0x0033, "KeyboardSemiColonandColon" }, 363 { 0x07, 0x0034, "KeyboardLeftAposandDouble" }, 364 { 0x07, 0x0035, "KeyboardGraveAccentandTilde" }, 365 { 0x07, 0x0036, "KeyboardCommaandLessThan" }, 366 { 0x07, 0x0037, "KeyboardPeriodandGreaterThan" }, 367 { 0x07, 0x0038, "KeyboardForwardSlashandQuestionMark" }, 368 { 0x07, 0x0039, "KeyboardCapsLock" }, 369 { 0x07, 0x003a, "KeyboardF1" }, 370 { 0x07, 0x003b, "KeyboardF2" }, 371 { 0x07, 0x003c, "KeyboardF3" }, 372 { 0x07, 0x003d, "KeyboardF4" }, 373 { 0x07, 0x003e, "KeyboardF5" }, 374 { 0x07, 0x003f, "KeyboardF6" }, 375 { 0x07, 0x0040, "KeyboardF7" }, 376 { 0x07, 0x0041, "KeyboardF8" }, 377 { 0x07, 0x0042, "KeyboardF9" }, 378 { 0x07, 0x0043, "KeyboardF10" }, 379 { 0x07, 0x0044, "KeyboardF11" }, 380 { 0x07, 0x0045, "KeyboardF12" }, 381 { 0x07, 0x0046, "KeyboardPrintScreen" }, 382 { 0x07, 0x0047, "KeyboardScrollLock" }, 383 { 0x07, 0x0048, "KeyboardPause" }, 384 { 0x07, 0x0049, "KeyboardInsert" }, 385 { 0x07, 0x004a, "KeyboardHome" }, 386 { 0x07, 0x004b, "KeyboardPageUp" }, 387 { 0x07, 0x004c, "KeyboardDeleteForward" }, 388 { 0x07, 0x004d, "KeyboardEnd" }, 389 { 0x07, 0x004e, "KeyboardPageDown" }, 390 { 0x07, 0x004f, "KeyboardRightArrow" }, 391 { 0x07, 0x0050, "KeyboardLeftArrow" }, 392 { 0x07, 0x0051, "KeyboardDownArrow" }, 393 { 0x07, 0x0052, "KeyboardUpArrow" }, 394 { 0x07, 0x0053, "KeypadNumLockandClear" }, 395 { 0x07, 0x0054, "KeypadForwardSlash" }, 396 { 0x07, 0x0055, "KeypadStar" }, 397 { 0x07, 0x0056, "KeypadDash" }, 398 { 0x07, 0x0057, "KeypadPlus" }, 399 { 0x07, 0x0058, "KeypadENTER" }, 400 { 0x07, 0x0059, "Keypad1andEnd" }, 401 { 0x07, 0x005a, "Keypad2andDownArrow" }, 402 { 0x07, 0x005b, "Keypad3andPageDn" }, 403 { 0x07, 0x005c, "Keypad4andLeftArrow" }, 404 { 0x07, 0x005d, "Keypad5" }, 405 { 0x07, 0x005e, "Keypad6andRightArrow" }, 406 { 0x07, 0x005f, "Keypad7andHome" }, 407 { 0x07, 0x0060, "Keypad8andUpArrow" }, 408 { 0x07, 0x0061, "Keypad9andPageUp" }, 409 { 0x07, 0x0062, "Keypad0andInsert" }, 410 { 0x07, 0x0063, "KeypadPeriodandDelete" }, 411 { 0x07, 0x0064, "KeyboardNonUSBackslashandPipe" }, 412 { 0x07, 0x0065, "KeyboardApplication" }, 413 { 0x07, 0x0066, "KeyboardPower" }, 414 { 0x07, 0x0067, "KeypadEquals" }, 415 { 0x07, 0x0068, "KeyboardF13" }, 416 { 0x07, 0x0069, "KeyboardF14" }, 417 { 0x07, 0x006a, "KeyboardF15" }, 418 { 0x07, 0x006b, "KeyboardF16" }, 419 { 0x07, 0x006c, "KeyboardF17" }, 420 { 0x07, 0x006d, "KeyboardF18" }, 421 { 0x07, 0x006e, "KeyboardF19" }, 422 { 0x07, 0x006f, "KeyboardF20" }, 423 { 0x07, 0x0070, "KeyboardF21" }, 424 { 0x07, 0x0071, "KeyboardF22" }, 425 { 0x07, 0x0072, "KeyboardF23" }, 426 { 0x07, 0x0073, "KeyboardF24" }, 427 { 0x07, 0x0074, "KeyboardExecute" }, 428 { 0x07, 0x0075, "KeyboardHelp" }, 429 { 0x07, 0x0076, "KeyboardMenu" }, 430 { 0x07, 0x0077, "KeyboardSelect" }, 431 { 0x07, 0x0078, "KeyboardStop" }, 432 { 0x07, 0x0079, "KeyboardAgain" }, 433 { 0x07, 0x007a, "KeyboardUndo" }, 434 { 0x07, 0x007b, "KeyboardCut" }, 435 { 0x07, 0x007c, "KeyboardCopy" }, 436 { 0x07, 0x007d, "KeyboardPaste" }, 437 { 0x07, 0x007e, "KeyboardFind" }, 438 { 0x07, 0x007f, "KeyboardMute" }, 439 { 0x07, 0x0080, "KeyboardVolumeUp" }, 440 { 0x07, 0x0081, "KeyboardVolumeDown" }, 441 { 0x07, 0x0082, "KeyboardLockingCapsLock" }, 442 { 0x07, 0x0083, "KeyboardLockingNumLock" }, 443 { 0x07, 0x0084, "KeyboardLockingScrollLock" }, 444 { 0x07, 0x0085, "KeypadComma" }, 445 { 0x07, 0x0086, "KeypadEqualSign" }, 446 { 0x07, 0x0087, "KeyboardInternational1" }, 447 { 0x07, 0x0088, "KeyboardInternational2" }, 448 { 0x07, 0x0089, "KeyboardInternational3" }, 449 { 0x07, 0x008a, "KeyboardInternational4" }, 450 { 0x07, 0x008b, "KeyboardInternational5" }, 451 { 0x07, 0x008c, "KeyboardInternational6" }, 452 { 0x07, 0x008d, "KeyboardInternational7" }, 453 { 0x07, 0x008e, "KeyboardInternational8" }, 454 { 0x07, 0x008f, "KeyboardInternational9" }, 455 { 0x07, 0x0090, "KeyboardLANG1" }, 456 { 0x07, 0x0091, "KeyboardLANG2" }, 457 { 0x07, 0x0092, "KeyboardLANG3" }, 458 { 0x07, 0x0093, "KeyboardLANG4" }, 459 { 0x07, 0x0094, "KeyboardLANG5" }, 460 { 0x07, 0x0095, "KeyboardLANG6" }, 461 { 0x07, 0x0096, "KeyboardLANG7" }, 462 { 0x07, 0x0097, "KeyboardLANG8" }, 463 { 0x07, 0x0098, "KeyboardLANG9" }, 464 { 0x07, 0x0099, "KeyboardAlternateErase" }, 465 { 0x07, 0x009a, "KeyboardSysReqAttention" }, 466 { 0x07, 0x009b, "KeyboardCancel" }, 467 { 0x07, 0x009c, "KeyboardClear" }, 468 { 0x07, 0x009d, "KeyboardPrior" }, 469 { 0x07, 0x009e, "KeyboardReturn" }, 470 { 0x07, 0x009f, "KeyboardSeparator" }, 471 { 0x07, 0x00a0, "KeyboardOut" }, 472 { 0x07, 0x00a1, "KeyboardOper" }, 473 { 0x07, 0x00a2, "KeyboardClearAgain" }, 474 { 0x07, 0x00a3, "KeyboardCrSelProps" }, 475 { 0x07, 0x00a4, "KeyboardExSel" }, 476 { 0x07, 0x00b0, "KeypadDouble0" }, 477 { 0x07, 0x00b1, "KeypadTriple0" }, 478 { 0x07, 0x00b2, "ThousandsSeparator" }, 479 { 0x07, 0x00b3, "DecimalSeparator" }, 480 { 0x07, 0x00b4, "CurrencyUnit" }, 481 { 0x07, 0x00b5, "CurrencySubunit" }, 482 { 0x07, 0x00b6, "KeypadLeftBracket" }, 483 { 0x07, 0x00b7, "KeypadRightBracket" }, 484 { 0x07, 0x00b8, "KeypadLeftBrace" }, 485 { 0x07, 0x00b9, "KeypadRightBrace" }, 486 { 0x07, 0x00ba, "KeypadTab" }, 487 { 0x07, 0x00bb, "KeypadBackspace" }, 488 { 0x07, 0x00bc, "KeypadA" }, 489 { 0x07, 0x00bd, "KeypadB" }, 490 { 0x07, 0x00be, "KeypadC" }, 491 { 0x07, 0x00bf, "KeypadD" }, 492 { 0x07, 0x00c0, "KeypadE" }, 493 { 0x07, 0x00c1, "KeypadF" }, 494 { 0x07, 0x00c2, "KeypadXOR" }, 495 { 0x07, 0x00c3, "KeypadCaret" }, 496 { 0x07, 0x00c4, "KeypadPercentage" }, 497 { 0x07, 0x00c5, "KeypadLess" }, 498 { 0x07, 0x00c6, "KeypadGreater" }, 499 { 0x07, 0x00c7, "KeypadAmpersand" }, 500 { 0x07, 0x00c8, "KeypadDoubleAmpersand" }, 501 { 0x07, 0x00c9, "KeypadBar" }, 502 { 0x07, 0x00ca, "KeypadDoubleBar" }, 503 { 0x07, 0x00cb, "KeypadColon" }, 504 { 0x07, 0x00cc, "KeypadHash" }, 505 { 0x07, 0x00cd, "KeypadSpace" }, 506 { 0x07, 0x00ce, "KeypadAt" }, 507 { 0x07, 0x00cf, "KeypadBang" }, 508 { 0x07, 0x00d0, "KeypadMemoryStore" }, 509 { 0x07, 0x00d1, "KeypadMemoryRecall" }, 510 { 0x07, 0x00d2, "KeypadMemoryClear" }, 511 { 0x07, 0x00d3, "KeypadMemoryAdd" }, 512 { 0x07, 0x00d4, "KeypadMemorySubtract" }, 513 { 0x07, 0x00d5, "KeypadMemoryMultiply" }, 514 { 0x07, 0x00d6, "KeypadMemoryDivide" }, 515 { 0x07, 0x00d7, "KeypadPlusMinus" }, 516 { 0x07, 0x00d8, "KeypadClear" }, 517 { 0x07, 0x00d9, "KeypadClearEntry" }, 518 { 0x07, 0x00da, "KeypadBinary" }, 519 { 0x07, 0x00db, "KeypadOctal" }, 520 { 0x07, 0x00dc, "KeypadDecimal" }, 521 { 0x07, 0x00dd, "KeypadHexadecimal" }, 522 { 0x07, 0x00e0, "KeyboardLeftControl" }, 523 { 0x07, 0x00e1, "KeyboardLeftShift" }, 524 { 0x07, 0x00e2, "KeyboardLeftAlt" }, 525 { 0x07, 0x00e3, "KeyboardLeftGUI" }, 526 { 0x07, 0x00e4, "KeyboardRightControl" }, 527 { 0x07, 0x00e5, "KeyboardRightShift" }, 528 { 0x07, 0x00e6, "KeyboardRightAlt" }, 529 { 0x07, 0x00e7, "KeyboardRightGUI" }, 530 { 0x08, 0, "LED" }, 531 { 0x08, 0x0001, "NumLock" }, 532 { 0x08, 0x0002, "CapsLock" }, 533 { 0x08, 0x0003, "ScrollLock" }, 534 { 0x08, 0x0004, "Compose" }, 535 { 0x08, 0x0005, "Kana" }, 536 { 0x08, 0x0006, "Power" }, 537 { 0x08, 0x0007, "Shift" }, 538 { 0x08, 0x0008, "DoNotDisturb" }, 539 { 0x08, 0x0009, "Mute" }, 540 { 0x08, 0x000a, "ToneEnable" }, 541 { 0x08, 0x000b, "HighCutFilter" }, 542 { 0x08, 0x000c, "LowCutFilter" }, 543 { 0x08, 0x000d, "EqualizerEnable" }, 544 { 0x08, 0x000e, "SoundFieldOn" }, 545 { 0x08, 0x000f, "SurroundOn" }, 546 { 0x08, 0x0010, "Repeat" }, 547 { 0x08, 0x0011, "Stereo" }, 548 { 0x08, 0x0012, "SamplingRateDetect" }, 549 { 0x08, 0x0013, "Spinning" }, 550 { 0x08, 0x0014, "CAV" }, 551 { 0x08, 0x0015, "CLV" }, 552 { 0x08, 0x0016, "RecordingFormatDetect" }, 553 { 0x08, 0x0017, "OffHook" }, 554 { 0x08, 0x0018, "Ring" }, 555 { 0x08, 0x0019, "MessageWaiting" }, 556 { 0x08, 0x001a, "DataMode" }, 557 { 0x08, 0x001b, "BatteryOperation" }, 558 { 0x08, 0x001c, "BatteryOK" }, 559 { 0x08, 0x001d, "BatteryLow" }, 560 { 0x08, 0x001e, "Speaker" }, 561 { 0x08, 0x001f, "Headset" }, 562 { 0x08, 0x0020, "Hold" }, 563 { 0x08, 0x0021, "Microphone" }, 564 { 0x08, 0x0022, "Coverage" }, 565 { 0x08, 0x0023, "NightMode" }, 566 { 0x08, 0x0024, "SendCalls" }, 567 { 0x08, 0x0025, "CallPickup" }, 568 { 0x08, 0x0026, "Conference" }, 569 { 0x08, 0x0027, "Standby" }, 570 { 0x08, 0x0028, "CameraOn" }, 571 { 0x08, 0x0029, "CameraOff" }, 572 { 0x08, 0x002a, "OnLine" }, 573 { 0x08, 0x002b, "OffLine" }, 574 { 0x08, 0x002c, "Busy" }, 575 { 0x08, 0x002d, "Ready" }, 576 { 0x08, 0x002e, "PaperOut" }, 577 { 0x08, 0x002f, "PaperJam" }, 578 { 0x08, 0x0030, "Remote" }, 579 { 0x08, 0x0031, "Forward" }, 580 { 0x08, 0x0032, "Reverse" }, 581 { 0x08, 0x0033, "Stop" }, 582 { 0x08, 0x0034, "Rewind" }, 583 { 0x08, 0x0035, "FastForward" }, 584 { 0x08, 0x0036, "Play" }, 585 { 0x08, 0x0037, "Pause" }, 586 { 0x08, 0x0038, "Record" }, 587 { 0x08, 0x0039, "Error" }, 588 { 0x08, 0x003a, "UsageSelectedIndicator" }, 589 { 0x08, 0x003b, "UsageInUseIndicator" }, 590 { 0x08, 0x003c, "UsageMultiModeIndicator" }, 591 { 0x08, 0x003d, "IndicatorOn" }, 592 { 0x08, 0x003e, "IndicatorFlash" }, 593 { 0x08, 0x003f, "IndicatorSlowBlink" }, 594 { 0x08, 0x0040, "IndicatorFastBlink" }, 595 { 0x08, 0x0041, "IndicatorOff" }, 596 { 0x08, 0x0042, "FlashOnTime" }, 597 { 0x08, 0x0043, "SlowBlinkOnTime" }, 598 { 0x08, 0x0044, "SlowBlinkOffTime" }, 599 { 0x08, 0x0045, "FastBlinkOnTime" }, 600 { 0x08, 0x0046, "FastBlinkOffTime" }, 601 { 0x08, 0x0047, "UsageIndicatorColor" }, 602 { 0x08, 0x0048, "IndicatorRed" }, 603 { 0x08, 0x0049, "IndicatorGreen" }, 604 { 0x08, 0x004a, "IndicatorAmber" }, 605 { 0x08, 0x004b, "GenericIndicator" }, 606 { 0x08, 0x004c, "SystemSuspend" }, 607 { 0x08, 0x004d, "ExternalPowerConnected" }, 608 { 0x08, 0x004e, "IndicatorBlue" }, 609 { 0x08, 0x004f, "IndicatorOrange" }, 610 { 0x08, 0x0050, "GoodStatus" }, 611 { 0x08, 0x0051, "WarningStatus" }, 612 { 0x08, 0x0052, "RGBLED" }, 613 { 0x08, 0x0053, "RedLEDChannel" }, 614 { 0x08, 0x0054, "BlueLEDChannel" }, 615 { 0x08, 0x0055, "GreenLEDChannel" }, 616 { 0x08, 0x0056, "LEDIntensity" }, 617 { 0x08, 0x0057, "SystemMicrophoneMute" }, 618 { 0x08, 0x0060, "PlayerIndicator" }, 619 { 0x08, 0x0061, "Player1" }, 620 { 0x08, 0x0062, "Player2" }, 621 { 0x08, 0x0063, "Player3" }, 622 { 0x08, 0x0064, "Player4" }, 623 { 0x08, 0x0065, "Player5" }, 624 { 0x08, 0x0066, "Player6" }, 625 { 0x08, 0x0067, "Player7" }, 626 { 0x08, 0x0068, "Player8" }, 627 { 0x09, 0, "Button" }, 628 { 0x0a, 0, "Ordinal" }, 629 { 0x0b, 0, "TelephonyDevice" }, 630 { 0x0b, 0x0001, "Phone" }, 631 { 0x0b, 0x0002, "AnsweringMachine" }, 632 { 0x0b, 0x0003, "MessageControls" }, 633 { 0x0b, 0x0004, "Handset" }, 634 { 0x0b, 0x0005, "Headset" }, 635 { 0x0b, 0x0006, "TelephonyKeyPad" }, 636 { 0x0b, 0x0007, "ProgrammableButton" }, 637 { 0x0b, 0x0020, "HookSwitch" }, 638 { 0x0b, 0x0021, "Flash" }, 639 { 0x0b, 0x0022, "Feature" }, 640 { 0x0b, 0x0023, "Hold" }, 641 { 0x0b, 0x0024, "Redial" }, 642 { 0x0b, 0x0025, "Transfer" }, 643 { 0x0b, 0x0026, "Drop" }, 644 { 0x0b, 0x0027, "Park" }, 645 { 0x0b, 0x0028, "ForwardCalls" }, 646 { 0x0b, 0x0029, "AlternateFunction" }, 647 { 0x0b, 0x002a, "Line" }, 648 { 0x0b, 0x002b, "SpeakerPhone" }, 649 { 0x0b, 0x002c, "Conference" }, 650 { 0x0b, 0x002d, "RingEnable" }, 651 { 0x0b, 0x002e, "RingSelect" }, 652 { 0x0b, 0x002f, "PhoneMute" }, 653 { 0x0b, 0x0030, "CallerID" }, 654 { 0x0b, 0x0031, "Send" }, 655 { 0x0b, 0x0050, "SpeedDial" }, 656 { 0x0b, 0x0051, "StoreNumber" }, 657 { 0x0b, 0x0052, "RecallNumber" }, 658 { 0x0b, 0x0053, "PhoneDirectory" }, 659 { 0x0b, 0x0070, "VoiceMail" }, 660 { 0x0b, 0x0071, "ScreenCalls" }, 661 { 0x0b, 0x0072, "DoNotDisturb" }, 662 { 0x0b, 0x0073, "Message" }, 663 { 0x0b, 0x0074, "AnswerOnOff" }, 664 { 0x0b, 0x0090, "InsideDialTone" }, 665 { 0x0b, 0x0091, "OutsideDialTone" }, 666 { 0x0b, 0x0092, "InsideRingTone" }, 667 { 0x0b, 0x0093, "OutsideRingTone" }, 668 { 0x0b, 0x0094, "PriorityRingTone" }, 669 { 0x0b, 0x0095, "InsideRingback" }, 670 { 0x0b, 0x0096, "PriorityRingback" }, 671 { 0x0b, 0x0097, "LineBusyTone" }, 672 { 0x0b, 0x0098, "ReorderTone" }, 673 { 0x0b, 0x0099, "CallWaitingTone" }, 674 { 0x0b, 0x009a, "ConfirmationTone1" }, 675 { 0x0b, 0x009b, "ConfirmationTone2" }, 676 { 0x0b, 0x009c, "TonesOff" }, 677 { 0x0b, 0x009d, "OutsideRingback" }, 678 { 0x0b, 0x009e, "Ringer" }, 679 { 0x0b, 0x00b0, "PhoneKey0" }, 680 { 0x0b, 0x00b1, "PhoneKey1" }, 681 { 0x0b, 0x00b2, "PhoneKey2" }, 682 { 0x0b, 0x00b3, "PhoneKey3" }, 683 { 0x0b, 0x00b4, "PhoneKey4" }, 684 { 0x0b, 0x00b5, "PhoneKey5" }, 685 { 0x0b, 0x00b6, "PhoneKey6" }, 686 { 0x0b, 0x00b7, "PhoneKey7" }, 687 { 0x0b, 0x00b8, "PhoneKey8" }, 688 { 0x0b, 0x00b9, "PhoneKey9" }, 689 { 0x0b, 0x00ba, "PhoneKeyStar" }, 690 { 0x0b, 0x00bb, "PhoneKeyPound" }, 691 { 0x0b, 0x00bc, "PhoneKeyA" }, 692 { 0x0b, 0x00bd, "PhoneKeyB" }, 693 { 0x0b, 0x00be, "PhoneKeyC" }, 694 { 0x0b, 0x00bf, "PhoneKeyD" }, 695 { 0x0b, 0x00c0, "PhoneCallHistoryKey" }, 696 { 0x0b, 0x00c1, "PhoneCallerIDKey" }, 697 { 0x0b, 0x00c2, "PhoneSettingsKey" }, 698 { 0x0b, 0x00f0, "HostControl" }, 699 { 0x0b, 0x00f1, "HostAvailable" }, 700 { 0x0b, 0x00f2, "HostCallActive" }, 701 { 0x0b, 0x00f3, "ActivateHandsetAudio" }, 702 { 0x0b, 0x00f4, "RingType" }, 703 { 0x0b, 0x00f5, "RedialablePhoneNumber" }, 704 { 0x0b, 0x00f8, "StopRingTone" }, 705 { 0x0b, 0x00f9, "PSTNRingTone" }, 706 { 0x0b, 0x00fa, "HostRingTone" }, 707 { 0x0b, 0x00fb, "AlertSoundError" }, 708 { 0x0b, 0x00fc, "AlertSoundConfirm" }, 709 { 0x0b, 0x00fd, "AlertSoundNotification" }, 710 { 0x0b, 0x00fe, "SilentRing" }, 711 { 0x0b, 0x0108, "EmailMessageWaiting" }, 712 { 0x0b, 0x0109, "VoicemailMessageWaiting" }, 713 { 0x0b, 0x010a, "HostHold" }, 714 { 0x0b, 0x0110, "IncomingCallHistoryCount" }, 715 { 0x0b, 0x0111, "OutgoingCallHistoryCount" }, 716 { 0x0b, 0x0112, "IncomingCallHistory" }, 717 { 0x0b, 0x0113, "OutgoingCallHistory" }, 718 { 0x0b, 0x0114, "PhoneLocale" }, 719 { 0x0b, 0x0140, "PhoneTimeSecond" }, 720 { 0x0b, 0x0141, "PhoneTimeMinute" }, 721 { 0x0b, 0x0142, "PhoneTimeHour" }, 722 { 0x0b, 0x0143, "PhoneDateDay" }, 723 { 0x0b, 0x0144, "PhoneDateMonth" }, 724 { 0x0b, 0x0145, "PhoneDateYear" }, 725 { 0x0b, 0x0146, "HandsetNickname" }, 726 { 0x0b, 0x0147, "AddressBookID" }, 727 { 0x0b, 0x014a, "CallDuration" }, 728 { 0x0b, 0x014b, "DualModePhone" }, 729 { 0x0c, 0, "Consumer" }, 730 { 0x0c, 0x0001, "ConsumerControl" }, 731 { 0x0c, 0x0002, "NumericKeyPad" }, 732 { 0x0c, 0x0003, "ProgrammableButtons" }, 733 { 0x0c, 0x0004, "Microphone" }, 734 { 0x0c, 0x0005, "Headphone" }, 735 { 0x0c, 0x0006, "GraphicEqualizer" }, 736 { 0x0c, 0x0020, "10" }, 737 { 0x0c, 0x0021, "100" }, 738 { 0x0c, 0x0022, "AMPM" }, 739 { 0x0c, 0x0030, "Power" }, 740 { 0x0c, 0x0031, "Reset" }, 741 { 0x0c, 0x0032, "Sleep" }, 742 { 0x0c, 0x0033, "SleepAfter" }, 743 { 0x0c, 0x0034, "SleepMode" }, 744 { 0x0c, 0x0035, "Illumination" }, 745 { 0x0c, 0x0036, "FunctionButtons" }, 746 { 0x0c, 0x0040, "Menu" }, 747 { 0x0c, 0x0041, "MenuPick" }, 748 { 0x0c, 0x0042, "MenuUp" }, 749 { 0x0c, 0x0043, "MenuDown" }, 750 { 0x0c, 0x0044, "MenuLeft" }, 751 { 0x0c, 0x0045, "MenuRight" }, 752 { 0x0c, 0x0046, "MenuEscape" }, 753 { 0x0c, 0x0047, "MenuValueIncrease" }, 754 { 0x0c, 0x0048, "MenuValueDecrease" }, 755 { 0x0c, 0x0060, "DataOnScreen" }, 756 { 0x0c, 0x0061, "ClosedCaption" }, 757 { 0x0c, 0x0062, "ClosedCaptionSelect" }, 758 { 0x0c, 0x0063, "VCRTV" }, 759 { 0x0c, 0x0064, "BroadcastMode" }, 760 { 0x0c, 0x0065, "Snapshot" }, 761 { 0x0c, 0x0066, "Still" }, 762 { 0x0c, 0x0067, "PictureinPictureToggle" }, 763 { 0x0c, 0x0068, "PictureinPictureSwap" }, 764 { 0x0c, 0x0069, "RedMenuButton" }, 765 { 0x0c, 0x006a, "GreenMenuButton" }, 766 { 0x0c, 0x006b, "BlueMenuButton" }, 767 { 0x0c, 0x006c, "YellowMenuButton" }, 768 { 0x0c, 0x006d, "Aspect" }, 769 { 0x0c, 0x006e, "3DModeSelect" }, 770 { 0x0c, 0x006f, "DisplayBrightnessIncrement" }, 771 { 0x0c, 0x0070, "DisplayBrightnessDecrement" }, 772 { 0x0c, 0x0071, "DisplayBrightness" }, 773 { 0x0c, 0x0072, "DisplayBacklightToggle" }, 774 { 0x0c, 0x0073, "DisplaySetBrightnesstoMinimum" }, 775 { 0x0c, 0x0074, "DisplaySetBrightnesstoMaximum" }, 776 { 0x0c, 0x0075, "DisplaySetAutoBrightness" }, 777 { 0x0c, 0x0076, "CameraAccessEnabled" }, 778 { 0x0c, 0x0077, "CameraAccessDisabled" }, 779 { 0x0c, 0x0078, "CameraAccessToggle" }, 780 { 0x0c, 0x0079, "KeyboardBrightnessIncrement" }, 781 { 0x0c, 0x007a, "KeyboardBrightnessDecrement" }, 782 { 0x0c, 0x007b, "KeyboardBacklightSetLevel" }, 783 { 0x0c, 0x007c, "KeyboardBacklightOOC" }, 784 { 0x0c, 0x007d, "KeyboardBacklightSetMinimum" }, 785 { 0x0c, 0x007e, "KeyboardBacklightSetMaximum" }, 786 { 0x0c, 0x007f, "KeyboardBacklightAuto" }, 787 { 0x0c, 0x0080, "Selection" }, 788 { 0x0c, 0x0081, "AssignSelection" }, 789 { 0x0c, 0x0082, "ModeStep" }, 790 { 0x0c, 0x0083, "RecallLast" }, 791 { 0x0c, 0x0084, "EnterChannel" }, 792 { 0x0c, 0x0085, "OrderMovie" }, 793 { 0x0c, 0x0086, "Channel" }, 794 { 0x0c, 0x0087, "MediaSelection" }, 795 { 0x0c, 0x0088, "MediaSelectComputer" }, 796 { 0x0c, 0x0089, "MediaSelectTV" }, 797 { 0x0c, 0x008a, "MediaSelectWWW" }, 798 { 0x0c, 0x008b, "MediaSelectDVD" }, 799 { 0x0c, 0x008c, "MediaSelectTelephone" }, 800 { 0x0c, 0x008d, "MediaSelectProgramGuide" }, 801 { 0x0c, 0x008e, "MediaSelectVideoPhone" }, 802 { 0x0c, 0x008f, "MediaSelectGames" }, 803 { 0x0c, 0x0090, "MediaSelectMessages" }, 804 { 0x0c, 0x0091, "MediaSelectCD" }, 805 { 0x0c, 0x0092, "MediaSelectVCR" }, 806 { 0x0c, 0x0093, "MediaSelectTuner" }, 807 { 0x0c, 0x0094, "Quit" }, 808 { 0x0c, 0x0095, "Help" }, 809 { 0x0c, 0x0096, "MediaSelectTape" }, 810 { 0x0c, 0x0097, "MediaSelectCable" }, 811 { 0x0c, 0x0098, "MediaSelectSatellite" }, 812 { 0x0c, 0x0099, "MediaSelectSecurity" }, 813 { 0x0c, 0x009a, "MediaSelectHome" }, 814 { 0x0c, 0x009b, "MediaSelectCall" }, 815 { 0x0c, 0x009c, "ChannelIncrement" }, 816 { 0x0c, 0x009d, "ChannelDecrement" }, 817 { 0x0c, 0x009e, "MediaSelectSAP" }, 818 { 0x0c, 0x00a0, "VCRPlus" }, 819 { 0x0c, 0x00a1, "Once" }, 820 { 0x0c, 0x00a2, "Daily" }, 821 { 0x0c, 0x00a3, "Weekly" }, 822 { 0x0c, 0x00a4, "Monthly" }, 823 { 0x0c, 0x00b0, "Play" }, 824 { 0x0c, 0x00b1, "Pause" }, 825 { 0x0c, 0x00b2, "Record" }, 826 { 0x0c, 0x00b3, "FastForward" }, 827 { 0x0c, 0x00b4, "Rewind" }, 828 { 0x0c, 0x00b5, "ScanNextTrack" }, 829 { 0x0c, 0x00b6, "ScanPreviousTrack" }, 830 { 0x0c, 0x00b7, "Stop" }, 831 { 0x0c, 0x00b8, "Eject" }, 832 { 0x0c, 0x00b9, "RandomPlay" }, 833 { 0x0c, 0x00ba, "SelectDisc" }, 834 { 0x0c, 0x00bb, "EnterDisc" }, 835 { 0x0c, 0x00bc, "Repeat" }, 836 { 0x0c, 0x00bd, "Tracking" }, 837 { 0x0c, 0x00be, "TrackNormal" }, 838 { 0x0c, 0x00bf, "SlowTracking" }, 839 { 0x0c, 0x00c0, "FrameForward" }, 840 { 0x0c, 0x00c1, "FrameBack" }, 841 { 0x0c, 0x00c2, "Mark" }, 842 { 0x0c, 0x00c3, "ClearMark" }, 843 { 0x0c, 0x00c4, "RepeatFromMark" }, 844 { 0x0c, 0x00c5, "ReturnToMark" }, 845 { 0x0c, 0x00c6, "SearchMarkForward" }, 846 { 0x0c, 0x00c7, "SearchMarkBackwards" }, 847 { 0x0c, 0x00c8, "CounterReset" }, 848 { 0x0c, 0x00c9, "ShowCounter" }, 849 { 0x0c, 0x00ca, "TrackingIncrement" }, 850 { 0x0c, 0x00cb, "TrackingDecrement" }, 851 { 0x0c, 0x00cc, "StopEject" }, 852 { 0x0c, 0x00cd, "PlayPause" }, 853 { 0x0c, 0x00ce, "PlaySkip" }, 854 { 0x0c, 0x00cf, "VoiceCommand" }, 855 { 0x0c, 0x00d0, "InvokeCaptureInterface" }, 856 { 0x0c, 0x00d1, "StartorStopGameRecording" }, 857 { 0x0c, 0x00d2, "HistoricalGameCapture" }, 858 { 0x0c, 0x00d3, "CaptureGameScreenshot" }, 859 { 0x0c, 0x00d4, "ShoworHideRecordingIndicator" }, 860 { 0x0c, 0x00d5, "StartorStopMicrophoneCapture" }, 861 { 0x0c, 0x00d6, "StartorStopCameraCapture" }, 862 { 0x0c, 0x00d7, "StartorStopGameBroadcast" }, 863 { 0x0c, 0x00d8, "StartorStopVoiceDictationSession" }, 864 { 0x0c, 0x00d9, "InvokeDismissEmojiPicker" }, 865 { 0x0c, 0x00e0, "Volume" }, 866 { 0x0c, 0x00e1, "Balance" }, 867 { 0x0c, 0x00e2, "Mute" }, 868 { 0x0c, 0x00e3, "Bass" }, 869 { 0x0c, 0x00e4, "Treble" }, 870 { 0x0c, 0x00e5, "BassBoost" }, 871 { 0x0c, 0x00e6, "SurroundMode" }, 872 { 0x0c, 0x00e7, "Loudness" }, 873 { 0x0c, 0x00e8, "MPX" }, 874 { 0x0c, 0x00e9, "VolumeIncrement" }, 875 { 0x0c, 0x00ea, "VolumeDecrement" }, 876 { 0x0c, 0x00f0, "SpeedSelect" }, 877 { 0x0c, 0x00f1, "PlaybackSpeed" }, 878 { 0x0c, 0x00f2, "StandardPlay" }, 879 { 0x0c, 0x00f3, "LongPlay" }, 880 { 0x0c, 0x00f4, "ExtendedPlay" }, 881 { 0x0c, 0x00f5, "Slow" }, 882 { 0x0c, 0x0100, "FanEnable" }, 883 { 0x0c, 0x0101, "FanSpeed" }, 884 { 0x0c, 0x0102, "LightEnable" }, 885 { 0x0c, 0x0103, "LightIlluminationLevel" }, 886 { 0x0c, 0x0104, "ClimateControlEnable" }, 887 { 0x0c, 0x0105, "RoomTemperature" }, 888 { 0x0c, 0x0106, "SecurityEnable" }, 889 { 0x0c, 0x0107, "FireAlarm" }, 890 { 0x0c, 0x0108, "PoliceAlarm" }, 891 { 0x0c, 0x0109, "Proximity" }, 892 { 0x0c, 0x010a, "Motion" }, 893 { 0x0c, 0x010b, "DuressAlarm" }, 894 { 0x0c, 0x010c, "HoldupAlarm" }, 895 { 0x0c, 0x010d, "MedicalAlarm" }, 896 { 0x0c, 0x0150, "BalanceRight" }, 897 { 0x0c, 0x0151, "BalanceLeft" }, 898 { 0x0c, 0x0152, "BassIncrement" }, 899 { 0x0c, 0x0153, "BassDecrement" }, 900 { 0x0c, 0x0154, "TrebleIncrement" }, 901 { 0x0c, 0x0155, "TrebleDecrement" }, 902 { 0x0c, 0x0160, "SpeakerSystem" }, 903 { 0x0c, 0x0161, "ChannelLeft" }, 904 { 0x0c, 0x0162, "ChannelRight" }, 905 { 0x0c, 0x0163, "ChannelCenter" }, 906 { 0x0c, 0x0164, "ChannelFront" }, 907 { 0x0c, 0x0165, "ChannelCenterFront" }, 908 { 0x0c, 0x0166, "ChannelSide" }, 909 { 0x0c, 0x0167, "ChannelSurround" }, 910 { 0x0c, 0x0168, "ChannelLowFrequencyEnhancement" }, 911 { 0x0c, 0x0169, "ChannelTop" }, 912 { 0x0c, 0x016a, "ChannelUnknown" }, 913 { 0x0c, 0x0170, "Subchannel" }, 914 { 0x0c, 0x0171, "SubchannelIncrement" }, 915 { 0x0c, 0x0172, "SubchannelDecrement" }, 916 { 0x0c, 0x0173, "AlternateAudioIncrement" }, 917 { 0x0c, 0x0174, "AlternateAudioDecrement" }, 918 { 0x0c, 0x0180, "ApplicationLaunchButtons" }, 919 { 0x0c, 0x0181, "ALLaunchButtonConfigurationTool" }, 920 { 0x0c, 0x0182, "ALProgrammableButtonConfiguration" }, 921 { 0x0c, 0x0183, "ALConsumerControlConfiguration" }, 922 { 0x0c, 0x0184, "ALWordProcessor" }, 923 { 0x0c, 0x0185, "ALTextEditor" }, 924 { 0x0c, 0x0186, "ALSpreadsheet" }, 925 { 0x0c, 0x0187, "ALGraphicsEditor" }, 926 { 0x0c, 0x0188, "ALPresentationApp" }, 927 { 0x0c, 0x0189, "ALDatabaseApp" }, 928 { 0x0c, 0x018a, "ALEmailReader" }, 929 { 0x0c, 0x018b, "ALNewsreader" }, 930 { 0x0c, 0x018c, "ALVoicemail" }, 931 { 0x0c, 0x018d, "ALContactsAddressBook" }, 932 { 0x0c, 0x018e, "ALCalendarSchedule" }, 933 { 0x0c, 0x018f, "ALTaskProjectManager" }, 934 { 0x0c, 0x0190, "ALLogJournalTimecard" }, 935 { 0x0c, 0x0191, "ALCheckbookFinance" }, 936 { 0x0c, 0x0192, "ALCalculator" }, 937 { 0x0c, 0x0193, "ALAVCapturePlayback" }, 938 { 0x0c, 0x0194, "ALLocalMachineBrowser" }, 939 { 0x0c, 0x0195, "ALLANWANBrowser" }, 940 { 0x0c, 0x0196, "ALInternetBrowser" }, 941 { 0x0c, 0x0197, "ALRemoteNetworkingISPConnect" }, 942 { 0x0c, 0x0198, "ALNetworkConference" }, 943 { 0x0c, 0x0199, "ALNetworkChat" }, 944 { 0x0c, 0x019a, "ALTelephonyDialer" }, 945 { 0x0c, 0x019b, "ALLogon" }, 946 { 0x0c, 0x019c, "ALLogoff" }, 947 { 0x0c, 0x019d, "ALLogonLogoff" }, 948 { 0x0c, 0x019e, "ALTerminalLockScreensaver" }, 949 { 0x0c, 0x019f, "ALControlPanel" }, 950 { 0x0c, 0x01a0, "ALCommandLineProcessorRun" }, 951 { 0x0c, 0x01a1, "ALProcessTaskManager" }, 952 { 0x0c, 0x01a2, "ALSelectTaskApplication" }, 953 { 0x0c, 0x01a3, "ALNextTaskApplication" }, 954 { 0x0c, 0x01a4, "ALPreviousTaskApplication" }, 955 { 0x0c, 0x01a5, "ALPreemptiveHaltTaskApplication" }, 956 { 0x0c, 0x01a6, "ALIntegratedHelpCenter" }, 957 { 0x0c, 0x01a7, "ALDocuments" }, 958 { 0x0c, 0x01a8, "ALThesaurus" }, 959 { 0x0c, 0x01a9, "ALDictionary" }, 960 { 0x0c, 0x01aa, "ALDesktop" }, 961 { 0x0c, 0x01ab, "ALSpellCheck" }, 962 { 0x0c, 0x01ac, "ALGrammarCheck" }, 963 { 0x0c, 0x01ad, "ALWirelessStatus" }, 964 { 0x0c, 0x01ae, "ALKeyboardLayout" }, 965 { 0x0c, 0x01af, "ALVirusProtection" }, 966 { 0x0c, 0x01b0, "ALEncryption" }, 967 { 0x0c, 0x01b1, "ALScreenSaver" }, 968 { 0x0c, 0x01b2, "ALAlarms" }, 969 { 0x0c, 0x01b3, "ALClock" }, 970 { 0x0c, 0x01b4, "ALFileBrowser" }, 971 { 0x0c, 0x01b5, "ALPowerStatus" }, 972 { 0x0c, 0x01b6, "ALImageBrowser" }, 973 { 0x0c, 0x01b7, "ALAudioBrowser" }, 974 { 0x0c, 0x01b8, "ALMovieBrowser" }, 975 { 0x0c, 0x01b9, "ALDigitalRightsManager" }, 976 { 0x0c, 0x01ba, "ALDigitalWallet" }, 977 { 0x0c, 0x01bc, "ALInstantMessaging" }, 978 { 0x0c, 0x01bd, "ALOEMFeaturesTipsTutorialBrowser" }, 979 { 0x0c, 0x01be, "ALOEMHelp" }, 980 { 0x0c, 0x01bf, "ALOnlineCommunity" }, 981 { 0x0c, 0x01c0, "ALEntertainmentContentBrowser" }, 982 { 0x0c, 0x01c1, "ALOnlineShoppingBrowser" }, 983 { 0x0c, 0x01c2, "ALSmartCardInformationHelp" }, 984 { 0x0c, 0x01c3, "ALMarketMonitorFinanceBrowser" }, 985 { 0x0c, 0x01c4, "ALCustomizedCorporateNewsBrowser" }, 986 { 0x0c, 0x01c5, "ALOnlineActivityBrowser" }, 987 { 0x0c, 0x01c6, "ALResearchSearchBrowser" }, 988 { 0x0c, 0x01c7, "ALAudioPlayer" }, 989 { 0x0c, 0x01c8, "ALMessageStatus" }, 990 { 0x0c, 0x01c9, "ALContactSync" }, 991 { 0x0c, 0x01ca, "ALNavigation" }, 992 { 0x0c, 0x01cb, "ALContextawareDesktopAssistant" }, 993 { 0x0c, 0x0200, "GenericGUIApplicationControls" }, 994 { 0x0c, 0x0201, "ACNew" }, 995 { 0x0c, 0x0202, "ACOpen" }, 996 { 0x0c, 0x0203, "ACClose" }, 997 { 0x0c, 0x0204, "ACExit" }, 998 { 0x0c, 0x0205, "ACMaximize" }, 999 { 0x0c, 0x0206, "ACMinimize" }, 1000 { 0x0c, 0x0207, "ACSave" }, 1001 { 0x0c, 0x0208, "ACPrint" }, 1002 { 0x0c, 0x0209, "ACProperties" }, 1003 { 0x0c, 0x021a, "ACUndo" }, 1004 { 0x0c, 0x021b, "ACCopy" }, 1005 { 0x0c, 0x021c, "ACCut" }, 1006 { 0x0c, 0x021d, "ACPaste" }, 1007 { 0x0c, 0x021e, "ACSelectAll" }, 1008 { 0x0c, 0x021f, "ACFind" }, 1009 { 0x0c, 0x0220, "ACFindandReplace" }, 1010 { 0x0c, 0x0221, "ACSearch" }, 1011 { 0x0c, 0x0222, "ACGoTo" }, 1012 { 0x0c, 0x0223, "ACHome" }, 1013 { 0x0c, 0x0224, "ACBack" }, 1014 { 0x0c, 0x0225, "ACForward" }, 1015 { 0x0c, 0x0226, "ACStop" }, 1016 { 0x0c, 0x0227, "ACRefresh" }, 1017 { 0x0c, 0x0228, "ACPreviousLink" }, 1018 { 0x0c, 0x0229, "ACNextLink" }, 1019 { 0x0c, 0x022a, "ACBookmarks" }, 1020 { 0x0c, 0x022b, "ACHistory" }, 1021 { 0x0c, 0x022c, "ACSubscriptions" }, 1022 { 0x0c, 0x022d, "ACZoomIn" }, 1023 { 0x0c, 0x022e, "ACZoomOut" }, 1024 { 0x0c, 0x022f, "ACZoom" }, 1025 { 0x0c, 0x0230, "ACFullScreenView" }, 1026 { 0x0c, 0x0231, "ACNormalView" }, 1027 { 0x0c, 0x0232, "ACViewToggle" }, 1028 { 0x0c, 0x0233, "ACScrollUp" }, 1029 { 0x0c, 0x0234, "ACScrollDown" }, 1030 { 0x0c, 0x0235, "ACScroll" }, 1031 { 0x0c, 0x0236, "ACPanLeft" }, 1032 { 0x0c, 0x0237, "ACPanRight" }, 1033 { 0x0c, 0x0238, "ACPan" }, 1034 { 0x0c, 0x0239, "ACNewWindow" }, 1035 { 0x0c, 0x023a, "ACTileHorizontally" }, 1036 { 0x0c, 0x023b, "ACTileVertically" }, 1037 { 0x0c, 0x023c, "ACFormat" }, 1038 { 0x0c, 0x023d, "ACEdit" }, 1039 { 0x0c, 0x023e, "ACBold" }, 1040 { 0x0c, 0x023f, "ACItalics" }, 1041 { 0x0c, 0x0240, "ACUnderline" }, 1042 { 0x0c, 0x0241, "ACStrikethrough" }, 1043 { 0x0c, 0x0242, "ACSubscript" }, 1044 { 0x0c, 0x0243, "ACSuperscript" }, 1045 { 0x0c, 0x0244, "ACAllCaps" }, 1046 { 0x0c, 0x0245, "ACRotate" }, 1047 { 0x0c, 0x0246, "ACResize" }, 1048 { 0x0c, 0x0247, "ACFlipHorizontal" }, 1049 { 0x0c, 0x0248, "ACFlipVertical" }, 1050 { 0x0c, 0x0249, "ACMirrorHorizontal" }, 1051 { 0x0c, 0x024a, "ACMirrorVertical" }, 1052 { 0x0c, 0x024b, "ACFontSelect" }, 1053 { 0x0c, 0x024c, "ACFontColor" }, 1054 { 0x0c, 0x024d, "ACFontSize" }, 1055 { 0x0c, 0x024e, "ACJustifyLeft" }, 1056 { 0x0c, 0x024f, "ACJustifyCenterH" }, 1057 { 0x0c, 0x0250, "ACJustifyRight" }, 1058 { 0x0c, 0x0251, "ACJustifyBlockH" }, 1059 { 0x0c, 0x0252, "ACJustifyTop" }, 1060 { 0x0c, 0x0253, "ACJustifyCenterV" }, 1061 { 0x0c, 0x0254, "ACJustifyBottom" }, 1062 { 0x0c, 0x0255, "ACJustifyBlockV" }, 1063 { 0x0c, 0x0256, "ACIndentDecrease" }, 1064 { 0x0c, 0x0257, "ACIndentIncrease" }, 1065 { 0x0c, 0x0258, "ACNumberedList" }, 1066 { 0x0c, 0x0259, "ACRestartNumbering" }, 1067 { 0x0c, 0x025a, "ACBulletedList" }, 1068 { 0x0c, 0x025b, "ACPromote" }, 1069 { 0x0c, 0x025c, "ACDemote" }, 1070 { 0x0c, 0x025d, "ACYes" }, 1071 { 0x0c, 0x025e, "ACNo" }, 1072 { 0x0c, 0x025f, "ACCancel" }, 1073 { 0x0c, 0x0260, "ACCatalog" }, 1074 { 0x0c, 0x0261, "ACBuyCheckout" }, 1075 { 0x0c, 0x0262, "ACAddtoCart" }, 1076 { 0x0c, 0x0263, "ACExpand" }, 1077 { 0x0c, 0x0264, "ACExpandAll" }, 1078 { 0x0c, 0x0265, "ACCollapse" }, 1079 { 0x0c, 0x0266, "ACCollapseAll" }, 1080 { 0x0c, 0x0267, "ACPrintPreview" }, 1081 { 0x0c, 0x0268, "ACPasteSpecial" }, 1082 { 0x0c, 0x0269, "ACInsertMode" }, 1083 { 0x0c, 0x026a, "ACDelete" }, 1084 { 0x0c, 0x026b, "ACLock" }, 1085 { 0x0c, 0x026c, "ACUnlock" }, 1086 { 0x0c, 0x026d, "ACProtect" }, 1087 { 0x0c, 0x026e, "ACUnprotect" }, 1088 { 0x0c, 0x026f, "ACAttachComment" }, 1089 { 0x0c, 0x0270, "ACDeleteComment" }, 1090 { 0x0c, 0x0271, "ACViewComment" }, 1091 { 0x0c, 0x0272, "ACSelectWord" }, 1092 { 0x0c, 0x0273, "ACSelectSentence" }, 1093 { 0x0c, 0x0274, "ACSelectParagraph" }, 1094 { 0x0c, 0x0275, "ACSelectColumn" }, 1095 { 0x0c, 0x0276, "ACSelectRow" }, 1096 { 0x0c, 0x0277, "ACSelectTable" }, 1097 { 0x0c, 0x0278, "ACSelectObject" }, 1098 { 0x0c, 0x0279, "ACRedoRepeat" }, 1099 { 0x0c, 0x027a, "ACSort" }, 1100 { 0x0c, 0x027b, "ACSortAscending" }, 1101 { 0x0c, 0x027c, "ACSortDescending" }, 1102 { 0x0c, 0x027d, "ACFilter" }, 1103 { 0x0c, 0x027e, "ACSetClock" }, 1104 { 0x0c, 0x027f, "ACViewClock" }, 1105 { 0x0c, 0x0280, "ACSelectTimeZone" }, 1106 { 0x0c, 0x0281, "ACEditTimeZones" }, 1107 { 0x0c, 0x0282, "ACSetAlarm" }, 1108 { 0x0c, 0x0283, "ACClearAlarm" }, 1109 { 0x0c, 0x0284, "ACSnoozeAlarm" }, 1110 { 0x0c, 0x0285, "ACResetAlarm" }, 1111 { 0x0c, 0x0286, "ACSynchronize" }, 1112 { 0x0c, 0x0287, "ACSendReceive" }, 1113 { 0x0c, 0x0288, "ACSendTo" }, 1114 { 0x0c, 0x0289, "ACReply" }, 1115 { 0x0c, 0x028a, "ACReplyAll" }, 1116 { 0x0c, 0x028b, "ACForwardMsg" }, 1117 { 0x0c, 0x028c, "ACSend" }, 1118 { 0x0c, 0x028d, "ACAttachFile" }, 1119 { 0x0c, 0x028e, "ACUpload" }, 1120 { 0x0c, 0x028f, "ACDownloadSaveTargetAs" }, 1121 { 0x0c, 0x0290, "ACSetBorders" }, 1122 { 0x0c, 0x0291, "ACInsertRow" }, 1123 { 0x0c, 0x0292, "ACInsertColumn" }, 1124 { 0x0c, 0x0293, "ACInsertFile" }, 1125 { 0x0c, 0x0294, "ACInsertPicture" }, 1126 { 0x0c, 0x0295, "ACInsertObject" }, 1127 { 0x0c, 0x0296, "ACInsertSymbol" }, 1128 { 0x0c, 0x0297, "ACSaveandClose" }, 1129 { 0x0c, 0x0298, "ACRename" }, 1130 { 0x0c, 0x0299, "ACMerge" }, 1131 { 0x0c, 0x029a, "ACSplit" }, 1132 { 0x0c, 0x029b, "ACDisributeHorizontally" }, 1133 { 0x0c, 0x029c, "ACDistributeVertically" }, 1134 { 0x0c, 0x029d, "ACNextKeyboardLayoutSelect" }, 1135 { 0x0c, 0x029e, "ACNavigationGuidance" }, 1136 { 0x0c, 0x029f, "ACDesktopShowAllWindows" }, 1137 { 0x0c, 0x02a0, "ACSoftKeyLeft" }, 1138 { 0x0c, 0x02a1, "ACSoftKeyRight" }, 1139 { 0x0c, 0x02a2, "ACDesktopShowAllApplications" }, 1140 { 0x0c, 0x02b0, "ACIdleKeepAlive" }, 1141 { 0x0c, 0x02c0, "ExtendedKeyboardAttributesCollection" }, 1142 { 0x0c, 0x02c1, "KeyboardFormFactor" }, 1143 { 0x0c, 0x02c2, "KeyboardKeyType" }, 1144 { 0x0c, 0x02c3, "KeyboardPhysicalLayout" }, 1145 { 0x0c, 0x02c4, "VendorSpecificKeyboardPhysicalLayout" }, 1146 { 0x0c, 0x02c5, "KeyboardIETFLanguageTagIndex" }, 1147 { 0x0c, 0x02c6, "ImplementedKeyboardInputAssistControls" }, 1148 { 0x0c, 0x02c7, "KeyboardInputAssistPrevious" }, 1149 { 0x0c, 0x02c8, "KeyboardInputAssistNext" }, 1150 { 0x0c, 0x02c9, "KeyboardInputAssistPreviousGroup" }, 1151 { 0x0c, 0x02ca, "KeyboardInputAssistNextGroup" }, 1152 { 0x0c, 0x02cb, "KeyboardInputAssistAccept" }, 1153 { 0x0c, 0x02cc, "KeyboardInputAssistCancel" }, 1154 { 0x0c, 0x02d0, "PrivacyScreenToggle" }, 1155 { 0x0c, 0x02d1, "PrivacyScreenLevelDecrement" }, 1156 { 0x0c, 0x02d2, "PrivacyScreenLevelIncrement" }, 1157 { 0x0c, 0x02d3, "PrivacyScreenLevelMinimum" }, 1158 { 0x0c, 0x02d4, "PrivacyScreenLevelMaximum" }, 1159 { 0x0c, 0x0500, "ContactEdited" }, 1160 { 0x0c, 0x0501, "ContactAdded" }, 1161 { 0x0c, 0x0502, "ContactRecordActive" }, 1162 { 0x0c, 0x0503, "ContactIndex" }, 1163 { 0x0c, 0x0504, "ContactNickname" }, 1164 { 0x0c, 0x0505, "ContactFirstName" }, 1165 { 0x0c, 0x0506, "ContactLastName" }, 1166 { 0x0c, 0x0507, "ContactFullName" }, 1167 { 0x0c, 0x0508, "ContactPhoneNumberPersonal" }, 1168 { 0x0c, 0x0509, "ContactPhoneNumberBusiness" }, 1169 { 0x0c, 0x050a, "ContactPhoneNumberMobile" }, 1170 { 0x0c, 0x050b, "ContactPhoneNumberPager" }, 1171 { 0x0c, 0x050c, "ContactPhoneNumberFax" }, 1172 { 0x0c, 0x050d, "ContactPhoneNumberOther" }, 1173 { 0x0c, 0x050e, "ContactEmailPersonal" }, 1174 { 0x0c, 0x050f, "ContactEmailBusiness" }, 1175 { 0x0c, 0x0510, "ContactEmailOther" }, 1176 { 0x0c, 0x0511, "ContactEmailMain" }, 1177 { 0x0c, 0x0512, "ContactSpeedDialNumber" }, 1178 { 0x0c, 0x0513, "ContactStatusFlag" }, 1179 { 0x0c, 0x0514, "ContactMisc" }, 1180 { 0x0d, 0, "Digitizers" }, 1181 { 0x0d, 0x0001, "Digitizer" }, 1182 { 0x0d, 0x0002, "Pen" }, 1183 { 0x0d, 0x0003, "LightPen" }, 1184 { 0x0d, 0x0004, "TouchScreen" }, 1185 { 0x0d, 0x0005, "TouchPad" }, 1186 { 0x0d, 0x0006, "Whiteboard" }, 1187 { 0x0d, 0x0007, "CoordinateMeasuringMachine" }, 1188 { 0x0d, 0x0008, "3DDigitizer" }, 1189 { 0x0d, 0x0009, "StereoPlotter" }, 1190 { 0x0d, 0x000a, "ArticulatedArm" }, 1191 { 0x0d, 0x000b, "Armature" }, 1192 { 0x0d, 0x000c, "MultiplePointDigitizer" }, 1193 { 0x0d, 0x000d, "FreeSpaceWand" }, 1194 { 0x0d, 0x000e, "DeviceConfiguration" }, 1195 { 0x0d, 0x000f, "CapacitiveHeatMapDigitizer" }, 1196 { 0x0d, 0x0020, "Stylus" }, 1197 { 0x0d, 0x0021, "Puck" }, 1198 { 0x0d, 0x0022, "Finger" }, 1199 { 0x0d, 0x0023, "Devicesettings" }, 1200 { 0x0d, 0x0024, "CharacterGesture" }, 1201 { 0x0d, 0x0030, "TipPressure" }, 1202 { 0x0d, 0x0031, "BarrelPressure" }, 1203 { 0x0d, 0x0032, "InRange" }, 1204 { 0x0d, 0x0033, "Touch" }, 1205 { 0x0d, 0x0034, "Untouch" }, 1206 { 0x0d, 0x0035, "Tap" }, 1207 { 0x0d, 0x0036, "Quality" }, 1208 { 0x0d, 0x0037, "DataValid" }, 1209 { 0x0d, 0x0038, "TransducerIndex" }, 1210 { 0x0d, 0x0039, "TabletFunctionKeys" }, 1211 { 0x0d, 0x003a, "ProgramChangeKeys" }, 1212 { 0x0d, 0x003b, "BatteryStrength" }, 1213 { 0x0d, 0x003c, "Invert" }, 1214 { 0x0d, 0x003d, "XTilt" }, 1215 { 0x0d, 0x003e, "YTilt" }, 1216 { 0x0d, 0x003f, "Azimuth" }, 1217 { 0x0d, 0x0040, "Altitude" }, 1218 { 0x0d, 0x0041, "Twist" }, 1219 { 0x0d, 0x0042, "TipSwitch" }, 1220 { 0x0d, 0x0043, "SecondaryTipSwitch" }, 1221 { 0x0d, 0x0044, "BarrelSwitch" }, 1222 { 0x0d, 0x0045, "Eraser" }, 1223 { 0x0d, 0x0046, "TabletPick" }, 1224 { 0x0d, 0x0047, "TouchValid" }, 1225 { 0x0d, 0x0048, "Width" }, 1226 { 0x0d, 0x0049, "Height" }, 1227 { 0x0d, 0x0051, "ContactIdentifier" }, 1228 { 0x0d, 0x0052, "DeviceMode" }, 1229 { 0x0d, 0x0053, "DeviceIdentifier" }, 1230 { 0x0d, 0x0054, "ContactCount" }, 1231 { 0x0d, 0x0055, "ContactCountMaximum" }, 1232 { 0x0d, 0x0056, "ScanTime" }, 1233 { 0x0d, 0x0057, "SurfaceSwitch" }, 1234 { 0x0d, 0x0058, "ButtonSwitch" }, 1235 { 0x0d, 0x0059, "PadType" }, 1236 { 0x0d, 0x005a, "SecondaryBarrelSwitch" }, 1237 { 0x0d, 0x005b, "TransducerSerialNumber" }, 1238 { 0x0d, 0x005c, "PreferredColor" }, 1239 { 0x0d, 0x005d, "PreferredColorisLocked" }, 1240 { 0x0d, 0x005e, "PreferredLineWidth" }, 1241 { 0x0d, 0x005f, "PreferredLineWidthisLocked" }, 1242 { 0x0d, 0x0060, "LatencyMode" }, 1243 { 0x0d, 0x0061, "GestureCharacterQuality" }, 1244 { 0x0d, 0x0062, "CharacterGestureDataLength" }, 1245 { 0x0d, 0x0063, "CharacterGestureData" }, 1246 { 0x0d, 0x0064, "GestureCharacterEncoding" }, 1247 { 0x0d, 0x0065, "UTF8CharacterGestureEncoding" }, 1248 { 0x0d, 0x0066, "UTF16LittleEndianCharacterGestureEncoding" }, 1249 { 0x0d, 0x0067, "UTF16BigEndianCharacterGestureEncoding" }, 1250 { 0x0d, 0x0068, "UTF32LittleEndianCharacterGestureEncoding" }, 1251 { 0x0d, 0x0069, "UTF32BigEndianCharacterGestureEncoding" }, 1252 { 0x0d, 0x006a, "CapacitiveHeatMapProtocolVendorID" }, 1253 { 0x0d, 0x006b, "CapacitiveHeatMapProtocolVersion" }, 1254 { 0x0d, 0x006c, "CapacitiveHeatMapFrameData" }, 1255 { 0x0d, 0x006d, "GestureCharacterEnable" }, 1256 { 0x0d, 0x006e, "TransducerSerialNumberPart2" }, 1257 { 0x0d, 0x006f, "NoPreferredColor" }, 1258 { 0x0d, 0x0070, "PreferredLineStyle" }, 1259 { 0x0d, 0x0071, "PreferredLineStyleisLocked" }, 1260 { 0x0d, 0x0072, "Ink" }, 1261 { 0x0d, 0x0073, "Pencil" }, 1262 { 0x0d, 0x0074, "Highlighter" }, 1263 { 0x0d, 0x0075, "ChiselMarker" }, 1264 { 0x0d, 0x0076, "Brush" }, 1265 { 0x0d, 0x0077, "NoPreference" }, 1266 { 0x0d, 0x0080, "DigitizerDiagnostic" }, 1267 { 0x0d, 0x0081, "DigitizerError" }, 1268 { 0x0d, 0x0082, "ErrNormalStatus" }, 1269 { 0x0d, 0x0083, "ErrTransducersExceeded" }, 1270 { 0x0d, 0x0084, "ErrFullTransFeaturesUnavailable" }, 1271 { 0x0d, 0x0085, "ErrChargeLow" }, 1272 { 0x0d, 0x0090, "TransducerSoftwareInfo" }, 1273 { 0x0d, 0x0091, "TransducerVendorId" }, 1274 { 0x0d, 0x0092, "TransducerProductId" }, 1275 { 0x0d, 0x0093, "DeviceSupportedProtocols" }, 1276 { 0x0d, 0x0094, "TransducerSupportedProtocols" }, 1277 { 0x0d, 0x0095, "NoProtocol" }, 1278 { 0x0d, 0x0096, "WacomAESProtocol" }, 1279 { 0x0d, 0x0097, "USIProtocol" }, 1280 { 0x0d, 0x0098, "MicrosoftPenProtocol" }, 1281 { 0x0d, 0x00a0, "SupportedReportRates" }, 1282 { 0x0d, 0x00a1, "ReportRate" }, 1283 { 0x0d, 0x00a2, "TransducerConnected" }, 1284 { 0x0d, 0x00a3, "SwitchDisabled" }, 1285 { 0x0d, 0x00a4, "SwitchUnimplemented" }, 1286 { 0x0d, 0x00a5, "TransducerSwitches" }, 1287 { 0x0d, 0x00a6, "TransducerIndexSelector" }, 1288 { 0x0d, 0x00b0, "ButtonPressThreshold" }, 1289 { 0x0e, 0, "Haptics" }, 1290 { 0x0e, 0x0001, "SimpleHapticController" }, 1291 { 0x0e, 0x0010, "WaveformList" }, 1292 { 0x0e, 0x0011, "DurationList" }, 1293 { 0x0e, 0x0020, "AutoTrigger" }, 1294 { 0x0e, 0x0021, "ManualTrigger" }, 1295 { 0x0e, 0x0022, "AutoTriggerAssociatedControl" }, 1296 { 0x0e, 0x0023, "Intensity" }, 1297 { 0x0e, 0x0024, "RepeatCount" }, 1298 { 0x0e, 0x0025, "RetriggerPeriod" }, 1299 { 0x0e, 0x0026, "WaveformVendorPage" }, 1300 { 0x0e, 0x0027, "WaveformVendorID" }, 1301 { 0x0e, 0x0028, "WaveformCutoffTime" }, 1302 { 0x0e, 0x1001, "WaveformNone" }, 1303 { 0x0e, 0x1002, "WaveformStop" }, 1304 { 0x0e, 0x1003, "WaveformClick" }, 1305 { 0x0e, 0x1004, "WaveformBuzzContinuous" }, 1306 { 0x0e, 0x1005, "WaveformRumbleContinuous" }, 1307 { 0x0e, 0x1006, "WaveformPress" }, 1308 { 0x0e, 0x1007, "WaveformRelease" }, 1309 { 0x0e, 0x1008, "WaveformHover" }, 1310 { 0x0e, 0x1009, "WaveformSuccess" }, 1311 { 0x0e, 0x100a, "WaveformError" }, 1312 { 0x0e, 0x100b, "WaveformInkContinuous" }, 1313 { 0x0e, 0x100c, "WaveformPencilContinuous" }, 1314 { 0x0e, 0x100d, "WaveformMarkerContinuous" }, 1315 { 0x0e, 0x100e, "WaveformChiselMarkerContinuous" }, 1316 { 0x0e, 0x100f, "WaveformBrushContinuous" }, 1317 { 0x0e, 0x1010, "WaveformEraserContinuous" }, 1318 { 0x0e, 0x1011, "WaveformSparkleContinuous" }, 1319 { 0x0f, 0, "PhysicalInputDevice" }, 1320 { 0x0f, 0x0001, "PhysicalInputDevice" }, 1321 { 0x0f, 0x0020, "Normal" }, 1322 { 0x0f, 0x0021, "SetEffectReport" }, 1323 { 0x0f, 0x0022, "EffectParameterBlockIndex" }, 1324 { 0x0f, 0x0023, "ParameterBlockOffset" }, 1325 { 0x0f, 0x0024, "ROMFlag" }, 1326 { 0x0f, 0x0025, "EffectType" }, 1327 { 0x0f, 0x0026, "ETConstantForce" }, 1328 { 0x0f, 0x0027, "ETRamp" }, 1329 { 0x0f, 0x0028, "ETCustomForce" }, 1330 { 0x0f, 0x0030, "ETSquare" }, 1331 { 0x0f, 0x0031, "ETSine" }, 1332 { 0x0f, 0x0032, "ETTriangle" }, 1333 { 0x0f, 0x0033, "ETSawtoothUp" }, 1334 { 0x0f, 0x0034, "ETSawtoothDown" }, 1335 { 0x0f, 0x0040, "ETSpring" }, 1336 { 0x0f, 0x0041, "ETDamper" }, 1337 { 0x0f, 0x0042, "ETInertia" }, 1338 { 0x0f, 0x0043, "ETFriction" }, 1339 { 0x0f, 0x0050, "Duration" }, 1340 { 0x0f, 0x0051, "SamplePeriod" }, 1341 { 0x0f, 0x0052, "Gain" }, 1342 { 0x0f, 0x0053, "TriggerButton" }, 1343 { 0x0f, 0x0054, "TriggerRepeatInterval" }, 1344 { 0x0f, 0x0055, "AxesEnable" }, 1345 { 0x0f, 0x0056, "DirectionEnable" }, 1346 { 0x0f, 0x0057, "Direction" }, 1347 { 0x0f, 0x0058, "TypeSpecificBlockOffset" }, 1348 { 0x0f, 0x0059, "BlockType" }, 1349 { 0x0f, 0x005a, "SetEnvelopeReport" }, 1350 { 0x0f, 0x005b, "AttackLevel" }, 1351 { 0x0f, 0x005c, "AttackTime" }, 1352 { 0x0f, 0x005d, "FadeLevel" }, 1353 { 0x0f, 0x005e, "FadeTime" }, 1354 { 0x0f, 0x005f, "SetConditionReport" }, 1355 { 0x0f, 0x0060, "CenterPointOffset" }, 1356 { 0x0f, 0x0061, "PositiveCoefficient" }, 1357 { 0x0f, 0x0062, "NegativeCoefficient" }, 1358 { 0x0f, 0x0063, "PositiveSaturation" }, 1359 { 0x0f, 0x0064, "NegativeSaturation" }, 1360 { 0x0f, 0x0065, "DeadBand" }, 1361 { 0x0f, 0x0066, "DownloadForceSample" }, 1362 { 0x0f, 0x0067, "IsochCustomForceEnable" }, 1363 { 0x0f, 0x0068, "CustomForceDataReport" }, 1364 { 0x0f, 0x0069, "CustomForceData" }, 1365 { 0x0f, 0x006a, "CustomForceVendorDefinedData" }, 1366 { 0x0f, 0x006b, "SetCustomForceReport" }, 1367 { 0x0f, 0x006c, "CustomForceDataOffset" }, 1368 { 0x0f, 0x006d, "SampleCount" }, 1369 { 0x0f, 0x006e, "SetPeriodicReport" }, 1370 { 0x0f, 0x006f, "Offset" }, 1371 { 0x0f, 0x0070, "Magnitude" }, 1372 { 0x0f, 0x0071, "Phase" }, 1373 { 0x0f, 0x0072, "Period" }, 1374 { 0x0f, 0x0073, "SetConstantForceReport" }, 1375 { 0x0f, 0x0074, "SetRampForceReport" }, 1376 { 0x0f, 0x0075, "RampStart" }, 1377 { 0x0f, 0x0076, "RampEnd" }, 1378 { 0x0f, 0x0077, "EffectOperationReport" }, 1379 { 0x0f, 0x0078, "EffectOperation" }, 1380 { 0x0f, 0x0079, "OpEffectStart" }, 1381 { 0x0f, 0x007a, "OpEffectStartSolo" }, 1382 { 0x0f, 0x007b, "OpEffectStop" }, 1383 { 0x0f, 0x007c, "LoopCount" }, 1384 { 0x0f, 0x007d, "DeviceGainReport" }, 1385 { 0x0f, 0x007e, "DeviceGain" }, 1386 { 0x0f, 0x007f, "ParameterBlockPoolsReport" }, 1387 { 0x0f, 0x0080, "RAMPoolSize" }, 1388 { 0x0f, 0x0081, "ROMPoolSize" }, 1389 { 0x0f, 0x0082, "ROMEffectBlockCount" }, 1390 { 0x0f, 0x0083, "SimultaneousEffectsMax" }, 1391 { 0x0f, 0x0084, "PoolAlignment" }, 1392 { 0x0f, 0x0085, "ParameterBlockMoveReport" }, 1393 { 0x0f, 0x0086, "MoveSource" }, 1394 { 0x0f, 0x0087, "MoveDestination" }, 1395 { 0x0f, 0x0088, "MoveLength" }, 1396 { 0x0f, 0x0089, "EffectParameterBlockLoadReport" }, 1397 { 0x0f, 0x008b, "EffectParameterBlockLoadStatus" }, 1398 { 0x0f, 0x008c, "BlockLoadSuccess" }, 1399 { 0x0f, 0x008d, "BlockLoadFull" }, 1400 { 0x0f, 0x008e, "BlockLoadError" }, 1401 { 0x0f, 0x008f, "BlockHandle" }, 1402 { 0x0f, 0x0090, "EffectParameterBlockFreeReport" }, 1403 { 0x0f, 0x0091, "TypeSpecificBlockHandle" }, 1404 { 0x0f, 0x0092, "PIDStateReport" }, 1405 { 0x0f, 0x0094, "EffectPlaying" }, 1406 { 0x0f, 0x0095, "PIDDeviceControlReport" }, 1407 { 0x0f, 0x0096, "PIDDeviceControl" }, 1408 { 0x0f, 0x0097, "DCEnableActuators" }, 1409 { 0x0f, 0x0098, "DCDisableActuators" }, 1410 { 0x0f, 0x0099, "DCStopAllEffects" }, 1411 { 0x0f, 0x009a, "DCReset" }, 1412 { 0x0f, 0x009b, "DCPause" }, 1413 { 0x0f, 0x009c, "DCContinue" }, 1414 { 0x0f, 0x009f, "DevicePaused" }, 1415 { 0x0f, 0x00a0, "ActuatorsEnabled" }, 1416 { 0x0f, 0x00a4, "SafetySwitch" }, 1417 { 0x0f, 0x00a5, "ActuatorOverrideSwitch" }, 1418 { 0x0f, 0x00a6, "ActuatorPower" }, 1419 { 0x0f, 0x00a7, "StartDelay" }, 1420 { 0x0f, 0x00a8, "ParameterBlockSize" }, 1421 { 0x0f, 0x00a9, "DeviceManagedPool" }, 1422 { 0x0f, 0x00aa, "SharedParameterBlocks" }, 1423 { 0x0f, 0x00ab, "CreateNewEffectParameterBlockReport" }, 1424 { 0x0f, 0x00ac, "RAMPoolAvailable" }, 1425 { 0x11, 0, "SoC" }, 1426 { 0x11, 0x0001, "SocControl" }, 1427 { 0x11, 0x0002, "FirmwareTransfer" }, 1428 { 0x11, 0x0003, "FirmwareFileId" }, 1429 { 0x11, 0x0004, "FileOffsetInBytes" }, 1430 { 0x11, 0x0005, "FileTransferSizeMaxInBytes" }, 1431 { 0x11, 0x0006, "FilePayload" }, 1432 { 0x11, 0x0007, "FilePayloadSizeInBytes" }, 1433 { 0x11, 0x0008, "FilePayloadContainsLastBytes" }, 1434 { 0x11, 0x0009, "FileTransferStop" }, 1435 { 0x11, 0x000a, "FileTransferTillEnd" }, 1436 { 0x12, 0, "EyeandHeadTrackers" }, 1437 { 0x12, 0x0001, "EyeTracker" }, 1438 { 0x12, 0x0002, "HeadTracker" }, 1439 { 0x12, 0x0010, "TrackingData" }, 1440 { 0x12, 0x0011, "Capabilities" }, 1441 { 0x12, 0x0012, "Configuration" }, 1442 { 0x12, 0x0013, "Status" }, 1443 { 0x12, 0x0014, "Control" }, 1444 { 0x12, 0x0020, "SensorTimestamp" }, 1445 { 0x12, 0x0021, "PositionX" }, 1446 { 0x12, 0x0022, "PositionY" }, 1447 { 0x12, 0x0023, "PositionZ" }, 1448 { 0x12, 0x0024, "GazePoint" }, 1449 { 0x12, 0x0025, "LeftEyePosition" }, 1450 { 0x12, 0x0026, "RightEyePosition" }, 1451 { 0x12, 0x0027, "HeadPosition" }, 1452 { 0x12, 0x0028, "HeadDirectionPoint" }, 1453 { 0x12, 0x0029, "RotationaboutXaxis" }, 1454 { 0x12, 0x002a, "RotationaboutYaxis" }, 1455 { 0x12, 0x002b, "RotationaboutZaxis" }, 1456 { 0x12, 0x0100, "TrackerQuality" }, 1457 { 0x12, 0x0101, "MinimumTrackingDistance" }, 1458 { 0x12, 0x0102, "OptimumTrackingDistance" }, 1459 { 0x12, 0x0103, "MaximumTrackingDistance" }, 1460 { 0x12, 0x0104, "MaximumScreenPlaneWidth" }, 1461 { 0x12, 0x0105, "MaximumScreenPlaneHeight" }, 1462 { 0x12, 0x0200, "DisplayManufacturerID" }, 1463 { 0x12, 0x0201, "DisplayProductID" }, 1464 { 0x12, 0x0202, "DisplaySerialNumber" }, 1465 { 0x12, 0x0203, "DisplayManufacturerDate" }, 1466 { 0x12, 0x0204, "CalibratedScreenWidth" }, 1467 { 0x12, 0x0205, "CalibratedScreenHeight" }, 1468 { 0x12, 0x0300, "SamplingFrequency" }, 1469 { 0x12, 0x0301, "ConfigurationStatus" }, 1470 { 0x12, 0x0400, "DeviceModeRequest" }, 1471 { 0x14, 0, "AuxiliaryDisplay" }, 1472 { 0x14, 0x0001, "AlphanumericDisplay" }, 1473 { 0x14, 0x0002, "AuxiliaryDisplay" }, 1474 { 0x14, 0x0020, "DisplayAttributesReport" }, 1475 { 0x14, 0x0021, "ASCIICharacterSet" }, 1476 { 0x14, 0x0022, "DataReadBack" }, 1477 { 0x14, 0x0023, "FontReadBack" }, 1478 { 0x14, 0x0024, "DisplayControlReport" }, 1479 { 0x14, 0x0025, "ClearDisplay" }, 1480 { 0x14, 0x0026, "DisplayEnable" }, 1481 { 0x14, 0x0027, "ScreenSaverDelay" }, 1482 { 0x14, 0x0028, "ScreenSaverEnable" }, 1483 { 0x14, 0x0029, "VerticalScroll" }, 1484 { 0x14, 0x002a, "HorizontalScroll" }, 1485 { 0x14, 0x002b, "CharacterReport" }, 1486 { 0x14, 0x002c, "DisplayData" }, 1487 { 0x14, 0x002d, "DisplayStatus" }, 1488 { 0x14, 0x002e, "StatNotReady" }, 1489 { 0x14, 0x002f, "StatReady" }, 1490 { 0x14, 0x0030, "ErrNotaloadablecharacter" }, 1491 { 0x14, 0x0031, "ErrFontdatacannotberead" }, 1492 { 0x14, 0x0032, "CursorPositionReport" }, 1493 { 0x14, 0x0033, "Row" }, 1494 { 0x14, 0x0034, "Column" }, 1495 { 0x14, 0x0035, "Rows" }, 1496 { 0x14, 0x0036, "Columns" }, 1497 { 0x14, 0x0037, "CursorPixelPositioning" }, 1498 { 0x14, 0x0038, "CursorMode" }, 1499 { 0x14, 0x0039, "CursorEnable" }, 1500 { 0x14, 0x003a, "CursorBlink" }, 1501 { 0x14, 0x003b, "FontReport" }, 1502 { 0x14, 0x003c, "FontData" }, 1503 { 0x14, 0x003d, "CharacterWidth" }, 1504 { 0x14, 0x003e, "CharacterHeight" }, 1505 { 0x14, 0x003f, "CharacterSpacingHorizontal" }, 1506 { 0x14, 0x0040, "CharacterSpacingVertical" }, 1507 { 0x14, 0x0041, "UnicodeCharacterSet" }, 1508 { 0x14, 0x0042, "Font7Segment" }, 1509 { 0x14, 0x0043, "7SegmentDirectMap" }, 1510 { 0x14, 0x0044, "Font14Segment" }, 1511 { 0x14, 0x0045, "14SegmentDirectMap" }, 1512 { 0x14, 0x0046, "DisplayBrightness" }, 1513 { 0x14, 0x0047, "DisplayContrast" }, 1514 { 0x14, 0x0048, "CharacterAttribute" }, 1515 { 0x14, 0x0049, "AttributeReadback" }, 1516 { 0x14, 0x004a, "AttributeData" }, 1517 { 0x14, 0x004b, "CharAttrEnhance" }, 1518 { 0x14, 0x004c, "CharAttrUnderline" }, 1519 { 0x14, 0x004d, "CharAttrBlink" }, 1520 { 0x14, 0x0080, "BitmapSizeX" }, 1521 { 0x14, 0x0081, "BitmapSizeY" }, 1522 { 0x14, 0x0082, "MaxBlitSize" }, 1523 { 0x14, 0x0083, "BitDepthFormat" }, 1524 { 0x14, 0x0084, "DisplayOrientation" }, 1525 { 0x14, 0x0085, "PaletteReport" }, 1526 { 0x14, 0x0086, "PaletteDataSize" }, 1527 { 0x14, 0x0087, "PaletteDataOffset" }, 1528 { 0x14, 0x0088, "PaletteData" }, 1529 { 0x14, 0x008a, "BlitReport" }, 1530 { 0x14, 0x008b, "BlitRectangleX1" }, 1531 { 0x14, 0x008c, "BlitRectangleY1" }, 1532 { 0x14, 0x008d, "BlitRectangleX2" }, 1533 { 0x14, 0x008e, "BlitRectangleY2" }, 1534 { 0x14, 0x008f, "BlitData" }, 1535 { 0x14, 0x0090, "SoftButton" }, 1536 { 0x14, 0x0091, "SoftButtonID" }, 1537 { 0x14, 0x0092, "SoftButtonSide" }, 1538 { 0x14, 0x0093, "SoftButtonOffset1" }, 1539 { 0x14, 0x0094, "SoftButtonOffset2" }, 1540 { 0x14, 0x0095, "SoftButtonReport" }, 1541 { 0x14, 0x00c2, "SoftKeys" }, 1542 { 0x14, 0x00cc, "DisplayDataExtensions" }, 1543 { 0x14, 0x00cf, "CharacterMapping" }, 1544 { 0x14, 0x00dd, "UnicodeEquivalent" }, 1545 { 0x14, 0x00df, "CharacterPageMapping" }, 1546 { 0x14, 0x00ff, "RequestReport" }, 1547 { 0x20, 0, "Sensors" }, 1548 { 0x20, 0x0001, "Sensor" }, 1549 { 0x20, 0x0010, "Biometric" }, 1550 { 0x20, 0x0011, "BiometricHumanPresence" }, 1551 { 0x20, 0x0012, "BiometricHumanProximity" }, 1552 { 0x20, 0x0013, "BiometricHumanTouch" }, 1553 { 0x20, 0x0014, "BiometricBloodPressure" }, 1554 { 0x20, 0x0015, "BiometricBodyTemperature" }, 1555 { 0x20, 0x0016, "BiometricHeartRate" }, 1556 { 0x20, 0x0017, "BiometricHeartRateVariability" }, 1557 { 0x20, 0x0018, "BiometricPeripheralOxygenSaturation" }, 1558 { 0x20, 0x0019, "BiometricRespiratoryRate" }, 1559 { 0x20, 0x0020, "Electrical" }, 1560 { 0x20, 0x0021, "ElectricalCapacitance" }, 1561 { 0x20, 0x0022, "ElectricalCurrent" }, 1562 { 0x20, 0x0023, "ElectricalPower" }, 1563 { 0x20, 0x0024, "ElectricalInductance" }, 1564 { 0x20, 0x0025, "ElectricalResistance" }, 1565 { 0x20, 0x0026, "ElectricalVoltage" }, 1566 { 0x20, 0x0027, "ElectricalPotentiometer" }, 1567 { 0x20, 0x0028, "ElectricalFrequency" }, 1568 { 0x20, 0x0029, "ElectricalPeriod" }, 1569 { 0x20, 0x0030, "Environmental" }, 1570 { 0x20, 0x0031, "EnvironmentalAtmosphericPressure" }, 1571 { 0x20, 0x0032, "EnvironmentalHumidity" }, 1572 { 0x20, 0x0033, "EnvironmentalTemperature" }, 1573 { 0x20, 0x0034, "EnvironmentalWindDirection" }, 1574 { 0x20, 0x0035, "EnvironmentalWindSpeed" }, 1575 { 0x20, 0x0036, "EnvironmentalAirQuality" }, 1576 { 0x20, 0x0037, "EnvironmentalHeatIndex" }, 1577 { 0x20, 0x0038, "EnvironmentalSurfaceTemperature" }, 1578 { 0x20, 0x0039, "EnvironmentalVolatileOrganicCompounds" }, 1579 { 0x20, 0x003a, "EnvironmentalObjectPresence" }, 1580 { 0x20, 0x003b, "EnvironmentalObjectProximity" }, 1581 { 0x20, 0x0040, "Light" }, 1582 { 0x20, 0x0041, "LightAmbientLight" }, 1583 { 0x20, 0x0042, "LightConsumerInfrared" }, 1584 { 0x20, 0x0043, "LightInfraredLight" }, 1585 { 0x20, 0x0044, "LightVisibleLight" }, 1586 { 0x20, 0x0045, "LightUltravioletLight" }, 1587 { 0x20, 0x0050, "Location" }, 1588 { 0x20, 0x0051, "LocationBroadcast" }, 1589 { 0x20, 0x0052, "LocationDeadReckoning" }, 1590 { 0x20, 0x0053, "LocationGPSGlobalPositioningSystem" }, 1591 { 0x20, 0x0054, "LocationLookup" }, 1592 { 0x20, 0x0055, "LocationOther" }, 1593 { 0x20, 0x0056, "LocationStatic" }, 1594 { 0x20, 0x0057, "LocationTriangulation" }, 1595 { 0x20, 0x0060, "Mechanical" }, 1596 { 0x20, 0x0061, "MechanicalBooleanSwitch" }, 1597 { 0x20, 0x0062, "MechanicalBooleanSwitchArray" }, 1598 { 0x20, 0x0063, "MechanicalMultivalueSwitch" }, 1599 { 0x20, 0x0064, "MechanicalForce" }, 1600 { 0x20, 0x0065, "MechanicalPressure" }, 1601 { 0x20, 0x0066, "MechanicalStrain" }, 1602 { 0x20, 0x0067, "MechanicalWeight" }, 1603 { 0x20, 0x0068, "MechanicalHapticVibrator" }, 1604 { 0x20, 0x0069, "MechanicalHallEffectSwitch" }, 1605 { 0x20, 0x0070, "Motion" }, 1606 { 0x20, 0x0071, "MotionAccelerometer1D" }, 1607 { 0x20, 0x0072, "MotionAccelerometer2D" }, 1608 { 0x20, 0x0073, "MotionAccelerometer3D" }, 1609 { 0x20, 0x0074, "MotionGyrometer1D" }, 1610 { 0x20, 0x0075, "MotionGyrometer2D" }, 1611 { 0x20, 0x0076, "MotionGyrometer3D" }, 1612 { 0x20, 0x0077, "MotionMotionDetector" }, 1613 { 0x20, 0x0078, "MotionSpeedometer" }, 1614 { 0x20, 0x0079, "MotionAccelerometer" }, 1615 { 0x20, 0x007a, "MotionGyrometer" }, 1616 { 0x20, 0x007b, "MotionGravityVector" }, 1617 { 0x20, 0x007c, "MotionLinearAccelerometer" }, 1618 { 0x20, 0x0080, "Orientation" }, 1619 { 0x20, 0x0081, "OrientationCompass1D" }, 1620 { 0x20, 0x0082, "OrientationCompass2D" }, 1621 { 0x20, 0x0083, "OrientationCompass3D" }, 1622 { 0x20, 0x0084, "OrientationInclinometer1D" }, 1623 { 0x20, 0x0085, "OrientationInclinometer2D" }, 1624 { 0x20, 0x0086, "OrientationInclinometer3D" }, 1625 { 0x20, 0x0087, "OrientationDistance1D" }, 1626 { 0x20, 0x0088, "OrientationDistance2D" }, 1627 { 0x20, 0x0089, "OrientationDistance3D" }, 1628 { 0x20, 0x008a, "OrientationDeviceOrientation" }, 1629 { 0x20, 0x008b, "OrientationCompass" }, 1630 { 0x20, 0x008c, "OrientationInclinometer" }, 1631 { 0x20, 0x008d, "OrientationDistance" }, 1632 { 0x20, 0x008e, "OrientationRelativeOrientation" }, 1633 { 0x20, 0x008f, "OrientationSimpleOrientation" }, 1634 { 0x20, 0x0090, "Scanner" }, 1635 { 0x20, 0x0091, "ScannerBarcode" }, 1636 { 0x20, 0x0092, "ScannerRFID" }, 1637 { 0x20, 0x0093, "ScannerNFC" }, 1638 { 0x20, 0x00a0, "Time" }, 1639 { 0x20, 0x00a1, "TimeAlarmTimer" }, 1640 { 0x20, 0x00a2, "TimeRealTimeClock" }, 1641 { 0x20, 0x00b0, "PersonalActivity" }, 1642 { 0x20, 0x00b1, "PersonalActivityActivityDetection" }, 1643 { 0x20, 0x00b2, "PersonalActivityDevicePosition" }, 1644 { 0x20, 0x00b3, "PersonalActivityFloorTracker" }, 1645 { 0x20, 0x00b4, "PersonalActivityPedometer" }, 1646 { 0x20, 0x00b5, "PersonalActivityStepDetection" }, 1647 { 0x20, 0x00c0, "OrientationExtended" }, 1648 { 0x20, 0x00c1, "OrientationExtendedGeomagneticOrientation" }, 1649 { 0x20, 0x00c2, "OrientationExtendedMagnetometer" }, 1650 { 0x20, 0x00d0, "Gesture" }, 1651 { 0x20, 0x00d1, "GestureChassisFlipGesture" }, 1652 { 0x20, 0x00d2, "GestureHingeFoldGesture" }, 1653 { 0x20, 0x00e0, "Other" }, 1654 { 0x20, 0x00e1, "OtherCustom" }, 1655 { 0x20, 0x00e2, "OtherGeneric" }, 1656 { 0x20, 0x00e3, "OtherGenericEnumerator" }, 1657 { 0x20, 0x00e4, "OtherHingeAngle" }, 1658 { 0x20, 0x00f0, "VendorReserved1" }, 1659 { 0x20, 0x00f1, "VendorReserved2" }, 1660 { 0x20, 0x00f2, "VendorReserved3" }, 1661 { 0x20, 0x00f3, "VendorReserved4" }, 1662 { 0x20, 0x00f4, "VendorReserved5" }, 1663 { 0x20, 0x00f5, "VendorReserved6" }, 1664 { 0x20, 0x00f6, "VendorReserved7" }, 1665 { 0x20, 0x00f7, "VendorReserved8" }, 1666 { 0x20, 0x00f8, "VendorReserved9" }, 1667 { 0x20, 0x00f9, "VendorReserved10" }, 1668 { 0x20, 0x00fa, "VendorReserved11" }, 1669 { 0x20, 0x00fb, "VendorReserved12" }, 1670 { 0x20, 0x00fc, "VendorReserved13" }, 1671 { 0x20, 0x00fd, "VendorReserved14" }, 1672 { 0x20, 0x00fe, "VendorReserved15" }, 1673 { 0x20, 0x00ff, "VendorReserved16" }, 1674 { 0x20, 0x0200, "Event" }, 1675 { 0x20, 0x0201, "EventSensorState" }, 1676 { 0x20, 0x0202, "EventSensorEvent" }, 1677 { 0x20, 0x0300, "Property" }, 1678 { 0x20, 0x0301, "PropertyFriendlyName" }, 1679 { 0x20, 0x0302, "PropertyPersistentUniqueID" }, 1680 { 0x20, 0x0303, "PropertySensorStatus" }, 1681 { 0x20, 0x0304, "PropertyMinimumReportInterval" }, 1682 { 0x20, 0x0305, "PropertySensorManufacturer" }, 1683 { 0x20, 0x0306, "PropertySensorModel" }, 1684 { 0x20, 0x0307, "PropertySensorSerialNumber" }, 1685 { 0x20, 0x0308, "PropertySensorDescription" }, 1686 { 0x20, 0x0309, "PropertySensorConnectionType" }, 1687 { 0x20, 0x030a, "PropertySensorDevicePath" }, 1688 { 0x20, 0x030b, "PropertyHardwareRevision" }, 1689 { 0x20, 0x030c, "PropertyFirmwareVersion" }, 1690 { 0x20, 0x030d, "PropertyReleaseDate" }, 1691 { 0x20, 0x030e, "PropertyReportInterval" }, 1692 { 0x20, 0x030f, "PropertyChangeSensitivityAbsolute" }, 1693 { 0x20, 0x0310, "PropertyChangeSensitivityPercentofRange" }, 1694 { 0x20, 0x0311, "PropertyChangeSensitivityPercentRelative" }, 1695 { 0x20, 0x0312, "PropertyAccuracy" }, 1696 { 0x20, 0x0313, "PropertyResolution" }, 1697 { 0x20, 0x0314, "PropertyMaximum" }, 1698 { 0x20, 0x0315, "PropertyMinimum" }, 1699 { 0x20, 0x0316, "PropertyReportingState" }, 1700 { 0x20, 0x0317, "PropertySamplingRate" }, 1701 { 0x20, 0x0318, "PropertyResponseCurve" }, 1702 { 0x20, 0x0319, "PropertyPowerState" }, 1703 { 0x20, 0x031a, "PropertyMaximumFIFOEvents" }, 1704 { 0x20, 0x031b, "PropertyReportLatency" }, 1705 { 0x20, 0x031c, "PropertyFlushFIFOEvents" }, 1706 { 0x20, 0x031d, "PropertyMaximumPowerConsumption" }, 1707 { 0x20, 0x031e, "PropertyIsPrimary" }, 1708 { 0x20, 0x031f, "PropertyHumanPresenceDetectionType" }, 1709 { 0x20, 0x0400, "DataFieldLocation" }, 1710 { 0x20, 0x0402, "DataFieldAltitudeAntennaSeaLevel" }, 1711 { 0x20, 0x0403, "DataFieldDifferentialReferenceStationID" }, 1712 { 0x20, 0x0404, "DataFieldAltitudeEllipsoidError" }, 1713 { 0x20, 0x0405, "DataFieldAltitudeEllipsoid" }, 1714 { 0x20, 0x0406, "DataFieldAltitudeSeaLevelError" }, 1715 { 0x20, 0x0407, "DataFieldAltitudeSeaLevel" }, 1716 { 0x20, 0x0408, "DataFieldDifferentialGPSDataAge" }, 1717 { 0x20, 0x0409, "DataFieldErrorRadius" }, 1718 { 0x20, 0x040a, "DataFieldFixQuality" }, 1719 { 0x20, 0x040b, "DataFieldFixType" }, 1720 { 0x20, 0x040c, "DataFieldGeoidalSeparation" }, 1721 { 0x20, 0x040d, "DataFieldGPSOperationMode" }, 1722 { 0x20, 0x040e, "DataFieldGPSSelectionMode" }, 1723 { 0x20, 0x040f, "DataFieldGPSStatus" }, 1724 { 0x20, 0x0410, "DataFieldPositionDilutionofPrecision" }, 1725 { 0x20, 0x0411, "DataFieldHorizontalDilutionofPrecision" }, 1726 { 0x20, 0x0412, "DataFieldVerticalDilutionofPrecision" }, 1727 { 0x20, 0x0413, "DataFieldLatitude" }, 1728 { 0x20, 0x0414, "DataFieldLongitude" }, 1729 { 0x20, 0x0415, "DataFieldTrueHeading" }, 1730 { 0x20, 0x0416, "DataFieldMagneticHeading" }, 1731 { 0x20, 0x0417, "DataFieldMagneticVariation" }, 1732 { 0x20, 0x0418, "DataFieldSpeed" }, 1733 { 0x20, 0x0419, "DataFieldSatellitesinView" }, 1734 { 0x20, 0x041a, "DataFieldSatellitesinViewAzimuth" }, 1735 { 0x20, 0x041b, "DataFieldSatellitesinViewElevation" }, 1736 { 0x20, 0x041c, "DataFieldSatellitesinViewIDs" }, 1737 { 0x20, 0x041d, "DataFieldSatellitesinViewPRNs" }, 1738 { 0x20, 0x041e, "DataFieldSatellitesinViewSNRatios" }, 1739 { 0x20, 0x041f, "DataFieldSatellitesUsedCount" }, 1740 { 0x20, 0x0420, "DataFieldSatellitesUsedPRNs" }, 1741 { 0x20, 0x0421, "DataFieldNMEASentence" }, 1742 { 0x20, 0x0422, "DataFieldAddressLine1" }, 1743 { 0x20, 0x0423, "DataFieldAddressLine2" }, 1744 { 0x20, 0x0424, "DataFieldCity" }, 1745 { 0x20, 0x0425, "DataFieldStateorProvince" }, 1746 { 0x20, 0x0426, "DataFieldCountryorRegion" }, 1747 { 0x20, 0x0427, "DataFieldPostalCode" }, 1748 { 0x20, 0x042a, "PropertyLocation" }, 1749 { 0x20, 0x042b, "PropertyLocationDesiredAccuracy" }, 1750 { 0x20, 0x0430, "DataFieldEnvironmental" }, 1751 { 0x20, 0x0431, "DataFieldAtmosphericPressure" }, 1752 { 0x20, 0x0433, "DataFieldRelativeHumidity" }, 1753 { 0x20, 0x0434, "DataFieldTemperature" }, 1754 { 0x20, 0x0435, "DataFieldWindDirection" }, 1755 { 0x20, 0x0436, "DataFieldWindSpeed" }, 1756 { 0x20, 0x0437, "DataFieldAirQualityIndex" }, 1757 { 0x20, 0x0438, "DataFieldEquivalentCO2" }, 1758 { 0x20, 0x0439, "DataFieldVolatileOrganicCompoundConcentration" }, 1759 { 0x20, 0x043a, "DataFieldObjectPresence" }, 1760 { 0x20, 0x043b, "DataFieldObjectProximityRange" }, 1761 { 0x20, 0x043c, "DataFieldObjectProximityOutofRange" }, 1762 { 0x20, 0x0440, "PropertyEnvironmental" }, 1763 { 0x20, 0x0441, "PropertyReferencePressure" }, 1764 { 0x20, 0x0450, "DataFieldMotion" }, 1765 { 0x20, 0x0451, "DataFieldMotionState" }, 1766 { 0x20, 0x0452, "DataFieldAcceleration" }, 1767 { 0x20, 0x0453, "DataFieldAccelerationAxisX" }, 1768 { 0x20, 0x0454, "DataFieldAccelerationAxisY" }, 1769 { 0x20, 0x0455, "DataFieldAccelerationAxisZ" }, 1770 { 0x20, 0x0456, "DataFieldAngularVelocity" }, 1771 { 0x20, 0x0457, "DataFieldAngularVelocityaboutXAxis" }, 1772 { 0x20, 0x0458, "DataFieldAngularVelocityaboutYAxis" }, 1773 { 0x20, 0x0459, "DataFieldAngularVelocityaboutZAxis" }, 1774 { 0x20, 0x045a, "DataFieldAngularPosition" }, 1775 { 0x20, 0x045b, "DataFieldAngularPositionaboutXAxis" }, 1776 { 0x20, 0x045c, "DataFieldAngularPositionaboutYAxis" }, 1777 { 0x20, 0x045d, "DataFieldAngularPositionaboutZAxis" }, 1778 { 0x20, 0x045e, "DataFieldMotionSpeed" }, 1779 { 0x20, 0x045f, "DataFieldMotionIntensity" }, 1780 { 0x20, 0x0470, "DataFieldOrientation" }, 1781 { 0x20, 0x0471, "DataFieldHeading" }, 1782 { 0x20, 0x0472, "DataFieldHeadingXAxis" }, 1783 { 0x20, 0x0473, "DataFieldHeadingYAxis" }, 1784 { 0x20, 0x0474, "DataFieldHeadingZAxis" }, 1785 { 0x20, 0x0475, "DataFieldHeadingCompensatedMagneticNorth" }, 1786 { 0x20, 0x0476, "DataFieldHeadingCompensatedTrueNorth" }, 1787 { 0x20, 0x0477, "DataFieldHeadingMagneticNorth" }, 1788 { 0x20, 0x0478, "DataFieldHeadingTrueNorth" }, 1789 { 0x20, 0x0479, "DataFieldDistance" }, 1790 { 0x20, 0x047a, "DataFieldDistanceXAxis" }, 1791 { 0x20, 0x047b, "DataFieldDistanceYAxis" }, 1792 { 0x20, 0x047c, "DataFieldDistanceZAxis" }, 1793 { 0x20, 0x047d, "DataFieldDistanceOutofRange" }, 1794 { 0x20, 0x047e, "DataFieldTilt" }, 1795 { 0x20, 0x047f, "DataFieldTiltXAxis" }, 1796 { 0x20, 0x0480, "DataFieldTiltYAxis" }, 1797 { 0x20, 0x0481, "DataFieldTiltZAxis" }, 1798 { 0x20, 0x0482, "DataFieldRotationMatrix" }, 1799 { 0x20, 0x0483, "DataFieldQuaternion" }, 1800 { 0x20, 0x0484, "DataFieldMagneticFlux" }, 1801 { 0x20, 0x0485, "DataFieldMagneticFluxXAxis" }, 1802 { 0x20, 0x0486, "DataFieldMagneticFluxYAxis" }, 1803 { 0x20, 0x0487, "DataFieldMagneticFluxZAxis" }, 1804 { 0x20, 0x0488, "DataFieldMagnetometerAccuracy" }, 1805 { 0x20, 0x0489, "DataFieldSimpleOrientationDirection" }, 1806 { 0x20, 0x0490, "DataFieldMechanical" }, 1807 { 0x20, 0x0491, "DataFieldBooleanSwitchState" }, 1808 { 0x20, 0x0492, "DataFieldBooleanSwitchArrayStates" }, 1809 { 0x20, 0x0493, "DataFieldMultivalueSwitchValue" }, 1810 { 0x20, 0x0494, "DataFieldForce" }, 1811 { 0x20, 0x0495, "DataFieldAbsolutePressure" }, 1812 { 0x20, 0x0496, "DataFieldGaugePressure" }, 1813 { 0x20, 0x0497, "DataFieldStrain" }, 1814 { 0x20, 0x0498, "DataFieldWeight" }, 1815 { 0x20, 0x04a0, "PropertyMechanical" }, 1816 { 0x20, 0x04a1, "PropertyVibrationState" }, 1817 { 0x20, 0x04a2, "PropertyForwardVibrationSpeed" }, 1818 { 0x20, 0x04a3, "PropertyBackwardVibrationSpeed" }, 1819 { 0x20, 0x04b0, "DataFieldBiometric" }, 1820 { 0x20, 0x04b1, "DataFieldHumanPresence" }, 1821 { 0x20, 0x04b2, "DataFieldHumanProximityRange" }, 1822 { 0x20, 0x04b3, "DataFieldHumanProximityOutofRange" }, 1823 { 0x20, 0x04b4, "DataFieldHumanTouchState" }, 1824 { 0x20, 0x04b5, "DataFieldBloodPressure" }, 1825 { 0x20, 0x04b6, "DataFieldBloodPressureDiastolic" }, 1826 { 0x20, 0x04b7, "DataFieldBloodPressureSystolic" }, 1827 { 0x20, 0x04b8, "DataFieldHeartRate" }, 1828 { 0x20, 0x04b9, "DataFieldRestingHeartRate" }, 1829 { 0x20, 0x04ba, "DataFieldHeartbeatInterval" }, 1830 { 0x20, 0x04bb, "DataFieldRespiratoryRate" }, 1831 { 0x20, 0x04bc, "DataFieldSpO2" }, 1832 { 0x20, 0x04bd, "DataFieldHumanAttentionDetected" }, 1833 { 0x20, 0x04be, "DataFieldHumanHeadAzimuth" }, 1834 { 0x20, 0x04bf, "DataFieldHumanHeadAltitude" }, 1835 { 0x20, 0x04c0, "DataFieldHumanHeadRoll" }, 1836 { 0x20, 0x04c1, "DataFieldHumanHeadPitch" }, 1837 { 0x20, 0x04c2, "DataFieldHumanHeadYaw" }, 1838 { 0x20, 0x04c3, "DataFieldHumanCorrelationId" }, 1839 { 0x20, 0x04d0, "DataFieldLight" }, 1840 { 0x20, 0x04d1, "DataFieldIlluminance" }, 1841 { 0x20, 0x04d2, "DataFieldColorTemperature" }, 1842 { 0x20, 0x04d3, "DataFieldChromaticity" }, 1843 { 0x20, 0x04d4, "DataFieldChromaticityX" }, 1844 { 0x20, 0x04d5, "DataFieldChromaticityY" }, 1845 { 0x20, 0x04d6, "DataFieldConsumerIRSentenceReceive" }, 1846 { 0x20, 0x04d7, "DataFieldInfraredLight" }, 1847 { 0x20, 0x04d8, "DataFieldRedLight" }, 1848 { 0x20, 0x04d9, "DataFieldGreenLight" }, 1849 { 0x20, 0x04da, "DataFieldBlueLight" }, 1850 { 0x20, 0x04db, "DataFieldUltravioletALight" }, 1851 { 0x20, 0x04dc, "DataFieldUltravioletBLight" }, 1852 { 0x20, 0x04dd, "DataFieldUltravioletIndex" }, 1853 { 0x20, 0x04de, "DataFieldNearInfraredLight" }, 1854 { 0x20, 0x04df, "PropertyLight" }, 1855 { 0x20, 0x04e0, "PropertyConsumerIRSentenceSend" }, 1856 { 0x20, 0x04e2, "PropertyAutoBrightnessPreferred" }, 1857 { 0x20, 0x04e3, "PropertyAutoColorPreferred" }, 1858 { 0x20, 0x04f0, "DataFieldScanner" }, 1859 { 0x20, 0x04f1, "DataFieldRFIDTag40Bit" }, 1860 { 0x20, 0x04f2, "DataFieldNFCSentenceReceive" }, 1861 { 0x20, 0x04f8, "PropertyScanner" }, 1862 { 0x20, 0x04f9, "PropertyNFCSentenceSend" }, 1863 { 0x20, 0x0500, "DataFieldElectrical" }, 1864 { 0x20, 0x0501, "DataFieldCapacitance" }, 1865 { 0x20, 0x0502, "DataFieldCurrent" }, 1866 { 0x20, 0x0503, "DataFieldElectricalPower" }, 1867 { 0x20, 0x0504, "DataFieldInductance" }, 1868 { 0x20, 0x0505, "DataFieldResistance" }, 1869 { 0x20, 0x0506, "DataFieldVoltage" }, 1870 { 0x20, 0x0507, "DataFieldFrequency" }, 1871 { 0x20, 0x0508, "DataFieldPeriod" }, 1872 { 0x20, 0x0509, "DataFieldPercentofRange" }, 1873 { 0x20, 0x0520, "DataFieldTime" }, 1874 { 0x20, 0x0521, "DataFieldYear" }, 1875 { 0x20, 0x0522, "DataFieldMonth" }, 1876 { 0x20, 0x0523, "DataFieldDay" }, 1877 { 0x20, 0x0524, "DataFieldDayofWeek" }, 1878 { 0x20, 0x0525, "DataFieldHour" }, 1879 { 0x20, 0x0526, "DataFieldMinute" }, 1880 { 0x20, 0x0527, "DataFieldSecond" }, 1881 { 0x20, 0x0528, "DataFieldMillisecond" }, 1882 { 0x20, 0x0529, "DataFieldTimestamp" }, 1883 { 0x20, 0x052a, "DataFieldJulianDayofYear" }, 1884 { 0x20, 0x052b, "DataFieldTimeSinceSystemBoot" }, 1885 { 0x20, 0x0530, "PropertyTime" }, 1886 { 0x20, 0x0531, "PropertyTimeZoneOffsetfromUTC" }, 1887 { 0x20, 0x0532, "PropertyTimeZoneName" }, 1888 { 0x20, 0x0533, "PropertyDaylightSavingsTimeObserved" }, 1889 { 0x20, 0x0534, "PropertyTimeTrimAdjustment" }, 1890 { 0x20, 0x0535, "PropertyArmAlarm" }, 1891 { 0x20, 0x0540, "DataFieldCustom" }, 1892 { 0x20, 0x0541, "DataFieldCustomUsage" }, 1893 { 0x20, 0x0542, "DataFieldCustomBooleanArray" }, 1894 { 0x20, 0x0543, "DataFieldCustomValue" }, 1895 { 0x20, 0x0544, "DataFieldCustomValue1" }, 1896 { 0x20, 0x0545, "DataFieldCustomValue2" }, 1897 { 0x20, 0x0546, "DataFieldCustomValue3" }, 1898 { 0x20, 0x0547, "DataFieldCustomValue4" }, 1899 { 0x20, 0x0548, "DataFieldCustomValue5" }, 1900 { 0x20, 0x0549, "DataFieldCustomValue6" }, 1901 { 0x20, 0x054a, "DataFieldCustomValue7" }, 1902 { 0x20, 0x054b, "DataFieldCustomValue8" }, 1903 { 0x20, 0x054c, "DataFieldCustomValue9" }, 1904 { 0x20, 0x054d, "DataFieldCustomValue10" }, 1905 { 0x20, 0x054e, "DataFieldCustomValue11" }, 1906 { 0x20, 0x054f, "DataFieldCustomValue12" }, 1907 { 0x20, 0x0550, "DataFieldCustomValue13" }, 1908 { 0x20, 0x0551, "DataFieldCustomValue14" }, 1909 { 0x20, 0x0552, "DataFieldCustomValue15" }, 1910 { 0x20, 0x0553, "DataFieldCustomValue16" }, 1911 { 0x20, 0x0554, "DataFieldCustomValue17" }, 1912 { 0x20, 0x0555, "DataFieldCustomValue18" }, 1913 { 0x20, 0x0556, "DataFieldCustomValue19" }, 1914 { 0x20, 0x0557, "DataFieldCustomValue20" }, 1915 { 0x20, 0x0558, "DataFieldCustomValue21" }, 1916 { 0x20, 0x0559, "DataFieldCustomValue22" }, 1917 { 0x20, 0x055a, "DataFieldCustomValue23" }, 1918 { 0x20, 0x055b, "DataFieldCustomValue24" }, 1919 { 0x20, 0x055c, "DataFieldCustomValue25" }, 1920 { 0x20, 0x055d, "DataFieldCustomValue26" }, 1921 { 0x20, 0x055e, "DataFieldCustomValue27" }, 1922 { 0x20, 0x055f, "DataFieldCustomValue28" }, 1923 { 0x20, 0x0560, "DataFieldGeneric" }, 1924 { 0x20, 0x0561, "DataFieldGenericGUIDorPROPERTYKEY" }, 1925 { 0x20, 0x0562, "DataFieldGenericCategoryGUID" }, 1926 { 0x20, 0x0563, "DataFieldGenericTypeGUID" }, 1927 { 0x20, 0x0564, "DataFieldGenericEventPROPERTYKEY" }, 1928 { 0x20, 0x0565, "DataFieldGenericPropertyPROPERTYKEY" }, 1929 { 0x20, 0x0566, "DataFieldGenericDataFieldPROPERTYKEY" }, 1930 { 0x20, 0x0567, "DataFieldGenericEvent" }, 1931 { 0x20, 0x0568, "DataFieldGenericProperty" }, 1932 { 0x20, 0x0569, "DataFieldGenericDataField" }, 1933 { 0x20, 0x056a, "DataFieldEnumeratorTableRowIndex" }, 1934 { 0x20, 0x056b, "DataFieldEnumeratorTableRowCount" }, 1935 { 0x20, 0x056c, "DataFieldGenericGUIDorPROPERTYKEYkind" }, 1936 { 0x20, 0x056d, "DataFieldGenericGUID" }, 1937 { 0x20, 0x056e, "DataFieldGenericPROPERTYKEY" }, 1938 { 0x20, 0x056f, "DataFieldGenericTopLevelCollectionID" }, 1939 { 0x20, 0x0570, "DataFieldGenericReportID" }, 1940 { 0x20, 0x0571, "DataFieldGenericReportItemPositionIndex" }, 1941 { 0x20, 0x0572, "DataFieldGenericFirmwareVARTYPE" }, 1942 { 0x20, 0x0573, "DataFieldGenericUnitofMeasure" }, 1943 { 0x20, 0x0574, "DataFieldGenericUnitExponent" }, 1944 { 0x20, 0x0575, "DataFieldGenericReportSize" }, 1945 { 0x20, 0x0576, "DataFieldGenericReportCount" }, 1946 { 0x20, 0x0580, "PropertyGeneric" }, 1947 { 0x20, 0x0581, "PropertyEnumeratorTableRowIndex" }, 1948 { 0x20, 0x0582, "PropertyEnumeratorTableRowCount" }, 1949 { 0x20, 0x0590, "DataFieldPersonalActivity" }, 1950 { 0x20, 0x0591, "DataFieldActivityType" }, 1951 { 0x20, 0x0592, "DataFieldActivityState" }, 1952 { 0x20, 0x0593, "DataFieldDevicePosition" }, 1953 { 0x20, 0x0594, "DataFieldStepCount" }, 1954 { 0x20, 0x0595, "DataFieldStepCountReset" }, 1955 { 0x20, 0x0596, "DataFieldStepDuration" }, 1956 { 0x20, 0x0597, "DataFieldStepType" }, 1957 { 0x20, 0x05a0, "PropertyMinimumActivityDetectionInterval" }, 1958 { 0x20, 0x05a1, "PropertySupportedActivityTypes" }, 1959 { 0x20, 0x05a2, "PropertySubscribedActivityTypes" }, 1960 { 0x20, 0x05a3, "PropertySupportedStepTypes" }, 1961 { 0x20, 0x05a4, "PropertySubscribedStepTypes" }, 1962 { 0x20, 0x05a5, "PropertyFloorHeight" }, 1963 { 0x20, 0x05b0, "DataFieldCustomTypeID" }, 1964 { 0x20, 0x05c0, "PropertyCustom" }, 1965 { 0x20, 0x05c1, "PropertyCustomValue1" }, 1966 { 0x20, 0x05c2, "PropertyCustomValue2" }, 1967 { 0x20, 0x05c3, "PropertyCustomValue3" }, 1968 { 0x20, 0x05c4, "PropertyCustomValue4" }, 1969 { 0x20, 0x05c5, "PropertyCustomValue5" }, 1970 { 0x20, 0x05c6, "PropertyCustomValue6" }, 1971 { 0x20, 0x05c7, "PropertyCustomValue7" }, 1972 { 0x20, 0x05c8, "PropertyCustomValue8" }, 1973 { 0x20, 0x05c9, "PropertyCustomValue9" }, 1974 { 0x20, 0x05ca, "PropertyCustomValue10" }, 1975 { 0x20, 0x05cb, "PropertyCustomValue11" }, 1976 { 0x20, 0x05cc, "PropertyCustomValue12" }, 1977 { 0x20, 0x05cd, "PropertyCustomValue13" }, 1978 { 0x20, 0x05ce, "PropertyCustomValue14" }, 1979 { 0x20, 0x05cf, "PropertyCustomValue15" }, 1980 { 0x20, 0x05d0, "PropertyCustomValue16" }, 1981 { 0x20, 0x05e0, "DataFieldHinge" }, 1982 { 0x20, 0x05e1, "DataFieldHingeAngle" }, 1983 { 0x20, 0x05f0, "DataFieldGestureSensor" }, 1984 { 0x20, 0x05f1, "DataFieldGestureState" }, 1985 { 0x20, 0x05f2, "DataFieldHingeFoldInitialAngle" }, 1986 { 0x20, 0x05f3, "DataFieldHingeFoldFinalAngle" }, 1987 { 0x20, 0x05f4, "DataFieldHingeFoldContributingPanel" }, 1988 { 0x20, 0x05f5, "DataFieldHingeFoldType" }, 1989 { 0x20, 0x0800, "SensorStateUndefined" }, 1990 { 0x20, 0x0801, "SensorStateReady" }, 1991 { 0x20, 0x0802, "SensorStateNotAvailable" }, 1992 { 0x20, 0x0803, "SensorStateNoData" }, 1993 { 0x20, 0x0804, "SensorStateInitializing" }, 1994 { 0x20, 0x0805, "SensorStateAccessDenied" }, 1995 { 0x20, 0x0806, "SensorStateError" }, 1996 { 0x20, 0x0810, "SensorEventUnknown" }, 1997 { 0x20, 0x0811, "SensorEventStateChanged" }, 1998 { 0x20, 0x0812, "SensorEventPropertyChanged" }, 1999 { 0x20, 0x0813, "SensorEventDataUpdated" }, 2000 { 0x20, 0x0814, "SensorEventPollResponse" }, 2001 { 0x20, 0x0815, "SensorEventChangeSensitivity" }, 2002 { 0x20, 0x0816, "SensorEventRangeMaximumReached" }, 2003 { 0x20, 0x0817, "SensorEventRangeMinimumReached" }, 2004 { 0x20, 0x0818, "SensorEventHighThresholdCrossUpward" }, 2005 { 0x20, 0x0819, "SensorEventHighThresholdCrossDownward" }, 2006 { 0x20, 0x081a, "SensorEventLowThresholdCrossUpward" }, 2007 { 0x20, 0x081b, "SensorEventLowThresholdCrossDownward" }, 2008 { 0x20, 0x081c, "SensorEventZeroThresholdCrossUpward" }, 2009 { 0x20, 0x081d, "SensorEventZeroThresholdCrossDownward" }, 2010 { 0x20, 0x081e, "SensorEventPeriodExceeded" }, 2011 { 0x20, 0x081f, "SensorEventFrequencyExceeded" }, 2012 { 0x20, 0x0820, "SensorEventComplexTrigger" }, 2013 { 0x20, 0x0830, "ConnectionTypePCIntegrated" }, 2014 { 0x20, 0x0831, "ConnectionTypePCAttached" }, 2015 { 0x20, 0x0832, "ConnectionTypePCExternal" }, 2016 { 0x20, 0x0840, "ReportingStateReportNoEvents" }, 2017 { 0x20, 0x0841, "ReportingStateReportAllEvents" }, 2018 { 0x20, 0x0842, "ReportingStateReportThresholdEvents" }, 2019 { 0x20, 0x0843, "ReportingStateWakeOnNoEvents" }, 2020 { 0x20, 0x0844, "ReportingStateWakeOnAllEvents" }, 2021 { 0x20, 0x0845, "ReportingStateWakeOnThresholdEvents" }, 2022 { 0x20, 0x0846, "ReportingStateAnytime" }, 2023 { 0x20, 0x0850, "PowerStateUndefined" }, 2024 { 0x20, 0x0851, "PowerStateD0FullPower" }, 2025 { 0x20, 0x0852, "PowerStateD1LowPower" }, 2026 { 0x20, 0x0853, "PowerStateD2StandbyPowerwithWakeup" }, 2027 { 0x20, 0x0854, "PowerStateD3SleepwithWakeup" }, 2028 { 0x20, 0x0855, "PowerStateD4PowerOff" }, 2029 { 0x20, 0x0860, "AccuracyDefault" }, 2030 { 0x20, 0x0861, "AccuracyHigh" }, 2031 { 0x20, 0x0862, "AccuracyMedium" }, 2032 { 0x20, 0x0863, "AccuracyLow" }, 2033 { 0x20, 0x0870, "FixQualityNoFix" }, 2034 { 0x20, 0x0871, "FixQualityGPS" }, 2035 { 0x20, 0x0872, "FixQualityDGPS" }, 2036 { 0x20, 0x0880, "FixTypeNoFix" }, 2037 { 0x20, 0x0881, "FixTypeGPSSPSModeFixValid" }, 2038 { 0x20, 0x0882, "FixTypeDGPSSPSModeFixValid" }, 2039 { 0x20, 0x0883, "FixTypeGPSPPSModeFixValid" }, 2040 { 0x20, 0x0884, "FixTypeRealTimeKinematic" }, 2041 { 0x20, 0x0885, "FixTypeFloatRTK" }, 2042 { 0x20, 0x0886, "FixTypeEstimateddeadreckoned" }, 2043 { 0x20, 0x0887, "FixTypeManualInputMode" }, 2044 { 0x20, 0x0888, "FixTypeSimulatorMode" }, 2045 { 0x20, 0x0890, "GPSOperationModeManual" }, 2046 { 0x20, 0x0891, "GPSOperationModeAutomatic" }, 2047 { 0x20, 0x08a0, "GPSSelectionModeAutonomous" }, 2048 { 0x20, 0x08a1, "GPSSelectionModeDGPS" }, 2049 { 0x20, 0x08a2, "GPSSelectionModeEstimateddeadreckoned" }, 2050 { 0x20, 0x08a3, "GPSSelectionModeManualInput" }, 2051 { 0x20, 0x08a4, "GPSSelectionModeSimulator" }, 2052 { 0x20, 0x08a5, "GPSSelectionModeDataNotValid" }, 2053 { 0x20, 0x08b0, "GPSStatusDataValid" }, 2054 { 0x20, 0x08b1, "GPSStatusDataNotValid" }, 2055 { 0x20, 0x08c0, "DayofWeekSunday" }, 2056 { 0x20, 0x08c1, "DayofWeekMonday" }, 2057 { 0x20, 0x08c2, "DayofWeekTuesday" }, 2058 { 0x20, 0x08c3, "DayofWeekWednesday" }, 2059 { 0x20, 0x08c4, "DayofWeekThursday" }, 2060 { 0x20, 0x08c5, "DayofWeekFriday" }, 2061 { 0x20, 0x08c6, "DayofWeekSaturday" }, 2062 { 0x20, 0x08d0, "KindCategory" }, 2063 { 0x20, 0x08d1, "KindType" }, 2064 { 0x20, 0x08d2, "KindEvent" }, 2065 { 0x20, 0x08d3, "KindProperty" }, 2066 { 0x20, 0x08d4, "KindDataField" }, 2067 { 0x20, 0x08e0, "MagnetometerAccuracyLow" }, 2068 { 0x20, 0x08e1, "MagnetometerAccuracyMedium" }, 2069 { 0x20, 0x08e2, "MagnetometerAccuracyHigh" }, 2070 { 0x20, 0x08f0, "SimpleOrientationDirectionNotRotated" }, 2071 { 0x20, 0x08f1, "SimpleOrientationDirectionRotated90DegreesCCW" }, 2072 { 0x20, 0x08f2, "SimpleOrientationDirectionRotated180DegreesCCW" }, 2073 { 0x20, 0x08f3, "SimpleOrientationDirectionRotated270DegreesCCW" }, 2074 { 0x20, 0x08f4, "SimpleOrientationDirectionFaceUp" }, 2075 { 0x20, 0x08f5, "SimpleOrientationDirectionFaceDown" }, 2076 { 0x20, 0x0900, "VT_NULL" }, 2077 { 0x20, 0x0901, "VT_BOOL" }, 2078 { 0x20, 0x0902, "VT_UI1" }, 2079 { 0x20, 0x0903, "VT_I1" }, 2080 { 0x20, 0x0904, "VT_UI2" }, 2081 { 0x20, 0x0905, "VT_I2" }, 2082 { 0x20, 0x0906, "VT_UI4" }, 2083 { 0x20, 0x0907, "VT_I4" }, 2084 { 0x20, 0x0908, "VT_UI8" }, 2085 { 0x20, 0x0909, "VT_I8" }, 2086 { 0x20, 0x090a, "VT_R4" }, 2087 { 0x20, 0x090b, "VT_R8" }, 2088 { 0x20, 0x090c, "VT_WSTR" }, 2089 { 0x20, 0x090d, "VT_STR" }, 2090 { 0x20, 0x090e, "VT_CLSID" }, 2091 { 0x20, 0x090f, "VT_VECTORVT_UI1" }, 2092 { 0x20, 0x0910, "VT_F16E0" }, 2093 { 0x20, 0x0911, "VT_F16E1" }, 2094 { 0x20, 0x0912, "VT_F16E2" }, 2095 { 0x20, 0x0913, "VT_F16E3" }, 2096 { 0x20, 0x0914, "VT_F16E4" }, 2097 { 0x20, 0x0915, "VT_F16E5" }, 2098 { 0x20, 0x0916, "VT_F16E6" }, 2099 { 0x20, 0x0917, "VT_F16E7" }, 2100 { 0x20, 0x0918, "VT_F16E8" }, 2101 { 0x20, 0x0919, "VT_F16E9" }, 2102 { 0x20, 0x091a, "VT_F16EA" }, 2103 { 0x20, 0x091b, "VT_F16EB" }, 2104 { 0x20, 0x091c, "VT_F16EC" }, 2105 { 0x20, 0x091d, "VT_F16ED" }, 2106 { 0x20, 0x091e, "VT_F16EE" }, 2107 { 0x20, 0x091f, "VT_F16EF" }, 2108 { 0x20, 0x0920, "VT_F32E0" }, 2109 { 0x20, 0x0921, "VT_F32E1" }, 2110 { 0x20, 0x0922, "VT_F32E2" }, 2111 { 0x20, 0x0923, "VT_F32E3" }, 2112 { 0x20, 0x0924, "VT_F32E4" }, 2113 { 0x20, 0x0925, "VT_F32E5" }, 2114 { 0x20, 0x0926, "VT_F32E6" }, 2115 { 0x20, 0x0927, "VT_F32E7" }, 2116 { 0x20, 0x0928, "VT_F32E8" }, 2117 { 0x20, 0x0929, "VT_F32E9" }, 2118 { 0x20, 0x092a, "VT_F32EA" }, 2119 { 0x20, 0x092b, "VT_F32EB" }, 2120 { 0x20, 0x092c, "VT_F32EC" }, 2121 { 0x20, 0x092d, "VT_F32ED" }, 2122 { 0x20, 0x092e, "VT_F32EE" }, 2123 { 0x20, 0x092f, "VT_F32EF" }, 2124 { 0x20, 0x0930, "ActivityTypeUnknown" }, 2125 { 0x20, 0x0931, "ActivityTypeStationary" }, 2126 { 0x20, 0x0932, "ActivityTypeFidgeting" }, 2127 { 0x20, 0x0933, "ActivityTypeWalking" }, 2128 { 0x20, 0x0934, "ActivityTypeRunning" }, 2129 { 0x20, 0x0935, "ActivityTypeInVehicle" }, 2130 { 0x20, 0x0936, "ActivityTypeBiking" }, 2131 { 0x20, 0x0937, "ActivityTypeIdle" }, 2132 { 0x20, 0x0940, "UnitNotSpecified" }, 2133 { 0x20, 0x0941, "UnitLux" }, 2134 { 0x20, 0x0942, "UnitDegreesKelvin" }, 2135 { 0x20, 0x0943, "UnitDegreesCelsius" }, 2136 { 0x20, 0x0944, "UnitPascal" }, 2137 { 0x20, 0x0945, "UnitNewton" }, 2138 { 0x20, 0x0946, "UnitMetersSecond" }, 2139 { 0x20, 0x0947, "UnitKilogram" }, 2140 { 0x20, 0x0948, "UnitMeter" }, 2141 { 0x20, 0x0949, "UnitMetersSecondSecond" }, 2142 { 0x20, 0x094a, "UnitFarad" }, 2143 { 0x20, 0x094b, "UnitAmpere" }, 2144 { 0x20, 0x094c, "UnitWatt" }, 2145 { 0x20, 0x094d, "UnitHenry" }, 2146 { 0x20, 0x094e, "UnitOhm" }, 2147 { 0x20, 0x094f, "UnitVolt" }, 2148 { 0x20, 0x0950, "UnitHertz" }, 2149 { 0x20, 0x0951, "UnitBar" }, 2150 { 0x20, 0x0952, "UnitDegreesAnticlockwise" }, 2151 { 0x20, 0x0953, "UnitDegreesClockwise" }, 2152 { 0x20, 0x0954, "UnitDegrees" }, 2153 { 0x20, 0x0955, "UnitDegreesSecond" }, 2154 { 0x20, 0x0956, "UnitDegreesSecondSecond" }, 2155 { 0x20, 0x0957, "UnitKnot" }, 2156 { 0x20, 0x0958, "UnitPercent" }, 2157 { 0x20, 0x0959, "UnitSecond" }, 2158 { 0x20, 0x095a, "UnitMillisecond" }, 2159 { 0x20, 0x095b, "UnitG" }, 2160 { 0x20, 0x095c, "UnitBytes" }, 2161 { 0x20, 0x095d, "UnitMilligauss" }, 2162 { 0x20, 0x095e, "UnitBits" }, 2163 { 0x20, 0x0960, "ActivityStateNoStateChange" }, 2164 { 0x20, 0x0961, "ActivityStateStartActivity" }, 2165 { 0x20, 0x0962, "ActivityStateEndActivity" }, 2166 { 0x20, 0x0970, "Exponent0" }, 2167 { 0x20, 0x0971, "Exponent1" }, 2168 { 0x20, 0x0972, "Exponent2" }, 2169 { 0x20, 0x0973, "Exponent3" }, 2170 { 0x20, 0x0974, "Exponent4" }, 2171 { 0x20, 0x0975, "Exponent5" }, 2172 { 0x20, 0x0976, "Exponent6" }, 2173 { 0x20, 0x0977, "Exponent7" }, 2174 { 0x20, 0x0978, "Exponent8" }, 2175 { 0x20, 0x0979, "Exponent9" }, 2176 { 0x20, 0x097a, "ExponentA" }, 2177 { 0x20, 0x097b, "ExponentB" }, 2178 { 0x20, 0x097c, "ExponentC" }, 2179 { 0x20, 0x097d, "ExponentD" }, 2180 { 0x20, 0x097e, "ExponentE" }, 2181 { 0x20, 0x097f, "ExponentF" }, 2182 { 0x20, 0x0980, "DevicePositionUnknown" }, 2183 { 0x20, 0x0981, "DevicePositionUnchanged" }, 2184 { 0x20, 0x0982, "DevicePositionOnDesk" }, 2185 { 0x20, 0x0983, "DevicePositionInHand" }, 2186 { 0x20, 0x0984, "DevicePositionMovinginBag" }, 2187 { 0x20, 0x0985, "DevicePositionStationaryinBag" }, 2188 { 0x20, 0x0990, "StepTypeUnknown" }, 2189 { 0x20, 0x0991, "StepTypeWalking" }, 2190 { 0x20, 0x0992, "StepTypeRunning" }, 2191 { 0x20, 0x09a0, "GestureStateUnknown" }, 2192 { 0x20, 0x09a1, "GestureStateStarted" }, 2193 { 0x20, 0x09a2, "GestureStateCompleted" }, 2194 { 0x20, 0x09a3, "GestureStateCancelled" }, 2195 { 0x20, 0x09b0, "HingeFoldContributingPanelUnknown" }, 2196 { 0x20, 0x09b1, "HingeFoldContributingPanelPanel1" }, 2197 { 0x20, 0x09b2, "HingeFoldContributingPanelPanel2" }, 2198 { 0x20, 0x09b3, "HingeFoldContributingPanelBoth" }, 2199 { 0x20, 0x09b4, "HingeFoldTypeUnknown" }, 2200 { 0x20, 0x09b5, "HingeFoldTypeIncreasing" }, 2201 { 0x20, 0x09b6, "HingeFoldTypeDecreasing" }, 2202 { 0x20, 0x09c0, "HumanPresenceDetectionTypeVendorDefinedNonBiometric" }, 2203 { 0x20, 0x09c1, "HumanPresenceDetectionTypeVendorDefinedBiometric" }, 2204 { 0x20, 0x09c2, "HumanPresenceDetectionTypeFacialBiometric" }, 2205 { 0x20, 0x09c3, "HumanPresenceDetectionTypeAudioBiometric" }, 2206 { 0x20, 0x1000, "ModifierChangeSensitivityAbsolute" }, 2207 { 0x20, 0x2000, "ModifierMaximum" }, 2208 { 0x20, 0x3000, "ModifierMinimum" }, 2209 { 0x20, 0x4000, "ModifierAccuracy" }, 2210 { 0x20, 0x5000, "ModifierResolution" }, 2211 { 0x20, 0x6000, "ModifierThresholdHigh" }, 2212 { 0x20, 0x7000, "ModifierThresholdLow" }, 2213 { 0x20, 0x8000, "ModifierCalibrationOffset" }, 2214 { 0x20, 0x9000, "ModifierCalibrationMultiplier" }, 2215 { 0x20, 0xa000, "ModifierReportInterval" }, 2216 { 0x20, 0xb000, "ModifierFrequencyMax" }, 2217 { 0x20, 0xc000, "ModifierPeriodMax" }, 2218 { 0x20, 0xd000, "ModifierChangeSensitivityPercentofRange" }, 2219 { 0x20, 0xe000, "ModifierChangeSensitivityPercentRelative" }, 2220 { 0x20, 0xf000, "ModifierVendorReserved" }, 2221 { 0x40, 0, "MedicalInstrument" }, 2222 { 0x40, 0x0001, "MedicalUltrasound" }, 2223 { 0x40, 0x0020, "VCRAcquisition" }, 2224 { 0x40, 0x0021, "FreezeThaw" }, 2225 { 0x40, 0x0022, "ClipStore" }, 2226 { 0x40, 0x0023, "Update" }, 2227 { 0x40, 0x0024, "Next" }, 2228 { 0x40, 0x0025, "Save" }, 2229 { 0x40, 0x0026, "Print" }, 2230 { 0x40, 0x0027, "MicrophoneEnable" }, 2231 { 0x40, 0x0040, "Cine" }, 2232 { 0x40, 0x0041, "TransmitPower" }, 2233 { 0x40, 0x0042, "Volume" }, 2234 { 0x40, 0x0043, "Focus" }, 2235 { 0x40, 0x0044, "Depth" }, 2236 { 0x40, 0x0060, "SoftStepPrimary" }, 2237 { 0x40, 0x0061, "SoftStepSecondary" }, 2238 { 0x40, 0x0070, "DepthGainCompensation" }, 2239 { 0x40, 0x0080, "ZoomSelect" }, 2240 { 0x40, 0x0081, "ZoomAdjust" }, 2241 { 0x40, 0x0082, "SpectralDopplerModeSelect" }, 2242 { 0x40, 0x0083, "SpectralDopplerAdjust" }, 2243 { 0x40, 0x0084, "ColorDopplerModeSelect" }, 2244 { 0x40, 0x0085, "ColorDopplerAdjust" }, 2245 { 0x40, 0x0086, "MotionModeSelect" }, 2246 { 0x40, 0x0087, "MotionModeAdjust" }, 2247 { 0x40, 0x0088, "2DModeSelect" }, 2248 { 0x40, 0x0089, "2DModeAdjust" }, 2249 { 0x40, 0x00a0, "SoftControlSelect" }, 2250 { 0x40, 0x00a1, "SoftControlAdjust" }, 2251 { 0x41, 0, "BrailleDisplay" }, 2252 { 0x41, 0x0001, "BrailleDisplay" }, 2253 { 0x41, 0x0002, "BrailleRow" }, 2254 { 0x41, 0x0003, "8DotBrailleCell" }, 2255 { 0x41, 0x0004, "6DotBrailleCell" }, 2256 { 0x41, 0x0005, "NumberofBrailleCells" }, 2257 { 0x41, 0x0006, "ScreenReaderControl" }, 2258 { 0x41, 0x0007, "ScreenReaderIdentifier" }, 2259 { 0x41, 0x00fa, "RouterSet1" }, 2260 { 0x41, 0x00fb, "RouterSet2" }, 2261 { 0x41, 0x00fc, "RouterSet3" }, 2262 { 0x41, 0x0100, "RouterKey" }, 2263 { 0x41, 0x0101, "RowRouterKey" }, 2264 { 0x41, 0x0200, "BrailleButtons" }, 2265 { 0x41, 0x0201, "BrailleKeyboardDot1" }, 2266 { 0x41, 0x0202, "BrailleKeyboardDot2" }, 2267 { 0x41, 0x0203, "BrailleKeyboardDot3" }, 2268 { 0x41, 0x0204, "BrailleKeyboardDot4" }, 2269 { 0x41, 0x0205, "BrailleKeyboardDot5" }, 2270 { 0x41, 0x0206, "BrailleKeyboardDot6" }, 2271 { 0x41, 0x0207, "BrailleKeyboardDot7" }, 2272 { 0x41, 0x0208, "BrailleKeyboardDot8" }, 2273 { 0x41, 0x0209, "BrailleKeyboardSpace" }, 2274 { 0x41, 0x020a, "BrailleKeyboardLeftSpace" }, 2275 { 0x41, 0x020b, "BrailleKeyboardRightSpace" }, 2276 { 0x41, 0x020c, "BrailleFaceControls" }, 2277 { 0x41, 0x020d, "BrailleLeftControls" }, 2278 { 0x41, 0x020e, "BrailleRightControls" }, 2279 { 0x41, 0x020f, "BrailleTopControls" }, 2280 { 0x41, 0x0210, "BrailleJoystickCenter" }, 2281 { 0x41, 0x0211, "BrailleJoystickUp" }, 2282 { 0x41, 0x0212, "BrailleJoystickDown" }, 2283 { 0x41, 0x0213, "BrailleJoystickLeft" }, 2284 { 0x41, 0x0214, "BrailleJoystickRight" }, 2285 { 0x41, 0x0215, "BrailleDPadCenter" }, 2286 { 0x41, 0x0216, "BrailleDPadUp" }, 2287 { 0x41, 0x0217, "BrailleDPadDown" }, 2288 { 0x41, 0x0218, "BrailleDPadLeft" }, 2289 { 0x41, 0x0219, "BrailleDPadRight" }, 2290 { 0x41, 0x021a, "BraillePanLeft" }, 2291 { 0x41, 0x021b, "BraillePanRight" }, 2292 { 0x41, 0x021c, "BrailleRockerUp" }, 2293 { 0x41, 0x021d, "BrailleRockerDown" }, 2294 { 0x41, 0x021e, "BrailleRockerPress" }, 2295 { 0x59, 0, "LightingAndIllumination" }, 2296 { 0x59, 0x0001, "LampArray" }, 2297 { 0x59, 0x0002, "LampArrayAttributesReport" }, 2298 { 0x59, 0x0003, "LampCount" }, 2299 { 0x59, 0x0004, "BoundingBoxWidthInMicrometers" }, 2300 { 0x59, 0x0005, "BoundingBoxHeightInMicrometers" }, 2301 { 0x59, 0x0006, "BoundingBoxDepthInMicrometers" }, 2302 { 0x59, 0x0007, "LampArrayKind" }, 2303 { 0x59, 0x0008, "MinUpdateIntervalInMicroseconds" }, 2304 { 0x59, 0x0020, "LampAttributesRequestReport" }, 2305 { 0x59, 0x0021, "LampId" }, 2306 { 0x59, 0x0022, "LampAttributesResponseReport" }, 2307 { 0x59, 0x0023, "PositionXInMicrometers" }, 2308 { 0x59, 0x0024, "PositionYInMicrometers" }, 2309 { 0x59, 0x0025, "PositionZInMicrometers" }, 2310 { 0x59, 0x0026, "LampPurposes" }, 2311 { 0x59, 0x0027, "UpdateLatencyInMicroseconds" }, 2312 { 0x59, 0x0028, "RedLevelCount" }, 2313 { 0x59, 0x0029, "GreenLevelCount" }, 2314 { 0x59, 0x002a, "BlueLevelCount" }, 2315 { 0x59, 0x002b, "IntensityLevelCount" }, 2316 { 0x59, 0x002c, "IsProgrammable" }, 2317 { 0x59, 0x002d, "InputBinding" }, 2318 { 0x59, 0x0050, "LampMultiUpdateReport" }, 2319 { 0x59, 0x0051, "RedUpdateChannel" }, 2320 { 0x59, 0x0052, "GreenUpdateChannel" }, 2321 { 0x59, 0x0053, "BlueUpdateChannel" }, 2322 { 0x59, 0x0054, "IntensityUpdateChannel" }, 2323 { 0x59, 0x0055, "LampUpdateFlags" }, 2324 { 0x59, 0x0060, "LampRangeUpdateReport" }, 2325 { 0x59, 0x0061, "LampIdStart" }, 2326 { 0x59, 0x0062, "LampIdEnd" }, 2327 { 0x59, 0x0070, "LampArrayControlReport" }, 2328 { 0x59, 0x0071, "AutonomousMode" }, 2329 { 0x80, 0, "Monitor" }, 2330 { 0x80, 0x0001, "MonitorControl" }, 2331 { 0x80, 0x0002, "EDIDInformation" }, 2332 { 0x80, 0x0003, "VDIFInformation" }, 2333 { 0x80, 0x0004, "VESAVersion" }, 2334 { 0x81, 0, "MonitorEnumerated" }, 2335 { 0x82, 0, "VESAVirtualControls" }, 2336 { 0x82, 0x0001, "Degauss" }, 2337 { 0x82, 0x0010, "Brightness" }, 2338 { 0x82, 0x0012, "Contrast" }, 2339 { 0x82, 0x0016, "RedVideoGain" }, 2340 { 0x82, 0x0018, "GreenVideoGain" }, 2341 { 0x82, 0x001a, "BlueVideoGain" }, 2342 { 0x82, 0x001c, "Focus" }, 2343 { 0x82, 0x0020, "HorizontalPosition" }, 2344 { 0x82, 0x0022, "HorizontalSize" }, 2345 { 0x82, 0x0024, "HorizontalPincushion" }, 2346 { 0x82, 0x0026, "HorizontalPincushionBalance" }, 2347 { 0x82, 0x0028, "HorizontalMisconvergence" }, 2348 { 0x82, 0x002a, "HorizontalLinearity" }, 2349 { 0x82, 0x002c, "HorizontalLinearityBalance" }, 2350 { 0x82, 0x0030, "VerticalPosition" }, 2351 { 0x82, 0x0032, "VerticalSize" }, 2352 { 0x82, 0x0034, "VerticalPincushion" }, 2353 { 0x82, 0x0036, "VerticalPincushionBalance" }, 2354 { 0x82, 0x0038, "VerticalMisconvergence" }, 2355 { 0x82, 0x003a, "VerticalLinearity" }, 2356 { 0x82, 0x003c, "VerticalLinearityBalance" }, 2357 { 0x82, 0x0040, "ParallelogramDistortionKeyBalance" }, 2358 { 0x82, 0x0042, "TrapezoidalDistortionKey" }, 2359 { 0x82, 0x0044, "TiltRotation" }, 2360 { 0x82, 0x0046, "TopCornerDistortionControl" }, 2361 { 0x82, 0x0048, "TopCornerDistortionBalance" }, 2362 { 0x82, 0x004a, "BottomCornerDistortionControl" }, 2363 { 0x82, 0x004c, "BottomCornerDistortionBalance" }, 2364 { 0x82, 0x0056, "HorizontalMoire" }, 2365 { 0x82, 0x0058, "VerticalMoire" }, 2366 { 0x82, 0x005e, "InputLevelSelect" }, 2367 { 0x82, 0x0060, "InputSourceSelect" }, 2368 { 0x82, 0x006c, "RedVideoBlackLevel" }, 2369 { 0x82, 0x006e, "GreenVideoBlackLevel" }, 2370 { 0x82, 0x0070, "BlueVideoBlackLevel" }, 2371 { 0x82, 0x00a2, "AutoSizeCenter" }, 2372 { 0x82, 0x00a4, "PolarityHorizontalSynchronization" }, 2373 { 0x82, 0x00a6, "PolarityVerticalSynchronization" }, 2374 { 0x82, 0x00a8, "SynchronizationType" }, 2375 { 0x82, 0x00aa, "ScreenOrientation" }, 2376 { 0x82, 0x00ac, "HorizontalFrequency" }, 2377 { 0x82, 0x00ae, "VerticalFrequency" }, 2378 { 0x82, 0x00b0, "Settings" }, 2379 { 0x82, 0x00ca, "OnScreenDisplay" }, 2380 { 0x82, 0x00d4, "StereoMode" }, 2381 { 0x84, 0, "Power" }, 2382 { 0x84, 0x0001, "iName" }, 2383 { 0x84, 0x0002, "PresentStatus" }, 2384 { 0x84, 0x0003, "ChangedStatus" }, 2385 { 0x84, 0x0004, "UPS" }, 2386 { 0x84, 0x0005, "PowerSupply" }, 2387 { 0x84, 0x0010, "BatterySystem" }, 2388 { 0x84, 0x0011, "BatterySystemId" }, 2389 { 0x84, 0x0012, "Battery" }, 2390 { 0x84, 0x0013, "BatteryId" }, 2391 { 0x84, 0x0014, "Charger" }, 2392 { 0x84, 0x0015, "ChargerId" }, 2393 { 0x84, 0x0016, "PowerConverter" }, 2394 { 0x84, 0x0017, "PowerConverterId" }, 2395 { 0x84, 0x0018, "OutletSystem" }, 2396 { 0x84, 0x0019, "OutletSystemId" }, 2397 { 0x84, 0x001a, "Input" }, 2398 { 0x84, 0x001b, "InputId" }, 2399 { 0x84, 0x001c, "Output" }, 2400 { 0x84, 0x001d, "OutputId" }, 2401 { 0x84, 0x001e, "Flow" }, 2402 { 0x84, 0x001f, "FlowId" }, 2403 { 0x84, 0x0020, "Outlet" }, 2404 { 0x84, 0x0021, "OutletId" }, 2405 { 0x84, 0x0022, "Gang" }, 2406 { 0x84, 0x0023, "GangId" }, 2407 { 0x84, 0x0024, "PowerSummary" }, 2408 { 0x84, 0x0025, "PowerSummaryId" }, 2409 { 0x84, 0x0030, "Voltage" }, 2410 { 0x84, 0x0031, "Current" }, 2411 { 0x84, 0x0032, "Frequency" }, 2412 { 0x84, 0x0033, "ApparentPower" }, 2413 { 0x84, 0x0034, "ActivePower" }, 2414 { 0x84, 0x0035, "PercentLoad" }, 2415 { 0x84, 0x0036, "Temperature" }, 2416 { 0x84, 0x0037, "Humidity" }, 2417 { 0x84, 0x0038, "BadCount" }, 2418 { 0x84, 0x0040, "ConfigVoltage" }, 2419 { 0x84, 0x0041, "ConfigCurrent" }, 2420 { 0x84, 0x0042, "ConfigFrequency" }, 2421 { 0x84, 0x0043, "ConfigApparentPower" }, 2422 { 0x84, 0x0044, "ConfigActivePower" }, 2423 { 0x84, 0x0045, "ConfigPercentLoad" }, 2424 { 0x84, 0x0046, "ConfigTemperature" }, 2425 { 0x84, 0x0047, "ConfigHumidity" }, 2426 { 0x84, 0x0050, "SwitchOnControl" }, 2427 { 0x84, 0x0051, "SwitchOffControl" }, 2428 { 0x84, 0x0052, "ToggleControl" }, 2429 { 0x84, 0x0053, "LowVoltageTransfer" }, 2430 { 0x84, 0x0054, "HighVoltageTransfer" }, 2431 { 0x84, 0x0055, "DelayBeforeReboot" }, 2432 { 0x84, 0x0056, "DelayBeforeStartup" }, 2433 { 0x84, 0x0057, "DelayBeforeShutdown" }, 2434 { 0x84, 0x0058, "Test" }, 2435 { 0x84, 0x0059, "ModuleReset" }, 2436 { 0x84, 0x005a, "AudibleAlarmControl" }, 2437 { 0x84, 0x0060, "Present" }, 2438 { 0x84, 0x0061, "Good" }, 2439 { 0x84, 0x0062, "InternalFailure" }, 2440 { 0x84, 0x0063, "VoltagOutOfRange" }, 2441 { 0x84, 0x0064, "FrequencyOutOfRange" }, 2442 { 0x84, 0x0065, "Overload" }, 2443 { 0x84, 0x0066, "OverCharged" }, 2444 { 0x84, 0x0067, "OverTemperature" }, 2445 { 0x84, 0x0068, "ShutdownRequested" }, 2446 { 0x84, 0x0069, "ShutdownImminent" }, 2447 { 0x84, 0x006b, "SwitchOnOff" }, 2448 { 0x84, 0x006c, "Switchable" }, 2449 { 0x84, 0x006d, "Used" }, 2450 { 0x84, 0x006e, "Boost" }, 2451 { 0x84, 0x006f, "Buck" }, 2452 { 0x84, 0x0070, "Initialized" }, 2453 { 0x84, 0x0071, "Tested" }, 2454 { 0x84, 0x0072, "AwaitingPower" }, 2455 { 0x84, 0x0073, "CommunicationLost" }, 2456 { 0x84, 0x00fd, "iManufacturer" }, 2457 { 0x84, 0x00fe, "iProduct" }, 2458 { 0x84, 0x00ff, "iSerialNumber" }, 2459 { 0x85, 0, "BatterySystem" }, 2460 { 0x85, 0x0001, "SmartBatteryBatteryMode" }, 2461 { 0x85, 0x0002, "SmartBatteryBatteryStatus" }, 2462 { 0x85, 0x0003, "SmartBatteryAlarmWarning" }, 2463 { 0x85, 0x0004, "SmartBatteryChargerMode" }, 2464 { 0x85, 0x0005, "SmartBatteryChargerStatus" }, 2465 { 0x85, 0x0006, "SmartBatteryChargerSpecInfo" }, 2466 { 0x85, 0x0007, "SmartBatterySelectorState" }, 2467 { 0x85, 0x0008, "SmartBatterySelectorPresets" }, 2468 { 0x85, 0x0009, "SmartBatterySelectorInfo" }, 2469 { 0x85, 0x0010, "OptionalMfgFunction1" }, 2470 { 0x85, 0x0011, "OptionalMfgFunction2" }, 2471 { 0x85, 0x0012, "OptionalMfgFunction3" }, 2472 { 0x85, 0x0013, "OptionalMfgFunction4" }, 2473 { 0x85, 0x0014, "OptionalMfgFunction5" }, 2474 { 0x85, 0x0015, "ConnectionToSMBus" }, 2475 { 0x85, 0x0016, "OutputConnection" }, 2476 { 0x85, 0x0017, "ChargerConnection" }, 2477 { 0x85, 0x0018, "BatteryInsertion" }, 2478 { 0x85, 0x0019, "UseNext" }, 2479 { 0x85, 0x001a, "OKToUse" }, 2480 { 0x85, 0x001b, "BatterySupported" }, 2481 { 0x85, 0x001c, "SelectorRevision" }, 2482 { 0x85, 0x001d, "ChargingIndicator" }, 2483 { 0x85, 0x0028, "ManufacturerAccess" }, 2484 { 0x85, 0x0029, "RemainingCapacityLimit" }, 2485 { 0x85, 0x002a, "RemainingTimeLimit" }, 2486 { 0x85, 0x002b, "AtRate" }, 2487 { 0x85, 0x002c, "CapacityMode" }, 2488 { 0x85, 0x002d, "BroadcastToCharger" }, 2489 { 0x85, 0x002e, "PrimaryBattery" }, 2490 { 0x85, 0x002f, "ChargeController" }, 2491 { 0x85, 0x0040, "TerminateCharge" }, 2492 { 0x85, 0x0041, "TerminateDischarge" }, 2493 { 0x85, 0x0042, "BelowRemainingCapacityLimit" }, 2494 { 0x85, 0x0043, "RemainingTimeLimitExpired" }, 2495 { 0x85, 0x0044, "Charging" }, 2496 { 0x85, 0x0045, "Discharging" }, 2497 { 0x85, 0x0046, "FullyCharged" }, 2498 { 0x85, 0x0047, "FullyDischarged" }, 2499 { 0x85, 0x0048, "ConditioningFlag" }, 2500 { 0x85, 0x0049, "AtRateOK" }, 2501 { 0x85, 0x004a, "SmartBatteryErrorCode" }, 2502 { 0x85, 0x004b, "NeedReplacement" }, 2503 { 0x85, 0x0060, "AtRateTimeToFull" }, 2504 { 0x85, 0x0061, "AtRateTimeToEmpty" }, 2505 { 0x85, 0x0062, "AverageCurrent" }, 2506 { 0x85, 0x0063, "MaxError" }, 2507 { 0x85, 0x0064, "RelativeStateOfCharge" }, 2508 { 0x85, 0x0065, "AbsoluteStateOfCharge" }, 2509 { 0x85, 0x0066, "RemainingCapacity" }, 2510 { 0x85, 0x0067, "FullChargeCapacity" }, 2511 { 0x85, 0x0068, "RunTimeToEmpty" }, 2512 { 0x85, 0x0069, "AverageTimeToEmpty" }, 2513 { 0x85, 0x006a, "AverageTimeToFull" }, 2514 { 0x85, 0x006b, "CycleCount" }, 2515 { 0x85, 0x0080, "BatteryPackModelLevel" }, 2516 { 0x85, 0x0081, "InternalChargeController" }, 2517 { 0x85, 0x0082, "PrimaryBatterySupport" }, 2518 { 0x85, 0x0083, "DesignCapacity" }, 2519 { 0x85, 0x0084, "SpecificationInfo" }, 2520 { 0x85, 0x0085, "ManufactureDate" }, 2521 { 0x85, 0x0086, "SerialNumber" }, 2522 { 0x85, 0x0087, "iManufacturerName" }, 2523 { 0x85, 0x0088, "iDeviceName" }, 2524 { 0x85, 0x0089, "iDeviceChemistry" }, 2525 { 0x85, 0x008a, "ManufacturerData" }, 2526 { 0x85, 0x008b, "Rechargable" }, 2527 { 0x85, 0x008c, "WarningCapacityLimit" }, 2528 { 0x85, 0x008d, "CapacityGranularity1" }, 2529 { 0x85, 0x008e, "CapacityGranularity2" }, 2530 { 0x85, 0x008f, "iOEMInformation" }, 2531 { 0x85, 0x00c0, "InhibitCharge" }, 2532 { 0x85, 0x00c1, "EnablePolling" }, 2533 { 0x85, 0x00c2, "ResetToZero" }, 2534 { 0x85, 0x00d0, "ACPresent" }, 2535 { 0x85, 0x00d1, "BatteryPresent" }, 2536 { 0x85, 0x00d2, "PowerFail" }, 2537 { 0x85, 0x00d3, "AlarmInhibited" }, 2538 { 0x85, 0x00d4, "ThermistorUnderRange" }, 2539 { 0x85, 0x00d5, "ThermistorHot" }, 2540 { 0x85, 0x00d6, "ThermistorCold" }, 2541 { 0x85, 0x00d7, "ThermistorOverRange" }, 2542 { 0x85, 0x00d8, "VoltageOutOfRange" }, 2543 { 0x85, 0x00d9, "CurrentOutOfRange" }, 2544 { 0x85, 0x00da, "CurrentNotRegulated" }, 2545 { 0x85, 0x00db, "VoltageNotRegulated" }, 2546 { 0x85, 0x00dc, "MasterMode" }, 2547 { 0x85, 0x00f0, "ChargerSelectorSupport" }, 2548 { 0x85, 0x00f1, "ChargerSpec" }, 2549 { 0x85, 0x00f2, "Level2" }, 2550 { 0x85, 0x00f3, "Level3" }, 2551 { 0x8c, 0, "BarcodeScanner" }, 2552 { 0x8c, 0x0001, "BarcodeBadgeReader" }, 2553 { 0x8c, 0x0002, "BarcodeScanner" }, 2554 { 0x8c, 0x0003, "DumbBarCodeScanner" }, 2555 { 0x8c, 0x0004, "CordlessScannerBase" }, 2556 { 0x8c, 0x0005, "BarCodeScannerCradle" }, 2557 { 0x8c, 0x0010, "AttributeReport" }, 2558 { 0x8c, 0x0011, "SettingsReport" }, 2559 { 0x8c, 0x0012, "ScannedDataReport" }, 2560 { 0x8c, 0x0013, "RawScannedDataReport" }, 2561 { 0x8c, 0x0014, "TriggerReport" }, 2562 { 0x8c, 0x0015, "StatusReport" }, 2563 { 0x8c, 0x0016, "UPCEANControlReport" }, 2564 { 0x8c, 0x0017, "EAN23LabelControlReport" }, 2565 { 0x8c, 0x0018, "Code39ControlReport" }, 2566 { 0x8c, 0x0019, "Interleaved2of5ControlReport" }, 2567 { 0x8c, 0x001a, "Standard2of5ControlReport" }, 2568 { 0x8c, 0x001b, "MSIPlesseyControlReport" }, 2569 { 0x8c, 0x001c, "CodabarControlReport" }, 2570 { 0x8c, 0x001d, "Code128ControlReport" }, 2571 { 0x8c, 0x001e, "Misc1DControlReport" }, 2572 { 0x8c, 0x001f, "2DControlReport" }, 2573 { 0x8c, 0x0030, "AimingPointerMode" }, 2574 { 0x8c, 0x0031, "BarCodePresentSensor" }, 2575 { 0x8c, 0x0032, "Class1ALaser" }, 2576 { 0x8c, 0x0033, "Class2Laser" }, 2577 { 0x8c, 0x0034, "HeaterPresent" }, 2578 { 0x8c, 0x0035, "ContactScanner" }, 2579 { 0x8c, 0x0036, "ElectronicArticleSurveillanceNotification" }, 2580 { 0x8c, 0x0037, "ConstantElectronicArticleSurveillance" }, 2581 { 0x8c, 0x0038, "ErrorIndication" }, 2582 { 0x8c, 0x0039, "FixedBeeper" }, 2583 { 0x8c, 0x003a, "GoodDecodeIndication" }, 2584 { 0x8c, 0x003b, "HandsFreeScanning" }, 2585 { 0x8c, 0x003c, "IntrinsicallySafe" }, 2586 { 0x8c, 0x003d, "KlasseEinsLaser" }, 2587 { 0x8c, 0x003e, "LongRangeScanner" }, 2588 { 0x8c, 0x003f, "MirrorSpeedControl" }, 2589 { 0x8c, 0x0040, "NotOnFileIndication" }, 2590 { 0x8c, 0x0041, "ProgrammableBeeper" }, 2591 { 0x8c, 0x0042, "Triggerless" }, 2592 { 0x8c, 0x0043, "Wand" }, 2593 { 0x8c, 0x0044, "WaterResistant" }, 2594 { 0x8c, 0x0045, "MultiRangeScanner" }, 2595 { 0x8c, 0x0046, "ProximitySensor" }, 2596 { 0x8c, 0x004d, "FragmentDecoding" }, 2597 { 0x8c, 0x004e, "ScannerReadConfidence" }, 2598 { 0x8c, 0x004f, "DataPrefix" }, 2599 { 0x8c, 0x0050, "PrefixAIMI" }, 2600 { 0x8c, 0x0051, "PrefixNone" }, 2601 { 0x8c, 0x0052, "PrefixProprietary" }, 2602 { 0x8c, 0x0055, "ActiveTime" }, 2603 { 0x8c, 0x0056, "AimingLaserPattern" }, 2604 { 0x8c, 0x0057, "BarCodePresent" }, 2605 { 0x8c, 0x0058, "BeeperState" }, 2606 { 0x8c, 0x0059, "LaserOnTime" }, 2607 { 0x8c, 0x005a, "LaserState" }, 2608 { 0x8c, 0x005b, "LockoutTime" }, 2609 { 0x8c, 0x005c, "MotorState" }, 2610 { 0x8c, 0x005d, "MotorTimeout" }, 2611 { 0x8c, 0x005e, "PowerOnResetScanner" }, 2612 { 0x8c, 0x005f, "PreventReadofBarcodes" }, 2613 { 0x8c, 0x0060, "InitiateBarcodeRead" }, 2614 { 0x8c, 0x0061, "TriggerState" }, 2615 { 0x8c, 0x0062, "TriggerMode" }, 2616 { 0x8c, 0x0063, "TriggerModeBlinkingLaserOn" }, 2617 { 0x8c, 0x0064, "TriggerModeContinuousLaserOn" }, 2618 { 0x8c, 0x0065, "TriggerModeLaseronwhilePulled" }, 2619 { 0x8c, 0x0066, "TriggerModeLaserstaysonafterrelease" }, 2620 { 0x8c, 0x006d, "CommitParameterstoNVM" }, 2621 { 0x8c, 0x006e, "ParameterScanning" }, 2622 { 0x8c, 0x006f, "ParametersChanged" }, 2623 { 0x8c, 0x0070, "Setparameterdefaultvalues" }, 2624 { 0x8c, 0x0075, "ScannerInCradle" }, 2625 { 0x8c, 0x0076, "ScannerInRange" }, 2626 { 0x8c, 0x007a, "AimDuration" }, 2627 { 0x8c, 0x007b, "GoodReadLampDuration" }, 2628 { 0x8c, 0x007c, "GoodReadLampIntensity" }, 2629 { 0x8c, 0x007d, "GoodReadLED" }, 2630 { 0x8c, 0x007e, "GoodReadToneFrequency" }, 2631 { 0x8c, 0x007f, "GoodReadToneLength" }, 2632 { 0x8c, 0x0080, "GoodReadToneVolume" }, 2633 { 0x8c, 0x0082, "NoReadMessage" }, 2634 { 0x8c, 0x0083, "NotonFileVolume" }, 2635 { 0x8c, 0x0084, "PowerupBeep" }, 2636 { 0x8c, 0x0085, "SoundErrorBeep" }, 2637 { 0x8c, 0x0086, "SoundGoodReadBeep" }, 2638 { 0x8c, 0x0087, "SoundNotOnFileBeep" }, 2639 { 0x8c, 0x0088, "GoodReadWhentoWrite" }, 2640 { 0x8c, 0x0089, "GRWTIAfterDecode" }, 2641 { 0x8c, 0x008a, "GRWTIBeepLampaftertransmit" }, 2642 { 0x8c, 0x008b, "GRWTINoBeepLampuseatall" }, 2643 { 0x8c, 0x0091, "BooklandEAN" }, 2644 { 0x8c, 0x0092, "ConvertEAN8to13Type" }, 2645 { 0x8c, 0x0093, "ConvertUPCAtoEAN13" }, 2646 { 0x8c, 0x0094, "ConvertUPCEtoA" }, 2647 { 0x8c, 0x0095, "EAN13" }, 2648 { 0x8c, 0x0096, "EAN8" }, 2649 { 0x8c, 0x0097, "EAN99128Mandatory" }, 2650 { 0x8c, 0x0098, "EAN99P5128Optional" }, 2651 { 0x8c, 0x0099, "EnableEANTwoLabel" }, 2652 { 0x8c, 0x009a, "UPCEAN" }, 2653 { 0x8c, 0x009b, "UPCEANCouponCode" }, 2654 { 0x8c, 0x009c, "UPCEANPeriodicals" }, 2655 { 0x8c, 0x009d, "UPCA" }, 2656 { 0x8c, 0x009e, "UPCAwith128Mandatory" }, 2657 { 0x8c, 0x009f, "UPCAwith128Optional" }, 2658 { 0x8c, 0x00a0, "UPCAwithP5Optional" }, 2659 { 0x8c, 0x00a1, "UPCE" }, 2660 { 0x8c, 0x00a2, "UPCE1" }, 2661 { 0x8c, 0x00a9, "Periodical" }, 2662 { 0x8c, 0x00aa, "PeriodicalAutoDiscriminate2" }, 2663 { 0x8c, 0x00ab, "PeriodicalOnlyDecodewith2" }, 2664 { 0x8c, 0x00ac, "PeriodicalIgnore2" }, 2665 { 0x8c, 0x00ad, "PeriodicalAutoDiscriminate5" }, 2666 { 0x8c, 0x00ae, "PeriodicalOnlyDecodewith5" }, 2667 { 0x8c, 0x00af, "PeriodicalIgnore5" }, 2668 { 0x8c, 0x00b0, "Check" }, 2669 { 0x8c, 0x00b1, "CheckDisablePrice" }, 2670 { 0x8c, 0x00b2, "CheckEnable4digitPrice" }, 2671 { 0x8c, 0x00b3, "CheckEnable5digitPrice" }, 2672 { 0x8c, 0x00b4, "CheckEnableEuropean4digitPrice" }, 2673 { 0x8c, 0x00b5, "CheckEnableEuropean5digitPrice" }, 2674 { 0x8c, 0x00b7, "EANTwoLabel" }, 2675 { 0x8c, 0x00b8, "EANThreeLabel" }, 2676 { 0x8c, 0x00b9, "EAN8FlagDigit1" }, 2677 { 0x8c, 0x00ba, "EAN8FlagDigit2" }, 2678 { 0x8c, 0x00bb, "EAN8FlagDigit3" }, 2679 { 0x8c, 0x00bc, "EAN13FlagDigit1" }, 2680 { 0x8c, 0x00bd, "EAN13FlagDigit2" }, 2681 { 0x8c, 0x00be, "EAN13FlagDigit3" }, 2682 { 0x8c, 0x00bf, "AddEAN23LabelDefinition" }, 2683 { 0x8c, 0x00c0, "ClearallEAN23LabelDefinitions" }, 2684 { 0x8c, 0x00c3, "Codabar" }, 2685 { 0x8c, 0x00c4, "Code128" }, 2686 { 0x8c, 0x00c7, "Code39" }, 2687 { 0x8c, 0x00c8, "Code93" }, 2688 { 0x8c, 0x00c9, "FullASCIIConversion" }, 2689 { 0x8c, 0x00ca, "Interleaved2of5" }, 2690 { 0x8c, 0x00cb, "ItalianPharmacyCode" }, 2691 { 0x8c, 0x00cc, "MSIPlessey" }, 2692 { 0x8c, 0x00cd, "Standard2of5IATA" }, 2693 { 0x8c, 0x00ce, "Standard2of5" }, 2694 { 0x8c, 0x00d3, "TransmitStartStop" }, 2695 { 0x8c, 0x00d4, "TriOptic" }, 2696 { 0x8c, 0x00d5, "UCCEAN128" }, 2697 { 0x8c, 0x00d6, "CheckDigit" }, 2698 { 0x8c, 0x00d7, "CheckDigitDisable" }, 2699 { 0x8c, 0x00d8, "CheckDigitEnableInterleaved2of5OPCC" }, 2700 { 0x8c, 0x00d9, "CheckDigitEnableInterleaved2of5USS" }, 2701 { 0x8c, 0x00da, "CheckDigitEnableStandard2of5OPCC" }, 2702 { 0x8c, 0x00db, "CheckDigitEnableStandard2of5USS" }, 2703 { 0x8c, 0x00dc, "CheckDigitEnableOneMSIPlessey" }, 2704 { 0x8c, 0x00dd, "CheckDigitEnableTwoMSIPlessey" }, 2705 { 0x8c, 0x00de, "CheckDigitCodabarEnable" }, 2706 { 0x8c, 0x00df, "CheckDigitCode39Enable" }, 2707 { 0x8c, 0x00f0, "TransmitCheckDigit" }, 2708 { 0x8c, 0x00f1, "DisableCheckDigitTransmit" }, 2709 { 0x8c, 0x00f2, "EnableCheckDigitTransmit" }, 2710 { 0x8c, 0x00fb, "SymbologyIdentifier1" }, 2711 { 0x8c, 0x00fc, "SymbologyIdentifier2" }, 2712 { 0x8c, 0x00fd, "SymbologyIdentifier3" }, 2713 { 0x8c, 0x00fe, "DecodedData" }, 2714 { 0x8c, 0x00ff, "DecodeDataContinued" }, 2715 { 0x8c, 0x0100, "BarSpaceData" }, 2716 { 0x8c, 0x0101, "ScannerDataAccuracy" }, 2717 { 0x8c, 0x0102, "RawDataPolarity" }, 2718 { 0x8c, 0x0103, "PolarityInvertedBarCode" }, 2719 { 0x8c, 0x0104, "PolarityNormalBarCode" }, 2720 { 0x8c, 0x0106, "MinimumLengthtoDecode" }, 2721 { 0x8c, 0x0107, "MaximumLengthtoDecode" }, 2722 { 0x8c, 0x0108, "DiscreteLengthtoDecode1" }, 2723 { 0x8c, 0x0109, "DiscreteLengthtoDecode2" }, 2724 { 0x8c, 0x010a, "DataLengthMethod" }, 2725 { 0x8c, 0x010b, "DLMethodReadany" }, 2726 { 0x8c, 0x010c, "DLMethodCheckinRange" }, 2727 { 0x8c, 0x010d, "DLMethodCheckforDiscrete" }, 2728 { 0x8c, 0x0110, "AztecCode" }, 2729 { 0x8c, 0x0111, "BC412" }, 2730 { 0x8c, 0x0112, "ChannelCode" }, 2731 { 0x8c, 0x0113, "Code16" }, 2732 { 0x8c, 0x0114, "Code32" }, 2733 { 0x8c, 0x0115, "Code49" }, 2734 { 0x8c, 0x0116, "CodeOne" }, 2735 { 0x8c, 0x0117, "Colorcode" }, 2736 { 0x8c, 0x0118, "DataMatrix" }, 2737 { 0x8c, 0x0119, "MaxiCode" }, 2738 { 0x8c, 0x011a, "MicroPDF" }, 2739 { 0x8c, 0x011b, "PDF417" }, 2740 { 0x8c, 0x011c, "PosiCode" }, 2741 { 0x8c, 0x011d, "QRCode" }, 2742 { 0x8c, 0x011e, "SuperCode" }, 2743 { 0x8c, 0x011f, "UltraCode" }, 2744 { 0x8c, 0x0120, "USD5SlugCode" }, 2745 { 0x8c, 0x0121, "VeriCode" }, 2746 { 0x8d, 0, "Scales" }, 2747 { 0x8d, 0x0001, "Scales" }, 2748 { 0x8d, 0x0020, "ScaleDevice" }, 2749 { 0x8d, 0x0021, "ScaleClass" }, 2750 { 0x8d, 0x0022, "ScaleClassIMetric" }, 2751 { 0x8d, 0x0023, "ScaleClassIIMetric" }, 2752 { 0x8d, 0x0024, "ScaleClassIIIMetric" }, 2753 { 0x8d, 0x0025, "ScaleClassIIILMetric" }, 2754 { 0x8d, 0x0026, "ScaleClassIVMetric" }, 2755 { 0x8d, 0x0027, "ScaleClassIIIEnglish" }, 2756 { 0x8d, 0x0028, "ScaleClassIIILEnglish" }, 2757 { 0x8d, 0x0029, "ScaleClassIVEnglish" }, 2758 { 0x8d, 0x002a, "ScaleClassGeneric" }, 2759 { 0x8d, 0x0030, "ScaleAttributeReport" }, 2760 { 0x8d, 0x0031, "ScaleControlReport" }, 2761 { 0x8d, 0x0032, "ScaleDataReport" }, 2762 { 0x8d, 0x0033, "ScaleStatusReport" }, 2763 { 0x8d, 0x0034, "ScaleWeightLimitReport" }, 2764 { 0x8d, 0x0035, "ScaleStatisticsReport" }, 2765 { 0x8d, 0x0040, "DataWeight" }, 2766 { 0x8d, 0x0041, "DataScaling" }, 2767 { 0x8d, 0x0050, "WeightUnit" }, 2768 { 0x8d, 0x0051, "WeightUnitMilligram" }, 2769 { 0x8d, 0x0052, "WeightUnitGram" }, 2770 { 0x8d, 0x0053, "WeightUnitKilogram" }, 2771 { 0x8d, 0x0054, "WeightUnitCarats" }, 2772 { 0x8d, 0x0055, "WeightUnitTaels" }, 2773 { 0x8d, 0x0056, "WeightUnitGrains" }, 2774 { 0x8d, 0x0057, "WeightUnitPennyweights" }, 2775 { 0x8d, 0x0058, "WeightUnitMetricTon" }, 2776 { 0x8d, 0x0059, "WeightUnitAvoirTon" }, 2777 { 0x8d, 0x005a, "WeightUnitTroyOunce" }, 2778 { 0x8d, 0x005b, "WeightUnitOunce" }, 2779 { 0x8d, 0x005c, "WeightUnitPound" }, 2780 { 0x8d, 0x0060, "CalibrationCount" }, 2781 { 0x8d, 0x0061, "ReZeroCount" }, 2782 { 0x8d, 0x0070, "ScaleStatus" }, 2783 { 0x8d, 0x0071, "ScaleStatusFault" }, 2784 { 0x8d, 0x0072, "ScaleStatusStableatCenterofZero" }, 2785 { 0x8d, 0x0073, "ScaleStatusInMotion" }, 2786 { 0x8d, 0x0074, "ScaleStatusWeightStable" }, 2787 { 0x8d, 0x0075, "ScaleStatusUnderZero" }, 2788 { 0x8d, 0x0076, "ScaleStatusOverWeightLimit" }, 2789 { 0x8d, 0x0077, "ScaleStatusRequiresCalibration" }, 2790 { 0x8d, 0x0078, "ScaleStatusRequiresRezeroing" }, 2791 { 0x8d, 0x0080, "ZeroScale" }, 2792 { 0x8d, 0x0081, "EnforcedZeroReturn" }, 2793 { 0x8e, 0, "MagneticStripeReader" }, 2794 { 0x8e, 0x0001, "MSRDeviceReadOnly" }, 2795 { 0x8e, 0x0011, "Track1Length" }, 2796 { 0x8e, 0x0012, "Track2Length" }, 2797 { 0x8e, 0x0013, "Track3Length" }, 2798 { 0x8e, 0x0014, "TrackJISLength" }, 2799 { 0x8e, 0x0020, "TrackData" }, 2800 { 0x8e, 0x0021, "Track1Data" }, 2801 { 0x8e, 0x0022, "Track2Data" }, 2802 { 0x8e, 0x0023, "Track3Data" }, 2803 { 0x8e, 0x0024, "TrackJISData" }, 2804 { 0x90, 0, "CameraControl" }, 2805 { 0x90, 0x0020, "CameraAutofocus" }, 2806 { 0x90, 0x0021, "CameraShutter" }, 2807 { 0x91, 0, "Arcade" }, 2808 { 0x91, 0x0001, "GeneralPurposeIOCard" }, 2809 { 0x91, 0x0002, "CoinDoor" }, 2810 { 0x91, 0x0003, "WatchdogTimer" }, 2811 { 0x91, 0x0030, "GeneralPurposeAnalogInputState" }, 2812 { 0x91, 0x0031, "GeneralPurposeDigitalInputState" }, 2813 { 0x91, 0x0032, "GeneralPurposeOpticalInputState" }, 2814 { 0x91, 0x0033, "GeneralPurposeDigitalOutputState" }, 2815 { 0x91, 0x0034, "NumberofCoinDoors" }, 2816 { 0x91, 0x0035, "CoinDrawerDropCount" }, 2817 { 0x91, 0x0036, "CoinDrawerStart" }, 2818 { 0x91, 0x0037, "CoinDrawerService" }, 2819 { 0x91, 0x0038, "CoinDrawerTilt" }, 2820 { 0x91, 0x0039, "CoinDoorTest" }, 2821 { 0x91, 0x0040, "CoinDoorLockout" }, 2822 { 0x91, 0x0041, "WatchdogTimeout" }, 2823 { 0x91, 0x0042, "WatchdogAction" }, 2824 { 0x91, 0x0043, "WatchdogReboot" }, 2825 { 0x91, 0x0044, "WatchdogRestart" }, 2826 { 0x91, 0x0045, "AlarmInput" }, 2827 { 0x91, 0x0046, "CoinDoorCounter" }, 2828 { 0x91, 0x0047, "IODirectionMapping" }, 2829 { 0x91, 0x0048, "SetIODirectionMapping" }, 2830 { 0x91, 0x0049, "ExtendedOpticalInputState" }, 2831 { 0x91, 0x004a, "PinPadInputState" }, 2832 { 0x91, 0x004b, "PinPadStatus" }, 2833 { 0x91, 0x004c, "PinPadOutput" }, 2834 { 0x91, 0x004d, "PinPadCommand" }, 2835 { 0xf1d0, 0, "FIDOAlliance" }, 2836 { 0xf1d0, 0x0001, "U2FAuthenticatorDevice" }, 2837 { 0xf1d0, 0x0020, "InputReportData" }, 2838 { 0xf1d0, 0x0021, "OutputReportData" }, 2839 /* pages 0xff00 to 0xffff are vendor-specific */ 2840 { 0xffff, 0, "Vendor-specific-FF" }, 2841 { 0, 0, NULL } 2842 }; 2843 2844 /* Either output directly into simple seq_file, or (if f == NULL) 2845 * allocate a separate buffer that will then be passed to the 'events' 2846 * ringbuffer. 2847 * 2848 * This is because these functions can be called both for "one-shot" 2849 * "rdesc" while resolving, or for blocking "events". 2850 * 2851 * This holds both for resolv_usage_page() and hid_resolv_usage(). 2852 */ 2853 static char *resolv_usage_page(unsigned page, struct seq_file *f) { 2854 const struct hid_usage_entry *p; 2855 char *buf = NULL; 2856 2857 if (!f) { 2858 buf = kzalloc(HID_DEBUG_BUFSIZE, GFP_ATOMIC); 2859 if (!buf) 2860 return ERR_PTR(-ENOMEM); 2861 } 2862 2863 for (p = hid_usage_table; p->description; p++) 2864 if (p->page == page) { 2865 if (!f) { 2866 snprintf(buf, HID_DEBUG_BUFSIZE, "%s", 2867 p->description); 2868 return buf; 2869 } 2870 else { 2871 seq_printf(f, "%s", p->description); 2872 return NULL; 2873 } 2874 } 2875 if (!f) 2876 snprintf(buf, HID_DEBUG_BUFSIZE, "%04x", page); 2877 else 2878 seq_printf(f, "%04x", page); 2879 return buf; 2880 } 2881 2882 char *hid_resolv_usage(unsigned usage, struct seq_file *f) { 2883 const struct hid_usage_entry *p; 2884 const struct hid_usage_entry *m; 2885 char *buf = NULL; 2886 int len = 0; 2887 const char *modifier = NULL; 2888 unsigned int usage_modifier = usage & 0xF000; 2889 unsigned int usage_actual = usage & 0xFFFF; 2890 2891 buf = resolv_usage_page(usage >> 16, f); 2892 if (IS_ERR(buf)) { 2893 pr_err("error allocating HID debug buffer\n"); 2894 return NULL; 2895 } 2896 2897 2898 if (!f) { 2899 len = strlen(buf); 2900 len += scnprintf(buf + len, HID_DEBUG_BUFSIZE - len, "."); 2901 } 2902 else { 2903 seq_printf(f, "."); 2904 } 2905 for (p = hid_usage_table; p->description; p++) 2906 if (p->page == (usage >> 16)) { 2907 if (p->page == 0x20 && usage_modifier) { 2908 for (m = p; m->description; m++) { 2909 if (p->page == m->page && m->usage 2910 == usage_modifier) { 2911 modifier = m->description; 2912 break; 2913 } 2914 } 2915 if (modifier) 2916 usage_actual = usage_actual & 0x0FFF; 2917 } 2918 2919 if (!modifier) 2920 modifier = ""; 2921 2922 for(++p; p->description && p->usage != 0; p++) 2923 if (p->usage == usage_actual) { 2924 if (!f) 2925 snprintf(buf + len, 2926 HID_DEBUG_BUFSIZE - len, 2927 "%s%s", p->description, 2928 modifier); 2929 else 2930 seq_printf(f, 2931 "%s%s", 2932 p->description, 2933 modifier); 2934 return buf; 2935 } 2936 break; 2937 } 2938 if (!f) 2939 snprintf(buf + len, HID_DEBUG_BUFSIZE - len, "%04x", 2940 usage & 0xffff); 2941 else 2942 seq_printf(f, "%04x", usage & 0xffff); 2943 return buf; 2944 } 2945 EXPORT_SYMBOL_GPL(hid_resolv_usage); 2946 2947 static void tab(int n, struct seq_file *f) { 2948 seq_printf(f, "%*s", n, ""); 2949 } 2950 2951 void hid_dump_field(struct hid_field *field, int n, struct seq_file *f) { 2952 int j; 2953 2954 if (field->physical) { 2955 tab(n, f); 2956 seq_printf(f, "Physical("); 2957 hid_resolv_usage(field->physical, f); seq_printf(f, ")\n"); 2958 } 2959 if (field->logical) { 2960 tab(n, f); 2961 seq_printf(f, "Logical("); 2962 hid_resolv_usage(field->logical, f); seq_printf(f, ")\n"); 2963 } 2964 if (field->application) { 2965 tab(n, f); 2966 seq_printf(f, "Application("); 2967 hid_resolv_usage(field->application, f); seq_printf(f, ")\n"); 2968 } 2969 tab(n, f); seq_printf(f, "Usage(%d)\n", field->maxusage); 2970 for (j = 0; j < field->maxusage; j++) { 2971 tab(n+2, f); hid_resolv_usage(field->usage[j].hid, f); seq_printf(f, "\n"); 2972 } 2973 if (field->logical_minimum != field->logical_maximum) { 2974 tab(n, f); seq_printf(f, "Logical Minimum(%d)\n", field->logical_minimum); 2975 tab(n, f); seq_printf(f, "Logical Maximum(%d)\n", field->logical_maximum); 2976 } 2977 if (field->physical_minimum != field->physical_maximum) { 2978 tab(n, f); seq_printf(f, "Physical Minimum(%d)\n", field->physical_minimum); 2979 tab(n, f); seq_printf(f, "Physical Maximum(%d)\n", field->physical_maximum); 2980 } 2981 if (field->unit_exponent) { 2982 tab(n, f); seq_printf(f, "Unit Exponent(%d)\n", field->unit_exponent); 2983 } 2984 if (field->unit) { 2985 static const char *systems[5] = { "None", "SI Linear", "SI Rotation", "English Linear", "English Rotation" }; 2986 static const char *units[5][8] = { 2987 { "None", "None", "None", "None", "None", "None", "None", "None" }, 2988 { "None", "Centimeter", "Gram", "Seconds", "Kelvin", "Ampere", "Candela", "None" }, 2989 { "None", "Radians", "Gram", "Seconds", "Kelvin", "Ampere", "Candela", "None" }, 2990 { "None", "Inch", "Slug", "Seconds", "Fahrenheit", "Ampere", "Candela", "None" }, 2991 { "None", "Degrees", "Slug", "Seconds", "Fahrenheit", "Ampere", "Candela", "None" } 2992 }; 2993 2994 int i; 2995 int sys; 2996 __u32 data = field->unit; 2997 2998 /* First nibble tells us which system we're in. */ 2999 sys = data & 0xf; 3000 data >>= 4; 3001 3002 if(sys > 4) { 3003 tab(n, f); seq_printf(f, "Unit(Invalid)\n"); 3004 } 3005 else { 3006 int earlier_unit = 0; 3007 3008 tab(n, f); seq_printf(f, "Unit(%s : ", systems[sys]); 3009 3010 for (i=1 ; i<sizeof(__u32)*2 ; i++) { 3011 char nibble = data & 0xf; 3012 data >>= 4; 3013 if (nibble != 0) { 3014 if(earlier_unit++ > 0) 3015 seq_printf(f, "*"); 3016 seq_printf(f, "%s", units[sys][i]); 3017 if(nibble != 1) { 3018 /* This is a _signed_ nibble(!) */ 3019 3020 int val = nibble & 0x7; 3021 if(nibble & 0x08) 3022 val = -((0x7 & ~val) +1); 3023 seq_printf(f, "^%d", val); 3024 } 3025 } 3026 } 3027 seq_printf(f, ")\n"); 3028 } 3029 } 3030 tab(n, f); seq_printf(f, "Report Size(%u)\n", field->report_size); 3031 tab(n, f); seq_printf(f, "Report Count(%u)\n", field->report_count); 3032 tab(n, f); seq_printf(f, "Report Offset(%u)\n", field->report_offset); 3033 3034 tab(n, f); seq_printf(f, "Flags( "); 3035 j = field->flags; 3036 seq_printf(f, "%s", HID_MAIN_ITEM_CONSTANT & j ? "Constant " : ""); 3037 seq_printf(f, "%s", HID_MAIN_ITEM_VARIABLE & j ? "Variable " : "Array "); 3038 seq_printf(f, "%s", HID_MAIN_ITEM_RELATIVE & j ? "Relative " : "Absolute "); 3039 seq_printf(f, "%s", HID_MAIN_ITEM_WRAP & j ? "Wrap " : ""); 3040 seq_printf(f, "%s", HID_MAIN_ITEM_NONLINEAR & j ? "NonLinear " : ""); 3041 seq_printf(f, "%s", HID_MAIN_ITEM_NO_PREFERRED & j ? "NoPreferredState " : ""); 3042 seq_printf(f, "%s", HID_MAIN_ITEM_NULL_STATE & j ? "NullState " : ""); 3043 seq_printf(f, "%s", HID_MAIN_ITEM_VOLATILE & j ? "Volatile " : ""); 3044 seq_printf(f, "%s", HID_MAIN_ITEM_BUFFERED_BYTE & j ? "BufferedByte " : ""); 3045 seq_printf(f, ")\n"); 3046 } 3047 EXPORT_SYMBOL_GPL(hid_dump_field); 3048 3049 void hid_dump_device(struct hid_device *device, struct seq_file *f) 3050 { 3051 struct hid_report_enum *report_enum; 3052 struct hid_report *report; 3053 struct list_head *list; 3054 unsigned i,k; 3055 static const char *table[] = {"INPUT", "OUTPUT", "FEATURE"}; 3056 3057 for (i = 0; i < HID_REPORT_TYPES; i++) { 3058 report_enum = device->report_enum + i; 3059 list = report_enum->report_list.next; 3060 while (list != &report_enum->report_list) { 3061 report = (struct hid_report *) list; 3062 tab(2, f); 3063 seq_printf(f, "%s", table[i]); 3064 if (report->id) 3065 seq_printf(f, "(%d)", report->id); 3066 seq_printf(f, "[%s]", table[report->type]); 3067 seq_printf(f, "\n"); 3068 for (k = 0; k < report->maxfield; k++) { 3069 tab(4, f); 3070 seq_printf(f, "Field(%d)\n", k); 3071 hid_dump_field(report->field[k], 6, f); 3072 } 3073 list = list->next; 3074 } 3075 } 3076 } 3077 EXPORT_SYMBOL_GPL(hid_dump_device); 3078 3079 /* enqueue string to 'events' ring buffer */ 3080 void hid_debug_event(struct hid_device *hdev, char *buf) 3081 { 3082 struct hid_debug_list *list; 3083 unsigned long flags; 3084 3085 spin_lock_irqsave(&hdev->debug_list_lock, flags); 3086 list_for_each_entry(list, &hdev->debug_list, node) 3087 kfifo_in(&list->hid_debug_fifo, buf, strlen(buf)); 3088 spin_unlock_irqrestore(&hdev->debug_list_lock, flags); 3089 3090 wake_up_interruptible(&hdev->debug_wait); 3091 } 3092 EXPORT_SYMBOL_GPL(hid_debug_event); 3093 3094 void hid_dump_report(struct hid_device *hid, int type, u8 *data, 3095 int size) 3096 { 3097 struct hid_report_enum *report_enum; 3098 char *buf; 3099 unsigned int i; 3100 3101 buf = kmalloc(HID_DEBUG_BUFSIZE, GFP_ATOMIC); 3102 3103 if (!buf) 3104 return; 3105 3106 report_enum = hid->report_enum + type; 3107 3108 /* dump the report */ 3109 snprintf(buf, HID_DEBUG_BUFSIZE - 1, 3110 "\nreport (size %u) (%snumbered) = ", size, 3111 report_enum->numbered ? "" : "un"); 3112 hid_debug_event(hid, buf); 3113 3114 for (i = 0; i < size; i++) { 3115 snprintf(buf, HID_DEBUG_BUFSIZE - 1, 3116 " %02x", data[i]); 3117 hid_debug_event(hid, buf); 3118 } 3119 hid_debug_event(hid, "\n"); 3120 kfree(buf); 3121 } 3122 EXPORT_SYMBOL_GPL(hid_dump_report); 3123 3124 void hid_dump_input(struct hid_device *hdev, struct hid_usage *usage, __s32 value) 3125 { 3126 char *buf; 3127 int len; 3128 3129 buf = hid_resolv_usage(usage->hid, NULL); 3130 if (!buf) 3131 return; 3132 len = strlen(buf); 3133 snprintf(buf + len, HID_DEBUG_BUFSIZE - len - 1, " = %d\n", value); 3134 3135 hid_debug_event(hdev, buf); 3136 3137 kfree(buf); 3138 wake_up_interruptible(&hdev->debug_wait); 3139 } 3140 EXPORT_SYMBOL_GPL(hid_dump_input); 3141 3142 static const char *events[EV_MAX + 1] = { 3143 [EV_SYN] = "Sync", [EV_KEY] = "Key", 3144 [EV_REL] = "Relative", [EV_ABS] = "Absolute", 3145 [EV_MSC] = "Misc", [EV_LED] = "LED", 3146 [EV_SND] = "Sound", [EV_REP] = "Repeat", 3147 [EV_FF] = "ForceFeedback", [EV_PWR] = "Power", 3148 [EV_FF_STATUS] = "ForceFeedbackStatus", [EV_SW] = "Software", 3149 }; 3150 3151 static const char *syncs[SYN_CNT] = { 3152 [SYN_REPORT] = "Report", [SYN_CONFIG] = "Config", 3153 [SYN_MT_REPORT] = "MT Report", [SYN_DROPPED] = "Dropped", 3154 }; 3155 3156 static const char *keys[KEY_MAX + 1] = { 3157 [KEY_RESERVED] = "Reserved", [KEY_ESC] = "Esc", 3158 [KEY_1] = "1", [KEY_2] = "2", 3159 [KEY_3] = "3", [KEY_4] = "4", 3160 [KEY_5] = "5", [KEY_6] = "6", 3161 [KEY_7] = "7", [KEY_8] = "8", 3162 [KEY_9] = "9", [KEY_0] = "0", 3163 [KEY_MINUS] = "Minus", [KEY_EQUAL] = "Equal", 3164 [KEY_BACKSPACE] = "Backspace", [KEY_TAB] = "Tab", 3165 [KEY_Q] = "Q", [KEY_W] = "W", 3166 [KEY_E] = "E", [KEY_R] = "R", 3167 [KEY_T] = "T", [KEY_Y] = "Y", 3168 [KEY_U] = "U", [KEY_I] = "I", 3169 [KEY_O] = "O", [KEY_P] = "P", 3170 [KEY_LEFTBRACE] = "LeftBrace", [KEY_RIGHTBRACE] = "RightBrace", 3171 [KEY_ENTER] = "Enter", [KEY_LEFTCTRL] = "LeftControl", 3172 [KEY_A] = "A", [KEY_S] = "S", 3173 [KEY_D] = "D", [KEY_F] = "F", 3174 [KEY_G] = "G", [KEY_H] = "H", 3175 [KEY_J] = "J", [KEY_K] = "K", 3176 [KEY_L] = "L", [KEY_SEMICOLON] = "Semicolon", 3177 [KEY_APOSTROPHE] = "Apostrophe", [KEY_GRAVE] = "Grave", 3178 [KEY_LEFTSHIFT] = "LeftShift", [KEY_BACKSLASH] = "BackSlash", 3179 [KEY_Z] = "Z", [KEY_X] = "X", 3180 [KEY_C] = "C", [KEY_V] = "V", 3181 [KEY_B] = "B", [KEY_N] = "N", 3182 [KEY_M] = "M", [KEY_COMMA] = "Comma", 3183 [KEY_DOT] = "Dot", [KEY_SLASH] = "Slash", 3184 [KEY_RIGHTSHIFT] = "RightShift", [KEY_KPASTERISK] = "KPAsterisk", 3185 [KEY_LEFTALT] = "LeftAlt", [KEY_SPACE] = "Space", 3186 [KEY_CAPSLOCK] = "CapsLock", [KEY_F1] = "F1", 3187 [KEY_F2] = "F2", [KEY_F3] = "F3", 3188 [KEY_F4] = "F4", [KEY_F5] = "F5", 3189 [KEY_F6] = "F6", [KEY_F7] = "F7", 3190 [KEY_F8] = "F8", [KEY_F9] = "F9", 3191 [KEY_F10] = "F10", [KEY_NUMLOCK] = "NumLock", 3192 [KEY_SCROLLLOCK] = "ScrollLock", [KEY_KP7] = "KP7", 3193 [KEY_KP8] = "KP8", [KEY_KP9] = "KP9", 3194 [KEY_KPMINUS] = "KPMinus", [KEY_KP4] = "KP4", 3195 [KEY_KP5] = "KP5", [KEY_KP6] = "KP6", 3196 [KEY_KPPLUS] = "KPPlus", [KEY_KP1] = "KP1", 3197 [KEY_KP2] = "KP2", [KEY_KP3] = "KP3", 3198 [KEY_KP0] = "KP0", [KEY_KPDOT] = "KPDot", 3199 [KEY_ZENKAKUHANKAKU] = "Zenkaku/Hankaku", [KEY_102ND] = "102nd", 3200 [KEY_F11] = "F11", [KEY_F12] = "F12", 3201 [KEY_RO] = "RO", [KEY_KATAKANA] = "Katakana", 3202 [KEY_HIRAGANA] = "HIRAGANA", [KEY_HENKAN] = "Henkan", 3203 [KEY_KATAKANAHIRAGANA] = "Katakana/Hiragana", [KEY_MUHENKAN] = "Muhenkan", 3204 [KEY_KPJPCOMMA] = "KPJpComma", [KEY_KPENTER] = "KPEnter", 3205 [KEY_RIGHTCTRL] = "RightCtrl", [KEY_KPSLASH] = "KPSlash", 3206 [KEY_SYSRQ] = "SysRq", [KEY_RIGHTALT] = "RightAlt", 3207 [KEY_LINEFEED] = "LineFeed", [KEY_HOME] = "Home", 3208 [KEY_UP] = "Up", [KEY_PAGEUP] = "PageUp", 3209 [KEY_LEFT] = "Left", [KEY_RIGHT] = "Right", 3210 [KEY_END] = "End", [KEY_DOWN] = "Down", 3211 [KEY_PAGEDOWN] = "PageDown", [KEY_INSERT] = "Insert", 3212 [KEY_DELETE] = "Delete", [KEY_MACRO] = "Macro", 3213 [KEY_MUTE] = "Mute", [KEY_VOLUMEDOWN] = "VolumeDown", 3214 [KEY_VOLUMEUP] = "VolumeUp", [KEY_POWER] = "Power", 3215 [KEY_KPEQUAL] = "KPEqual", [KEY_KPPLUSMINUS] = "KPPlusMinus", 3216 [KEY_PAUSE] = "Pause", [KEY_KPCOMMA] = "KPComma", 3217 [KEY_HANGUEL] = "Hangeul", [KEY_HANJA] = "Hanja", 3218 [KEY_YEN] = "Yen", [KEY_LEFTMETA] = "LeftMeta", 3219 [KEY_RIGHTMETA] = "RightMeta", [KEY_COMPOSE] = "Compose", 3220 [KEY_STOP] = "Stop", [KEY_AGAIN] = "Again", 3221 [KEY_PROPS] = "Props", [KEY_UNDO] = "Undo", 3222 [KEY_FRONT] = "Front", [KEY_COPY] = "Copy", 3223 [KEY_OPEN] = "Open", [KEY_PASTE] = "Paste", 3224 [KEY_FIND] = "Find", [KEY_CUT] = "Cut", 3225 [KEY_HELP] = "Help", [KEY_MENU] = "Menu", 3226 [KEY_CALC] = "Calc", [KEY_SETUP] = "Setup", 3227 [KEY_SLEEP] = "Sleep", [KEY_WAKEUP] = "WakeUp", 3228 [KEY_FILE] = "File", [KEY_SENDFILE] = "SendFile", 3229 [KEY_DELETEFILE] = "DeleteFile", [KEY_XFER] = "X-fer", 3230 [KEY_PROG1] = "Prog1", [KEY_PROG2] = "Prog2", 3231 [KEY_WWW] = "WWW", [KEY_MSDOS] = "MSDOS", 3232 [KEY_COFFEE] = "Coffee", [KEY_ROTATE_DISPLAY] = "RotateDisplay", 3233 [KEY_CYCLEWINDOWS] = "CycleWindows", [KEY_MAIL] = "Mail", 3234 [KEY_BOOKMARKS] = "Bookmarks", [KEY_COMPUTER] = "Computer", 3235 [KEY_BACK] = "Back", [KEY_FORWARD] = "Forward", 3236 [KEY_CLOSECD] = "CloseCD", [KEY_EJECTCD] = "EjectCD", 3237 [KEY_EJECTCLOSECD] = "EjectCloseCD", [KEY_NEXTSONG] = "NextSong", 3238 [KEY_PLAYPAUSE] = "PlayPause", [KEY_PREVIOUSSONG] = "PreviousSong", 3239 [KEY_STOPCD] = "StopCD", [KEY_RECORD] = "Record", 3240 [KEY_REWIND] = "Rewind", [KEY_PHONE] = "Phone", 3241 [KEY_ISO] = "ISOKey", [KEY_CONFIG] = "Config", 3242 [KEY_HOMEPAGE] = "HomePage", [KEY_REFRESH] = "Refresh", 3243 [KEY_EXIT] = "Exit", [KEY_MOVE] = "Move", 3244 [KEY_EDIT] = "Edit", [KEY_SCROLLUP] = "ScrollUp", 3245 [KEY_SCROLLDOWN] = "ScrollDown", [KEY_KPLEFTPAREN] = "KPLeftParenthesis", 3246 [KEY_KPRIGHTPAREN] = "KPRightParenthesis", [KEY_NEW] = "New", 3247 [KEY_REDO] = "Redo", [KEY_F13] = "F13", 3248 [KEY_F14] = "F14", [KEY_F15] = "F15", 3249 [KEY_F16] = "F16", [KEY_F17] = "F17", 3250 [KEY_F18] = "F18", [KEY_F19] = "F19", 3251 [KEY_F20] = "F20", [KEY_F21] = "F21", 3252 [KEY_F22] = "F22", [KEY_F23] = "F23", 3253 [KEY_F24] = "F24", [KEY_PLAYCD] = "PlayCD", 3254 [KEY_PAUSECD] = "PauseCD", [KEY_PROG3] = "Prog3", 3255 [KEY_PROG4] = "Prog4", 3256 [KEY_ALL_APPLICATIONS] = "AllApplications", 3257 [KEY_SUSPEND] = "Suspend", 3258 [KEY_CLOSE] = "Close", [KEY_PLAY] = "Play", 3259 [KEY_FASTFORWARD] = "FastForward", [KEY_BASSBOOST] = "BassBoost", 3260 [KEY_PRINT] = "Print", [KEY_HP] = "HP", 3261 [KEY_CAMERA] = "Camera", [KEY_SOUND] = "Sound", 3262 [KEY_QUESTION] = "Question", [KEY_EMAIL] = "Email", 3263 [KEY_CHAT] = "Chat", [KEY_SEARCH] = "Search", 3264 [KEY_CONNECT] = "Connect", [KEY_FINANCE] = "Finance", 3265 [KEY_SPORT] = "Sport", [KEY_SHOP] = "Shop", 3266 [KEY_ALTERASE] = "AlternateErase", [KEY_CANCEL] = "Cancel", 3267 [KEY_BRIGHTNESSDOWN] = "BrightnessDown", [KEY_BRIGHTNESSUP] = "BrightnessUp", 3268 [KEY_MEDIA] = "Media", [KEY_UNKNOWN] = "Unknown", 3269 [BTN_DPAD_UP] = "BtnDPadUp", [BTN_DPAD_DOWN] = "BtnDPadDown", 3270 [BTN_DPAD_LEFT] = "BtnDPadLeft", [BTN_DPAD_RIGHT] = "BtnDPadRight", 3271 [BTN_0] = "Btn0", [BTN_1] = "Btn1", 3272 [BTN_2] = "Btn2", [BTN_3] = "Btn3", 3273 [BTN_4] = "Btn4", [BTN_5] = "Btn5", 3274 [BTN_6] = "Btn6", [BTN_7] = "Btn7", 3275 [BTN_8] = "Btn8", [BTN_9] = "Btn9", 3276 [BTN_LEFT] = "LeftBtn", [BTN_RIGHT] = "RightBtn", 3277 [BTN_MIDDLE] = "MiddleBtn", [BTN_SIDE] = "SideBtn", 3278 [BTN_EXTRA] = "ExtraBtn", [BTN_FORWARD] = "ForwardBtn", 3279 [BTN_BACK] = "BackBtn", [BTN_TASK] = "TaskBtn", 3280 [BTN_TRIGGER] = "Trigger", [BTN_THUMB] = "ThumbBtn", 3281 [BTN_THUMB2] = "ThumbBtn2", [BTN_TOP] = "TopBtn", 3282 [BTN_TOP2] = "TopBtn2", [BTN_PINKIE] = "PinkieBtn", 3283 [BTN_BASE] = "BaseBtn", [BTN_BASE2] = "BaseBtn2", 3284 [BTN_BASE3] = "BaseBtn3", [BTN_BASE4] = "BaseBtn4", 3285 [BTN_BASE5] = "BaseBtn5", [BTN_BASE6] = "BaseBtn6", 3286 [BTN_DEAD] = "BtnDead", [BTN_A] = "BtnA", 3287 [BTN_B] = "BtnB", [BTN_C] = "BtnC", 3288 [BTN_X] = "BtnX", [BTN_Y] = "BtnY", 3289 [BTN_Z] = "BtnZ", [BTN_TL] = "BtnTL", 3290 [BTN_TR] = "BtnTR", [BTN_TL2] = "BtnTL2", 3291 [BTN_TR2] = "BtnTR2", [BTN_SELECT] = "BtnSelect", 3292 [BTN_START] = "BtnStart", [BTN_MODE] = "BtnMode", 3293 [BTN_THUMBL] = "BtnThumbL", [BTN_THUMBR] = "BtnThumbR", 3294 [BTN_TOOL_PEN] = "ToolPen", [BTN_TOOL_RUBBER] = "ToolRubber", 3295 [BTN_TOOL_BRUSH] = "ToolBrush", [BTN_TOOL_PENCIL] = "ToolPencil", 3296 [BTN_TOOL_AIRBRUSH] = "ToolAirbrush", [BTN_TOOL_FINGER] = "ToolFinger", 3297 [BTN_TOOL_MOUSE] = "ToolMouse", [BTN_TOOL_LENS] = "ToolLens", 3298 [BTN_TOUCH] = "Touch", [BTN_STYLUS] = "Stylus", 3299 [BTN_STYLUS2] = "Stylus2", [BTN_TOOL_DOUBLETAP] = "ToolDoubleTap", 3300 [BTN_TOOL_TRIPLETAP] = "ToolTripleTap", [BTN_TOOL_QUADTAP] = "ToolQuadrupleTap", 3301 [BTN_GEAR_DOWN] = "WheelBtn", 3302 [BTN_GEAR_UP] = "Gear up", [KEY_OK] = "Ok", 3303 [KEY_SELECT] = "Select", [KEY_GOTO] = "Goto", 3304 [KEY_CLEAR] = "Clear", [KEY_POWER2] = "Power2", 3305 [KEY_OPTION] = "Option", [KEY_INFO] = "Info", 3306 [KEY_TIME] = "Time", [KEY_VENDOR] = "Vendor", 3307 [KEY_ARCHIVE] = "Archive", [KEY_PROGRAM] = "Program", 3308 [KEY_CHANNEL] = "Channel", [KEY_FAVORITES] = "Favorites", 3309 [KEY_EPG] = "EPG", [KEY_PVR] = "PVR", 3310 [KEY_MHP] = "MHP", [KEY_LANGUAGE] = "Language", 3311 [KEY_TITLE] = "Title", [KEY_SUBTITLE] = "Subtitle", 3312 [KEY_ANGLE] = "Angle", [KEY_ZOOM] = "Zoom", 3313 [KEY_MODE] = "Mode", [KEY_KEYBOARD] = "Keyboard", 3314 [KEY_SCREEN] = "Screen", [KEY_PC] = "PC", 3315 [KEY_TV] = "TV", [KEY_TV2] = "TV2", 3316 [KEY_VCR] = "VCR", [KEY_VCR2] = "VCR2", 3317 [KEY_SAT] = "Sat", [KEY_SAT2] = "Sat2", 3318 [KEY_CD] = "CD", [KEY_TAPE] = "Tape", 3319 [KEY_RADIO] = "Radio", [KEY_TUNER] = "Tuner", 3320 [KEY_PLAYER] = "Player", [KEY_TEXT] = "Text", 3321 [KEY_DVD] = "DVD", [KEY_AUX] = "Aux", 3322 [KEY_MP3] = "MP3", [KEY_AUDIO] = "Audio", 3323 [KEY_VIDEO] = "Video", [KEY_DIRECTORY] = "Directory", 3324 [KEY_LIST] = "List", [KEY_MEMO] = "Memo", 3325 [KEY_CALENDAR] = "Calendar", [KEY_RED] = "Red", 3326 [KEY_GREEN] = "Green", [KEY_YELLOW] = "Yellow", 3327 [KEY_BLUE] = "Blue", [KEY_CHANNELUP] = "ChannelUp", 3328 [KEY_CHANNELDOWN] = "ChannelDown", [KEY_FIRST] = "First", 3329 [KEY_LAST] = "Last", [KEY_AB] = "AB", 3330 [KEY_NEXT] = "Next", [KEY_RESTART] = "Restart", 3331 [KEY_SLOW] = "Slow", [KEY_SHUFFLE] = "Shuffle", 3332 [KEY_BREAK] = "Break", [KEY_PREVIOUS] = "Previous", 3333 [KEY_DIGITS] = "Digits", [KEY_TEEN] = "TEEN", 3334 [KEY_TWEN] = "TWEN", [KEY_DEL_EOL] = "DeleteEOL", 3335 [KEY_DEL_EOS] = "DeleteEOS", [KEY_INS_LINE] = "InsertLine", 3336 [KEY_DEL_LINE] = "DeleteLine", 3337 [KEY_SEND] = "Send", [KEY_REPLY] = "Reply", 3338 [KEY_FORWARDMAIL] = "ForwardMail", [KEY_SAVE] = "Save", 3339 [KEY_DOCUMENTS] = "Documents", [KEY_SPELLCHECK] = "SpellCheck", 3340 [KEY_LOGOFF] = "Logoff", 3341 [KEY_FN] = "Fn", [KEY_FN_ESC] = "Fn+ESC", 3342 [KEY_FN_1] = "Fn+1", [KEY_FN_2] = "Fn+2", 3343 [KEY_FN_B] = "Fn+B", [KEY_FN_D] = "Fn+D", 3344 [KEY_FN_E] = "Fn+E", [KEY_FN_F] = "Fn+F", 3345 [KEY_FN_S] = "Fn+S", 3346 [KEY_FN_F1] = "Fn+F1", [KEY_FN_F2] = "Fn+F2", 3347 [KEY_FN_F3] = "Fn+F3", [KEY_FN_F4] = "Fn+F4", 3348 [KEY_FN_F5] = "Fn+F5", [KEY_FN_F6] = "Fn+F6", 3349 [KEY_FN_F7] = "Fn+F7", [KEY_FN_F8] = "Fn+F8", 3350 [KEY_FN_F9] = "Fn+F9", [KEY_FN_F10] = "Fn+F10", 3351 [KEY_FN_F11] = "Fn+F11", [KEY_FN_F12] = "Fn+F12", 3352 [KEY_KBDILLUMTOGGLE] = "KbdIlluminationToggle", 3353 [KEY_KBDILLUMDOWN] = "KbdIlluminationDown", 3354 [KEY_KBDILLUMUP] = "KbdIlluminationUp", 3355 [KEY_SWITCHVIDEOMODE] = "SwitchVideoMode", 3356 [KEY_BUTTONCONFIG] = "ButtonConfig", 3357 [KEY_TASKMANAGER] = "TaskManager", 3358 [KEY_JOURNAL] = "Journal", 3359 [KEY_CONTROLPANEL] = "ControlPanel", 3360 [KEY_APPSELECT] = "AppSelect", 3361 [KEY_SCREENSAVER] = "ScreenSaver", 3362 [KEY_VOICECOMMAND] = "VoiceCommand", 3363 [KEY_ASSISTANT] = "Assistant", 3364 [KEY_KBD_LAYOUT_NEXT] = "KbdLayoutNext", 3365 [KEY_EMOJI_PICKER] = "EmojiPicker", 3366 [KEY_CAMERA_ACCESS_ENABLE] = "CameraAccessEnable", 3367 [KEY_CAMERA_ACCESS_DISABLE] = "CameraAccessDisable", 3368 [KEY_CAMERA_ACCESS_TOGGLE] = "CameraAccessToggle", 3369 [KEY_ACCESSIBILITY] = "Accessibility", 3370 [KEY_DO_NOT_DISTURB] = "DoNotDisturb", 3371 [KEY_DICTATE] = "Dictate", 3372 [KEY_MICMUTE] = "MicrophoneMute", 3373 [KEY_BRIGHTNESS_MIN] = "BrightnessMin", 3374 [KEY_BRIGHTNESS_MAX] = "BrightnessMax", 3375 [KEY_BRIGHTNESS_AUTO] = "BrightnessAuto", 3376 [KEY_KBDINPUTASSIST_PREV] = "KbdInputAssistPrev", 3377 [KEY_KBDINPUTASSIST_NEXT] = "KbdInputAssistNext", 3378 [KEY_KBDINPUTASSIST_PREVGROUP] = "KbdInputAssistPrevGroup", 3379 [KEY_KBDINPUTASSIST_NEXTGROUP] = "KbdInputAssistNextGroup", 3380 [KEY_KBDINPUTASSIST_ACCEPT] = "KbdInputAssistAccept", 3381 [KEY_KBDINPUTASSIST_CANCEL] = "KbdInputAssistCancel", 3382 [KEY_MACRO1] = "Macro1", [KEY_MACRO2] = "Macro2", [KEY_MACRO3] = "Macro3", 3383 [KEY_MACRO4] = "Macro4", [KEY_MACRO5] = "Macro5", [KEY_MACRO6] = "Macro6", 3384 [KEY_MACRO7] = "Macro7", [KEY_MACRO8] = "Macro8", [KEY_MACRO9] = "Macro9", 3385 [KEY_MACRO10] = "Macro10", [KEY_MACRO11] = "Macro11", [KEY_MACRO12] = "Macro12", 3386 [KEY_MACRO13] = "Macro13", [KEY_MACRO14] = "Macro14", [KEY_MACRO15] = "Macro15", 3387 [KEY_MACRO16] = "Macro16", [KEY_MACRO17] = "Macro17", [KEY_MACRO18] = "Macro18", 3388 [KEY_MACRO19] = "Macro19", [KEY_MACRO20] = "Macro20", [KEY_MACRO21] = "Macro21", 3389 [KEY_MACRO22] = "Macro22", [KEY_MACRO23] = "Macro23", [KEY_MACRO24] = "Macro24", 3390 [KEY_MACRO25] = "Macro25", [KEY_MACRO26] = "Macro26", [KEY_MACRO27] = "Macro27", 3391 [KEY_MACRO28] = "Macro28", [KEY_MACRO29] = "Macro29", [KEY_MACRO30] = "Macro30", 3392 [BTN_TRIGGER_HAPPY1] = "TriggerHappy1", [BTN_TRIGGER_HAPPY2] = "TriggerHappy2", 3393 [BTN_TRIGGER_HAPPY3] = "TriggerHappy3", [BTN_TRIGGER_HAPPY4] = "TriggerHappy4", 3394 [BTN_TRIGGER_HAPPY5] = "TriggerHappy5", [BTN_TRIGGER_HAPPY6] = "TriggerHappy6", 3395 [BTN_TRIGGER_HAPPY7] = "TriggerHappy7", [BTN_TRIGGER_HAPPY8] = "TriggerHappy8", 3396 [BTN_TRIGGER_HAPPY9] = "TriggerHappy9", [BTN_TRIGGER_HAPPY10] = "TriggerHappy10", 3397 [BTN_TRIGGER_HAPPY11] = "TriggerHappy11", [BTN_TRIGGER_HAPPY12] = "TriggerHappy12", 3398 [BTN_TRIGGER_HAPPY13] = "TriggerHappy13", [BTN_TRIGGER_HAPPY14] = "TriggerHappy14", 3399 [BTN_TRIGGER_HAPPY15] = "TriggerHappy15", [BTN_TRIGGER_HAPPY16] = "TriggerHappy16", 3400 [BTN_TRIGGER_HAPPY17] = "TriggerHappy17", [BTN_TRIGGER_HAPPY18] = "TriggerHappy18", 3401 [BTN_TRIGGER_HAPPY19] = "TriggerHappy19", [BTN_TRIGGER_HAPPY20] = "TriggerHappy20", 3402 [BTN_TRIGGER_HAPPY21] = "TriggerHappy21", [BTN_TRIGGER_HAPPY22] = "TriggerHappy22", 3403 [BTN_TRIGGER_HAPPY23] = "TriggerHappy23", [BTN_TRIGGER_HAPPY24] = "TriggerHappy24", 3404 [BTN_TRIGGER_HAPPY25] = "TriggerHappy25", [BTN_TRIGGER_HAPPY26] = "TriggerHappy26", 3405 [BTN_TRIGGER_HAPPY27] = "TriggerHappy27", [BTN_TRIGGER_HAPPY28] = "TriggerHappy28", 3406 [BTN_TRIGGER_HAPPY29] = "TriggerHappy29", [BTN_TRIGGER_HAPPY30] = "TriggerHappy30", 3407 [BTN_TRIGGER_HAPPY31] = "TriggerHappy31", [BTN_TRIGGER_HAPPY32] = "TriggerHappy32", 3408 [BTN_TRIGGER_HAPPY33] = "TriggerHappy33", [BTN_TRIGGER_HAPPY34] = "TriggerHappy34", 3409 [BTN_TRIGGER_HAPPY35] = "TriggerHappy35", [BTN_TRIGGER_HAPPY36] = "TriggerHappy36", 3410 [BTN_TRIGGER_HAPPY37] = "TriggerHappy37", [BTN_TRIGGER_HAPPY38] = "TriggerHappy38", 3411 [BTN_TRIGGER_HAPPY39] = "TriggerHappy39", [BTN_TRIGGER_HAPPY40] = "TriggerHappy40", 3412 [BTN_DIGI] = "Digi", [BTN_STYLUS3] = "Stylus3", 3413 [BTN_TOOL_QUINTTAP] = "ToolQuintTap", [BTN_WHEEL] = "Wheel", 3414 [KEY_10CHANNELSDOWN] = "10ChannelsDown", 3415 [KEY_10CHANNELSUP] = "10ChannelsUp", 3416 [KEY_3D_MODE] = "3DMode", [KEY_ADDRESSBOOK] = "Addressbook", 3417 [KEY_ALS_TOGGLE] = "ALSToggle", [KEY_ASPECT_RATIO] = "AspectRatio", 3418 [KEY_ATTENDANT_OFF] = "AttendantOff", [KEY_ATTENDANT_ON] = "AttendantOn", 3419 [KEY_ATTENDANT_TOGGLE] = "AttendantToggle", 3420 [KEY_AUDIO_DESC] = "AudioDesc", 3421 [KEY_AUTOPILOT_ENGAGE_TOGGLE] = "AutoPiloteEngage", 3422 [KEY_BATTERY] = "Battery", [KEY_BLUETOOTH] = "BlueTooth", 3423 [KEY_BRIGHTNESS_CYCLE] = "BrightnessCycle", 3424 [KEY_BRIGHTNESS_MENU] = "BrightnessMenu", 3425 [KEY_BRL_DOT1] = "BrlDot1", [KEY_BRL_DOT10] = "BrlDot10", 3426 [KEY_BRL_DOT2] = "BrlDot2", [KEY_BRL_DOT3] = "BrlDot3", 3427 [KEY_BRL_DOT4] = "BrlDot4", [KEY_BRL_DOT5] = "BrlDot5", 3428 [KEY_BRL_DOT6] = "BrlDot6", [KEY_BRL_DOT7] = "BrlDot7", 3429 [KEY_BRL_DOT8] = "BrlDot8", [KEY_BRL_DOT9] = "BrlDot9", 3430 [KEY_CAMERA_DOWN] = "CameraDown", [KEY_CAMERA_FOCUS] = "CameraFocus", 3431 [KEY_CAMERA_LEFT] = "CameraLeft", [KEY_CAMERA_RIGHT] = "CameraRight", 3432 [KEY_CAMERA_UP] = "CameraUp", [KEY_CAMERA_ZOOMIN] = "CameraZoomIn", 3433 [KEY_CAMERA_ZOOMOUT] = "CameraZoomOut", [KEY_CLEARVU_SONAR] = "ClearVUSonar", 3434 [KEY_CONTEXT_MENU] = "ContextMenu", [KEY_DATA] = "Data", 3435 [KEY_DATABASE] = "DataBase", [KEY_DISPLAY_OFF] = "DisplayOff", 3436 [KEY_DISPLAYTOGGLE] = "DisplayToggle", [KEY_DOLLAR] = "Dollar", 3437 [KEY_DUAL_RANGE_RADAR] = "DualRangeRadat", 3438 [KEY_EDITOR] = "Editor", [KEY_EURO] = "Euro", 3439 [KEY_FASTREVERSE] = "FastReverse", [KEY_FISHING_CHART] = "FishingChart", 3440 [KEY_FN_RIGHT_SHIFT] = "FnRightShift", [KEY_FRAMEBACK] = "FrameBack", 3441 [KEY_FRAMEFORWARD] = "FrameForward", [KEY_FULL_SCREEN] = "FullScreen", 3442 [KEY_GAMES] = "Games", [KEY_GRAPHICSEDITOR] = "GraphicsEditor", 3443 [KEY_HANGEUL] = "HanGeul", [KEY_HANGUP_PHONE] = "HangUpPhone", 3444 [KEY_IMAGES] = "Images", [KEY_KBD_LCD_MENU1] = "KbdLcdMenu1", 3445 [KEY_KBD_LCD_MENU2] = "KbdLcdMenu2", [KEY_KBD_LCD_MENU3] = "KbdLcdMenu3", 3446 [KEY_KBD_LCD_MENU4] = "KbdLcdMenu4", [KEY_KBD_LCD_MENU5] = "KbdLcdMenu5", 3447 [KEY_LEFT_DOWN] = "LeftDown", [KEY_LEFT_UP] = "LeftUp", 3448 [KEY_LIGHTS_TOGGLE] = "LightToggle", [KEY_MACRO_PRESET1] = "MacroPreset1", 3449 [KEY_MACRO_PRESET2] = "MacroPreset2", [KEY_MACRO_PRESET3] = "MacroPrest3", 3450 [KEY_MACRO_PRESET_CYCLE] = "MacroPresetCycle", 3451 [KEY_MACRO_RECORD_START] = "MacroRecordStart", 3452 [KEY_MACRO_RECORD_STOP] = "MacroRecordStop", 3453 [KEY_MARK_WAYPOINT] = "MarkWayPoint", [KEY_MEDIA_REPEAT] = "MediaRepeat", 3454 [KEY_MEDIA_TOP_MENU] = "MediaTopMenu", [KEY_MESSENGER] = "Messanger", 3455 [KEY_NAV_CHART] = "NavChar", [KEY_NAV_INFO] = "NavInfo", 3456 [KEY_NEWS] = "News", [KEY_NEXT_ELEMENT] = "NextElement", 3457 [KEY_NEXT_FAVORITE] = "NextFavorite", [KEY_NOTIFICATION_CENTER] = "NotificationCenter", 3458 [KEY_NUMERIC_0] = "Numeric0", [KEY_NUMERIC_1] = "Numeric1", 3459 [KEY_NUMERIC_11] = "Numceric11", [KEY_NUMERIC_12] = "Numeric12", 3460 [KEY_NUMERIC_2] = "Numeric2", [KEY_NUMERIC_3] = "Numeric3", 3461 [KEY_NUMERIC_4] = "Numeric4", [KEY_NUMERIC_5] = "Numeric5", 3462 [KEY_NUMERIC_6] = "Numeric6", [KEY_NUMERIC_7] = "Numeric7", 3463 [KEY_NUMERIC_8] = "Numeric8", [KEY_NUMERIC_9] = "Numeric9", 3464 [KEY_NUMERIC_A] = "NumericA", [KEY_NUMERIC_B] = "NumericB", 3465 [KEY_NUMERIC_C] = "NumericC", [KEY_NUMERIC_D] = "NumericD", 3466 [KEY_NUMERIC_POUND] = "NumericPound", [KEY_NUMERIC_STAR] = "NumericStar", 3467 [KEY_ONSCREEN_KEYBOARD] = "OnScreenKeyBoard", 3468 [KEY_PAUSE_RECORD] = "PauseRecord", [KEY_PICKUP_PHONE] = "PickUpPhone", 3469 [KEY_PRESENTATION] = "Presentation", [KEY_PREVIOUS_ELEMENT] = "PreviousElement", 3470 [KEY_PRIVACY_SCREEN_TOGGLE] = "PrivacyScreenToggle", 3471 [KEY_RADAR_OVERLAY] = "RadarOverLay", 3472 [KEY_RFKILL] = "RFKill", [KEY_RIGHT_DOWN] = "RightDown", 3473 [KEY_RIGHT_UP] = "RightUp", [KEY_ROOT_MENU] = "RootMenu", 3474 [KEY_ROTATE_LOCK_TOGGLE] = "RotateLockToggle", 3475 [KEY_SCALE] = "Scale", [KEY_SELECTIVE_SCREENSHOT] = "SelectiveScreenshot", 3476 [KEY_SIDEVU_SONAR] = "SideVUSonar", [KEY_SINGLE_RANGE_RADAR] = "SingleRangeRadar", 3477 [KEY_SLOWREVERSE] = "SlowReverse", [KEY_SOS] = "SOS", 3478 [KEY_SPREADSHEET] = "SpreadSheet", [KEY_STOP_RECORD] = "StopRecord", 3479 [KEY_TOUCHPAD_OFF] = "TouchPadOff", [KEY_TOUCHPAD_ON] = "TouchPadOn", 3480 [KEY_TOUCHPAD_TOGGLE] = "TouchPadToggle", 3481 [KEY_TRADITIONAL_SONAR] = "TraditionalSonar", 3482 [KEY_UNMUTE] = "Unmute", [KEY_UWB] = "UWB", 3483 [KEY_VIDEO_NEXT] = "VideoNext", [KEY_VIDEOPHONE] = "VideoPhone", 3484 [KEY_VIDEO_PREV] = "VideoPrev", [KEY_VOD] = "VOD", 3485 [KEY_VOICEMAIL] = "VoiceMail", [KEY_WLAN] = "WLAN", 3486 [KEY_WORDPROCESSOR] = "WordProcessor", [KEY_WPS_BUTTON] = "WPSButton", 3487 [KEY_WWAN] = "WWAN", [KEY_ZOOMIN] = "ZoomIn", 3488 [KEY_ZOOMOUT] = "ZoomOut", [KEY_ZOOMRESET] = "ZoomReset", 3489 }; 3490 3491 static const char *relatives[REL_MAX + 1] = { 3492 [REL_X] = "X", [REL_Y] = "Y", 3493 [REL_Z] = "Z", [REL_RX] = "Rx", 3494 [REL_RY] = "Ry", [REL_RZ] = "Rz", 3495 [REL_HWHEEL] = "HWheel", [REL_DIAL] = "Dial", 3496 [REL_WHEEL] = "Wheel", [REL_MISC] = "Misc", 3497 [REL_WHEEL_HI_RES] = "WheelHiRes", 3498 [REL_HWHEEL_HI_RES] = "HWheelHiRes" 3499 }; 3500 3501 static const char *absolutes[ABS_CNT] = { 3502 [ABS_X] = "X", [ABS_Y] = "Y", 3503 [ABS_Z] = "Z", [ABS_RX] = "Rx", 3504 [ABS_RY] = "Ry", [ABS_RZ] = "Rz", 3505 [ABS_THROTTLE] = "Throttle", [ABS_RUDDER] = "Rudder", 3506 [ABS_WHEEL] = "Wheel", [ABS_GAS] = "Gas", 3507 [ABS_BRAKE] = "Brake", [ABS_HAT0X] = "Hat0X", 3508 [ABS_HAT0Y] = "Hat0Y", [ABS_HAT1X] = "Hat1X", 3509 [ABS_HAT1Y] = "Hat1Y", [ABS_HAT2X] = "Hat2X", 3510 [ABS_HAT2Y] = "Hat2Y", [ABS_HAT3X] = "Hat3X", 3511 [ABS_HAT3Y] = "Hat 3Y", [ABS_PRESSURE] = "Pressure", 3512 [ABS_DISTANCE] = "Distance", [ABS_TILT_X] = "XTilt", 3513 [ABS_TILT_Y] = "YTilt", [ABS_TOOL_WIDTH] = "ToolWidth", 3514 [ABS_VOLUME] = "Volume", [ABS_PROFILE] = "Profile", 3515 [ABS_MISC] = "Misc", 3516 [ABS_MT_SLOT] = "MTSlot", 3517 [ABS_MT_TOUCH_MAJOR] = "MTMajor", 3518 [ABS_MT_TOUCH_MINOR] = "MTMinor", 3519 [ABS_MT_WIDTH_MAJOR] = "MTMajorW", 3520 [ABS_MT_WIDTH_MINOR] = "MTMinorW", 3521 [ABS_MT_ORIENTATION] = "MTOrientation", 3522 [ABS_MT_POSITION_X] = "MTPositionX", 3523 [ABS_MT_POSITION_Y] = "MTPositionY", 3524 [ABS_MT_TOOL_TYPE] = "MTToolType", 3525 [ABS_MT_BLOB_ID] = "MTBlobID", 3526 [ABS_MT_TRACKING_ID] = "MTTrackingID", 3527 [ABS_MT_PRESSURE] = "MTPressure", 3528 [ABS_MT_DISTANCE] = "MTDistance", 3529 [ABS_MT_TOOL_X] = "MTToolX", 3530 [ABS_MT_TOOL_Y] = "MTToolY", 3531 }; 3532 3533 static const char *misc[MSC_MAX + 1] = { 3534 [MSC_SERIAL] = "Serial", [MSC_PULSELED] = "Pulseled", 3535 [MSC_GESTURE] = "Gesture", [MSC_RAW] = "RawData", 3536 [MSC_SCAN] = "Scan", [MSC_TIMESTAMP] = "TimeStamp", 3537 }; 3538 3539 static const char *leds[LED_MAX + 1] = { 3540 [LED_NUML] = "NumLock", [LED_CAPSL] = "CapsLock", 3541 [LED_SCROLLL] = "ScrollLock", [LED_COMPOSE] = "Compose", 3542 [LED_KANA] = "Kana", [LED_SLEEP] = "Sleep", 3543 [LED_SUSPEND] = "Suspend", [LED_MUTE] = "Mute", 3544 [LED_MISC] = "Misc", [LED_MAIL] = "Mail", 3545 [LED_CHARGING] = "Charging", 3546 }; 3547 3548 static const char *repeats[REP_MAX + 1] = { 3549 [REP_DELAY] = "Delay", [REP_PERIOD] = "Period" 3550 }; 3551 3552 static const char *sounds[SND_MAX + 1] = { 3553 [SND_CLICK] = "Click", [SND_BELL] = "Bell", 3554 [SND_TONE] = "Tone" 3555 }; 3556 3557 static const char *software[SW_CNT] = { 3558 [SW_LID] = "Lid", 3559 [SW_TABLET_MODE] = "TabletMode", 3560 [SW_HEADPHONE_INSERT] = "HeadPhoneInsert", 3561 [SW_RFKILL_ALL] = "RFKillAll", 3562 [SW_MICROPHONE_INSERT] = "MicrophoneInsert", 3563 [SW_DOCK] = "Dock", 3564 [SW_LINEOUT_INSERT] = "LineOutInsert", 3565 [SW_JACK_PHYSICAL_INSERT] = "JackPhysicalInsert", 3566 [SW_VIDEOOUT_INSERT] = "VideoOutInsert", 3567 [SW_CAMERA_LENS_COVER] = "CameraLensCover", 3568 [SW_KEYPAD_SLIDE] = "KeyPadSlide", 3569 [SW_FRONT_PROXIMITY] = "FrontProximity", 3570 [SW_ROTATE_LOCK] = "RotateLock", 3571 [SW_LINEIN_INSERT] = "LineInInsert", 3572 [SW_MUTE_DEVICE] = "MuteDevice", 3573 [SW_PEN_INSERTED] = "PenInserted", 3574 [SW_MACHINE_COVER] = "MachineCover", 3575 }; 3576 3577 static const char *force[FF_CNT] = { 3578 [FF_RUMBLE] = "FF_RUMBLE", 3579 [FF_PERIODIC] = "FF_PERIODIC", 3580 [FF_CONSTANT] = "FF_CONSTANT", 3581 [FF_SPRING] = "FF_SPRING", 3582 [FF_FRICTION] = "FF_FRICTION", 3583 [FF_DAMPER] = "FF_DAMPER", 3584 [FF_INERTIA] = "FF_INERTIA", 3585 [FF_RAMP] = "FF_RAMP", 3586 [FF_SQUARE] = "FF_SQUARE", 3587 [FF_TRIANGLE] = "FF_TRIANGLE", 3588 [FF_SINE] = "FF_SINE", 3589 [FF_SAW_UP] = "FF_SAW_UP", 3590 [FF_SAW_DOWN] = "FF_SAW_DOWN", 3591 [FF_CUSTOM] = "FF_CUSTOM", 3592 [FF_GAIN] = "FF_GAIN", 3593 [FF_AUTOCENTER] = "FF_AUTOCENTER", 3594 [FF_MAX] = "FF_MAX", 3595 }; 3596 3597 static const char *force_status[FF_STATUS_MAX + 1] = { 3598 [FF_STATUS_STOPPED] = "FF_STATUS_STOPPED", 3599 [FF_STATUS_PLAYING] = "FF_STATUS_PLAYING", 3600 }; 3601 3602 static const char **names[EV_MAX + 1] = { 3603 [EV_SYN] = syncs, [EV_KEY] = keys, 3604 [EV_REL] = relatives, [EV_ABS] = absolutes, 3605 [EV_MSC] = misc, [EV_LED] = leds, 3606 [EV_SND] = sounds, [EV_REP] = repeats, 3607 [EV_SW] = software, [EV_FF] = force, 3608 [EV_FF_STATUS] = force_status, 3609 }; 3610 3611 static void hid_resolv_event(__u8 type, __u16 code, struct seq_file *f) 3612 { 3613 if (events[type]) 3614 seq_printf(f, "%s.", events[type]); 3615 else 3616 seq_printf(f, "%02x.", type); 3617 3618 if (names[type] && names[type][code]) 3619 seq_printf(f, "%s", names[type][code]); 3620 else 3621 seq_printf(f, "%04x", code); 3622 } 3623 3624 static void hid_dump_input_mapping(struct hid_device *hid, struct seq_file *f) 3625 { 3626 int i, j, k; 3627 struct hid_report *report; 3628 struct hid_usage *usage; 3629 3630 for (k = HID_INPUT_REPORT; k <= HID_OUTPUT_REPORT; k++) { 3631 list_for_each_entry(report, &hid->report_enum[k].report_list, list) { 3632 for (i = 0; i < report->maxfield; i++) { 3633 for ( j = 0; j < report->field[i]->maxusage; j++) { 3634 usage = report->field[i]->usage + j; 3635 hid_resolv_usage(usage->hid, f); 3636 seq_printf(f, " ---> "); 3637 hid_resolv_event(usage->type, usage->code, f); 3638 seq_printf(f, "\n"); 3639 } 3640 } 3641 } 3642 } 3643 3644 } 3645 3646 static int hid_debug_rdesc_show(struct seq_file *f, void *p) 3647 { 3648 struct hid_device *hdev = f->private; 3649 const __u8 *rdesc = hdev->rdesc; 3650 unsigned rsize = hdev->rsize; 3651 int i; 3652 3653 if (!rdesc) { 3654 rdesc = hdev->dev_rdesc; 3655 rsize = hdev->dev_rsize; 3656 } 3657 3658 /* dump HID report descriptor */ 3659 for (i = 0; i < rsize; i++) 3660 seq_printf(f, "%02x ", rdesc[i]); 3661 seq_printf(f, "\n\n"); 3662 3663 /* dump parsed data and input mappings */ 3664 if (down_interruptible(&hdev->driver_input_lock)) 3665 return 0; 3666 3667 hid_dump_device(hdev, f); 3668 seq_printf(f, "\n"); 3669 hid_dump_input_mapping(hdev, f); 3670 3671 up(&hdev->driver_input_lock); 3672 3673 return 0; 3674 } 3675 3676 static int hid_debug_events_open(struct inode *inode, struct file *file) 3677 { 3678 int err = 0; 3679 struct hid_debug_list *list; 3680 unsigned long flags; 3681 3682 if (!(list = kzalloc(sizeof(struct hid_debug_list), GFP_KERNEL))) { 3683 err = -ENOMEM; 3684 goto out; 3685 } 3686 3687 err = kfifo_alloc(&list->hid_debug_fifo, HID_DEBUG_FIFOSIZE, GFP_KERNEL); 3688 if (err) { 3689 kfree(list); 3690 goto out; 3691 } 3692 list->hdev = (struct hid_device *) inode->i_private; 3693 kref_get(&list->hdev->ref); 3694 file->private_data = list; 3695 mutex_init(&list->read_mutex); 3696 3697 spin_lock_irqsave(&list->hdev->debug_list_lock, flags); 3698 list_add_tail(&list->node, &list->hdev->debug_list); 3699 spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags); 3700 3701 out: 3702 return err; 3703 } 3704 3705 static ssize_t hid_debug_events_read(struct file *file, char __user *buffer, 3706 size_t count, loff_t *ppos) 3707 { 3708 struct hid_debug_list *list = file->private_data; 3709 int ret = 0, copied; 3710 DECLARE_WAITQUEUE(wait, current); 3711 3712 mutex_lock(&list->read_mutex); 3713 if (kfifo_is_empty(&list->hid_debug_fifo)) { 3714 add_wait_queue(&list->hdev->debug_wait, &wait); 3715 set_current_state(TASK_INTERRUPTIBLE); 3716 3717 while (kfifo_is_empty(&list->hid_debug_fifo)) { 3718 if (signal_pending(current)) { 3719 ret = -ERESTARTSYS; 3720 break; 3721 } 3722 3723 /* if list->hdev is NULL we cannot remove_wait_queue(). 3724 * if list->hdev->debug is 0 then hid_debug_unregister() 3725 * was already called and list->hdev is being destroyed. 3726 * if we add remove_wait_queue() here we can hit a race. 3727 */ 3728 if (!list->hdev || !list->hdev->debug) { 3729 ret = -EIO; 3730 set_current_state(TASK_RUNNING); 3731 goto out; 3732 } 3733 3734 if (file->f_flags & O_NONBLOCK) { 3735 ret = -EAGAIN; 3736 break; 3737 } 3738 3739 /* allow O_NONBLOCK from other threads */ 3740 mutex_unlock(&list->read_mutex); 3741 schedule(); 3742 mutex_lock(&list->read_mutex); 3743 set_current_state(TASK_INTERRUPTIBLE); 3744 } 3745 3746 __set_current_state(TASK_RUNNING); 3747 remove_wait_queue(&list->hdev->debug_wait, &wait); 3748 3749 if (ret) 3750 goto out; 3751 } 3752 3753 /* pass the fifo content to userspace, locking is not needed with only 3754 * one concurrent reader and one concurrent writer 3755 */ 3756 ret = kfifo_to_user(&list->hid_debug_fifo, buffer, count, &copied); 3757 if (ret) 3758 goto out; 3759 ret = copied; 3760 out: 3761 mutex_unlock(&list->read_mutex); 3762 return ret; 3763 } 3764 3765 static __poll_t hid_debug_events_poll(struct file *file, poll_table *wait) 3766 { 3767 struct hid_debug_list *list = file->private_data; 3768 3769 poll_wait(file, &list->hdev->debug_wait, wait); 3770 if (!kfifo_is_empty(&list->hid_debug_fifo)) 3771 return EPOLLIN | EPOLLRDNORM; 3772 if (!list->hdev->debug) 3773 return EPOLLERR | EPOLLHUP; 3774 return 0; 3775 } 3776 3777 static int hid_debug_events_release(struct inode *inode, struct file *file) 3778 { 3779 struct hid_debug_list *list = file->private_data; 3780 unsigned long flags; 3781 3782 spin_lock_irqsave(&list->hdev->debug_list_lock, flags); 3783 list_del(&list->node); 3784 spin_unlock_irqrestore(&list->hdev->debug_list_lock, flags); 3785 kfifo_free(&list->hid_debug_fifo); 3786 3787 kref_put(&list->hdev->ref, hiddev_free); 3788 kfree(list); 3789 3790 return 0; 3791 } 3792 3793 DEFINE_SHOW_ATTRIBUTE(hid_debug_rdesc); 3794 3795 static const struct file_operations hid_debug_events_fops = { 3796 .owner = THIS_MODULE, 3797 .open = hid_debug_events_open, 3798 .read = hid_debug_events_read, 3799 .poll = hid_debug_events_poll, 3800 .release = hid_debug_events_release, 3801 .llseek = noop_llseek, 3802 }; 3803 3804 3805 void hid_debug_register(struct hid_device *hdev, const char *name) 3806 { 3807 hdev->debug_dir = debugfs_create_dir(name, hid_debug_root); 3808 hdev->debug_rdesc = debugfs_create_file("rdesc", 0400, 3809 hdev->debug_dir, hdev, &hid_debug_rdesc_fops); 3810 hdev->debug_events = debugfs_create_file("events", 0400, 3811 hdev->debug_dir, hdev, &hid_debug_events_fops); 3812 hdev->debug = 1; 3813 } 3814 3815 void hid_debug_unregister(struct hid_device *hdev) 3816 { 3817 hdev->debug = 0; 3818 wake_up_interruptible(&hdev->debug_wait); 3819 debugfs_remove(hdev->debug_rdesc); 3820 debugfs_remove(hdev->debug_events); 3821 debugfs_remove(hdev->debug_dir); 3822 } 3823 3824 void hid_debug_init(void) 3825 { 3826 hid_debug_root = debugfs_create_dir("hid", NULL); 3827 } 3828 3829 void hid_debug_exit(void) 3830 { 3831 debugfs_remove_recursive(hid_debug_root); 3832 } 3833