mirror of
https://github.com/hrydgard/ppsspp.git
synced 2026-11-13 17:49:29 +01:00
Merge pull request #2864 from unknownbrackets/keymap
When mapping to an axis, center when both pressed
This commit is contained in:
commit
e978b085a6
3 files changed
+33
-18
No files matched your search
@@ -149,8 +149,8 @@ void __CtrlPeekAnalog(int stick, float *x, float *y)
|
||||
{
|
||||
std::lock_guard<std::recursive_mutex> guard(ctrlMutex);
|
||||
|
||||
*x = (ctrlCurrent.analog[stick][0] - 127.5f) / 127.5f;
|
||||
*y = -(ctrlCurrent.analog[stick][1] - 127.5f) / 127.5f;
|
||||
*x = (ctrlCurrent.analog[stick][CTRL_ANALOG_X] - 127.5f) / 127.5f;
|
||||
*y = -(ctrlCurrent.analog[stick][CTRL_ANALOG_Y] - 127.5f) / 127.5f;
|
||||
}
|
||||
|
||||
|
||||
|
||||
+29
-16
@@ -229,29 +229,21 @@ void EmuScreen::onVKeyDown(int virtualKeyCode) {
|
||||
#endif
|
||||
|
||||
case VIRTKEY_AXIS_X_MIN:
|
||||
__CtrlSetAnalogX(-1.0f, CTRL_STICK_LEFT);
|
||||
break;
|
||||
case VIRTKEY_AXIS_X_MAX:
|
||||
__CtrlSetAnalogX(1.0f, CTRL_STICK_LEFT);
|
||||
setVKeyAnalogX(CTRL_STICK_LEFT, VIRTKEY_AXIS_X_MIN, VIRTKEY_AXIS_X_MAX);
|
||||
break;
|
||||
case VIRTKEY_AXIS_Y_MIN:
|
||||
__CtrlSetAnalogY(-1.0f, CTRL_STICK_LEFT);
|
||||
break;
|
||||
case VIRTKEY_AXIS_Y_MAX:
|
||||
__CtrlSetAnalogY(1.0f, CTRL_STICK_LEFT);
|
||||
setVKeyAnalogY(CTRL_STICK_LEFT, VIRTKEY_AXIS_Y_MIN, VIRTKEY_AXIS_Y_MAX);
|
||||
break;
|
||||
|
||||
case VIRTKEY_AXIS_RIGHT_X_MIN:
|
||||
__CtrlSetAnalogX(-1.0f, CTRL_STICK_RIGHT);
|
||||
break;
|
||||
case VIRTKEY_AXIS_RIGHT_X_MAX:
|
||||
__CtrlSetAnalogX(1.0f, CTRL_STICK_RIGHT);
|
||||
setVKeyAnalogX(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_X_MIN, VIRTKEY_AXIS_RIGHT_X_MAX);
|
||||
break;
|
||||
case VIRTKEY_AXIS_RIGHT_Y_MIN:
|
||||
__CtrlSetAnalogY(-1.0f, CTRL_STICK_RIGHT);
|
||||
break;
|
||||
case VIRTKEY_AXIS_RIGHT_Y_MAX:
|
||||
__CtrlSetAnalogY(1.0f, CTRL_STICK_RIGHT);
|
||||
setVKeyAnalogY(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_Y_MIN, VIRTKEY_AXIS_RIGHT_Y_MAX);
|
||||
break;
|
||||
}
|
||||
}
|
||||
@@ -261,28 +253,49 @@ void EmuScreen::onVKeyUp(int virtualKeyCode) {
|
||||
case VIRTKEY_UNTHROTTLE:
|
||||
PSP_CoreParameter().unthrottle = false;
|
||||
break;
|
||||
|
||||
case VIRTKEY_AXIS_X_MIN:
|
||||
case VIRTKEY_AXIS_X_MAX:
|
||||
__CtrlSetAnalogX(0.0f, CTRL_STICK_LEFT);
|
||||
setVKeyAnalogX(CTRL_STICK_LEFT, VIRTKEY_AXIS_X_MIN, VIRTKEY_AXIS_X_MAX);
|
||||
break;
|
||||
case VIRTKEY_AXIS_Y_MIN:
|
||||
case VIRTKEY_AXIS_Y_MAX:
|
||||
__CtrlSetAnalogY(0.0f, CTRL_STICK_LEFT);
|
||||
setVKeyAnalogY(CTRL_STICK_LEFT, VIRTKEY_AXIS_Y_MIN, VIRTKEY_AXIS_Y_MAX);
|
||||
break;
|
||||
|
||||
case VIRTKEY_AXIS_RIGHT_X_MIN:
|
||||
case VIRTKEY_AXIS_RIGHT_X_MAX:
|
||||
__CtrlSetAnalogX(0.0f, CTRL_STICK_RIGHT);
|
||||
setVKeyAnalogX(CTRL_STICK_RIGHT, VIRTKEY_AXIS_RIGHT_X_MIN, VIRTKEY_AXIS_RIGHT_X_MAX);
|
||||
break;
|
||||
case VIRTKEY_AXIS_RIGHT_Y_MIN:
|
||||
case VIRTKEY_AXIS_RIGHT_Y_MAX:
|
||||
__CtrlSetAnalogY(0.0f, CTRL_STICK_RIGHT);
|
||||
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) {
|
||||
float axis = 0.0f;
|
||||
// The down events can repeat, so just trust the virtKeys array.
|
||||
if (virtKeys[virtualKeyMin - VIRTKEY_FIRST])
|
||||
axis -= 1.0f;
|
||||
if (virtKeys[virtualKeyMax - VIRTKEY_FIRST])
|
||||
axis += 1.0f;
|
||||
__CtrlSetAnalogX(axis, stick);
|
||||
}
|
||||
|
||||
inline void EmuScreen::setVKeyAnalogY(int stick, int virtualKeyMin, int virtualKeyMax) {
|
||||
float axis = 0.0f;
|
||||
if (virtKeys[virtualKeyMin - VIRTKEY_FIRST])
|
||||
axis -= 1.0f;
|
||||
if (virtKeys[virtualKeyMax - VIRTKEY_FIRST])
|
||||
axis += 1.0f;
|
||||
__CtrlSetAnalogY(axis, stick);
|
||||
}
|
||||
|
||||
void EmuScreen::key(const KeyInput &key) {
|
||||
if (key.keyCode == KEYCODE_BACK)
|
||||
pauseTrigger_ = true;
|
||||
|
||||
@@ -49,6 +49,8 @@ private:
|
||||
void pspKey(int pspKeyCode, int flags);
|
||||
void onVKeyDown(int virtualKeyCode);
|
||||
void onVKeyUp(int virtualKeyCode);
|
||||
void setVKeyAnalogX(int stick, int virtualKeyMin, int virtualKeyMax);
|
||||
void setVKeyAnalogY(int stick, int virtualKeyMin, int virtualKeyMax);
|
||||
|
||||
// Something invalid was loaded, don't try to emulate
|
||||
bool invalid_;
|
||||
|
||||
Reference in new issue
Block a user