def record_context(dpy, ev_ranges, dev_ranges): ev_ranges = coalesce_ranges(ev_ranges) dev_ranges = coalesce_ranges(dev_ranges) specs = max(len(ev_ranges), len(dev_ranges)) range_specs = (xlib.POINTER(xlib.XRecordRange) * specs)() for i in range(specs): range_specs[i] = xlib.XRecordAllocRange() if len(ev_ranges) > i: range_specs[i].contents.delivered_events.first = ev_ranges[i][0] range_specs[i].contents.delivered_events.last = ev_ranges[i][1] if len(dev_ranges) > i: range_specs[i].contents.device_events.first = dev_ranges[i][0] range_specs[i].contents.device_events.last = dev_ranges[i][1] rec_ctx = xlib.XRecordCreateContext( dpy, 0, xlib.byref(xlib.c_ulong(xlib.XRecordAllClients)), 1, range_specs, specs) for i in range(specs): xlib.XFree(range_specs[i]) return rec_ctx
def record_context(dpy, ev_range, dev_range): range_spec = xlib.XRecordAllocRange() range_spec.contents.delivered_events.first = ev_range[0] range_spec.contents.delivered_events.last = ev_range[1] range_spec.contents.device_events.first = dev_range[0] range_spec.contents.device_events.last = dev_range[1] rec_ctx = xlib.XRecordCreateContext( dpy, 0, xlib.byref(xlib.c_ulong(xlib.XRecordAllClients)), 1, xlib.byref(range_spec), 1) xlib.XFree(range_spec) return rec_ctx