HID Descriptor Tool

Everything else that doesn't fall into one of the other PB categories.
miso
Enthusiast
Enthusiast
Posts: 579
Joined: Sat Oct 21, 2023 4:06 pm
Location: Hungary

HID Descriptor Tool

Post by miso »

Heres a prototype HID descriptor parser. It's ugly.

Because of the strings, it would not fit in two posts, so link is provided. No zip, only a .pb text file.

==Link removed, code is down there==

Interesting, that the same keyboard gives different report on win7 and win10...
Last edited by miso on Thu Dec 11, 2025 1:01 pm, edited 1 time in total.
Fred
Administrator
Administrator
Posts: 18397
Joined: Fri May 17, 2002 4:39 pm
Location: France
Contact:

Re: HID Descriptor Tool

Post by Fred »

My experience about downloads is they tends to disappear over years, so better try to post the code directly here, even if it's splitted
miso
Enthusiast
Enthusiast
Posts: 579
Joined: Sat Oct 21, 2023 4:06 pm
Location: Hungary

Re: HID Descriptor Tool

Post by miso »

Fred wrote: Thu Dec 11, 2025 11:19 am My experience about downloads is they tends to disappear over years, so better try to post the code directly here, even if it's splitted
I absolutely agree.

Code: Select all

Global Dim pagenames.s($FF)
Global Dim pages.s($FF,$255)
Global Dim col.s($FF)

col($00)= "Physical"
col($01)= "Application"
col($02)= "Logical"
col($03)= "Report"
col($04)= "Named Array"
col($05)= "Usage Switch"
col($06)= "Usage Modifier"

Global indentation.i = 0
pagenames($01)="Generic Desktop Page,GD_"
;=========================================================
pages($01 , $00) = "Undefined"
pages($01 , $01) = "Pointer,CP,"
pages($01 , $02) = "Mouse,CA,"
pages($01 , $04) = "Joystick,CA,"
pages($01 , $05) = "Game Pad,CA,"
pages($01 , $06) = "Keyboard,CA,"
pages($01 , $07) = "Keypad,CA,"
pages($01 , $08) = "Multi-axis Controller,CA,"
pages($01 , $09) = "Tablet PC System Controls,CA,"
pages($01 , $0A) = "Water Cooling Device,CA,"
pages($01 , $0B) = "Computer Chassis Device,CA,"
pages($01 , $0C) = "Wireless Radio Controls,CA,"
pages($01 , $0D) = "Portable Device,CA,"
pages($01 , $0E) = "System Multi-axis Controller,CA,"
pages($01 , $0F) = "Spatial Controller,CA,"
pages($01 , $10) = "Assistive Control,CA,"
pages($01 , $30) = "X,DV,"
pages($01 , $31) = "Y,DV,"
pages($01 , $32) = "Z,DV,"
pages($01 , $33) = "Rx,DV,"
pages($01 , $34) = "Ry,DV,"
pages($01 , $35) = "Rz,DV,"
pages($01 , $36) = "Slider,DV,"
pages($01 , $37) = "Dial,DV,"
pages($01 , $38) = "Wheel,DV,"
pages($01 , $39) = "Hat switch,DV,"
pages($01 , $3A) = "Counted Buffer,CL,"
pages($01 , $3B) = "Byte Count,DV,"
pages($01 , $3C) = "Motion Wakeup,OSC,"
pages($01 , $3D) = "Start,OOC,"
pages($01 , $3E) = "Select,OOC,"
pages($01 , $40) = "Vx,DV,"
pages($01 , $41) = "Vy,DV,"
pages($01 , $42) = "Vz,DV,"
pages($01 , $43) = "Vbrx,DV,"
pages($01 , $44) = "Vbry,DV,"
pages($01 , $45) = "Vbrz,DV,"
pages($01 , $46) = "Vno,DV,"
pages($01 , $47) = "Feature Notification,DVDF,"
pages($01 , $48) = "Resolution Multiplier,DV,"
pages($01 , $49) = "Qx,DV,"
pages($01 , $4A) = "Qy,DV,"
pages($01 , $4B) = "Qz,DV,"
pages($01 , $4C) = "Qw,DV,"
pages($01 , $80) = "System Control,CA,"
pages($01 , $81) = "System Power Down,OSC,"
pages($01 , $82) = "System Sleep,OSC,"
pages($01 , $83) = "System Wake Up,OSC,"
pages($01 , $84) = "System Context Menu,OSC,"
pages($01 , $85) = "System Main Menu,OSC,"
pages($01 , $86) = "System App Menu,OSC,"
pages($01 , $87) = "System Menu Help,OSC,"
pages($01 , $88) = "System Menu Exit,OSC,"
pages($01 , $89) = "System Menu Select,OSC,"
pages($01 , $8A) = "System Menu Right,RTC,"
pages($01 , $8B) = "System Menu Left,RTC,"
pages($01 , $8C) = "System Menu Up,RTC,"
pages($01 , $8D) = "System Menu Down,RTC,"
pages($01 , $8E) = "System Cold Restart,OSC,"
pages($01 , $8F) = "System Warm Restart,OSC,"
pages($01 , $90) = "D-pad Up,OOC,"
pages($01 , $91) = "D-pad Down,OOC,"
pages($01 , $92) = "D-pad Right,OOC,"
pages($01 , $93) = "D-pad Left,OOC,"
pages($01 , $94) = "Index Trigger,MCDV,"
pages($01 , $95) = "Palm Trigger,MCDV,"
pages($01 , $96) = "Thumbstick,CP,"
pages($01 , $97) = "System Function Shift,MC,"
pages($01 , $98) = "System Function Shift Lock,OOC,"
pages($01 , $99) = "System Function Shift Lock Indicator,DV,"
pages($01 , $9A) = "System Dismiss Notification,OSC,"
pages($01 , $A0) = "System Dock,OSC,"
pages($01 , $A1) = "System Undock,OSC,"
pages($01 , $A2) = "System Setup,OSC,"
pages($01 , $A3) = "System Break,OSC,"
pages($01 , $A4) = "System Debugger Break,OSC,"
pages($01 , $A5) = "Application Break,OSC,"
pages($01 , $A6) = "Application Debugger Break,OSC,"
pages($01 , $A7) = "System Speaker Mute,OSC,"
pages($01 , $A8) = "System Hibernate,OSC,"
pages($01 , $B0) = "System Display Invert,OSC,"
pages($01 , $B1) = "System Display Internal,OSC,"
pages($01 , $B2) = "System Display External,OSC,"
pages($01 , $B3) = "System Display Both,OSC,"
pages($01 , $B4) = "System Display Dual,OSC,"
pages($01 , $B5) = "System Display Toggle Int/Ext,OSC,"
pages($01 , $B6) = "System Display Swap Primary/Secondary,OSC,"
pages($01 , $B7) = "System Display LCD Autoscale,OSC,"
pages($01 , $C0) = "Sensor Zone,CL,"
pages($01 , $C1) = "RPM,DV,"
pages($01 , $C2) = "Coolant Level,DV,"
pages($01 , $C3) = "Coolant Critical Level,DV,"
pages($01 , $C4) = "Coolant Pump,US,"
pages($01 , $C5) = "Chassis Enclosure,CL,"
pages($01 , $C6) = "Wireless Radio Button,OOC,"
pages($01 , $C7) = "Wireless Radio LED,OOC,"
pages($01 , $C8) = "Wireless Radio Slider Switch,OOC,"
pages($01 , $C9) = "System Display Rotation Lock Button,OOC,"
pages($01 , $CA) = "System Display Rotation Lock Slider Switch,OOC,"
pages($01 , $CB) = "Control Enable,DF,"

pagenames($02)="Simulation Controls Page,SIM_"
;=========================================================
pages($02 , $00) = "Undefined"
pages($02 , $01) = "Flight Simulation Device,CA,"
pages($02 , $02) = "Automobile Simulation Device,CA,"
pages($02 , $03) = "Tank Simulation Device,CA,"
pages($02 , $04) = "Spaceship Simulation Device,CA,"
pages($02 , $05) = "Submarine Simulation Device,CA,"
pages($02 , $06) = "Sailing Simulation Device,CA,"
pages($02 , $07) = "Motorcycle Simulation Device,CA,"
pages($02 , $08) = "Sports Simulation Device,CA,"
pages($02 , $09) = "Airplane Simulation Device,CA,"
pages($02 , $0A) = "Helicopter Simulation Device,CA,"
pages($02 , $0B) = "Magic Carpet Simulation Device,CA,"
pages($02 , $0C) = "Bicycle Simulation Device,CA,"
pages($02 , $20) = "Flight Control Stick,CA,"
pages($02 , $21) = "Flight Stick,CA,"
pages($02 , $22) = "Cyclic Control,CP,"
pages($02 , $23) = "Cyclic Trim,CP,"
pages($02 , $24) = "Flight Yoke,CA,"
pages($02 , $25) = "Track Control,CP,"
pages($02 , $B0) = "Aileron,DV,"
pages($02 , $B1) = "Aileron Trim,DV,"
pages($02 , $B2) = "Anti-Torque Control,DV,AntiTorqueControl"
pages($02 , $B3) = "Autopilot Enable,OOC,"
pages($02 , $B4) = "Chaff Release,OSC,"
pages($02 , $B5) = "Collective Control,DV,"
pages($02 , $B6) = "Dive Brake,DV,"
pages($02 , $B7) = "Electronic Countermeasures,OOC,"
pages($02 , $B8) = "Elevator,DV,"
pages($02 , $B9) = "Elevator Trim,DV,"
pages($02 , $BA) = "Rudder,DV,"
pages($02 , $BB) = "Throttle,DV,"
pages($02 , $BC) = "Flight Communications,OOC,"
pages($02 , $BD) = "Flare Release,OSC,"
pages($02 , $BE) = "Landing Gear,OOC,"
pages($02 , $BF) = "Toe Brake,DV,"
pages($02 , $C0) = "Trigger,MC,"
pages($02 , $C1) = "Weapons Arm,OOC,"
pages($02 , $C2) = "Weapons Select,OSC,"
pages($02 , $C3) = "Wing Flaps,DV,"
pages($02 , $C4) = "Accelerator,DV,"
pages($02 , $C5) = "Brake,DV,"
pages($02 , $C6) = "Clutch,DV,"
pages($02 , $C7) = "Shifter,DV,"
pages($02 , $C8) = "Steering,DV,"
pages($02 , $C9) = "Turret Direction,DV,"
pages($02 , $CA) = "Barrel Elevation,DV,"
pages($02 , $CB) = "Dive Plane,DV,"
pages($02 , $CC) = "Ballast,DV,"
pages($02 , $CD) = "Bicycle Crank,DV,"
pages($02 , $CE) = "Handle Bars,DV,"
pages($02 , $CF) = "Front Brake,DV,"
pages($02 , $D0) = "Rear Brake,DV,"

pagenames($03)="Virtual Reality Controls Page,VR_"
;=========================================================
pages($03 , $00) = "Unidentified "
pages($03 , $01) = "Belt,CA,"
pages($03 , $02) = "Body Suit,CA,"
pages($03 , $03) = "Flexor,CP,"
pages($03 , $04) = "Glove,CA,"
pages($03 , $05) = "Head Tracker,CP,"
pages($03 , $06) = "Head Mounted Display,CA,"
pages($03 , $07) = "Hand Tracker,CA,"
pages($03 , $08) = "Oculometer,CA,"
pages($03 , $09) = "Vest,CA,"
pages($03 , $0A) = "Animatronic Device,CA,"
pages($03 , $20) = "Stereo Enable,OOC"
pages($03 , $21) = "Display Enable,OOC"

pagenames($04)="Sport Controls Page,SC_"
;=========================================================
pages($04 , $00) = "Unidentified"
pages($04 , $01) = "Baseball Bat,CA,"
pages($04 , $02) = "Golf Club,CA,"
pages($04 , $03) = "Rowing Machine,CA,"
pages($04 , $04) = "Treadmill,CA,"
pages($04 , $30) = "Oar,DV,"
pages($04 , $31) = "Slope,DV,"
pages($04 , $32) = "Rate,DV,"
pages($04 , $33) = "Stick Speed,DV,"
pages($04 , $34) = "Stick Face Angle,DV,"
pages($04 , $35) = "Stick Heel/Toe,DV,"
pages($04 , $36) = "Stick Follow Through,DV,"
pages($04 , $37) = "Stick Tempo,DV,"
pages($04 , $38) = "Stick Type,NAry,"
pages($04 , $39) = "Stick Height,DV,"
pages($04 , $50) = "Putter,Sel,"
pages($04 , $51) = "1 Iron,Sel,Number1Iron"
pages($04 , $52) = "2 Iron,Sel,Number2Iron"
pages($04 , $53) = "3 Iron,Sel,Number3Iron"
pages($04 , $54) = "4 Iron,Sel,Number4Iron"
pages($04 , $55) = "5 Iron,Sel,Number5Iron"
pages($04 , $56) = "6 Iron,Sel,Number6Iron"
pages($04 , $57) = "7 Iron,Sel,Number7Iron"
pages($04 , $58) = "8 Iron,Sel,Number8Iron"
pages($04 , $59) = "9 Iron,Sel,Number9Iron"
pages($04 , $5A) = "10 Iron,Sel,Number10Iron"
pages($04 , $5B) = "11 Iron,Sel,Number11Iron"
pages($04 , $5C) = "Sand Wedge,Sel,"
pages($04 , $5D) = "Loft Wedge,Sel,"
pages($04 , $5E) = "Power Wedge,Sel,"
pages($04 , $5F) = "1 Wood,Sel,Number1Wood"
pages($04 , $60) = "3 Wood,Sel,Number3Wood"
pages($04 , $61) = "5 Wood,Sel,Number5Wood"
pages($04 , $62) = "7 Wood,Sel,Number7Wood"
pages($04 , $63) = "9 Wood,Sel,Number9Wood"

pagenames($05)="Game Controls Page,GC_"
;=========================================================
pages($05 , $00) = "Undefined"
pages($05 , $01) = "3D Game Controller,CA,"
pages($05 , $02) = "Pinball Device,CA,"
pages($05 , $03) = "Gun Device,CA,"
pages($05 , $20) = "Point of View,CP,"
pages($05 , $21) = "Turn Right/Left,DV,"
pages($05 , $22) = "Pitch Forward/Backward,DV,"
pages($05 , $23) = "Roll Right/Left,DV,"
pages($05 , $24) = "Move Right/Left,DV,"
pages($05 , $25) = "Move Forward/Backward,DV,"
pages($05 , $26) = "Move Up/Down,DV,"
pages($05 , $27) = "Lean Right/Left,DV,"
pages($05 , $28) = "Lean Forward/Backward,DV,"
pages($05 , $29) = "Height of POV,DV,"
pages($05 , $2A) = "Flipper,MC,"
pages($05 , $2B) = "Secondary Flipper,MC,"
pages($05 , $2C) = "Bump,MC,"
pages($05 , $2D) = "New Game,OSC,"
pages($05 , $2E) = "Shoot Ball,OSC,"
pages($05 , $2F) = "Player,OSC,"
pages($05 , $30) = "Gun Bolt,OOC,"
pages($05 , $31) = "Gun Clip,OOC,"
pages($05 , $32) = "Gun Selector,NAry,"
pages($05 , $33) = "Gun Single Shot,Sel,"
pages($05 , $34) = "Gun Burst,Sel,"
pages($05 , $35) = "Gun Automatic,Sel,"
pages($05 , $36) = "Gun Safety,OOC,"
pages($05 , $37) = "Gamepad Fire/Jump,CL,"
pages($05 , $39) = "Gamepad Trigger,CL,"
pages($05 , $3A) = "Form-fitting Gamepad,SF,"

pagenames($06)="Generic Device Controls Page,GEN_"
;=========================================================
pages($06 , $00) = "Unidentified "
pages($06 , $01) = "Background Controls,CA"
pages($06 , $20) = "Battery Strength,DV"
pages($06 , $21) = "Wireless Channel,DV"
pages($06 , $22) = "Wireless ID,DV"
pages($06 , $23) = "Discover Wireless Control,OSC"
pages($06 , $24) = "Security Code Character Entered,OSC"
pages($06 , $25) = "Security Code Character Erased,OSC"
pages($06 , $26) = "Security Code Cleared,OSC"
pages($06 , $27) = "Sequence ID,DV"
pages($06 , $28) = "Sequence ID Reset,DF"
pages($06 , $29) = "RF Signal Strength,DV"
pages($06 , $2A) = "Software Version,CL,"
pages($06 , $2B) = "Protocol Version,CL,"
pages($06 , $2C) = "Hardware Version,CL,"
pages($06 , $2D) = "Major,SV,"
pages($06 , $2E) = "Minor,SV,"
pages($06 , $2F) = "Revision,SV,"
pages($06 , $30) = "Handedness,NAry,"
pages($06 , $31) = "Either Hand,Sel,"
pages($06 , $32) = "Left Hand,Sel,"
pages($06 , $33) = "Right Hand,Sel,"
pages($06 , $34) = "Both Hands,Sel,"
pages($06 , $40) = "Grip Pose Offset,CP,"
pages($06 , $41) = "Pointer Pose Offset,CP,"

