static void printdmxinfo(Display *display, int id) { int event_base; int error_base; int major_version, minor_version, patch_version; DMXInputAttributes iinf; Display *backend; char *backendname = NULL; if (!DMXQueryExtension(display, &event_base, &error_base)) return; if (!DMXQueryVersion(display, &major_version, &minor_version, &patch_version)) return; if (major_version == 1 && minor_version == 0) return; /* too old */ if (!DMXGetInputAttributes(display, id, &iinf)) return; printf(" DMX Information: "); if (iinf.detached) printf("detached "); else printf("active "); switch (iinf.inputType) { case DMXLocalInputType: printf("local, %s", core(&iinf)); break; case DMXConsoleInputType: printf("console %s, %s", iinf.name, core(&iinf)); break; case DMXBackendInputType: if (iinf.physicalId >= 0) { if ((backend = XOpenDisplay(iinf.name))) { XExtensionVersion *ext = XGetExtensionVersion(backend, INAME); if (ext && ext != (XExtensionVersion *)NoSuchExtension) { int count, i; XDeviceInfo *devInfo = XListInputDevices(backend, &count); if (devInfo) { for (i = 0; i < count; i++) { if ((unsigned)iinf.physicalId == devInfo[i].id && devInfo[i].name) { backendname = strdup(devInfo[i].name); break; } } XFreeDeviceList(devInfo); } } XCloseDisplay(backend); } } printf("backend o%d/%s",iinf.physicalScreen, iinf.name); if (iinf.physicalId >= 0) printf("/id%d", iinf.physicalId); if (backendname) { printf("=%s", backendname); free(backendname); } printf(" %s", core(&iinf)); break; } printf("\n"); }
int main(int argc, char **argv) { Display *display = NULL; int event_base; int error_base; int major_version, minor_version, patch_version; int screenNum; if (argc != 3) { printf("Usage: %s display screenNum\n", argv[0]); return -1; } if (!(display = XOpenDisplay(argv[1]))) { printf("Cannot open display %s\n", argv[1]); return -1; } screenNum = strtol(argv[2], NULL, 0); if (!DMXQueryExtension(display, &event_base, &error_base)) { printf("DMX extension not present\n"); return -1; } printf("DMX extension present: event_base = %d, error_base = %d\n", event_base, error_base); if (!DMXQueryVersion(display, &major_version, &minor_version, &patch_version)) { printf("Could not get extension version\n"); return -1; } printf("Extension version: %d.%d patch %d\n", major_version, minor_version, patch_version); if (!DMXRemoveScreen(display, screenNum)) printf("Failed to remove screen #%d\n", screenNum); XCloseDisplay(display); return 0; }
int main(int argc, char **argv) { Display *display = NULL; int event_base; int error_base; int major_version, minor_version, patch_version; int status; if (argc != 3) { printf("Usage: %s display id\n", argv[0]); return -1; } if (!(display = XOpenDisplay(argv[1]))) { printf("Cannot open display %s\n", argv[1]); return -1; } if (!DMXQueryExtension(display, &event_base, &error_base)) { printf("DMX extension not present\n"); return -1; } printf("DMX extension present: event_base = %d, error_base = %d\n", event_base, error_base); if (!DMXQueryVersion(display, &major_version, &minor_version, &patch_version)) { printf("Could not get extension version\n"); return -1; } printf("Extension version: %d.%d patch %d\n", major_version, minor_version, patch_version); status = DMXRemoveInput(display, atoi(argv[2])); printf("status = %d\n", status); XCloseDisplay(display); return 0; }
int main(int argc, char **argv) { Display *display = NULL; int event_base; int error_base; int major_version, minor_version, patch_version; int screenNum; DMXScreenAttributes attr; unsigned int mask = 0; if (argc != 4 && argc != 14) { printf ("Usage: %s display screenNum displayName [scrnx scrny scrnw scrnh rootx rooty rootw rooth originx originy]\n", argv[0]); return -1; } if (!(display = XOpenDisplay(argv[1]))) { printf("Cannot open display %s\n", argv[1]); return -1; } screenNum = strtol(argv[2], NULL, 0); if (argc == 14) { mask |= (DMXScreenWindowXoffset | DMXScreenWindowYoffset | DMXScreenWindowWidth | DMXScreenWindowHeight); attr.screenWindowXoffset = strtol(argv[4], NULL, 0); attr.screenWindowYoffset = strtol(argv[5], NULL, 0); attr.screenWindowWidth = strtol(argv[6], NULL, 0); attr.screenWindowHeight = strtol(argv[7], NULL, 0); mask |= (DMXRootWindowXoffset | DMXRootWindowYoffset | DMXRootWindowWidth | DMXRootWindowHeight); attr.rootWindowXoffset = strtol(argv[8], NULL, 0); attr.rootWindowYoffset = strtol(argv[9], NULL, 0); attr.rootWindowWidth = strtol(argv[10], NULL, 0); attr.rootWindowHeight = strtol(argv[11], NULL, 0); mask |= DMXRootWindowXorigin | DMXRootWindowYorigin; attr.rootWindowXorigin = strtol(argv[12], NULL, 0); attr.rootWindowYorigin = strtol(argv[13], NULL, 0); } if (!DMXQueryExtension(display, &event_base, &error_base)) { printf("DMX extension not present\n"); return -1; } printf("DMX extension present: event_base = %d, error_base = %d\n", event_base, error_base); if (!DMXQueryVersion(display, &major_version, &minor_version, &patch_version)) { printf("Could not get extension version\n"); return -1; } printf("Extension version: %d.%d patch %d\n", major_version, minor_version, patch_version); if (!DMXAddScreen(display, argv[3], mask, &attr, &screenNum)) printf("Failed to add %s as screen #%d\n", argv[2], screenNum); XCloseDisplay(display); return 0; }
int main(int argc, char *argv[]) { const char *displayName = NULL; Display *dpy; int event_base, error_base; int scr, n; long vinfoMask, attrMask; XVisualInfo vinfoTemp, *visInfo; Visual *vis; Window win, root; XSetWindowAttributes attr; XFontStruct *fontInfo; GC gc; if (argc > 1) { displayName = argv[1]; } dpy = XOpenDisplay(displayName); if (!dpy) { fprintf(stderr, "Unable to open display %s\n", displayName); return -1; } if (!DMXQueryExtension(dpy, &event_base, &error_base)) { fprintf(stderr, "DMX extension not available on this display.\n"); return -1; } scr = DefaultScreen(dpy); root = RootWindow(dpy, scr); vis = DefaultVisual(dpy, scr); vinfoMask = VisualIDMask; vinfoTemp.visualid = vis->visualid; visInfo = XGetVisualInfo(dpy, vinfoMask, &vinfoTemp, &n); if (!visInfo || n != 1) { fprintf(stderr, "Unable to get visual!\n"); XCloseDisplay(dpy); return -1; } attr.background_pixel = 0; attr.border_pixel = 0; attr.colormap = XCreateColormap(dpy, root, visInfo->visual, AllocNone); attr.event_mask = StructureNotifyMask | ExposureMask; attrMask = CWBackPixel | CWBorderPixel | CWColormap | CWEventMask; win = XCreateWindow(dpy, root, 500, 500, 600, 400, /* x, y, w, h */ 0, /* border_width */ visInfo->depth, InputOutput, visInfo->visual, attrMask, &attr); if (!win) { fprintf(stderr, "Unable to create window!\n"); XCloseDisplay(dpy); return -1; } fontInfo = XLoadQueryFont(dpy, FontName); if (!fontInfo) { fprintf(stderr, "Error: font %s not found\n", FontName); exit(0); } gc = XCreateGC(dpy, win, 0, NULL); XSetBackground(dpy, gc, BlackPixel(dpy, scr)); XSetForeground(dpy, gc, WhitePixel(dpy, scr)); XSetFont(dpy, gc, fontInfo->fid); XMapWindow(dpy, win); EventLoop(dpy, win, gc); XDestroyWindow(dpy, win); XCloseDisplay(dpy); return 0; }
int main(int argc, char **argv) { Display *display = NULL; int event_base; int error_base; int major_version, minor_version, patch_version; int width, height, shiftX, shiftY, status; DMXDesktopAttributes attr; unsigned int mask; if (argc != 6) { printf("Usage: %s display width height shiftX shiftY\n", argv[0]); return -1; } if (!(display = XOpenDisplay(argv[1]))) { printf("Cannot open display %s\n", argv[1]); return -1; } width = strtol(argv[2], NULL, 0); height = strtol(argv[3], NULL, 0); shiftX = strtol(argv[4], NULL, 0); shiftY = strtol(argv[5], NULL, 0); if (!DMXQueryExtension(display, &event_base, &error_base)) { printf("DMX extension not present\n"); return -1; } printf("DMX extension present: event_base = %d, error_base = %d\n", event_base, error_base); if (!DMXQueryVersion(display, &major_version, &minor_version, &patch_version)) { printf("Could not get extension version\n"); return -1; } printf("Extension version: %d.%d patch %d\n", major_version, minor_version, patch_version); mask = (DMXDesktopWidth | DMXDesktopHeight | DMXDesktopShiftX | DMXDesktopShiftY); attr.width = width; attr.height = height; attr.shiftX = shiftX; attr.shiftY = shiftY; switch (status = DMXChangeDesktopAttributes(display, mask, &attr)) { case DmxBadXinerama: printf("status = %d (No Xinerama)\n", status); break; case DmxBadValue: printf("status = %d (Bad Value)\n", status); break; case Success: printf("status = %d (Success)\n", status); break; default: printf("status = %d (UNKNOWN ERROR *****)\n", status); break; } XCloseDisplay(display); return 0; }