示例#1
0
文件: xinput.c 项目: 4eremuxa/xserver
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");
}
示例#2
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;

    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;
}
示例#3
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;
}
示例#4
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;
}
示例#5
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;
}