RageInputDevice.h
Go to the documentation of this file.00001
#ifndef RAGEINPUTDEVICE_H
00002 #define RAGEINPUTDEVICE_H 1
00003
00004
#include "RageTimer.h"
00005
00006
00007
00008
00009
00010
00011 enum RageKeySym
00012 {
00013
KEY_SPACE = 32,
00014
KEY_EXCL = 33,
00015
KEY_QUOTE = 34,
00016
KEY_HASH = 35,
00017
KEY_DOLLAR = 36,
00018
KEY_PERCENT = 37,
00019
KEY_AMPER = 38,
00020
KEY_SQUOTE = 39,
00021
KEY_LPAREN = 40,
00022
KEY_RPAREN = 41,
00023
KEY_ASTERISK= 42,
00024
KEY_PLUS = 43,
00025
KEY_COMMA = 44,
00026
KEY_HYPHEN = 45,
00027
KEY_PERIOD = 46,
00028
KEY_SLASH = 47,
00029
KEY_C0 = 48,
00030
KEY_C1 = 49,
00031
KEY_C2 = 50,
00032
KEY_C3 = 51,
00033
KEY_C4 = 52,
00034
KEY_C5 = 53,
00035
KEY_C6 = 54,
00036
KEY_C7 = 55,
00037
KEY_C8 = 56,
00038
KEY_C9 = 57,
00039
KEY_COLON = 58,
00040
KEY_SEMICOLON = 59,
00041
KEY_LANGLE = 60,
00042
KEY_EQUAL = 61,
00043
KEY_RANGLE = 62,
00044
KEY_QUESTION= 63,
00045
KEY_AT = 64,
00046
KEY_CA = 65,
00047
KEY_CB = 66,
00048
KEY_CC = 67,
00049
KEY_CD = 68,
00050
KEY_CE = 69,
00051
KEY_CF = 70,
00052
KEY_CG = 71,
00053
KEY_CH = 72,
00054
KEY_CI = 73,
00055
KEY_CJ = 74,
00056
KEY_CK = 75,
00057
KEY_CL = 76,
00058
KEY_CM = 77,
00059
KEY_CN = 78,
00060
KEY_CO = 79,
00061
KEY_CP = 80,
00062
KEY_CQ = 81,
00063
KEY_CR = 82,
00064
KEY_CS = 83,
00065
KEY_CT = 84,
00066
KEY_CU = 85,
00067
KEY_CV = 86,
00068
KEY_CW = 87,
00069
KEY_CX = 88,
00070
KEY_CY = 89,
00071
KEY_CZ = 90,
00072
KEY_LBRACKET= 91,
00073
KEY_BACKSLASH= 92,
00074
KEY_RBRACKET= 93,
00075
KEY_CARAT = 94,
00076
KEY_UNDERSCORE= 95,
00077
KEY_ACCENT = 96,
00078
KEY_Ca = 97,
00079
KEY_Cb = 98,
00080
KEY_Cc = 99,
00081
KEY_Cd = 100,
00082
KEY_Ce = 101,
00083
KEY_Cf = 102,
00084
KEY_Cg = 103,
00085
KEY_Ch = 104,
00086
KEY_Ci = 105,
00087
KEY_Cj = 106,
00088
KEY_Ck = 107,
00089
KEY_Cl = 108,
00090
KEY_Cm = 109,
00091
KEY_Cn = 110,
00092
KEY_Co = 111,
00093
KEY_Cp = 112,
00094
KEY_Cq = 113,
00095
KEY_Cr = 114,
00096
KEY_Cs = 115,
00097
KEY_Ct = 116,
00098
KEY_Cu = 117,
00099
KEY_Cv = 118,
00100
KEY_Cw = 119,
00101
KEY_Cx = 120,
00102
KEY_Cy = 121,
00103
KEY_Cz = 122,
00104
KEY_LBRACE = 123,
00105
KEY_PIPE = 124,
00106
KEY_RBRACE = 125,
00107
KEY_DEL = 127,
00108
00109
KEY_BACK,
00110
KEY_TAB,
00111
KEY_ENTER,
00112
KEY_PAUSE,
00113
KEY_ESC,
00114
00115
KEY_F1,
00116
KEY_F2,
00117
KEY_F3,
00118
KEY_F4,
00119
KEY_F5,
00120
KEY_F6,
00121
KEY_F7,
00122
KEY_F8,
00123
KEY_F9,
00124
KEY_F10,
00125
KEY_F11,
00126
KEY_F12,
00127
KEY_F13,
00128
KEY_F14,
00129
KEY_F15,
00130
KEY_F16,
00131
00132
KEY_LCTRL,
00133
KEY_RCTRL,
00134
KEY_LSHIFT,
00135
KEY_RSHIFT,
00136
KEY_LALT,
00137
KEY_RALT,
00138
KEY_LMETA,
00139
KEY_RMETA,
00140
KEY_LSUPER,
00141
KEY_RSUPER,
00142
KEY_MENU,
00143
00144
KEY_NUMLOCK,
00145
KEY_SCRLLOCK,
00146
KEY_CAPSLOCK,
00147
KEY_PRTSC,
00148
00149
KEY_UP,
00150
KEY_DOWN,
00151
KEY_LEFT,
00152
KEY_RIGHT,
00153
00154
KEY_INSERT,
00155
KEY_HOME,
00156
KEY_END,
00157
KEY_PGUP,
00158
KEY_PGDN,
00159
00160
KEY_KP_C0,
00161
KEY_KP_C1,
00162
KEY_KP_C2,
00163
KEY_KP_C3,
00164
KEY_KP_C4,
00165
KEY_KP_C5,
00166
KEY_KP_C6,
00167
KEY_KP_C7,
00168
KEY_KP_C8,
00169
KEY_KP_C9,
00170
KEY_KP_SLASH,
00171
KEY_KP_ASTERISK,
00172
KEY_KP_HYPHEN,
00173
KEY_KP_PLUS,
00174
KEY_KP_PERIOD,
00175
KEY_KP_EQUAL,
00176
KEY_KP_ENTER,
00177
00178
KEY_OTHER_0,
00179
00180
KEY_LAST_OTHER=512,
00181
00182
NUM_KEYS,
00183
KEY_INVALID
00184 };
00185
00186 const int NUM_KEYBOARD_BUTTONS =
NUM_KEYS;
00187 const int NUM_JOYSTICKS = 16;
00188 const int NUM_PUMPS = 2;
00189 const int NUM_PARAS = 2;
00190
00191 enum InputDevice {
00192
DEVICE_KEYBOARD = 0,
00193
DEVICE_JOY1,
00194
DEVICE_JOY2,
00195
DEVICE_JOY3,
00196
DEVICE_JOY4,
00197
DEVICE_JOY5,
00198
DEVICE_JOY6,
00199
DEVICE_JOY7,
00200
DEVICE_JOY8,
00201
DEVICE_JOY9,
00202
DEVICE_JOY10,
00203
DEVICE_JOY11,
00204
DEVICE_JOY12,
00205
DEVICE_JOY13,
00206
DEVICE_JOY14,
00207
DEVICE_JOY15,
00208
DEVICE_JOY16,
00209
DEVICE_PUMP1,
00210
DEVICE_PUMP2,
00211
DEVICE_PARA,
00212
NUM_INPUT_DEVICES,
00213
DEVICE_NONE
00214 };
00215
00216
00217
00218
00219
00220 enum JoystickButton
00221 {
00222
00223
JOY_LEFT = 0,
JOY_RIGHT,
00224
JOY_UP,
JOY_DOWN,
00225
00226
00227
JOY_LEFT_2,
JOY_RIGHT_2,
00228
JOY_UP_2,
JOY_DOWN_2,
00229
00230
JOY_Z_UP,
JOY_Z_DOWN,
00231
JOY_ROT_UP,
JOY_ROT_DOWN,
JOY_ROT_LEFT,
JOY_ROT_RIGHT,
JOY_ROT_Z_UP,
JOY_ROT_Z_DOWN,
00232
JOY_HAT_LEFT,
JOY_HAT_RIGHT,
JOY_HAT_UP,
JOY_HAT_DOWN,
00233
JOY_AUX_1,
JOY_AUX_2,
JOY_AUX_3,
JOY_AUX_4,
00234
00235
00236
JOY_1,
JOY_2,
JOY_3,
JOY_4,
JOY_5,
JOY_6,
JOY_7,
JOY_8,
JOY_9,
JOY_10,
00237
JOY_11,
JOY_12,
JOY_13,
JOY_14,
JOY_15,
JOY_16,
JOY_17,
JOY_18,
JOY_19,
JOY_20,
00238
JOY_21,
JOY_22,
JOY_23,
JOY_24,
JOY_25,
JOY_26,
JOY_27,
JOY_28,
JOY_29,
JOY_30,
00239
JOY_31,
JOY_32,
00240
NUM_JOYSTICK_BUTTONS
00241 };
00242
00243 enum PumpButton {
00244
PUMP_UL,
00245
PUMP_UR,
00246
PUMP_MID,
00247
PUMP_DL,
00248
PUMP_DR,
00249
PUMP_ESCAPE,
00250
00251
00252
00253
PUMP_2P_UL,
00254
PUMP_2P_UR,
00255
PUMP_2P_MID,
00256
PUMP_2P_DL,
00257
PUMP_2P_DR,
00258
NUM_PUMP_PAD_BUTTONS
00259 };
00260
00261 enum ParaButton {
00262
PARA_L,
00263
PARA_UL,
00264
PARA_U,
00265
PARA_UR,
00266
PARA_R,
00267
PARA_SELECT,
00268
PARA_START,
00269
PARA_MENU_LEFT,
00270
PARA_MENU_RIGHT,
00271
NUM_PARA_PAD_BUTTONS
00272 };
00273
00274
00275 const int NUM_DEVICE_BUTTONS[
NUM_INPUT_DEVICES] =
00276 {
00277
NUM_KEYBOARD_BUTTONS,
00278
NUM_JOYSTICK_BUTTONS,
00279
NUM_JOYSTICK_BUTTONS,
00280
NUM_JOYSTICK_BUTTONS,
00281
NUM_JOYSTICK_BUTTONS,
00282
NUM_JOYSTICK_BUTTONS,
00283
NUM_JOYSTICK_BUTTONS,
00284
NUM_PUMP_PAD_BUTTONS,
00285
NUM_PUMP_PAD_BUTTONS,
00286
NUM_PARA_PAD_BUTTONS,
00287 };
00288
00289 const int MAX_DEVICE_BUTTONS =
NUM_KEYBOARD_BUTTONS;
00290
00291 struct DeviceInput
00292 {
00293
public:
00294 InputDevice device;
00295 int button;
00296
00297
00298
00299 float level;
00300
00301 RageTimer ts;
00302
00303 DeviceInput():
device(
DEVICE_NONE),
button(-1),
level(0),
ts(
RageZeroTimer) { }
00304 DeviceInput( InputDevice d,
int b,
float l=0 ):
device(d),
button(b),
level(l),
ts(
RageZeroTimer) { }
00305 DeviceInput( InputDevice d,
int b,
float l,
const RageTimer &t ):
00306
device(d),
button(b),
level(l),
ts(t) { }
00307
00308 bool operator==(
const DeviceInput &other )
const
00309
{
00310
00311
00312
return device == other.
device &&
button == other.
button;
00313 };
00314
00315
CString GetDescription();
00316
00317
CString toString();
00318
bool fromString(
const CString &s );
00319
00320 bool IsValid()
const {
return device !=
DEVICE_NONE; };
00321 void MakeInvalid() {
device =
DEVICE_NONE; };
00322
00323
char ToChar() const;
00324
00325 bool IsJoystick()
const {
return DEVICE_JOY1 <=
device &&
device <
DEVICE_JOY1+
NUM_JOYSTICKS; }
00326
00327
static int NumButtons(InputDevice device);
00328 };
00329
00330
#endif
00331
00332
00333
00334
00335
00336
00337
00338
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348
00349
00350
00351
00352
00353
00354
Generated on Thu Jan 27 20:57:28 2005 for StepMania by
1.3.7