mirror of
https://github.com/Shpoike/Quakespasm.git
synced 2025-02-22 03:51:42 +00:00
stick emulate keys
This commit is contained in:
parent
b7fae1a4ee
commit
660f7d4077
2 changed files with 38 additions and 6 deletions
|
@ -557,7 +557,7 @@ static int IN_KeyForControllerButton(SDL_GameControllerButton button)
|
|||
case SDL_CONTROLLER_BUTTON_X: return K_X360_X;
|
||||
case SDL_CONTROLLER_BUTTON_Y: return K_X360_Y;
|
||||
case SDL_CONTROLLER_BUTTON_BACK: return K_X360_BACK;
|
||||
case SDL_CONTROLLER_BUTTON_GUIDE: return K_X360_GUIDE;
|
||||
//case SDL_CONTROLLER_BUTTON_GUIDE: return K_X360_GUIDE;
|
||||
case SDL_CONTROLLER_BUTTON_START: return K_X360_START;
|
||||
case SDL_CONTROLLER_BUTTON_LEFTSTICK: return K_X360_LEFT_THUMB;
|
||||
case SDL_CONTROLLER_BUTTON_RIGHTSTICK: return K_X360_RIGHT_THUMB;
|
||||
|
@ -606,6 +606,22 @@ void IN_ControllerButton(SDL_JoystickID instanceid, SDL_GameControllerButton but
|
|||
Key_Event(emulatedkey, down);
|
||||
}
|
||||
|
||||
#define DOWN_THRESHOLD 0.5
|
||||
#define UP_THRESHOLD 0.25
|
||||
|
||||
void IN_ControllerAxisButton(float oldval, float newval, int negativekey, int positivekey)
|
||||
{
|
||||
if (!(oldval < -DOWN_THRESHOLD) && (newval < -DOWN_THRESHOLD))
|
||||
Key_Event(negativekey, true);
|
||||
else if (!(oldval > -UP_THRESHOLD) && (newval > -UP_THRESHOLD))
|
||||
Key_Event(negativekey, false);
|
||||
|
||||
if (!(oldval > DOWN_THRESHOLD) && (newval > DOWN_THRESHOLD))
|
||||
Key_Event(positivekey, true);
|
||||
else if (!(oldval < UP_THRESHOLD) && (newval < UP_THRESHOLD))
|
||||
Key_Event(positivekey, false);
|
||||
}
|
||||
|
||||
void IN_ControllerAxis(SDL_JoystickID instanceid, SDL_GameControllerAxis axis, Sint16 value)
|
||||
{
|
||||
float axisValue = Sint16ToPlusMinusOne( value );
|
||||
|
@ -618,13 +634,21 @@ void IN_ControllerAxis(SDL_JoystickID instanceid, SDL_GameControllerAxis axis, S
|
|||
{
|
||||
// TODO: swap move/look cvar
|
||||
case SDL_CONTROLLER_AXIS_LEFTX:
|
||||
_rawDualAxis.left.x = axisValue; break;
|
||||
IN_ControllerAxisButton(_rawDualAxis.left.x, axisValue, K_X360_LEFT_THUMB_LEFT, K_X360_LEFT_THUMB_RIGHT);
|
||||
_rawDualAxis.left.x = axisValue;
|
||||
break;
|
||||
case SDL_CONTROLLER_AXIS_LEFTY:
|
||||
_rawDualAxis.left.y = axisValue; break;
|
||||
IN_ControllerAxisButton(_rawDualAxis.left.y, axisValue, K_X360_LEFT_THUMB_DOWN, K_X360_LEFT_THUMB_UP);
|
||||
_rawDualAxis.left.y = axisValue;
|
||||
break;
|
||||
case SDL_CONTROLLER_AXIS_RIGHTX:
|
||||
_rawDualAxis.right.x = axisValue; break;
|
||||
IN_ControllerAxisButton(_rawDualAxis.right.x, axisValue, K_X360_RIGHT_THUMB_LEFT, K_X360_RIGHT_THUMB_RIGHT);
|
||||
_rawDualAxis.right.x = axisValue;
|
||||
break;
|
||||
case SDL_CONTROLLER_AXIS_RIGHTY:
|
||||
_rawDualAxis.right.y = axisValue; break;
|
||||
IN_ControllerAxisButton(_rawDualAxis.right.y, axisValue, K_X360_RIGHT_THUMB_DOWN, K_X360_RIGHT_THUMB_UP);
|
||||
_rawDualAxis.right.y = axisValue;
|
||||
break;
|
||||
|
||||
case SDL_CONTROLLER_AXIS_TRIGGERLEFT:
|
||||
{
|
||||
|
|
|
@ -177,7 +177,15 @@ keyname_t keynames[] =
|
|||
{"X360_Y", K_X360_Y},
|
||||
{"X360_LEFT_TRIGGER", K_X360_LEFT_TRIGGER},
|
||||
{"X360_RIGHT_TRIGGER", K_X360_RIGHT_TRIGGER},
|
||||
{"X360_GUIDE", K_X360_GUIDE},
|
||||
//{"X360_GUIDE", K_X360_GUIDE},
|
||||
{"K_X360_LEFT_THUMB_UP", K_X360_LEFT_THUMB_UP},
|
||||
{"K_X360_LEFT_THUMB_DOWN", K_X360_LEFT_THUMB_DOWN},
|
||||
{"K_X360_LEFT_THUMB_LEFT", K_X360_LEFT_THUMB_LEFT},
|
||||
{"K_X360_LEFT_THUMB_RIGHT", K_X360_LEFT_THUMB_RIGHT},
|
||||
{"K_X360_RIGHT_THUMB_UP", K_X360_RIGHT_THUMB_UP},
|
||||
{"K_X360_RIGHT_THUMB_DOWN", K_X360_RIGHT_THUMB_DOWN},
|
||||
{"K_X360_RIGHT_THUMB_LEFT", K_X360_RIGHT_THUMB_LEFT},
|
||||
{"K_X360_RIGHT_THUMB_RIGHT", K_X360_RIGHT_THUMB_RIGHT},
|
||||
|
||||
{NULL, 0}
|
||||
};
|
||||
|
|
Loading…
Reference in a new issue