diff options
author | okan <okan> | 2016-09-30 18:28:06 +0000 |
---|---|---|
committer | okan <okan> | 2016-09-30 18:28:06 +0000 |
commit | 2d8f621b8d285b1cf8e29feb383fa2268e57ee5a (patch) | |
tree | 411cf317c0c58cf39c2503d99c89913d6ee3c11d /conf.c | |
parent | 8b26a43bf17b3834de3127408e7274e8effc9beb (diff) | |
download | cwm-2d8f621b8d285b1cf8e29feb383fa2268e57ee5a.tar.gz cwm-2d8f621b8d285b1cf8e29feb383fa2268e57ee5a.tar.xz cwm-2d8f621b8d285b1cf8e29feb383fa2268e57ee5a.zip |
Use instinsic X11 functions for key/btn/ptr grab/ungrab/regrab requests;
the one line wrappers provided no value and limited altering calls where needed; additionally, most of them had but one caller.
Diffstat (limited to 'conf.c')
-rw-r--r-- | conf.c | 32 |
1 files changed, 26 insertions, 6 deletions
diff --git a/conf.c b/conf.c index c0c7b41..e03b337 100644 --- a/conf.c +++ b/conf.c @@ -655,28 +655,48 @@ conf_cursor(struct conf *c) c->cursor[i] = XCreateFontCursor(X_Dpy, cursor_binds[i]); } +static unsigned int ign_mods[] = { 0, LockMask, Mod2Mask, Mod2Mask | LockMask }; + void conf_grab_mouse(Window win) { struct binding *mb; + unsigned int i; - xu_btn_ungrab(win); + XUngrabButton(X_Dpy, AnyButton, AnyModifier, win); TAILQ_FOREACH(mb, &Conf.mousebindingq, entry) { - if (mb->context == CWM_CONTEXT_CLIENT) - xu_btn_grab(win, mb->modmask, mb->press.button); + if (mb->context != CWM_CONTEXT_CLIENT) + continue; + for (i = 0; i < nitems(ign_mods); i++) { + XGrabButton(X_Dpy, mb->press.button, + (mb->modmask | ign_mods[i]), win, False, + BUTTONMASK, GrabModeAsync, GrabModeSync, + None, None); + } } + } void conf_grab_kbd(Window win) { struct binding *kb; + KeyCode kc; + unsigned int i; - xu_key_ungrab(win); + XUngrabKey(X_Dpy, AnyKey, AnyModifier, win); - TAILQ_FOREACH(kb, &Conf.keybindingq, entry) - xu_key_grab(win, kb->modmask, kb->press.keysym); + TAILQ_FOREACH(kb, &Conf.keybindingq, entry) { + kc = XKeysymToKeycode(X_Dpy, kb->press.keysym); + if ((XkbKeycodeToKeysym(X_Dpy, kc, 0, 0) != kb->press.keysym) && + (XkbKeycodeToKeysym(X_Dpy, kc, 0, 1) == kb->press.keysym)) + kb->modmask |= ShiftMask; + + for (i = 0; i < nitems(ign_mods); i++) + XGrabKey(X_Dpy, kc, (kb->modmask | ign_mods[i]), win, + True, GrabModeAsync, GrabModeAsync); + } } static char *cwmhints[] = { |