aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--sokol_app.h206
1 files changed, 126 insertions, 80 deletions
diff --git a/sokol_app.h b/sokol_app.h
index 4e8dccb8..48520cc6 100644
--- a/sokol_app.h
+++ b/sokol_app.h
@@ -1219,14 +1219,23 @@ typedef enum sapp_mousebutton {
} sapp_mousebutton;
/*
- These are currently pressed modifier keys which are passed in the
- struct field sapp_event.modifiers.
+ These are currently pressed modifier keys (and mouse buttons) which are
+ passed in the event struct field sapp_event.modifiers.
+
+ NOTE: do not depend on the presence or absence of a modifier flag in
+ "their own" KEY_UP/DOWN and MOUSE_UP/DOWN events! For instance in the
+ X11 backend, SAPP_MODIFIER_CTRL will not be set in the KEY_DOWN event
+ of the Ctrl key, instead the KEY_UP event of the Ctrl-key will have
+ the SAPP_MODIFIER_CTRL bit set. Same for mouse buttons.
*/
enum {
- SAPP_MODIFIER_SHIFT = 0x1,
- SAPP_MODIFIER_CTRL = 0x2,
- SAPP_MODIFIER_ALT = 0x4,
- SAPP_MODIFIER_SUPER = 0x8
+ SAPP_MODIFIER_SHIFT = 0x1, // left or right shift key
+ SAPP_MODIFIER_CTRL = 0x2, // left or right control key
+ SAPP_MODIFIER_ALT = 0x4, // left or right alt key
+ SAPP_MODIFIER_SUPER = 0x8, // left or right 'super' key
+ SAPP_MODIFIER_LMB = 0x100, // left mouse button
+ SAPP_MODIFIER_RMB = 0x200, // right mouse button
+ SAPP_MODIFIER_MMB = 0x400, // middle mouse button
};
/*
@@ -1866,6 +1875,7 @@ typedef struct {
bool wants_show_keyboard;
bool wants_hide_keyboard;
bool mouse_lock_requested;
+ uint16_t mouse_buttons;
#if defined(SOKOL_WGPU)
_sapp_wgpu_t wgpu;
#endif
@@ -2836,7 +2846,9 @@ int main(int argc, char* argv[]) {
}
#endif /* SOKOL_NO_ENTRY */
-_SOKOL_PRIVATE uint32_t _sapp_macos_mod(NSEventModifierFlags f) {
+_SOKOL_PRIVATE uint32_t _sapp_macos_mods(NSEvent* ev) {
+ const NSEventModifierFlags f = ev.modifierFlags;
+ const NSUInteger b = NSEvent.pressedMouseButtons;
uint32_t m = 0;
if (f & NSEventModifierFlagShift) {
m |= SAPP_MODIFIER_SHIFT;
@@ -2850,6 +2862,15 @@ _SOKOL_PRIVATE uint32_t _sapp_macos_mod(NSEventModifierFlags f) {
if (f & NSEventModifierFlagCommand) {
m |= SAPP_MODIFIER_SUPER;
}
+ if (0 != (b & (1<<0))) {
+ m |= SAPP_MODIFIER_LMB;
+ }
+ if (0 != (b & (1<<1))) {
+ m |= SAPP_MODIFIER_RMB;
+ }
+ if (0 != (b & (1<<2))) {
+ m |= SAPP_MODIFIER_MMB;
+ }
return m;
}
@@ -3387,46 +3408,46 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
on Windows while SetCapture is active
*/
if (0 == _sapp.macos.mouse_buttons) {
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_ENTER, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_ENTER, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mods(event));
}
}
- (void)mouseExited:(NSEvent*)event {
_sapp_macos_update_mouse(event);
if (0 == _sapp.macos.mouse_buttons) {
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_LEAVE, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_LEAVE, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mods(event));
}
}
- (void)mouseDown:(NSEvent*)event {
_sapp_macos_update_mouse(event);
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, SAPP_MOUSEBUTTON_LEFT, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, SAPP_MOUSEBUTTON_LEFT, _sapp_macos_mods(event));
_sapp.macos.mouse_buttons |= (1<<SAPP_MOUSEBUTTON_LEFT);
}
- (void)mouseUp:(NSEvent*)event {
_sapp_macos_update_mouse(event);
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, SAPP_MOUSEBUTTON_LEFT, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, SAPP_MOUSEBUTTON_LEFT, _sapp_macos_mods(event));
_sapp.macos.mouse_buttons &= ~(1<<SAPP_MOUSEBUTTON_LEFT);
}
- (void)rightMouseDown:(NSEvent*)event {
_sapp_macos_update_mouse(event);
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, SAPP_MOUSEBUTTON_RIGHT, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, SAPP_MOUSEBUTTON_RIGHT, _sapp_macos_mods(event));
_sapp.macos.mouse_buttons |= (1<<SAPP_MOUSEBUTTON_RIGHT);
}
- (void)rightMouseUp:(NSEvent*)event {
_sapp_macos_update_mouse(event);
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, SAPP_MOUSEBUTTON_RIGHT, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, SAPP_MOUSEBUTTON_RIGHT, _sapp_macos_mods(event));
_sapp.macos.mouse_buttons &= ~(1<<SAPP_MOUSEBUTTON_RIGHT);
}
- (void)otherMouseDown:(NSEvent*)event {
_sapp_macos_update_mouse(event);
if (2 == event.buttonNumber) {
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, SAPP_MOUSEBUTTON_MIDDLE, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, SAPP_MOUSEBUTTON_MIDDLE, _sapp_macos_mods(event));
_sapp.macos.mouse_buttons |= (1<<SAPP_MOUSEBUTTON_MIDDLE);
}
}
- (void)otherMouseUp:(NSEvent*)event {
_sapp_macos_update_mouse(event);
if (2 == event.buttonNumber) {
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, SAPP_MOUSEBUTTON_MIDDLE, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, SAPP_MOUSEBUTTON_MIDDLE, _sapp_macos_mods(event));
_sapp.macos.mouse_buttons &= (1<<SAPP_MOUSEBUTTON_MIDDLE);
}
}
@@ -3437,7 +3458,7 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
_sapp.mouse.dx = [event deltaX];
_sapp.mouse.dy = [event deltaY];
}
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_MIDDLE, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mods(event));
}
}
- (void)mouseMoved:(NSEvent*)event {
@@ -3446,7 +3467,7 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
_sapp.mouse.dx = [event deltaX];
_sapp.mouse.dy = [event deltaY];
}
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID , _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID , _sapp_macos_mods(event));
}
- (void)mouseDragged:(NSEvent*)event {
_sapp_macos_update_mouse(event);
@@ -3454,7 +3475,7 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
_sapp.mouse.dx = [event deltaX];
_sapp.mouse.dy = [event deltaY];
}
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID , _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID , _sapp_macos_mods(event));
}
- (void)rightMouseDragged:(NSEvent*)event {
_sapp_macos_update_mouse(event);
@@ -3462,7 +3483,7 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
_sapp.mouse.dx = [event deltaX];
_sapp.mouse.dy = [event deltaY];
}
- _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_macos_mods(event));
}
- (void)scrollWheel:(NSEvent*)event {
_sapp_macos_update_mouse(event);
@@ -3475,7 +3496,7 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
}
if ((_sapp_absf(dx) > 0.0f) || (_sapp_absf(dy) > 0.0f)) {
_sapp_init_event(SAPP_EVENTTYPE_MOUSE_SCROLL);
- _sapp.event.modifiers = _sapp_macos_mod(event.modifierFlags);
+ _sapp.event.modifiers = _sapp_macos_mods(event);
_sapp.event.scroll_x = dx;
_sapp.event.scroll_y = dy;
_sapp_call_event(&_sapp.event);
@@ -3484,7 +3505,7 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
}
- (void)keyDown:(NSEvent*)event {
if (_sapp_events_enabled()) {
- const uint32_t mods = _sapp_macos_mod(event.modifierFlags);
+ const uint32_t mods = _sapp_macos_mods(event);
/* NOTE: macOS doesn't send keyUp events while the Cmd key is pressed,
as a workaround, to prevent key presses from sticking we'll send
a keyup event following right after the keydown if SUPER is also pressed
@@ -3520,7 +3541,7 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
_sapp_macos_key_event(SAPP_EVENTTYPE_KEY_UP,
_sapp_translate_key(event.keyCode),
event.isARepeat,
- _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mods(event));
}
- (void)flagsChanged:(NSEvent*)event {
const uint32_t old_f = _sapp.macos.flags_changed_store;
@@ -3548,7 +3569,7 @@ _SOKOL_PRIVATE void _sapp_macos_poll_input_events() {
_sapp_macos_key_event(down ? SAPP_EVENTTYPE_KEY_DOWN : SAPP_EVENTTYPE_KEY_UP,
key_code,
false,
- _sapp_macos_mod(event.modifierFlags));
+ _sapp_macos_mods(event));
}
}
- (void)cursorUpdate:(NSEvent*)event {
@@ -4272,6 +4293,44 @@ _SOKOL_PRIVATE void _sapp_emsc_wgpu_surfaces_create(void);
_SOKOL_PRIVATE void _sapp_emsc_wgpu_surfaces_discard(void);
#endif
+_SOKOL_PRIVATE uint32_t _sapp_emsc_mouse_button_mods(uint16_t buttons) {
+ uint32_t m = 0;
+ if (0 != (buttons & (1<<0))) { m |= SAPP_MODIFIER_LMB; }
+ if (0 != (buttons & (1<<1))) { m |= SAPP_MODIFIER_RMB; } // not a bug
+ if (0 != (buttons & (1<<2))) { m |= SAPP_MODIFIER_MMB; } // not a bug
+ return m;
+}
+
+_SOKOL_PRIVATE uint32_t _sapp_emsc_mouse_event_mods(const EmscriptenMouseEvent* ev) {
+ uint32_t m = 0;
+ if (ev->ctrlKey) { m |= SAPP_MODIFIER_CTRL; }
+ if (ev->shiftKey) { m |= SAPP_MODIFIER_SHIFT; }
+ if (ev->altKey) { m |= SAPP_MODIFIER_ALT; }
+ if (ev->metaKey) { m |= SAPP_MODIFIER_SUPER; }
+ m |= _sapp_emsc_mouse_button_mods(_sapp.emsc.mouse_buttons);
+ return m;
+}
+
+_SOKOL_PRIVATE uint32_t _sapp_emsc_key_event_mods(const EmscriptenKeyboardEvent* ev) {
+ uint32_t m = 0;
+ if (ev->ctrlKey) { m |= SAPP_MODIFIER_CTRL; }
+ if (ev->shiftKey) { m |= SAPP_MODIFIER_SHIFT; }
+ if (ev->altKey) { m |= SAPP_MODIFIER_ALT; }
+ if (ev->metaKey) { m |= SAPP_MODIFIER_SUPER; }
+ m |= _sapp_emsc_mouse_button_mods(_sapp.emsc.mouse_buttons);
+ return m;
+}
+
+_SOKOL_PRIVATE uint32_t _sapp_emsc_touch_event_mods(const EmscriptenTouchEvent* ev) {
+ uint32_t m = 0;
+ if (ev->ctrlKey) { m |= SAPP_MODIFIER_CTRL; }
+ if (ev->shiftKey) { m |= SAPP_MODIFIER_SHIFT; }
+ if (ev->altKey) { m |= SAPP_MODIFIER_ALT; }
+ if (ev->metaKey) { m |= SAPP_MODIFIER_SUPER; }
+ m |= _sapp_emsc_mouse_button_mods(_sapp.emsc.mouse_buttons);
+ return m;
+}
+
_SOKOL_PRIVATE EM_BOOL _sapp_emsc_size_changed(int event_type, const EmscriptenUiEvent* ui_event, void* user_data) {
_SOKOL_UNUSED(event_type);
_SOKOL_UNUSED(user_data);
@@ -4330,6 +4389,7 @@ _SOKOL_PRIVATE EM_BOOL _sapp_emsc_size_changed(int event_type, const EmscriptenU
_SOKOL_PRIVATE EM_BOOL _sapp_emsc_mouse_cb(int emsc_type, const EmscriptenMouseEvent* emsc_event, void* user_data) {
_SOKOL_UNUSED(user_data);
+ _sapp.emsc.mouse_buttons = emsc_event->buttons;
if (_sapp.mouse.locked) {
_sapp.mouse.dx = (float) emsc_event->movementX;
_sapp.mouse.dy = (float) emsc_event->movementY;
@@ -4372,18 +4432,7 @@ _SOKOL_PRIVATE EM_BOOL _sapp_emsc_mouse_cb(int emsc_type, const EmscriptenMouseE
}
if (type != SAPP_EVENTTYPE_INVALID) {
_sapp_init_event(type);
- if (emsc_event->ctrlKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_CTRL;
- }
- if (emsc_event->shiftKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_SHIFT;
- }
- if (emsc_event->altKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_ALT;
- }
- if (emsc_event->metaKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_SUPER;
- }
+ _sapp.event.modifiers = _sapp_emsc_mouse_event_mods(emsc_event);
if (is_button_event) {
switch (emsc_event->button) {
case 0: _sapp.event.mouse_button = SAPP_MOUSEBUTTON_LEFT; break;
@@ -4409,20 +4458,10 @@ _SOKOL_PRIVATE EM_BOOL _sapp_emsc_mouse_cb(int emsc_type, const EmscriptenMouseE
_SOKOL_PRIVATE EM_BOOL _sapp_emsc_wheel_cb(int emsc_type, const EmscriptenWheelEvent* emsc_event, void* user_data) {
_SOKOL_UNUSED(emsc_type);
_SOKOL_UNUSED(user_data);
+ _sapp.emsc.mouse_buttons = emsc_event->mouse.buttons;
if (_sapp_events_enabled()) {
_sapp_init_event(SAPP_EVENTTYPE_MOUSE_SCROLL);
- if (emsc_event->mouse.ctrlKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_CTRL;
- }
- if (emsc_event->mouse.shiftKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_SHIFT;
- }
- if (emsc_event->mouse.altKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_ALT;
- }
- if (emsc_event->mouse.metaKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_SUPER;
- }
+ _sapp.event.modifiers = _sapp_emsc_mouse_event_mods(&emsc_event->mouse);
/* see https://github.com/floooh/sokol/issues/339 */
float scale;
switch (emsc_event->deltaMode) {
@@ -4463,18 +4502,7 @@ _SOKOL_PRIVATE EM_BOOL _sapp_emsc_key_cb(int emsc_type, const EmscriptenKeyboard
bool send_keyup_followup = false;
_sapp_init_event(type);
_sapp.event.key_repeat = emsc_event->repeat;
- if (emsc_event->ctrlKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_CTRL;
- }
- if (emsc_event->shiftKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_SHIFT;
- }
- if (emsc_event->altKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_ALT;
- }
- if (emsc_event->metaKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_SUPER;
- }
+ _sapp.event.modifiers = _sapp_emsc_key_event_mods(emsc_event);
if (type == SAPP_EVENTTYPE_CHAR) {
_sapp.event.char_code = emsc_event->charCode;
/* workaround to make Cmd+V work on Safari */
@@ -4603,18 +4631,7 @@ _SOKOL_PRIVATE EM_BOOL _sapp_emsc_touch_cb(int emsc_type, const EmscriptenTouchE
}
if (type != SAPP_EVENTTYPE_INVALID) {
_sapp_init_event(type);
- if (emsc_event->ctrlKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_CTRL;
- }
- if (emsc_event->shiftKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_SHIFT;
- }
- if (emsc_event->altKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_ALT;
- }
- if (emsc_event->metaKey) {
- _sapp.event.modifiers |= SAPP_MODIFIER_SUPER;
- }
+ _sapp.event.modifiers = _sapp_emsc_touch_event_mods(emsc_event);
_sapp.event.num_touches = emsc_event->numTouches;
if (_sapp.event.num_touches > SAPP_MAX_TOUCHPOINTS) {
_sapp.event.num_touches = SAPP_MAX_TOUCHPOINTS;
@@ -5925,6 +5942,16 @@ _SOKOL_PRIVATE uint32_t _sapp_win32_mods(void) {
if ((GetKeyState(VK_LWIN) | GetKeyState(VK_RWIN)) & (1<<15)) {
mods |= SAPP_MODIFIER_SUPER;
}
+ const bool swapped = (TRUE == GetSystemMetrics(SM_SWAPBUTTON));
+ if (GetAsyncKeyState(VK_LBUTTON)) {
+ mods |= swapped ? SAPP_MODIFIER_RMB : SAPP_MODIFIER_LMB;
+ }
+ if (GetAsyncKeyState(VK_RBUTTON)) {
+ mods |= swapped ? SAPP_MODIFIER_LMB : SAPP_MODIFIER_RMB;
+ }
+ if (GetAsyncKeyState(VK_MBUTTON)) {
+ mods |= SAPP_MODIFIER_MMB;
+ }
return mods;
}
@@ -6703,6 +6730,15 @@ _SOKOL_PRIVATE uint32_t _sapp_uwp_mods(winrt::Windows::UI::Core::CoreWindow cons
{
mods |= SAPP_MODIFIER_SUPER;
}
+ if (0 != (_sapp.uwp.mouse_buttons & (1<<SAPP_MOUSEBUTTON_LEFT))) {
+ mods |= SAPP_MODIFIER_LMB;
+ }
+ if (0 != (_sapp.uwp.mouse_buttons & (1<<SAPP_MOUSEBUTTON_MIDDLE))) {
+ mods |= SAPP_MODIFIER_MMB;
+ }
+ if (0 != (_sapp.uwp.mouse_buttons & (1<<SAPP_MOUSEBUTTON_RIGHT))) {
+ mods |= SAPP_MODIFIER_RMB;
+ }
return mods;
}
@@ -9772,7 +9808,7 @@ _SOKOL_PRIVATE int _sapp_x11_get_window_state(void) {
return result;
}
-_SOKOL_PRIVATE uint32_t _sapp_x11_mod(uint32_t x11_mods) {
+_SOKOL_PRIVATE uint32_t _sapp_x11_mods(uint32_t x11_mods) {
uint32_t mods = 0;
if (x11_mods & ShiftMask) {
mods |= SAPP_MODIFIER_SHIFT;
@@ -9786,6 +9822,15 @@ _SOKOL_PRIVATE uint32_t _sapp_x11_mod(uint32_t x11_mods) {
if (x11_mods & Mod4Mask) {
mods |= SAPP_MODIFIER_SUPER;
}
+ if (x11_mods & Button1Mask) {
+ mods |= SAPP_MODIFIER_LMB;
+ }
+ if (x11_mods & Button2Mask) {
+ mods |= SAPP_MODIFIER_MMB;
+ }
+ if (x11_mods & Button3Mask) {
+ mods |= SAPP_MODIFIER_RMB;
+ }
return mods;
}
@@ -10126,7 +10171,7 @@ _SOKOL_PRIVATE void _sapp_x11_process_event(XEvent* event) {
if (XIMaskIsSet(re->valuators.mask, 1)) {
_sapp.mouse.dy = (float) *values;
}
- _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mod(event->xmotion.state));
+ _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mods(event->xmotion.state));
}
}
XFreeEventData(_sapp.x11.display, &event->xcookie);
@@ -10146,7 +10191,7 @@ _SOKOL_PRIVATE void _sapp_x11_process_event(XEvent* event) {
const sapp_keycode key = _sapp_x11_translate_key(keycode);
bool repeat = _sapp_x11_keycodes[keycode & 0xFF];
_sapp_x11_keycodes[keycode & 0xFF] = true;
- const uint32_t mods = _sapp_x11_mod(event->xkey.state);
+ const uint32_t mods = _sapp_x11_mods(event->xkey.state);
if (key != SAPP_KEYCODE_INVALID) {
_sapp_x11_key_event(SAPP_EVENTTYPE_KEY_DOWN, key, repeat, mods);
}
@@ -10164,7 +10209,7 @@ _SOKOL_PRIVATE void _sapp_x11_process_event(XEvent* event) {
const sapp_keycode key = _sapp_x11_translate_key(keycode);
_sapp_x11_keycodes[keycode & 0xFF] = false;
if (key != SAPP_KEYCODE_INVALID) {
- const uint32_t mods = _sapp_x11_mod(event->xkey.state);
+ const uint32_t mods = _sapp_x11_mods(event->xkey.state);
_sapp_x11_key_event(SAPP_EVENTTYPE_KEY_UP, key, false, mods);
}
}
@@ -10172,7 +10217,7 @@ _SOKOL_PRIVATE void _sapp_x11_process_event(XEvent* event) {
case ButtonPress:
{
const sapp_mousebutton btn = _sapp_x11_translate_button(event);
- const uint32_t mods = _sapp_x11_mod(event->xbutton.state);
+ const uint32_t mods = _sapp_x11_mods(event->xbutton.state);
if (btn != SAPP_MOUSEBUTTON_INVALID) {
_sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_DOWN, btn, mods);
_sapp.x11.mouse_buttons |= (1 << btn);
@@ -10192,7 +10237,8 @@ _SOKOL_PRIVATE void _sapp_x11_process_event(XEvent* event) {
{
const sapp_mousebutton btn = _sapp_x11_translate_button(event);
if (btn != SAPP_MOUSEBUTTON_INVALID) {
- _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, btn, _sapp_x11_mod(event->xbutton.state));
+ const uint32_t mods = _sapp_x11_mods(event->xbutton.state);
+ _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_UP, btn, mods);
_sapp.x11.mouse_buttons &= ~(1 << btn);
}
}
@@ -10200,12 +10246,12 @@ _SOKOL_PRIVATE void _sapp_x11_process_event(XEvent* event) {
case EnterNotify:
/* don't send enter/leave events while mouse button held down */
if (0 == _sapp.x11.mouse_buttons) {
- _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_ENTER, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mod(event->xcrossing.state));
+ _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_ENTER, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mods(event->xcrossing.state));
}
break;
case LeaveNotify:
if (0 == _sapp.x11.mouse_buttons) {
- _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_LEAVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mod(event->xcrossing.state));
+ _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_LEAVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mods(event->xcrossing.state));
}
break;
case MotionNotify:
@@ -10219,7 +10265,7 @@ _SOKOL_PRIVATE void _sapp_x11_process_event(XEvent* event) {
_sapp.mouse.x = new_x;
_sapp.mouse.y = new_y;
_sapp.mouse.pos_valid = true;
- _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mod(event->xmotion.state));
+ _sapp_x11_mouse_event(SAPP_EVENTTYPE_MOUSE_MOVE, SAPP_MOUSEBUTTON_INVALID, _sapp_x11_mods(event->xmotion.state));
}
break;
case ConfigureNotify: