mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-28 20:06:14 +08:00
72 lines
2.0 KiB
C++
72 lines
2.0 KiB
C++
#include "mouse_controller.h"
|
|
|
|
#include "rd_log.h"
|
|
|
|
MouseController::MouseController() {}
|
|
|
|
MouseController::~MouseController() {}
|
|
|
|
int MouseController::Init(std::vector<DisplayInfo> display_info_list) {
|
|
display_info_list_ = display_info_list;
|
|
|
|
return 0;
|
|
}
|
|
|
|
int MouseController::Destroy() { return 0; }
|
|
|
|
int MouseController::SendMouseCommand(RemoteAction remote_action,
|
|
int display_index) {
|
|
INPUT ip;
|
|
|
|
if (remote_action.type == ControlType::mouse) {
|
|
ip.type = INPUT_MOUSE;
|
|
ip.mi.dx =
|
|
(LONG)(remote_action.m.x * display_info_list_[display_index].width) +
|
|
display_info_list_[display_index].left;
|
|
ip.mi.dy =
|
|
(LONG)(remote_action.m.y * display_info_list_[display_index].height) +
|
|
display_info_list_[display_index].top;
|
|
|
|
switch (remote_action.m.flag) {
|
|
case MouseFlag::left_down:
|
|
ip.mi.dwFlags = MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_ABSOLUTE;
|
|
break;
|
|
case MouseFlag::left_up:
|
|
ip.mi.dwFlags = MOUSEEVENTF_LEFTUP | MOUSEEVENTF_ABSOLUTE;
|
|
break;
|
|
case MouseFlag::right_down:
|
|
ip.mi.dwFlags = MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_ABSOLUTE;
|
|
break;
|
|
case MouseFlag::right_up:
|
|
ip.mi.dwFlags = MOUSEEVENTF_RIGHTUP | MOUSEEVENTF_ABSOLUTE;
|
|
break;
|
|
case MouseFlag::middle_down:
|
|
ip.mi.dwFlags = MOUSEEVENTF_MIDDLEDOWN | MOUSEEVENTF_ABSOLUTE;
|
|
break;
|
|
case MouseFlag::middle_up:
|
|
ip.mi.dwFlags = MOUSEEVENTF_MIDDLEUP | MOUSEEVENTF_ABSOLUTE;
|
|
break;
|
|
case MouseFlag::wheel_vertical:
|
|
ip.mi.dwFlags = MOUSEEVENTF_WHEEL;
|
|
ip.mi.mouseData = remote_action.m.s * 120;
|
|
break;
|
|
case MouseFlag::wheel_horizontal:
|
|
ip.mi.dwFlags = MOUSEEVENTF_HWHEEL;
|
|
ip.mi.mouseData = remote_action.m.s * 120;
|
|
break;
|
|
default:
|
|
ip.mi.dwFlags = MOUSEEVENTF_MOVE;
|
|
break;
|
|
}
|
|
|
|
ip.mi.time = 0;
|
|
|
|
SetCursorPos(ip.mi.dx, ip.mi.dy);
|
|
|
|
if (ip.mi.dwFlags != MOUSEEVENTF_MOVE) {
|
|
SendInput(1, &ip, sizeof(INPUT));
|
|
}
|
|
}
|
|
|
|
return 0;
|
|
} |