aboutsummaryrefslogtreecommitdiff
path: root/src/window/window.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/window/window.c')
-rw-r--r--src/window/window.c67
1 files changed, 13 insertions, 54 deletions
diff --git a/src/window/window.c b/src/window/window.c
index 485e400..9280e32 100644
--- a/src/window/window.c
+++ b/src/window/window.c
@@ -1140,59 +1140,6 @@ static mgl_key x11_keysym_to_mgl_key(KeySym key_sym) {
return MGL_KEY_UNKNOWN;
}
-/* Returns XK_VoidSymbol on no match */
-static KeySym mgl_key_to_x11_keysym(mgl_key key) {
- if(key >= MGL_KEY_A && key <= MGL_KEY_Z)
- return XK_A + (key - MGL_KEY_A);
- if(key >= MGL_KEY_NUM0 && key <= MGL_KEY_NUM9)
- return XK_0 + (key - MGL_KEY_NUM0);
- if(key >= MGL_KEY_NUMPAD0 && key <= MGL_KEY_NUMPAD9)
- return XK_KP_0 + (key - MGL_KEY_NUMPAD0);
-
- /* TODO: Fill in the rest */
- switch(key) {
- case MGL_KEY_SPACE: return XK_space;
- case MGL_KEY_BACKSPACE: return XK_BackSpace;
- case MGL_KEY_TAB: return XK_Tab;
- case MGL_KEY_ENTER: return XK_Return;
- case MGL_KEY_ESCAPE: return XK_Escape;
- case MGL_KEY_LCONTROL: return XK_Control_L;
- case MGL_KEY_LSHIFT: return XK_Shift_L;
- case MGL_KEY_LALT: return XK_Alt_L;
- case MGL_KEY_LSYSTEM: return XK_Super_L;
- case MGL_KEY_RCONTROL: return XK_Control_R;
- case MGL_KEY_RSHIFT: return XK_Shift_R;
- case MGL_KEY_RALT: return XK_Alt_R;
- case MGL_KEY_RSYSTEM: return XK_Super_R;
- case MGL_KEY_DELETE: return XK_Delete;
- case MGL_KEY_HOME: return XK_Home;
- case MGL_KEY_LEFT: return XK_Left;
- case MGL_KEY_UP: return XK_Up;
- case MGL_KEY_RIGHT: return XK_Right;
- case MGL_KEY_DOWN: return XK_Down;
- case MGL_KEY_PAGEUP: return XK_Page_Up;
- case MGL_KEY_PAGEDOWN: return XK_Page_Down;
- case MGL_KEY_END: return XK_End;
- case MGL_KEY_F1: return XK_F1;
- case MGL_KEY_F2: return XK_F2;
- case MGL_KEY_F3: return XK_F3;
- case MGL_KEY_F4: return XK_F4;
- case MGL_KEY_F5: return XK_F5;
- case MGL_KEY_F6: return XK_F6;
- case MGL_KEY_F7: return XK_F7;
- case MGL_KEY_F8: return XK_F8;
- case MGL_KEY_F9: return XK_F9;
- case MGL_KEY_F10: return XK_F10;
- case MGL_KEY_F11: return XK_F11;
- case MGL_KEY_F12: return XK_F12;
- case MGL_KEY_F13: return XK_F13;
- case MGL_KEY_F14: return XK_F14;
- case MGL_KEY_F15: return XK_F15;
- default: return XK_VoidSymbol;
- }
- return XK_VoidSymbol;
-}
-
static mgl_mouse_button x11_button_to_mgl_button(unsigned int button) {
switch(button) {
case Button1: return MGL_BUTTON_LEFT;
@@ -1566,7 +1513,19 @@ static void mgl_window_on_receive_event(mgl_window *self, XEvent *xev, mgl_event
}
case MappingNotify: {
XRefreshKeyboardMapping(&xev->xmapping);
- event->type = MGL_EVENT_UNKNOWN;
+ event->type = MGL_EVENT_MAPPING_CHANGED;
+ event->mapping_changed.type = MappingModifier;
+ switch(xev->xmapping.request) {
+ case MappingModifier:
+ event->mapping_changed.type = MGL_MAPPING_CHANGED_MODIFIER;
+ break;
+ case MappingKeyboard:
+ event->mapping_changed.type = MGL_MAPPING_CHANGED_KEYBOARD;
+ break;
+ case MappingPointer:
+ event->mapping_changed.type = MGL_MAPPING_CHANGED_POINTER;
+ break;
+ }
break;
}
default: {