mirror of
https://github.com/hrydgard/ppsspp.git
synced 2025-04-02 11:01:50 -04:00
Added ability to press analog keys lightly using shift button
This commit is contained in:
parent
f6f8d1df8f
commit
c3dfb64839
3 changed files with 33 additions and 10 deletions
|
@ -69,8 +69,9 @@ static const DefMappingStruct defaultQwertyKeyboardKeyMap[] = {
|
|||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_UNTHROTTLE, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE, NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND, NKCODE_DEL},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultAzertyKeyboardKeyMap[] = {
|
||||
|
@ -98,8 +99,9 @@ static const DefMappingStruct defaultAzertyKeyboardKeyMap[] = {
|
|||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_UNTHROTTLE, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE, NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND, NKCODE_DEL},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
static const DefMappingStruct defaultQwertzKeyboardKeyMap[] = {
|
||||
|
@ -127,8 +129,9 @@ static const DefMappingStruct defaultQwertzKeyboardKeyMap[] = {
|
|||
{VIRTKEY_RAPID_FIRE, NKCODE_SHIFT_LEFT},
|
||||
{VIRTKEY_UNTHROTTLE, NKCODE_TAB},
|
||||
{VIRTKEY_SPEED_TOGGLE, NKCODE_GRAVE},
|
||||
{VIRTKEY_PAUSE, NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND, NKCODE_DEL},
|
||||
{VIRTKEY_PAUSE , NKCODE_ESCAPE},
|
||||
{VIRTKEY_REWIND , NKCODE_DEL},
|
||||
{VIRTKEY_ANALOG_LIGHTLY, NKCODE_SHIFT_RIGHT},
|
||||
};
|
||||
|
||||
static const DefMappingStruct default360KeyMap[] = {
|
||||
|
@ -627,6 +630,9 @@ const KeyMap_IntStrPair psp_button_names[] = {
|
|||
{VIRTKEY_AXIS_Y_MIN, "An.Down"},
|
||||
{VIRTKEY_AXIS_X_MIN, "An.Left"},
|
||||
{VIRTKEY_AXIS_X_MAX, "An.Right"},
|
||||
#ifndef MOBILE_DEVICE
|
||||
{ VIRTKEY_ANALOG_LIGHTLY, "Analog limiter" },
|
||||
#endif
|
||||
|
||||
{VIRTKEY_RAPID_FIRE, "RapidFire"},
|
||||
{VIRTKEY_UNTHROTTLE, "Unthrottle"},
|
||||
|
|
|
@ -46,6 +46,7 @@ enum {
|
|||
VIRTKEY_LOAD_STATE = 0x1000e,
|
||||
VIRTKEY_NEXT_SLOT = 0x1000f,
|
||||
VIRTKEY_TOGGLE_FULLSCREEN = 0x10010,
|
||||
VIRTKEY_ANALOG_LIGHTLY = 0x10011,
|
||||
VIRTKEY_LAST,
|
||||
VIRTKEY_COUNT = VIRTKEY_LAST - VIRTKEY_FIRST
|
||||
};
|
||||
|
|
|
@ -288,6 +288,13 @@ void EmuScreen::onVKeyDown(int virtualKeyCode) {
|
|||
setVKeyAnalogY(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_Y_MIN, VIRTKEY_AXIS_RIGHT_Y_MAX);
|
||||
break;
|
||||
|
||||
case VIRTKEY_ANALOG_LIGHTLY:
|
||||
setVKeyAnalogX(CTRL_STICK_LEFT, VIRTKEY_AXIS_X_MIN, VIRTKEY_AXIS_X_MAX);
|
||||
setVKeyAnalogY(CTRL_STICK_LEFT, VIRTKEY_AXIS_Y_MIN, VIRTKEY_AXIS_Y_MAX);
|
||||
setVKeyAnalogX(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_X_MIN, VIRTKEY_AXIS_RIGHT_X_MAX);
|
||||
setVKeyAnalogY(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_Y_MIN, VIRTKEY_AXIS_RIGHT_Y_MAX);
|
||||
break;
|
||||
|
||||
case VIRTKEY_REWIND:
|
||||
if (SaveState::CanRewind()) {
|
||||
SaveState::Rewind();
|
||||
|
@ -336,27 +343,36 @@ void EmuScreen::onVKeyUp(int virtualKeyCode) {
|
|||
setVKeyAnalogY(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_Y_MIN, VIRTKEY_AXIS_RIGHT_Y_MAX);
|
||||
break;
|
||||
|
||||
case VIRTKEY_ANALOG_LIGHTLY:
|
||||
setVKeyAnalogX(CTRL_STICK_LEFT, VIRTKEY_AXIS_X_MIN, VIRTKEY_AXIS_X_MAX);
|
||||
setVKeyAnalogY(CTRL_STICK_LEFT, VIRTKEY_AXIS_Y_MIN, VIRTKEY_AXIS_Y_MAX);
|
||||
setVKeyAnalogX(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_X_MIN, VIRTKEY_AXIS_RIGHT_X_MAX);
|
||||
setVKeyAnalogY(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_Y_MIN, VIRTKEY_AXIS_RIGHT_Y_MAX);
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
inline void EmuScreen::setVKeyAnalogX(int stick, int virtualKeyMin, int virtualKeyMax) {
|
||||
const float value = virtKeys[VIRTKEY_ANALOG_LIGHTLY - VIRTKEY_FIRST] ? 0.5f : 1.0f;
|
||||
float axis = 0.0f;
|
||||
// The down events can repeat, so just trust the virtKeys array.
|
||||
if (virtKeys[virtualKeyMin - VIRTKEY_FIRST])
|
||||
axis -= 1.0f;
|
||||
axis -= value;
|
||||
if (virtKeys[virtualKeyMax - VIRTKEY_FIRST])
|
||||
axis += 1.0f;
|
||||
axis += value;
|
||||
__CtrlSetAnalogX(axis, stick);
|
||||
}
|
||||
|
||||
inline void EmuScreen::setVKeyAnalogY(int stick, int virtualKeyMin, int virtualKeyMax) {
|
||||
const float value = virtKeys[VIRTKEY_ANALOG_LIGHTLY - VIRTKEY_FIRST] ? 0.5f : 1.0f;
|
||||
float axis = 0.0f;
|
||||
if (virtKeys[virtualKeyMin - VIRTKEY_FIRST])
|
||||
axis -= 1.0f;
|
||||
axis -= value;
|
||||
if (virtKeys[virtualKeyMax - VIRTKEY_FIRST])
|
||||
axis += 1.0f;
|
||||
axis += value;
|
||||
__CtrlSetAnalogY(axis, stick);
|
||||
}
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue