aboutsummaryrefslogtreecommitdiff
path: root/src/evdev.h
diff options
context:
space:
mode:
authorMichael Witten <mfwitten@gmail.com>2009-08-04 03:11:49 -0500
committerPeter Hutterer <peter.hutterer@who-t.net>2009-08-06 14:06:24 +1000
commitf352598e45be86f9e24d9dba88c657f03f3b168e (patch)
tree2520d0f6139700c40c26f1816d2d5f1809433e88 /src/evdev.h
parentevdev: Use the EvdevPost...Event() functions in the emulation code. (diff)
downloadxf86-input-evdev-f352598e45be86f9e24d9dba88c657f03f3b168e.tar.gz
xf86-input-evdev-f352598e45be86f9e24d9dba88c657f03f3b168e.tar.bz2
xf86-input-evdev-f352598e45be86f9e24d9dba88c657f03f3b168e.zip
evdev.c: Fix/improve discrimination of rel/abs axes
The relevant comment from evdev.c: We don't allow relative and absolute axes on the same device. The reason is that some devices (MS Optical Desktop 2000) register both rel and abs axes for x/y. The abs axes register min/max; this min/max then also applies to the relative device (the mouse) and caps it at 0..255 for both axes. So, unless you have a small screen, you won't be enjoying it much; consequently, absolute axes are generally ignored. However, currenly only a device with absolute axes can be registered as a touch{pad,screen}. Thus, given such a device, absolute axes are used and relative axes are ignored. The code for initializing abs/rel axes has been abstracted out into 3 functions, so that initialization in EvdevInit(device) is as easy as: if (pEvdev->flags & (EVDEV_TOUCHPAD | EVDEV_TOUCHSCREEN)) EvdevInitTouchDevice(device, pEvdev); else if (pEvdev->flags & EVDEV_RELATIVE_EVENTS) EvdevInitRelClass(device, pEvdev); else if (pEvdev->flags & EVDEV_ABSOLUTE_EVENTS) EvdevInitAbsClass(device, pEvdev); Signed-off-by: Michael Witten <mfwitten@gmail.com> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Diffstat (limited to 'src/evdev.h')
0 files changed, 0 insertions, 0 deletions