Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
godotengine
GitHub Repository: godotengine/godot
Path: blob/master/thirdparty/sdl/joystick/hidapi/steam/controller_constants.h
9913 views
1
/*
2
Simple DirectMedia Layer
3
Copyright (C) 2021 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)
40
enum ValveControllerPID
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
JUPITER_PID = 0x1205,
52
};
53
54
// This enum contains all of the messages exchanged between the host and the target (only add to this enum and never change the order)
55
enum FeatureReportMessageIDs
56
{
57
ID_SET_DIGITAL_MAPPINGS = 0x80,
58
ID_CLEAR_DIGITAL_MAPPINGS = 0x81,
59
ID_GET_DIGITAL_MAPPINGS = 0x82,
60
ID_GET_ATTRIBUTES_VALUES = 0x83,
61
ID_GET_ATTRIBUTE_LABEL = 0x84,
62
ID_SET_DEFAULT_DIGITAL_MAPPINGS = 0x85,
63
ID_FACTORY_RESET = 0x86,
64
ID_SET_SETTINGS_VALUES = 0x87,
65
ID_CLEAR_SETTINGS_VALUES = 0x88,
66
ID_GET_SETTINGS_VALUES = 0x89,
67
ID_GET_SETTING_LABEL = 0x8A,
68
ID_GET_SETTINGS_MAXS = 0x8B,
69
ID_GET_SETTINGS_DEFAULTS = 0x8C,
70
ID_SET_CONTROLLER_MODE = 0x8D,
71
ID_LOAD_DEFAULT_SETTINGS = 0x8E,
72
ID_TRIGGER_HAPTIC_PULSE = 0x8F,
73
74
ID_TURN_OFF_CONTROLLER = 0x9F,
75
76
ID_GET_DEVICE_INFO = 0xA1,
77
78
ID_CALIBRATE_TRACKPADS = 0xA7,
79
ID_RESERVED_0 = 0xA8,
80
ID_SET_SERIAL_NUMBER = 0xA9,
81
ID_GET_TRACKPAD_CALIBRATION = 0xAA,
82
ID_GET_TRACKPAD_FACTORY_CALIBRATION = 0xAB,
83
ID_GET_TRACKPAD_RAW_DATA = 0xAC,
84
ID_ENABLE_PAIRING = 0xAD,
85
ID_GET_STRING_ATTRIBUTE = 0xAE,
86
ID_RADIO_ERASE_RECORDS = 0xAF,
87
ID_RADIO_WRITE_RECORD = 0xB0,
88
ID_SET_DONGLE_SETTING = 0xB1,
89
ID_DONGLE_DISCONNECT_DEVICE = 0xB2,
90
ID_DONGLE_COMMIT_DEVICE = 0xB3,
91
ID_DONGLE_GET_WIRELESS_STATE = 0xB4,
92
ID_CALIBRATE_GYRO = 0xB5,
93
ID_PLAY_AUDIO = 0xB6,
94
ID_AUDIO_UPDATE_START = 0xB7,
95
ID_AUDIO_UPDATE_DATA = 0xB8,
96
ID_AUDIO_UPDATE_COMPLETE = 0xB9,
97
ID_GET_CHIPID = 0xBA,
98
99
ID_CALIBRATE_JOYSTICK = 0xBF,
100
ID_CALIBRATE_ANALOG_TRIGGERS = 0xC0,
101
ID_SET_AUDIO_MAPPING = 0xC1,
102
ID_CHECK_GYRO_FW_LOAD = 0xC2,
103
ID_CALIBRATE_ANALOG = 0xC3,
104
ID_DONGLE_GET_CONNECTED_SLOTS = 0xC4,
105
106
ID_RESET_IMU = 0xCE,
107
108
// Deck only
109
ID_TRIGGER_HAPTIC_CMD = 0xEA,
110
ID_TRIGGER_RUMBLE_CMD = 0xEB,
111
};
112
113
114
// Enumeration of all wireless dongle events
115
typedef enum WirelessEventTypes
116
{
117
WIRELESS_EVENT_DISCONNECT = 1,
118
WIRELESS_EVENT_CONNECT = 2,
119
WIRELESS_EVENT_PAIR = 3,
120
} EWirelessEventType;
121
122
123
// 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)
124
typedef enum
125
{
126
IO_DIGITAL_BUTTON_NONE = -1,
127
IO_DIGITAL_BUTTON_RIGHT_TRIGGER,
128
IO_DIGITAL_BUTTON_LEFT_TRIGGER,
129
IO_DIGITAL_BUTTON_1,
130
IO_DIGITAL_BUTTON_Y=IO_DIGITAL_BUTTON_1,
131
IO_DIGITAL_BUTTON_2,
132
IO_DIGITAL_BUTTON_B=IO_DIGITAL_BUTTON_2,
133
IO_DIGITAL_BUTTON_3,
134
IO_DIGITAL_BUTTON_X=IO_DIGITAL_BUTTON_3,
135
IO_DIGITAL_BUTTON_4,
136
IO_DIGITAL_BUTTON_A=IO_DIGITAL_BUTTON_4,
137
IO_DIGITAL_BUTTON_RIGHT_BUMPER,
138
IO_DIGITAL_BUTTON_LEFT_BUMPER,
139
IO_DIGITAL_BUTTON_LEFT_JOYSTICK_CLICK,
140
IO_DIGITAL_BUTTON_ESCAPE,
141
IO_DIGITAL_BUTTON_STEAM,
142
IO_DIGITAL_BUTTON_MENU,
143
IO_DIGITAL_STICK_UP,
144
IO_DIGITAL_STICK_DOWN,
145
IO_DIGITAL_STICK_LEFT,
146
IO_DIGITAL_STICK_RIGHT,
147
IO_DIGITAL_TOUCH_1,
148
IO_DIGITAL_BUTTON_UP=IO_DIGITAL_TOUCH_1,
149
IO_DIGITAL_TOUCH_2,
150
IO_DIGITAL_BUTTON_RIGHT=IO_DIGITAL_TOUCH_2,
151
IO_DIGITAL_TOUCH_3,
152
IO_DIGITAL_BUTTON_LEFT=IO_DIGITAL_TOUCH_3,
153
IO_DIGITAL_TOUCH_4,
154
IO_DIGITAL_BUTTON_DOWN=IO_DIGITAL_TOUCH_4,
155
IO_DIGITAL_BUTTON_BACK_LEFT,
156
IO_DIGITAL_BUTTON_BACK_RIGHT,
157
IO_DIGITAL_LEFT_TRACKPAD_N,
158
IO_DIGITAL_LEFT_TRACKPAD_NE,
159
IO_DIGITAL_LEFT_TRACKPAD_E,
160
IO_DIGITAL_LEFT_TRACKPAD_SE,
161
IO_DIGITAL_LEFT_TRACKPAD_S,
162
IO_DIGITAL_LEFT_TRACKPAD_SW,
163
IO_DIGITAL_LEFT_TRACKPAD_W,
164
IO_DIGITAL_LEFT_TRACKPAD_NW,
165
IO_DIGITAL_RIGHT_TRACKPAD_N,
166
IO_DIGITAL_RIGHT_TRACKPAD_NE,
167
IO_DIGITAL_RIGHT_TRACKPAD_E,
168
IO_DIGITAL_RIGHT_TRACKPAD_SE,
169
IO_DIGITAL_RIGHT_TRACKPAD_S,
170
IO_DIGITAL_RIGHT_TRACKPAD_SW,
171
IO_DIGITAL_RIGHT_TRACKPAD_W,
172
IO_DIGITAL_RIGHT_TRACKPAD_NW,
173
IO_DIGITAL_LEFT_TRACKPAD_DOUBLE_TAP,
174
IO_DIGITAL_RIGHT_TRACKPAD_DOUBLE_TAP,
175
IO_DIGITAL_LEFT_TRACKPAD_OUTER_RADIUS,
176
IO_DIGITAL_RIGHT_TRACKPAD_OUTER_RADIUS,
177
IO_DIGITAL_LEFT_TRACKPAD_CLICK,
178
IO_DIGITAL_RIGHT_TRACKPAD_CLICK,
179
IO_DIGITAL_BATTERY_LOW,
180
IO_DIGITAL_LEFT_TRIGGER_THRESHOLD,
181
IO_DIGITAL_RIGHT_TRIGGER_THRESHOLD,
182
IO_DIGITAL_BUTTON_BACK_LEFT2,
183
IO_DIGITAL_BUTTON_BACK_RIGHT2,
184
IO_DIGITAL_BUTTON_ALWAYS_ON,
185
IO_DIGITAL_BUTTON_ANCILLARY_1,
186
IO_DIGITAL_BUTTON_MACRO_0,
187
IO_DIGITAL_BUTTON_MACRO_1,
188
IO_DIGITAL_BUTTON_MACRO_2,
189
IO_DIGITAL_BUTTON_MACRO_3,
190
IO_DIGITAL_BUTTON_MACRO_4,
191
IO_DIGITAL_BUTTON_MACRO_5,
192
IO_DIGITAL_BUTTON_MACRO_6,
193
IO_DIGITAL_BUTTON_MACRO_7,
194
IO_DIGITAL_BUTTON_MACRO_1FINGER,
195
IO_DIGITAL_BUTTON_MACRO_2FINGER,
196
IO_DIGITAL_COUNT
197
} DigitalIO ;
198
199
// 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)
200
typedef enum
201
{
202
IO_ANALOG_LEFT_STICK_X,
203
IO_ANALOG_LEFT_STICK_Y,
204
IO_ANALOG_RIGHT_STICK_X,
205
IO_ANALOG_RIGHT_STICK_Y,
206
IO_ANALOG_LEFT_TRIGGER,
207
IO_ANALOG_RIGHT_TRIGGER,
208
IO_MOUSE1_X,
209
IO_MOUSE1_Y,
210
IO_MOUSE1_Z,
211
IO_ACCEL_X,
212
IO_ACCEL_Y,
213
IO_ACCEL_Z,
214
IO_GYRO_X,
215
IO_GYRO_Y,
216
IO_GYRO_Z,
217
IO_GYRO_QUAT_W,
218
IO_GYRO_QUAT_X,
219
IO_GYRO_QUAT_Y,
220
IO_GYRO_QUAT_Z,
221
IO_GYRO_STEERING_VEC,
222
IO_RAW_TRIGGER_LEFT,
223
IO_RAW_TRIGGER_RIGHT,
224
IO_RAW_JOYSTICK_X,
225
IO_RAW_JOYSTICK_Y,
226
IO_GYRO_TILT_VEC,
227
IO_PRESSURE_LEFT_PAD,
228
IO_PRESSURE_RIGHT_PAD,
229
IO_PRESSURE_LEFT_BUMPER,
230
IO_PRESSURE_RIGHT_BUMPER,
231
IO_PRESSURE_LEFT_GRIP,
232
IO_PRESSURE_RIGHT_GRIP,
233
IO_ANALOG_LEFT_TRIGGER_THRESHOLD,
234
IO_ANALOG_RIGHT_TRIGGER_THRESHOLD,
235
IO_PRESSURE_RIGHT_PAD_THRESHOLD,
236
IO_PRESSURE_LEFT_PAD_THRESHOLD,
237
IO_PRESSURE_RIGHT_BUMPER_THRESHOLD,
238
IO_PRESSURE_LEFT_BUMPER_THRESHOLD,
239
IO_PRESSURE_RIGHT_GRIP_THRESHOLD,
240
IO_PRESSURE_LEFT_GRIP_THRESHOLD,
241
IO_PRESSURE_RIGHT_PAD_RAW,
242
IO_PRESSURE_LEFT_PAD_RAW,
243
IO_PRESSURE_RIGHT_BUMPER_RAW,
244
IO_PRESSURE_LEFT_BUMPER_RAW,
245
IO_PRESSURE_RIGHT_GRIP_RAW,
246
IO_PRESSURE_LEFT_GRIP_RAW,
247
IO_PRESSURE_RIGHT_GRIP2_THRESHOLD,
248
IO_PRESSURE_LEFT_GRIP2_THRESHOLD,
249
IO_PRESSURE_LEFT_GRIP2,
250
IO_PRESSURE_RIGHT_GRIP2,
251
IO_PRESSURE_RIGHT_GRIP2_RAW,
252
IO_PRESSURE_LEFT_GRIP2_RAW,
253
IO_ANALOG_COUNT
254
} AnalogIO;
255
256
257
// Contains list of all types of devices that the controller emulates (only add to this enum and never change the order)
258
enum DeviceTypes
259
{
260
DEVICE_KEYBOARD,
261
DEVICE_MOUSE,
262
DEVICE_GAMEPAD,
263
DEVICE_MODE_ADJUST,
264
DEVICE_COUNT
265
};
266
267
// Scan codes for HID keyboards
268
enum HIDKeyboardKeys
269
{
270
KEY_INVALID,
271
KEY_FIRST = 0x04,
272
KEY_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,
273
KEY_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,
274
KEY_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,
275
KEY_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,
276
KEY_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,
277
KEY_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,
278
KEY_KEYPAD_8, KEY_KEYPAD_9, KEY_KEYPAD_0, KEY_KEYPAD_PERIOD,
279
KEY_LALT,
280
KEY_LSHIFT,
281
KEY_LWIN,
282
KEY_LCONTROL,
283
KEY_RALT,
284
KEY_RSHIFT,
285
KEY_RWIN,
286
KEY_RCONTROL,
287
KEY_VOLUP,
288
KEY_VOLDOWN,
289
KEY_MUTE,
290
KEY_PLAY,
291
KEY_STOP,
292
KEY_NEXT,
293
KEY_PREV,
294
KEY_LAST = KEY_PREV
295
};
296
297
enum ModifierMasks
298
{
299
KEY_LCONTROL_MASK = (1<<0),
300
KEY_LSHIFT_MASK = (1<<1),
301
KEY_LALT_MASK = (1<<2),
302
KEY_LWIN_MASK = (1<<3),
303
KEY_RCONTROL_MASK = (1<<4),
304
KEY_RSHIFT_MASK = (1<<5),
305
KEY_RALT_MASK = (1<<6),
306
KEY_RWIN_MASK = (1<<7)
307
};
308
309
// Standard mouse buttons as specified in the HID mouse spec
310
enum MouseButtons
311
{
312
MOUSE_BTN_LEFT,
313
MOUSE_BTN_RIGHT,
314
MOUSE_BTN_MIDDLE,
315
MOUSE_BTN_BACK,
316
MOUSE_BTN_FORWARD,
317
MOUSE_SCROLL_UP,
318
MOUSE_SCROLL_DOWN,
319
MOUSE_BTN_COUNT
320
};
321
322
// Gamepad buttons
323
enum GamepadButtons
324
{
325
GAMEPAD_BTN_TRIGGER_LEFT=1,
326
GAMEPAD_BTN_TRIGGER_RIGHT,
327
GAMEPAD_BTN_A,
328
GAMEPAD_BTN_B,
329
GAMEPAD_BTN_Y,
330
GAMEPAD_BTN_X,
331
GAMEPAD_BTN_SHOULDER_LEFT,
332
GAMEPAD_BTN_SHOULDER_RIGHT,
333
GAMEPAD_BTN_LEFT_JOYSTICK,
334
GAMEPAD_BTN_RIGHT_JOYSTICK,
335
GAMEPAD_BTN_START,
336
GAMEPAD_BTN_SELECT,
337
GAMEPAD_BTN_STEAM,
338
GAMEPAD_BTN_DPAD_UP,
339
GAMEPAD_BTN_DPAD_DOWN,
340
GAMEPAD_BTN_DPAD_LEFT,
341
GAMEPAD_BTN_DPAD_RIGHT,
342
GAMEPAD_BTN_LSTICK_UP,
343
GAMEPAD_BTN_LSTICK_DOWN,
344
GAMEPAD_BTN_LSTICK_LEFT,
345
GAMEPAD_BTN_LSTICK_RIGHT,
346
GAMEPAD_BTN_RSTICK_UP,
347
GAMEPAD_BTN_RSTICK_DOWN,
348
GAMEPAD_BTN_RSTICK_LEFT,
349
GAMEPAD_BTN_RSTICK_RIGHT,
350
GAMEPAD_BTN_COUNT
351
};
352
353
// Mode adjust
354
enum ModeAdjustModes
355
{
356
MODE_ADJUST_SENSITITY=1,
357
MODE_ADJUST_LEFT_PAD_SECONDARY_MODE,
358
MODE_ADJUST_RIGHT_PAD_SECONDARY_MODE,
359
MODE_ADJUST_COUNT
360
};
361
362
// Read-only attributes of controllers (only add to this enum and never change the order)
363
typedef enum
364
{
365
ATTRIB_UNIQUE_ID,
366
ATTRIB_PRODUCT_ID,
367
ATTRIB_PRODUCT_REVISON, // deprecated
368
ATTRIB_CAPABILITIES = ATTRIB_PRODUCT_REVISON, // intentional aliasing
369
ATTRIB_FIRMWARE_VERSION, // deprecated
370
ATTRIB_FIRMWARE_BUILD_TIME,
371
ATTRIB_RADIO_FIRMWARE_BUILD_TIME,
372
ATTRIB_RADIO_DEVICE_ID0,
373
ATTRIB_RADIO_DEVICE_ID1,
374
ATTRIB_DONGLE_FIRMWARE_BUILD_TIME,
375
ATTRIB_BOARD_REVISION,
376
ATTRIB_BOOTLOADER_BUILD_TIME,
377
ATTRIB_CONNECTION_INTERVAL_IN_US,
378
ATTRIB_COUNT
379
} ControllerAttributes;
380
381
// Read-only string attributes of controllers (only add to this enum and never change the order)
382
typedef enum
383
{
384
ATTRIB_STR_BOARD_SERIAL,
385
ATTRIB_STR_UNIT_SERIAL,
386
ATTRIB_STR_COUNT
387
} ControllerStringAttributes;
388
389
typedef enum
390
{
391
STATUS_CODE_NORMAL,
392
STATUS_CODE_CRITICAL_BATTERY,
393
STATUS_CODE_GYRO_INIT_ERROR,
394
} ControllerStatusEventCodes;
395
396
typedef enum
397
{
398
STATUS_STATE_LOW_BATTERY=0,
399
} ControllerStatusStateFlags;
400
401
typedef enum {
402
TRACKPAD_ABSOLUTE_MOUSE,
403
TRACKPAD_RELATIVE_MOUSE,
404
TRACKPAD_DPAD_FOUR_WAY_DISCRETE,
405
TRACKPAD_DPAD_FOUR_WAY_OVERLAP,
406
TRACKPAD_DPAD_EIGHT_WAY,
407
TRACKPAD_RADIAL_MODE,
408
TRACKPAD_ABSOLUTE_DPAD,
409
TRACKPAD_NONE,
410
TRACKPAD_GESTURE_KEYBOARD,
411
TRACKPAD_NUM_MODES
412
} TrackpadDPadMode;
413
414
// Read-write controller settings (only add to this enum and never change the order)
415
typedef enum
416
{
417
SETTING_MOUSE_SENSITIVITY,
418
SETTING_MOUSE_ACCELERATION,
419
SETTING_TRACKBALL_ROTATION_ANGLE,
420
SETTING_HAPTIC_INTENSITY_UNUSED,
421
SETTING_LEFT_GAMEPAD_STICK_ENABLED,
422
SETTING_RIGHT_GAMEPAD_STICK_ENABLED,
423
SETTING_USB_DEBUG_MODE,
424
SETTING_LEFT_TRACKPAD_MODE,
425
SETTING_RIGHT_TRACKPAD_MODE,
426
SETTING_MOUSE_POINTER_ENABLED,
427
428
// 10
429
SETTING_DPAD_DEADZONE,
430
SETTING_MINIMUM_MOMENTUM_VEL,
431
SETTING_MOMENTUM_DECAY_AMOUNT,
432
SETTING_TRACKPAD_RELATIVE_MODE_TICKS_PER_PIXEL,
433
SETTING_HAPTIC_INCREMENT,
434
SETTING_DPAD_ANGLE_SIN,
435
SETTING_DPAD_ANGLE_COS,
436
SETTING_MOMENTUM_VERTICAL_DIVISOR,
437
SETTING_MOMENTUM_MAXIMUM_VELOCITY,
438
SETTING_TRACKPAD_Z_ON,
439
440
// 20
441
SETTING_TRACKPAD_Z_OFF,
442
SETTING_SENSITIVITY_SCALE_AMOUNT,
443
SETTING_LEFT_TRACKPAD_SECONDARY_MODE,
444
SETTING_RIGHT_TRACKPAD_SECONDARY_MODE,
445
SETTING_SMOOTH_ABSOLUTE_MOUSE,
446
SETTING_STEAMBUTTON_POWEROFF_TIME,
447
SETTING_UNUSED_1,
448
SETTING_TRACKPAD_OUTER_RADIUS,
449
SETTING_TRACKPAD_Z_ON_LEFT,
450
SETTING_TRACKPAD_Z_OFF_LEFT,
451
452
// 30
453
SETTING_TRACKPAD_OUTER_SPIN_VEL,
454
SETTING_TRACKPAD_OUTER_SPIN_RADIUS,
455
SETTING_TRACKPAD_OUTER_SPIN_HORIZONTAL_ONLY,
456
SETTING_TRACKPAD_RELATIVE_MODE_DEADZONE,
457
SETTING_TRACKPAD_RELATIVE_MODE_MAX_VEL,
458
SETTING_TRACKPAD_RELATIVE_MODE_INVERT_Y,
459
SETTING_TRACKPAD_DOUBLE_TAP_BEEP_ENABLED,
460
SETTING_TRACKPAD_DOUBLE_TAP_BEEP_PERIOD,
461
SETTING_TRACKPAD_DOUBLE_TAP_BEEP_COUNT,
462
SETTING_TRACKPAD_OUTER_RADIUS_RELEASE_ON_TRANSITION,
463
464
// 40
465
SETTING_RADIAL_MODE_ANGLE,
466
SETTING_HAPTIC_INTENSITY_MOUSE_MODE,
467
SETTING_LEFT_DPAD_REQUIRES_CLICK,
468
SETTING_RIGHT_DPAD_REQUIRES_CLICK,
469
SETTING_LED_BASELINE_BRIGHTNESS,
470
SETTING_LED_USER_BRIGHTNESS,
471
SETTING_ENABLE_RAW_JOYSTICK,
472
SETTING_ENABLE_FAST_SCAN,
473
SETTING_IMU_MODE,
474
SETTING_WIRELESS_PACKET_VERSION,
475
476
// 50
477
SETTING_SLEEP_INACTIVITY_TIMEOUT,
478
SETTING_TRACKPAD_NOISE_THRESHOLD,
479
SETTING_LEFT_TRACKPAD_CLICK_PRESSURE,
480
SETTING_RIGHT_TRACKPAD_CLICK_PRESSURE,
481
SETTING_LEFT_BUMPER_CLICK_PRESSURE,
482
SETTING_RIGHT_BUMPER_CLICK_PRESSURE,
483
SETTING_LEFT_GRIP_CLICK_PRESSURE,
484
SETTING_RIGHT_GRIP_CLICK_PRESSURE,
485
SETTING_LEFT_GRIP2_CLICK_PRESSURE,
486
SETTING_RIGHT_GRIP2_CLICK_PRESSURE,
487
488
// 60
489
SETTING_PRESSURE_MODE,
490
SETTING_CONTROLLER_TEST_MODE,
491
SETTING_TRIGGER_MODE,
492
SETTING_TRACKPAD_Z_THRESHOLD,
493
SETTING_FRAME_RATE,
494
SETTING_TRACKPAD_FILT_CTRL,
495
SETTING_TRACKPAD_CLIP,
496
SETTING_DEBUG_OUTPUT_SELECT,
497
SETTING_TRIGGER_THRESHOLD_PERCENT,
498
SETTING_TRACKPAD_FREQUENCY_HOPPING,
499
500
// 70
501
SETTING_HAPTICS_ENABLED,
502
SETTING_STEAM_WATCHDOG_ENABLE,
503
SETTING_TIMP_TOUCH_THRESHOLD_ON,
504
SETTING_TIMP_TOUCH_THRESHOLD_OFF,
505
SETTING_FREQ_HOPPING,
506
SETTING_TEST_CONTROL,
507
SETTING_HAPTIC_MASTER_GAIN_DB,
508
SETTING_THUMB_TOUCH_THRESH,
509
SETTING_DEVICE_POWER_STATUS,
510
SETTING_HAPTIC_INTENSITY,
511
512
// 80
513
SETTING_STABILIZER_ENABLED,
514
SETTING_TIMP_MODE_MTE,
515
SETTING_COUNT,
516
517
// This is a special setting value use for callbacks and should not be set/get explicitly.
518
SETTING_ALL=0xFF
519
} ControllerSettings;
520
521
typedef enum
522
{
523
SETTING_DEFAULT,
524
SETTING_MIN,
525
SETTING_MAX,
526
SETTING_DEFAULTMINMAXCOUNT
527
} SettingDefaultMinMax;
528
529
// Bitmask that define which IMU features to enable.
530
typedef enum
531
{
532
SETTING_GYRO_MODE_OFF = 0x0000,
533
SETTING_GYRO_MODE_STEERING = 0x0001,
534
SETTING_GYRO_MODE_TILT = 0x0002,
535
SETTING_GYRO_MODE_SEND_ORIENTATION = 0x0004,
536
SETTING_GYRO_MODE_SEND_RAW_ACCEL = 0x0008,
537
SETTING_GYRO_MODE_SEND_RAW_GYRO = 0x0010,
538
} SettingGyroMode;
539
540
// Bitmask for haptic pulse flags
541
typedef enum
542
{
543
HAPTIC_PULSE_NORMAL = 0x0000,
544
HAPTIC_PULSE_HIGH_PRIORITY = 0x0001,
545
HAPTIC_PULSE_VERY_HIGH_PRIORITY = 0x0002,
546
HAPTIC_PULSE_IGNORE_USER_PREFS = 0x0003,
547
} SettingHapticPulseFlags;
548
549
typedef struct
550
{
551
// default,min,max in this array in that order
552
short defaultminmax[SETTING_DEFAULTMINMAXCOUNT];
553
} SettingValueRange_t;
554
555
// below is from controller_constants.c which should be compiled into any code that uses this
556
extern const SettingValueRange_t g_DefaultSettingValues[SETTING_COUNT];
557
558
// Read-write settings for dongle (only add to this enum and never change the order)
559
typedef enum
560
{
561
DONGLE_SETTING_MOUSE_KEYBOARD_ENABLED,
562
DONGLE_SETTING_COUNT,
563
} DongleSettings;
564
565
typedef enum
566
{
567
AUDIO_STARTUP = 0,
568
AUDIO_SHUTDOWN = 1,
569
AUDIO_PAIR = 2,
570
AUDIO_PAIR_SUCCESS = 3,
571
AUDIO_IDENTIFY = 4,
572
AUDIO_LIZARDMODE = 5,
573
AUDIO_NORMALMODE = 6,
574
575
AUDIO_MAX_SLOT = 15
576
} ControllerAudio;
577
578
#ifdef __cplusplus
579
}
580
#endif
581
582
#endif // _CONTROLLER_CONSTANTS_H
583
584