15c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Copyright 2014 The Chromium Authors. All rights reserved. 25c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// Use of this source code is governed by a BSD-style license that can be 35c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu// found in the LICENSE file. 45c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 55c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#ifndef DEVICE_HID_HID_USAGE_AND_PAGE_H_ 65c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#define DEVICE_HID_HID_USAGE_AND_PAGE_H_ 75c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 85c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#include "base/basictypes.h" 95c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liunamespace device { 115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liustruct HidUsageAndPage { 135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu enum Page { 145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageUndefined = 0x00, 155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageGenericDesktop = 0x01, 165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageSimulation = 0x02, 175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageVirtualReality = 0x03, 185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageSport = 0x04, 195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageGame = 0x05, 205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageKeyboard = 0x07, 215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageLed = 0x08, 225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageButton = 0x09, 235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageOrdinal = 0x0A, 245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageTelephony = 0x0B, 255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageConsumer = 0x0C, 265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageDigitizer = 0x0D, 275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPagePidPage = 0x0F, 285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageUnicode = 0x10, 295c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageAlphanumericDisplay = 0x14, 305c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageMedicalInstruments = 0x40, 315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageMonitor0 = 0x80, 325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageMonitor1 = 0x81, 335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageMonitor2 = 0x82, 345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageMonitor3 = 0x83, 355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPagePower0 = 0x84, 365c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPagePower1 = 0x85, 375c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPagePower2 = 0x86, 385c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPagePower3 = 0x87, 395c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageBarCodeScanner = 0x8C, 405c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageScale = 0x8D, 415c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageMagneticStripeReader = 0x8E, 425c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageReservedPointOfSale = 0x8F, 435c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageCameraControl = 0x90, 445c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageArcade = 0x91, 455c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageVendor = 0xFF00, 465c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kPageMediaCenter = 0xFFBC 475c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu }; 485c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 495c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu // These usage enumerations are derived from the HID Usage Tables v1.11 spec. 505c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu enum GenericDesktopUsage { 515c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopUndefined = 0, 525c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopPointer = 1, 535c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopMouse = 2, 545c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopJoystick = 4, 555c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopGamePad = 5, 565c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopKeyboard = 6, 575c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopKeypad = 7, 585c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopMultiAxisController = 8, 595c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopX = 0x30, 605c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopY = 0x31, 615c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopZ = 0x32, 625c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopRx = 0x33, 635c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopRy = 0x34, 645c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopRz = 0x35, 655c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSlider = 0x36, 665c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopDial = 0x37, 675c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopWheel = 0x38, 685c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopHatSwitch = 0x39, 695c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopCountedBuffer = 0x3a, 705c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopByteCount = 0x3b, 715c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopMotionWakeup = 0x3c, 725c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopStart = 0x3d, 735c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSelect = 0x3e, 745c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopVx = 0x40, 755c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopVy = 0x41, 765c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopVz = 0x42, 775c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopVbrx = 0x43, 785c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopVbry = 0x44, 795c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopVbrz = 0x45, 805c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopVno = 0x46, 815c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 825c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemControl = 0x80, 835c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemPowerDown = 0x81, 845c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemSleep = 0x82, 855c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemWakeUp = 0x83, 865c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemContextMenu = 0x84, 875c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemMainMenu = 0x85, 885c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemAppMenu = 0x86, 895c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemMenuHelp = 0x87, 905c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemMenuExit = 0x88, 915c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemMenuSelect = 0x89, 925c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemMenuRight = 0x8a, 935c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemMenuLeft = 0x8b, 945c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemMenuUp = 0x8c, 955c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemMenuDown = 0x8d, 965c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemColdRestart = 0x8e, 975c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemWarmRestart = 0x8f, 985c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 995c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopDPadUp = 0x90, 1005c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopDPadDown = 0x91, 1015c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopDPadLeft = 0x92, 1025c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopDPadRight = 0x93, 1035c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1045c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDock = 0xa0, 1055c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemUndock = 0xa1, 1065c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemSetup = 0xa2, 1075c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemBreak = 0xa3, 1085c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDebuggerBreak = 0xa4, 1095c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopApplicationBreak = 0xa5, 1105c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopApplicationDebuggerBreak = 0xa6, 1115c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemSpeakerMute = 0xa7, 1125c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemHibernate = 0xa8, 1135c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDisplayInvert = 0xb0, 1145c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDisplayInternal = 0xb1, 1155c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDisplayExternal = 0xb2, 1165c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDisplayBoth = 0xb3, 1175c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDisplayDual = 0xb4, 1185c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDisplayToggle = 0xb5, 1195c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu kGenericDesktopSystemDisplaySwap = 0xb6, 1205c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu }; 1215c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1225c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu HidUsageAndPage(uint16_t usage, Page usage_page) 1235c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu : usage(usage), usage_page(usage_page) {} 1245c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu ~HidUsageAndPage() {} 1255c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1265c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu uint16_t usage; 1275c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu Page usage_page; 1285c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 129116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch // Indicates whether this usage is protected by Chrome. 130116680a4aac90f2aa7413d9095a592090648e557Ben Murdoch bool IsProtected() const; 1315c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu}; 1325c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1335c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu} // namespace device 1345c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu 1355c02ac1a9c1b504631c0a3d2b6e737b5d738bae1Bo Liu#endif // DEVICE_HID_HID_USAGE_AND_PAGE_H_ 136