evdev: support for touchscreens not providing BTN_TOUCH

Peter Korsgaard jacmet at sunsite.dk
Sun May 22 13:53:37 PDT 2011

>>>>> "Chris" == Chris Bagwell <chris at cnpbagwell.com> writes:


 Chris> I don't think you can do much on xf86-input-evdev side to solve
 Chris> this issue.  The HW designers attempted to default to something
 Chris> so you could limp along until a custom driver can take over but
 Chris> they made some bad choices.

Notice that this touchscreen works out of the box on Windows without any
custom driver (just the standard HID).

 Chris> You can argue that xf86-input-evdev should be defaulting to
 Chris> TOUCHPAD or TOUCHSCREEN anytime it it detects ABS_X and ABS_Y
 Chris> but no REL_X and REL_Y.  That would get you a little further to
 Chris> usability.  At least the cursor would move around.


 Chris> But then the hardware is sending a left button press when you touch
 Chris> screen instead of a pressure or finger tip indication.  So you can
 Chris> move the cursor around the screen but you'll constantly be dragging
 Chris> stuff around or mis-selecting something.  There is nothing that
 Chris> xf86-input-evdev can do short of adding an optional hack to treat
 Chris> button press as finger pressure.

But we already convert BTN_TOUCH to BTN_LEFT in xf86-input-evdev?

        case BTN_TOUCH:
            /* For devices that have but don't use proximity, use
             * BTN_TOUCH as the proximity notifier */
            if (!pEvdev->use_proximity)
                pEvdev->in_proximity = value ? ev->code : 0;
            if (!(pEvdev->flags & (EVDEV_TOUCHSCREEN | EVDEV_TABLET)))
            /* Treat BTN_TOUCH from devices that only have BTN_TOUCH as
             * BTN_LEFT. */
            ev->code = BTN_LEFT;

So it should afaik just work if we would default to touchscreen rather
than mouse in this case.

Peter, would you accept a patch doing that?

 Chris> So in this case, its really best to get kernel side working right.

The controller uses the USB HID class, so there's no custom driver
involved atm.

Bye, Peter Korsgaard

More information about the xorg-devel mailing list