pagenames($07)="Keyboard/Keypad Page,KB_"
;=========================================================
pages($07 , $00) = "Keyboard No event indicated,Sel"
pages($07 , $01) = "Keyboard ErrorRollOver,Sel"
pages($07 , $02) = "Keyboard POSTFail,Sel"
pages($07 , $03) = "Keyboard ErrorUndefined,Sel"
pages($07 , $04) = "Keyboard a and A,Sel,A"
pages($07 , $05) = "Keyboard b and B,Sel,B"
pages($07 , $06) = "Keyboard c and C,Sel,C"
pages($07 , $07) = "Keyboard d and D,Sel,D"
pages($07 , $08) = "Keyboard e and E,Sel,E"
pages($07 , $09) = "Keyboard f and F,Sel,F"
pages($07 , $0A) = "Keyboard g and G,Sel,G"
pages($07 , $0B) = "Keyboard h and H,Sel,H"
pages($07 , $0C) = "Keyboard i and I,Sel,I"
pages($07 , $0D) = "Keyboard j and J,Sel,J"
pages($07 , $0E) = "Keyboard k and K,Sel,K"
pages($07 , $0F) = "Keyboard l and L,Sel,L"
pages($07 , $10) = "Keyboard m and M,Sel,M"
pages($07 , $11) = "Keyboard n and N,Sel,N"
pages($07 , $12) = "Keyboard o and O,Sel,O"
pages($07 , $13) = "Keyboard p and P,Sel,P"
pages($07 , $14) = "Keyboard q and Q,Sel,Q"
pages($07 , $15) = "Keyboard r and R,Sel,R"
pages($07 , $16) = "Keyboard s and S,Sel,S"
pages($07 , $17) = "Keyboard t and T,Sel,T"
pages($07 , $18) = "Keyboard u and U,Sel,U"
pages($07 , $19) = "Keyboard v and V,Sel,V"
pages($07 , $1A) = "Keyboard w and W,Sel,W"
pages($07 , $1B) = "Keyboard x and X,Sel,X"
pages($07 , $1C) = "Keyboard y and Y,Sel,Y"
pages($07 , $1D) = "Keyboard z and Z,Sel,Z"
pages($07 , $1E) = "Keyboard 1 and !,Sel,Digit1AndExclamationMark"
pages($07 , $1F) = "Keyboard 2 and @,Sel,Digit2AndAtSign"
pages($07 , $20) = "Keyboard 3 and #,Sel,Digit3AndHash"
pages($07 , $21) = "Keyboard 4 and $,Sel,Digit4AndDollar"
pages($07 , $22) = "Keyboard 5 and %,Sel,Digit5AndPercent"
pages($07 , $23) = "Keyboard 6 and ^,Sel,Digit6AndCaret"
pages($07 , $24) = "Keyboard 7 and &,Sel,Digit7AndAmpersand"
pages($07 , $25) = "Keyboard 8 and *,Sel,Digit8AndAsterisk"
pages($07 , $26) = "Keyboard 9 and (,Sel,Digit9AndLeftParenthesis"
pages($07 , $27) = "Keyboard 0 and ),Sel,Digit0AndRightParenthesis"
pages($07 , $28) = "Keyboard Return,Sel"
pages($07 , $29) = "Keyboard Escape,Sel"
pages($07 , $2A) = "Keyboard Delete,Sel"
pages($07 , $2B) = "Keyboard Tab,Sel"
pages($07 , $2C) = "Keyboard Spacebar,Sel"
pages($07 , $2D) = "Keyboard - and _,Sel,HyphenAndUnderscore"
pages($07 , $2E) = "Keyboard = and +,Sel,EqualsAndPlus"
pages($07 , $2F) = "Keyboard [ and {,Sel,LeftSquareBracketAndLeftBrace"
pages($07 , $30) = "Keyboard ] and },Sel,RightSquareBracketAndRightBrace"
pages($07 , $31) = "Keyboard \ and |,Sel,BackslashAndVerticalBar"
pages($07 , $32) = "Keyboard Non-US # and ~,Sel,NonUSHashAndTilde"
pages($07 , $33) = "Keyboard ; and :,Sel,SemicolonAndColon"
pages($07 , $34) = "Keyboard ' and "+Chr(34)+",Sel,ApostropheAndQuotationMark"
pages($07 , $35) = "Keyboard ` and ~,Sel,GraveAndTilde"
pages($07 , $36) = "Keyboard Comma and <,Sel,CommaAndLessThanSign"
pages($07 , $37) = "Keyboard . and >,Sel,PeriodAndGreaterThanSign"
pages($07 , $38) = "Keyboard / and ?,Sel,SlashAndQuestionMark"
pages($07 , $39) = "Keyboard Caps Lock,Sel"
pages($07 , $3A) = "Keyboard F1,Sel"
pages($07 , $3B) = "Keyboard F2,Sel"
pages($07 , $3C) = "Keyboard F3,Sel"
pages($07 , $3D) = "Keyboard F4,Sel"
pages($07 , $3E) = "Keyboard F5,Sel"
pages($07 , $3F) = "Keyboard F6,Sel"
pages($07 , $40) = "Keyboard F7,Sel"
pages($07 , $41) = "Keyboard F8,Sel"
pages($07 , $42) = "Keyboard F9,Sel"
pages($07 , $43) = "Keyboard F10,Sel"
pages($07 , $44) = "Keyboard F11,Sel"
pages($07 , $45) = "Keyboard F12,Sel"
pages($07 , $46) = "Keyboard Print Screen,Sel"
pages($07 , $47) = "Keyboard Scroll Lock,Sel"
pages($07 , $48) = "Keyboard Pause,Sel"
pages($07 , $49) = "Keyboard Insert,Sel"
pages($07 , $4A) = "Keyboard Home,Sel"
pages($07 , $4B) = "Keyboard Page Up,Sel"
pages($07 , $4C) = "Keyboard Delete Forward,Sel"
pages($07 , $4D) = "Keyboard End,Sel"
pages($07 , $4E) = "Keyboard Page Down,Sel"
pages($07 , $4F) = "Keyboard Right Arrow,Sel"
pages($07 , $50) = "Keyboard Left Arrow,Sel"
pages($07 , $51) = "Keyboard Down Arrow,Sel"
pages($07 , $52) = "Keyboard Up Arrow,Sel"
pages($07 , $53) = "Keypad Num Lock and Clear,Sel"
pages($07 , $54) = "Keypad /,Sel,KeypadSlash"
pages($07 , $55) = "Keypad *,Sel,KeypadAsterisk"
pages($07 , $56) = "Keypad Comma,Sel"
pages($07 , $57) = "Keypad +,Sel,KeypadPlus"
pages($07 , $58) = "Keypad Enter,Sel"
pages($07 , $59) = "Keypad 1 and End,Sel,KeypadDigit1AndEnd"
pages($07 , $5A) = "Keypad 2 and Down Arrow,Sel,KeypadDigit2AndDownArrow"
pages($07 , $5B) = "Keypad 3 and PageDn,Sel,KeypadDigit3AndPageDown"
pages($07 , $5C) = "Keypad 4 and Left Arrow,Sel,KeypadDigit4AndLeftArrow"
pages($07 , $5D) = "Keypad 5,Sel,KeypadDigit5"
pages($07 , $5E) = "Keypad 6 and Right Arrow,Sel,KeypadDigit6AndRightArrow"
pages($07 , $5F) = "Keypad 7 and Home,Sel,KeypadDigit7AndHome"
pages($07 , $60) = "Keypad 8 and Up Arrow,Sel,KeypadDigit8AndUpArrow"
pages($07 , $61) = "Keypad 9 and PageUp,Sel,KeypadDigit9AndPageUp"
pages($07 , $62) = "Keypad 0 and Insert,Sel,KeypadDigit0AndInsert"
pages($07 , $63) = "Keypad . and Delete,Sel,KeypadDecimalPointandDelete"
pages($07 , $64) = "Keyboard Non-US \ and |,Sel,NonUSBackslashAndVerticalBar"
pages($07 , $65) = "Keyboard Application,Sel"
pages($07 , $66) = "Keyboard Power,Sel"
pages($07 , $67) = "Keypad =,Sel,KeypadEquals"
pages($07 , $68) = "Keyboard F13,Sel"
pages($07 , $69) = "Keyboard F14,Sel"
pages($07 , $6A) = "Keyboard F15,Sel"
pages($07 , $6B) = "Keyboard F16,Sel"
pages($07 , $6C) = "Keyboard F17,Sel"
pages($07 , $6D) = "Keyboard F18,Sel"
pages($07 , $6E) = "Keyboard F19,Sel"
pages($07 , $6F) = "Keyboard F20,Sel"
pages($07 , $70) = "Keyboard F21,Sel"
pages($07 , $71) = "Keyboard F22,Sel"
pages($07 , $72) = "Keyboard F23,Sel"
pages($07 , $73) = "Keyboard F24,Sel"
pages($07 , $74) = "Keyboard Execute,Sel"
pages($07 , $75) = "Keyboard Help,Sel"
pages($07 , $76) = "Keyboard Menu,Sel"
pages($07 , $77) = "Keyboard Select,Sel"
pages($07 , $78) = "Keyboard Stop,Sel"
pages($07 , $79) = "Keyboard Again,Sel"
pages($07 , $7A) = "Keyboard Undo,Sel"
pages($07 , $7B) = "Keyboard Cut,Sel"
pages($07 , $7C) = "Keyboard Copy,Sel"
pages($07 , $7D) = "Keyboard Paste,Sel"
pages($07 , $7E) = "Keyboard Find,Sel"
pages($07 , $7F) = "Keyboard Mute,Sel"
pages($07 , $80) = "Keyboard Volume Up,Sel"
pages($07 , $81) = "Keyboard Volume Down,Sel"
pages($07 , $82) = "Keyboard Locking Caps Lock,Sel"
pages($07 , $83) = "Keyboard Locking Num Lock,Sel"
pages($07 , $84) = "Keyboard Locking Scroll Lock,Sel"
pages($07 , $85) = "Keypad Comma,Sel"
pages($07 , $86) = "Keypad Equal Sign,Sel"
pages($07 , $87) = "Keyboard International1,Sel"
pages($07 , $88) = "Keyboard International2,Sel"
pages($07 , $89) = "Keyboard International3,Sel"
pages($07 , $8A) = "Keyboard International4,Sel"
pages($07 , $8B) = "Keyboard International5,Sel"
pages($07 , $8C) = "Keyboard International6,Sel"
pages($07 , $8D) = "Keyboard International7,Sel"
pages($07 , $8E) = "Keyboard International8,Sel"
pages($07 , $8F) = "Keyboard International9,Sel"
pages($07 , $90) = "Keyboard LANG1,Sel"
pages($07 , $91) = "Keyboard LANG2,Sel"
pages($07 , $92) = "Keyboard LANG3,Sel"
pages($07 , $93) = "Keyboard LANG4,Sel"
pages($07 , $94) = "Keyboard LANG5,Sel"
pages($07 , $95) = "Keyboard LANG6,Sel"
pages($07 , $96) = "Keyboard LANG7,Sel"
pages($07 , $97) = "Keyboard LANG8,Sel"
pages($07 , $98) = "Keyboard LANG9,Sel"
pages($07 , $99) = "Keyboard Alternate Erase,Sel"
pages($07 , $9A) = "Keyboard SysReq/Attention,Sel"
pages($07 , $9B) = "Keyboard Cancel,Sel"
pages($07 , $9C) = "Keyboard Clear,Sel"
pages($07 , $9D) = "Keyboard Prior,Sel"
pages($07 , $9E) = "Keyboard Return,Sel"
pages($07 , $9F) = "Keyboard Separator,Sel"
pages($07 , $A0) = "Keyboard Out,Sel"
pages($07 , $A1) = "Keyboard Oper,Sel"
pages($07 , $A2) = "Keyboard Clear/Again,Sel"
pages($07 , $A3) = "Keyboard CrSel/Props,Sel"
pages($07 , $A4) = "Keyboard ExSel,Sel"
pages($07 , $B0) = "Keypad 00,Sel"
pages($07 , $B1) = "Keypad 000,Sel"
pages($07 , $B2) = "Thousands Separator,Sel"
pages($07 , $B3) = "Decimal Separator,Sel"
pages($07 , $B4) = "Currency Unit,Sel"
pages($07 , $B5) = "Currency Sub-unit,Sel"
pages($07 , $B6) = "Keypad (,Sel,KeypadLeftParenthesis"
pages($07 , $B7) = "Keypad ),Sel,KeypadRightParenthesis"
pages($07 , $B8) = "Keypad {,Sel,KeypadLeftBrace"
pages($07 , $B9) = "Keypad },Sel,KeypadRightBrace"
pages($07 , $BA) = "Keypad Tab,Sel"
pages($07 , $BB) = "Keypad Backspace,Sel"
pages($07 , $BC) = "Keypad A,Sel,KeypadA"
pages($07 , $BD) = "Keypad B,Sel,KeypadB"
pages($07 , $BE) = "Keypad C,Sel,KeypadC"
pages($07 , $BF) = "Keypad D,Sel,KeypadD"
pages($07 , $C0) = "Keypad E,Sel,KeypadE"
pages($07 , $C1) = "Keypad F,Sel,KeypadF"
pages($07 , $C2) = "Keypad XOR,Sel"
pages($07 , $C3) = "Keypad ^,Sel,KeypadCaret"
pages($07 , $C4) = "Keypad %,Sel,KeypadPercent"
pages($07 , $C5) = "Keypad <,Sel,KeypadLessThanSign"
pages($07 , $C6) = "Keypad >,Sel,KeypadGreaterThanSign"
pages($07 , $C7) = "Keypad &,Sel,KeypadAmpersand"
pages($07 , $C8) = "Keypad &&,Sel,KeypadDoubleAmpersand"
pages($07 , $C9) = "Keypad |,Sel,KeypadVerticalBar"
pages($07 , $CA) = "Keypad ||,Sel,KeypadDoubleVerticalBar"
pages($07 , $CB) = "Keypad :,Sel,KeypadColor"
pages($07 , $CC) = "Keypad #,Sel,KeypadHash"
pages($07 , $CD) = "Keypad Space,Sel"
pages($07 , $CE) = "Keypad @,Sel,KeypadAtSign"
pages($07 , $CF) = "Keypad !,Sel,KeypadExclamationMark"
pages($07 , $D0) = "Keypad Memory Store,Sel"
pages($07 , $D1) = "Keypad Memory Recall,Sel"
pages($07 , $D2) = "Keypad Memory Clear,Sel"
pages($07 , $D3) = "Keypad Memory Add,Sel"
pages($07 , $D4) = "Keypad Memory Subtract,Sel"
pages($07 , $D5) = "Keypad Memory Multiply,Sel"
pages($07 , $D6) = "Keypad Memory Divide,Sel"
pages($07 , $D7) = "Keypad +/-,Sel,KeypadPlusOrMinus"
pages($07 , $D8) = "Keypad Clear,Sel"
pages($07 , $D9) = "Keypad Clear Entry,Sel"
pages($07 , $DA) = "Keypad Binary,Sel"
pages($07 , $DB) = "Keypad Octal,Sel"
pages($07 , $DC) = "Keypad Decimal,Sel"
pages($07 , $DD) = "Keypad Hexadecimal,Sel"
pages($07 , $E0) = "Keyboard Left Control,DV"
pages($07 , $E1) = "Keyboard Left Shift,DV"
pages($07 , $E2) = "Keyboard Left Alt,DV"
pages($07 , $E3) = "Keyboard Left GUI,DV"
pages($07 , $E4) = "Keyboard Right Control,DV"
pages($07 , $E5) = "Keyboard Right Shift,DV"
pages($07 , $E6) = "Keyboard Right Alt,DV"
pages($07 , $E7) = "Keyboard Right GUI,DV"


pagenames($08)="LED Indicator Page,LED_"
;=========================================================
pages($08 , $00) = "Undefined"
pages($08 , $01) = "Num Lock,OOC,"
pages($08 , $02) = "Caps Lock,OOC,"
pages($08 , $03) = "Scroll Lock,OOC,"
pages($08 , $04) = "Compose,OOC,"
pages($08 , $05) = "Kana,OOC,"
pages($08 , $06) = "Power,OOC,"
pages($08 , $07) = "Shift,OOC,"
pages($08 , $08) = "Do Not Disturb,OOC,"
pages($08 , $09) = "Mute,OOC,"
pages($08 , $0A) = "Tone Enable,OOC,"
pages($08 , $0B) = "High Cut Filter,OOC,"
pages($08 , $0C) = "Low Cut Filter,OOC,"
pages($08 , $0D) = "Equalizer Enable,OOC,"
pages($08 , $0E) = "Sound Field On,OOC,"
pages($08 , $0F) = "Surround On,OOC,"
pages($08 , $10) = "Repeat,OOC,"
pages($08 , $11) = "Stereo,OOC,"
pages($08 , $12) = "Sampling Rate Detect,OOC,"
pages($08 , $13) = "Spinning,OOC,"
pages($08 , $14) = "CAV,OOC,"
pages($08 , $15) = "CLV,OOC,"
pages($08 , $16) = "Recording Format Detect,OOC,"
pages($08 , $17) = "Off-Hook,OOC,"
pages($08 , $18) = "Ring,OOC,"
pages($08 , $19) = "Message Waiting,OOC,"
pages($08 , $1A) = "Data Mode,OOC,"
pages($08 , $1B) = "Battery Operation,OOC,"
pages($08 , $1C) = "Battery OK,OOC,"
pages($08 , $1D) = "Battery Low,OOC,"
pages($08 , $1E) = "Speaker,OOC,"
pages($08 , $1F) = "Head Set,OOC,"
pages($08 , $20) = "Hold,OOC,"
pages($08 , $21) = "Microphone,OOC,"
pages($08 , $22) = "Coverage,OOC,"
pages($08 , $23) = "Night Mode,OOC,"
pages($08 , $24) = "Send Calls,OOC,"
pages($08 , $25) = "Call Pickup,OOC,"
pages($08 , $26) = "Conference,OOC,"
pages($08 , $27) = "Stand-by,OOC,"
pages($08 , $28) = "Camera On,OOC,"
pages($08 , $29) = "Camera Off,OOC,"
pages($08 , $2A) = "On-Line,OOC,"
pages($08 , $2B) = "Off-Line,OOC,"
pages($08 , $2C) = "Busy,OOC,"
pages($08 , $2D) = "Ready,OOC,"
pages($08 , $2E) = "Paper-Out,OOC,"
pages($08 , $2F) = "Paper-Jam,OOC,"
pages($08 , $30) = "Remote,OOC,"
pages($08 , $31) = "Forward,OOC,"
pages($08 , $32) = "Reverse,OOC,"
pages($08 , $33) = "Stop,OOC,"
pages($08 , $34) = "Rewind,OOC,"
pages($08 , $35) = "Fast Forward,OOC,"
pages($08 , $36) = "Play,OOC,"
pages($08 , $37) = "Pause,OOC,"
pages($08 , $38) = "Record,OOC,"
pages($08 , $39) = "Error,OOC,"
pages($08 , $3A) = "Usage Selected Indicator,US,"
pages($08 , $3B) = "Usage In Use Indicator,US,"
pages($08 , $3C) = "Usage Multi Mode Indicator,UM,"
pages($08 , $3D) = "Indicator On,Sel,"
pages($08 , $3E) = "Indicator Flash,Sel,"
pages($08 , $3F) = "Indicator Slow Blink,Sel,"
pages($08 , $40) = "Indicator Fast Blink,Sel,"
pages($08 , $41) = "Indicator Off,Sel,"
pages($08 , $42) = "Flash On Time,DV,"
pages($08 , $43) = "Slow Blink On Time,DV,"
pages($08 , $44) = "Slow Blink Off Time,DV,"
pages($08 , $45) = "Fast Blink On Time,DV,"
pages($08 , $46) = "Fast Blink Off Time,DV,"
pages($08 , $47) = "Usage Indicator Color,UM,"
pages($08 , $48) = "Indicator Red,Sel,"
pages($08 , $49) = "Indicator Green,Sel,"
pages($08 , $4A) = "Indicator Amber,Sel,"
pages($08 , $4B) = "Generic Indicator,OOC,"
pages($08 , $4C) = "System Suspend,OOC,"
pages($08 , $4D) = "External Power Connected,OOC,"
pages($08 , $4E) = "Indicator Blue,Sel,"
pages($08 , $4F) = "Indicator Orange,Sel,"
pages($08 , $50) = "Good Status,OOC,"
pages($08 , $51) = "Warning Status,OOC,"
pages($08 , $52) = "RGB LED,CL,"
pages($08 , $53) = "Red LED Channel,DV,"
pages($08 , $54) = "Green LED Channel,DV,"
pages($08 , $55) = "Blue LED Channel,DV,"
pages($08 , $56) = "LED Intensity,DV,"
pages($08 , $60) = "Player Indicator,NAry,"
pages($08 , $61) = "Player 1,Sel,"
pages($08 , $62) = "Player 2,Sel,"
pages($08 , $63) = "Player 3,Sel,"
pages($08 , $64) = "Player 4,Sel,"
pages($08 , $65) = "Player 5,Sel,"
pages($08 , $66) = "Player 6,Sel,"
pages($08 , $67) = "Player 7,Sel,"
pages($08 , $68) = "Player 8,Sel,"

