mouse forward back support on windows
Signed-off-by: fufesou <shuanglongchen@yeah.net>
This commit is contained in:
parent
adb3450d02
commit
97cf85d1b7
@ -466,15 +466,21 @@ class InputModel {
|
|||||||
evt['y'] = '${y.round()}';
|
evt['y'] = '${y.round()}';
|
||||||
var buttons = '';
|
var buttons = '';
|
||||||
switch (evt['buttons']) {
|
switch (evt['buttons']) {
|
||||||
case 1:
|
case kPrimaryMouseButton:
|
||||||
buttons = 'left';
|
buttons = 'left';
|
||||||
break;
|
break;
|
||||||
case 2:
|
case kSecondaryMouseButton:
|
||||||
buttons = 'right';
|
buttons = 'right';
|
||||||
break;
|
break;
|
||||||
case 4:
|
case kMiddleMouseButton:
|
||||||
buttons = 'wheel';
|
buttons = 'wheel';
|
||||||
break;
|
break;
|
||||||
|
case kBackMouseButton:
|
||||||
|
buttons = 'back';
|
||||||
|
break;
|
||||||
|
case kForwardMouseButton:
|
||||||
|
buttons = 'forward';
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
evt['buttons'] = buttons;
|
evt['buttons'] = buttons;
|
||||||
bind.sessionSendMouse(id: id, msg: json.encode(evt));
|
bind.sessionSendMouse(id: id, msg: json.encode(evt));
|
||||||
|
@ -104,6 +104,10 @@ pub enum MouseButton {
|
|||||||
Middle,
|
Middle,
|
||||||
/// Right mouse button
|
/// Right mouse button
|
||||||
Right,
|
Right,
|
||||||
|
/// Back mouse button
|
||||||
|
Back,
|
||||||
|
/// Forward mouse button
|
||||||
|
Forward,
|
||||||
|
|
||||||
/// Scroll up button
|
/// Scroll up button
|
||||||
ScrollUp,
|
ScrollUp,
|
||||||
|
@ -134,9 +134,15 @@ impl MouseControllable for Enigo {
|
|||||||
MouseButton::Left => MOUSEEVENTF_LEFTDOWN,
|
MouseButton::Left => MOUSEEVENTF_LEFTDOWN,
|
||||||
MouseButton::Middle => MOUSEEVENTF_MIDDLEDOWN,
|
MouseButton::Middle => MOUSEEVENTF_MIDDLEDOWN,
|
||||||
MouseButton::Right => MOUSEEVENTF_RIGHTDOWN,
|
MouseButton::Right => MOUSEEVENTF_RIGHTDOWN,
|
||||||
|
MouseButton::Back => MOUSEEVENTF_XDOWN,
|
||||||
|
MouseButton::Forward => MOUSEEVENTF_XDOWN,
|
||||||
_ => unimplemented!(),
|
_ => unimplemented!(),
|
||||||
},
|
},
|
||||||
0,
|
match button {
|
||||||
|
MouseButton::Back => XBUTTON1 as _,
|
||||||
|
MouseButton::Forward => XBUTTON2 as _,
|
||||||
|
_ => 0,
|
||||||
|
},
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
);
|
);
|
||||||
@ -155,9 +161,15 @@ impl MouseControllable for Enigo {
|
|||||||
MouseButton::Left => MOUSEEVENTF_LEFTUP,
|
MouseButton::Left => MOUSEEVENTF_LEFTUP,
|
||||||
MouseButton::Middle => MOUSEEVENTF_MIDDLEUP,
|
MouseButton::Middle => MOUSEEVENTF_MIDDLEUP,
|
||||||
MouseButton::Right => MOUSEEVENTF_RIGHTUP,
|
MouseButton::Right => MOUSEEVENTF_RIGHTUP,
|
||||||
|
MouseButton::Back => MOUSEEVENTF_XUP,
|
||||||
|
MouseButton::Forward => MOUSEEVENTF_XUP,
|
||||||
_ => unimplemented!(),
|
_ => unimplemented!(),
|
||||||
},
|
},
|
||||||
0,
|
match button {
|
||||||
|
MouseButton::Back => XBUTTON1 as _,
|
||||||
|
MouseButton::Forward => XBUTTON2 as _,
|
||||||
|
_ => 0,
|
||||||
|
},
|
||||||
0,
|
0,
|
||||||
0,
|
0,
|
||||||
);
|
);
|
||||||
|
@ -885,9 +885,11 @@ pub fn session_send_mouse(id: String, msg: String) {
|
|||||||
}
|
}
|
||||||
if let Some(buttons) = m.get("buttons") {
|
if let Some(buttons) = m.get("buttons") {
|
||||||
mask |= match buttons.as_str() {
|
mask |= match buttons.as_str() {
|
||||||
"left" => 1,
|
"left" => 0x01,
|
||||||
"right" => 2,
|
"right" => 0x02,
|
||||||
"wheel" => 4,
|
"wheel" => 0x04,
|
||||||
|
"back" => 0x08,
|
||||||
|
"forward" => 0x10,
|
||||||
_ => 0,
|
_ => 0,
|
||||||
} << 3;
|
} << 3;
|
||||||
}
|
}
|
||||||
|
@ -556,27 +556,39 @@ pub fn handle_mouse_(evt: &MouseEvent) {
|
|||||||
en.mouse_move_to(evt.x, evt.y);
|
en.mouse_move_to(evt.x, evt.y);
|
||||||
}
|
}
|
||||||
1 => match buttons {
|
1 => match buttons {
|
||||||
1 => {
|
0x01 => {
|
||||||
allow_err!(en.mouse_down(MouseButton::Left));
|
allow_err!(en.mouse_down(MouseButton::Left));
|
||||||
}
|
}
|
||||||
2 => {
|
0x02 => {
|
||||||
allow_err!(en.mouse_down(MouseButton::Right));
|
allow_err!(en.mouse_down(MouseButton::Right));
|
||||||
}
|
}
|
||||||
4 => {
|
0x04 => {
|
||||||
allow_err!(en.mouse_down(MouseButton::Middle));
|
allow_err!(en.mouse_down(MouseButton::Middle));
|
||||||
}
|
}
|
||||||
|
0x08 => {
|
||||||
|
allow_err!(en.mouse_down(MouseButton::Back));
|
||||||
|
}
|
||||||
|
0x10 => {
|
||||||
|
allow_err!(en.mouse_down(MouseButton::Forward));
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
},
|
},
|
||||||
2 => match buttons {
|
2 => match buttons {
|
||||||
1 => {
|
0x01 => {
|
||||||
en.mouse_up(MouseButton::Left);
|
en.mouse_up(MouseButton::Left);
|
||||||
}
|
}
|
||||||
2 => {
|
0x02 => {
|
||||||
en.mouse_up(MouseButton::Right);
|
en.mouse_up(MouseButton::Right);
|
||||||
}
|
}
|
||||||
4 => {
|
0x04 => {
|
||||||
en.mouse_up(MouseButton::Middle);
|
en.mouse_up(MouseButton::Middle);
|
||||||
}
|
}
|
||||||
|
0x08 => {
|
||||||
|
en.mouse_up(MouseButton::Back);
|
||||||
|
}
|
||||||
|
0x10 => {
|
||||||
|
en.mouse_up(MouseButton::Forward);
|
||||||
|
}
|
||||||
_ => {}
|
_ => {}
|
||||||
},
|
},
|
||||||
3 | 4 => {
|
3 | 4 => {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user