Touchscreens are devices that do not have buttons and only advertise
BTN_TOUCH. Add a new flag to note the device type.
If BTN_TOUCH is detected, change it to BTN_LEFT and process it normally.
We now have the matching code in the server to set the console to RAW mode and
don't need to grab the devices anymore.
This is an updated version of e8534d47c8, which
was reverted in 6dc4199155.
If we only have keys > 255 we don't set up a key class rec, so don't post
them. It makes the server unhappy.
Signed-off-by: Julien Cristau <jcristau@debian.org>
Call the PreInit functions for MB Emulation, wheel emu, and draglock during
PreInit, not on DEVICE_INIT. This way, we only parse the options once and
don't overwrite with defaults when coming back from a VT switch.
This allows the reopen logic to kick in later.
DEVICE_CLOSE gets called on regen, so without this we'd keep a stale
file descriptor in pInfo->fd in subsequent sessions.
Debian bug#496101 (http://bugs.debian.org/496101)
Leaving the fd open means we still get keyboard events after VT switching
away. Coming back, some of these events are replayed on the application that
has the current focus.
Reproduceable:
1. open terminal, focus.
2. VT switch away
3. type something, preferably a password
4. VT switch back, trigger a mouse event
5. Observe the X server guessing your password.
Closing the fd on DEVICE_OFF fixes this. Reopen is handled by the reopen
code introduced with
commit 9930477cbe
Author: Peter Hutterer <peter.hutterer@redhat.com>
Date: Tue Aug 26 14:33:40 2008 +0930
Attempt to re-open devices on read errors.
Launchpad Bug 276887
<https://bugs.edge.launchpad.net/ubuntu/+source/xorg-server/+bug/276887>
This removes a left-over from the early device property code where we could
only have a single handler. Now it's easier to just register the handlers for
each subsystem (emulate wheel, draglock and MB emulation).
Coming back from resume may leave us with a file descriptor that can be opened
but fails on the first read (ENODEV).
In this case, try to open the device until it becomes available or until the
predefined count expires. To be safe, we cache the information from the device
and compare against it when we re-open. This way we ensure that if the
topology changes under us, we don't open a completely different device. If a
device has changed, we disable it.
Adds option "ReopenAttempts" <int>
Even if we don't want EmulateWheel, we can at least init everything to usable
values. This way we only need to toggle "enabled", rather than initialising
the whole lot before usage.
Copied from the wheel inertia property support.
Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>
Support the EmulateWheelTimeout option as the mouse driver does.
Signed-off-by: Dan Nicholson <dbn.lists@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@redhat.com>