pagenames($09)="Button Page,BTN_"
;=========================================================
pages($09 , $00) = "No button pressed,"
pages($09 , $01) = "Button 1 Primary/trigger,MULTI,Button1"
pages($09 , $02) = "Button 2 Secondary,MULTI,Button2"
pages($09 , $03) = "Button 3 Tertiary,MULTI,Button3"
pages($09 , $04) = "Button 4,MULTI"
pages($09 , $05) = "Button 5,MULTI"
pages($09 , $06) = "Button 6,MULTI"
pages($09 , $07) = "Button 7,MULTI"
pages($09 , $08) = "Button 8,MULTI"
pages($09 , $09) = "Button 9,MULTI"
pages($09 , $0A) = "Button 10,MULTI"
pages($09 , $0B) = "Button 11,MULTI"
pages($09 , $0C) = "Button 12,MULTI"
pages($09 , $0D) = "Button 13,MULTI"
pages($09 , $0E) = "Button 14,MULTI"
pages($09 , $0F) = "Button 15,MULTI"
pages($09 , $10) = "Button 16,MULTI"
pages($09 , $11) = "Button 17,MULTI"
pages($09 , $12) = "Button 18,MULTI"
pages($09 , $13) = "Button 19,MULTI"
pages($09 , $14) = "Button 20,MULTI"
pages($09 , $15) = "Button 21,MULTI"
pages($09 , $16) = "Button 22,MULTI"
pages($09 , $17) = "Button 23,MULTI"
pages($09 , $18) = "Button 24,MULTI"
pages($09 , $19) = "Button 25,MULTI"
pages($09 , $1A) = "Button 26,MULTI"
pages($09 , $1B) = "Button 27,MULTI"
pages($09 , $1C) = "Button 28,MULTI"
pages($09 , $1D) = "Button 29,MULTI"
pages($09 , $1E) = "Button 30,MULTI"
pages($09 , $1F) = "Button 31,MULTI"
pages($09 , $20) = "Button 32,MULTI"
pages($09 , $21) = "Button 33,MULTI"
pages($09 , $22) = "Button 34,MULTI"
pages($09 , $23) = "Button 35,MULTI"
pages($09 , $24) = "Button 36,MULTI"
pages($09 , $25) = "Button 37,MULTI"
pages($09 , $26) = "Button 38,MULTI"
pages($09 , $27) = "Button 39,MULTI"
pages($09 , $28) = "Button 40,MULTI"

pagenames($0A)="Ordinal Page,ORD_"
;=========================================================
pages($0A , $00) = "Reserved "
pages($0A , $01) = "Instance 1,UM,"
pages($0A , $02) = "Instance 2,UM,"
pages($0A , $03) = "Instance 3,UM,"
pages($0A , $04) = "Instance 4,UM,"
pages($0A , $05) = "Instance 5,UM,"
pages($0A , $06) = "Instance 6,UM,"
pages($0A , $07) = "Instance 7,UM,"
pages($0A , $08) = "Instance 8,UM,"
pages($0A , $09) = "Instance 9,UM,"
pages($0A , $0A) = "Instance 10,UM,"
pages($0A , $0B) = "Instance 11,UM,"
pages($0A , $0C) = "Instance 12,UM,"
pages($0A , $0D) = "Instance 13,UM,"
pages($0A , $0E) = "Instance 14,UM,"
pages($0A , $0F) = "Instance 15,UM,"
pages($0A , $10) = "Instance 16,UM,"
pages($0A , $11) = "Instance 17,UM,"
pages($0A , $12) = "Instance 18,UM,"
pages($0A , $13) = "Instance 19,UM,"
pages($0A , $14) = "Instance 20,UM,"
pages($0A , $15) = "Instance 21,UM,"
pages($0A , $16) = "Instance 22,UM,"
pages($0A , $17) = "Instance 23,UM,"
pages($0A , $18) = "Instance 24,UM,"
pages($0A , $19) = "Instance 25,UM,"
pages($0A , $1A) = "Instance 26,UM,"
pages($0A , $1B) = "Instance 27,UM,"
pages($0A , $1C) = "Instance 28,UM,"
pages($0A , $1D) = "Instance 29,UM,"
pages($0A , $1E) = "Instance 30,UM,"


pagenames($0B)="Telephony Device Page,TEL_"
;=========================================================
pages($0B , $00) = "Unassigned"
pages($0B , $01) = "Phone,CA,"
pages($0B , $02) = "Answering Machine,CA,"
pages($0B , $03) = "Message Controls,CL,"
pages($0B , $04) = "Handset,CL,"
pages($0B , $05) = "Headset,CL,"
pages($0B , $06) = "Telephony Key Pad,NAry,"
pages($0B , $07) = "Programmable Button,NAry,"
pages($0B , $20) = "Hook Switch,OOC,"
pages($0B , $21) = "Flash,MC,"
pages($0B , $22) = "Feature,OSC,"
pages($0B , $23) = "Hold,OOC,"
pages($0B , $24) = "Redial,OSC,"
pages($0B , $25) = "Transfer,OSC,"
pages($0B , $26) = "Drop,OSC,"
pages($0B , $27) = "Park,OOC,"
pages($0B , $28) = "Forward Calls,OOC,"
pages($0B , $29) = "Alternate Function,MC,"
pages($0B , $2A) = "Line,OSC-NAry,"
pages($0B , $2B) = "Speaker Phone,OOC,"
pages($0B , $2C) = "Conference,OOC,"
pages($0B , $2D) = "Ring Enable,OOC,"
pages($0B , $2E) = "Ring Select,OSC,"
pages($0B , $2F) = "Phone Mute,OOC,"
pages($0B , $30) = "Caller ID,MC,"
pages($0B , $31) = "Send,OOC,"
pages($0B , $50) = "Speed Dial,OSC,"
pages($0B , $51) = "Store Number,OSC,"
pages($0B , $52) = "Recall Number,OSC,"
pages($0B , $53) = "Phone Directory,OOC,"
pages($0B , $70) = "Voice Mail,OOC,"
pages($0B , $71) = "Screen Calls,OOC,"
pages($0B , $72) = "Do Not Disturb,OOC,"
pages($0B , $73) = "Message,OSC,"
pages($0B , $74) = "Answer On/Off,OOC,"
pages($0B , $90) = "Inside Dial Tone,MC,"
pages($0B , $91) = "Outside Dial Tone,MC,"
pages($0B , $92) = "Inside Ring Tone,MC,"
pages($0B , $93) = "Outside Ring Tone,MC,"
pages($0B , $94) = "Priority Ring Tone,MC,"
pages($0B , $95) = "Inside Ringback,MC,"
pages($0B , $96) = "Priority Ringback,MC,"
pages($0B , $97) = "Line Busy Tone,MC,"
pages($0B , $98) = "Reorder Tone,MC,"
pages($0B , $99) = "Call Waiting Tone,MC,"
pages($0B , $9A) = "Confirmation Tone 1,MC,"
pages($0B , $9B) = "Confirmation Tone 2,MC,"
pages($0B , $9C) = "Tones Off,OOC,"
pages($0B , $9D) = "Outside Ringback,MC,"
pages($0B , $9E) = "Ringer,OOC,"
pages($0B , $B0) = "Phone Key 0,Sel,"
pages($0B , $B1) = "Phone Key 1,Sel,"
pages($0B , $B2) = "Phone Key 2,Sel,"
pages($0B , $B3) = "Phone Key 3,Sel,"
pages($0B , $B4) = "Phone Key 4,Sel,"
pages($0B , $B5) = "Phone Key 5,Sel,"
pages($0B , $B6) = "Phone Key 6,Sel,"
pages($0B , $B7) = "Phone Key 7,Sel,"
pages($0B , $B8) = "Phone Key 8,Sel,"
pages($0B , $B9) = "Phone Key 9,Sel,"
pages($0B , $BA) = "Phone Key *,Sel,"
pages($0B , $BB) = "Phone Key #,Sel,"
pages($0B , $BC) = "Phone Key A,Sel,"
pages($0B , $BD) = "Phone Key B,Sel,"
pages($0B , $BE) = "Phone Key C,Sel,"
pages($0B , $BF) = "Phone Key D,Sel,"
pages($0B , $C0) = "Phone Call History Key,Sel,"
pages($0B , $C1) = "Phone Caller ID Key,Sel,"
pages($0B , $C2) = "Phone Settings Key,Sel,"
pages($0B , $F0) = "Host Control,OOC,"
pages($0B , $F1) = "Host Available,OOC,"
pages($0B , $F2) = "Host Call Active,OOC,"
pages($0B , $F3) = "Activate Handset Audio,OOC,"
pages($0B , $F4) = "Ring Type,NARY,"
pages($0B , $F5) = "Re-dialable Phone Number,OOC,"
pages($0B , $F8) = "Stop Ring Tone,Sel,"
pages($0B , $F9) = "PSTN Ring Tone,Sel,"
pages($0B , $FA) = "Host Ring Tone,Sel,"
pages($0B , $FB) = "Alert Sound Error,Sel,"
pages($0B , $FC) = "Alert Sound Confirm,Sel,"
pages($0B , $FD) = "Alert Sound Notification,Sel,"
pages($0B , $108) = "Email Message Waiting,OOC,"
pages($0B , $109) = "Voicemail Message Waiting,OOC,"
pages($0B , $10A) = "Host Hold,OOC,"
pages($0B , $110) = "Incoming Call History Count,DV,"
pages($0B , $111) = "Outgoing Call History Count,DV,"
pages($0B , $112) = "Incoming Call History,CL,"
pages($0B , $113) = "Outgoing Call History,CL,"
pages($0B , $114) = "Phone Locale,DV,"
pages($0B , $140) = "Phone Time Second,DV,"
pages($0B , $141) = "Phone Time Minute,DV,"
pages($0B , $142) = "Phone Time Hour,DV,"
pages($0B , $143) = "Phone Date Day,DV,"
pages($0B , $144) = "Phone Date Month,DV,"
pages($0B , $145) = "Phone Date Year,DV,"
pages($0B , $146) = "Handset Nickname,DV,"
pages($0B , $147) = "Address Book ID,DV,"
pages($0B , $14A) = "Call Duration,DV,"
pages($0B , $14B) = "Dual Mode Phone,CA,"
miso
Enthusiast
Enthusiast
Posts: 579
Joined: Sat Oct 21, 2023 4:06 pm
Location: Hungary

Re: HID Descriptor Tool

Post by miso »

Code: Select all

pagenames($0C)="Consumer Device Page,CD_"
;=========================================================

