GHOST/Wayland: support mouse buttons 4-7
This commit is contained in:
parent
7aad4d459e
commit
46456a59c4
|
@ -21,6 +21,14 @@ bool GHOST_Buttons::get(GHOST_TButtonMask mask) const
|
|||
return m_ButtonMiddle;
|
||||
case GHOST_kButtonMaskRight:
|
||||
return m_ButtonRight;
|
||||
case GHOST_kButtonMaskButton4:
|
||||
return m_Button4;
|
||||
case GHOST_kButtonMaskButton5:
|
||||
return m_Button5;
|
||||
case GHOST_kButtonMaskButton6:
|
||||
return m_Button6;
|
||||
case GHOST_kButtonMaskButton7:
|
||||
return m_Button7;
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
@ -38,6 +46,18 @@ void GHOST_Buttons::set(GHOST_TButtonMask mask, bool down)
|
|||
case GHOST_kButtonMaskRight:
|
||||
m_ButtonRight = down;
|
||||
break;
|
||||
case GHOST_kButtonMaskButton4:
|
||||
m_Button4 = down;
|
||||
break;
|
||||
case GHOST_kButtonMaskButton5:
|
||||
m_Button5 = down;
|
||||
break;
|
||||
case GHOST_kButtonMaskButton6:
|
||||
m_Button6 = down;
|
||||
break;
|
||||
case GHOST_kButtonMaskButton7:
|
||||
m_Button7 = down;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -48,6 +68,10 @@ void GHOST_Buttons::clear()
|
|||
m_ButtonLeft = false;
|
||||
m_ButtonMiddle = false;
|
||||
m_ButtonRight = false;
|
||||
m_Button4 = false;
|
||||
m_Button5 = false;
|
||||
m_Button6 = false;
|
||||
m_Button7 = false;
|
||||
}
|
||||
|
||||
GHOST_Buttons::~GHOST_Buttons()
|
||||
|
|
|
@ -44,4 +44,8 @@ struct GHOST_Buttons {
|
|||
uint8_t m_ButtonLeft : 1;
|
||||
uint8_t m_ButtonMiddle : 1;
|
||||
uint8_t m_ButtonRight : 1;
|
||||
uint8_t m_Button4 : 1;
|
||||
uint8_t m_Button5 : 1;
|
||||
uint8_t m_Button6 : 1;
|
||||
uint8_t m_Button7 : 1;
|
||||
};
|
||||
|
|
|
@ -38,7 +38,8 @@
|
|||
|
||||
#include <cstring>
|
||||
|
||||
/* selected input event code defines from 'linux/input-event-codes.h'
|
||||
/**
|
||||
* Selected input event code defines from `linux/input-event-codes.h`
|
||||
* We include some of the button input event codes here, since the header is
|
||||
* only available in more recent kernel versions. The event codes are used to
|
||||
* to differentiate from which mouse button an event comes from.
|
||||
|
@ -46,6 +47,11 @@
|
|||
#define BTN_LEFT 0x110
|
||||
#define BTN_RIGHT 0x111
|
||||
#define BTN_MIDDLE 0x112
|
||||
#define BTN_SIDE 0x113
|
||||
#define BTN_EXTRA 0x114
|
||||
#define BTN_FORWARD 0x115
|
||||
#define BTN_BACK 0x116
|
||||
// #define BTN_TASK 0x117 /* UNUSED. */
|
||||
|
||||
struct buffer_t {
|
||||
void *data;
|
||||
|
@ -974,6 +980,18 @@ static void pointer_button(void *data,
|
|||
case BTN_RIGHT:
|
||||
ebutton = GHOST_kButtonMaskRight;
|
||||
break;
|
||||
case BTN_SIDE:
|
||||
ebutton = GHOST_kButtonMaskButton4;
|
||||
break;
|
||||
case BTN_EXTRA:
|
||||
ebutton = GHOST_kButtonMaskButton5;
|
||||
break;
|
||||
case BTN_FORWARD:
|
||||
ebutton = GHOST_kButtonMaskButton6;
|
||||
break;
|
||||
case BTN_BACK:
|
||||
ebutton = GHOST_kButtonMaskButton7;
|
||||
break;
|
||||
}
|
||||
|
||||
input->data_source->source_serial = serial;
|
||||
|
|
|
@ -1612,6 +1612,8 @@ GHOST_TSuccess GHOST_SystemX11::getButtons(GHOST_Buttons &buttons) const
|
|||
buttons.set(GHOST_kButtonMaskLeft, (mask_return & Button1Mask) != 0);
|
||||
buttons.set(GHOST_kButtonMaskMiddle, (mask_return & Button2Mask) != 0);
|
||||
buttons.set(GHOST_kButtonMaskRight, (mask_return & Button3Mask) != 0);
|
||||
buttons.set(GHOST_kButtonMaskButton4, (mask_return & Button4Mask) != 0);
|
||||
buttons.set(GHOST_kButtonMaskButton5, (mask_return & Button5Mask) != 0);
|
||||
}
|
||||
else {
|
||||
return GHOST_kFailure;
|
||||
|
|
Loading…
Reference in New Issue