96 lines
2.3 KiB
C++
96 lines
2.3 KiB
C++
#ifndef RAGEINPUTDEVICE_H
|
|
#define RAGEINPUTDEVICE_H 1
|
|
|
|
#include "SDL_keysym.h"
|
|
#include "RageTimer.h"
|
|
|
|
const int NUM_KEYBOARD_BUTTONS = SDLK_LAST;
|
|
const int NUM_JOYSTICKS = 4;
|
|
const int NUM_JOYSTICK_HATS = 1;
|
|
const int NUM_PUMPS = 2;
|
|
|
|
const int NUM_DEVICE_BUTTONS = NUM_KEYBOARD_BUTTONS;
|
|
|
|
enum InputDevice {
|
|
DEVICE_KEYBOARD = 0,
|
|
DEVICE_JOY1,
|
|
DEVICE_JOY2,
|
|
DEVICE_JOY3,
|
|
DEVICE_JOY4,
|
|
DEVICE_PUMP1,
|
|
DEVICE_PUMP2,
|
|
NUM_INPUT_DEVICES, // leave this at the end
|
|
DEVICE_NONE // means this is NULL
|
|
};
|
|
|
|
// button byte codes for directional pad
|
|
enum JoystickButton {
|
|
JOY_LEFT = 0, JOY_RIGHT,
|
|
JOY_UP, JOY_DOWN,
|
|
JOY_Z_UP, JOY_Z_DOWN,
|
|
JOY_ROT_UP, JOY_ROT_DOWN, JOY_ROT_LEFT, JOY_ROT_RIGHT, JOY_ROT_Z_UP, JOY_ROT_Z_DOWN,
|
|
JOY_HAT_LEFT, JOY_HAT_RIGHT, JOY_HAT_UP, JOY_HAT_DOWN,
|
|
JOY_AUX_1, JOY_AUX_2, JOY_AUX_3, JOY_AUX_4,
|
|
JOY_1, JOY_2, JOY_3, JOY_4, JOY_5, JOY_6, JOY_7, JOY_8, JOY_9, JOY_10,
|
|
JOY_11, JOY_12, JOY_13, JOY_14, JOY_15, JOY_16, JOY_17, JOY_18, JOY_19, JOY_20,
|
|
JOY_21, JOY_22, JOY_23, JOY_24, JOY_25, JOY_26, JOY_27, JOY_28, JOY_29, JOY_30,
|
|
JOY_31, JOY_32,
|
|
NUM_JOYSTICK_BUTTONS // leave this at the end
|
|
};
|
|
|
|
enum PumpButton {
|
|
PUMP_UL,
|
|
PUMP_UR,
|
|
PUMP_MID,
|
|
PUMP_DL,
|
|
PUMP_DR,
|
|
PUMP_ESCAPE,
|
|
|
|
/* These buttons are for slave pads, attached to the first pad; they don't have
|
|
* their own USB device, and they have no escape button. */
|
|
PUMP_2P_UL,
|
|
PUMP_2P_UR,
|
|
PUMP_2P_MID,
|
|
PUMP_2P_DL,
|
|
PUMP_2P_DR,
|
|
NUM_PUMP_PAD_BUTTONS // leave this at the end
|
|
};
|
|
|
|
struct DeviceInput
|
|
{
|
|
public:
|
|
InputDevice device;
|
|
int button;
|
|
RageTimer ts;
|
|
|
|
DeviceInput(): device(DEVICE_NONE), button(-1), ts(RageZeroTimer) { }
|
|
DeviceInput( InputDevice d, int b ): device(d), button(b), ts(RageZeroTimer) { }
|
|
DeviceInput( InputDevice d, int b, const RageTimer &t ):
|
|
device(d), button(b), ts(t) { }
|
|
|
|
bool operator==( const DeviceInput &other )
|
|
{
|
|
return device == other.device && button == other.button;
|
|
};
|
|
|
|
CString GetDescription();
|
|
|
|
CString toString();
|
|
bool fromString( const CString &s );
|
|
|
|
bool IsValid() const { return device != DEVICE_NONE; };
|
|
void MakeInvalid() { device = DEVICE_NONE; };
|
|
|
|
char ToChar() const;
|
|
|
|
bool IsJoystick() const { return DEVICE_JOY1 <= device && device <= DEVICE_JOY4; }
|
|
|
|
static int NumButtons(InputDevice device);
|
|
};
|
|
|
|
#endif
|
|
/*
|
|
* Copyright (c) 2001-2002 by the person(s) listed below. All rights reserved.
|
|
* Chris Danford
|
|
*/
|