diff --git a/src/device_controller/mouse/mac/mouse_controller.cpp b/src/device_controller/mouse/mac/mouse_controller.cpp index 5a5e521..487b9ca 100644 --- a/src/device_controller/mouse/mac/mouse_controller.cpp +++ b/src/device_controller/mouse/mac/mouse_controller.cpp @@ -28,26 +28,31 @@ int MouseController::SendMouseCommand(RemoteAction remote_action, if (remote_action.type == ControlType::mouse) { CGEventRef mouse_event = nullptr; CGEventType mouse_type; + CGMouseButton mouse_button; CGPoint mouse_point = CGPointMake(mouse_pos_x, mouse_pos_y); switch (remote_action.m.flag) { case MouseFlag::left_down: mouse_type = kCGEventLeftMouseDown; + left_dragging_ = true; mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point, kCGMouseButtonLeft); break; case MouseFlag::left_up: mouse_type = kCGEventLeftMouseUp; + left_dragging_ = false; mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point, kCGMouseButtonLeft); break; case MouseFlag::right_down: mouse_type = kCGEventRightMouseDown; + right_dragging_ = true; mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point, kCGMouseButtonRight); break; case MouseFlag::right_up: mouse_type = kCGEventRightMouseUp; + right_dragging_ = false; mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point, kCGMouseButtonRight); break; @@ -70,9 +75,19 @@ int MouseController::SendMouseCommand(RemoteAction remote_action, NULL, kCGScrollEventUnitLine, 2, 0, remote_action.m.s); break; default: - mouse_type = kCGEventMouseMoved; + if (left_dragging_) { + mouse_type = kCGEventLeftMouseDragged; + mouse_button = kCGMouseButtonLeft; + } else if (right_dragging_) { + mouse_type = kCGEventRightMouseDragged; + mouse_button = kCGMouseButtonRight; + } else { + mouse_type = kCGEventMouseMoved; + mouse_button = kCGMouseButtonLeft; + } + mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point, - kCGMouseButtonLeft); + mouse_button); break; } diff --git a/src/device_controller/mouse/mac/mouse_controller.h b/src/device_controller/mouse/mac/mouse_controller.h index b97e327..7f27e4d 100644 --- a/src/device_controller/mouse/mac/mouse_controller.h +++ b/src/device_controller/mouse/mac/mouse_controller.h @@ -23,6 +23,8 @@ class MouseController : public DeviceController { private: std::vector display_info_list_; + bool left_dragging_ = false; + bool right_dragging_ = false; }; #endif \ No newline at end of file