From 2b0c903afeb7b175062306288cc15ba8947c5d04 Mon Sep 17 00:00:00 2001 From: Koichiro IWAO Date: Sun, 13 Nov 2022 02:50:00 +0900 Subject: [PATCH] vnc: add mouse button 6, 7, 8 support --- vnc/vnc.c | 25 ++++++++++++++++++++++++- 1 file changed, 24 insertions(+), 1 deletion(-) diff --git a/vnc/vnc.c b/vnc/vnc.c index ff008ca6..e6b84ace 100644 --- a/vnc/vnc.c +++ b/vnc/vnc.c @@ -547,7 +547,12 @@ lib_mod_event(struct vnc *v, int msg, long param1, long param2, } } } - else if (msg >= 100 && msg <= 110) /* mouse events */ + /* mouse events + * + * VNC supports up to 8 mouse buttons because mouse buttons are + * represented by 7 bits bitmask + */ + else if (msg >= WM_MOUSEMOVE && msg <= WM_BUTTON8DOWN) /* 100 to 116 */ { switch (msg) { @@ -583,6 +588,24 @@ lib_mod_event(struct vnc *v, int msg, long param1, long param2, case WM_BUTTON5DOWN: v->mod_mouse_state |= 16; break; + case WM_BUTTON6UP: + v->mod_mouse_state &= ~32; + break; + case WM_BUTTON6DOWN: + v->mod_mouse_state |= 32; + break; + case WM_BUTTON7UP: + v->mod_mouse_state &= ~64; + break; + case WM_BUTTON7DOWN: + v->mod_mouse_state |= 64; + break; + case WM_BUTTON8UP: + v->mod_mouse_state &= ~128; + break; + case WM_BUTTON8DOWN: + v->mod_mouse_state |= 128; + break; } init_stream(s, 8192);