SDL  2.0
controller_constants.h
Go to the documentation of this file.
1 /*
2  Simple DirectMedia Layer
3  Copyright (C) 2020 Valve Corporation
4 
5  This software is provided 'as-is', without any express or implied
6  warranty. In no event will the authors be held liable for any damages
7  arising from the use of this software.
8 
9  Permission is granted to anyone to use this software for any purpose,
10  including commercial applications, and to alter it and redistribute it
11  freely, subject to the following restrictions:
12 
13  1. The origin of this software must not be misrepresented; you must not
14  claim that you wrote the original software. If you use this software
15  in a product, an acknowledgment in the product documentation would be
16  appreciated but is not required.
17  2. Altered source versions must be plainly marked as such, and must not be
18  misrepresented as being the original software.
19  3. This notice may not be removed or altered from any source distribution.
20 */
21 
22 #ifndef _CONTROLLER_CONSTANTS_
23 #define _CONTROLLER_CONSTANTS_
24 
25 #include "controller_structs.h"
26 
27 #ifdef __cplusplus
28 extern "C" {
29 #endif
30 
31 #define FEATURE_REPORT_SIZE 64
32 
33 #define VALVE_USB_VID 0x28DE
34 
35 // Frame update rate (in ms).
36 #define FAST_SCAN_INTERVAL 6
37 #define SLOW_SCAN_INTERVAL 9
38 
39 // Contains each of the USB PIDs for Valve controllers (only add to this enum and never change the order)
41 {
42  BASTILLE_PID = 0x2202,
43  CHELL_PID = 0x1101,
44  D0G_PID = 0x1102,
45  ELI_PID = 0x1103,
46  FREEMAN_PID = 0x1104,
47  D0G_BLE_PID = 0x1105,
48  D0G_BLE2_PID = 0x1106,
49  D0GGLE_PID = 0x1142,
50 };
51 
52 // This enum contains all of the messages exchanged between the host and the target (only add to this enum and never change the order)
54 {
72 
74 
76  ID_RESERVED_0 = 0xA8,
90  ID_PLAY_AUDIO = 0xB6,
94  ID_GET_CHIPID = 0xBA,
95 
102 };
103 
104 
105 // Enumeration of all wireless dongle events
106 typedef enum WirelessEventTypes
107 {
112 
113 
114 // Enumeration of generic digital inputs - not all of these will be supported on all controllers (only add to this enum and never change the order)
115 typedef enum
116 {
189 
190 // Enumeration of generic analog inputs - not all of these will be supported on all controllers (only add to this enum and never change the order)
191 typedef enum
192 {
220 
221 
222 // Contains list of all types of devices that the controller emulates (only add to this enum and never change the order)
224 {
230 };
231 
232 // Scan codes for HID keyboards
234 {
236  KEY_FIRST = 0x04,
260 };
261 
263 {
265  KEY_LSHIFT_MASK = (1<<1),
266  KEY_LALT_MASK = (1<<2),
267  KEY_LWIN_MASK = (1<<3),
269  KEY_RSHIFT_MASK = (1<<5),
270  KEY_RALT_MASK = (1<<6),
271  KEY_RWIN_MASK = (1<<7)
272 };
273 
274 // Standard mouse buttons as specified in the HID mouse spec
276 {
285 };
286 
287 // Gamepad buttons
289 {
316 };
317 
318 // Mode adjust
320 {
325 };
326 
327 // Read-only attributes of controllers (only add to this enum and never change the order)
328 typedef enum
329 {
332  ATTRIB_PRODUCT_REVISON, // deprecated
333  ATTRIB_CAPABILITIES = ATTRIB_PRODUCT_REVISON, // intentional aliasing
334  ATTRIB_FIRMWARE_VERSION, // deprecated
345 
346 // Read-only string attributes of controllers (only add to this enum and never change the order)
347 typedef enum
348 {
353 
354 typedef enum
355 {
360 
361 typedef enum
362 {
365 
366 typedef enum {
378 
379 // Read-write controller settings (only add to this enum and never change the order)
380 typedef enum
381 {
434 
435  // This is a special setting value use for callbacks and should not be set/get explicitly.
436  SETTING_ALL=0xFF
438 
439 typedef enum
440 {
446 
447 // Bitmask that define which IMU features to enable.
448 typedef enum
449 {
457 
458 // Bitmask for haptic pulse flags
459 typedef enum
460 {
465 
466 typedef struct
467 {
468  // default,min,max in this array in that order
469  short defaultminmax[SETTING_DEFAULTMINMAXCOUNT];
471 
472 // below is from controller_constants.c which should be compiled into any code that uses this
474 
475 // Read-write settings for dongle (only add to this enum and never change the order)
476 typedef enum
477 {
481 
482 typedef enum
483 {
491 
492  AUDIO_MAX_SLOT = 15
494 
495 #ifdef __cplusplus
496 }
497 #endif
498 
499 #endif // _CONTROLLER_CONSTANTS_H
@ IO_DIGITAL_RIGHT_TRACKPAD_W
@ IO_DIGITAL_LEFT_TRACKPAD_N
@ IO_DIGITAL_RIGHT_TRACKPAD_SE
@ IO_DIGITAL_RIGHT_TRACKPAD_N
@ IO_DIGITAL_BUTTON_MACRO_1
@ IO_DIGITAL_BUTTON_MACRO_5
@ IO_DIGITAL_LEFT_TRACKPAD_CLICK
@ IO_DIGITAL_STICK_RIGHT
@ IO_DIGITAL_LEFT_TRACKPAD_DOUBLE_TAP
@ IO_DIGITAL_RIGHT_TRACKPAD_OUTER_RADIUS
@ IO_DIGITAL_BATTERY_LOW
@ IO_DIGITAL_BUTTON_Y
@ IO_DIGITAL_BUTTON_MACRO_1FINGER
@ IO_DIGITAL_BUTTON_B
@ IO_DIGITAL_LEFT_TRACKPAD_S
@ IO_DIGITAL_BUTTON_RIGHT
@ IO_DIGITAL_BUTTON_3
@ IO_DIGITAL_BUTTON_MENU
@ IO_DIGITAL_BUTTON_LEFT_BUMPER
@ IO_DIGITAL_LEFT_TRIGGER_THRESHOLD
@ IO_DIGITAL_LEFT_TRACKPAD_E
@ IO_DIGITAL_BUTTON_BACK_RIGHT2
@ IO_DIGITAL_RIGHT_TRACKPAD_SW
@ IO_DIGITAL_BUTTON_4
@ IO_DIGITAL_LEFT_TRACKPAD_NW
@ IO_DIGITAL_BUTTON_LEFT_TRIGGER
@ IO_DIGITAL_COUNT
@ IO_DIGITAL_BUTTON_BACK_LEFT
@ IO_DIGITAL_TOUCH_2
@ IO_DIGITAL_TOUCH_3
@ IO_DIGITAL_STICK_UP
@ IO_DIGITAL_BUTTON_MACRO_3
@ IO_DIGITAL_BUTTON_DOWN
@ IO_DIGITAL_BUTTON_RIGHT_TRIGGER
@ IO_DIGITAL_BUTTON_STEAM
@ IO_DIGITAL_BUTTON_ANCILLARY_1
@ IO_DIGITAL_BUTTON_1
@ IO_DIGITAL_RIGHT_TRACKPAD_S
@ IO_DIGITAL_TOUCH_4
@ IO_DIGITAL_BUTTON_2
@ IO_DIGITAL_BUTTON_NONE
@ IO_DIGITAL_BUTTON_BACK_LEFT2
@ IO_DIGITAL_BUTTON_MACRO_7
@ IO_DIGITAL_LEFT_TRACKPAD_W
@ IO_DIGITAL_RIGHT_TRACKPAD_DOUBLE_TAP
@ IO_DIGITAL_RIGHT_TRACKPAD_E
@ IO_DIGITAL_BUTTON_A
@ IO_DIGITAL_BUTTON_UP
@ IO_DIGITAL_BUTTON_ALWAYS_ON
@ IO_DIGITAL_LEFT_TRACKPAD_OUTER_RADIUS
@ IO_DIGITAL_LEFT_TRACKPAD_SW
@ IO_DIGITAL_LEFT_TRACKPAD_SE
@ IO_DIGITAL_BUTTON_LEFT_JOYSTICK_CLICK
@ IO_DIGITAL_BUTTON_BACK_RIGHT
@ IO_DIGITAL_BUTTON_MACRO_2FINGER
@ IO_DIGITAL_BUTTON_RIGHT_BUMPER
@ IO_DIGITAL_BUTTON_MACRO_6
@ IO_DIGITAL_LEFT_TRACKPAD_NE
@ IO_DIGITAL_BUTTON_MACRO_2
@ IO_DIGITAL_TOUCH_1
@ IO_DIGITAL_RIGHT_TRIGGER_THRESHOLD
@ IO_DIGITAL_BUTTON_MACRO_0
@ IO_DIGITAL_STICK_LEFT
@ IO_DIGITAL_RIGHT_TRACKPAD_NE
@ IO_DIGITAL_BUTTON_ESCAPE
@ IO_DIGITAL_RIGHT_TRACKPAD_NW
@ IO_DIGITAL_STICK_DOWN
@ IO_DIGITAL_BUTTON_X
@ IO_DIGITAL_BUTTON_LEFT
@ IO_DIGITAL_RIGHT_TRACKPAD_CLICK
@ IO_DIGITAL_BUTTON_MACRO_4
@ IO_GYRO_QUAT_Y
@ IO_GYRO_TILT_VEC
@ IO_MOUSE1_X
@ IO_ACCEL_Y
@ IO_GYRO_STEERING_VEC
@ IO_GYRO_QUAT_Z
@ IO_ANALOG_LEFT_STICK_Y
@ IO_ANALOG_LEFT_TRIGGER
@ IO_GYRO_QUAT_X
@ IO_GYRO_QUAT_W
@ IO_ACCEL_Z
@ IO_MOUSE1_Y
@ IO_ACCEL_X
@ IO_RAW_JOYSTICK_X
@ IO_ANALOG_RIGHT_STICK_Y
@ IO_ANALOG_LEFT_STICK_X
@ IO_ANALOG_COUNT
@ IO_MOUSE1_Z
@ IO_RAW_TRIGGER_LEFT
@ IO_RAW_JOYSTICK_Y
@ IO_ANALOG_RIGHT_TRIGGER
@ IO_ANALOG_RIGHT_STICK_X
@ IO_RAW_TRIGGER_RIGHT
@ DONGLE_SETTING_COUNT
@ DONGLE_SETTING_MOUSE_KEYBOARD_ENABLED
ValveControllerPID
@ D0G_BLE2_PID
@ FREEMAN_PID
@ D0G_BLE_PID
@ BASTILLE_PID
@ D0GGLE_PID
@ CHELL_PID
const SettingValueRange_t g_DefaultSettingValues[SETTING_COUNT]
ControllerStatusEventCodes
@ STATUS_CODE_GYRO_INIT_ERROR
@ STATUS_CODE_CRITICAL_BATTERY
@ STATUS_CODE_NORMAL
ControllerAttributes
@ ATTRIB_PRODUCT_REVISON
@ ATTRIB_DONGLE_FIRMWARE_BUILD_TIME
@ ATTRIB_PRODUCT_ID
@ ATTRIB_UNIQUE_ID
@ ATTRIB_RADIO_DEVICE_ID1
@ ATTRIB_COUNT
@ ATTRIB_FIRMWARE_VERSION
@ ATTRIB_BOARD_REVISION
@ ATTRIB_RADIO_DEVICE_ID0
@ ATTRIB_CONNECTION_INTERVAL_IN_US
@ ATTRIB_CAPABILITIES
@ ATTRIB_FIRMWARE_BUILD_TIME
@ ATTRIB_RADIO_FIRMWARE_BUILD_TIME
@ ATTRIB_BOOTLOADER_BUILD_TIME
@ DEVICE_GAMEPAD
@ DEVICE_MODE_ADJUST
@ DEVICE_KEYBOARD
@ DEVICE_COUNT
@ DEVICE_MOUSE
ControllerStatusStateFlags
@ STATUS_STATE_LOW_BATTERY
SettingDefaultMinMax
@ SETTING_DEFAULT
@ SETTING_MIN
@ SETTING_MAX
@ SETTING_DEFAULTMINMAXCOUNT
FeatureReportMessageIDs
@ ID_CALIBRATE_ANALOG_TRIGGERS
@ ID_AUDIO_UPDATE_COMPLETE
@ ID_LOAD_DEFAULT_SETTINGS
@ ID_GET_DIGITAL_MAPPINGS
@ ID_SET_AUDIO_MAPPING
@ ID_SET_CONTROLLER_MODE
@ ID_DONGLE_GET_WIRELESS_STATE
@ ID_SET_SERIAL_NUMBER
@ ID_CLEAR_DIGITAL_MAPPINGS
@ ID_GET_SETTING_LABEL
@ ID_CALIBRATE_ANALOG
@ ID_GET_TRACKPAD_FACTORY_CALIBRATION
@ ID_ENABLE_PAIRING
@ ID_GET_TRACKPAD_CALIBRATION
@ ID_RESERVED_0
@ ID_GET_DEVICE_INFO
@ ID_CALIBRATE_JOYSTICK
@ ID_PLAY_AUDIO
@ ID_SET_DEFAULT_DIGITAL_MAPPINGS
@ ID_RADIO_ERASE_RECORDS
@ ID_SET_DONGLE_SETTING
@ ID_DONGLE_COMMIT_DEVICE
@ ID_CALIBRATE_TRACKPADS
@ ID_RADIO_WRITE_RECORD
@ ID_GET_SETTINGS_MAXS
@ ID_GET_STRING_ATTRIBUTE
@ ID_SET_SETTINGS_VALUES
@ ID_GET_SETTINGS_DEFAULTS
@ ID_TRIGGER_HAPTIC_PULSE
@ ID_GET_ATTRIBUTES_VALUES
@ ID_CHECK_GYRO_FW_LOAD
@ ID_DONGLE_DISCONNECT_DEVICE
@ ID_SET_DIGITAL_MAPPINGS
@ ID_CALIBRATE_GYRO
@ ID_AUDIO_UPDATE_START
@ ID_GET_SETTINGS_VALUES
@ ID_AUDIO_UPDATE_DATA
@ ID_TURN_OFF_CONTROLLER
@ ID_FACTORY_RESET
@ ID_DONGLE_GET_CONNECTED_SLOTS
@ ID_GET_TRACKPAD_RAW_DATA
@ ID_GET_CHIPID
@ ID_GET_ATTRIBUTE_LABEL
@ ID_CLEAR_SETTINGS_VALUES
@ MODE_ADJUST_LEFT_PAD_SECONDARY_MODE
@ MODE_ADJUST_COUNT
@ MODE_ADJUST_SENSITITY
@ MODE_ADJUST_RIGHT_PAD_SECONDARY_MODE
ControllerStringAttributes
@ ATTRIB_STR_BOARD_SERIAL
@ ATTRIB_STR_UNIT_SERIAL
@ ATTRIB_STR_COUNT
@ AUDIO_PAIR
@ AUDIO_SHUTDOWN
@ AUDIO_NORMALMODE
@ AUDIO_PAIR_SUCCESS
@ AUDIO_MAX_SLOT
@ AUDIO_IDENTIFY
@ AUDIO_LIZARDMODE
@ AUDIO_STARTUP
@ KEY_LEFT_BRACKET
@ KEY_UNUSED1
@ KEY_KEYPAD_9
@ KEY_KEYPAD_ENTER
@ KEY_INSERT
@ KEY_SEMICOLON
@ KEY_RIGHT_BRACKET
@ KEY_SCROLL_LOCK
@ KEY_ESCAPE
@ KEY_PRINT_SCREEN
@ KEY_KEYPAD_7
@ KEY_KEYPAD_3
@ KEY_KEYPAD_5
@ KEY_LEFT_ARROW
@ KEY_DOWN_ARROW
@ KEY_PERIOD
@ KEY_SINGLE_QUOTE
@ KEY_KEYPAD_1
@ KEY_FORWARD_SLASH
@ KEY_KEYPAD_FORWARD_SLASH
@ KEY_INVALID
@ KEY_RIGHT_ARROW
@ KEY_KEYPAD_PERIOD
@ KEY_KEYPAD_6
@ KEY_UP_ARROW
@ KEY_VOLDOWN
@ KEY_BACKSPACE
@ KEY_RETURN
@ KEY_KEYPAD_0
@ KEY_KEYPAD_PLUS
@ KEY_LSHIFT
@ KEY_KEYPAD_DASH
@ KEY_KEYPAD_ASTERISK
@ KEY_LCONTROL
@ KEY_PAGE_UP
@ KEY_KEYPAD_8
@ KEY_NUM_LOCK
@ KEY_PAGE_DOWN
@ KEY_RCONTROL
@ KEY_RSHIFT
@ KEY_DELETE
@ KEY_CAPSLOCK
@ KEY_KEYPAD_4
@ KEY_BACKSLASH
@ KEY_EQUALS
@ KEY_KEYPAD_2
@ KEY_BACK_TICK
ControllerSettings
@ SETTING_TRACKPAD_OUTER_RADIUS_RELEASE_ON_TRANSITION
@ SETTING_MOMENTUM_VERTICAL_DIVISOR
@ SETTING_TRACKPAD_RELATIVE_MODE_TICKS_PER_PIXEL
@ SETTING_MOUSE_ACCELERATION
@ SETTING_TRACKPAD_OUTER_SPIN_RADIUS
@ SETTING_TRACKPAD_DOUBLE_TAP_BEEP_PERIOD
@ SETTING_TRACKPAD_RELATIVE_MODE_DEADZONE
@ SETTING_TRACKPAD_OUTER_SPIN_HORIZONTAL_ONLY
@ SETTING_GYRO_MODE
@ SETTING_TRACKBALL_ROTATION_ANGLE
@ SETTING_USB_DEBUG_MODE
@ SETTING_LEFT_DPAD_REQUIRES_CLICK
@ SETTING_TRACKPAD_DOUBLE_TAP_BEEP_ENABLED
@ SETTING_WIRELESS_PACKET_VERSION
@ SETTING_TRACKPAD_Z_OFF
@ SETTING_MINIMUM_MOMENTUM_VEL
@ SETTING_RIGHT_TRACKPAD_SECONDARY_MODE
@ SETTING_ENABLE_FAST_SCAN
@ SETTING_ENABLE_RAW_JOYSTICK
@ SETTING_COUNT
@ SETTING_RIGHT_GAMEPAD_STICK_ENABLED
@ SETTING_MOMENTUM_DECAY_AMMOUNT
@ SETTING_DPAD_ANGLE_SIN
@ SETTING_RIGHT_TRACKPAD_MODE
@ SETTING_MOMENTUM_MAXIMUM_VELOCITY
@ SETTING_TRACKPAD_Z_ON
@ SETTING_TRACKPAD_Z_OFF_LEFT
@ SETTING_LEFT_TRACKPAD_MODE
@ SETTING_SENSITIVY_SCALE_AMMOUNT
@ SETTING_RADIAL_MODE_ANGLE
@ SETTING_DPAD_ANGLE_COS
@ SETTING_TRACKPAD_DOUBLE_TAP_BEEP_COUNT
@ SETTING_DPAD_DEADZONE
@ SETTING_HAPTIC_INTENSITY
@ SETTING_TRACKPAD_OUTER_SPIN_VEL
@ SETTING_TRACKPAD_RELATIVE_MODE_MAX_VEL
@ SETTING_TRACKPAD_Z_ON_LEFT
@ SETTING_MOUSE_POINTER_ENABLED
@ SETTING_UNUSED_1
@ SETTING_TRACKPAD_OUTER_RADIUS
@ SETTING_ALL
@ SETTING_LED_BASELINE_BRIGHTNESS
@ SETTING_HAPTIC_INCREMENT
@ SETTING_TRACKPAD_RELATIVE_MODE_INVERT_Y
@ SETTING_SLEEP_INACTIVITY_TIMEOUT
@ SETTING_LEFT_GAMEPAD_STICK_ENABLED
@ SETTING_LED_USER_BRIGHTNESS
@ SETTING_RIGHT_DPAD_REQUIRES_CLICK
@ SETTING_MOUSE_SENSITIVITY
@ SETTING_SMOOTH_ABSOLUTE_MOUSE
@ SETTING_STEAMBUTTON_POWEROFF_TIME
@ SETTING_LEFT_TRACKPAD_SECONDARY_MODE
@ SETTING_HAPTIC_INTENSITY_MOUSE_MODE
TrackpadDPadMode
@ TRACKPAD_DPAD_FOUR_WAY_OVERLAP
@ TRACKPAD_GESTURE_KEYBOARD
@ TRACKPAD_DPAD_EIGHT_WAY
@ TRACKPAD_DPAD_FOUR_WAY_DISCRETE
@ TRACKPAD_RADIAL_MODE
@ TRACKPAD_ABSOLUTE_MOUSE
@ TRACKPAD_RELATIVE_MOUSE
@ TRACKPAD_NUM_MODES
@ TRACKPAD_NONE
@ TRACKPAD_ABSOLUTE_DPAD
EWirelessEventType
@ WIRELESS_EVENT_PAIR
@ WIRELESS_EVENT_DISCONNECT
@ WIRELESS_EVENT_CONNECT
@ KEY_RCONTROL_MASK
@ KEY_RSHIFT_MASK
@ KEY_LSHIFT_MASK
@ KEY_LWIN_MASK
@ KEY_RALT_MASK
@ KEY_LALT_MASK
@ KEY_RWIN_MASK
@ KEY_LCONTROL_MASK
@ SETTING_GYRO_MODE_OFF
@ SETTING_GYRO_MODE_STEERING
@ SETTING_GYRO_MODE_SEND_RAW_GYRO
@ SETTING_GYRO_MODE_SEND_ORIENTATION
@ SETTING_GYRO_MODE_TILT
@ SETTING_GYRO_MODE_SEND_RAW_ACCEL
@ GAMEPAD_BTN_SELECT
@ GAMEPAD_BTN_LSTICK_UP
@ GAMEPAD_BTN_RIGHT_JOYSTICK
@ GAMEPAD_BTN_SHOULDER_RIGHT
@ GAMEPAD_BTN_A
@ GAMEPAD_BTN_B
@ GAMEPAD_BTN_RSTICK_RIGHT
@ GAMEPAD_BTN_RSTICK_UP
@ GAMEPAD_BTN_DPAD_UP
@ GAMEPAD_BTN_STEAM
@ GAMEPAD_BTN_TRIGGER_RIGHT
@ GAMEPAD_BTN_START
@ GAMEPAD_BTN_COUNT
@ GAMEPAD_BTN_RSTICK_LEFT
@ GAMEPAD_BTN_RSTICK_DOWN
@ GAMEPAD_BTN_LEFT_JOYSTICK
@ GAMEPAD_BTN_DPAD_DOWN
@ GAMEPAD_BTN_DPAD_LEFT
@ GAMEPAD_BTN_SHOULDER_LEFT
@ GAMEPAD_BTN_Y
@ GAMEPAD_BTN_TRIGGER_LEFT
@ GAMEPAD_BTN_X
@ GAMEPAD_BTN_LSTICK_LEFT
@ GAMEPAD_BTN_DPAD_RIGHT
@ GAMEPAD_BTN_LSTICK_RIGHT
@ GAMEPAD_BTN_LSTICK_DOWN
@ MOUSE_BTN_RIGHT
@ MOUSE_SCROLL_UP
@ MOUSE_BTN_LEFT
@ MOUSE_BTN_FORWARD
@ MOUSE_SCROLL_DOWN
@ MOUSE_BTN_MIDDLE
@ MOUSE_BTN_COUNT
@ MOUSE_BTN_BACK
SettingHapticPulseFlags
@ HAPTIC_PULSE_HIGH_PRIORITY
@ HAPTIC_PULSE_VERY_HIGH_PRIORITY
@ HAPTIC_PULSE_NORMAL