pages($0C , $00) = "Unassigned"
pages($0C , $01) = "Consumer Control,CA,"
pages($0C , $02) = "Numeric Key Pad,NAry,"
pages($0C , $03) = "Programmable Buttons,NAry,"
pages($0C , $04) = "Microphone,CA,"
pages($0C , $05) = "Headphone,CA,"
pages($0C , $06) = "Graphic Equalizer,CA,"
pages($0C , $20) = "+10,OSC,Plus10"
pages($0C , $21) = "+100,OSC,Plus100"
pages($0C , $22) = "AM/PM,OSC,"
pages($0C , $30) = "Power,OOC,"
pages($0C , $31) = "Reset,OSC,"
pages($0C , $32) = "Sleep,OSC,"
pages($0C , $33) = "Sleep After,OSC,"
pages($0C , $34) = "Sleep Mode,RTC,"
pages($0C , $35) = "Illumination,OOC,"
pages($0C , $36) = "Function Buttons,NAry,"
pages($0C , $40) = "Menu,OOC,"
pages($0C , $41) = "Menu Pick,OSC,"
pages($0C , $42) = "Menu Up,OSC,"
pages($0C , $43) = "Menu Down,OSC,"
pages($0C , $44) = "Menu Left,OSC,"
pages($0C , $45) = "Menu Right,OSC,"
pages($0C , $46) = "Menu Escape,OSC,"
pages($0C , $47) = "Menu Value Increase,OSC,"
pages($0C , $48) = "Menu Value Decrease,OSC,"
pages($0C , $60) = "Data On Screen,OOC,"
pages($0C , $61) = "Closed Caption,OOC,"
pages($0C , $62) = "Closed Caption Select,OSC,"
pages($0C , $63) = "VCR/TV,OOC,"
pages($0C , $64) = "Broadcast Mode,OSC,"
pages($0C , $65) = "Snapshot,OSC,"
pages($0C , $66) = "Still,OSC,"
pages($0C , $67) = "Picture-in-Picture Toggle,OSC,"
pages($0C , $68) = "Picture-in-Picture Swap,OSC,"
pages($0C , $69) = "Red Menu Button,MC,"
pages($0C , $6A) = "Green Menu Button,MC,"
pages($0C , $6B) = "Blue Menu Button,MC,"
pages($0C , $6C) = "Yellow Menu Button,MC,"
pages($0C , $6D) = "Aspect,OSC,"
pages($0C , $6E) = "3D Mode Select,OSC,"
pages($0C , $6F) = "Display Brightness Increment,RTC,"
pages($0C , $70) = "Display Brightness Decrement,RTC,"
pages($0C , $71) = "Display Brightness,LC,"
pages($0C , $72) = "Display Backlight Toggle,OOC,"
pages($0C , $73) = "Display Set Brightness to Minimum,OOC,"
pages($0C , $74) = "Display Set Brightness to Maximum,OOC,"
pages($0C , $75) = "Display Set Auto Brightness,OOC,"
pages($0C , $76) = "Camera Access Enabled,OOC,"
pages($0C , $77) = "Camera Access Disabled,OOC,"
pages($0C , $78) = "Camera Access Toggle,OOC,"
pages($0C , $79) = "Keyboard Brightness Increment,OSC,"
pages($0C , $7A) = "Keyboard Brightness Decrement,OSC,"
pages($0C , $7B) = "Keyboard Backlight Set Level,LC,"
pages($0C , $7C) = "Keyboard Backlight OOC,OOC,"
pages($0C , $7D) = "Keyboard Backlight Set Minimum,OSC,"
pages($0C , $7E) = "Keyboard Backlight Set Maximum,OSC,"
pages($0C , $7F) = "Keyboard Backlight Auto,OOC,"
pages($0C , $80) = "Selection,NAry,"
pages($0C , $81) = "Assign Selection,OSC,"
pages($0C , $82) = "Mode Step,OSC,"
pages($0C , $83) = "Recall Last,OSC,"
pages($0C , $84) = "Enter Channel,OSC,"
pages($0C , $85) = "Order Movie,OSC,"
pages($0C , $86) = "Channel,LC,"
pages($0C , $87) = "Media Selection,NAry,"
pages($0C , $88) = "Media Select Computer,Sel,"
pages($0C , $89) = "Media Select TV,Sel,"
pages($0C , $8A) = "Media Select WWW,Sel,"
pages($0C , $8B) = "Media Select DVD,Sel,"
pages($0C , $8C) = "Media Select Telephone,Sel,"
pages($0C , $8D) = "Media Select Program Guide,Sel,"
pages($0C , $8E) = "Media Select Video Phone,Sel,"
pages($0C , $8F) = "Media Select Games,Sel,"
pages($0C , $90) = "Media Select Messages,Sel,"
pages($0C , $91) = "Media Select CD,Sel,"
pages($0C , $92) = "Media Select VCR,Sel,"
pages($0C , $93) = "Media Select Tuner,Sel,"
pages($0C , $94) = "Quit,OSC,"
pages($0C , $95) = "Help,OOC,"
pages($0C , $96) = "Media Select Tape,Sel,"
pages($0C , $97) = "Media Select Cable,Sel,"
pages($0C , $98) = "Media Select Satellite,Sel,"
pages($0C , $99) = "Media Select Security,Sel,"
pages($0C , $9A) = "Media Select Home,Sel,"
pages($0C , $9B) = "Media Select Call,Sel,"
pages($0C , $9C) = "Channel Increment,OSC,"
pages($0C , $9D) = "Channel Decrement,OSC,"
pages($0C , $9E) = "Media Select SAP,Sel,"
pages($0C , $A0) = "VCR Plus,OSC,"
pages($0C , $A1) = "Once,OSC,"
pages($0C , $A2) = "Daily,OSC,"
pages($0C , $A3) = "Weekly,OSC,"
pages($0C , $A4) = "Monthly,OSC,"
pages($0C , $B0) = "Play,OOC,"
pages($0C , $B1) = "Pause,OOC,"
pages($0C , $B2) = "Record,OOC,"
pages($0C , $B3) = "Fast Forward,OOC,"
pages($0C , $B4) = "Rewind,OOC,"
pages($0C , $B5) = "Scan Next Track,OSC,"
pages($0C , $B6) = "Scan Previous Track,OSC,"
pages($0C , $B7) = "Stop,OSC,"
pages($0C , $B8) = "Eject,OSC,"
pages($0C , $B9) = "Random Play,OOC,"
pages($0C , $BA) = "Select Disc,NAry,"
pages($0C , $BB) = "Enter Disc,MC,"
pages($0C , $BC) = "Repeat,OSC,"
pages($0C , $BD) = "Tracking,LC,"
pages($0C , $BE) = "Track Normal,OSC,"
pages($0C , $BF) = "Slow Tracking,LC,"
pages($0C , $C0) = "Frame Forward,RTC,"
pages($0C , $C1) = "Frame Back,RTC,"
pages($0C , $C2) = "Mark,OSC,"
pages($0C , $C3) = "Clear Mark,OSC,"
pages($0C , $C4) = "Repeat From Mark,OOC,"
pages($0C , $C5) = "Return To Mark,OSC,"
pages($0C , $C6) = "Search Mark Forward,OSC,"
pages($0C , $C7) = "Search Mark Backwards,OSC,"
pages($0C , $C8) = "Counter Reset,OSC,"
pages($0C , $C9) = "Show Counter,OSC,"
pages($0C , $CA) = "Tracking Increment,RTC,"
pages($0C , $CB) = "Tracking Decrement,RTC,"
pages($0C , $CC) = "Stop/Eject,OSC,"
pages($0C , $CD) = "Play/Pause,OSC,"
pages($0C , $CE) = "Play/Skip,OSC,"
pages($0C , $CF) = "Voice Command,OSC,"
pages($0C , $D0) = "Invoke Capture Interface,Sel,"
pages($0C , $D1) = "Start or Stop Game Recording,Sel,"
pages($0C , $D2) = "Historical Game Capture,Sel,"
pages($0C , $D3) = "Capture Game Screenshot,Sel,"
pages($0C , $D4) = "Show or Hide Recording Indicator,Sel,"
pages($0C , $D5) = "Start or Stop Microphone Capture,Sel,"
pages($0C , $D6) = "Start or Stop Camera Capture,Sel,"
pages($0C , $D7) = "Start or Stop Game Broadcast,Sel,"
pages($0C , $E0) = "Volume,LC,"
pages($0C , $E1) = "Balance,LC,"
pages($0C , $E2) = "Mute,OOC,"
pages($0C , $E3) = "Bass,LC,"
pages($0C , $E4) = "Treble,LC,"
pages($0C , $E5) = "Bass Boost,OOC,"
pages($0C , $E6) = "Surround Mode,OSC,"
pages($0C , $E7) = "Loudness,OOC,"
pages($0C , $E8) = "MPX,OOC,MPX"
pages($0C , $E9) = "Volume Increment,RTC,"
pages($0C , $EA) = "Volume Decrement,RTC,"
pages($0C , $F0) = "Speed Select,OSC,"
pages($0C , $F1) = "Playback Speed,NAry,"
pages($0C , $F2) = "Standard Play,Sel,"
pages($0C , $F3) = "Long Play,Sel,"
pages($0C , $F4) = "Extended Play,Sel,"
pages($0C , $F5) = "Slow,OSC,"
pages($0C , $100) = "Fan Enable,OOC,"
pages($0C , $101) = "Fan Speed,LC,"
pages($0C , $102) = "Light Enable,OOC,"
pages($0C , $103) = "Light Illumination Level,LC,"
pages($0C , $104) = "Climate Control Enable,OOC,"
pages($0C , $105) = "Room Temperature,LC,"
pages($0C , $106) = "Security Enable,OOC,"
pages($0C , $107) = "Fire Alarm,OSC,"
pages($0C , $108) = "Police Alarm,OSC,"
pages($0C , $109) = "Proximity,LC,"
pages($0C , $10A) = "Motion,OSC,"
pages($0C , $10B) = "Duress Alarm,OSC,"
pages($0C , $10C) = "Holdup Alarm,OSC,"
pages($0C , $10D) = "Medical Alarm,OSC,"
pages($0C , $150) = "Balance Right,RTC,"
pages($0C , $151) = "Balance Left,RTC,"
pages($0C , $152) = "Bass Increment,RTC,"
pages($0C , $153) = "Bass Decrement,RTC,"
pages($0C , $154) = "Treble Increment,RTC,"
pages($0C , $155) = "Treble Decrement,RTC,"
pages($0C , $160) = "Speaker System,CL,"
pages($0C , $161) = "Channel Left,CL,"
pages($0C , $162) = "Channel Right,CL,"
pages($0C , $163) = "Channel Center,CL,"
pages($0C , $164) = "Channel Front,CL,"
pages($0C , $165) = "Channel Center Front,CL,"
pages($0C , $166) = "Channel Side,CL,"
pages($0C , $167) = "Channel Surround,CL,"
pages($0C , $168) = "Channel Low Frequency Enhancement,CL,"
pages($0C , $169) = "Channel Top,CL,"
pages($0C , $16A) = "Channel Unknown,CL,"
pages($0C , $170) = "Sub-channel,LC,"
pages($0C , $171) = "Sub-channel Increment,OSC,"
pages($0C , $172) = "Sub-channel Decrement,OSC,"
pages($0C , $173) = "Alternate Audio Increment,OSC,"
pages($0C , $174) = "Alternate Audio Decrement,OSC,"
pages($0C , $180) = "Application Launch Buttons,NAry,"
pages($0C , $181) = "AL Launch Button Configuration Tool,Sel,"
pages($0C , $182) = "AL Programmable Button Configuration,Sel,"
pages($0C , $183) = "AL Consumer Control Configuration,Sel,"
pages($0C , $184) = "AL Word Processor,Sel,"
pages($0C , $185) = "AL Text Editor,Sel,"
pages($0C , $186) = "AL Spreadsheet,Sel,"
pages($0C , $187) = "AL Graphics Editor,Sel,"
pages($0C , $188) = "AL Presentation App,Sel,"
pages($0C , $189) = "AL Database App,Sel,"
pages($0C , $18A) = "AL Email Reader,Sel,"
pages($0C , $18B) = "AL Newsreader,Sel,"
pages($0C , $18C) = "AL Voicemail,Sel,"
pages($0C , $18D) = "AL Contacts/Address Book,Sel,"
pages($0C , $18E) = "AL Calendar/Schedule,Sel,"
pages($0C , $18F) = "AL Task/Project Manager,Sel,"
pages($0C , $190) = "AL Log/Journal/Timecard,Sel,"
pages($0C , $191) = "AL Checkbook/Finance,Sel,"
pages($0C , $192) = "AL Calculator,Sel,"
pages($0C , $193) = "AL A/V Capture/Playback,Sel,"
pages($0C , $194) = "AL Local Machine Browser,Sel,"
pages($0C , $195) = "AL LAN/WAN Browser,Sel,"
pages($0C , $196) = "AL Internet Browser,Sel,"
pages($0C , $197) = "AL Remote Networking/ISP Connect,Sel,"
pages($0C , $198) = "AL Network Conference,Sel,"
pages($0C , $199) = "AL Network Chat,Sel,"
pages($0C , $19A) = "AL Telephony/Dialer,Sel,"
pages($0C , $19B) = "AL Logon,Sel,"
pages($0C , $19C) = "AL Logoff,Sel,"
pages($0C , $19D) = "AL Logon/Logoff,Sel,"
pages($0C , $19E) = "AL Terminal Lock/Screensaver,Sel,"
pages($0C , $19F) = "AL Control Panel,Sel,"
pages($0C , $1A0) = "AL Command Line Processor/Run,Sel,"
pages($0C , $1A1) = "AL Process/Task Manager,Sel,"
pages($0C , $1A2) = "AL Select Task/Application,Sel,"
pages($0C , $1A3) = "AL Next Task/Application,Sel,"
pages($0C , $1A4) = "AL Previous Task/Application,Sel,"
pages($0C , $1A5) = "AL Preemptive Halt Task/Application,Sel,"
pages($0C , $1A6) = "AL Integrated Help Center,Sel,"
pages($0C , $1A7) = "AL Documents,Sel,"
pages($0C , $1A8) = "AL Thesaurus,Sel,"
pages($0C , $1A9) = "AL Dictionary,Sel,"
pages($0C , $1AA) = "AL Desktop,Sel,"
pages($0C , $1AB) = "AL Spell Check,Sel,"
pages($0C , $1AC) = "AL Grammar Check,Sel,"
pages($0C , $1AD) = "AL Wireless Status,Sel,"
pages($0C , $1AE) = "AL Keyboard Layout,Sel,"
pages($0C , $1AF) = "AL Virus Protection,Sel,"
pages($0C , $1B0) = "AL Encryption,Sel,"
pages($0C , $1B1) = "AL Screen Saver,Sel,"
pages($0C , $1B2) = "AL Alarms,Sel,"
pages($0C , $1B3) = "AL Clock,Sel,"
pages($0C , $1B4) = "AL File Browser,Sel,"
pages($0C , $1B5) = "AL Power Status,Sel,"
pages($0C , $1B6) = "AL Image Browser,Sel,"
pages($0C , $1B7) = "AL Audio Browser,Sel,"
pages($0C , $1B8) = "AL Movie Browser,Sel,"
pages($0C , $1B9) = "AL Digital Rights Manager,Sel,"
pages($0C , $1BA) = "AL Digital Wallet,Sel,"
pages($0C , $1BC) = "AL Instant Messaging,Sel,"
pages($0C , $1BD) = "AL OEM Features/Tips/Tutorial Browser,Sel,"
pages($0C , $1BE) = "AL OEM Help,Sel,"
pages($0C , $1BF) = "AL Online Community,Sel,"
pages($0C , $1C0) = "AL Entertainment Content Browser,Sel,"
pages($0C , $1C1) = "AL Online Shopping Browser,Sel,"
pages($0C , $1C2) = "AL SmartCard Information/Help,Sel,"
pages($0C , $1C3) = "AL Market Monitor/Finance Browser,Sel,"
pages($0C , $1C4) = "AL Customized Corporate News Browser,Sel,"
pages($0C , $1C5) = "AL Online Activity Browser,Sel,"
pages($0C , $1C6) = "AL Research/Search Browser,Sel,"
pages($0C , $1C7) = "AL Audio Player,Sel,"
pages($0C , $1C8) = "AL Message Status,Sel,"
pages($0C , $1C9) = "AL Contact Sync,Sel,"
pages($0C , $1CB) = "AL Context-aware Desktop Assistant,Sel,"
pages($0C , $200) = "Generic GUI Application Controls,NAry,"
pages($0C , $201) = "AC New,Sel,"
pages($0C , $202) = "AC Open,Sel,"
pages($0C , $203) = "AC Close,Sel,"
pages($0C , $204) = "AC Exit,Sel,"
pages($0C , $205) = "AC Maximize,Sel,"
pages($0C , $206) = "AC Minimize,Sel,"
pages($0C , $207) = "AC Save,Sel,"
pages($0C , $208) = "AC Print,Sel,"
pages($0C , $209) = "AC Properties,Sel,"
pages($0C , $21A) = "AC Undo,Sel,"
pages($0C , $21B) = "AC Copy,Sel,"
pages($0C , $21C) = "AC Cut,Sel,"
pages($0C , $21D) = "AC Paste,Sel,"
pages($0C , $21E) = "AC Select All,Sel,"
pages($0C , $21F) = "AC Find,Sel,"
pages($0C , $220) = "AC Find and Replace,Sel,"
pages($0C , $221) = "AC Search,Sel,"
pages($0C , $222) = "AC Go To,Sel,"
pages($0C , $223) = "AC Home,Sel,"
pages($0C , $224) = "AC Back,Sel,"
pages($0C , $225) = "AC Forward,Sel,"
pages($0C , $226) = "AC Stop,Sel,"
pages($0C , $227) = "AC Refresh,Sel,"
pages($0C , $228) = "AC Previous Link,Sel,"
pages($0C , $229) = "AC Next Link,Sel,"
pages($0C , $22A) = "AC Bookmarks,Sel,"
pages($0C , $22B) = "AC History,Sel,"
pages($0C , $22C) = "AC Subscriptions,Sel,"
pages($0C , $22D) = "AC Zoom In,Sel,"
pages($0C , $22E) = "AC Zoom Out,Sel,"
pages($0C , $22F) = "AC Zoom,LC,"
pages($0C , $230) = "AC Full Screen View,Sel,"
pages($0C , $231) = "AC Normal View,Sel,"
pages($0C , $232) = "AC View Toggle,Sel,"
pages($0C , $233) = "AC Scroll Up,Sel,"
pages($0C , $234) = "AC Scroll Down,Sel,"
pages($0C , $235) = "AC Scroll,LC,"
pages($0C , $236) = "AC Pan Left,Sel,"
pages($0C , $237) = "AC Pan Right,Sel,"
pages($0C , $238) = "AC Pan,LC,"
pages($0C , $239) = "AC New Window,Sel,"
pages($0C , $23A) = "AC Tile Horizontally,Sel,"
pages($0C , $23B) = "AC Tile Vertically,Sel,"
pages($0C , $23C) = "AC Format,Sel,"
pages($0C , $23D) = "AC Edit,Sel,"
pages($0C , $23E) = "AC Bold,Sel,"
pages($0C , $23F) = "AC Italics,Sel,"
pages($0C , $240) = "AC Underline,Sel,"
pages($0C , $241) = "AC Strikethrough,Sel,"
pages($0C , $242) = "AC Subscript,Sel,"
pages($0C , $243) = "AC Superscript,Sel,"
pages($0C , $244) = "AC All Caps,Sel,"
pages($0C , $245) = "AC Rotate,Sel,"
pages($0C , $246) = "AC Resize,Sel,"
pages($0C , $247) = "AC Flip horizontal,Sel,"
pages($0C , $248) = "AC Flip Vertical,Sel,"
pages($0C , $249) = "AC Mirror Horizontal,Sel,"
pages($0C , $24A) = "AC Mirror Vertical,Sel,"
pages($0C , $24B) = "AC Font Select,Sel,"
pages($0C , $24C) = "AC Font Color,Sel,"
pages($0C , $24D) = "AC Font Size,Sel,"
pages($0C , $24E) = "AC Justify Left,Sel,"
pages($0C , $24F) = "AC Justify Center H,Sel,"
pages($0C , $250) = "AC Justify Right,Sel,"
pages($0C , $251) = "AC Justify Block H,Sel,"
pages($0C , $252) = "AC Justify Top,Sel,"
pages($0C , $253) = "AC Justify Center V,Sel,"
pages($0C , $254) = "AC Justify Bottom,Sel,"
pages($0C , $255) = "AC Justify Block V,Sel,"

pagenames($0D)="Digitizer Device Page,DIG_"
;=========================================================
pages($0D , $00) = "Undefined"
pages($0D , $01) = "Digitizer,CA,"
pages($0D , $02) = "Pen,CA,"
pages($0D , $03) = "Light Pen,CA,"
pages($0D , $04) = "Touch Screen,CA,"
pages($0D , $05) = "Touch Pad,CA,"
pages($0D , $06) = "White Board,CA,"
pages($0D , $07) = "Coordinate Measuring Machine,CA,"
pages($0D , $08) = "3D Digitizer,CA,Digitizer3D"
pages($0D , $09) = "Stereo Plotter,CA,"
pages($0D , $0A) = "Articulated Arm,CA,"
pages($0D , $0B) = "Armature,CA,"
pages($0D , $0C) = "Multiple Point Digitizer,CA,"
pages($0D , $0D) = "Free Space Wand,CA,"
pages($0D , $0E) = "Device Configuration,CA,"
pages($0D , $0F) = "Capacitive Heat Map Digitizer,CA,"
pages($0D , $20) = "Stylus,CACL,"
pages($0D , $21) = "Puck,CL,"
pages($0D , $22) = "Finger,CL,"
pages($0D , $23) = "Device Settings,CL,"
pages($0D , $30) = "Tip Pressure,DV,"
pages($0D , $31) = "Barrel Pressure,DV,"
pages($0D , $32) = "In Range,MC,"
pages($0D , $33) = "Touch,MC,"
pages($0D , $34) = "Untouch,OSC,"
pages($0D , $35) = "Tap,OSC,"
pages($0D , $36) = "Quality,DV,"
pages($0D , $37) = "Data Valid,MC,"
pages($0D , $38) = "Transducer Index,DV,"
pages($0D , $39) = "Tablet Function Keys,CL,"
pages($0D , $3A) = "Program Change Keys,CL,"
pages($0D , $3B) = "Battery Strength,DV,"
pages($0D , $3C) = "Invert,MC,"
pages($0D , $3D) = "X Tilt,DV,"
pages($0D , $3E) = "Y Tilt,DV,"
pages($0D , $3F) = "Azimuth,DV,"
pages($0D , $40) = "Altitude,DV,"
pages($0D , $41) = "Twist,DV,"
pages($0D , $42) = "Tip Switch,MC,"
pages($0D , $43) = "Secondary Tip Switch,MC,"
pages($0D , $44) = "Barrel Switch,MC,"
pages($0D , $45) = "Eraser,MC,"
pages($0D , $46) = "Tablet Pick,MC,"
pages($0D , $47) = "Confidence,DV,"
pages($0D , $48) = "Width,DV,"
pages($0D , $49) = "Height,DV,"
pages($0D , $51) = "Contact Identifier,DV,"
pages($0D , $52) = "Device Mode,DV,"
pages($0D , $53) = "Device Identifier,DV,"
pages($0D , $54) = "Contact Count,DV,"
pages($0D , $55) = "Contact Count Maximum,SV,"
pages($0D , $56) = "Relative Scan Time,DV,"
pages($0D , $57) = "Surface Switch,DF,"
pages($0D , $58) = "Button Switch,DF,"
pages($0D , $59) = "Pad Type,SF,"
pages($0D , $5A) = "Secondary Barrel Switch,MC,"
pages($0D , $5B) = "Transducer Serial Number,SV,"
pages($0D , $5C) = "Preferred Color,DV,"
pages($0D , $5D) = "Preferred Color is Locked,MC,"
pages($0D , $5E) = "Preferred Line Width,DV,"
pages($0D , $5F) = "Preferred Line Width is Locked,MC,"
pages($0D , $60) = "Latency Mode,DF,"
pages($0D , $61) = "Gesture Character Quality,DV,"
pages($0D , $62) = "Character Gesture Data Length,DV,"
pages($0D , $63) = "Character Gesture Data,DV,"
pages($0D , $64) = "Gesture Character Encoding,NAry,"
pages($0D , $65) = "UTF8 Charactre Gesture Encoding,Sel,"
pages($0D , $66) = "UTF16 Little Endian Character Gesture Encoding,Sel,"
pages($0D , $67) = "UTF16 Big Endian Character Gesture Encoding,Sel,"
pages($0D , $68) = "UTF32 Little Endian Character Gesture Encoding,Sel,"
pages($0D , $69) = "UTF32 Big Endian Character Gesture Encoding,Sel,"
pages($0D , $6A) = "Gesture Character Enable,DF,"
pages($0D , $6A) = "Capacitive Heat Map Protocol Vendor ID,SV,"
pages($0D , $6B) = "Capacitive Heat Map Protocol Version,SV,"
pages($0D , $6C) = "Capacitive Heat Map Frame Data,DV,"
pages($0D , $6D) = "Aspect,OSC,"
pages($0D , $70) = "Preferred Line Style,NAry,"
pages($0D , $71) = "Preferred Line Style is Locked,MC,"
pages($0D , $72) = "Ink,Sel,"
pages($0D , $73) = "Pencil,Sel,"
pages($0D , $74) = "Highlighter,Sel,"
pages($0D , $75) = "Chisel Marker,Sel,"
pages($0D , $76) = "Brush,Sel,"
pages($0D , $77) = "No preference,Sel,"
pages($0D , $80) = "Digitizer Diagnostic,CL,"
pages($0D , $81) = "Digitizer Error,NAry,"
pages($0D , $82) = "Err Normal Status,Sel,"
pages($0D , $83) = "Err Transducers Exceeded,Sel,"
pages($0D , $84) = "Err Full Trans Features Unavail,Sel,"
pages($0D , $85) = "Err Charge Low,Sel,"
pages($0D , $90) = "Transducer Software Info,CL,"
pages($0D , $91) = "Transducer Vendor ID,SV,"
pages($0D , $92) = "Transducer Product ID,SV,"
pages($0D , $93) = "Device Supported Protocols,NAry,"
pages($0D , $94) = "Transducer Supported Protocols,NAry,"
pages($0D , $95) = "No Protocol,Sel,"
pages($0D , $96) = "Wacom AES Protocol,Sel,"
pages($0D , $97) = "USI Protocol,Sel,"
pages($0D , $98) = "Microsoft Pen Protocol,Sel,"
pages($0D , $A0) = "Supported Report Rates,SV,"
pages($0D , $A1) = "Report Rate,DV,"
pages($0D , $A2) = "Transducer Connected,SF,"
pages($0D , $A3) = "Switch Disabled,Sel,"
pages($0D , $A4) = "Switch Unimplemented,Sel,"
pages($0D , $A5) = "Transducer Switches,CL,"

