Skip to content

Waratah Samples

Matthew Williams edited this page Feb 24, 2022 · 2 revisions

Keyboard

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]

Mouse

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]

Joystick

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]

Gamepad

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

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]

Consumer Control

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]
Clone this wiki locally