Add hotkey for centering mouse in render window.

This commit is contained in:
Admiral H. Curtiss 2022-07-15 20:31:44 +02:00
parent 8f0d702e5f
commit 4d27022d0e
No known key found for this signature in database
GPG Key ID: F051B4C4044F33FB
5 changed files with 21 additions and 0 deletions

View File

@ -35,6 +35,7 @@ constexpr std::array<const char*, NUM_HOTKEYS> s_hotkey_labels{{
_trans("Take Screenshot"),
_trans("Exit"),
_trans("Unlock Cursor"),
_trans("Center Mouse"),
_trans("Activate NetPlay Chat"),
_trans("Control NetPlay Golf Mode"),

View File

@ -29,6 +29,7 @@ enum Hotkey
HK_SCREENSHOT,
HK_EXIT,
HK_UNLOCK_CURSOR,
HK_CENTER_MOUSE,
HK_ACTIVATE_CHAT,
HK_REQUEST_GOLF_CONTROL,

View File

@ -233,6 +233,9 @@ void HotkeyScheduler::Run()
if (IsHotkey(HK_UNLOCK_CURSOR))
emit UnlockCursor();
if (IsHotkey(HK_CENTER_MOUSE, true))
g_controller_interface.SetMouseCenteringRequested(true);
auto& settings = Settings::Instance();
// Toggle Chat

View File

@ -421,6 +421,16 @@ Common::Vec2 ControllerInterface::GetWindowInputScale() const
return {1 / ar, 1.f};
}
void ControllerInterface::SetMouseCenteringRequested(bool center)
{
m_requested_mouse_centering = center;
}
bool ControllerInterface::IsMouseCenteringRequested() const
{
return m_requested_mouse_centering.load();
}
// Register a callback to be called when a device is added or removed (as from the input backends'
// hotplug thread), or when devices are refreshed
// Returns a handle for later removing the callback.

View File

@ -106,6 +106,11 @@ public:
// Inputs based on window coordinates should be multiplied by this.
Common::Vec2 GetWindowInputScale() const;
// Request that the mouse cursor should be centered in the render window at the next opportunity.
void SetMouseCenteringRequested(bool center);
bool IsMouseCenteringRequested() const;
HotplugCallbackHandle RegisterDevicesChangedCallback(std::function<void(void)> callback);
void UnregisterDevicesChangedCallback(const HotplugCallbackHandle& handle);
void InvokeDevicesChangedCallbacks() const;
@ -127,6 +132,7 @@ private:
std::atomic<int> m_populating_devices_counter;
WindowSystemInfo m_wsi;
std::atomic<float> m_aspect_ratio_adjustment = 1;
std::atomic<bool> m_requested_mouse_centering = false;
};
namespace ciface