hid-debug.c 146 KB

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