HT2XOP4QWSOZYYCJCLY6KRWL34DWVO2LNMCPBDY2Z5E73AYPHMAAC
LOHDGUC5DSHX2YPEG7H6ZWTLAEA3RYKIAIAWHI7PQFTLANV6EKJAC
NF4L6UDUFFI3C45XZ6K7QMMY2OQGFDPKX5PWC3YDDO2FE3G7X6HAC
4QUF4MKRSB5LYYS5FSYTCDSIEMYIERI2BQZLRGJ3GIGVYCPJVEPAC
7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC
J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC
7L3TU7JVWPBPHN7WF4TJ263BZ6BC3AYRRW6PULFUP5JZUGWWNUSAC
D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC
BOH54DATFCM5ZC6GDQKEU23PQSIOOINLX3UAI47STL7PP56PQUYAC
2GP4MXKEDQMZ7E6TCRSMV2AGN7HLEAHR3QEAC2QFCQQNPMNJSIHQC
7XCGFU3GX4TQXZBOU7GFAQ62EEOTVRNWFYQGI3XULFPSUKDZ2EYAC
}
int
ongesture(struct wlr_pointer_swipe_end_event *event)
{
struct wlr_keyboard *keyboard;
uint32_t mods;
const Gesture *g;
unsigned int motion;
unsigned int adx = (int)round(fabs(swipe_dx));
unsigned int ady = (int)round(fabs(swipe_dy));
int handled = 0;
if (event->cancelled) {
return handled;
}
// Require absolute distance movement beyond a small thresh-hold
if (adx * adx + ady * ady < abzsquare) {
return handled;
}
if (adx > ady) {
motion = swipe_dx < 0 ? SWIPE_LEFT : SWIPE_RIGHT;
} else {
motion = swipe_dy < 0 ? SWIPE_UP : SWIPE_DOWN;
}
keyboard = wlr_seat_get_keyboard(seat);
mods = keyboard ? wlr_keyboard_get_modifiers(keyboard) : 0;
for (g = gestures; g < END(gestures); g++) {
if (CLEANMASK(mods) == CLEANMASK(g->mod) &&
swipe_fingers == g->fingers_count &&
motion == g->motion && g->func) {
g->func(&g->arg);
handled = 1;
}
}
return handled;
static const Gesture gestures[] = {
// { MODKEY, SWIPE_LEFT, 4, shiftview, { .i = 1 } },
// { MODKEY, SWIPE_RIGHT, 4, shiftview, { .i = -1 } },
{ MODKEY, SWIPE_UP, 3, focusstack, {.i = 1} },
{ MODKEY, SWIPE_DOWN, 3, focusstack, {.i = -1} },
};