diff --git a/Common/KeyMap.cpp b/Common/KeyMap.cpp index 3d84be671a..d5aa320653 100644 --- a/Common/KeyMap.cpp +++ b/Common/KeyMap.cpp @@ -49,6 +49,8 @@ struct DefaultKeyMap { m[KeyDef(DEVICE_ID_KEYBOARD, KEYCODE_L)] = VIRTKEY_AXIS_X_MAX; m[KeyDef(DEVICE_ID_KEYBOARD, KEYCODE_SHIFT_LEFT)] = VIRTKEY_RAPID_FIRE; m[KeyDef(DEVICE_ID_KEYBOARD, KEYCODE_TAB)] = VIRTKEY_UNTHROTTLE; + m[KeyDef(DEVICE_ID_KEYBOARD, KEYCODE_F3)] = VIRTKEY_SPEED_TOGGLE; + m[KeyDef(DEVICE_ID_KEYBOARD, KEYCODE_ESCAPE)] = VIRTKEY_PAUSE; return m; } @@ -68,6 +70,8 @@ struct DefaultKeyMap { m[KeyDef(DEVICE_ID_X360_0, KEYCODE_BUTTON_L1)] = CTRL_LTRIGGER; m[KeyDef(DEVICE_ID_X360_0, KEYCODE_BUTTON_R1)] = CTRL_RTRIGGER; m[KeyDef(DEVICE_ID_X360_0, KEYCODE_BUTTON_R2)] = VIRTKEY_UNTHROTTLE; + m[KeyDef(DEVICE_ID_X360_0, KEYCODE_BUTTON_THUMBR)] = VIRTKEY_PAUSE; + m[KeyDef(DEVICE_ID_X360_0, KEYCODE_BUTTON_L2)] = VIRTKEY_SPEED_TOGGLE; return m; } @@ -242,6 +246,7 @@ const KeyMap_IntStrPair key_names[] = { {KEYCODE_DEL, "Del"}, {KEYCODE_MOVE_HOME, "Home"}, {KEYCODE_MOVE_END, "End"}, + {KEYCODE_ESCAPE, "Esc"}, {KEYCODE_VOLUME_UP, "Vol +"}, {KEYCODE_VOLUME_DOWN, "Vol -"}, @@ -317,6 +322,8 @@ const KeyMap_IntStrPair psp_button_names[] = { {VIRTKEY_RAPID_FIRE, "RapidFire"}, {VIRTKEY_UNTHROTTLE, "Unthrottle"}, + {VIRTKEY_SPEED_TOGGLE, "SpeedToggle"}, + {VIRTKEY_PAUSE, "Pause"}, }; static int psp_button_names_count = sizeof(psp_button_names) / sizeof(psp_button_names[0]); diff --git a/Common/KeyMap.h b/Common/KeyMap.h index 436068d1b5..9c2e2a6448 100644 --- a/Common/KeyMap.h +++ b/Common/KeyMap.h @@ -34,6 +34,8 @@ enum { VIRTKEY_AXIS_Y_MAX = 0x10003, VIRTKEY_RAPID_FIRE = 0x10004, VIRTKEY_UNTHROTTLE = 0x10005, + VIRTKEY_PAUSE = 0x10006, + VIRTKEY_SPEED_TOGGLE = 0x10007, VIRTKEY_LAST, VIRTKEY_COUNT = VIRTKEY_LAST - VIRTKEY_FIRST }; diff --git a/UI/EmuScreen.cpp b/UI/EmuScreen.cpp index 043e6664a3..36147db357 100644 --- a/UI/EmuScreen.cpp +++ b/UI/EmuScreen.cpp @@ -183,10 +183,30 @@ void EmuScreen::touch(const TouchInput &touch) { } void EmuScreen::onVKeyDown(int virtualKeyCode) { + I18NCategory *s = GetI18NCategory("Screen"); + switch (virtualKeyCode) { case VIRTKEY_UNTHROTTLE: PSP_CoreParameter().unthrottle = true; break; + case VIRTKEY_SPEED_TOGGLE: + if (PSP_CoreParameter().fpsLimit == 0) { + PSP_CoreParameter().fpsLimit = 1; + osm.Show(s->T("fixed", "Speed: fixed"), 1.0); + } + else if (PSP_CoreParameter().fpsLimit == 1) { + PSP_CoreParameter().fpsLimit = 2; + osm.Show(s->T("unlimited", "Speed: unlimited!"), 1.0, 0x50E0FF); + } + else if (PSP_CoreParameter().fpsLimit == 2) { + PSP_CoreParameter().fpsLimit = 0; + osm.Show(s->T("standard", "Speed: standard"), 1.0); + } + break; + case VIRTKEY_PAUSE: + fbo_unbind(); + screenManager()->push(new PauseScreen()); + break; } } @@ -320,8 +340,6 @@ void EmuScreen::update(InputState &input) { } #endif - I18NCategory *s = GetI18NCategory("Screen"); - // Apply tilt to left stick if (g_Config.bAccelerometerToAnalogHoriz) { // TODO: Deadzone, etc. @@ -339,23 +357,8 @@ void EmuScreen::update(InputState &input) { PSP_CoreParameter().fpsLimit = 0; } - //Toggle between 3 different states of fpsLimit - if (input.pad_buttons_down & PAD_BUTTON_LEFT_THUMB) { - if (PSP_CoreParameter().fpsLimit == 0) { - PSP_CoreParameter().fpsLimit = 1; - osm.Show(s->T("fixed", "Speed: fixed"), 1.0); - } - else if (PSP_CoreParameter().fpsLimit == 1) { - PSP_CoreParameter().fpsLimit = 2; - osm.Show(s->T("unlimited", "Speed: unlimited!"), 1.0, 0x50E0FF); - } - else if (PSP_CoreParameter().fpsLimit == 2) { - PSP_CoreParameter().fpsLimit = 0; - osm.Show(s->T("standard", "Speed: standard"), 1.0); - } - } - - if (input.pad_buttons_down & (PAD_BUTTON_MENU | PAD_BUTTON_BACK | PAD_BUTTON_RIGHT_THUMB)) { + // This is still here to support the iOS on screen back button. + if (input.pad_buttons_down & (PAD_BUTTON_BACK)) { fbo_unbind(); screenManager()->push(new PauseScreen()); } diff --git a/UI/MenuScreens.cpp b/UI/MenuScreens.cpp index b57ceb9bcc..aa1d0c9d76 100644 --- a/UI/MenuScreens.cpp +++ b/UI/MenuScreens.cpp @@ -1621,7 +1621,11 @@ void KeyMappingScreen::render() { top = 10; left = 750; KeyBtn(left, top, VIRTKEY_UNTHROTTLE); - top += 150; + top += 100; + KeyBtn(left, top, VIRTKEY_SPEED_TOGGLE); + top += 100; + KeyBtn(left, top, VIRTKEY_PAUSE); + top += 100; KeyBtn(left, top, VIRTKEY_RAPID_FIRE); #undef KeyBtn diff --git a/Windows/KeyboardDevice.cpp b/Windows/KeyboardDevice.cpp index 12be2f7b1d..d42a836626 100644 --- a/Windows/KeyboardDevice.cpp +++ b/Windows/KeyboardDevice.cpp @@ -10,13 +10,6 @@ #include "../Core/HLE/sceCtrl.h" #include "WinUser.h" -// TODO: remove. almost not used. -static unsigned int key_pad_map[] = { - VK_ESCAPE,PAD_BUTTON_MENU, // Open PauseScreen - VK_BACK, PAD_BUTTON_BACK, // Toggle PauseScreen & Back Setting Page - VK_F3, PAD_BUTTON_LEFT_THUMB, // Toggle Turbo - VK_PAUSE, PAD_BUTTON_RIGHT_THUMB, // Open PauseScreen -}; // TODO: More keys need to be added, but this is more than // a fair start. @@ -116,23 +109,6 @@ std::map windowsTransTable = InitConstMap (VK_RETURN, KEYCODE_ENTER); int KeyboardDevice::UpdateState(InputState &input_state) { - if (MainWindow::GetHWND() != GetForegroundWindow()) return -1; - - // TODO: remove - for (int i = 0; i < sizeof(key_pad_map)/sizeof(key_pad_map[0]); i += 2) { - if (!GetAsyncKeyState(key_pad_map[i])) { - continue; - } - - switch (key_pad_map[i + 1]) { - case PAD_BUTTON_MENU: - case PAD_BUTTON_BACK: - case PAD_BUTTON_LEFT_THUMB: - case PAD_BUTTON_RIGHT_THUMB: - input_state.pad_buttons |= key_pad_map[i + 1]; - break; - } - } - + // Nothing to do, all done in WM_INPUT return 0; } diff --git a/Windows/XinputDevice.cpp b/Windows/XinputDevice.cpp index 84c2c164b4..528a562410 100644 --- a/Windows/XinputDevice.cpp +++ b/Windows/XinputDevice.cpp @@ -180,8 +180,8 @@ void XinputDevice::ApplyButtons(XINPUT_STATE &state, InputState &input_state) { break; } - u32 downMask = buttons & (~prevState.Gamepad.wButtons); - u32 upMask = (~buttons) & prevState.Gamepad.wButtons; + u32 downMask = buttons & (~prevButtons); + u32 upMask = (~buttons) & prevButtons; prevButtons = buttons; for (int i = 0; i < xinput_ctrl_map_size; i++) {