[Bf-blender-cvs] [5b02f2a] GPencil_Editing_Stage3: Added support for tablet pen and eraser events to be added to keymaps

Joshua Leung noreply at git.blender.org
Sat Sep 19 01:50:14 CEST 2015


Commit: 5b02f2a0a2902441fef2e891ec56ff17cb12d5ed
Author: Joshua Leung
Date:   Sat Sep 19 11:43:45 2015 +1200
Branches: GPencil_Editing_Stage3
https://developer.blender.org/rB5b02f2a0a2902441fef2e891ec56ff17cb12d5ed

Added support for tablet pen and eraser events to be added to keymaps

Added two new event types that will fire only when using a stylus or its eraser.
The use case for this is to allow artists to be able to set up their keymaps
so that they can just draw and erase directly using their tablet without holding
down any keys.

===================================================================

M	source/blender/makesrna/intern/rna_wm.c
M	source/blender/windowmanager/intern/wm_event_system.c
M	source/blender/windowmanager/wm_event_types.h

===================================================================

diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index aa4bfe0..978aa5f 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -86,6 +86,9 @@ static EnumPropertyItem event_mouse_type_items[] = {
 	{ACTIONMOUSE, "ACTIONMOUSE", 0, "Action", ""},
 	{SELECTMOUSE, "SELECTMOUSE", 0, "Select", ""},
 	{0, "", 0, NULL, NULL},
+	{TABLET_STYLUS, "PEN", 0, "Pen", ""},
+	{TABLET_ERASER, "ERASER", 0, "Eraser", ""},
+	{0, "", 0, NULL, NULL},
 	{MOUSEMOVE, "MOUSEMOVE", 0, "Move", ""},
 	{MOUSEPAN, "TRACKPADPAN", 0, "Mouse/Trackpad Pan", ""},
 	{MOUSEZOOM, "TRACKPADZOOM", 0, "Mouse/Trackpad Zoom", ""},
@@ -180,6 +183,9 @@ EnumPropertyItem event_type_items[] = {
 	{ACTIONMOUSE, "ACTIONMOUSE", 0, "Action Mouse", "MBA"},
 	{SELECTMOUSE, "SELECTMOUSE", 0, "Select Mouse", "MBS"},
 	{0, "", 0, NULL, NULL},
+	{TABLET_STYLUS, "PEN", 0, "Pen", ""},
+	{TABLET_ERASER, "ERASER", 0, "Eraser", ""},
+	{0, "", 0, NULL, NULL},
 	{MOUSEMOVE, "MOUSEMOVE", 0, "Mouse Move", "MsMov"},
 	{INBETWEEN_MOUSEMOVE, "INBETWEEN_MOUSEMOVE", 0, "In-between Move", "MsSubMov"},
 	{MOUSEPAN, "TRACKPADPAN", 0, "Mouse/Trackpad Pan", "MsPan"},
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 187c11e..58b3033 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1538,8 +1538,22 @@ static int wm_eventmatch(wmEvent *winevent, wmKeyMapItem *kmi)
 			if (ISKEYBOARD(winevent->type) && (winevent->ascii || winevent->utf8_buf[0])) return 1; 
 		}
 
-	if (kmitype != KM_ANY)
-		if (winevent->type != kmitype) return 0;
+	if (kmitype != KM_ANY) {
+		if (ELEM(kmitype, TABLET_STYLUS, TABLET_ERASER)) {
+			const wmTabletData *wmtab = winevent->tablet_data;
+			
+			if (wmtab == NULL)
+				return 0;
+			else if ((kmitype == TABLET_STYLUS) && (wmtab->Active != EVT_TABLET_STYLUS))
+				return 0;
+			else if ((kmitype == TABLET_ERASER) && (wmtab->Active != EVT_TABLET_ERASER))
+				return 0;
+		}
+		else {
+			if (winevent->type != kmitype)
+				return 0;
+		}
+	}
 	
 	if (kmi->val != KM_ANY)
 		if (winevent->val != kmi->val) return 0;
diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h
index 390e769..c32ded2 100644
--- a/source/blender/windowmanager/wm_event_types.h
+++ b/source/blender/windowmanager/wm_event_types.h
@@ -92,6 +92,10 @@ enum {
 	WM_IME_COMPOSITE_EVENT      = 0x0015,
 /* IME event, GHOST_kEventImeCompositionEnd in ghost */
 	WM_IME_COMPOSITE_END   = 0x0016,
+	
+	/* Tablet/Pen Specific Events */
+	TABLET_STYLUS       = 0x001a,
+	TABLET_ERASER       = 0x001b,
 
 	/* *** Start of keyboard codes. *** */




More information about the Bf-blender-cvs mailing list