mirror of
https://github.com/kunkundi/crossdesk.git
synced 2025-10-26 12:15:34 +08:00
[feat] enable mouse dragging for MacOSx
This commit is contained in:
@@ -28,26 +28,31 @@ int MouseController::SendMouseCommand(RemoteAction remote_action,
|
|||||||
if (remote_action.type == ControlType::mouse) {
|
if (remote_action.type == ControlType::mouse) {
|
||||||
CGEventRef mouse_event = nullptr;
|
CGEventRef mouse_event = nullptr;
|
||||||
CGEventType mouse_type;
|
CGEventType mouse_type;
|
||||||
|
CGMouseButton mouse_button;
|
||||||
CGPoint mouse_point = CGPointMake(mouse_pos_x, mouse_pos_y);
|
CGPoint mouse_point = CGPointMake(mouse_pos_x, mouse_pos_y);
|
||||||
|
|
||||||
switch (remote_action.m.flag) {
|
switch (remote_action.m.flag) {
|
||||||
case MouseFlag::left_down:
|
case MouseFlag::left_down:
|
||||||
mouse_type = kCGEventLeftMouseDown;
|
mouse_type = kCGEventLeftMouseDown;
|
||||||
|
left_dragging_ = true;
|
||||||
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
||||||
kCGMouseButtonLeft);
|
kCGMouseButtonLeft);
|
||||||
break;
|
break;
|
||||||
case MouseFlag::left_up:
|
case MouseFlag::left_up:
|
||||||
mouse_type = kCGEventLeftMouseUp;
|
mouse_type = kCGEventLeftMouseUp;
|
||||||
|
left_dragging_ = false;
|
||||||
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
||||||
kCGMouseButtonLeft);
|
kCGMouseButtonLeft);
|
||||||
break;
|
break;
|
||||||
case MouseFlag::right_down:
|
case MouseFlag::right_down:
|
||||||
mouse_type = kCGEventRightMouseDown;
|
mouse_type = kCGEventRightMouseDown;
|
||||||
|
right_dragging_ = true;
|
||||||
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
||||||
kCGMouseButtonRight);
|
kCGMouseButtonRight);
|
||||||
break;
|
break;
|
||||||
case MouseFlag::right_up:
|
case MouseFlag::right_up:
|
||||||
mouse_type = kCGEventRightMouseUp;
|
mouse_type = kCGEventRightMouseUp;
|
||||||
|
right_dragging_ = false;
|
||||||
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
||||||
kCGMouseButtonRight);
|
kCGMouseButtonRight);
|
||||||
break;
|
break;
|
||||||
@@ -70,9 +75,19 @@ int MouseController::SendMouseCommand(RemoteAction remote_action,
|
|||||||
NULL, kCGScrollEventUnitLine, 2, 0, remote_action.m.s);
|
NULL, kCGScrollEventUnitLine, 2, 0, remote_action.m.s);
|
||||||
break;
|
break;
|
||||||
default:
|
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,
|
mouse_event = CGEventCreateMouseEvent(NULL, mouse_type, mouse_point,
|
||||||
kCGMouseButtonLeft);
|
mouse_button);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,8 @@ class MouseController : public DeviceController {
|
|||||||
|
|
||||||
private:
|
private:
|
||||||
std::vector<DisplayInfo> display_info_list_;
|
std::vector<DisplayInfo> display_info_list_;
|
||||||
|
bool left_dragging_ = false;
|
||||||
|
bool right_dragging_ = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
Reference in New Issue
Block a user