From 4a011a99cb9f45e0d76b134d72c2c2ab150ba006 Mon Sep 17 00:00:00 2001 From: Damien Plisson Date: Mon, 11 Jan 2010 11:14:36 +0000 Subject: Multitouch trackpad 2 fingers gestures implementation - 2 fingers scroll (MOUSEPAN / GHOST_kTrackpadEventScroll event) pans/scrolls the view - 2 fingers pinch (MOUSEZOOM / GHOST_kTrackpadEventMagnify event) zooms the view And in 3D view: - alt + 2 fingers scroll rotates the view - 2 fingers rotation (MOUSEROTATE / GHOST_kTrackpadEventRotate) orbits the view. The implementation uses a new GHOST event type: GHOST_kEventTrackpad, that is then dispatched as Blender MOUSEPAN, MOUSEZOOM or MOUSEROTATE events. This is currently fully implemented for OSX (GHOST Cocoa fires the new events), with auto-detection of the source peripheral, so that a regular mouse still sends MOUSEWHEEL events. --- source/blender/windowmanager/wm_event_types.h | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) (limited to 'source/blender/windowmanager/wm_event_types.h') diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h index 8179154fc98..a90eb702069 100644 --- a/source/blender/windowmanager/wm_event_types.h +++ b/source/blender/windowmanager/wm_event_types.h @@ -56,9 +56,13 @@ /* only use if you want user option switch possible */ #define ACTIONMOUSE 0x005 #define SELECTMOUSE 0x006 -/* Extra mouse buttons */ + /* Extra mouse buttons */ #define BUTTON4MOUSE 0x007 #define BUTTON5MOUSE 0x008 + /* Extra trackpad gestures */ +#define MOUSEPAN 0x00e +#define MOUSEZOOM 0x00f +#define MOUSEROTATE 0x010 /* defaults from ghost */ #define WHEELUPMOUSE 0x00a #define WHEELDOWNMOUSE 0x00b @@ -67,7 +71,7 @@ #define WHEELOUTMOUSE 0x00d -/* SYSTEM : 0x01x */ +/* SYSTEM : 0x01xx */ #define INPUTCHANGE 0x0103 /* input connected or disconnected */ #define WINDEACTIVATE 0x0104 /* window is deactivated, focus lost */ @@ -202,7 +206,7 @@ #define ISKEYBOARD(event) (event >=' ' && event <=320) /* test whether the event is a mouse button */ -#define ISMOUSE(event) (event >= LEFTMOUSE && event <= WHEELOUTMOUSE) +#define ISMOUSE(event) (event >= LEFTMOUSE && event <= MOUSEROTATE) /* test whether the event is timer event */ #define ISTIMER(event) (event >= TIMER && event <= TIMERAUTOSAVE) -- cgit v1.2.3