|
|
@ -15,23 +15,39 @@ constexpr int mouse_axis_y = 1;
|
|
|
|
constexpr int wheel_axis_x = 2;
|
|
|
|
constexpr int wheel_axis_x = 2;
|
|
|
|
constexpr int wheel_axis_y = 3;
|
|
|
|
constexpr int wheel_axis_y = 3;
|
|
|
|
constexpr int motion_wheel_y = 4;
|
|
|
|
constexpr int motion_wheel_y = 4;
|
|
|
|
constexpr int touch_axis_x = 10;
|
|
|
|
|
|
|
|
constexpr int touch_axis_y = 11;
|
|
|
|
|
|
|
|
constexpr PadIdentifier identifier = {
|
|
|
|
constexpr PadIdentifier identifier = {
|
|
|
|
.guid = Common::UUID{},
|
|
|
|
.guid = Common::UUID{},
|
|
|
|
.port = 0,
|
|
|
|
.port = 0,
|
|
|
|
.pad = 0,
|
|
|
|
.pad = 0,
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
constexpr PadIdentifier real_mouse_identifier = {
|
|
|
|
|
|
|
|
.guid = Common::UUID{},
|
|
|
|
|
|
|
|
.port = 1,
|
|
|
|
|
|
|
|
.pad = 0,
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
constexpr PadIdentifier touch_identifier = {
|
|
|
|
|
|
|
|
.guid = Common::UUID{},
|
|
|
|
|
|
|
|
.port = 2,
|
|
|
|
|
|
|
|
.pad = 0,
|
|
|
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
|
|
Mouse::Mouse(std::string input_engine_) : InputEngine(std::move(input_engine_)) {
|
|
|
|
Mouse::Mouse(std::string input_engine_) : InputEngine(std::move(input_engine_)) {
|
|
|
|
PreSetController(identifier);
|
|
|
|
PreSetController(identifier);
|
|
|
|
|
|
|
|
PreSetController(real_mouse_identifier);
|
|
|
|
|
|
|
|
PreSetController(touch_identifier);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// Initialize all mouse axis
|
|
|
|
PreSetAxis(identifier, mouse_axis_x);
|
|
|
|
PreSetAxis(identifier, mouse_axis_x);
|
|
|
|
PreSetAxis(identifier, mouse_axis_y);
|
|
|
|
PreSetAxis(identifier, mouse_axis_y);
|
|
|
|
PreSetAxis(identifier, wheel_axis_x);
|
|
|
|
PreSetAxis(identifier, wheel_axis_x);
|
|
|
|
PreSetAxis(identifier, wheel_axis_y);
|
|
|
|
PreSetAxis(identifier, wheel_axis_y);
|
|
|
|
PreSetAxis(identifier, motion_wheel_y);
|
|
|
|
PreSetAxis(identifier, motion_wheel_y);
|
|
|
|
PreSetAxis(identifier, touch_axis_x);
|
|
|
|
PreSetAxis(real_mouse_identifier, mouse_axis_x);
|
|
|
|
PreSetAxis(identifier, touch_axis_y);
|
|
|
|
PreSetAxis(real_mouse_identifier, mouse_axis_y);
|
|
|
|
|
|
|
|
PreSetAxis(touch_identifier, mouse_axis_x);
|
|
|
|
|
|
|
|
PreSetAxis(touch_identifier, mouse_axis_y);
|
|
|
|
update_thread = std::jthread([this](std::stop_token stop_token) { UpdateThread(stop_token); });
|
|
|
|
update_thread = std::jthread([this](std::stop_token stop_token) { UpdateThread(stop_token); });
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
@ -39,7 +55,7 @@ void Mouse::UpdateThread(std::stop_token stop_token) {
|
|
|
|
Common::SetCurrentThreadName("Mouse");
|
|
|
|
Common::SetCurrentThreadName("Mouse");
|
|
|
|
constexpr int update_time = 10;
|
|
|
|
constexpr int update_time = 10;
|
|
|
|
while (!stop_token.stop_requested()) {
|
|
|
|
while (!stop_token.stop_requested()) {
|
|
|
|
if (Settings::values.mouse_panning && !Settings::values.mouse_enabled) {
|
|
|
|
if (Settings::values.mouse_panning) {
|
|
|
|
// Slow movement by 4%
|
|
|
|
// Slow movement by 4%
|
|
|
|
last_mouse_change *= 0.96f;
|
|
|
|
last_mouse_change *= 0.96f;
|
|
|
|
const float sensitivity =
|
|
|
|
const float sensitivity =
|
|
|
@ -57,17 +73,7 @@ void Mouse::UpdateThread(std::stop_token stop_token) {
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Mouse::MouseMove(int x, int y, f32 touch_x, f32 touch_y, int center_x, int center_y) {
|
|
|
|
void Mouse::Move(int x, int y, int center_x, int center_y) {
|
|
|
|
// If native mouse is enabled just set the screen coordinates
|
|
|
|
|
|
|
|
if (Settings::values.mouse_enabled) {
|
|
|
|
|
|
|
|
SetAxis(identifier, mouse_axis_x, touch_x);
|
|
|
|
|
|
|
|
SetAxis(identifier, mouse_axis_y, touch_y);
|
|
|
|
|
|
|
|
return;
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
SetAxis(identifier, touch_axis_x, touch_x);
|
|
|
|
|
|
|
|
SetAxis(identifier, touch_axis_y, touch_y);
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (Settings::values.mouse_panning) {
|
|
|
|
if (Settings::values.mouse_panning) {
|
|
|
|
auto mouse_change =
|
|
|
|
auto mouse_change =
|
|
|
|
(Common::MakeVec(x, y) - Common::MakeVec(center_x, center_y)).Cast<float>();
|
|
|
|
(Common::MakeVec(x, y) - Common::MakeVec(center_x, center_y)).Cast<float>();
|
|
|
@ -113,20 +119,41 @@ void Mouse::MouseMove(int x, int y, f32 touch_x, f32 touch_y, int center_x, int
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Mouse::PressButton(int x, int y, f32 touch_x, f32 touch_y, MouseButton button) {
|
|
|
|
void Mouse::MouseMove(f32 touch_x, f32 touch_y) {
|
|
|
|
SetAxis(identifier, touch_axis_x, touch_x);
|
|
|
|
SetAxis(real_mouse_identifier, mouse_axis_x, touch_x);
|
|
|
|
SetAxis(identifier, touch_axis_y, touch_y);
|
|
|
|
SetAxis(real_mouse_identifier, mouse_axis_y, touch_y);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Mouse::TouchMove(f32 touch_x, f32 touch_y) {
|
|
|
|
|
|
|
|
SetAxis(touch_identifier, mouse_axis_x, touch_x);
|
|
|
|
|
|
|
|
SetAxis(touch_identifier, mouse_axis_y, touch_y);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Mouse::PressButton(int x, int y, MouseButton button) {
|
|
|
|
SetButton(identifier, static_cast<int>(button), true);
|
|
|
|
SetButton(identifier, static_cast<int>(button), true);
|
|
|
|
|
|
|
|
|
|
|
|
// Set initial analog parameters
|
|
|
|
// Set initial analog parameters
|
|
|
|
mouse_origin = {x, y};
|
|
|
|
mouse_origin = {x, y};
|
|
|
|
last_mouse_position = {x, y};
|
|
|
|
last_mouse_position = {x, y};
|
|
|
|
button_pressed = true;
|
|
|
|
button_pressed = true;
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Mouse::PressMouseButton(MouseButton button) {
|
|
|
|
|
|
|
|
SetButton(real_mouse_identifier, static_cast<int>(button), true);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
void Mouse::PressTouchButton(f32 touch_x, f32 touch_y, MouseButton button) {
|
|
|
|
|
|
|
|
SetAxis(touch_identifier, mouse_axis_x, touch_x);
|
|
|
|
|
|
|
|
SetAxis(touch_identifier, mouse_axis_y, touch_y);
|
|
|
|
|
|
|
|
SetButton(touch_identifier, static_cast<int>(button), true);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
void Mouse::ReleaseButton(MouseButton button) {
|
|
|
|
void Mouse::ReleaseButton(MouseButton button) {
|
|
|
|
SetButton(identifier, static_cast<int>(button), false);
|
|
|
|
SetButton(identifier, static_cast<int>(button), false);
|
|
|
|
|
|
|
|
SetButton(real_mouse_identifier, static_cast<int>(button), false);
|
|
|
|
|
|
|
|
SetButton(touch_identifier, static_cast<int>(button), false);
|
|
|
|
|
|
|
|
|
|
|
|
if (!Settings::values.mouse_panning && !Settings::values.mouse_enabled) {
|
|
|
|
if (!Settings::values.mouse_panning) {
|
|
|
|
SetAxis(identifier, mouse_axis_x, 0);
|
|
|
|
SetAxis(identifier, mouse_axis_x, 0);
|
|
|
|
SetAxis(identifier, mouse_axis_y, 0);
|
|
|
|
SetAxis(identifier, mouse_axis_y, 0);
|
|
|
|
}
|
|
|
|
}
|
|
|
|