-
Notifications
You must be signed in to change notification settings - Fork 35
Waratah Samples
Matthew Williams edited this page Jun 18, 2025
·
3 revisions
Simple keyboard with capability of reporting of up to 8 regular keys and 1 modifier key.
[[applicationCollection]]
usage = ['Generic Desktop', 'Keyboard']
[[applicationCollection.inputReport]]
# Special buttons
#
# N.B. Windows applies special buttons only to subsequent keys, so
# must appear in report beforehand.
[[applicationCollection.inputReport.variableItem]]
usageRange = ['Keyboard/Keypad', 'Keyboard LeftControl', 'Keyboard Right GUI']
logicalValueRange = [0, 1]
# Regular Buttons
[[applicationCollection.inputReport.arrayItem]]
usageRange = ['Keyboard/Keypad', 'ErrorRollOver', 'Keyboard Application']
count = 8
# LEDS
[[applicationCollection.outputReport]]
[[applicationCollection.outputReport.variableItem]]
usageRange = ['LED', 'Num Lock', 'Kana']
logicalValueRange = [0, 1]Simple mouse with 3 buttons.
[[applicationCollection]]
usage = ['Generic Desktop', 'Mouse']
[[applicationCollection.inputReport]]
[[applicationCollection.inputReport.physicalCollection]]
usage = ['Generic Desktop', 'Pointer']
[[applicationCollection.inputReport.physicalCollection.variableItem]]
usage = ['Generic Desktop', 'X']
sizeInBits = 8
logicalValueRange = 'maxSignedSizeRange'
reportFlags = ['relative']
[[applicationCollection.inputReport.physicalCollection.variableItem]]
usage = ['Generic Desktop', 'Y']
sizeInBits = 8
logicalValueRange = 'maxSignedSizeRange'
reportFlags = ['relative']
[[applicationCollection.inputReport.physicalCollection.variableItem]]
usageRange = ['Button', 'Button 1', 'Button 3']
logicalValueRange = [0, 1]Flight joystick with throttle, variable stick position, hat switch rocker and 4 buttons.
[[applicationCollection]]
usage = ['Generic Desktop', 'Joystick']
[[applicationCollection.inputReport]]
[[applicationCollection.inputReport.variableItem]]
usage = ['Simulation Controls', 'Throttle']
sizeInBits = 8
[[applicationCollection.inputReport.physicalCollection]]
usage = ['Generic Desktop', 'Pointer']
[[applicationCollection.inputReport.physicalCollection.variableItem]]
usage = ['Generic Desktop', 'X']
sizeInBits = 8
[[applicationCollection.inputReport.physicalCollection.variableItem]]
usage = ['Generic Desktop', 'Y']
sizeInBits = 8
[[applicationCollection.inputReport.variableItem]]
usage = ['Generic Desktop', 'Hat Switch']
logicalValueRange = [0, 3]
physicalValueRange = [0, 270]
unit = 'degrees'
[[applicationCollection.inputReport.variableItem]]
usageRange = ['Button', 'Button 1', 'Button 4']
logicalValueRange = [0, 1]Simple gamepad with Up/down and left/right and 6 buttons.
[[applicationCollection]]
usage = ['Generic Desktop', 'Gamepad']
[[applicationCollection.inputReport]]
# Two axis rocker (tilting forward/backward and left/right)
[[applicationCollection.inputReport.physicalCollection]]
usage = ['Generic Desktop', 'Pointer']
[[applicationCollection.inputReport.physicalCollection.variableItem]]
usage = ['Generic Desktop', 'X']
logicalValueRange = [-1, 1]
[[applicationCollection.inputReport.physicalCollection.variableItem]]
usage = ['Generic Desktop', 'Y']
logicalValueRange = [-1, 1]
# 6 buttons
[[applicationCollection.inputReport.variableItem]]
usageRange = ['Button', 'Button 1', 'Button 6']
logicalValueRange = [0, 1]Telephony headset with 2 buttons (Mute and answer/hang-up calls), and 4 LEDs.
[[applicationCollection]]
usage = ['Telephony Device', 'Headset']
[[applicationCollection.inputReport]]
[[applicationCollection.inputReport.variableItem]]
usage = ['Telephony Device', 'Phone Mute']
logicalValueRange = [0, 1]
[[applicationCollection.inputReport.variableItem]]
usage = ['Telephony Device', 'Hook Switch']
logicalValueRange = [0, 1]
[[applicationCollection.outputReport]]
[[applicationCollection.outputReport.variableItem]]
usage = ['LED', 'Off-Hook']
logicalValueRange = [0, 1]
[[applicationCollection.outputReport.variableItem]]
usage = ['LED', 'Mute']
logicalValueRange = [0, 1]
[[applicationCollection.outputReport.variableItem]]
usage = ['LED', 'Microphone']
logicalValueRange = [0, 1]
[[applicationCollection.outputReport.variableItem]]
usage = ['LED', 'Ring']
logicalValueRange = [0, 1]Simple consumer control multimedia device with volume up/down, mute, play/pause + stop, scan Next/previous track.
[[applicationCollection]]
usage = ['Consumer', 'Consumer Control']
[[applicationCollection.inputReport]]
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Volume Increment']
logicalValueRange = [0, 1]
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Volume Decrement']
logicalValueRange = [0, 1]
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Mute']
logicalValueRange = [0, 1]
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Play/Pause']
logicalValueRange = [0, 1]
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Stop']
logicalValueRange = [0, 1]
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Scan Next Track']
logicalValueRange = [0, 1]
[[applicationCollection.inputReport.variableItem]]
usage = ['Consumer', 'Scan Previous Track']
logicalValueRange = [0, 1]A device with accelerometer and gyroscope, with 3 axes each. This format is compatible with the Windows Sensor API.
[[applicationCollection]]
usage = ['Sensors', 'Sensor']
# Accelerometer
[[applicationCollection.featureReport]]
usageRelation = ['Sensors', 'Motion: Accelerometer 3D']
[[applicationCollection.featureReport.logicalCollection]]
usage = ['Sensors', 'Property: Sensor Connection Type']
[[applicationCollection.featureReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Connection Type: PC Integrated', 'Connection Type: PC External']
[[applicationCollection.featureReport.logicalCollection]]
usage = ['Sensors', 'Property: Reporting State']
[[applicationCollection.featureReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Reporting State: Report No Events', 'Reporting State: Report All Events']
[[applicationCollection.featureReport.logicalCollection]]
usage = ['Sensors', 'Property: Power State']
[[applicationCollection.featureReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Power State: Undefined', 'Power State: D4 Power Off']
[[applicationCollection.featureReport.logicalCollection]]
usage = ['Sensors', 'Event: Sensor State']
[[applicationCollection.featureReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Sensor State: Undefined', 'Sensor State: Error']
[[applicationCollection.featureReport.variableItem]]
usage = ['Sensors', 'Property: Report Interval']
logicalValueRange = [0, 0xFFFFFFF]
[[applicationCollection.featureReport.variableItem]]
usageTransform = ['Sensors', 'Data Field: Acceleration', 'Modifier: Change Sensitivity Absolute']
logicalValueRange = [0, 0xFFFF]
[[applicationCollection.featureReport.variableItem]]
usageTransform = ['Sensors', 'Data Field: Acceleration', 'Modifier: Maximum']
logicalValueRange = [-32767, 32767]
[[applicationCollection.featureReport.variableItem]]
usageTransform = ['Sensors', 'Data Field: Acceleration', 'Modifier: Minimum']
logicalValueRange = [-32767, 32767]
[[applicationCollection.inputReport]]
usageRelation = ['Sensors', 'Motion: Accelerometer 3D']
[[applicationCollection.inputReport.logicalCollection]]
usage = ['Sensors', 'Event: Sensor State']
[[applicationCollection.inputReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Sensor State: Undefined', 'Sensor State: Error']
[[applicationCollection.inputReport.logicalCollection]]
usage = ['Sensors', 'Event: Sensor Event']
[[applicationCollection.inputReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Sensor Event: Unknown', 'Sensor Event: Change Sensitivity']
# X, Y, Z axes of acceleration, reported as milli-g's
[[applicationCollection.inputReport.variableItem]]
usage = ['Sensors', 'Data Field: Acceleration Axis X']
logicalValueRange = [-32767, 32767]
usageUnitMultiplier = 0.001
[[applicationCollection.inputReport.variableItem]]
usage = ['Sensors', 'Data Field: Acceleration Axis Y']
logicalValueRange = [-32767, 32767]
usageUnitMultiplier = 0.001
[[applicationCollection.inputReport.variableItem]]
usage = ['Sensors', 'Data Field: Acceleration Axis Z']
logicalValueRange = [-32767, 32767]
usageUnitMultiplier = 0.001
[[applicationCollection.inputReport.variableItem]]
usage = ['Sensors', 'Data Field: Motion State']
logicalValueRange = [0, 1]
# Gyrometer
[[applicationCollection.featureReport]]
usageRelation = ['Sensors', 'Motion: Gyrometer 3D']
[[applicationCollection.featureReport.logicalCollection]]
usage = ['Sensors', 'Property: Sensor Connection Type']
[[applicationCollection.featureReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Connection Type: PC Integrated', 'Connection Type: PC External']
[[applicationCollection.featureReport.logicalCollection]]
usage = ['Sensors', 'Property: Reporting State']
[[applicationCollection.featureReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Reporting State: Report No Events', 'Reporting State: Report All Events']
[[applicationCollection.featureReport.logicalCollection]]
usage = ['Sensors', 'Property: Power State']
[[applicationCollection.featureReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Power State: Undefined', 'Power State: D4 Power Off']
[[applicationCollection.featureReport.logicalCollection]]
usage = ['Sensors', 'Event: Sensor State']
[[applicationCollection.featureReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Sensor State: Undefined', 'Sensor State: Error']
[[applicationCollection.featureReport.variableItem]]
usage = ['Sensors', 'Property: Report Interval']
logicalValueRange = [0, 0xFFFFFFF]
[[applicationCollection.featureReport.variableItem]]
usageTransform = ['Sensors', 'Data Field: Angular Velocity', 'Modifier: Change Sensitivity Absolute']
logicalValueRange = [0, 0xFFFF]
[[applicationCollection.featureReport.variableItem]]
usageTransform = ['Sensors', 'Data Field: Angular Velocity', 'Modifier: Maximum']
logicalValueRange = [-32767, 32767]
[[applicationCollection.featureReport.variableItem]]
usageTransform = ['Sensors', 'Data Field: Angular Velocity', 'Modifier: Minimum']
logicalValueRange = [-32767, 32767]
[[applicationCollection.inputReport]]
usageRelation = ['Sensors', 'Motion: Gyrometer 3D']
[[applicationCollection.inputReport.logicalCollection]]
usage = ['Sensors', 'Event: Sensor State']
[[applicationCollection.inputReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Sensor State: Undefined', 'Sensor State: Error']
[[applicationCollection.inputReport.logicalCollection]]
usage = ['Sensors', 'Event: Sensor Event']
[[applicationCollection.inputReport.logicalCollection.arrayItem]]
usageRange = ['Sensors', 'Sensor Event: Unknown', 'Sensor Event: Change Sensitivity']
# X, Y, Z axes of angular velocity, reported as degrees per second
[[applicationCollection.inputReport.variableItem]]
usage = ['Sensors', 'Data Field: Angular Velocity about X Axis']
logicalValueRange = [-32767, 32767]
[[applicationCollection.inputReport.variableItem]]
usage = ['Sensors', 'Data Field: Angular Velocity about Y Axis']
logicalValueRange = [-32767, 32767]
[[applicationCollection.inputReport.variableItem]]
usage = ['Sensors', 'Data Field: Angular Velocity about Z Axis']
logicalValueRange = [-32767, 32767]