cvsimport
This commit is contained in:
34
xevents.c
34
xevents.c
@@ -71,6 +71,9 @@ void (*xev_handlers[LASTEvent])(XEvent *) = {
|
||||
[MappingNotify] = xev_handle_mappingnotify,
|
||||
};
|
||||
|
||||
static KeySym modkeys[] = { XK_Alt_L, XK_Alt_R, XK_Super_L, XK_Super_R,
|
||||
XK_Control_L, XK_Control_R };
|
||||
|
||||
static void
|
||||
xev_handle_maprequest(XEvent *ee)
|
||||
{
|
||||
@@ -204,12 +207,10 @@ xev_handle_propertynotify(XEvent *ee)
|
||||
if (sc->rootwin == e->window)
|
||||
goto test;
|
||||
return;
|
||||
|
||||
test:
|
||||
if (e->atom == _NET_DESKTOP_NAMES)
|
||||
group_update_names(sc);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
static void
|
||||
@@ -279,8 +280,8 @@ xev_handle_keypress(XEvent *ee)
|
||||
KeySym keysym, skeysym;
|
||||
int modshift;
|
||||
|
||||
keysym = XKeycodeToKeysym(X_Dpy, e->keycode, 0);
|
||||
skeysym = XKeycodeToKeysym(X_Dpy, e->keycode, 1);
|
||||
keysym = XkbKeycodeToKeysym(X_Dpy, e->keycode, 0, 0);
|
||||
skeysym = XkbKeycodeToKeysym(X_Dpy, e->keycode, 0, 1);
|
||||
|
||||
/* we don't care about caps lock and numlock here */
|
||||
e->state &= ~(LockMask | Mod2Mask);
|
||||
@@ -315,7 +316,7 @@ xev_handle_keypress(XEvent *ee)
|
||||
}
|
||||
|
||||
/*
|
||||
* This is only used for the alt suppression detection.
|
||||
* This is only used for the modifier suppression detection.
|
||||
*/
|
||||
static void
|
||||
xev_handle_keyrelease(XEvent *ee)
|
||||
@@ -323,26 +324,17 @@ xev_handle_keyrelease(XEvent *ee)
|
||||
XKeyEvent *e = &ee->xkey;
|
||||
struct screen_ctx *sc;
|
||||
struct client_ctx *cc;
|
||||
int keysym;
|
||||
int i, keysym;
|
||||
|
||||
sc = screen_fromroot(e->root);
|
||||
cc = client_current();
|
||||
|
||||
keysym = XKeycodeToKeysym(X_Dpy, e->keycode, 0);
|
||||
if (keysym != XK_Alt_L && keysym != XK_Alt_R)
|
||||
return;
|
||||
|
||||
sc->altpersist = 0;
|
||||
|
||||
/*
|
||||
* XXX - better interface... xevents should not know about
|
||||
* how/when to mtf.
|
||||
*/
|
||||
client_mtf(NULL);
|
||||
|
||||
if (cc != NULL) {
|
||||
group_sticky_toggle_exit(cc);
|
||||
XUngrabKeyboard(X_Dpy, CurrentTime);
|
||||
keysym = XkbKeycodeToKeysym(X_Dpy, e->keycode, 0, 0);
|
||||
for (i = 0; i < nitems(modkeys); i++) {
|
||||
if (keysym == modkeys[i]) {
|
||||
client_cycle_leave(sc, cc);
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user