debian/changelog | 1 debian/control | 2 debian/local/input_id.c | 183 ------------------------------------------------ debian/rules | 9 -- 4 files changed, 3 insertions(+), 192 deletions(-)
New commits: commit 8a110835af10ed24a9e0a4ace207d94f45f44d0a Author: Julien Cristau <jcris...@debian.org> Date: Mon Jan 4 16:55:08 2010 +0000 Remove our copy of input_id, add Depends on new enough udev instead. diff --git a/debian/changelog b/debian/changelog index a6f8246..9fd3e9a 100644 --- a/debian/changelog +++ b/debian/changelog @@ -5,6 +5,7 @@ xorg-server (2:1.7.3.901-2) UNRELEASED; urgency=low [ Julien Cristau ] * Add xserver-common dependency on x11-xkb-utils for xkbcomp. + * Remove our copy of input_id, add Depends on new enough udev instead. -- Timo Aaltonen <tjaal...@ubuntu.com> Mon, 14 Dec 2009 11:21:42 +0200 diff --git a/debian/control b/debian/control index a0cbaad..c598630 100644 --- a/debian/control +++ b/debian/control @@ -86,9 +86,9 @@ Depends: xserver-common (>= ${source:Version}), xserver-xorg, keyboard-configuration [linux-any kfreebsd-any], + udev (>= 149) [linux-any], ${shlibs:Depends}, ${misc:Depends}, - udev [linux-any], Recommends: libgl1-mesa-dri (>= 7.1~rc1) Suggests: xfonts-base, xfonts-100dpi | xfonts-75dpi, xfonts-scalable Conflicts: diff --git a/debian/local/input_id.c b/debian/local/input_id.c deleted file mode 100644 index 21ee6b3..0000000 --- a/debian/local/input_id.c +++ /dev/null @@ -1,183 +0,0 @@ -/* - * input_id - input device classification - * - * Copyright (C) 2009 Martin Pitt <martin.p...@ubuntu.com> - * Portions Copyright (C) 2004 David Zeuthen, <da...@fubar.dk> - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with keymap; if not, write to the Free Software Foundation, - * Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. - */ - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include <limits.h> -#include <linux/input.h> - -#include "libudev.h" - -/* we must use this kernel-compatible implementation */ -#define BITS_PER_LONG (sizeof(unsigned long) * 8) -#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1) -#define OFF(x) ((x)%BITS_PER_LONG) -#define BIT(x) (1UL<<OFF(x)) -#define LONG(x) ((x)/BITS_PER_LONG) -#define test_bit(bit, array) ((array[LONG(bit)] >> OFF(bit)) & 1) - -/* - * Read a capability attribute and return bitmask. - * @param dev udev_device - * @param attr sysfs attribute name (e. g. "capabilities/key") - * @param bitmask: Output array; must have max_size elements - */ -static void get_cap_mask (struct udev_device *dev, const char* attr, - unsigned long *bitmask, size_t max_size) -{ - char text[4096]; - int i; - char* word; - unsigned long val; - - snprintf(text, sizeof(text), "%s", udev_device_get_sysattr_value(dev, attr)); - - memset (bitmask, 0, max_size); - i = 0; - while ((word = strrchr(text, ' ')) != NULL) { - val = strtoul (word+1, NULL, 16); - bitmask[i] = val; - *word = '\0'; - ++i; - } - val = strtoul (text, NULL, 16); - bitmask[i] = val; -} - -/* pointer devices */ -static void test_pointers (const unsigned long* bitmask_ev, - const unsigned long* bitmask_abs, - const unsigned long* bitmask_key, - const unsigned long* bitmask_rel) -{ - int is_mouse = 0; - int is_touchpad = 0; - - if (!test_bit (EV_KEY, bitmask_ev)) - return; - - if (test_bit (EV_ABS, bitmask_ev) && - test_bit (ABS_X, bitmask_abs) && test_bit (ABS_Y, bitmask_abs)) { - if (test_bit (BTN_STYLUS, bitmask_key) || test_bit (BTN_TOOL_PEN, bitmask_key)) - puts("ID_INPUT_TABLET=1"); - else if (test_bit (BTN_TOOL_FINGER, bitmask_key) && !test_bit (BTN_TOOL_PEN, bitmask_key)) - is_touchpad = 1; - else if (test_bit (BTN_TRIGGER, bitmask_key) || - test_bit (BTN_A, bitmask_key) || - test_bit (BTN_1, bitmask_key)) - puts("ID_INPUT_JOYSTICK=1"); - else if (test_bit (BTN_MOUSE, bitmask_key)) - /* This path is taken by VMware's USB mouse, which has - * absolute axes, but no touch/pressure button. */ - is_mouse = 1; - else if (test_bit (BTN_TOUCH, bitmask_key)) - puts("ID_INPUT_TOUCHSCREEN=1"); - } - - if (test_bit (EV_REL, bitmask_ev) && - test_bit (REL_X, bitmask_rel) && test_bit (REL_Y, bitmask_rel) && - test_bit (BTN_MOUSE, bitmask_key)) - is_mouse = 1; - - if (is_mouse) - puts("ID_INPUT_MOUSE=1"); - if (is_touchpad) - puts("ID_INPUT_TOUCHPAD=1"); -} - -/* key like devices */ -static void test_key (const unsigned long* bitmask_ev, - const unsigned long* bitmask_key) -{ - unsigned i; - unsigned long acc; - unsigned long mask; - - /* do we have any KEY_* capability? */ - if (!test_bit (EV_KEY, bitmask_ev)) - return; - - acc = 0; - for (i = 0; i < BTN_MISC/BITS_PER_LONG; ++i) - acc |= bitmask_key[i]; - if (acc > 0) - puts("ID_INPUT_KEY=1"); - - /* the first 32 bits are ESC, numbers, and Q to D; if we have all of - * those, consider it a full keyboard; do not test KEY_RESERVED, though */ - mask = 0xFFFFFFFE; - if ((bitmask_key[0] & mask) == mask) - puts("ID_INPUT_KEYBOARD=1"); -} - -int main (int argc, char** argv) -{ - struct udev *udev; - struct udev_device *dev; - - char devpath[PATH_MAX]; - unsigned long bitmask_ev[NBITS(EV_MAX)]; - unsigned long bitmask_abs[NBITS(ABS_MAX)]; - unsigned long bitmask_key[NBITS(KEY_MAX)]; - unsigned long bitmask_rel[NBITS(REL_MAX)]; - - if (argc != 2) { - fprintf(stderr, "Usage: %s <device path (without /sys)>\n", argv[0]); - exit(1); - } - - /* get the device */ - udev = udev_new(); - if (udev == NULL) - return 1; - - snprintf(devpath, sizeof(devpath), "%s/%s", udev_get_sys_path(udev), argv[1]); - dev = udev_device_new_from_syspath(udev, devpath); - if (dev == NULL) { - fprintf(stderr, "unable to access '%s'\n", devpath); - return 1; - } - - /* walk up the parental chain until we find the real input device; the - * argument is very likely a subdevice of this, like eventN */ - while (dev != NULL && udev_device_get_sysattr_value(dev, "capabilities/ev") == NULL) - dev = udev_device_get_parent_with_subsystem_devtype(dev, "input", NULL); - - /* not an "input" class device */ - if (dev == NULL) - return 0; - - /* Use this as a flag that input devices were detected, so that this - * program doesn't need to be called more than once per device */ - puts("ID_INPUT=1"); - - get_cap_mask (dev, "capabilities/ev", bitmask_ev, sizeof (bitmask_ev)); - get_cap_mask (dev, "capabilities/abs", bitmask_abs, sizeof (bitmask_abs)); - get_cap_mask (dev, "capabilities/rel", bitmask_rel, sizeof (bitmask_rel)); - get_cap_mask (dev, "capabilities/key", bitmask_key, sizeof (bitmask_key)); - - test_pointers(bitmask_ev, bitmask_abs, bitmask_key, bitmask_rel); - - test_key(bitmask_ev, bitmask_key); - - return 0; -} diff --git a/debian/rules b/debian/rules index ca91b2b..d2efc7a 100755 --- a/debian/rules +++ b/debian/rules @@ -141,11 +141,6 @@ obj-$(DEB_BUILD_GNU_TYPE)/config.status: configure CFLAGS="$(CFLAGS)" \ CPPFLAGS="$(CPPFLAGS)" -ifeq ($(DEB_HOST_ARCH_OS), linux) -debian/local/input_id: LDFLAGS=-Wl,-z,defs -ludev -build-stamp: debian/local/input_id -endif - build: build-stamp tests-stamp build-stamp: obj-$(DEB_BUILD_GNU_TYPE)/config.status dh_testdir @@ -172,7 +167,7 @@ clean: xsfclean rm -f m4/lt*.m4 m4/libtool.m4 find -name Makefile.in -delete - dh_clean debian/local/input_id + dh_clean install: build dh_testdir @@ -224,8 +219,6 @@ binary-arch: build install ifeq ($(DEB_HOST_ARCH_OS), linux) install -d debian/xserver-xorg-core/lib/udev/rules.d install -m 644 debian/local/64-xorg-xkb.rules debian/xserver-xorg-core/lib/udev/rules.d - install -d debian/xserver-xorg-core/lib/xorg - install -m 755 debian/local/input_id debian/xserver-xorg-core/lib/xorg endif dh_installdebconf -s dh_installman -s -- To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org