#include #include #include #include Display *dpy; Rotation r = 0; void rotate() { Rotation old_r = r; char buf[256]; char *r_name; XRRRotations(dpy, DefaultScreen(dpy), &r); if (old_r == r) return; switch (r) { case RR_Rotate_0: r_name = "none"; break; case RR_Rotate_90: r_name = "ccw"; break; case RR_Rotate_180: r_name = "half"; break; case RR_Rotate_270: r_name = "cw"; break; default: return; } snprintf(buf, 255, "xsetwacom set stylus rotate %s", r_name); system(buf); } int main(int argc, char *argv[]) { XEvent ev; int event_basep; int error_basep; dpy = XOpenDisplay(NULL); //TODO if (!dpy) { fprintf(stderr, "Couldn't open display\n"); exit(-1); } if (!XRRQueryExtension(dpy, &event_basep, &error_basep)) { fprintf(stderr, "RandR not available\n"); exit(-1); } XRRSelectInput(dpy, DefaultRootWindow(dpy), RRScreenChangeNotifyMask); while (1) { XNextEvent(dpy, &ev); if (ev.type == event_basep) { XRRUpdateConfiguration(&ev); rotate(); } } }