Beispiel #1
0
int main(int, char **)
{
    // need XGenericEventCookie for XInput2 to work
    Display *dpy = 0;
    XEvent xevent;
    if (XGetEventData(dpy, &xevent.xcookie)) {
        XFreeEventData(dpy, &xevent.xcookie);
    }

    XIEvent *xievent;
    xievent = 0;

    XIDeviceEvent *xideviceevent;
    xideviceevent = 0;

    XIHierarchyEvent *xihierarchyevent;
    xihierarchyevent = 0;

    int deviceid = 0;
    int len = 0;
    Atom *atoms = XIListProperties(dpy, deviceid, &len);
    if (atoms)
        XFree(atoms);

    return 0;
}
XlibTouchpad* XlibBackend::findTouchpad()
{
    int nDevices = 0;
    QScopedPointer<XDeviceInfo, DeviceListDeleter>
            deviceInfo(XListInputDevices(m_display.data(), &nDevices));

    for (XDeviceInfo *info = deviceInfo.data();
         info < deviceInfo.data() + nDevices; info++)
    {
        // Make sure device is touchpad
        if (info->type != m_touchpadAtom.atom()) {
            continue;
        }
        int nProperties = 0;
        QSharedPointer<Atom> properties(
                    XIListProperties(m_display.data(), info->id,
                                     &nProperties), XDeleter);

        Atom *atom = properties.data(), *atomEnd = properties.data() + nProperties;
        for (; atom != atomEnd; atom++) {
            if (*atom == m_libinputIdentifierAtom.atom()) {
                return new LibinputTouchpad(m_display.data(), info->id);
            } else if (*atom == m_synapticsIdentifierAtom.atom()) {
                return new SynapticsTouchpad(m_display.data(), info->id);
            }
        }
    }

    return nullptr;
}
Beispiel #3
0
static int
list_props_xi2(Display *dpy, int argc, char** argv, char* name, char *desc)
{
    XIDeviceInfo *info;
    int         i;
    int         nprops;
    Atom        *props;

    if (argc == 0)
    {
        fprintf(stderr, "Usage: xinput %s %s\n", name, desc);
        return EXIT_FAILURE;
    }

    for (i = 0; i < argc; i++)
    {
        info = xi2_find_device_info(dpy, argv[i]);
        if (!info)
        {
            fprintf(stderr, "unable to find device %s\n", argv[i]);
            continue;
        }

        props = XIListProperties(dpy, info->deviceid, &nprops);
        if (!nprops)
        {
            printf("Device '%s' does not report any properties.\n", info->name);
            continue;
        }

        printf("Device '%s':\n", info->name);
        while(nprops--)
        {
            print_property_xi2(dpy, info->deviceid, props[nprops]);
        }

        XFree(props);
    }
    return EXIT_SUCCESS;
}