HT2XOP4QWSOZYYCJCLY6KRWL34DWVO2LNMCPBDY2Z5E73AYPHMAAC LOHDGUC5DSHX2YPEG7H6ZWTLAEA3RYKIAIAWHI7PQFTLANV6EKJAC NF4L6UDUFFI3C45XZ6K7QMMY2OQGFDPKX5PWC3YDDO2FE3G7X6HAC 4QUF4MKRSB5LYYS5FSYTCDSIEMYIERI2BQZLRGJ3GIGVYCPJVEPAC 7B74AT3BXYB7PVW4F6SGQNPMHOU5TEV5TZ54CG6VSQI46XSEKWXQC J6OSBEBQXZR5JZ5TOCCUPELBPUVEQULGCXURXLPY7WFYTDEQOU2AC 7L3TU7JVWPBPHN7WF4TJ263BZ6BC3AYRRW6PULFUP5JZUGWWNUSAC D425ND7AT3F7QJ3CCSESMVDOC3J5C5P32M5SJDBHECZJXLHNQ2FAC BOH54DATFCM5ZC6GDQKEU23PQSIOOINLX3UAI47STL7PP56PQUYAC 2GP4MXKEDQMZ7E6TCRSMV2AGN7HLEAHR3QEAC2QFCQQNPMNJSIHQC 7XCGFU3GX4TQXZBOU7GFAQ62EEOTVRNWFYQGI3XULFPSUKDZ2EYAC }intongesture(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-holdif (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} },};