diff options
| author | skidau <skidau@gmail.com> | 2015-03-08 20:34:04 +1100 |
|---|---|---|
| committer | skidau <skidau@gmail.com> | 2015-03-08 20:34:04 +1100 |
| commit | 61591db916da0ab7c599629b98778efd52016538 (patch) | |
| tree | 83236d543ffa540871225f297c6f1952ace81f30 /Source/Core/DolphinWX/Frame.cpp | |
| parent | 7216e94823498339a745e9cdf1125320ea9fca86 (diff) | |
| parent | 3e12787cc8e801c00957f1e5305622ea1eb3423b (diff) | |
Merge pull request #2011 from skidau/hotkey-render-to-main
Fixed the hotkeys so that they work with Render to Main
To set up a mix of keyboard and gamepad hotkeys, follow these steps:
1. In the Hotkey Settings, change the Device to Keyboard
2. Right click the hotkey button that you wish to map to your gamepad
3. In the window that pops up, change the Device to your gamepad
4. Press the Clear button
5. Press Detect and press the button on your gamepad that you want to map
6. Press Select
7. Press OK
To map a combo hotkey, e.g. Shift F5, follow these steps
1. Follow steps 1-4 above
2. Press Detect and the modifier button (e.g. Shift)
3. Press Select
4. Press Detect and the button which isn't the modifier (e.g. F5)
5. Press the "& AND" button
6. Press OK
This patch fixes these issues:
Issue 8307
Issue 8238
Issue 8217
Issue 8216
Issue 8214
Issue 8201
Issue 7652
Diffstat (limited to 'Source/Core/DolphinWX/Frame.cpp')
| -rw-r--r-- | Source/Core/DolphinWX/Frame.cpp | 104 |
1 files changed, 55 insertions, 49 deletions
diff --git a/Source/Core/DolphinWX/Frame.cpp b/Source/Core/DolphinWX/Frame.cpp index 82a089eb7e..46c2d3538d 100644 --- a/Source/Core/DolphinWX/Frame.cpp +++ b/Source/Core/DolphinWX/Frame.cpp @@ -937,7 +937,7 @@ void CFrame::OnGameListCtrl_ItemActivated(wxListEvent& WXUNUSED(event)) } } -static bool IsHotkey(wxKeyEvent &event, int Id, bool keyUp = false) +static bool IsHotkey(wxKeyEvent &event, int id, bool held = false) { if (Core::GetState() == Core::CORE_UNINITIALIZED) return false; @@ -945,10 +945,12 @@ static bool IsHotkey(wxKeyEvent &event, int Id, bool keyUp = false) // Input event hotkey if (event.GetKeyCode() == WXK_NONE) { - return HotkeyManagerEmu::IsPressed(Id, keyUp); + return HotkeyManagerEmu::IsPressed(id, held); } - return false; + return (event.GetKeyCode() != WXK_NONE && + event.GetKeyCode() == SConfig::GetInstance().m_LocalCoreStartupParameter.iHotkey[id] && + event.GetModifiers() == SConfig::GetInstance().m_LocalCoreStartupParameter.iHotkeyModifier[id]); } int GetCmdForHotkey(unsigned int key) @@ -1263,11 +1265,15 @@ const CGameListCtrl *CFrame::GetGameListCtrl() const void CFrame::PollHotkeys(wxTimerEvent& event) { + if (!HotkeyManagerEmu::IsEnabled()) + return; + if (Core::GetState() == Core::CORE_UNINITIALIZED || Core::GetState() == Core::CORE_PAUSE) g_controller_interface.UpdateInput(); if (Core::GetState() != Core::CORE_STOPPING) { + HotkeyManagerEmu::GetStatus(); wxKeyEvent keyevent = 0; if (IsHotkey(keyevent, HK_TOGGLE_THROTTLE)) @@ -1364,24 +1370,26 @@ void CFrame::ParseHotkeys(wxKeyEvent &event) { State::Load(g_saveSlot); } - else if (IsHotkey(event, HK_DECREASE_DEPTH)) + else if (IsHotkey(event, HK_DECREASE_DEPTH, true)) { if (--g_Config.iStereoDepth < 0) g_Config.iStereoDepth = 0; } - else if (IsHotkey(event, HK_INCREASE_DEPTH)) + else if (IsHotkey(event, HK_INCREASE_DEPTH, true)) { if (++g_Config.iStereoDepth > 100) g_Config.iStereoDepth = 100; } - else if (IsHotkey(event, HK_DECREASE_CONVERGENCE)) + else if (IsHotkey(event, HK_DECREASE_CONVERGENCE, true)) { - if (--g_Config.iStereoConvergence < 0) + g_Config.iStereoConvergence -= 5; + if (g_Config.iStereoConvergence < 0) g_Config.iStereoConvergence = 0; } - else if (IsHotkey(event, HK_INCREASE_CONVERGENCE)) + else if (IsHotkey(event, HK_INCREASE_CONVERGENCE, true)) { - if (++g_Config.iStereoConvergence > 500) + g_Config.iStereoConvergence += 5; + if (g_Config.iStereoConvergence > 500) g_Config.iStereoConvergence = 500; } @@ -1398,25 +1406,26 @@ void CFrame::ParseHotkeys(wxKeyEvent &event) } unsigned int i = NUM_HOTKEYS; - if (!SConfig::GetInstance().m_LocalCoreStartupParameter.bRenderToMain || TASInputHasFocus()) + for (i = 0; i < NUM_HOTKEYS; i++) { - for (i = 0; i < NUM_HOTKEYS; i++) + bool held = false; + if (i == HK_FRAME_ADVANCE) + held = true; + + if (IsHotkey(event, i, held)) { - if (IsHotkey(event, i)) + int cmd = GetCmdForHotkey(i); + if (cmd >= 0) { - int cmd = GetCmdForHotkey(i); - if (cmd >= 0) + wxCommandEvent evt(wxEVT_MENU, cmd); + wxMenuItem* item = GetMenuBar()->FindItem(cmd); + if (item && item->IsCheckable()) { - wxCommandEvent evt(wxEVT_MENU, cmd); - wxMenuItem *item = GetMenuBar()->FindItem(cmd); - if (item && item->IsCheckable()) - { - item->wxMenuItemBase::Toggle(); - evt.SetInt(item->IsChecked()); - } - GetEventHandler()->AddPendingEvent(evt); - break; + item->wxMenuItemBase::Toggle(); + evt.SetInt(item->IsChecked()); } + GetEventHandler()->AddPendingEvent(evt); + break; } } } @@ -1436,37 +1445,34 @@ void CFrame::ParseHotkeys(wxKeyEvent &event) // Actually perform the Wiimote connection or disconnection if (Core::GetState() != Core::CORE_UNINITIALIZED) { - if (WiimoteId >= 0) + if (WiimoteId >= 0 && SConfig::GetInstance().m_LocalCoreStartupParameter.bWii) { wxCommandEvent evt; evt.SetId(IDM_CONNECT_WIIMOTE1 + WiimoteId); OnConnectWiimote(evt); } - if (g_Config.bFreeLook) - { - static float debugSpeed = 1.0f; - - if (IsHotkey(event, HK_FREELOOK_DECREASE_SPEED)) - debugSpeed /= 2.0f; - else if (IsHotkey(event, HK_FREELOOK_INCREASE_SPEED)) - debugSpeed *= 2.0f; - else if (IsHotkey(event, HK_FREELOOK_RESET_SPEED)) - debugSpeed = 1.0f; - else if (IsHotkey(event, HK_FREELOOK_UP)) - VertexShaderManager::TranslateView(0.0f, 0.0f, -debugSpeed); - else if (IsHotkey(event, HK_FREELOOK_DOWN)) - VertexShaderManager::TranslateView(0.0f, 0.0f, debugSpeed); - else if (IsHotkey(event, HK_FREELOOK_LEFT)) - VertexShaderManager::TranslateView(debugSpeed, 0.0f); - else if (IsHotkey(event, HK_FREELOOK_RIGHT)) - VertexShaderManager::TranslateView(-debugSpeed, 0.0f); - else if (IsHotkey(event, HK_FREELOOK_ZOOM_IN)) - VertexShaderManager::TranslateView(0.0f, debugSpeed); - else if (IsHotkey(event, HK_FREELOOK_ZOOM_OUT)) - VertexShaderManager::TranslateView(0.0f, -debugSpeed); - else if (IsHotkey(event, HK_FREELOOK_RESET)) - VertexShaderManager::ResetView(); - } + static float debugSpeed = 1.0f; + + if (IsHotkey(event, HK_FREELOOK_DECREASE_SPEED, true)) + debugSpeed /= 1.1f; + else if (IsHotkey(event, HK_FREELOOK_INCREASE_SPEED, true)) + debugSpeed *= 1.1f; + else if (IsHotkey(event, HK_FREELOOK_RESET_SPEED, true)) + debugSpeed = 1.0f; + else if (IsHotkey(event, HK_FREELOOK_UP, true)) + VertexShaderManager::TranslateView(0.0f, 0.0f, -debugSpeed); + else if (IsHotkey(event, HK_FREELOOK_DOWN, true)) + VertexShaderManager::TranslateView(0.0f, 0.0f, debugSpeed); + else if (IsHotkey(event, HK_FREELOOK_LEFT, true)) + VertexShaderManager::TranslateView(debugSpeed, 0.0f); + else if (IsHotkey(event, HK_FREELOOK_RIGHT, true)) + VertexShaderManager::TranslateView(-debugSpeed, 0.0f); + else if (IsHotkey(event, HK_FREELOOK_ZOOM_IN, true)) + VertexShaderManager::TranslateView(0.0f, debugSpeed); + else if (IsHotkey(event, HK_FREELOOK_ZOOM_OUT, true)) + VertexShaderManager::TranslateView(0.0f, -debugSpeed); + else if (IsHotkey(event, HK_FREELOOK_RESET, true)) + VertexShaderManager::ResetView(); } } |
