mirror of
https://github.com/AquariaOSE/Aquaria.git
synced 2025-08-08 07:09:52 +00:00
Major input handling improvements (#28):
- Support joystick hotplugging - Support axes as buttons (means xbox360 shoulder triggers can be used as buttons) - Show pretty joystick axis & button names if possible - Tabify input actions UI - Add 'mouse' column to input actions UI - Allow to configure form hotkeys - Allow ALL keys, get rid of internal key remapping - SDL2: Use scancodes instead of keycodes since they are layout independent - Allow extra mouse buttons (if present) - Remove "lmbd" & "lmbu" actions in favor of "PrimaryAction" & "SecondaryAction" Makes the configuration less redundant and doesn't send each action twice, which happened if both were set to the same key. - Fix Regressions from prev commits (menu not opening on Esc) Still has a few minor bugs/issues that need to be fixed, but pushing this now before the commit gets too large again.
This commit is contained in:
parent
082dcacad8
commit
a043dd852f
19 changed files with 585 additions and 223 deletions
|
@ -13,6 +13,8 @@
|
|||
#define MAX_JOYSTICK_BTN 32
|
||||
#define MAX_JOYSTICK_AXIS 32
|
||||
|
||||
const static float JOY_AXIS_THRESHOLD = 0.6f;
|
||||
|
||||
class Joystick
|
||||
{
|
||||
public:
|
||||
|
@ -32,20 +34,28 @@ public:
|
|||
void calibrate(Vector &vec, float dead);
|
||||
bool anyButton() const;
|
||||
bool getButton(unsigned id) const { return !!(buttonBitmask & (1u << id)); }
|
||||
float getAxisUncalibrated(int id) const;
|
||||
int getNumAxes() const;
|
||||
int getIndex() const { return stickIndex; }
|
||||
int getInstanceID() const { return instanceID; }
|
||||
inline bool isEnabled() const { return enabled; }
|
||||
|
||||
const char *getAxisName(int axis) const;
|
||||
const char *getButtonName(int btn) const;
|
||||
|
||||
Vector rightStick;
|
||||
|
||||
int s1ax, s1ay, s2ax, s2ay;
|
||||
|
||||
private:
|
||||
void clearAxes();
|
||||
bool enabled;
|
||||
int stickIndex;
|
||||
int instanceID;
|
||||
unsigned buttonBitmask; // FIXME: this should go
|
||||
unsigned buttonBitmask;
|
||||
int numJoyAxes;
|
||||
SDL_Joystick *sdl_joy;
|
||||
float axisRaw[MAX_JOYSTICK_AXIS];
|
||||
|
||||
# ifdef BBGE_BUILD_SDL2
|
||||
SDL_GameController *sdl_controller;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue