[Bf-blender-cvs] SVN commit: /data/svn/bf-blender [34980] trunk/blender: Adding support for the "media" play/pause/stop/next/prev buttons

Joshua Leung aligorith at gmail.com
Fri Feb 18 23:42:03 CET 2011


Revision: 34980
          http://projects.blender.org/scm/viewvc.php?view=rev&root=bf-blender&revision=34980
Author:   aligorith
Date:     2011-02-18 22:42:03 +0000 (Fri, 18 Feb 2011)
Log Message:
-----------
Adding support for the "media" play/pause/stop/next/prev buttons
available on many keyboards these days, so that they can be used for
animation playback (giving more options over alt-a and alt-a ad-
infinitum).

Currently, this is Windows only as I don't have a Linux/Mac system to
test on (it should compile with both mingw and msvc, at least using
scons). Maintainers for those systems can probably easily add this in
once they find out the relevant mappings for those systems.

Modified Paths:
--------------
    trunk/blender/intern/ghost/GHOST_Types.h
    trunk/blender/intern/ghost/intern/GHOST_EventPrinter.cpp
    trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
    trunk/blender/source/blender/makesrna/intern/rna_object_api.c
    trunk/blender/source/blender/makesrna/intern/rna_wm.c
    trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
    trunk/blender/source/blender/windowmanager/wm_event_types.h

Modified: trunk/blender/intern/ghost/GHOST_Types.h
===================================================================
--- trunk/blender/intern/ghost/GHOST_Types.h	2011-02-18 22:15:43 UTC (rev 34979)
+++ trunk/blender/intern/ghost/GHOST_Types.h	2011-02-18 22:42:03 UTC (rev 34980)
@@ -353,7 +353,13 @@
 	GHOST_kKeyF21,
 	GHOST_kKeyF22,
 	GHOST_kKeyF23,
