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