3831 lines · 145.6 KB · C
RawDownload
// SPDX-License-Identifier: GPL-2.0-or-later/* *  (c) 1999 Andreas Gal		<gal@cs.uni-magdeburg.de> *  (c) 2000-2001 Vojtech Pavlik	<vojtech@ucw.cz> *  (c) 2007-2009 Jiri Kosina * *  HID debugging support */ /* * * Should you need to contact me, the author, you can do so either by * e-mail - mail your message to <vojtech@ucw.cz>, or by paper mail: * Vojtech Pavlik, Simunkova 1594, Prague 8, 182 00 Czech Republic */ #define pr_fmt(fmt) KBUILD_MODNAME ": " fmt #include <linux/debugfs.h>#include <linux/seq_file.h>#include <linux/kfifo.h>#include <linux/sched/signal.h>#include <linux/export.h>#include <linux/slab.h>#include <linux/uaccess.h>#include <linux/poll.h> #include <linux/hid.h>#include <linux/hid-debug.h> static struct dentry *hid_debug_root; struct hid_usage_entry {	unsigned  page;	unsigned  usage;	const char     *description;}; static const struct hid_usage_entry hid_usage_table[] = {	{ 0x00, 0, "Undefined" },	{ 0x01, 0, "GenericDesktop" },		{ 0x01, 0x0001, "Pointer" },		{ 0x01, 0x0002, "Mouse" },		{ 0x01, 0x0004, "Joystick" },		{ 0x01, 0x0005, "Gamepad" },		{ 0x01, 0x0006, "Keyboard" },		{ 0x01, 0x0007, "Keypad" },		{ 0x01, 0x0008, "MultiaxisController" },		{ 0x01, 0x0009, "TabletPCSystemControls" },		{ 0x01, 0x000a, "WaterCoolingDevice" },		{ 0x01, 0x000b, "ComputerChassisDevice" },		{ 0x01, 0x000c, "WirelessRadioControls" },		{ 0x01, 0x000d, "PortableDeviceControl" },		{ 0x01, 0x000e, "SystemMultiAxisController" },		{ 0x01, 0x000f, "SpatialController" },		{ 0x01, 0x0010, "AssistiveControl" },		{ 0x01, 0x0011, "DeviceDock" },		{ 0x01, 0x0012, "DockableDevice" },		{ 0x01, 0x0013, "CallStateManagementControl" },		{ 0x01, 0x0030, "X" },		{ 0x01, 0x0031, "Y" },		{ 0x01, 0x0032, "Z" },		{ 0x01, 0x0033, "Rx" },		{ 0x01, 0x0034, "Ry" },		{ 0x01, 0x0035, "Rz" },		{ 0x01, 0x0036, "Slider" },		{ 0x01, 0x0037, "Dial" },		{ 0x01, 0x0038, "Wheel" },		{ 0x01, 0x0039, "HatSwitch" },		{ 0x01, 0x003a, "CountedBuffer" },		{ 0x01, 0x003b, "ByteCount" },		{ 0x01, 0x003c, "MotionWakeup" },		{ 0x01, 0x003d, "Start" },		{ 0x01, 0x003e, "Select" },		{ 0x01, 0x0040, "Vx" },		{ 0x01, 0x0041, "Vy" },		{ 0x01, 0x0042, "Vz" },		{ 0x01, 0x0043, "Vbrx" },		{ 0x01, 0x0044, "Vbry" },		{ 0x01, 0x0045, "Vbrz" },		{ 0x01, 0x0046, "Vno" },		{ 0x01, 0x0047, "FeatureNotification" },		{ 0x01, 0x0048, "ResolutionMultiplier" },		{ 0x01, 0x0049, "Qx" },		{ 0x01, 0x004a, "Qy" },		{ 0x01, 0x004b, "Qz" },		{ 0x01, 0x004c, "Qw" },		{ 0x01, 0x0080, "SystemControl" },		{ 0x01, 0x0081, "SystemPowerDown" },		{ 0x01, 0x0082, "SystemSleep" },		{ 0x01, 0x0083, "SystemWakeUp" },		{ 0x01, 0x0084, "SystemContextMenu" },		{ 0x01, 0x0085, "SystemMainMenu" },		{ 0x01, 0x0086, "SystemAppMenu" },		{ 0x01, 0x0087, "SystemMenuHelp" },		{ 0x01, 0x0088, "SystemMenuExit" },		{ 0x01, 0x0089, "SystemMenuSelect" },		{ 0x01, 0x008a, "SystemMenuRight" },		{ 0x01, 0x008b, "SystemMenuLeft" },		{ 0x01, 0x008c, "SystemMenuUp" },		{ 0x01, 0x008d, "SystemMenuDown" },		{ 0x01, 0x008e, "SystemColdRestart" },		{ 0x01, 0x008f, "SystemWarmRestart" },		{ 0x01, 0x0090, "DpadUp" },		{ 0x01, 0x0091, "DpadDown" },		{ 0x01, 0x0092, "DpadRight" },		{ 0x01, 0x0093, "DpadLeft" },		{ 0x01, 0x0094, "IndexTrigger" },		{ 0x01, 0x0095, "PalmTrigger" },		{ 0x01, 0x0096, "Thumbstick" },		{ 0x01, 0x0097, "SystemFunctionShift" },		{ 0x01, 0x0098, "SystemFunctionShiftLock" },		{ 0x01, 0x0099, "SystemFunctionShiftLockIndicator" },		{ 0x01, 0x009a, "SystemDismissNotification" },		{ 0x01, 0x009b, "SystemDoNotDisturb" },		{ 0x01, 0x00a0, "SystemDock" },		{ 0x01, 0x00a1, "SystemUndock" },		{ 0x01, 0x00a2, "SystemSetup" },		{ 0x01, 0x00a3, "SystemBreak" },		{ 0x01, 0x00a4, "SystemDebuggerBreak" },		{ 0x01, 0x00a5, "ApplicationBreak" },		{ 0x01, 0x00a6, "ApplicationDebuggerBreak" },		{ 0x01, 0x00a7, "SystemSpeakerMute" },		{ 0x01, 0x00a8, "SystemHibernate" },		{ 0x01, 0x00a9, "SystemMicrophoneMute" },		{ 0x01, 0x00b0, "SystemDisplayInvert" },		{ 0x01, 0x00b1, "SystemDisplayInternal" },		{ 0x01, 0x00b2, "SystemDisplayExternal" },		{ 0x01, 0x00b3, "SystemDisplayBoth" },		{ 0x01, 0x00b4, "SystemDisplayDual" },		{ 0x01, 0x00b5, "SystemDisplayToggleIntExtMode" },		{ 0x01, 0x00b6, "SystemDisplaySwapPrimarySecondary" },		{ 0x01, 0x00b7, "SystemDisplayToggleLCDAutoscale" },		{ 0x01, 0x00c0, "SensorZone" },		{ 0x01, 0x00c1, "RPM" },		{ 0x01, 0x00c2, "CoolantLevel" },		{ 0x01, 0x00c3, "CoolantCriticalLevel" },		{ 0x01, 0x00c4, "CoolantPump" },		{ 0x01, 0x00c5, "ChassisEnclosure" },		{ 0x01, 0x00c6, "WirelessRadioButton" },		{ 0x01, 0x00c7, "WirelessRadioLED" },		{ 0x01, 0x00c8, "WirelessRadioSliderSwitch" },		{ 0x01, 0x00c9, "SystemDisplayRotationLockButton" },		{ 0x01, 0x00ca, "SystemDisplayRotationLockSliderSwitch" },		{ 0x01, 0x00cb, "ControlEnable" },		{ 0x01, 0x00d0, "DockableDeviceUniqueID" },		{ 0x01, 0x00d1, "DockableDeviceVendorID" },		{ 0x01, 0x00d2, "DockableDevicePrimaryUsagePage" },		{ 0x01, 0x00d3, "DockableDevicePrimaryUsageID" },		{ 0x01, 0x00d4, "DockableDeviceDockingState" },		{ 0x01, 0x00d5, "DockableDeviceDisplayOcclusion" },		{ 0x01, 0x00d6, "DockableDeviceObjectType" },		{ 0x01, 0x00e0, "CallActiveLED" },		{ 0x01, 0x00e1, "CallMuteToggle" },		{ 0x01, 0x00e2, "CallMuteLED" },	{ 0x02, 0, "SimulationControls" },		{ 0x02, 0x0001, "FlightSimulationDevice" },		{ 0x02, 0x0002, "AutomobileSimulationDevice" },		{ 0x02, 0x0003, "TankSimulationDevice" },		{ 0x02, 0x0004, "SpaceshipSimulationDevice" },		{ 0x02, 0x0005, "SubmarineSimulationDevice" },		{ 0x02, 0x0006, "SailingSimulationDevice" },		{ 0x02, 0x0007, "MotorcycleSimulationDevice" },		{ 0x02, 0x0008, "SportsSimulationDevice" },		{ 0x02, 0x0009, "AirplaneSimulationDevice" },		{ 0x02, 0x000a, "HelicopterSimulationDevice" },		{ 0x02, 0x000b, "MagicCarpetSimulationDevice" },		{ 0x02, 0x000c, "BicycleSimulationDevice" },		{ 0x02, 0x0020, "FlightControlStick" },		{ 0x02, 0x0021, "FlightStick" },		{ 0x02, 0x0022, "CyclicControl" },		{ 0x02, 0x0023, "CyclicTrim" },		{ 0x02, 0x0024, "FlightYoke" },		{ 0x02, 0x0025, "TrackControl" },		{ 0x02, 0x00b0, "Aileron" },		{ 0x02, 0x00b1, "AileronTrim" },		{ 0x02, 0x00b2, "AntiTorqueControl" },		{ 0x02, 0x00b3, "AutopilotEnable" },		{ 0x02, 0x00b4, "ChaffRelease" },		{ 0x02, 0x00b5, "CollectiveControl" },		{ 0x02, 0x00b6, "DiveBrake" },		{ 0x02, 0x00b7, "ElectronicCountermeasures" },		{ 0x02, 0x00b8, "Elevator" },		{ 0x02, 0x00b9, "ElevatorTrim" },		{ 0x02, 0x00ba, "Rudder" },		{ 0x02, 0x00bb, "Throttle" },		{ 0x02, 0x00bc, "FlightCommunications" },		{ 0x02, 0x00bd, "FlareRelease" },		{ 0x02, 0x00be, "LandingGear" },		{ 0x02, 0x00bf, "ToeBrake" },		{ 0x02, 0x00c0, "Trigger" },		{ 0x02, 0x00c1, "WeaponsArm" },		{ 0x02, 0x00c2, "WeaponsSelect" },		{ 0x02, 0x00c3, "WingFlaps" },		{ 0x02, 0x00c4, "Accelerator" },		{ 0x02, 0x00c5, "Brake" },		{ 0x02, 0x00c6, "Clutch" },		{ 0x02, 0x00c7, "Shifter" },		{ 0x02, 0x00c8, "Steering" },		{ 0x02, 0x00c9, "TurretDirection" },		{ 0x02, 0x00ca, "BarrelElevation" },		{ 0x02, 0x00cb, "DivePlane" },		{ 0x02, 0x00cc, "Ballast" },		{ 0x02, 0x00cd, "BicycleCrank" },		{ 0x02, 0x00ce, "HandleBars" },		{ 0x02, 0x00cf, "FrontBrake" },		{ 0x02, 0x00d0, "RearBrake" },	{ 0x03, 0, "VRControls" },		{ 0x03, 0x0001, "Belt" },		{ 0x03, 0x0002, "BodySuit" },		{ 0x03, 0x0003, "Flexor" },		{ 0x03, 0x0004, "Glove" },		{ 0x03, 0x0005, "HeadTracker" },		{ 0x03, 0x0006, "HeadMountedDisplay" },		{ 0x03, 0x0007, "HandTracker" },		{ 0x03, 0x0008, "Oculometer" },		{ 0x03, 0x0009, "Vest" },		{ 0x03, 0x000a, "AnimatronicDevice" },		{ 0x03, 0x0020, "StereoEnable" },		{ 0x03, 0x0021, "DisplayEnable" },	{ 0x04, 0, "SportControls" },		{ 0x04, 0x0001, "BaseballBat" },		{ 0x04, 0x0002, "GolfClub" },		{ 0x04, 0x0003, "RowingMachine" },		{ 0x04, 0x0004, "Treadmill" },		{ 0x04, 0x0030, "Oar" },		{ 0x04, 0x0031, "Slope" },		{ 0x04, 0x0032, "Rate" },		{ 0x04, 0x0033, "StickSpeed" },		{ 0x04, 0x0034, "StickFaceAngle" },		{ 0x04, 0x0035, "StickHeelToe" },		{ 0x04, 0x0036, "StickFollowThrough" },		{ 0x04, 0x0037, "StickTempo" },		{ 0x04, 0x0038, "StickType" },		{ 0x04, 0x0039, "StickHeight" },		{ 0x04, 0x0050, "Putter" },		{ 0x04, 0x0051, "1Iron" },		{ 0x04, 0x0052, "2Iron" },		{ 0x04, 0x0053, "3Iron" },		{ 0x04, 0x0054, "4Iron" },		{ 0x04, 0x0055, "5Iron" },		{ 0x04, 0x0056, "6Iron" },		{ 0x04, 0x0057, "7Iron" },		{ 0x04, 0x0058, "8Iron" },		{ 0x04, 0x0059, "9Iron" },		{ 0x04, 0x005a, "10Iron" },		{ 0x04, 0x005b, "11Iron" },		{ 0x04, 0x005c, "SandWedge" },		{ 0x04, 0x005d, "LoftWedge" },		{ 0x04, 0x005e, "PowerWedge" },		{ 0x04, 0x005f, "1Wood" },		{ 0x04, 0x0060, "3Wood" },		{ 0x04, 0x0061, "5Wood" },		{ 0x04, 0x0062, "7Wood" },		{ 0x04, 0x0063, "9Wood" },	{ 0x05, 0, "GameControls" },		{ 0x05, 0x0001, "3DGameController" },		{ 0x05, 0x0002, "PinballDevice" },		{ 0x05, 0x0003, "GunDevice" },		{ 0x05, 0x0020, "PointofView" },		{ 0x05, 0x0021, "TurnRightLeft" },		{ 0x05, 0x0022, "PitchForwardBackward" },		{ 0x05, 0x0023, "RollRightLeft" },		{ 0x05, 0x0024, "MoveRightLeft" },		{ 0x05, 0x0025, "MoveForwardBackward" },		{ 0x05, 0x0026, "MoveUpDown" },		{ 0x05, 0x0027, "LeanRightLeft" },		{ 0x05, 0x0028, "LeanForwardBackward" },		{ 0x05, 0x0029, "HeightofPOV" },		{ 0x05, 0x002a, "Flipper" },		{ 0x05, 0x002b, "SecondaryFlipper" },		{ 0x05, 0x002c, "Bump" },		{ 0x05, 0x002d, "NewGame" },		{ 0x05, 0x002e, "ShootBall" },		{ 0x05, 0x002f, "Player" },		{ 0x05, 0x0030, "GunBolt" },		{ 0x05, 0x0031, "GunClip" },		{ 0x05, 0x0032, "GunSelector" },		{ 0x05, 0x0033, "GunSingleShot" },		{ 0x05, 0x0034, "GunBurst" },		{ 0x05, 0x0035, "GunAutomatic" },		{ 0x05, 0x0036, "GunSafety" },		{ 0x05, 0x0037, "GamepadFireJump" },		{ 0x05, 0x0039, "GamepadTrigger" },		{ 0x05, 0x003a, "FormfittingGamepad" },	{ 0x06, 0, "GenericDeviceControls" },		{ 0x06, 0x0001, "BackgroundNonuserControls" },		{ 0x06, 0x0020, "BatteryStrength" },		{ 0x06, 0x0021, "WirelessChannel" },		{ 0x06, 0x0022, "WirelessID" },		{ 0x06, 0x0023, "DiscoverWirelessControl" },		{ 0x06, 0x0024, "SecurityCodeCharacterEntered" },		{ 0x06, 0x0025, "SecurityCodeCharacterErased" },		{ 0x06, 0x0026, "SecurityCodeCleared" },		{ 0x06, 0x0027, "SequenceID" },		{ 0x06, 0x0028, "SequenceIDReset" },		{ 0x06, 0x0029, "RFSignalStrength" },		{ 0x06, 0x002a, "SoftwareVersion" },		{ 0x06, 0x002b, "ProtocolVersion" },		{ 0x06, 0x002c, "HardwareVersion" },		{ 0x06, 0x002d, "Major" },		{ 0x06, 0x002e, "Minor" },		{ 0x06, 0x002f, "Revision" },		{ 0x06, 0x0030, "Handedness" },		{ 0x06, 0x0031, "EitherHand" },		{ 0x06, 0x0032, "LeftHand" },		{ 0x06, 0x0033, "RightHand" },		{ 0x06, 0x0034, "BothHands" },		{ 0x06, 0x0040, "GripPoseOffset" },		{ 0x06, 0x0041, "PointerPoseOffset" },	{ 0x07, 0, "KeyboardKeypad" },		{ 0x07, 0x0001, "ErrorRollOver" },		{ 0x07, 0x0002, "POSTFail" },		{ 0x07, 0x0003, "ErrorUndefined" },		{ 0x07, 0x0004, "KeyboardA" },		{ 0x07, 0x0005, "KeyboardB" },		{ 0x07, 0x0006, "KeyboardC" },		{ 0x07, 0x0007, "KeyboardD" },		{ 0x07, 0x0008, "KeyboardE" },		{ 0x07, 0x0009, "KeyboardF" },		{ 0x07, 0x000a, "KeyboardG" },		{ 0x07, 0x000b, "KeyboardH" },		{ 0x07, 0x000c, "KeyboardI" },		{ 0x07, 0x000d, "KeyboardJ" },		{ 0x07, 0x000e, "KeyboardK" },		{ 0x07, 0x000f, "KeyboardL" },		{ 0x07, 0x0010, "KeyboardM" },		{ 0x07, 0x0011, "KeyboardN" },		{ 0x07, 0x0012, "KeyboardO" },		{ 0x07, 0x0013, "KeyboardP" },		{ 0x07, 0x0014, "KeyboardQ" },		{ 0x07, 0x0015, "KeyboardR" },		{ 0x07, 0x0016, "KeyboardS" },		{ 0x07, 0x0017, "KeyboardT" },		{ 0x07, 0x0018, "KeyboardU" },		{ 0x07, 0x0019, "KeyboardV" },		{ 0x07, 0x001a, "KeyboardW" },		{ 0x07, 0x001b, "KeyboardX" },		{ 0x07, 0x001c, "KeyboardY" },		{ 0x07, 0x001d, "KeyboardZ" },		{ 0x07, 0x001e, "Keyboard1andBang" },		{ 0x07, 0x001f, "Keyboard2andAt" },		{ 0x07, 0x0020, "Keyboard3andHash" },		{ 0x07, 0x0021, "Keyboard4andDollar" },		{ 0x07, 0x0022, "Keyboard5andPercent" },		{ 0x07, 0x0023, "Keyboard6andCaret" },		{ 0x07, 0x0024, "Keyboard7andAmpersand" },		{ 0x07, 0x0025, "Keyboard8andStar" },		{ 0x07, 0x0026, "Keyboard9andLeftBracket" },		{ 0x07, 0x0027, "Keyboard0andRightBracket" },		{ 0x07, 0x0028, "KeyboardReturnEnter" },		{ 0x07, 0x0029, "KeyboardEscape" },		{ 0x07, 0x002a, "KeyboardDelete" },		{ 0x07, 0x002b, "KeyboardTab" },		{ 0x07, 0x002c, "KeyboardSpacebar" },		{ 0x07, 0x002d, "KeyboardDashandUnderscore" },		{ 0x07, 0x002e, "KeyboardEqualsandPlus" },		{ 0x07, 0x002f, "KeyboardLeftBrace" },		{ 0x07, 0x0030, "KeyboardRightBrace" },		{ 0x07, 0x0031, "KeyboardBackslashandPipe" },		{ 0x07, 0x0032, "KeyboardNonUSHashandTilde" },		{ 0x07, 0x0033, "KeyboardSemiColonandColon" },		{ 0x07, 0x0034, "KeyboardLeftAposandDouble" },		{ 0x07, 0x0035, "KeyboardGraveAccentandTilde" },		{ 0x07, 0x0036, "KeyboardCommaandLessThan" },		{ 0x07, 0x0037, "KeyboardPeriodandGreaterThan" },		{ 0x07, 0x0038, "KeyboardForwardSlashandQuestionMark" },		{ 0x07, 0x0039, "KeyboardCapsLock" },		{ 0x07, 0x003a, "KeyboardF1" },		{ 0x07, 0x003b, "KeyboardF2" },		{ 0x07, 0x003c, "KeyboardF3" },		{ 0x07, 0x003d, "KeyboardF4" },		{ 0x07, 0x003e, "KeyboardF5" },		{ 0x07, 0x003f, "KeyboardF6" },		{ 0x07, 0x0040, "KeyboardF7" },		{ 0x07, 0x0041, "KeyboardF8" },		{ 0x07, 0x0042, "KeyboardF9" },		{ 0x07, 0x0043, "KeyboardF10" },		{ 0x07, 0x0044, "KeyboardF11" },		{ 0x07, 0x0045, "KeyboardF12" },		{ 0x07, 0x0046, "KeyboardPrintScreen" },		{ 0x07, 0x0047, "KeyboardScrollLock" },		{ 0x07, 0x0048, "KeyboardPause" },		{ 0x07, 0x0049, "KeyboardInsert" },		{ 0x07, 0x004a, "KeyboardHome" },		{ 0x07, 0x004b, "KeyboardPageUp" },		{ 0x07, 0x004c, "KeyboardDeleteForward" },		{ 0x07, 0x004d, "KeyboardEnd" },		{ 0x07, 0x004e, "KeyboardPageDown" },		{ 0x07, 0x004f, "KeyboardRightArrow" },		{ 0x07, 0x0050, "KeyboardLeftArrow" },		{ 0x07, 0x0051, "KeyboardDownArrow" },		{ 0x07, 0x0052, "KeyboardUpArrow" },		{ 0x07, 0x0053, "KeypadNumLockandClear" },		{ 0x07, 0x0054, "KeypadForwardSlash" },		{ 0x07, 0x0055, "KeypadStar" },		{ 0x07, 0x0056, "KeypadDash" },		{ 0x07, 0x0057, "KeypadPlus" },		{ 0x07, 0x0058, "KeypadENTER" },		{ 0x07, 0x0059, "Keypad1andEnd" },		{ 0x07, 0x005a, "Keypad2andDownArrow" },		{ 0x07, 0x005b, "Keypad3andPageDn" },		{ 0x07, 0x005c, "Keypad4andLeftArrow" },		{ 0x07, 0x005d, "Keypad5" },		{ 0x07, 0x005e, "Keypad6andRightArrow" },		{ 0x07, 0x005f, "Keypad7andHome" },		{ 0x07, 0x0060, "Keypad8andUpArrow" },		{ 0x07, 0x0061, "Keypad9andPageUp" },		{ 0x07, 0x0062, "Keypad0andInsert" },		{ 0x07, 0x0063, "KeypadPeriodandDelete" },		{ 0x07, 0x0064, "KeyboardNonUSBackslashandPipe" },		{ 0x07, 0x0065, "KeyboardApplication" },		{ 0x07, 0x0066, "KeyboardPower" },		{ 0x07, 0x0067, "KeypadEquals" },		{ 0x07, 0x0068, "KeyboardF13" },		{ 0x07, 0x0069, "KeyboardF14" },		{ 0x07, 0x006a, "KeyboardF15" },		{ 0x07, 0x006b, "KeyboardF16" },		{ 0x07, 0x006c, "KeyboardF17" },		{ 0x07, 0x006d, "KeyboardF18" },		{ 0x07, 0x006e, "KeyboardF19" },		{ 0x07, 0x006f, "KeyboardF20" },		{ 0x07, 0x0070, "KeyboardF21" },		{ 0x07, 0x0071, "KeyboardF22" },		{ 0x07, 0x0072, "KeyboardF23" },		{ 0x07, 0x0073, "KeyboardF24" },		{ 0x07, 0x0074, "KeyboardExecute" },		{ 0x07, 0x0075, "KeyboardHelp" },		{ 0x07, 0x0076, "KeyboardMenu" },		{ 0x07, 0x0077, "KeyboardSelect" },		{ 0x07, 0x0078, "KeyboardStop" },		{ 0x07, 0x0079, "KeyboardAgain" },		{ 0x07, 0x007a, "KeyboardUndo" },		{ 0x07, 0x007b, "KeyboardCut" },		{ 0x07, 0x007c, "KeyboardCopy" },		{ 0x07, 0x007d, "KeyboardPaste" },		{ 0x07, 0x007e, "KeyboardFind" },		{ 0x07, 0x007f, "KeyboardMute" },		{ 0x07, 0x0080, "KeyboardVolumeUp" },		{ 0x07, 0x0081, "KeyboardVolumeDown" },		{ 0x07, 0x0082, "KeyboardLockingCapsLock" },		{ 0x07, 0x0083, "KeyboardLockingNumLock" },		{ 0x07, 0x0084, "KeyboardLockingScrollLock" },		{ 0x07, 0x0085, "KeypadComma" },		{ 0x07, 0x0086, "KeypadEqualSign" },		{ 0x07, 0x0087, "KeyboardInternational1" },		{ 0x07, 0x0088, "KeyboardInternational2" },		{ 0x07, 0x0089, "KeyboardInternational3" },		{ 0x07, 0x008a, "KeyboardInternational4" },		{ 0x07, 0x008b, "KeyboardInternational5" },		{ 0x07, 0x008c, "KeyboardInternational6" },		{ 0x07, 0x008d, "KeyboardInternational7" },		{ 0x07, 0x008e, "KeyboardInternational8" },		{ 0x07, 0x008f, "KeyboardInternational9" },		{ 0x07, 0x0090, "KeyboardLANG1" },		{ 0x07, 0x0091, "KeyboardLANG2" },		{ 0x07, 0x0092, "KeyboardLANG3" },		{ 0x07, 0x0093, "KeyboardLANG4" },		{ 0x07, 0x0094, "KeyboardLANG5" },		{ 0x07, 0x0095, "KeyboardLANG6" },		{ 0x07, 0x0096, "KeyboardLANG7" },		{ 0x07, 0x0097, "KeyboardLANG8" },		{ 0x07, 0x0098, "KeyboardLANG9" },		{ 0x07, 0x0099, "KeyboardAlternateErase" },		{ 0x07, 0x009a, "KeyboardSysReqAttention" },		{ 0x07, 0x009b, "KeyboardCancel" },		{ 0x07, 0x009c, "KeyboardClear" },		{ 0x07, 0x009d, "KeyboardPrior" },		{ 0x07, 0x009e, "KeyboardReturn" },		{ 0x07, 0x009f, "KeyboardSeparator" },		{ 0x07, 0x00a0, "KeyboardOut" },		{ 0x07, 0x00a1, "KeyboardOper" },		{ 0x07, 0x00a2, "KeyboardClearAgain" },		{ 0x07, 0x00a3, "KeyboardCrSelProps" },		{ 0x07, 0x00a4, "KeyboardExSel" },		{ 0x07, 0x00b0, "KeypadDouble0" },		{ 0x07, 0x00b1, "KeypadTriple0" },		{ 0x07, 0x00b2, "ThousandsSeparator" },		{ 0x07, 0x00b3, "DecimalSeparator" },		{ 0x07, 0x00b4, "CurrencyUnit" },		{ 0x07, 0x00b5, "CurrencySubunit" },		{ 0x07, 0x00b6, "KeypadLeftBracket" },		{ 0x07, 0x00b7, "KeypadRightBracket" },		{ 0x07, 0x00b8, "KeypadLeftBrace" },		{ 0x07, 0x00b9, "KeypadRightBrace" },		{ 0x07, 0x00ba, "KeypadTab" },		{ 0x07, 0x00bb, "KeypadBackspace" },		{ 0x07, 0x00bc, "KeypadA" },		{ 0x07, 0x00bd, "KeypadB" },		{ 0x07, 0x00be, "KeypadC" },		{ 0x07, 0x00bf, "KeypadD" },		{ 0x07, 0x00c0, "KeypadE" },		{ 0x07, 0x00c1, "KeypadF" },		{ 0x07, 0x00c2, "KeypadXOR" },		{ 0x07, 0x00c3, "KeypadCaret" },		{ 0x07, 0x00c4, "KeypadPercentage" },		{ 0x07, 0x00c5, "KeypadLess" },		{ 0x07, 0x00c6, "KeypadGreater" },		{ 0x07, 0x00c7, "KeypadAmpersand" },		{ 0x07, 0x00c8, "KeypadDoubleAmpersand" },

Lines 1–500 of 3831.