+cyclescr(struct swm_region *r, union arg *args)
+{
+ struct swm_region *rr;
+ int i;
+
+ i = r->s->idx;
+ switch (args->id) {
+ case SWM_ARG_ID_CYCLESC_UP:
+ rr = TAILQ_NEXT(r, entry);
+ if (rr == NULL)
+ rr = TAILQ_FIRST(&screens[i].rl);
+ break;
+ case SWM_ARG_ID_CYCLESC_DOWN:
+ rr = TAILQ_PREV(r, swm_region_list, entry);
+ if (rr == NULL)
+ rr = TAILQ_LAST(&screens[i].rl, swm_region_list);
+ break;
+ default:
+ return;
+ };
+ unfocus_all();
+ XSetInputFocus(display, PointerRoot, RevertToPointerRoot, CurrentTime);
+ XWarpPointer(display, None, rr->s[i].root, 0, 0, 0, 0, rr->g.x,
+ rr->g.y + bar_enabled ? bar_height : 0);
+}
+
+void