pagenames($0E)="Haptics Page,HAP_"
;=========================================================
pages($0E , $00) = "Undefined"
pages($0E , $01) = "Simple Haptic Controller,CACL,"
pages($0E , $10) = "Waveform List,NAry,"
pages($0E , $11) = "Duration List,NAry,"
pages($0E , $20) = "Auto Trigger,DV,"
pages($0E , $21) = "Manual Trigger,DV,"
pages($0E , $22) = "Auto Trigger Associated Control,SV,"
pages($0E , $23) = "Intensity,DV,"
pages($0E , $24) = "Repeat Count,DV,"
pages($0E , $25) = "Retrigger Period,DV,"
pages($0E , $26) = "Waveform Vendor Page,SV,"
pages($0E , $27) = "Waveform Vendor ID,SV,"
pages($0E , $28) = "Waveform Cutoff Time,SV,"

pagenames($0F)="Physical Interface Device Page,PID_"
;=========================================================
pages($0F , $00) = "Undefined"
pages($0F , $01) = "Physical Interface Device,CA,"
pages($0F , $20) = "Normal,DV,"
pages($0F , $21) = "Set Effect Report,CL,"
pages($0F , $22) = "Effect Block Index,DV,"
pages($0F , $23) = "Parameter Block Offset,DV,"
pages($0F , $24) = "ROM Flag,DF,"
pages($0F , $25) = "Effect Type,NAry,"
pages($0F , $26) = "ET Constant Force,Sel,"
pages($0F , $27) = "ET Ramp,Sel,"
pages($0F , $28) = "ET Custom Force Data,Sel,"
pages($0F , $30) = "ET Square,Sel,"
pages($0F , $31) = "ET Sine,Sel,"
pages($0F , $32) = "ET Triangle,Sel,"
pages($0F , $33) = "ET Sawtooth Up,Sel,"
pages($0F , $34) = "ET Sawtooth Down,Sel,"
pages($0F , $40) = "ET Spring,Sel,"
pages($0F , $41) = "ET Damper,Sel,"
pages($0F , $42) = "ET Inertia,Sel,"
pages($0F , $43) = "ET Friction,Sel,"
pages($0F , $50) = "Duration,DV,"
pages($0F , $51) = "Sample Period,DV,"
pages($0F , $52) = "Gain,DV,"
pages($0F , $53) = "Trigger Button,DV,"
pages($0F , $54) = "Trigger Repeat Interval,DV,"
pages($0F , $55) = "Axes Enable,US,"
pages($0F , $56) = "Direction Enable,DF,"
pages($0F , $57) = "Direction,CL,"
pages($0F , $58) = "Type Specific Block Offset,CL,"
pages($0F , $59) = "Block Type,NAry,"
pages($0F , $5A) = "Set Envelope Report,CL,"
pages($0F , $5B) = "Attack Level,DV,"
pages($0F , $5C) = "Attack Time,DV,"
pages($0F , $5D) = "Fade Level,DV,"
pages($0F , $5E) = "Fade Time,DV,"
pages($0F , $5F) = "Set Condition Report,CL,"
pages($0F , $60) = "CP Offset,DV,"
pages($0F , $61) = "Positive Coefficient,DV,"
pages($0F , $62) = "Negative Coefficient,DV,"
pages($0F , $63) = "Positive Saturation,DV,"
pages($0F , $64) = "Negative Saturation,DV,"
pages($0F , $65) = "Dead Band,DV,"
pages($0F , $66) = "Download Force Sample,CL,"
pages($0F , $67) = "Isoch Custom Force Enable,DF,"
pages($0F , $68) = "Custom Force Data Report,CL,"
pages($0F , $69) = "Custom Force Data,DV,"
pages($0F , $6A) = "Custom Force Vendor Defined Data,DV,"
pages($0F , $6B) = "Set Custom Force Report,CL,"
pages($0F , $6C) = "Custom Force Data Offset,DV,"
pages($0F , $6D) = "Sample Count,DV,"
pages($0F , $6E) = "Set Periodic Report,CL,"
pages($0F , $6F) = "Offset,DV,"
pages($0F , $70) = "Magnitude,DV,"
pages($0F , $71) = "Phase,DV,"
pages($0F , $72) = "Period,DV,"
pages($0F , $73) = "Set Constant Force Report,CL,"
pages($0F , $74) = "Set Ramp Force Report,CL,"
pages($0F , $75) = "Ramp Start,DV,"
pages($0F , $76) = "Ramp End,DV,"
pages($0F , $77) = "Effect Operation Report,CL,"
pages($0F , $78) = "Effect Operation,NAry,"
pages($0F , $79) = "Op Effect Start,Sel,"
pages($0F , $7A) = "Op Effect Start Solo,Sel,"
pages($0F , $7B) = "Op Effect Stop,Sel,"
pages($0F , $7C) = "Loop Count,DV,"
pages($0F , $7D) = "Device Gain Report,CL,"
pages($0F , $7E) = "Device Gain,DV,"
pages($0F , $7F) = "PID Pool Report,CL,"
pages($0F , $80) = "RAM Pool Size,DV,"
pages($0F , $81) = "ROM Pool Size,SV,"
pages($0F , $82) = "ROM Effect Block Count,SV,"
pages($0F , $83) = "Simultaneous Effects Max,SV,"
pages($0F , $84) = "Pool Alignment,SV,"
pages($0F , $85) = "PID Pool Move Report,CL,"
pages($0F , $86) = "Move Source,DV,"
pages($0F , $87) = "Move Destination,DV,"
pages($0F , $88) = "Move Length,DV,"
pages($0F , $89) = "PID Block Load Report,CL,"
pages($0F , $8B) = "Block Load Status,NAry,"
pages($0F , $8C) = "Block Load Success,Sel,"
pages($0F , $8D) = "Block Load Full,Sel,"
pages($0F , $8E) = "Block Load Error,Sel,"
pages($0F , $8F) = "Block Handle"
pages($0F , $90) = "PID Block Free Report,CL,"
pages($0F , $91) = "Type Specific Block Handle,CL,"
pages($0F , $92) = "PID State Report,CL,"
pages($0F , $94) = "Effect Playing,DF,"
pages($0F , $95) = "PID Device Control Report,CL,"
pages($0F , $96) = "PID Device Control,NAry,"
pages($0F , $97) = "DC Enable Actuators,Sel,"
pages($0F , $98) = "DC Disable Actuators,Sel,"
pages($0F , $99) = "DC Stop All Effects,Sel,"
pages($0F , $9A) = "DC Device Reset,Sel,"
pages($0F , $9B) = "DC Device Pause,Sel,"
pages($0F , $9C) = "DC Device Continue,Sel,"
pages($0F , $9F) = "Device Paused,DF,"
pages($0F , $A0) = "Actuators Enabled,DF,"
pages($0F , $A4) = "Safety Switch,DF,"
pages($0F , $A5) = "Actuator Override Switch,DF,"
pages($0F , $A6) = "Actuator Power,DF,"
pages($0F , $A7) = "Start Delay,DV,"
pages($0F , $A8) = "Parameter Block Size,CL,"
pages($0F , $A9) = "Device Managed Pool,SF,"
pages($0F , $AA) = "Shared Parameter Blocks,SF,"
pages($0F , $AB) = "Create New Effect Report,CL,"
pages($0F , $AC) = "RAM Pool Available,DV,"

pagenames($12)="Eye and Head Trackers Page,EYE_"
;=========================================================
pages($12 , $00) = "Undefined"
pages($12 , $01) = "Eye Tracker,CA,"
pages($12 , $02) = "Head Tracker,CA,"
pages($12 , $10) = "Tracking Data,CP,"
pages($12 , $11) = "Capabilities,CL,"
pages($12 , $12) = "Configuration,CL,"
pages($12 , $13) = "Status,CL,"
pages($12 , $14) = "Control,CL,"
pages($12 , $20) = "Sensor Timestamp,DV,"
pages($12 , $21) = "Position X,DV,"
pages($12 , $22) = "Position Y,DV,"
pages($12 , $23) = "Position Z,DV,"
pages($12 , $24) = "Gaze Point,CP,"
pages($12 , $25) = "Left Eye Position,CP,"
pages($12 , $26) = "Right Eye Position,CP,"
pages($12 , $27) = "Head Position,CP,"
pages($12 , $28) = "Head Direction Point,CP,"
pages($12 , $29) = "Rotation about X axis,DV,"
pages($12 , $2A) = "Rotation about Y axis,DV,"
pages($12 , $2B) = "Rotation about Z axis,DV,"
pages($12 , $100) = "Tracker Quality,SV,"
pages($12 , $101) = "Minimum Tracking Distance,SV,"
pages($12 , $102) = "Optimum Tracking Distance,SV,"
pages($12 , $103) = "maximum Tracking Distance,SV,"
pages($12 , $104) = "Maximum Screen Plane Width,SV,"
pages($12 , $105) = "maximum Screen Plane Height,SV,"
pages($12 , $200) = "Display Manufacturer ID,SV,"
pages($12 , $201) = "Display Product ID,SV,"
pages($12 , $202) = "Display Serial Number,SV,"
pages($12 , $203) = "Display Manufacturer Date,SV,"
pages($12 , $204) = "Calibrated Screen Width,SV,"
pages($12 , $205) = "Calibrated Screen Height,SV,"

pagenames($14)="Alphanumeric Display Page,AD_"
;=========================================================
pages($14 , $00) = "Undefined "
pages($14 , $01) = "Alphanumeric Display,CA,"
pages($14 , $02) = "Bit-mapped Display,CA,"
pages($14 , $20) = "Display Attributes Report,CL,"
pages($14 , $21) = "ASCII Character Set,SF,"
pages($14 , $22) = "Data Read Back,SF,"
pages($14 , $23) = "Font Read Back,SF,"
pages($14 , $24) = "Display Control Report,CL,"
pages($14 , $25) = "Clear Display,DF,"
pages($14 , $26) = "Display Enable,DF,"
pages($14 , $27) = "Screen Saver Delay,SVDV,"
pages($14 , $28) = "Screen Saver Enable,DF,"
pages($14 , $29) = "Vertical Scroll,SFDF,"
pages($14 , $2A) = "Horizontal Scroll,SFDF,"
pages($14 , $2B) = "Character Report,CL,"
pages($14 , $2C) = "Display Data,DV,"
pages($14 , $2D) = "Display Status,CL,"
pages($14 , $2E) = "Stat Not Ready,Sel,"
pages($14 , $2F) = "Stat Ready,Sel,"
pages($14 , $30) = "Err Not a loadable character,Sel,"
pages($14 , $31) = "Err Font data cannot be read,Sel,"
pages($14 , $32) = "Cursor Position Report,CL,"
pages($14 , $33) = "Row,DV,"
pages($14 , $34) = "Column,DV,"
pages($14 , $35) = "Rows,SV,"
pages($14 , $36) = "Columns,SV,"
pages($14 , $37) = "Cursor Pixel Positioning,SF,"
pages($14 , $38) = "Cursor Mode,DF,"
pages($14 , $39) = "Cursor Enable,DF,"
pages($14 , $3A) = "Cursor Blink,DF,"
pages($14 , $3B) = "Font Report,CL,"
pages($14 , $3C) = "Font Data,BB,"
pages($14 , $3D) = "Character Width,SV,"
pages($14 , $3E) = "Character Height,SV,"
pages($14 , $3F) = "Character Spacing Horizontal,SV,"
pages($14 , $40) = "Character Spacing Vertical,SV,"
pages($14 , $41) = "Unicode Character Set,SF,"
pages($14 , $42) = "Font 7-Segment,SF,"
pages($14 , $43) = "7-Segment Direct Map,SF,DirectMap7Segment"
pages($14 , $44) = "Font 14-Segment,SF,"
pages($14 , $45) = "14-Segment Direct Map,SF,DirectMap14Segment"
pages($14 , $46) = "Display Brightness,DV,"
pages($14 , $47) = "Display Contrast,DV,"
pages($14 , $48) = "Character Attribute,CL,"
pages($14 , $49) = "Attribute Readback,SF,"
pages($14 , $4A) = "Attribute Data,DV,"
pages($14 , $4B) = "Char Attr Enhance,OOC,"
pages($14 , $4C) = "Char Attr Underline,OOC,"
pages($14 , $4D) = "Char Attr Blink,OOC,"
pages($14 , $80) = "Bitmap Size X,SV,"
pages($14 , $81) = "Bitmap Size Y,SV,"
pages($14 , $83) = "Bit Depth Format,SV,"
pages($14 , $84) = "Display Orientation,DV,"
pages($14 , $85) = "Palette Report,CL,"
pages($14 , $86) = "Palette Data Size,SV,"
pages($14 , $87) = "Palette Data Offset,SV,"
pages($14 , $88) = "Palette Data,BB,"
pages($14 , $8A) = "Blit Report,CL,"
pages($14 , $8B) = "Blit Rectangle X1,SV,"
pages($14 , $8C) = "Blit Rectangle Y1,SV,"
pages($14 , $8D) = "Blit Rectangle X2,SV,"
pages($14 , $8E) = "Blit Rectangle Y2,SV,"
pages($14 , $8F) = "Blit Data,BB,"
pages($14 , $90) = "Soft Button,CL,"
pages($14 , $91) = "Soft Button ID,SV,"
pages($14 , $92) = "Soft Button Side,SV,"
pages($14 , $93) = "Soft Button Offset 1,SV,"
pages($14 , $94) = "Soft Button Offset 2,SV,"
pages($14 , $95) = "Soft Button Report,SV,"
pages($14 , $C2) = "Soft Keys,SV,"
pages($14 , $CC) = "Display Data Extensions,SF,"
pages($14 , $CF) = "Character Mapping,SV,"
pages($14 , $DD) = "Unicode Equivalent,SV,"
pages($14 , $DF) = "Character Page Mapping,SV,"
pages($14 , $FF) = "Request Report,DV,"

