Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/source
diff options
context:
space:
mode:
authorCampbell Barton <ideasman42@gmail.com>2009-09-21 09:56:43 +0400
committerCampbell Barton <ideasman42@gmail.com>2009-09-21 09:56:43 +0400
commitad7fab49d4346315cdb3db4bd087714ae45ffc89 (patch)
tree7b8fef32d77516f4873fd51915d1783bb1aa8016 /source
parente7abdd7d56256b57d9e33326af253188ed9d96dc (diff)
5 button mouse support from b333rt in IRC with some edits for X11.
Tested in X11 where its fairly confusing. buttons 4 and 5 are used for the wheel which is well known, but it seems 6 and 7 are used for horizontal scrolling, my mouse assigns the extra 2 buttons to events 8 & 9. So the X11 events used for buttons called 4&5 in blender are 8&9 in X11. The mouse buttons can be re-ordered like this once xorg starts (swaps 6,7 with 8,9) xmodmap -e "pointer = 1 2 3 4 5 8 9 6 7" Couldn't test Win32, Apple not supported. If someone wants to add horizontal scrolling its quite easy.
Diffstat (limited to 'source')
-rw-r--r--source/blender/editors/space_outliner/outliner.c4
-rw-r--r--source/blender/makesrna/intern/rna_wm.c2
-rw-r--r--source/blender/windowmanager/intern/wm_event_system.c4
-rw-r--r--source/blender/windowmanager/wm_event_types.h3
4 files changed, 13 insertions, 0 deletions
diff --git a/source/blender/editors/space_outliner/outliner.c b/source/blender/editors/space_outliner/outliner.c
index a3b47d505fd..a1fdbab9ccc 100644
--- a/source/blender/editors/space_outliner/outliner.c
+++ b/source/blender/editors/space_outliner/outliner.c
@@ -5049,6 +5049,8 @@ static char *keymap_mouse_menu(void)
str += sprintf(str, formatstr, "Left Mouse", LEFTMOUSE);
str += sprintf(str, formatstr, "Middle Mouse", MIDDLEMOUSE);
str += sprintf(str, formatstr, "Right Mouse", RIGHTMOUSE);
+ str += sprintf(str, formatstr, "Button4 Mouse ", BUTTON4MOUSE);
+ str += sprintf(str, formatstr, "Button5 Mouse ", BUTTON5MOUSE);
str += sprintf(str, formatstr, "Action Mouse", ACTIONMOUSE);
str += sprintf(str, formatstr, "Select Mouse", SELECTMOUSE);
str += sprintf(str, formatstr, "Mouse Move", MOUSEMOVE);
@@ -5071,6 +5073,8 @@ static char *keymap_tweak_menu(void)
str += sprintf(str, formatstr, "Left Mouse", EVT_TWEAK_L);
str += sprintf(str, formatstr, "Middle Mouse", EVT_TWEAK_M);
str += sprintf(str, formatstr, "Right Mouse", EVT_TWEAK_R);
+ str += sprintf(str, formatstr, "Button4 Mouse ", BUTTON4MOUSE);
+ str += sprintf(str, formatstr, "Button5 Mouse ", BUTTON5MOUSE);
str += sprintf(str, formatstr, "Action Mouse", EVT_TWEAK_A);
str += sprintf(str, formatstr, "Select Mouse", EVT_TWEAK_S);
diff --git a/source/blender/makesrna/intern/rna_wm.c b/source/blender/makesrna/intern/rna_wm.c
index fff51ad8ade..0dd9e3aed42 100644
--- a/source/blender/makesrna/intern/rna_wm.c
+++ b/source/blender/makesrna/intern/rna_wm.c
@@ -46,6 +46,8 @@ EnumPropertyItem event_type_items[] = {
{LEFTMOUSE, "LEFTMOUSE", 0, "Left Mouse", ""},
{MIDDLEMOUSE, "MIDDLEMOUSE", 0, "Middle Mouse", ""},
{RIGHTMOUSE, "RIGHTMOUSE", 0, "Right Mouse", ""},
+ {BUTTON4MOUSE, "BUTTON4MOUSE", 0, "Button4 Mouse", ""},
+ {BUTTON5MOUSE, "BUTTON5MOUSE", 0, "Button5 Mouse", ""},
{ACTIONMOUSE, "ACTIONMOUSE", 0, "Action Mouse", ""},
{SELECTMOUSE, "SELECTMOUSE", 0, "Select Mouse", ""},
diff --git a/source/blender/windowmanager/intern/wm_event_system.c b/source/blender/windowmanager/intern/wm_event_system.c
index 40026d27bac..ebb7adc3cd5 100644
--- a/source/blender/windowmanager/intern/wm_event_system.c
+++ b/source/blender/windowmanager/intern/wm_event_system.c
@@ -1579,6 +1579,10 @@ void wm_event_add_ghostevent(wmWindow *win, int type, void *customdata)
event.type= LEFTMOUSE;
else if (bd->button == GHOST_kButtonMaskRight)
event.type= RIGHTMOUSE;
+ else if (bd->button == GHOST_kButtonMaskButton4)
+ event.type= BUTTON4MOUSE;
+ else if (bd->button == GHOST_kButtonMaskButton5)
+ event.type= BUTTON5MOUSE;
else
event.type= MIDDLEMOUSE;
diff --git a/source/blender/windowmanager/wm_event_types.h b/source/blender/windowmanager/wm_event_types.h
index b331e036b9e..898c6358f3a 100644
--- a/source/blender/windowmanager/wm_event_types.h
+++ b/source/blender/windowmanager/wm_event_types.h
@@ -56,6 +56,9 @@
/* only use if you want user option switch possible */
#define ACTIONMOUSE 0x005
#define SELECTMOUSE 0x006
+/* Extra mouse buttons */
+#define BUTTON4MOUSE 0x007
+#define BUTTON5MOUSE 0x008
/* defaults from ghost */
#define WHEELUPMOUSE 0x00a
#define WHEELDOWNMOUSE 0x00b