configure.ac | 2 +- man/evdev.man | 2 +- src/emuMB.c | 5 +++++ src/evdev.c | 28 +++++++++++++++------------- src/evdev.h | 32 +++++++++++++++++++++++++------- 5 files changed, 47 insertions(+), 22 deletions(-)
New commits: commit 11d506dce6363525e80eda219aee8af429fb302e Author: Peter Hutterer <peter.hutte...@who-t.net> Date: Tue Jan 13 11:32:05 2009 +1000 evdev 2.1.1 diff --git a/configure.ac b/configure.ac index f668d1e..28294e6 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-input-evdev], - 2.1.0, + 2.1.1, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-input-evdev) commit a34a2cd3476441f29c9faa79ffa9289dbf2eebf4 Author: Michael Chapman <m...@very.puzzling.org> Date: Fri Jan 9 19:07:10 2009 +1100 Disable middle mouse button emulation when a middle mouse button event is registered Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> (cherry picked from commit 0592d97fbb5a1241ee79397ce9203346d050a9f9) diff --git a/src/emuMB.c b/src/emuMB.c index e5a767a..028d27f 100644 --- a/src/emuMB.c +++ b/src/emuMB.c @@ -231,6 +231,11 @@ EvdevMBEmuFilterEvent(InputInfoPtr pInfo, int button, BOOL press) if (!pEvdev->emulateMB.enabled) return ret; + if (button == 2) { + EvdevMBEmuEnable(pInfo, FALSE); + return ret; + } + /* don't care about other buttons */ if (button != 1 && button != 3) return ret; commit 78c00bd77f983aa22611c9966fbcb7e22453b588 Author: Matt Helsley <matt.hels...@gmail.com> Date: Tue Jan 13 11:03:04 2009 +1000 Fix FOO_MAX off-by-one In linux/input.h each section's (e.g. ABS) FOO_MAX is the maximum FOO value. Recent kernels define FOO_CNT as the maximum number of FOO there will ever be. Hence using FOO_MAX to size the bit vectors representing the capabilities of an evdev device is off by one. Define FOO_CNT values for use with Linux kernels which lack them. Use FOO_CNT whenever we need to know the number of bits needed -- usually to calculate the number of longs needed. When iterating over the values FOO_MAX still seems appropriate however the loop test should include FOO_MAX rather than skip it. Signed-off-by: Matt Helsley <matt.hels...@gmail.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> (cherry picked from commit 4dfd86b2201b2b19761a1abb3c580cecf0060224) Conflicts: src/evdev.c diff --git a/src/evdev.c b/src/evdev.c index e48edd9..5601caa 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -236,7 +236,7 @@ static void PostKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value) { int code = ev->code + MIN_KEYCODE; - static char warned[KEY_MAX]; + static char warned[KEY_CNT]; /* filter repeat events for chording keys */ if (value == 2 && @@ -248,7 +248,7 @@ PostKbdEvent(InputInfoPtr pInfo, struct input_event *ev, int value) ev->code == KEY_SCROLLLOCK)) /* XXX windows keys? */ return; - if (code > 255 && ev->code < KEY_MAX) { + if (code > 255 && ev->code <= KEY_MAX) { if (!warned[ev->code]) xf86Msg(X_WARNING, "%s: unable to handle keycode %d\n", pInfo->name, ev->code); @@ -1202,12 +1202,12 @@ EvdevCacheCompare(InputInfoPtr pInfo, BOOL compare) int i; char name[1024] = {0}; - long bitmask[NLONGS(EV_MAX)] = {0}; - long key_bitmask[NLONGS(KEY_MAX)] = {0}; - long rel_bitmask[NLONGS(REL_MAX)] = {0}; - long abs_bitmask[NLONGS(ABS_MAX)] = {0}; - long led_bitmask[NLONGS(LED_MAX)] = {0}; - struct input_absinfo absinfo[ABS_MAX]; + long bitmask[NLONGS(EV_CNT)] = {0}; + long key_bitmask[NLONGS(KEY_CNT)] = {0}; + long rel_bitmask[NLONGS(REL_CNT)] = {0}; + long abs_bitmask[NLONGS(ABS_CNT)] = {0}; + long led_bitmask[NLONGS(LED_CNT)] = {0}; + struct input_absinfo absinfo[ABS_CNT]; if (ioctl(pInfo->fd, EVIOCGNAME(sizeof(name) - 1), name) < 0) { @@ -1266,7 +1266,7 @@ EvdevCacheCompare(InputInfoPtr pInfo, BOOL compare) memset(absinfo, 0, sizeof(absinfo)); - for (i = 0; i < ABS_MAX; i++) + for (i = ABS_X; i <= ABS_MAX; i++) { if (TestBit(i, abs_bitmask)) { @@ -1302,9 +1302,9 @@ error: static int EvdevProbe(InputInfoPtr pInfo) { - long key_bitmask[NLONGS(KEY_MAX)] = {0}; - long rel_bitmask[NLONGS(REL_MAX)] = {0}; - long abs_bitmask[NLONGS(ABS_MAX)] = {0}; + long key_bitmask[NLONGS(KEY_CNT)] = {0}; + long rel_bitmask[NLONGS(REL_CNT)] = {0}; + long abs_bitmask[NLONGS(ABS_CNT)] = {0}; int i, has_axes, has_keys, num_buttons; int kernel24 = 0; EvdevPtr pEvdev = pInfo->private; diff --git a/src/evdev.h b/src/evdev.h index 107dc77..cdbc87d 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -40,6 +40,22 @@ #include <xkbstr.h> #endif +#ifndef EV_CNT /* linux 2.4 kernels and earlier lack _CNT defines */ +#define EV_CNT (EV_MAX+1) +#endif +#ifndef KEY_CNT +#define KEY_CNT (KEY_MAX+1) +#endif +#ifndef REL_CNT +#define REL_CNT (REL_MAX+1) +#endif +#ifndef ABS_CNT +#define ABS_CNT (ABS_MAX+1) +#endif +#ifndef LED_CNT +#define LED_CNT (LED_MAX+1) +#endif + #define EVDEV_MAXBUTTONS 32 #if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3 @@ -122,12 +138,12 @@ typedef struct { /* Cached info from device. */ char name[1024]; - long bitmask[NLONGS(EV_MAX)]; - long key_bitmask[NLONGS(KEY_MAX)]; - long rel_bitmask[NLONGS(REL_MAX)]; - long abs_bitmask[NLONGS(ABS_MAX)]; - long led_bitmask[NLONGS(LED_MAX)]; - struct input_absinfo absinfo[ABS_MAX]; + long bitmask[NLONGS(EV_CNT)]; + long key_bitmask[NLONGS(KEY_CNT)]; + long rel_bitmask[NLONGS(REL_CNT)]; + long abs_bitmask[NLONGS(ABS_CNT)]; + long led_bitmask[NLONGS(LED_CNT)]; + struct input_absinfo absinfo[ABS_CNT]; /* minor/major number */ dev_t min_maj; commit 760f1c6bb184e3b48ca6a6bfe8942d306f378148 Author: Matt Helsley <matt.hels...@gmail.com> Date: Sun Jan 11 18:04:40 2009 -0800 rename NBITS to NLONGS to reflect its actual meaning NBITS really convers the number of bits passed as its argument into a number of longs. This is somewhat atypical of many function-like-macro names. Rename it to NLONGS. Signed-off-by: Matt Helsley <matt.hels...@gmail.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> (cherry-picked from commit d3fd42d8644310abcae23bbf534f8c445296bcb7) Not really required, but it makes cherry-picking 4dfd86b2201b2b19761a1abb3c580cecf0060224 easier. diff --git a/src/evdev.c b/src/evdev.c index 2c73c67..e48edd9 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1202,11 +1202,11 @@ EvdevCacheCompare(InputInfoPtr pInfo, BOOL compare) int i; char name[1024] = {0}; - long bitmask[NBITS(EV_MAX)] = {0}; - long key_bitmask[NBITS(KEY_MAX)] = {0}; - long rel_bitmask[NBITS(REL_MAX)] = {0}; - long abs_bitmask[NBITS(ABS_MAX)] = {0}; - long led_bitmask[NBITS(LED_MAX)] = {0}; + long bitmask[NLONGS(EV_MAX)] = {0}; + long key_bitmask[NLONGS(KEY_MAX)] = {0}; + long rel_bitmask[NLONGS(REL_MAX)] = {0}; + long abs_bitmask[NLONGS(ABS_MAX)] = {0}; + long led_bitmask[NLONGS(LED_MAX)] = {0}; struct input_absinfo absinfo[ABS_MAX]; if (ioctl(pInfo->fd, @@ -1302,9 +1302,9 @@ error: static int EvdevProbe(InputInfoPtr pInfo) { - long key_bitmask[NBITS(KEY_MAX)] = {0}; - long rel_bitmask[NBITS(REL_MAX)] = {0}; - long abs_bitmask[NBITS(ABS_MAX)] = {0}; + long key_bitmask[NLONGS(KEY_MAX)] = {0}; + long rel_bitmask[NLONGS(REL_MAX)] = {0}; + long abs_bitmask[NLONGS(ABS_MAX)] = {0}; int i, has_axes, has_keys, num_buttons; int kernel24 = 0; EvdevPtr pEvdev = pInfo->private; diff --git a/src/evdev.h b/src/evdev.h index af88741..107dc77 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -47,7 +47,9 @@ #endif #define LONG_BITS (sizeof(long) * 8) -#define NBITS(x) (((x) + LONG_BITS - 1) / LONG_BITS) + +/* Number of longs needed to hold the given number of bits */ +#define NLONGS(x) (((x) + LONG_BITS - 1) / LONG_BITS) /* axis specific data for wheel emulation */ typedef struct { @@ -120,11 +122,11 @@ typedef struct { /* Cached info from device. */ char name[1024]; - long bitmask[NBITS(EV_MAX)]; - long key_bitmask[NBITS(KEY_MAX)]; - long rel_bitmask[NBITS(REL_MAX)]; - long abs_bitmask[NBITS(ABS_MAX)]; - long led_bitmask[NBITS(LED_MAX)]; + long bitmask[NLONGS(EV_MAX)]; + long key_bitmask[NLONGS(KEY_MAX)]; + long rel_bitmask[NLONGS(REL_MAX)]; + long abs_bitmask[NLONGS(ABS_MAX)]; + long led_bitmask[NLONGS(LED_MAX)]; struct input_absinfo absinfo[ABS_MAX]; /* minor/major number */ commit 2db04ba3c35e4976b34d92f8f7c6c2c9ec09f3ab Author: Alan Coopersmith <alan.coopersm...@sun.com> Date: Fri Jan 9 16:13:09 2009 -0800 Remove xorgconfig & xorgcfg from See Also list in man page (cherry picked from commit 0f0a149067abdd1ed89717de43febe89b2a3490b) diff --git a/man/evdev.man b/man/evdev.man index cf087e8..c38a2c2 100644 --- a/man/evdev.man +++ b/man/evdev.man @@ -201,5 +201,5 @@ server, such as touchscreens that require run-time calibration. .SH AUTHORS Kristian Høgsberg. .SH "SEE ALSO" -__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__), +__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__), README.mouse. commit 363d0bdb9fcae7f57f53c50667429ac9b37d41cc Author: Yan Li <yan.i...@intel.com> Date: Mon Jan 5 16:35:09 2009 +0800 Fix XkbModel parsing error Signed-off-by: Yan Li <yan.i...@intel.com> Signed-off-by: Peter Hutterer <peter.hutte...@who-t.net> (cherry picked from commit d170cba0cdd8f7a2e500e094f5b21fc33aefb52a) diff --git a/src/evdev.c b/src/evdev.c index 921f9ff..2c73c67 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -854,7 +854,7 @@ EvdevAddKeyClass(DeviceIntPtr device) SetXkbOption(pInfo, "xkb_rules", &pEvdev->xkb_rules); SetXkbOption(pInfo, "xkb_model", &pEvdev->xkb_model); if (!pEvdev->xkb_model) - SetXkbOption(pInfo, "XkbModel", &pEvdev->xkb_rules); + SetXkbOption(pInfo, "XkbModel", &pEvdev->xkb_model); SetXkbOption(pInfo, "xkb_layout", &pEvdev->xkb_layout); if (!pEvdev->xkb_layout) SetXkbOption(pInfo, "XkbLayout", &pEvdev->xkb_layout); commit 16a26a1eca6395284fcb8e62be7b2bc30becb0d3 Author: Peter Hutterer <peter.hutte...@redhat.com> Date: Wed Nov 26 15:01:57 2008 +1000 Finalize MB emu (and wakeup handlers) before closing the fd. Signed-off-by: Peter Hutterer <peter.hutte...@redhat.com> (cherry picked from commit 2bf6e29b40f0da2bc417964fd2bd819306e5d3ed) diff --git a/src/evdev.c b/src/evdev.c index 25325a3..921f9ff 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -1150,6 +1150,8 @@ EvdevProc(DeviceIntPtr device, int what) return EvdevOn(device); case DEVICE_OFF: + if (pEvdev->flags & EVDEV_INITIALIZED) + EvdevMBEmuFinalize(pInfo); if (pInfo->fd != -1) { if (pEvdev->grabDevice && ioctl(pInfo->fd, EVIOCGRAB, (void *)0)) -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org