Path: blob/master/thirdparty/sdl/joystick/hidapi/steam/controller_constants.h
9913 views
/*1Simple DirectMedia Layer2Copyright (C) 2021 Valve Corporation34This software is provided 'as-is', without any express or implied5warranty. In no event will the authors be held liable for any damages6arising from the use of this software.78Permission is granted to anyone to use this software for any purpose,9including commercial applications, and to alter it and redistribute it10freely, subject to the following restrictions:11121. The origin of this software must not be misrepresented; you must not13claim that you wrote the original software. If you use this software14in a product, an acknowledgment in the product documentation would be15appreciated but is not required.162. Altered source versions must be plainly marked as such, and must not be17misrepresented as being the original software.183. This notice may not be removed or altered from any source distribution.19*/2021#ifndef _CONTROLLER_CONSTANTS_22#define _CONTROLLER_CONSTANTS_2324#include "controller_structs.h"2526#ifdef __cplusplus27extern "C" {28#endif2930#define FEATURE_REPORT_SIZE 643132#define VALVE_USB_VID 0x28DE3334// Frame update rate (in ms).35#define FAST_SCAN_INTERVAL 636#define SLOW_SCAN_INTERVAL 93738// Contains each of the USB PIDs for Valve controllers (only add to this enum and never change the order)39enum ValveControllerPID40{41BASTILLE_PID = 0x2202,42CHELL_PID = 0x1101,43D0G_PID = 0x1102,44ELI_PID = 0x1103,45FREEMAN_PID = 0x1104,46D0G_BLE_PID = 0x1105,47D0G_BLE2_PID = 0x1106,48D0GGLE_PID = 0x1142,4950JUPITER_PID = 0x1205,51};5253// This enum contains all of the messages exchanged between the host and the target (only add to this enum and never change the order)54enum FeatureReportMessageIDs55{56ID_SET_DIGITAL_MAPPINGS = 0x80,57ID_CLEAR_DIGITAL_MAPPINGS = 0x81,58ID_GET_DIGITAL_MAPPINGS = 0x82,59ID_GET_ATTRIBUTES_VALUES = 0x83,60ID_GET_ATTRIBUTE_LABEL = 0x84,61ID_SET_DEFAULT_DIGITAL_MAPPINGS = 0x85,62ID_FACTORY_RESET = 0x86,63ID_SET_SETTINGS_VALUES = 0x87,64ID_CLEAR_SETTINGS_VALUES = 0x88,65ID_GET_SETTINGS_VALUES = 0x89,66ID_GET_SETTING_LABEL = 0x8A,67ID_GET_SETTINGS_MAXS = 0x8B,68ID_GET_SETTINGS_DEFAULTS = 0x8C,69ID_SET_CONTROLLER_MODE = 0x8D,70ID_LOAD_DEFAULT_SETTINGS = 0x8E,71ID_TRIGGER_HAPTIC_PULSE = 0x8F,7273ID_TURN_OFF_CONTROLLER = 0x9F,7475ID_GET_DEVICE_INFO = 0xA1,7677ID_CALIBRATE_TRACKPADS = 0xA7,78ID_RESERVED_0 = 0xA8,79ID_SET_SERIAL_NUMBER = 0xA9,80ID_GET_TRACKPAD_CALIBRATION = 0xAA,81ID_GET_TRACKPAD_FACTORY_CALIBRATION = 0xAB,82ID_GET_TRACKPAD_RAW_DATA = 0xAC,83ID_ENABLE_PAIRING = 0xAD,84ID_GET_STRING_ATTRIBUTE = 0xAE,85ID_RADIO_ERASE_RECORDS = 0xAF,86ID_RADIO_WRITE_RECORD = 0xB0,87ID_SET_DONGLE_SETTING = 0xB1,88ID_DONGLE_DISCONNECT_DEVICE = 0xB2,89ID_DONGLE_COMMIT_DEVICE = 0xB3,90ID_DONGLE_GET_WIRELESS_STATE = 0xB4,91ID_CALIBRATE_GYRO = 0xB5,92ID_PLAY_AUDIO = 0xB6,93ID_AUDIO_UPDATE_START = 0xB7,94ID_AUDIO_UPDATE_DATA = 0xB8,95ID_AUDIO_UPDATE_COMPLETE = 0xB9,96ID_GET_CHIPID = 0xBA,9798ID_CALIBRATE_JOYSTICK = 0xBF,99ID_CALIBRATE_ANALOG_TRIGGERS = 0xC0,100ID_SET_AUDIO_MAPPING = 0xC1,101ID_CHECK_GYRO_FW_LOAD = 0xC2,102ID_CALIBRATE_ANALOG = 0xC3,103ID_DONGLE_GET_CONNECTED_SLOTS = 0xC4,104105ID_RESET_IMU = 0xCE,106107// Deck only108ID_TRIGGER_HAPTIC_CMD = 0xEA,109ID_TRIGGER_RUMBLE_CMD = 0xEB,110};111112113// Enumeration of all wireless dongle events114typedef enum WirelessEventTypes115{116WIRELESS_EVENT_DISCONNECT = 1,117WIRELESS_EVENT_CONNECT = 2,118WIRELESS_EVENT_PAIR = 3,119} EWirelessEventType;120121122// 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)123typedef enum124{125IO_DIGITAL_BUTTON_NONE = -1,126IO_DIGITAL_BUTTON_RIGHT_TRIGGER,127IO_DIGITAL_BUTTON_LEFT_TRIGGER,128IO_DIGITAL_BUTTON_1,129IO_DIGITAL_BUTTON_Y=IO_DIGITAL_BUTTON_1,130IO_DIGITAL_BUTTON_2,131IO_DIGITAL_BUTTON_B=IO_DIGITAL_BUTTON_2,132IO_DIGITAL_BUTTON_3,133IO_DIGITAL_BUTTON_X=IO_DIGITAL_BUTTON_3,134IO_DIGITAL_BUTTON_4,135IO_DIGITAL_BUTTON_A=IO_DIGITAL_BUTTON_4,136IO_DIGITAL_BUTTON_RIGHT_BUMPER,137IO_DIGITAL_BUTTON_LEFT_BUMPER,138IO_DIGITAL_BUTTON_LEFT_JOYSTICK_CLICK,139IO_DIGITAL_BUTTON_ESCAPE,140IO_DIGITAL_BUTTON_STEAM,141IO_DIGITAL_BUTTON_MENU,142IO_DIGITAL_STICK_UP,143IO_DIGITAL_STICK_DOWN,144IO_DIGITAL_STICK_LEFT,145IO_DIGITAL_STICK_RIGHT,146IO_DIGITAL_TOUCH_1,147IO_DIGITAL_BUTTON_UP=IO_DIGITAL_TOUCH_1,148IO_DIGITAL_TOUCH_2,149IO_DIGITAL_BUTTON_RIGHT=IO_DIGITAL_TOUCH_2,150IO_DIGITAL_TOUCH_3,151IO_DIGITAL_BUTTON_LEFT=IO_DIGITAL_TOUCH_3,152IO_DIGITAL_TOUCH_4,153IO_DIGITAL_BUTTON_DOWN=IO_DIGITAL_TOUCH_4,154IO_DIGITAL_BUTTON_BACK_LEFT,155IO_DIGITAL_BUTTON_BACK_RIGHT,156IO_DIGITAL_LEFT_TRACKPAD_N,157IO_DIGITAL_LEFT_TRACKPAD_NE,158IO_DIGITAL_LEFT_TRACKPAD_E,159IO_DIGITAL_LEFT_TRACKPAD_SE,160IO_DIGITAL_LEFT_TRACKPAD_S,161IO_DIGITAL_LEFT_TRACKPAD_SW,162IO_DIGITAL_LEFT_TRACKPAD_W,163IO_DIGITAL_LEFT_TRACKPAD_NW,164IO_DIGITAL_RIGHT_TRACKPAD_N,165IO_DIGITAL_RIGHT_TRACKPAD_NE,166IO_DIGITAL_RIGHT_TRACKPAD_E,167IO_DIGITAL_RIGHT_TRACKPAD_SE,168IO_DIGITAL_RIGHT_TRACKPAD_S,169IO_DIGITAL_RIGHT_TRACKPAD_SW,170IO_DIGITAL_RIGHT_TRACKPAD_W,171IO_DIGITAL_RIGHT_TRACKPAD_NW,172IO_DIGITAL_LEFT_TRACKPAD_DOUBLE_TAP,173IO_DIGITAL_RIGHT_TRACKPAD_DOUBLE_TAP,174IO_DIGITAL_LEFT_TRACKPAD_OUTER_RADIUS,175IO_DIGITAL_RIGHT_TRACKPAD_OUTER_RADIUS,176IO_DIGITAL_LEFT_TRACKPAD_CLICK,177IO_DIGITAL_RIGHT_TRACKPAD_CLICK,178IO_DIGITAL_BATTERY_LOW,179IO_DIGITAL_LEFT_TRIGGER_THRESHOLD,180IO_DIGITAL_RIGHT_TRIGGER_THRESHOLD,181IO_DIGITAL_BUTTON_BACK_LEFT2,182IO_DIGITAL_BUTTON_BACK_RIGHT2,183IO_DIGITAL_BUTTON_ALWAYS_ON,184IO_DIGITAL_BUTTON_ANCILLARY_1,185IO_DIGITAL_BUTTON_MACRO_0,186IO_DIGITAL_BUTTON_MACRO_1,187IO_DIGITAL_BUTTON_MACRO_2,188IO_DIGITAL_BUTTON_MACRO_3,189IO_DIGITAL_BUTTON_MACRO_4,190IO_DIGITAL_BUTTON_MACRO_5,191IO_DIGITAL_BUTTON_MACRO_6,192IO_DIGITAL_BUTTON_MACRO_7,193IO_DIGITAL_BUTTON_MACRO_1FINGER,194IO_DIGITAL_BUTTON_MACRO_2FINGER,195IO_DIGITAL_COUNT196} DigitalIO ;197198// 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)199typedef enum200{201IO_ANALOG_LEFT_STICK_X,202IO_ANALOG_LEFT_STICK_Y,203IO_ANALOG_RIGHT_STICK_X,204IO_ANALOG_RIGHT_STICK_Y,205IO_ANALOG_LEFT_TRIGGER,206IO_ANALOG_RIGHT_TRIGGER,207IO_MOUSE1_X,208IO_MOUSE1_Y,209IO_MOUSE1_Z,210IO_ACCEL_X,211IO_ACCEL_Y,212IO_ACCEL_Z,213IO_GYRO_X,214IO_GYRO_Y,215IO_GYRO_Z,216IO_GYRO_QUAT_W,217IO_GYRO_QUAT_X,218IO_GYRO_QUAT_Y,219IO_GYRO_QUAT_Z,220IO_GYRO_STEERING_VEC,221IO_RAW_TRIGGER_LEFT,222IO_RAW_TRIGGER_RIGHT,223IO_RAW_JOYSTICK_X,224IO_RAW_JOYSTICK_Y,225IO_GYRO_TILT_VEC,226IO_PRESSURE_LEFT_PAD,227IO_PRESSURE_RIGHT_PAD,228IO_PRESSURE_LEFT_BUMPER,229IO_PRESSURE_RIGHT_BUMPER,230IO_PRESSURE_LEFT_GRIP,231IO_PRESSURE_RIGHT_GRIP,232IO_ANALOG_LEFT_TRIGGER_THRESHOLD,233IO_ANALOG_RIGHT_TRIGGER_THRESHOLD,234IO_PRESSURE_RIGHT_PAD_THRESHOLD,235IO_PRESSURE_LEFT_PAD_THRESHOLD,236IO_PRESSURE_RIGHT_BUMPER_THRESHOLD,237IO_PRESSURE_LEFT_BUMPER_THRESHOLD,238IO_PRESSURE_RIGHT_GRIP_THRESHOLD,239IO_PRESSURE_LEFT_GRIP_THRESHOLD,240IO_PRESSURE_RIGHT_PAD_RAW,241IO_PRESSURE_LEFT_PAD_RAW,242IO_PRESSURE_RIGHT_BUMPER_RAW,243IO_PRESSURE_LEFT_BUMPER_RAW,244IO_PRESSURE_RIGHT_GRIP_RAW,245IO_PRESSURE_LEFT_GRIP_RAW,246IO_PRESSURE_RIGHT_GRIP2_THRESHOLD,247IO_PRESSURE_LEFT_GRIP2_THRESHOLD,248IO_PRESSURE_LEFT_GRIP2,249IO_PRESSURE_RIGHT_GRIP2,250IO_PRESSURE_RIGHT_GRIP2_RAW,251IO_PRESSURE_LEFT_GRIP2_RAW,252IO_ANALOG_COUNT253} AnalogIO;254255256// Contains list of all types of devices that the controller emulates (only add to this enum and never change the order)257enum DeviceTypes258{259DEVICE_KEYBOARD,260DEVICE_MOUSE,261DEVICE_GAMEPAD,262DEVICE_MODE_ADJUST,263DEVICE_COUNT264};265266// Scan codes for HID keyboards267enum HIDKeyboardKeys268{269KEY_INVALID,270KEY_FIRST = 0x04,271KEY_A = KEY_FIRST, KEY_B, KEY_C, KEY_D, KEY_E, KEY_F, KEY_G, KEY_H, KEY_I, KEY_J, KEY_K, KEY_L,272KEY_M, KEY_N, KEY_O, KEY_P, KEY_Q, KEY_R, KEY_S, KEY_T, KEY_U, KEY_V, KEY_W, KEY_X, KEY_Y, KEY_Z, KEY_1, KEY_2,273KEY_3, KEY_4, KEY_5, KEY_6, KEY_7, KEY_8, KEY_9, KEY_0, KEY_RETURN, KEY_ESCAPE, KEY_BACKSPACE, KEY_TAB, KEY_SPACE, KEY_DASH, KEY_EQUALS, KEY_LEFT_BRACKET,274KEY_RIGHT_BRACKET, KEY_BACKSLASH, KEY_UNUSED1, KEY_SEMICOLON, KEY_SINGLE_QUOTE, KEY_BACK_TICK, KEY_COMMA, KEY_PERIOD, KEY_FORWARD_SLASH, KEY_CAPSLOCK, KEY_F1, KEY_F2, KEY_F3, KEY_F4, KEY_F5, KEY_F6,275KEY_F7, KEY_F8, KEY_F9, KEY_F10, KEY_F11, KEY_F12, KEY_PRINT_SCREEN, KEY_SCROLL_LOCK, KEY_BREAK, KEY_INSERT, KEY_HOME, KEY_PAGE_UP, KEY_DELETE, KEY_END, KEY_PAGE_DOWN, KEY_RIGHT_ARROW,276KEY_LEFT_ARROW, KEY_DOWN_ARROW, KEY_UP_ARROW, KEY_NUM_LOCK, KEY_KEYPAD_FORWARD_SLASH, KEY_KEYPAD_ASTERISK, KEY_KEYPAD_DASH, KEY_KEYPAD_PLUS, KEY_KEYPAD_ENTER, KEY_KEYPAD_1, KEY_KEYPAD_2, KEY_KEYPAD_3, KEY_KEYPAD_4, KEY_KEYPAD_5, KEY_KEYPAD_6, KEY_KEYPAD_7,277KEY_KEYPAD_8, KEY_KEYPAD_9, KEY_KEYPAD_0, KEY_KEYPAD_PERIOD,278KEY_LALT,279KEY_LSHIFT,280KEY_LWIN,281KEY_LCONTROL,282KEY_RALT,283KEY_RSHIFT,284KEY_RWIN,285KEY_RCONTROL,286KEY_VOLUP,287KEY_VOLDOWN,288KEY_MUTE,289KEY_PLAY,290KEY_STOP,291KEY_NEXT,292KEY_PREV,293KEY_LAST = KEY_PREV294};295296enum ModifierMasks297{298KEY_LCONTROL_MASK = (1<<0),299KEY_LSHIFT_MASK = (1<<1),300KEY_LALT_MASK = (1<<2),301KEY_LWIN_MASK = (1<<3),302KEY_RCONTROL_MASK = (1<<4),303KEY_RSHIFT_MASK = (1<<5),304KEY_RALT_MASK = (1<<6),305KEY_RWIN_MASK = (1<<7)306};307308// Standard mouse buttons as specified in the HID mouse spec309enum MouseButtons310{311MOUSE_BTN_LEFT,312MOUSE_BTN_RIGHT,313MOUSE_BTN_MIDDLE,314MOUSE_BTN_BACK,315MOUSE_BTN_FORWARD,316MOUSE_SCROLL_UP,317MOUSE_SCROLL_DOWN,318MOUSE_BTN_COUNT319};320321// Gamepad buttons322enum GamepadButtons323{324GAMEPAD_BTN_TRIGGER_LEFT=1,325GAMEPAD_BTN_TRIGGER_RIGHT,326GAMEPAD_BTN_A,327GAMEPAD_BTN_B,328GAMEPAD_BTN_Y,329GAMEPAD_BTN_X,330GAMEPAD_BTN_SHOULDER_LEFT,331GAMEPAD_BTN_SHOULDER_RIGHT,332GAMEPAD_BTN_LEFT_JOYSTICK,333GAMEPAD_BTN_RIGHT_JOYSTICK,334GAMEPAD_BTN_START,335GAMEPAD_BTN_SELECT,336GAMEPAD_BTN_STEAM,337GAMEPAD_BTN_DPAD_UP,338GAMEPAD_BTN_DPAD_DOWN,339GAMEPAD_BTN_DPAD_LEFT,340GAMEPAD_BTN_DPAD_RIGHT,341GAMEPAD_BTN_LSTICK_UP,342GAMEPAD_BTN_LSTICK_DOWN,343GAMEPAD_BTN_LSTICK_LEFT,344GAMEPAD_BTN_LSTICK_RIGHT,345GAMEPAD_BTN_RSTICK_UP,346GAMEPAD_BTN_RSTICK_DOWN,347GAMEPAD_BTN_RSTICK_LEFT,348GAMEPAD_BTN_RSTICK_RIGHT,349GAMEPAD_BTN_COUNT350};351352// Mode adjust353enum ModeAdjustModes354{355MODE_ADJUST_SENSITITY=1,356MODE_ADJUST_LEFT_PAD_SECONDARY_MODE,357MODE_ADJUST_RIGHT_PAD_SECONDARY_MODE,358MODE_ADJUST_COUNT359};360361// Read-only attributes of controllers (only add to this enum and never change the order)362typedef enum363{364ATTRIB_UNIQUE_ID,365ATTRIB_PRODUCT_ID,366ATTRIB_PRODUCT_REVISON, // deprecated367ATTRIB_CAPABILITIES = ATTRIB_PRODUCT_REVISON, // intentional aliasing368ATTRIB_FIRMWARE_VERSION, // deprecated369ATTRIB_FIRMWARE_BUILD_TIME,370ATTRIB_RADIO_FIRMWARE_BUILD_TIME,371ATTRIB_RADIO_DEVICE_ID0,372ATTRIB_RADIO_DEVICE_ID1,373ATTRIB_DONGLE_FIRMWARE_BUILD_TIME,374ATTRIB_BOARD_REVISION,375ATTRIB_BOOTLOADER_BUILD_TIME,376ATTRIB_CONNECTION_INTERVAL_IN_US,377ATTRIB_COUNT378} ControllerAttributes;379380// Read-only string attributes of controllers (only add to this enum and never change the order)381typedef enum382{383ATTRIB_STR_BOARD_SERIAL,384ATTRIB_STR_UNIT_SERIAL,385ATTRIB_STR_COUNT386} ControllerStringAttributes;387388typedef enum389{390STATUS_CODE_NORMAL,391STATUS_CODE_CRITICAL_BATTERY,392STATUS_CODE_GYRO_INIT_ERROR,393} ControllerStatusEventCodes;394395typedef enum396{397STATUS_STATE_LOW_BATTERY=0,398} ControllerStatusStateFlags;399400typedef enum {401TRACKPAD_ABSOLUTE_MOUSE,402TRACKPAD_RELATIVE_MOUSE,403TRACKPAD_DPAD_FOUR_WAY_DISCRETE,404TRACKPAD_DPAD_FOUR_WAY_OVERLAP,405TRACKPAD_DPAD_EIGHT_WAY,406TRACKPAD_RADIAL_MODE,407TRACKPAD_ABSOLUTE_DPAD,408TRACKPAD_NONE,409TRACKPAD_GESTURE_KEYBOARD,410TRACKPAD_NUM_MODES411} TrackpadDPadMode;412413// Read-write controller settings (only add to this enum and never change the order)414typedef enum415{416SETTING_MOUSE_SENSITIVITY,417SETTING_MOUSE_ACCELERATION,418SETTING_TRACKBALL_ROTATION_ANGLE,419SETTING_HAPTIC_INTENSITY_UNUSED,420SETTING_LEFT_GAMEPAD_STICK_ENABLED,421SETTING_RIGHT_GAMEPAD_STICK_ENABLED,422SETTING_USB_DEBUG_MODE,423SETTING_LEFT_TRACKPAD_MODE,424SETTING_RIGHT_TRACKPAD_MODE,425SETTING_MOUSE_POINTER_ENABLED,426427// 10428SETTING_DPAD_DEADZONE,429SETTING_MINIMUM_MOMENTUM_VEL,430SETTING_MOMENTUM_DECAY_AMOUNT,431SETTING_TRACKPAD_RELATIVE_MODE_TICKS_PER_PIXEL,432SETTING_HAPTIC_INCREMENT,433SETTING_DPAD_ANGLE_SIN,434SETTING_DPAD_ANGLE_COS,435SETTING_MOMENTUM_VERTICAL_DIVISOR,436SETTING_MOMENTUM_MAXIMUM_VELOCITY,437SETTING_TRACKPAD_Z_ON,438439// 20440SETTING_TRACKPAD_Z_OFF,441SETTING_SENSITIVITY_SCALE_AMOUNT,442SETTING_LEFT_TRACKPAD_SECONDARY_MODE,443SETTING_RIGHT_TRACKPAD_SECONDARY_MODE,444SETTING_SMOOTH_ABSOLUTE_MOUSE,445SETTING_STEAMBUTTON_POWEROFF_TIME,446SETTING_UNUSED_1,447SETTING_TRACKPAD_OUTER_RADIUS,448SETTING_TRACKPAD_Z_ON_LEFT,449SETTING_TRACKPAD_Z_OFF_LEFT,450451// 30452SETTING_TRACKPAD_OUTER_SPIN_VEL,453SETTING_TRACKPAD_OUTER_SPIN_RADIUS,454SETTING_TRACKPAD_OUTER_SPIN_HORIZONTAL_ONLY,455SETTING_TRACKPAD_RELATIVE_MODE_DEADZONE,456SETTING_TRACKPAD_RELATIVE_MODE_MAX_VEL,457SETTING_TRACKPAD_RELATIVE_MODE_INVERT_Y,458SETTING_TRACKPAD_DOUBLE_TAP_BEEP_ENABLED,459SETTING_TRACKPAD_DOUBLE_TAP_BEEP_PERIOD,460SETTING_TRACKPAD_DOUBLE_TAP_BEEP_COUNT,461SETTING_TRACKPAD_OUTER_RADIUS_RELEASE_ON_TRANSITION,462463// 40464SETTING_RADIAL_MODE_ANGLE,465SETTING_HAPTIC_INTENSITY_MOUSE_MODE,466SETTING_LEFT_DPAD_REQUIRES_CLICK,467SETTING_RIGHT_DPAD_REQUIRES_CLICK,468SETTING_LED_BASELINE_BRIGHTNESS,469SETTING_LED_USER_BRIGHTNESS,470SETTING_ENABLE_RAW_JOYSTICK,471SETTING_ENABLE_FAST_SCAN,472SETTING_IMU_MODE,473SETTING_WIRELESS_PACKET_VERSION,474475// 50476SETTING_SLEEP_INACTIVITY_TIMEOUT,477SETTING_TRACKPAD_NOISE_THRESHOLD,478SETTING_LEFT_TRACKPAD_CLICK_PRESSURE,479SETTING_RIGHT_TRACKPAD_CLICK_PRESSURE,480SETTING_LEFT_BUMPER_CLICK_PRESSURE,481SETTING_RIGHT_BUMPER_CLICK_PRESSURE,482SETTING_LEFT_GRIP_CLICK_PRESSURE,483SETTING_RIGHT_GRIP_CLICK_PRESSURE,484SETTING_LEFT_GRIP2_CLICK_PRESSURE,485SETTING_RIGHT_GRIP2_CLICK_PRESSURE,486487// 60488SETTING_PRESSURE_MODE,489SETTING_CONTROLLER_TEST_MODE,490SETTING_TRIGGER_MODE,491SETTING_TRACKPAD_Z_THRESHOLD,492SETTING_FRAME_RATE,493SETTING_TRACKPAD_FILT_CTRL,494SETTING_TRACKPAD_CLIP,495SETTING_DEBUG_OUTPUT_SELECT,496SETTING_TRIGGER_THRESHOLD_PERCENT,497SETTING_TRACKPAD_FREQUENCY_HOPPING,498499// 70500SETTING_HAPTICS_ENABLED,501SETTING_STEAM_WATCHDOG_ENABLE,502SETTING_TIMP_TOUCH_THRESHOLD_ON,503SETTING_TIMP_TOUCH_THRESHOLD_OFF,504SETTING_FREQ_HOPPING,505SETTING_TEST_CONTROL,506SETTING_HAPTIC_MASTER_GAIN_DB,507SETTING_THUMB_TOUCH_THRESH,508SETTING_DEVICE_POWER_STATUS,509SETTING_HAPTIC_INTENSITY,510511// 80512SETTING_STABILIZER_ENABLED,513SETTING_TIMP_MODE_MTE,514SETTING_COUNT,515516// This is a special setting value use for callbacks and should not be set/get explicitly.517SETTING_ALL=0xFF518} ControllerSettings;519520typedef enum521{522SETTING_DEFAULT,523SETTING_MIN,524SETTING_MAX,525SETTING_DEFAULTMINMAXCOUNT526} SettingDefaultMinMax;527528// Bitmask that define which IMU features to enable.529typedef enum530{531SETTING_GYRO_MODE_OFF = 0x0000,532SETTING_GYRO_MODE_STEERING = 0x0001,533SETTING_GYRO_MODE_TILT = 0x0002,534SETTING_GYRO_MODE_SEND_ORIENTATION = 0x0004,535SETTING_GYRO_MODE_SEND_RAW_ACCEL = 0x0008,536SETTING_GYRO_MODE_SEND_RAW_GYRO = 0x0010,537} SettingGyroMode;538539// Bitmask for haptic pulse flags540typedef enum541{542HAPTIC_PULSE_NORMAL = 0x0000,543HAPTIC_PULSE_HIGH_PRIORITY = 0x0001,544HAPTIC_PULSE_VERY_HIGH_PRIORITY = 0x0002,545HAPTIC_PULSE_IGNORE_USER_PREFS = 0x0003,546} SettingHapticPulseFlags;547548typedef struct549{550// default,min,max in this array in that order551short defaultminmax[SETTING_DEFAULTMINMAXCOUNT];552} SettingValueRange_t;553554// below is from controller_constants.c which should be compiled into any code that uses this555extern const SettingValueRange_t g_DefaultSettingValues[SETTING_COUNT];556557// Read-write settings for dongle (only add to this enum and never change the order)558typedef enum559{560DONGLE_SETTING_MOUSE_KEYBOARD_ENABLED,561DONGLE_SETTING_COUNT,562} DongleSettings;563564typedef enum565{566AUDIO_STARTUP = 0,567AUDIO_SHUTDOWN = 1,568AUDIO_PAIR = 2,569AUDIO_PAIR_SUCCESS = 3,570AUDIO_IDENTIFY = 4,571AUDIO_LIZARDMODE = 5,572AUDIO_NORMALMODE = 6,573574AUDIO_MAX_SLOT = 15575} ControllerAudio;576577#ifdef __cplusplus578}579#endif580581#endif // _CONTROLLER_CONSTANTS_H582583584