mirror of https://github.com/adamdruppe/arsd.git
5 button mouse support in sdpy
This commit is contained in:
parent
fccf151159
commit
e711edd4dd
|
@ -2210,6 +2210,10 @@ class NotificationAreaIcon : CapableOfHandlingNativeEvent {
|
||||||
case 3: mb = MouseButton.right; break; // right
|
case 3: mb = MouseButton.right; break; // right
|
||||||
case 4: mb = MouseButton.wheelUp; break; // scroll up
|
case 4: mb = MouseButton.wheelUp; break; // scroll up
|
||||||
case 5: mb = MouseButton.wheelDown; break; // scroll down
|
case 5: mb = MouseButton.wheelDown; break; // scroll down
|
||||||
|
case 6: break; // idk
|
||||||
|
case 7: break; // idk
|
||||||
|
case 8: mouse.button = MouseButton.backButton; break;
|
||||||
|
case 9: mouse.button = MouseButton.forwardButton; break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
if (mb) {
|
if (mb) {
|
||||||
|
@ -5040,6 +5044,8 @@ enum MouseButton : int {
|
||||||
middle = 4, ///
|
middle = 4, ///
|
||||||
wheelUp = 8, ///
|
wheelUp = 8, ///
|
||||||
wheelDown = 16, ///
|
wheelDown = 16, ///
|
||||||
|
backButton = 32, /// often found on the thumb and used for back in browsers
|
||||||
|
forwardButton = 64, /// often found on the thumb and used for forward in browsers
|
||||||
}
|
}
|
||||||
|
|
||||||
version(X11) {
|
version(X11) {
|
||||||
|
@ -6281,7 +6287,7 @@ version(Windows) {
|
||||||
break;
|
break;
|
||||||
case 0x020a /*WM_MOUSEWHEEL*/:
|
case 0x020a /*WM_MOUSEWHEEL*/:
|
||||||
mouse.type = cast(MouseEventType) 1;
|
mouse.type = cast(MouseEventType) 1;
|
||||||
mouse.button = cast(MouseButton) ((HIWORD(wParam) > 120) ? 16 : 8);
|
mouse.button = ((HIWORD(wParam) > 120) ? MouseButton.wheelDown : MouseButton.wheelUp);
|
||||||
mouseEvent();
|
mouseEvent();
|
||||||
break;
|
break;
|
||||||
case WM_MOUSEMOVE:
|
case WM_MOUSEMOVE:
|
||||||
|
@ -6291,39 +6297,52 @@ version(Windows) {
|
||||||
case WM_LBUTTONDOWN:
|
case WM_LBUTTONDOWN:
|
||||||
case WM_LBUTTONDBLCLK:
|
case WM_LBUTTONDBLCLK:
|
||||||
mouse.type = cast(MouseEventType) 1;
|
mouse.type = cast(MouseEventType) 1;
|
||||||
mouse.button = cast(MouseButton) 1;
|
mouse.button = MouseButton.left;
|
||||||
mouse.doubleClick = msg == WM_LBUTTONDBLCLK;
|
mouse.doubleClick = msg == WM_LBUTTONDBLCLK;
|
||||||
mouseEvent();
|
mouseEvent();
|
||||||
break;
|
break;
|
||||||
case WM_LBUTTONUP:
|
case WM_LBUTTONUP:
|
||||||
mouse.type = cast(MouseEventType) 2;
|
mouse.type = cast(MouseEventType) 2;
|
||||||
mouse.button =cast(MouseButton) 1;
|
mouse.button = MouseButton.left;
|
||||||
mouseEvent();
|
mouseEvent();
|
||||||
break;
|
break;
|
||||||
case WM_RBUTTONDOWN:
|
case WM_RBUTTONDOWN:
|
||||||
case WM_RBUTTONDBLCLK:
|
case WM_RBUTTONDBLCLK:
|
||||||
mouse.type = cast(MouseEventType) 1;
|
mouse.type = cast(MouseEventType) 1;
|
||||||
mouse.button =cast(MouseButton) 2;
|
mouse.button = MouseButton.right;
|
||||||
mouse.doubleClick = msg == WM_RBUTTONDBLCLK;
|
mouse.doubleClick = msg == WM_RBUTTONDBLCLK;
|
||||||
mouseEvent();
|
mouseEvent();
|
||||||
break;
|
break;
|
||||||
case WM_RBUTTONUP:
|
case WM_RBUTTONUP:
|
||||||
mouse.type = cast(MouseEventType) 2;
|
mouse.type = cast(MouseEventType) 2;
|
||||||
mouse.button =cast(MouseButton) 2;
|
mouse.button = MouseButton.right;
|
||||||
mouseEvent();
|
mouseEvent();
|
||||||
break;
|
break;
|
||||||
case WM_MBUTTONDOWN:
|
case WM_MBUTTONDOWN:
|
||||||
case WM_MBUTTONDBLCLK:
|
case WM_MBUTTONDBLCLK:
|
||||||
mouse.type = cast(MouseEventType) 1;
|
mouse.type = cast(MouseEventType) 1;
|
||||||
mouse.button = cast(MouseButton) 4;
|
mouse.button = MouseButton.middle;
|
||||||
mouse.doubleClick = msg == WM_MBUTTONDBLCLK;
|
mouse.doubleClick = msg == WM_MBUTTONDBLCLK;
|
||||||
mouseEvent();
|
mouseEvent();
|
||||||
break;
|
break;
|
||||||
case WM_MBUTTONUP:
|
case WM_MBUTTONUP:
|
||||||
mouse.type = cast(MouseEventType) 2;
|
mouse.type = cast(MouseEventType) 2;
|
||||||
mouse.button = cast(MouseButton) 4;
|
mouse.button = MouseButton.middle;
|
||||||
mouseEvent();
|
mouseEvent();
|
||||||
break;
|
break;
|
||||||
|
case WM_XBUTTONDOWN:
|
||||||
|
case WM_XBUTTONDBLCLK:
|
||||||
|
mouse.type = cast(MouseEventType) 1;
|
||||||
|
mouse.button = HIWORD(wParam) == 1 ? MouseButton.backButton : MouseButton.forwardButton;
|
||||||
|
mouse.doubleClick = msg == WM_XBUTTONDBLCLK;
|
||||||
|
mouseEvent();
|
||||||
|
return 1; // MSDN says special treatment here, return TRUE to bypass simulation programs
|
||||||
|
case WM_XBUTTONUP:
|
||||||
|
mouse.type = cast(MouseEventType) 2;
|
||||||
|
mouse.button = HIWORD(wParam) == 1 ? MouseButton.backButton : MouseButton.forwardButton;
|
||||||
|
mouseEvent();
|
||||||
|
return 1; // see: https://msdn.microsoft.com/en-us/library/windows/desktop/ms646246(v=vs.85).aspx
|
||||||
|
|
||||||
default: return 1;
|
default: return 1;
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -8540,6 +8559,10 @@ version(X11) {
|
||||||
case 3: mouse.button = MouseButton.right; break; // right
|
case 3: mouse.button = MouseButton.right; break; // right
|
||||||
case 4: mouse.button = MouseButton.wheelUp; break; // scroll up
|
case 4: mouse.button = MouseButton.wheelUp; break; // scroll up
|
||||||
case 5: mouse.button = MouseButton.wheelDown; break; // scroll down
|
case 5: mouse.button = MouseButton.wheelDown; break; // scroll down
|
||||||
|
case 6: break; // idk
|
||||||
|
case 7: break; // idk
|
||||||
|
case 8: mouse.button = MouseButton.backButton; break;
|
||||||
|
case 9: mouse.button = MouseButton.forwardButton; break;
|
||||||
default:
|
default:
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue