+ob_cyc_mask = 0
+ob_cyc_key = 0;
+
+def focus_next_stacked_grab(data):
+ global ob_cyc_mask;
+ global ob_cyc_key;
+
+ if data.action == EventKeyRelease:
+ print "release: " + str(ob_cyc_mask) + "..." + str(data.state)
+ # have all the modifiers this started with been released?
+ if not ob_cyc_mask & data.state:
+ kungrab() # ungrab ourself
+ print "UNGRABBED!"
+ else:
+ print "press: " + str(ob_cyc_mask) + "..." + str(data.state) + \
+ "..." + data.key
+ if ob_cyc_key == data.key:
+ print "CYCLING!!"
+
+def focus_next_stacked(data, forward=1):
+ global ob_cyc_mask;
+ global ob_cyc_key;
+ ob_cyc_mask = data.state
+ ob_cyc_key = data.key
+
+ kgrab(focus_next_stacked_grab)
+ print "GRABBED!"
+ focus_next_stacked_grab(data) # start with the first press
+
+def focus_prev_stacked(data):
+ return
+