-	GHOST_kKeyF24
+	GHOST_kKeyF24,
+	
+	// Multimedia keypad buttons
+	GHOST_kKeyMediaPlay,
+	GHOST_kKeyMediaStop,
+	GHOST_kKeyMediaFirst,
+	GHOST_kKeyMediaLast
 } GHOST_TKey;
 
 typedef enum {

Modified: trunk/blender/intern/ghost/intern/GHOST_EventPrinter.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_EventPrinter.cpp	2011-02-18 22:15:43 UTC (rev 34979)
+++ trunk/blender/intern/ghost/intern/GHOST_EventPrinter.cpp	2011-02-18 22:42:03 UTC (rev 34980)
@@ -325,6 +325,18 @@
 		case GHOST_kKeyNumpadSlash:
 			str = "NumpadSlash";
 			break;
+		case GHOST_kKeyMediaPlay:
+			str = "MediaPlayPause";
+			break;
+		case GHOST_kKeyMediaStop:
+			str = "MediaStop";
+			break;
+		case GHOST_kKeyMediaFirst:
+			str = "MediaFirst";
+			break;
+		case GHOST_kKeyMediaLast:
+			str = "MediaLast";
+			break;
 		default:
 			str = "unknown";
 			break;

Modified: trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp
===================================================================
--- trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp	2011-02-18 22:15:43 UTC (rev 34979)
+++ trunk/blender/intern/ghost/intern/GHOST_SystemWin32.cpp	2011-02-18 22:42:03 UTC (rev 34980)
@@ -136,7 +136,20 @@
 #define VK_GR_LESS 0xE2
 #endif // VK_GR_LESS
 
+#ifndef VK_MEDIA_NEXT_TRACK
+#define VK_MEDIA_NEXT_TRACK	0xB0
+#endif // VK_MEDIA_NEXT_TRACK
+#ifndef VK_MEDIA_PREV_TRACK
+#define VK_MEDIA_PREV_TRACK	0xB1
+#endif // VK_MEDIA_PREV_TRACK
+#ifndef VK_MEDIA_STOP
+#define VK_MEDIA_STOP	0xB2
+#endif // VK_MEDIA_STOP
+#ifndef VK_MEDIA_PLAY_PAUSE
+#define VK_MEDIA_PLAY_PAUSE	0xB3
+#endif // VK_MEDIA_PLAY_PAUSE
 
+
 GHOST_SystemWin32::GHOST_SystemWin32()
 : m_hasPerformanceCounter(false), m_freq(0), m_start(0)
 {
@@ -640,6 +653,10 @@
 		case VK_OEM_8:
 			key = ((GHOST_SystemWin32*)getSystem())->processSpecialKey(window, wParam, lParam);
 			break;
+		case VK_MEDIA_PLAY_PAUSE: key = GHOST_kKeyMediaPlay; break;
+		case VK_MEDIA_STOP: key = GHOST_kKeyMediaStop; break;
+		case VK_MEDIA_PREV_TRACK: key = GHOST_kKeyMediaFirst; break;
+		case VK_MEDIA_NEXT_TRACK: key = GHOST_kKeyMediaLast; break;
 		default:
 			key = GHOST_kKeyUnknown;
 			break;

Modified: trunk/blender/source/blender/makesrna/intern/rna_object_api.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_object_api.c	2011-02-18 22:15:43 UTC (rev 34979)
+++ trunk/blender/source/blender/makesrna/intern/rna_object_api.c	2011-02-18 22:42:03 UTC (rev 34980)
@@ -331,7 +331,7 @@
 
 int rna_Object_is_visible(Object *ob, Scene *sce)
 {
-	return !(ob->restrictflag & OB_RESTRICT_VIEW) && ob->lay & sce->lay;
+	return !(ob->restrictflag & OB_RESTRICT_VIEW) && (ob->lay & sce->lay);
 }
 
 /*

Modified: trunk/blender/source/blender/makesrna/intern/rna_wm.c
===================================================================
--- trunk/blender/source/blender/makesrna/intern/rna_wm.c	2011-02-18 22:15:43 UTC (rev 34979)
+++ trunk/blender/source/blender/makesrna/intern/rna_wm.c	2011-02-18 22:42:03 UTC (rev 34980)
@@ -241,6 +241,11 @@
 	{PAGEDOWNKEY, "PAGE_DOWN", 0, "Page Down", ""},
 	{ENDKEY, "END", 0, "End", ""},
 	{0, "", 0, NULL, NULL},
+	{MEDIAPLAY, "MEDIA_PLAY", 0, "Media Play/Pause", ""},
+	{MEDIASTOP, "MEDIA_STOP", 0, "Media Stop", ""},
+	{MEDIAFIRST, "MEDIA_FIRST", 0, "Media First", ""},
+	{MEDIALAST, "MEDIA_LAST", 0, "Media Last", ""},
+	{0, "", 0, NULL, NULL},
 	{WINDEACTIVATE, "WINDOW_DEACTIVATE", 0, "Window Deactivate", ""},
 	{TIMER, "TIMER", 0, "Timer", ""},
 	{TIMER0, "TIMER0", 0, "Timer 0", ""},

Modified: trunk/blender/source/blender/windowmanager/intern/wm_event_system.c
===================================================================
--- trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-02-18 22:15:43 UTC (rev 34979)
+++ trunk/blender/source/blender/windowmanager/intern/wm_event_system.c	2011-02-18 22:42:03 UTC (rev 34980)
@@ -2196,7 +2196,12 @@
 			case GHOST_kKeyNumpadSlash:		return PADSLASHKEY;
 				
 			case GHOST_kKeyGrLess:		    return GRLESSKEY; 
-				
+			
+			case GHOST_kKeyMediaPlay:		return MEDIAPLAY;
+			case GHOST_kKeyMediaStop:		return MEDIASTOP;
+			case GHOST_kKeyMediaFirst:		return MEDIAFIRST;
+			case GHOST_kKeyMediaLast:		return MEDIALAST;
+			
 			default:
 				return UNKNOWNKEY;	/* GHOST_kKeyUnknown */
 		}

Modified: trunk/blender/source/blender/windowmanager/wm_event_types.h
===================================================================
--- trunk/blender/source/blender/windowmanager/wm_event_types.h	2011-02-18 22:15:43 UTC (rev 34979)
+++ trunk/blender/source/blender/windowmanager/wm_event_types.h	2011-02-18 22:42:03 UTC (rev 34980)
@@ -207,6 +207,12 @@
 #define OSKEY		172
 #define GRLESSKEY	173
 
+// XXX: are these codes ok?
+#define MEDIAPLAY	174
+#define MEDIASTOP	175
+#define MEDIAFIRST	176
+#define MEDIALAST	177
+
 /* for event checks */
 	/* only used for KM_TEXTINPUT, so assume that we want all user-inputtable ascii codes included */
 #define ISTEXTINPUT(event)	(event >=' ' && event <=255)




More information about the Bf-blender-cvs mailing list