pagenames($20)="Sensor Device Page,SNS_"
;=========================================================
pages($20 , $00) = "Undefined"
pages($20 , $01) = "Sensor,CACP,"
pages($20 , $10) = "Biometric,CACP,"
pages($20 , $11) = "Biometric: Human Presence,CACP,"
pages($20 , $12) = "Biometric: Human Proximity,CACP,"
pages($20 , $13) = "Biometric: Human Touch,CACP,"
pages($20 , $14) = "Biometric: Blood Pressure,CACP,"
pages($20 , $15) = "Biometric: Body Temperature,CACP,"
pages($20 , $16) = "Biometric: Heart Rate,CACP,"
pages($20 , $17) = "Biometric: Heart Rate Variability,CACP,"
pages($20 , $18) = "Biometric: Peripheral Oxygen Saturation,CACP,"
pages($20 , $19) = "Biometric: Respiratory Rate,CACP,"
pages($20 , $20) = "Electrical,CACP"
pages($20 , $21) = "Electrical: Capacitance,CACP,"
pages($20 , $22) = "Electrical: Current,CACP,"
pages($20 , $23) = "Electrical: Power,CACP,"
pages($20 , $24) = "Electrical: Inductance,CACP,"
pages($20 , $25) = "Electrical: Resistance,CACP,"
pages($20 , $26) = "Electrical: Voltage,CACP,"
pages($20 , $27) = "Electrical: Potentiometer,CACP,"
pages($20 , $28) = "Electrical: Frequency,CACP,"
pages($20 , $29) = "Electrical: Period,CACP,"
pages($20 , $30) = "Environmental,CACP,"
pages($20 , $31) = "Environmental: Atmospheric Pressure,CACP,"
pages($20 , $32) = "Environmental: Humidity,CACP,"
pages($20 , $33) = "Environmental: Temperature,CACP,"
pages($20 , $34) = "Environmental: Wind Direction,CACP,"
pages($20 , $35) = "Environmental: Wind Speed,CACP,"
pages($20 , $36) = "Environmental: Air Quality,CACP,"
pages($20 , $37) = "Environmental: Heat Index,CACP,"
pages($20 , $38) = "Environmental: Surface Temperature,CACP,"
pages($20 , $39) = "Environmental: Volatile Organic Compounds,CACP,"
pages($20 , $3A) = "Environmental: Object Presence,CACP,"
pages($20 , $3B) = "Environmental: Object Proximity,CACP,"
pages($20 , $40) = "Light,CACP,"
pages($20 , $41) = "Light: Ambient Light,CACP,"
pages($20 , $42) = "Light: Consumer Infrared,CACP,"
pages($20 , $43) = "Light: Infrared Light,CACP,"
pages($20 , $44) = "Light: Visible Light,CACP,"
pages($20 , $45) = "Light: Ultraviolet Light,CACP,"
pages($20 , $50) = "Location,CACP,"
pages($20 , $51) = "Location: Broadcast,CACP,"
pages($20 , $52) = "Location: Dead Reckoning,CACP,"
pages($20 , $53) = "Location: Global Positioning System,CACP,"
pages($20 , $54) = "Location: Lookup,CACP,"
pages($20 , $55) = "Location: Other,CACP,"
pages($20 , $56) = "Location: Static,CACP,"
pages($20 , $57) = "Location: Triangulation,CACP,"
pages($20 , $60) = "Mechanical,CACP,"
pages($20 , $61) = "Mechanical: Boolean Switch,CACP,"
pages($20 , $62) = "Mechanical: Boolean Switch Array,CACP,"
pages($20 , $63) = "Mechanical: Multivalue Switch,CACP,"
pages($20 , $64) = "Mechanical: Force,CACP,"
pages($20 , $65) = "Mechanical: Pressure,CACP,"
pages($20 , $66) = "Mechanical: Strain,CACP,"
pages($20 , $67) = "Mechanical: Weight,CACP,"
pages($20 , $68) = "Mechanical: Haptic Vibrator,CACP,"
pages($20 , $69) = "Mechanical: Hall Effect Switch,CACP,"
pages($20 , $70) = "Motion,CACP,"
pages($20 , $71) = "Motion: Accelerometer 1D,CACP,"
pages($20 , $72) = "Motion: Accelerometer 2D,CACP,"
pages($20 , $73) = "Motion: Accelerometer 3D,CACP,"
pages($20 , $74) = "Motion: Gyrometer 1D,CACP,"
pages($20 , $75) = "Motion: Gyrometer 2D,CACP,"
pages($20 , $76) = "Motion: Gyrometer 3D,CACP,"
pages($20 , $77) = "Motion: Motion Detector,CACP,"
pages($20 , $78) = "Motion: Speedometer,CACP,"
pages($20 , $79) = "Motion: Accelerometer,CACP,"
pages($20 , $7A) = "Motion: Gyrometer,CACP,"
pages($20 , $7B) = "Motion: Gravity Vector,CACP,"
pages($20 , $7C) = "Motion: Linear Accelerometer,CACP,"
pages($20 , $80) = "Orientation,CACP,"
pages($20 , $81) = "Orientation: Compass 1D,CACP,"
pages($20 , $82) = "Orientation: Compass 2D,CACP,"
pages($20 , $83) = "Orientation: Compass 3D,CACP,"
pages($20 , $84) = "Orientation: Inclinometer 1D,CACP,"
pages($20 , $85) = "Orientation: Inclinometer 2D,CACP,"
pages($20 , $86) = "Orientation: Inclinometer 3D,CACP,"
pages($20 , $87) = "Orientation: Distance 1D,CACP,"
pages($20 , $88) = "Orientation: Distance 2D,CACP,"
pages($20 , $89) = "Orientation: Distance 3D,CACP,"
pages($20 , $8A) = "Orientation: Device Orientation,CACP,"
pages($20 , $8B) = "Orientation: Compass,CACP,"
pages($20 , $8C) = "Orientation: Inclinometer,CACP,"
pages($20 , $8D) = "Orientation: Distance,CACP,"
pages($20 , $8E) = "Orientation: Relative Orientation,CACP,"
pages($20 , $8F) = "Orientation: Simple Orientation,CACP,"
pages($20 , $90) = "Scanner,CACP,"
pages($20 , $91) = "Scanner: Barcode,CACP,"
pages($20 , $92) = "Scanner: RFID,CACP,"
pages($20 , $93) = "Scanner: NFC,CACP,"
pages($20 , $A0) = "Time,CACP,"
pages($20 , $A1) = "Time: Alarm Timer,CACP,"
pages($20 , $A2) = "Time: Real Time Clock,CACP,"
pages($20 , $B0) = "Personal Activity,CACP,"
pages($20 , $B1) = "Personal Activity: Activity Detection,CACP,"
pages($20 , $B2) = "Personal Activity: Device Position,CACP,"
pages($20 , $B3) = "Personal Activity: Pedometer,CACP,"
pages($20 , $B4) = "Personal Activity: Step Detection,CACP,"
pages($20 , $C0) = "Orientation Extended,CACP,"
pages($20 , $C1) = "Orientation Extended: Geomagnetic Orientation,CACP,"
pages($20 , $C2) = "Orientation Extended: Magnetometer,CACP,"
pages($20 , $E0) = "Other,CACP,"
pages($20 , $E1) = "Other: Custom,CACP,"
pages($20 , $E2) = "Other: Generic,CACP,"
pages($20 , $E3) = "Other: Generic Enumerator,CACP,"
;This one above is absolutely uncomplete


pagenames($40)="Medical Instrument Page,MED_"
;=========================================================
pages($40 , $00) = "Undefined"
pages($40 , $01) = "Medical Ultrasound,CA,"
pages($40 , $20) = "VCR/Acquisition,OOC,"
pages($40 , $21) = "Freeze/Thaw,OOC,"
pages($40 , $22) = "Clip Store,OSC,"
pages($40 , $23) = "Update,OSC,"
pages($40 , $24) = "Next,OSC,"
pages($40 , $25) = "Save,OSC,"
pages($40 , $26) = "Print,OSC,"
pages($40 , $27) = "Microphone Enable,OSC,"
pages($40 , $40) = "Cine,LC,"
pages($40 , $41) = "Transmit Power,LC,"
pages($40 , $42) = "Volume,LC,"
pages($40 , $43) = "Focus,LC,"
pages($40 , $44) = "Depth,LC,"
pages($40 , $60) = "Soft Step - Primary,LC,"
pages($40 , $61) = "Soft Step - Secondary,LC,"
pages($40 , $70) = "Depth Gain Compensation,LC,"
pages($40 , $80) = "Zoom Select,OSC,"
pages($40 , $81) = "Zoom Adjust,LC,"
pages($40 , $82) = "Spectral Doppler Mode Select,OSC,"
pages($40 , $83) = "Spectral Doppler Adjust,LC,"
pages($40 , $84) = "Color Doppler Mode Select,OSC,"
pages($40 , $85) = "Color Doppler Adjust,LC,"
pages($40 , $86) = "Motion Mode Select,OSC,"
pages($40 , $87) = "Motion Mode Adjust,LC,"
pages($40 , $88) = "2-D Mode Select,OSC,ModeSelect2D"
pages($40 , $89) = "2-D Mode Adjust,LC,ModeAdjust2D"
pages($40 , $A0) = "Soft Control Select,OSC,"
pages($40 , $A1) = "Soft Control Adjust,LC,"

pagenames($59)="Lighting and Illumination Page,LAL_"
;=========================================================
pages($59 , $00) = "Undefined"
pages($59 , $01) = "LampArray,CA,"
pages($59 , $02) = "LampArrayAttributesReport,CL,"
pages($59 , $03) = "LampCount,SVDV,"
pages($59 , $04) = "BoundingBoxWidthInMicrometers,SV,"
pages($59 , $05) = "BoundingBoxHeightInMicrometers,SV,"
pages($59 , $06) = "BoundingBoxDepthInMicrometers,SV,"
pages($59 , $07) = "LampArrayKind,SV,"
pages($59 , $08) = "MinUpdateIntervalInMicroseconds,SV,"
pages($59 , $20) = "LampAttributesRequestReport,CL,"
pages($59 , $21) = "LampId,SVDV,"
pages($59 , $22) = "LampAttributesResponseReport,CL,"
pages($59 , $23) = "PositionXInMicrometers,DV,"
pages($59 , $24) = "PositionYInMicrometers,DV,"
pages($59 , $25) = "PositionZInMicrometers,DV,"
pages($59 , $26) = "LampPurposes,DV,"
pages($59 , $27) = "UpdateLatencyInMicroseconds,DV,"
pages($59 , $28) = "RedLevelCount,DV,"
pages($59 , $29) = "GreenLevelCount,DV,"
pages($59 , $2A) = "BlueLevelCount,DV,"
pages($59 , $2B) = "IntensityLevelCount,DV,"
pages($59 , $2C) = "IsProgrammable,DV,"
pages($59 , $2D) = "InputBinding,DV,"
pages($59 , $50) = "LampMultiUpdateReport,CL,"
pages($59 , $51) = "RedUpdateChannel,DV,"
pages($59 , $52) = "GreenUpdateChannel,DV,"
pages($59 , $53) = "BlueUpdateChannel,DV,"
pages($59 , $54) = "IntensityUpdateChannel,DV,"
pages($59 , $55) = "LampUpdateFlags,DV,"
pages($59 , $60) = "LampRangeUpdateReport,CL,"
pages($59 , $61) = "LampIdStart,DV,"
pages($59 , $62) = "LampIdEnd,DV,"
pages($59 , $70) = "LampArrayControlReport,CL,"
pages($59 , $71) = "AutonomousMode,DV,"

pagenames($80)="Monitor Page,MON_"
;=========================================================
pages($80 , $00) = "Undefined,"
pages($80 , $01) = "Monitor Control"
pages($80 , $02) = "EDID Information"
pages($80 , $03) = "VDIF Information"
pages($80 , $04) = "VESA Version"
miso
Enthusiast
Enthusiast
Posts: 579
Joined: Sat Oct 21, 2023 4:06 pm
Location: Hungary

Re: HID Descriptor Tool

Post by miso »

Code: Select all

pagenames($81)="Monitor Enumerated Values Page,MEV_"
;=========================================================
pages($81 , $00) = "Undefined,"
pages($81 , $01) = "ENUM_1,"
pages($81 , $02) = "ENUM_2,"
pages($81 , $03) = "ENUM_3,"
pages($81 , $04) = "ENUM_4,"
pages($81 , $05) = "ENUM_5,"
pages($81 , $06) = "ENUM_6,"
pages($81 , $07) = "ENUM_7,"
pages($81 , $08) = "ENUM_8,"
pages($81 , $09) = "ENUM_9,"
pages($81 , $0A) = "ENUM_10,"
pages($81 , $0B) = "ENUM_11,"
pages($81 , $0C) = "ENUM_12,"
pages($81 , $0D) = "ENUM_13,"
pages($81 , $0E) = "ENUM_14,"
pages($81 , $0F) = "ENUM_15,"
pages($81 , $10) = "ENUM_16,"
pages($81 , $11) = "ENUM_17,"
pages($81 , $12) = "ENUM_18,"
pages($81 , $13) = "ENUM_19,"
pages($81 , $14) = "ENUM_20,"
pages($81 , $15) = "ENUM_21,"
pages($81 , $16) = "ENUM_22,"
pages($81 , $17) = "ENUM_23,"
pages($81 , $18) = "ENUM_24,"
pages($81 , $19) = "ENUM_25,"
pages($81 , $1A) = "ENUM_26,"
pages($81 , $1B) = "ENUM_27,"
pages($81 , $1C) = "ENUM_28,"

pagenames($82)="VESA Virtual Controls Page,VES_"
;=========================================================
pages($82 , $00) = "Undefined,"
pages($82 , $01) = "Degauss,"
pages($82 , $10) = "Brightness,"
pages($82 , $12) = "Contrast,"
pages($82 , $16) = "Red Video Gain,"
pages($82 , $18) = "Green Video Gain,"
pages($82 , $1A) = "Blue Video Gain,"
pages($82 , $1C) = "Focus,"
pages($82 , $20) = "Horizontal Position,"
pages($82 , $22) = "Horizontal Size,"
pages($82 , $24) = "Horizontal Pincushion,"
pages($82 , $26) = "Horizontal Pincushion Balance,"
pages($82 , $28) = "Horizontal Misconvergence,"
pages($82 , $2A) = "Horizontal Linearity,"
pages($82 , $2C) = "Horizontal Linearity Balance,"
pages($82 , $30) = "Vertical Position,"
pages($82 , $32) = "Vertical Size,"
pages($82 , $34) = "Vertical Pincushion,"
pages($82 , $36) = "Vertical Pincushion Balance,"
pages($82 , $38) = "Vertical Misconvergence,"
pages($82 , $3A) = "Vertical Linearity,"
pages($82 , $3C) = "Vertical Linearity Balance,"
pages($82 , $40) = "Parallelogram Distortion,"
pages($82 , $42) = "Trapezoidal Distortion,"
pages($82 , $44) = "Tilt,"
pages($82 , $46) = "Top Corner Distortion Control,"
pages($82 , $48) = "Top Corner Distortion Balance,"
pages($82 , $4A) = "Bottom Corner Distortion Control,"
pages($82 , $4C) = "Bottom Corner Distortion Balance,"
pages($82 , $56) = "Horizontal Moiré,"
pages($82 , $58) = "Vertical Moiré,"
pages($82 , $5E) = "Input Level Select,"
pages($82 , $60) = "Input Source Select,"
pages($82 , $6C) = "Red Video Black Level,"
pages($82 , $6E) = "Green Video Black Level,"
pages($82 , $70) = "Blue Video Black Level,"
pages($82 , $A2) = "Auto Size Center,"
pages($82 , $A4) = "Polarity Horizontal Synchronization,"
pages($82 , $A6) = "Polarity Vertical Synchronization,"
pages($82 , $A8) = "Synchronization Type,"
pages($82 , $AA) = "Screen Orientation,"
pages($82 , $AC) = "Horizontal Frequency,"
pages($82 , $AE) = "Vertical Frequency,"
pages($82 , $B0) = "Settings,"
pages($82 , $CA) = "On Screen Display,"
pages($82 , $D4) = "Stereo Mode,"

pagenames($84)="Power Device Page,POW_"
;=========================================================
pages($84 , $00) = "Undefined,"
pages($84 , $01) = "i Name,SV,"
pages($84 , $02) = "Present Status,CL,"
pages($84 , $03) = "Changed Status,CL,"
pages($84 , $04) = "UPS,CA,"
pages($84 , $05) = "Power Supply,CA,"
pages($84 , $06) = "Peripheral Device,CA,"
pages($84 , $10) = "Battery System,CP,"
pages($84 , $11) = "Battery System ID,SV,"
pages($84 , $12) = "Battery,CP,"
pages($84 , $13) = "Battery ID,SV,"
pages($84 , $14) = "Charger,CP,"
pages($84 , $15) = "Charger ID,SV,"
pages($84 , $16) = "Power Converter,CP,"
pages($84 , $17) = "Power Converter ID,SV,"
pages($84 , $18) = "Outlet System,CP"
pages($84 , $19) = "Outlet System ID,SV,"
pages($84 , $1A) = "Input,CP,"
pages($84 , $1B) = "Input ID,SV,"
pages($84 , $1C) = "Output,CP,"
pages($84 , $1D) = "Output ID,SV,"
pages($84 , $1E) = "Flow,CP,"
pages($84 , $1F) = "Flow ID,Item,"
pages($84 , $20) = "Outlet,CP,"
pages($84 , $21) = "Outlet ID,SV,"
pages($84 , $22) = "Gang,CLCP,"
pages($84 , $23) = "Gang ID,SV,"
pages($84 , $24) = "Power Summary,CLCP,"
pages($84 , $30) = "Voltage,DV,"
pages($84 , $31) = "Current,DV,"
pages($84 , $32) = "Frequency,DV,"
pages($84 , $33) = "Apparent Power,DV,"
pages($84 , $34) = "Active Power,DV,"
pages($84 , $35) = "Percent Load,DV,"
pages($84 , $36) = "Temperature,DV,"
pages($84 , $37) = "Humidity,DV,"
pages($84 , $38) = "Bad Count,DV,"
pages($84 , $40) = "Config Voltage,SVDV,"
pages($84 , $41) = "Config Current,SVDV,"
pages($84 , $42) = "Config Frequency,SVDV,"
pages($84 , $43) = "Config Apparent Power,SVDV,"
pages($84 , $44) = "Config Active Power,SVDV,"
pages($84 , $45) = "Config Percent Load,SVDV,"
pages($84 , $46) = "Config Temperature,SVDV,"
pages($84 , $47) = "Config Humidity,SVDV,"
pages($84 , $50) = "Switch On Control,DV,"
pages($84 , $51) = "Switch Off Control,DV,"
pages($84 , $52) = "Toggle Control,DV,"
pages($84 , $53) = "Low Voltage Transfer,DV,"
pages($84 , $54) = "High Voltage Transfer,DV,"
pages($84 , $55) = "Delay Before Reboot,DV,"
pages($84 , $56) = "Delay Before Startup,DV,"
pages($84 , $57) = "Delay Before Shutdown,DV,"
pages($84 , $58) = "Test,DV,"
pages($84 , $59) = "Module Reset,DV,"
pages($84 , $5A) = "Audible Alarm Control,DV,"
pages($84 , $60) = "Present,DF,"
pages($84 , $61) = "Good,DF,"
pages($84 , $62) = "Internal Failure,DF,"
pages($84 , $63) = "Voltage Out Of Range,DF,"
pages($84 , $64) = "Frequency Out Of Range,DF,"
pages($84 , $65) = "Overload,DF,"
pages($84 , $66) = "Over Charged,DF,"
pages($84 , $67) = "Over Temperature,DF,"
pages($84 , $68) = "Shutdown Requested,DF,"
pages($84 , $69) = "Shutdown Imminent,DF,"
pages($84 , $6B) = "Switch On/Off,DF,"
pages($84 , $6C) = "Switchable,DF,"
pages($84 , $6D) = "Used,DF,"
pages($84 , $6E) = "Boost,DF,"
pages($84 , $6F) = "Buck,DF,"
pages($84 , $70) = "Initialized,DF,"
pages($84 , $71) = "Tested,DF,"
pages($84 , $72) = "Awaiting Power,DF,"
pages($84 , $73) = "Communication Lost,DF,"
pages($84 , $FD) = "i Manufacturer,SV,"
pages($84 , $FE) = "i Product,SV,"
pages($84 , $FF) = "i Serial Number,SV,"

