From e195377d202bf820c44b360fca41d9fb2072a341 Mon Sep 17 00:00:00 2001 From: Henrik Rydgard Date: Wed, 1 Mar 2017 23:40:52 +0100 Subject: [PATCH] Add mousewheel support --- UWP/App.cpp | 6 ++---- UWP/PPSSPP_UWPMain.cpp | 15 +++++++++++++++ UWP/PPSSPP_UWPMain.h | 2 ++ 3 files changed, 19 insertions(+), 4 deletions(-) diff --git a/UWP/App.cpp b/UWP/App.cpp index 823b4c98aa..48cd5997c8 100644 --- a/UWP/App.cpp +++ b/UWP/App.cpp @@ -136,10 +136,8 @@ void App::OnPointerCaptureLost(Windows::UI::Core::CoreWindow^ sender, Windows::U void App::OnPointerWheelChanged(Windows::UI::Core::CoreWindow^ sender, Windows::UI::Core::PointerEventArgs^ args) { int pointerId = args->CurrentPoint->PointerId; - float X = args->CurrentPoint->Position.X; - float Y = args->CurrentPoint->Position.Y; - int64_t timestamp = args->CurrentPoint->Timestamp; - m_main->OnTouchEvent(TOUCH_WHEEL, pointerId, X, Y, timestamp); + float delta = args->CurrentPoint->GetCurrentPoint(args->CurrentPoint->PointerId)->Properties->MouseWheelDelta; + m_main->OnMouseWheel(delta); } // Initializes scene resources, or loads a previously saved app state. diff --git a/UWP/PPSSPP_UWPMain.cpp b/UWP/PPSSPP_UWPMain.cpp index 729762b4c4..a75ffca3f2 100644 --- a/UWP/PPSSPP_UWPMain.cpp +++ b/UWP/PPSSPP_UWPMain.cpp @@ -212,6 +212,21 @@ void PPSSPP_UWPMain::OnKeyUp(int scanCode, Windows::System::VirtualKey virtualKe } } +void PPSSPP_UWPMain::OnMouseWheel(float delta) { + int key = NKCODE_EXT_MOUSEWHEEL_UP; + if (delta < 0) { + key = NKCODE_EXT_MOUSEWHEEL_DOWN; + } else if (delta == 0) { + return; + } + + KeyInput keyInput{}; + keyInput.keyCode = key; + keyInput.deviceId = DEVICE_ID_MOUSE; + keyInput.flags = KEY_DOWN | KEY_UP; + NativeKey(keyInput); +} + void PPSSPP_UWPMain::OnTouchEvent(int touchEvent, int touchId, float x, float y, double timestamp) { // It appears that Windows' touchIds start from 1. Let's fix that. touchId--; diff --git a/UWP/PPSSPP_UWPMain.h b/UWP/PPSSPP_UWPMain.h index d78ac82c73..6a049b9156 100644 --- a/UWP/PPSSPP_UWPMain.h +++ b/UWP/PPSSPP_UWPMain.h @@ -49,6 +49,8 @@ public: void OnTouchEvent(int touchEvent, int touchId, float x, float y, double timestamp); + void OnMouseWheel(float delta); + // Save state fast if we can! void OnSuspend(); void Close();