diff options
-rw-r--r-- | NEWS | 4 | ||||
-rw-r--r-- | TODO | 4 | ||||
-rw-r--r-- | mcwm.c | 21 |
3 files changed, 21 insertions, 8 deletions
@@ -2,6 +2,10 @@ User visible changes +2011-03-18 + + * Now handles keyboard remapping. + 2011-02-23 * If you change focus window mcwm remembers where we last had @@ -9,10 +9,6 @@ Partially done. Now grabs all our keys unshifted as well as shifted. Needs a way to tell in config.h what extra modifier is used. -* MappingNotify - - Need to handle any changes of the keyboard mapping. - * Feedback window We need to tell the user the new geometry somehow. Is this what I @@ -1008,7 +1008,7 @@ int setupkeys(void) /* Couldn't set up keys! */ /* Get rid of key symbols. */ - free(keysyms); + xcb_key_symbols_free(keysyms); return -1; } @@ -1042,13 +1042,12 @@ int setupkeys(void) } } /* for */ - /* Need this to take effect NOW! */ xcb_flush(conn); /* Get rid of the key symbols table. */ - free(keysyms); - + xcb_key_symbols_free(keysyms); + return 0; } @@ -3048,6 +3047,20 @@ void events(void) } break; + case XCB_MAPPING_NOTIFY: + /* + * XXX Gah! We get a new notify message for *every* key! + * We want to know when the entire keyboard is finished. + */ + + /* Forget old key bindings. */ + xcb_ungrab_key(conn, XCB_GRAB_ANY, screen->root, XCB_MOD_MASK_ANY); + + /* Use the new ones. */ + setupkeys(); + + break; + case XCB_UNMAP_NOTIFY: { xcb_unmap_notify_event_t *e = |