From patchwork Tue May 4 16:56:39 2010 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Brad Jorsch X-Patchwork-Id: 51655 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [199.232.76.165]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (Client did not present a certificate) by ozlabs.org (Postfix) with ESMTPS id 4AE06B7D51 for ; Wed, 5 May 2010 15:42:40 +1000 (EST) Received: from localhost ([127.0.0.1]:45855 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O9XNV-0002A2-Gm for incoming@patchwork.ozlabs.org; Wed, 05 May 2010 01:42:37 -0400 Received: from mailman by lists.gnu.org with tmda-scanned (Exim 4.43) id 1O9LQi-0003OU-P7 for qemu-devel@nongnu.org; Tue, 04 May 2010 12:57:08 -0400 Received: from [140.186.70.92] (port=47903 helo=eggs.gnu.org) by lists.gnu.org with esmtp (Exim 4.43) id 1O9LQg-0003NX-Ge for qemu-devel@nongnu.org; Tue, 04 May 2010 12:57:08 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.69) (envelope-from ) id 1O9LQY-0005eR-RE for qemu-devel@nongnu.org; Tue, 04 May 2010 12:57:05 -0400 Received: from hrndva-omtalb.mail.rr.com ([71.74.56.124]:33452) by eggs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1O9LQY-0005dY-P1 for qemu-devel@nongnu.org; Tue, 04 May 2010 12:56:58 -0400 X-Authority-Analysis: v=1.1 cv=OMZqYO3L41gFG4eI735GctFZkIqa2t9YKv4cWfI71LE= c=1 sm=0 a=EzfWTxUcjEoA:10 a=KM8nfJeeGFAA:10 a=sFBlSW20FPk1v4aQxZ+5uA==:17 a=FP58Ms26AAAA:8 a=-P_vppW8Z7Qgg-IH1qMA:9 a=CF9Y_7YrPEggjgGPAvsA:7 a=es9OQV0aotdxMnr1RVVbiq3PFuYA:4 a=sFBlSW20FPk1v4aQxZ+5uA==:117 X-Cloudmark-Score: 0 X-Originating-IP: 66.26.236.130 Received: from [66.26.236.130] ([66.26.236.130:37495] helo=anomie.yi.org) by hrndva-oedge03.mail.rr.com (envelope-from ) (ecelerity 2.2.2.39 r()) with ESMTP id 9D/88-03354-5D150EB4; Tue, 04 May 2010 16:56:53 +0000 Received: from [10.230.46.10] (helo=ataxia) by anomie.yi.org with esmtp (Exim 4.71) (envelope-from ) id 1O9LQS-0002vR-Ug for qemu-devel@nongnu.org; Tue, 04 May 2010 12:56:53 -0400 Received: from brad by ataxia with local (Exim 4.71) (envelope-from ) id 1O9LQI-000711-V8 for qemu-devel@nongnu.org; Tue, 04 May 2010 12:56:43 -0400 From: Brad Jorsch To: qemu-devel@nongnu.org Date: Tue, 4 May 2010 12:56:39 -0400 Message-Id: <1272992201-26911-4-git-send-email-anomie@users.sourceforge.net> X-Mailer: git-send-email 1.7.1 In-Reply-To: <1272992201-26911-1-git-send-email-anomie@users.sourceforge.net> References: <1272992201-26911-1-git-send-email-anomie@users.sourceforge.net> X-detected-operating-system: by eggs.gnu.org: Genre and OS details not recognized. Subject: [Qemu-devel] [PATCH 3/5] Pass hwheel events from the front-ends X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: qemu-devel.nongnu.org List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org SDL seems to report hwheel events as SDL_BUTTON_X1 and SDL_BUTTON_X2. VNC I am guessing is similar, and online docs indicate that Cocoa reports hwheel deltas in deltaX for NSScrollWheel. Signed-off-by: Brad Jorsch --- cocoa.m | 2 +- sdl.c | 12 ++++++++++-- vnc.c | 11 ++++++++--- 3 files changed, 19 insertions(+), 6 deletions(-) diff --git a/cocoa.m b/cocoa.m index c247833..afc1b5f 100644 --- a/cocoa.m +++ b/cocoa.m @@ -649,7 +649,7 @@ static int cocoa_keycode_to_qemu(int keycode) break; case NSScrollWheel: if (isTabletEnabled || isMouseGrabed) { - kbd_mouse_event(0, 0, -[event deltaY], 0, 0); + kbd_mouse_event(0, 0, -[event deltaY], -[event deltaX], 0); } else { [NSApp sendEvent:event]; } diff --git a/sdl.c b/sdl.c index 616a7eb..f6fabf1 100644 --- a/sdl.c +++ b/sdl.c @@ -700,8 +700,9 @@ static void sdl_refresh(DisplayState *ds) sdl_grab_start(); } } else { - int dz; + int dz, dw; dz = 0; + dw = 0; if (ev->type == SDL_MOUSEBUTTONDOWN) { buttonstate |= SDL_BUTTON(bev->button); } else { @@ -714,7 +715,14 @@ static void sdl_refresh(DisplayState *ds) dz = 1; } #endif - sdl_send_mouse_event(0, 0, dz, 0, bev->x, bev->y, +#ifdef SDL_BUTTON_X1 + if (bev->button == SDL_BUTTON_X1 && ev->type == SDL_MOUSEBUTTONDOWN) { + dw = -1; + } else if (bev->button == SDL_BUTTON_X2 && ev->type == SDL_MOUSEBUTTONDOWN) { + dw = 1; + } +#endif + sdl_send_mouse_event(0, 0, dz, dw, bev->x, bev->y, buttonstate); } } diff --git a/vnc.c b/vnc.c index 332c14a..c193963 100644 --- a/vnc.c +++ b/vnc.c @@ -1275,6 +1275,7 @@ static void pointer_event(VncState *vs, int button_mask, int x, int y) { int buttons = 0; int dz = 0; + int dw = 0; if (button_mask & 0x01) buttons |= MOUSE_EVENT_LBUTTON; @@ -1286,23 +1287,27 @@ static void pointer_event(VncState *vs, int button_mask, int x, int y) dz = -1; if (button_mask & 0x10) dz = 1; + if (button_mask & 0x20) + dw = -1; + if (button_mask & 0x40) + dw = 1; if (vs->absolute) { kbd_mouse_event(ds_get_width(vs->ds) > 1 ? x * 0x7FFF / (ds_get_width(vs->ds) - 1) : 0x4000, ds_get_height(vs->ds) > 1 ? y * 0x7FFF / (ds_get_height(vs->ds) - 1) : 0x4000, - dz, 0, buttons); + dz, dw, buttons); } else if (vnc_has_feature(vs, VNC_FEATURE_POINTER_TYPE_CHANGE)) { x -= 0x7FFF; y -= 0x7FFF; - kbd_mouse_event(x, y, dz, 0, buttons); + kbd_mouse_event(x, y, dz, dw, buttons); } else { if (vs->last_x != -1) kbd_mouse_event(x - vs->last_x, y - vs->last_y, - dz, 0, buttons); + dz, dw, buttons); vs->last_x = x; vs->last_y = y; }