pagenames($85)="5 Battery System Page,BAT_"
;=========================================================
pages($85 , $00) = "Undefined "
pages($85 , $01) = "SMB Battery Mode CL,"
pages($85 , $02) = "SMB Battery Status,CL,"
pages($85 , $03) = "SMB Alarm Warning,CL,"
pages($85 , $04) = "SMB Charger Mode,CL,"
pages($85 , $05) = "SMB Charger Status,CL,"
pages($85 , $06) = "SMB Charger Spec Info,CL,"
pages($85 , $07) = "SMB Selector State,CL,"
pages($85 , $08) = "SMB Selector Presets,CL,"
pages($85 , $09) = "SMB Selector Info,CL,"
pages($85 , $10) = "Optional Mfg Function 1,DV,"
pages($85 , $11) = "Optional Mfg Function 2,DV,"
pages($85 , $12) = "Optional Mfg Function 3,DV,"
pages($85 , $13) = "Optional Mfg Function 4,DV,"
pages($85 , $14) = "Optional Mfg Function 5,DV,"
pages($85 , $15) = "Connection To SMBus,DF,"
pages($85 , $16) = "Output Connection,DF,"
pages($85 , $17) = "Charger Connection,DF,"
pages($85 , $18) = "Battery Insertion,DF,"
pages($85 , $19) = "Use Next,DF,"
pages($85 , $1A) = "OK To Use,DF,"
pages($85 , $1B) = "Battery Supported,DF,"
pages($85 , $1C) = "Selector Revision,DF,"
pages($85 , $1D) = "Charging Indicator,DF,"
pages($85 , $28) = "Manufacturer Access,DV,"
pages($85 , $29) = "Remaining Capacity Limit,DV,"
pages($85 , $2A) = "Remaining Time Limit,DV,"
pages($85 , $2B) = "At Rate,DV,"
pages($85 , $2C) = "Capacity Mode,DV,"
pages($85 , $2D) = "Broadcast To Charger,DV,"
pages($85 , $2E) = "Primary Battery,DV,"
pages($85 , $2F) = "Charge Controller,DV,"
pages($85 , $40) = "Terminate Charge,DF,"
pages($85 , $41) = "Terminate Discharge,DF,"
pages($85 , $42) = "Below Remaining Capacity Limit,DF,"
pages($85 , $43) = "Remaining Time Limit Expired,DF,"
pages($85 , $44) = "Charging,DF,"
pages($85 , $45) = "Discharging,DV,"
pages($85 , $46) = "Fully Charged,DF,"
pages($85 , $47) = "Fully Discharged,DV,"
pages($85 , $48) = "Conditioning Flag,DV,"
pages($85 , $49) = "At Rate OK,DV,"
pages($85 , $4A) = "SMB Error Code,DF,"
pages($85 , $4B) = "Need Replacement,DF,"
pages($85 , $60) = "At Rate Time To Full,DV,"
pages($85 , $61) = "At Rate Time To Empty,DV,"
pages($85 , $62) = "Average Current,DV,"
pages($85 , $63) = "Max Error,DV,"
pages($85 , $64) = "Relative State Of Charge,DV,"
pages($85 , $65) = "Absolute State Of Charge,DV,"
pages($85 , $66) = "Remaining Capacity,DV,"
pages($85 , $67) = "Full Charge Capacity,DV,"
pages($85 , $68) = "Run Time To Empty,DV,"
pages($85 , $69) = "Average Time To Empty,DV,"
pages($85 , $6A) = "Average Time To Full,DV,"
pages($85 , $6B) = "Cycle Count,DV,"
pages($85 , $80) = "Batt Pack Model Level,SV,"
pages($85 , $81) = "Internal Charge Controller,SF,"
pages($85 , $82) = "Primary Battery Support,SF,"
pages($85 , $83) = "Design Capacity,SV,"
pages($85 , $84) = "Specification Info,SV,"
pages($85 , $85) = "Manufacturer Date,SV,"
pages($85 , $86) = "Serial Number,SV,"
pages($85 , $87) = "i Manufacturer Name,SV,"
pages($85 , $88) = "i Device Name,SV,"
pages($85 , $89) = "i Device Chemistry,SV,"
pages($85 , $8A) = "Manufacturer Data,SV,"
pages($85 , $8B) = "Rechargable,SV,"
pages($85 , $8C) = "Warning Capacity Limit,SV,"
pages($85 , $8D) = "Capacity Granularity 1,SV,"
pages($85 , $8E) = "Capacity Granularity 2,SV,"
pages($85 , $8F) = "i OEMInformation,SV,"
pages($85 , $C0) = "Inhibit Charge,DF,"
pages($85 , $C1) = "Enable Polling,DF,"
pages($85 , $C2) = "Reset To Zero,DF,"
pages($85 , $D0) = "AC Present,DF,"
pages($85 , $D1) = "Battery Present,DF,"
pages($85 , $D2) = "Power Fail,DF,"
pages($85 , $D3) = "Alarm Inhibited,DF,"
pages($85 , $D4) = "Thermistor Under Range,DF,"
pages($85 , $D5) = "Thermistor Hot,DF,"
pages($85 , $D6) = "Thermistor Cold,DF,"
pages($85 , $D7) = "Thermistor Over Range,DF,"
pages($85 , $D8) = "Voltage Out Of Range,DF,"
pages($85 , $D9) = "Current Out Of Range,DF,"
pages($85 , $DA) = "Current Not Regulated,DF,"
pages($85 , $DB) = "Voltage Not Regulated,DF,"
pages($85 , $DC) = "Master Mode,DF,"
pages($85 , $F0) = "Charger Selector Support,SF,"
pages($85 , $F1) = "Charger Spec,SV,"
pages($85 , $F2) = "Level 2,SF,"
pages($85 , $F3) = "Level 3,SF,"

pagenames($8C)="Bar Code Scanner,BAR_"
;=========================================================
pages($8C , $00) = "Undefined"
pages($8C , $01) = "Bar Code Badge Reader,CA,"
pages($8C , $02) = "Bar Code Scanner,CA,"
pages($8C , $03) = "Dumb Bar Code Scanner,CA,"
pages($8C , $04) = "Cordless Scanner Base,CA,"
pages($8C , $05) = "Bar Code Scanner Cradle,CA,"
pages($8C , $10) = "Attribute Report,CL,"
pages($8C , $11) = "Settings Report,CL,"
pages($8C , $12) = "Scanned Data Report,CL,"
pages($8C , $13) = "Raw Scanned Data Report,CL,"
pages($8C , $14) = "Trigger Report,CL,"
pages($8C , $15) = "Status Report,CL,"
pages($8C , $16) = "UPC/EAN Control Report,CL,"
pages($8C , $17) = "EAN 2/3 Label Control Report,CL,"
pages($8C , $18) = "Code 39 Control Report,CL,"
pages($8C , $19) = "Interleaved 2 of 5 Control Report,CL,"
pages($8C , $1A) = "Standard 2 of 5 Control Report,CL,"
pages($8C , $1B) = "MSI Plessey Control Report,CL,"
pages($8C , $1C) = "Codabar Control Report,CL,"
pages($8C , $1D) = "Code 128 Control Report,CL,"
pages($8C , $1E) = "Misc 1D Control Report,CL,"
pages($8C , $1F) = "2D Control Report,CL,"
pages($8C , $30) = "Aiming/Pointer Mode,SF,"
pages($8C , $31) = "Bar Code Present Sensor,SF,"
pages($8C , $32) = "Class 1A Laser,SF,"
pages($8C , $33) = "Class 2 Laser,SF,"
pages($8C , $34) = "Heater Present,SF,"
pages($8C , $35) = "Contact Scanner,SF,"
pages($8C , $36) = "Electronic Article Surveillance Notification,SF,"
pages($8C , $37) = "Constant Electronic Article Surveillance,SF,"
pages($8C , $38) = "Error Indication,SF,"
pages($8C , $39) = "Fixed Beeper,SF,"
pages($8C , $3A) = "Good Decode Indication,SF,"
pages($8C , $3B) = "Hands Free Scanning,SF,"
pages($8C , $3C) = "Intrinsically Safe,SF,"
pages($8C , $3D) = "Klasse Eins Laser,SF,"
pages($8C , $3E) = "Long Range Scanner,SF,"
pages($8C , $3F) = "Mirror Speed Control,SF,"
pages($8C , $40) = "Not On File Indication,SF,"
pages($8C , $41) = "Programmable Beeper,SF,"
pages($8C , $42) = "Triggerless,SF,"
pages($8C , $43) = "Wand,SF,"
pages($8C , $44) = "Water Resistant,SF,"
pages($8C , $45) = "Multi-Range Scanner,SF,"
pages($8C , $46) = "Proximity Sensor,SF,"
pages($8C , $4D) = "Fragment Decoding,DF,"
pages($8C , $4E) = "Scanner Read Confidence,DV,"
pages($8C , $4F) = "Data Prefix,NAry,"
pages($8C , $50) = "Prefix AIMI,Sel,"
pages($8C , $51) = "Prefix None,Sel,"
pages($8C , $52) = "Prefix Proprietary,Sel,"
pages($8C , $55) = "Active Time,DV,"
pages($8C , $56) = "Aiming Laser Pattern,DF,"
pages($8C , $57) = "Bar Code Present,OOC,"
pages($8C , $58) = "Beeper State,OOC,"
pages($8C , $59) = "Laser On Time,DV,"
pages($8C , $5A) = "Laser State,OOC,"
pages($8C , $5B) = "Lockout Time,DV,"
pages($8C , $5C) = "Motor State,OOC,"
pages($8C , $5D) = "Motor Timeout,DV,"
pages($8C , $5E) = "Power On Reset Scanner,DF,"
pages($8C , $5F) = "Prevent Read of Barcodes,DF,"
pages($8C , $60) = "Initiate Barcode Read,DF,"
pages($8C , $61) = "Trigger State,OOC,"
pages($8C , $62) = "Trigger Mode,NAry,"
pages($8C , $63) = "Trigger Mode Blinking Laser On,Sel,"
pages($8C , $64) = "Trigger Mode Continuous Laser On,Sel,"
pages($8C , $65) = "Trigger Mode Laser on while Pulled,Sel,"
pages($8C , $66) = "Trigger Mode Laser stays on after Trigger release,Sel,"
pages($8C , $6D) = "Commit Parameters to NVM,DF,"
pages($8C , $6E) = "Parameter Scanning,DF,"
pages($8C , $6F) = "Parameters Changed,OOC,"
pages($8C , $70) = "Set parameter default values,DF,"
pages($8C , $75) = "Scanner In Cradle,OOC,"
pages($8C , $76) = "Scanner In Range,OOC,"
pages($8C , $7A) = "Aim Duration,DV,"
pages($8C , $7B) = "Good Read Lamp Duration,DV,"
pages($8C , $7C) = "Good Read Lamp Intensity,DV,"
pages($8C , $7D) = "Good Read LED,DF,"
pages($8C , $7E) = "Good Read Tone Frequency,DV,"
pages($8C , $7F) = "Good Read Tone Length,DV,"
pages($8C , $80) = "Good Read Tone Volume,DV,"
pages($8C , $82) = "No Read Message,DF,"
pages($8C , $83) = "Not on File Volume,DV,"
pages($8C , $84) = "Powerup Beep,DF,"
pages($8C , $85) = "Sound Error Beep,DF,"
pages($8C , $86) = "Sound Good Read Beep,DF,"
pages($8C , $87) = "Sound Not On File Beep,DF,"
pages($8C , $88) = "Good Read When To Indicate,NAry,"
pages($8C , $89) = "GRWTI After Decode,Sel,"
pages($8C , $8A) = "GRWTI Beep/Lamp after transmit,Sel,"
pages($8C , $8B) = "GRWTI No Beep/Lamp use at all,Sel,"
pages($8C , $91) = "Bookland EAN,DF,"
pages($8C , $92) = "Convert EAN 8 to 13 Type,DF,"
pages($8C , $93) = "Convert UPC A to EAN-13,DF,"
pages($8C , $94) = "Convert UPC-E to A,DF,"
pages($8C , $95) = "EAN-13,DF,"
pages($8C , $96) = "EAN-8,DF,"
pages($8C , $97) = "EAN-99 128_Mandatory,DF,"
pages($8C , $98) = "EAN-99 P5/128_Optional,DF,"
pages($8C , $9A) = "UPC/EAN,DF,"
pages($8C , $9B) = "UPC/EAN Coupon Code,DF,"
pages($8C , $9C) = "UPC/EAN Periodicals,DV,"
pages($8C , $9D) = "UPC-A,DF,"
pages($8C , $9E) = "UPC-A with 128 Mandatory,DF,"
pages($8C , $9F) = "UPC-A with 128 Optional,DF,"
pages($8C , $A0) = "UPC-A with P5 Optional,DF,"
pages($8C , $A1) = "UPC-E,DF,"
pages($8C , $A2) = "UPC-E1,DF,"
pages($8C , $A9) = "Periodical,NAry,"
pages($8C , $AA) = "Periodical Auto-Discriminate + 2,Sel,"
pages($8C , $AB) = "Periodical Only Decode with + 2,Sel,"
pages($8C , $AC) = "Periodical Ignore + 2,Sel,"
pages($8C , $AD) = "Periodical Auto-Discriminate + 5,Sel,"
pages($8C , $AE) = "Periodical Only Decode with + 5,Sel,"
pages($8C , $AF) = "Periodical Ignore + 5,Sel,"
pages($8C , $B0) = "Check,NAry,"
pages($8C , $B1) = "Check Disable Price,Sel,"
pages($8C , $B2) = "Check Enable 4 digit Price,Sel,"
pages($8C , $B3) = "Check Enable 5 digit Price,Sel,"
pages($8C , $B4) = "Check Enable European 4 digit Price,Sel,"
pages($8C , $B5) = "Check Enable European 5 digit Price,Sel,"
pages($8C , $B7) = "EAN Two Label,DF,"
pages($8C , $B8) = "EAN Three Label,DF,"
pages($8C , $B9) = "EAN 8 Flag Digit 1,DV,"
pages($8C , $BA) = "EAN 8 Flag Digit 2,DV,"
pages($8C , $BB) = "EAN 8 Flag Digit 3,DV,"
pages($8C , $BC) = "EAN 13 Flag Digit 1,DV,"
pages($8C , $BD) = "EAN 13 Flag Digit 2,DV,"
pages($8C , $BE) = "EAN 13 Flag Digit 3 DV 3.10.2"
pages($8C , $BF) = "Add EAN 2/3 Label Definition,DF,"
pages($8C , $C0) = "Clear all EAN 2/3 Label Definitions,DF,"
pages($8C , $C3) = "Codabar,DF,"
pages($8C , $C4) = "Code 128,DF,"
pages($8C , $C7) = "Code 39,DF,"
pages($8C , $C8) = "Code 93,DF,"
pages($8C , $C9) = "Full ASCII Conversion,DF,"
pages($8C , $CA) = "Interleaved 2 of 5,DF,"
pages($8C , $CB) = "Italian Pharmacy Code,DF,"
pages($8C , $CC) = "MSI/Plessey,DF,"
pages($8C , $CD) = "Standard 2 of 5 IATA,DF,"
pages($8C , $CE) = "Standard 2 of 5,DF,"
pages($8C , $D3) = "Transmit Start/Stop,DF,"
pages($8C , $D4) = "Tri-Optic,DF,"
pages($8C , $D5) = "UCC/EAN-128,DF,"
pages($8C , $D6) = "Check Digit,NAry,"
pages($8C , $D7) = "Check Digit Disable,Sel,"
pages($8C , $D8) = "Check Digit Enable Interleaved 2 of 5 OPCC,Sel,"
pages($8C , $D9) = "Check Digit Enable Interleaved 2 of 5 USS,Sel,"
pages($8C , $DA) = "Check Digit Enable Standard 2 of 5 OPCC,Sel,"
pages($8C , $DB) = "Check Digit Enable Standard 2 of 5 USS,Sel,"
pages($8C , $DC) = "Check Digit Enable One MSI Plessey,Sel,"
pages($8C , $DD) = "Check Digit Enable Two MSI Plessey,Sel,"
pages($8C , $DE) = "Check Digit Codabar Enable,Sel,"
pages($8C , $DF) = "Check Digit Code 39 Enable,Sel,"
pages($8C , $F0) = "Transmit Check Digit,NAry,"
pages($8C , $F1) = "Disable Check Digit Transmit,Sel,"
pages($8C , $F2) = "Enable Check Digit Transmit,Sel,"
pages($8C , $FB) = "Symbology Identifier 1,DV,"
pages($8C , $FC) = "Symbology Identifier 2,DV,"
pages($8C , $FD) = "Symbology Identifier 3,DV,"
pages($8C , $FE) = "Decoded Data,DV,"
pages($8C , $FF) = "Decode Data Continued,DF,"
pages($8C , $100) = "Bar Space Data,DV,"
pages($8C , $101) = "Scanner Data Accuracy,DV,"
pages($8C , $102) = "Raw Data Polarity,NAry,"
pages($8C , $103) = "Polarity Inverted Bar Code,Sel,"
pages($8C , $104) = "Polarity Normal Bar Code,Sel,"
pages($8C , $106) = "Minimum Length to Decode,DV,"
pages($8C , $107) = "Maximum Length to Decode,DV,"
pages($8C , $108) = "First Discrete Length to Decode,DV,"
pages($8C , $109) = "Second Discrete Length to Decode,DV,"
pages($8C , $10A) = "Data Length Method,NAry,"
pages($8C , $10B) = "DL Method Read any,Sel,"
pages($8C , $10C) = "DL Method Check in Range,Sel,"
pages($8C , $10D) = "DL Method Check for Discrete,Sel,"
pages($8C , $110) = "Aztec Code,DF,"
pages($8C , $111) = "BC412,DF,"
pages($8C , $112) = "Channel Code,DF,"
pages($8C , $113) = "Code 16,DF,"
pages($8C , $114) = "Code 32,DF,"
pages($8C , $115) = "Code 49,DF,"
pages($8C , $116) = "Code One,DF,"
pages($8C , $117) = "Colorcode,DF,"
pages($8C , $118) = "Data Matrix,DF,"
pages($8C , $119) = "MaxiCode,DF,"
pages($8C , $11A) = "MicroPDF,DF,"
pages($8C , $11B) = "PDF-417,DF,"
pages($8C , $11C) = "PosiCode,DF,"
pages($8C , $11D) = "QR Code,DF,"
pages($8C , $11E) = "SuperCode,DF,"
pages($8C , $11F) = "UltraCode,DF,"
pages($8C , $120) = "USD-5 (Slug Code),DF,"
pages($8C , $121) = "VeriCode,DF,"

