Browse Source

Added support for a few more mouse buttons (via "x3", "x4", and "x5" button constants.)

Alex Szpakowski 10 years ago
parent
commit
b76b7bac8b
3 changed files with 21 additions and 11 deletions
  1. 8 5
      src/modules/event/sdl/Event.cpp
  2. 8 5
      src/modules/mouse/Mouse.cpp
  3. 5 1
      src/modules/mouse/Mouse.h

+ 8 - 5
src/modules/event/sdl/Event.cpp

@@ -798,11 +798,14 @@ std::map<SDL_Keycode, love::keyboard::Keyboard::Key> Event::keys = Event::create
 
 
 EnumMap<love::mouse::Mouse::Button, Uint8, love::mouse::Mouse::BUTTON_MAX_ENUM>::Entry Event::buttonEntries[] =
 EnumMap<love::mouse::Mouse::Button, Uint8, love::mouse::Mouse::BUTTON_MAX_ENUM>::Entry Event::buttonEntries[] =
 {
 {
-	{ love::mouse::Mouse::BUTTON_LEFT, SDL_BUTTON_LEFT},
-	{ love::mouse::Mouse::BUTTON_MIDDLE, SDL_BUTTON_MIDDLE},
-	{ love::mouse::Mouse::BUTTON_RIGHT, SDL_BUTTON_RIGHT},
-	{ love::mouse::Mouse::BUTTON_X1, SDL_BUTTON_X1},
-	{ love::mouse::Mouse::BUTTON_X2, SDL_BUTTON_X2},
+	{love::mouse::Mouse::BUTTON_LEFT, SDL_BUTTON_LEFT},
+	{love::mouse::Mouse::BUTTON_MIDDLE, SDL_BUTTON_MIDDLE},
+	{love::mouse::Mouse::BUTTON_RIGHT, SDL_BUTTON_RIGHT},
+	{love::mouse::Mouse::BUTTON_X1, SDL_BUTTON_X1},
+	{love::mouse::Mouse::BUTTON_X2, SDL_BUTTON_X2+0},
+	{love::mouse::Mouse::BUTTON_X3, SDL_BUTTON_X2+1},
+	{love::mouse::Mouse::BUTTON_X4, SDL_BUTTON_X2+2},
+	{love::mouse::Mouse::BUTTON_X5, SDL_BUTTON_X2+3},
 };
 };
 
 
 EnumMap<love::mouse::Mouse::Button, Uint8, love::mouse::Mouse::BUTTON_MAX_ENUM> Event::buttons(Event::buttonEntries, sizeof(Event::buttonEntries));
 EnumMap<love::mouse::Mouse::Button, Uint8, love::mouse::Mouse::BUTTON_MAX_ENUM> Event::buttons(Event::buttonEntries, sizeof(Event::buttonEntries));

+ 8 - 5
src/modules/mouse/Mouse.cpp

@@ -37,11 +37,14 @@ bool Mouse::getConstant(Button in, const char  *&out)
 
 
 StringMap<Mouse::Button, Mouse::BUTTON_MAX_ENUM>::Entry Mouse::buttonEntries[] =
 StringMap<Mouse::Button, Mouse::BUTTON_MAX_ENUM>::Entry Mouse::buttonEntries[] =
 {
 {
-	{"l", Mouse::BUTTON_LEFT},
-	{"m", Mouse::BUTTON_MIDDLE},
-	{"r", Mouse::BUTTON_RIGHT},
-	{"x1", Mouse::BUTTON_X1},
-	{"x2", Mouse::BUTTON_X2},
+	{"l", BUTTON_LEFT},
+	{"m", BUTTON_MIDDLE},
+	{"r", BUTTON_RIGHT},
+	{"x1", BUTTON_X1},
+	{"x2", BUTTON_X2},
+	{"x3", BUTTON_X3},
+	{"x4", BUTTON_X4},
+	{"x5", BUTTON_X5},
 };
 };
 
 
 StringMap<Mouse::Button, Mouse::BUTTON_MAX_ENUM> Mouse::buttons(Mouse::buttonEntries, sizeof(Mouse::buttonEntries));
 StringMap<Mouse::Button, Mouse::BUTTON_MAX_ENUM> Mouse::buttons(Mouse::buttonEntries, sizeof(Mouse::buttonEntries));

+ 5 - 1
src/modules/mouse/Mouse.h

@@ -36,14 +36,18 @@ class Mouse : public Module
 {
 {
 public:
 public:
 
 
+	// FIXME: We should probably just use button numbers.
 	enum Button
 	enum Button
 	{
 	{
-		BUTTON_INVALID,
+		BUTTON_INVALID = 0,
 		BUTTON_LEFT,
 		BUTTON_LEFT,
 		BUTTON_MIDDLE,
 		BUTTON_MIDDLE,
 		BUTTON_RIGHT,
 		BUTTON_RIGHT,
 		BUTTON_X1,
 		BUTTON_X1,
 		BUTTON_X2,
 		BUTTON_X2,
+		BUTTON_X3,
+		BUTTON_X4,
+		BUTTON_X5,
 		BUTTON_MAX_ENUM
 		BUTTON_MAX_ENUM
 	};
 	};