pagenames($8D)="Weighing Devices Page,WD_"
;=========================================================
pages($8D , $00) = "Undefined"
pages($8D , $01) = "Weighing Device,CA,"
pages($8D , $20) = "Scale Device,CL,"
pages($8D , $21) = "Scale Class I Metric,CL,"
pages($8D , $22) = "Scale Class I Metric,Sel,"
pages($8D , $23) = "Scale Class II Metric,Sel,"
pages($8D , $24) = "Scale Class III Metric,Sel,"
pages($8D , $25) = "Scale Class IIIL Metric,Sel,"
pages($8D , $26) = "Scale Class IV Metric,Sel,"
pages($8D , $27) = "Scale Class III English,Sel,"
pages($8D , $28) = "Scale Class IIIL English,Sel,"
pages($8D , $29) = "Scale Class IV English,Sel,"
pages($8D , $2A) = "Scale Class Generic,Sel,"
pages($8D , $30) = "Scale Attribute Report,CL,"
pages($8D , $31) = "Scale Control Report,CL,"
pages($8D , $32) = "Scale Data Report,CL,"
pages($8D , $33) = "Scale Status Report,CL,"
pages($8D , $34) = "Scale Weight Limit Report,CL,"
pages($8D , $35) = "Scale Statistics Report,CL,"
pages($8D , $40) = "Data Weight,DV,"
pages($8D , $41) = "Data Scaling,CV,"
pages($8D , $50) = "Weight Unit,CL,"
pages($8D , $51) = "Weight Unit Milligram,Sel,"
pages($8D , $52) = "Weight Unit Gram,Sel,"
pages($8D , $53) = "Weight Unit Kilogram,Sel,"
pages($8D , $54) = "Weight Unit Carats,Sel,"
pages($8D , $55) = "Weight Unit Taels,Sel,"
pages($8D , $56) = "Weight Unit Grains,Sel,"
pages($8D , $57) = "Weight Unit Pennyweights,Sel,"
pages($8D , $58) = "Weight Unit Metric Ton,Sel,"
pages($8D , $59) = "Weight Unit Avoir Ton,Sel,"
pages($8D , $5A) = "Weight Unit Troy Ounce,Sel,"
pages($8D , $5B) = "Weight Unit Ounce,Sel,"
pages($8D , $5C) = "Weight Unit Pound,Sel,"
pages($8D , $60) = "Calibration Count,DV,"
pages($8D , $61) = "Re-Zero Count,DV,"
pages($8D , $70) = "Scale Status,CL,"
pages($8D , $71) = "Scale Status Fault,Sel,"
pages($8D , $72) = "Scale Status Stable at Center of Zero,Sel,"
pages($8D , $73) = "Scale Status In Motion,Sel,"
pages($8D , $74) = "Scale Status Weight Stable,Sel,"
pages($8D , $75) = "Scale Status Under Zero,Sel,"
pages($8D , $76) = "Scale Status Over Weight Limit,Sel,"
pages($8D , $77) = "Scale Status Requires Calibration,Sel,"
pages($8D , $78) = "Scale Status Requires Re-zeroing,Sel,"
pages($8D , $80) = "Zero Scale,OOC,"
pages($8D , $81) = "Enforced Zero Return,OOC,"

pagenames($8E)="Magnetic Stripe Reader Page,MSR_"
;=========================================================
pages($8E , $00) = "Undefined"
pages($8E , $01) = "MSR Device Read-Only,CA,"
pages($8E , $11) = "Track 1 Length,SFDFSEL, "
pages($8E , $12) = "Track 2 Length,SFDFSEL,"
pages($8E , $13) = "Track 3 Length,SFDFSEL,"
pages($8E , $14) = "Track JIS Length,SFDFSEL,"
pages($8E , $20) = "Track Data,SFDFSEL,"
pages($8E , $21) = "Track 1 Data,SFDFSEL,"
pages($8E , $22) = "Track 2 Data,SFDFSEL,"
pages($8E , $23) = "Track 3 Data,SFDFSEL,"
pages($8E , $24) = "Track JIS Data,SFDFSEL,"

pagenames(90)="Camera Control Page,CAM_"
;=========================================================
pages($90 , $00) = "Undefined "
pages($90 , $20) = "Camera Auto Focus,OSC,"
pages($90 , $21) = "Camera Shutter,OSC,"

pagenames($91)="1 Arcade Page,ARC_"
;=========================================================
pages($91 , $00) = "Undefined "
pages($91 , $01) = "General Purpose IO Card,CA,"
pages($91 , $02) = "Coin Door,CA,"
pages($91 , $03) = "Watchdog Timer,CA,"
pages($91 , $30) = "General Purpose Analog Input State,DV,"
pages($91 , $31) = "General Purpose Digital Input State,DV,"
pages($91 , $32) = "General Purpose Optical Input State,DV,"
pages($91 , $33) = "General Purpose Digital Output State,DV,"
pages($91 , $34) = "Number of Coin Doors,DV,"
pages($91 , $35) = "Coin Drawer Drop Count,DV,"
pages($91 , $36) = "Coin Drawer Start,OOC,"
pages($91 , $37) = "Coin Drawer Service,OOC,"
pages($91 , $38) = "Coin Drawer Tilt,OOC,"
pages($91 , $39) = "Coin Door Test,OOC,"
pages($91 , $40) = "Coin Door Lockout,OOC,"
pages($91 , $41) = "Watchdog Timeout,DV,"
pages($91 , $42) = "Watchdog Action,NAry,"
pages($91 , $43) = "Watchdog Reboot,Sel,"
pages($91 , $44) = "Watchdog Restart,Sel,"
pages($91 , $45) = "Alarm Input,DV,"
pages($91 , $46) = "Coin Door Counter,OOC,"
pages($91 , $47) = "I/O Direction Mapping,DV,"
pages($91 , $48) = "Set I/O Direction,OOC,"
pages($91 , $49) = "Extended Optical Input State,DV,"
pages($91 , $4A) = "Pin Pad Input State,DV,"
pages($91 , $4B) = "Pin Pad Status,DV,"
pages($91 , $4C) = "Pin Pad Output,OOC,"
pages($91 , $4D) = "Pin Pad Command,DV,"


pagenames($FF)="Vendor-defined"
;=========================================================
pages($FF , $00) = "Vendor-defined"


Global Dim bsize(3)
bsize(0) = 1
bsize(1) = 2
bsize(2) = 3
bsize(3) = 4

Global Dim btype.s(3)
btype(0) = "Global"   ;Scope, full descriptor
btype(1) = "Local"    ;scope, only for the next item
btype(2) = "Main"     ;main, real datafields defined here
btype(3) = "Reserved for Future/unused"

Global Dim Items.s(3,15)

;Global Items
items(1,$0) = "Usage Page"
items(1,$1) = "Logical Minimum"
items(1,$2) = "Logical Maximum"
items(1,$3) = "Physical Minimum"
items(1,$4) = "Physical Maximum"
items(1,$5) = "Unit Exponent"
items(1,$6) = "Unit"
items(1,$7) = "Report Size"
items(1,$8) = "Report ID"
items(1,$9) = "Report Count"
items(1,$A) = "Push"
items(1,$B) = "Pop"

;Local Items
items(2,$0) = "Usage"
items(2,$1) = "Usage Minimum"
items(2,$2) = "Usage Maximum"
items(2,$3) = "Designator Index"
items(2,$4) = "Designator Minimum"
items(2,$5) = "Designator Maximum"
items(2,$7) = "String Index"
items(2,$8) = "String Minimum"
items(2,$9) = "String Maximum"
items(2,$A) = "Delimeter"




;Main Items
items(0,$0) = "Usage"
items(0,$8) = "Input"
items(0,$9) = "Output"
items(0,$A) = "Collection"
items(0,$B) = "Feature"
items(0,$C) = "End Collection"

Global UP = 0
Global US = 0
Global INDENT = 0

Global DAT = 0
Global BSZE = 1
Global TPE = 0
Global SIGNED = 0

Global os.s = ""
Global dt.s = "" : ;the data
Procedure.s parseHIDDescriptor(HDS.s)
  
Global UP = 0
Global US = 0
Global INDENT = 0

Global DAT = 0
Global BSZE = 1
Global TPE = 0
Global SIGNED = 0

Global os.s = ""
Global dt.s = "" : ;the data
  
  indentation = 0
  os = ""
  For x = 0 To Len(hds)/2-1
    
    in.s = ""
    For t = 0 To indentation
      in.s +"    " 
    Next t

    
    If dat = 0
      s0.s = Mid(hds,x*2+1,2)
      s1.s = Mid(hds,x*2+1,1)
      s2.s = Mid(hds,x*2+2,1)
      sv0 = Val("$"+s0)
      sv1 = Val("$"+s1)
      sv2 = Val("$"+s2)
      BSZE = sv2&%0011       :;this will be the bytesize
      TPE = (sv2>>2)&%0011        :;This will be the type
      
 ;     Debug tpe
      If dat = 0 And s0<>"c0" And s0<>"a4" And s0<>"b4"
        
        dt.s = Mid(hds,x*2+3,(2*bsze))
        
        os = os+in.s+items(tpe,sv1)
        If items(tpe,sv1)="Usage Page" And Val("$"+dt)<256
          usgpg = Val("$"+dt)
          os = os+ ".........."+ pagenames(Val("$"+dt)) +Chr(13)+Chr(10)
        ElseIf items(tpe,sv1)="Usage" And Val("$"+dt)<256
          os = os+ "..........(0x"+dt+") "+ pages(usgpg,Val("$"+dt)) +Chr(13)+Chr(10)
          
        ElseIf items(tpe,sv1)="Collection" And Val("$"+dt)<256
          os = os+ "..........(0x"+dt+") "+ col(Val("$"+dt)) +Chr(13)+Chr(10)
          indentation+1
        ElseIf items(tpe,sv1)="Input" And Val("$"+dt)<256
          inp$ = ""
          If Val("$"+dt)&%00000001 : inp$+"Constant, ":EndIf
          If Val("$"+dt)&%00000010 : inp$+"Variable, ":EndIf
          If Val("$"+dt)&%00000100 : inp$+"Relative, ":EndIf
          If Val("$"+dt)&%00001000 : inp$+"Wrap, ":EndIf
          If Val("$"+dt)&%00010000 : inp$+"Non Linear, ":EndIf
          If Val("$"+dt)&%00100000 : inp$+"No Preferred, ":EndIf
          If Val("$"+dt)&%01000000 : inp$+"Null State, ":EndIf
          If Val("$"+dt)&%10000000 : inp$+"Buffered Bytes, ":EndIf
          
          os = os+ "..........(0x"+dt+") "+ inp$ +Chr(13)+Chr(10)
          
        ElseIf items(tpe,sv1)="Output" And Val("$"+dt)<256
          inp$ = ""
          If Val("$"+dt)&%00000001 : inp$+"Constant, ":EndIf
          If Val("$"+dt)&%00000010 : inp$+"Variable, ":EndIf
          If Val("$"+dt)&%00000100 : inp$+"Relative, ":EndIf
          If Val("$"+dt)&%00001000 : inp$+"Wrap, ":EndIf
          If Val("$"+dt)&%00010000 : inp$+"Non Linear, ":EndIf
          If Val("$"+dt)&%00100000 : inp$+"No Preferred, ":EndIf
          If Val("$"+dt)&%01000000 : inp$+"Null State, ":EndIf
          If Val("$"+dt)&%10000000 : inp$+"Buffered Bytes, ":EndIf
          
          os = os+ "..........(0x"+dt+") "+ inp$ +Chr(13)+Chr(10)
          
        ElseIf items(tpe,sv1)="Feature" And Val("$"+dt)<256
          inp$ = ""
          If Val("$"+dt)&%00000001 : inp$+"Constant, ":EndIf
          If Val("$"+dt)&%00000010 : inp$+"Variable, ":EndIf
          If Val("$"+dt)&%00000100 : inp$+"Relative, ":EndIf
          If Val("$"+dt)&%00001000 : inp$+"Wrap, ":EndIf
          If Val("$"+dt)&%00010000 : inp$+"Non Linear, ":EndIf
          If Val("$"+dt)&%00100000 : inp$+"No Preferred, ":EndIf
          If Val("$"+dt)&%01000000 : inp$+"Null State, ":EndIf
          If Val("$"+dt)&%10000000 : inp$+"Buffered Bytes, ":EndIf
          
          os = os+ "..........(0x"+dt+") "+ inp$ +Chr(13)+Chr(10)
 
          
        Else  
          os = os+ "..........(0x"+dt +")"+Chr(13)+Chr(10)
        EndIf
        x=x+bsze
        If items(tpe,sv1)="Usage Page" : indentation +1 : EndIf
      EndIf
      EndIf
    If s0 = "c0" : os = os +in.s+ "End Collection" + Chr(13) + Chr(10) :dat = 0:indentation - 2 :EndIf
    If s0 = "a4" : os = os +in.s+ "Push" + Chr(13) + Chr(10) :dat = 0: EndIf
    If s0 = "b4" : os = os +in.s+ "Pop" + Chr(13) + Chr(10) :dat = 0: EndIf
  Next x
ProcedureReturn os
EndProcedure

InitSprite()
InitKeyboard():InitMouse()

Global.i lw,mw,e1,ps,p1
ExamineDesktops():dx=DesktopWidth(0):dy=DesktopHeight(0)
OpenWindow(0, 0, 0, DesktopUnscaledX(dx),DesktopUnscaledY(dy), "[Escape] to quit", #PB_Window_BorderLess | #PB_Window_ScreenCentered)
OpenWindowedScreen(WindowID(0), 0, 0, dx, dy, 0, 0, 0)

InitScreenGadgets()
mw=OpenScreenWindow(#PB_Any, 0, 0, 300, 650, "HID Items")
ps=PanelScreenGadget(#PB_Any,10,30,280,610)
p1=AddScreenGadgetItem(ps,-1,"panel-1")
lw=ListViewScreenGadget(#PB_Any,5,10,268,563)

d1w=OpenScreenWindow(#PB_Any, 310, 0, 1000, 650, "Hid Info")
e1 = EditorScreenGadget(#PB_Any,10,30,980,590)

ExamineHIDs()
While NextHID()
  c+1
  OpenHID(c,Val(HIDInfo(#PB_HID_VendorId)),Val(HIDInfo(#PB_HID_ProductId)))
  If IsHID(c)
    AddScreenGadgetItem(lw,-1,HIDInfo(#PB_HID_Product,c))
  EndIf
  
Wend


Repeat
  While WindowEvent() : Wend
  
  ClearScreen(RGB(0,0,0))
  ExamineMouse()
  DesktopMouseX() :;Trixie Wayland fix for mouse, probably.
  ExamineKeyboard()
  
  If ScreenWindowEvent() = #PB_Event_Gadget
      
      eg = EventScreenGadget()
       Select eg
         Case lw
           
           If IsHID(GetScreenGadgetState(lw)+1)
            SetScreenGadgetText(e1,"")
            ms.s = ""
            ms.s = "HID Product: " + HIDInfo(#PB_HID_Product,GetScreenGadgetState(lw)+1)+Chr(13)+Chr(10)
            ms.s + "HID Manufacturer: " + HIDInfo(#PB_HID_Manufacturer,GetScreenGadgetState(lw)+1)+Chr(13)+Chr(10)
            ms.s + "HID Path: " + HIDInfo(#PB_HID_Path,GetScreenGadgetState(lw)+1)+Chr(13)+Chr(10)
            ms.s + "HID VID: " + RSet(Hex(Val(HIDInfo(#PB_HID_VendorId,GetScreenGadgetState(lw)+1))), 4, "0") + #CRLF$
            ms.s + "HID PID: " + RSet(Hex(Val(HIDInfo(#PB_HID_ProductId,GetScreenGadgetState(lw)+1))), 4, "0") + #CRLF$

            ms = ms+Chr(13)+Chr(10)
            dsc.s = GetHIDReportDescriptor(GetScreenGadgetState(lw)+1)
            ms = ms+dsc
            ms = ms+Chr(13)+Chr(10)
            ms = ms+"========== Parsed Version =========="+Chr(13)+Chr(10)
            ms = ms+Chr(13)+Chr(10)
            ms = ms + parsehiddescriptor(dsc)
            ms = ms+Chr(13)+Chr(10)
            ms = ms+Chr(13)+Chr(10)
            
            SetScreenGadgetText(e1,ms)
            Debug ms
           EndIf
      EndSelect
  EndIf
  RenderScreenGadgets()
  FlipBuffers()
  Delay(1)
Until KeyboardReleased(#PB_Key_Escape) Or MouseButton(3)
A bit bulky that way though.
Last edited by miso on Thu Dec 11, 2025 10:23 pm, edited 5 times in total.
miso
Enthusiast
Enthusiast
Posts: 579
Joined: Sat Oct 21, 2023 4:06 pm
Location: Hungary

Re: HID Descriptor Tool

Post by miso »

I already see a couple of typos I made, not relevant in the output of the current version. I will fix them later.

A bitwise & was missing at line 2311

Code: Select all

 TPE = (sv2>>2)&%0011        :;This will be the type
PeDe
Enthusiast
Enthusiast
Posts: 331
Joined: Sun Nov 26, 2017 3:13 pm

Re: HID Descriptor Tool

Post by PeDe »

Thanks for the code. I added it at the end of pagenames()/pages():

Code: Select all

pagenames($FF)="Vendor-defined"
;=========================================================
pages($FF , $00) = "Vendor-defined"
It's not entirely correct; it should be $FF00-$FFFF, but it works with my HID adapter.

Peter
infratec
Always Here
Always Here
Posts: 7706
Joined: Sun Sep 07, 2008 12:45 pm
Location: Germany

Re: HID Descriptor Tool

Post by infratec »

VID and PID a normally always in hex, so I changed 2 lines:

Code: Select all

ms.s + "HID VID: " + RSet(Hex(Val(HIDInfo(#PB_HID_VendorId,GetScreenGadgetState(lw)+1))), 4, "0") + #CRLF$
ms.s + "HID PID: " + RSet(Hex(Val(HIDInfo(#PB_HID_ProductId,GetScreenGadgetState(lw)+1))), 4, "0") + #CRLF$
miso
Enthusiast
Enthusiast
Posts: 579
Joined: Sat Oct 21, 2023 4:06 pm
Location: Hungary

Re: HID Descriptor Tool

Post by miso »

infratec wrote: Thu Dec 11, 2025 6:56 pm VID and PID a normally always in hex, so I changed 2 lines:

Code: Select all

ms.s + "HID VID: " + RSet(Hex(Val(HIDInfo(#PB_HID_VendorId,GetScreenGadgetState(lw)+1))), 4, "0") + #CRLF$
ms.s + "HID PID: " + RSet(Hex(Val(HIDInfo(#PB_HID_ProductId,GetScreenGadgetState(lw)+1))), 4, "0") + #CRLF$
Thanks, modified the code with your addition.
miso
Enthusiast
Enthusiast
Posts: 579
Joined: Sat Oct 21, 2023 4:06 pm
Location: Hungary

Re: HID Descriptor Tool

Post by miso »

PeDe wrote: Thu Dec 11, 2025 2:36 pm Thanks for the code. I added it at the end of pagenames()/pages():

Code: Select all

pagenames($FF)="Vendor-defined"
;=========================================================
pages($FF , $00) = "Vendor-defined"
It's not entirely correct; it should be $FF00-$FFFF, but it works with my HID adapter.

Peter
Thanks, I added this to the code. About the $FF00-$FFFF range,... I removed those, as only a few rare equipment was there, and I was not sure about making that big of a string array for those. I have a list for the upper parts, If someone suggest that a more complete version with very rare things should be added, I can make a modification, or can provide a list. ( As I collected those too, that was available. )
User avatar
idle
Always Here
Always Here
Posts: 6101
Joined: Fri Sep 21, 2007 5:52 am
Location: New Zealand

Re: HID Descriptor Tool

Post by idle »

this might be useful as a reference
https://github.com/IntergatedCircuits/h ... main/pages
Post Reply