X Strike Force X.Org X11 SVN commit: r1039 - in trunk/debian: . patches patches/general
Author: dnusinow
Date: 2006-01-08 20:37:12 -0500 (Sun, 08 Jan 2006)
New Revision: 1039
Removed:
trunk/debian/patches/general/053_lnx_evdev.diff
trunk/debian/patches/general/054_lnx_evdev_mouse.diff
trunk/debian/patches/general/055_lnx_evdev_keyboard.diff
Modified:
trunk/debian/NEWS
trunk/debian/changelog
trunk/debian/patches/series
trunk/debian/xserver-xorg.templates
Log:
* Remove our custom support for evdev in favor of upstream's version
(closes: #325807, #322253, #346460, #346461)
+ Remove general/054_lnx_evdev_mouse.diff, general/053_lnx_evdev.diff, and
general/055_lnx_evdev_keyboard.diff
+ Adjust xserver-xorg.templates to include and load the evdev module by
default
+ Document in NEWS file how to get evdev support working. Thanks to Ian
Wienand for instructions.
Modified: trunk/debian/NEWS
===================================================================
--- trunk/debian/NEWS 2006-01-09 01:17:15 UTC (rev 1038)
+++ trunk/debian/NEWS 2006-01-09 01:37:12 UTC (rev 1039)
@@ -1,3 +1,14 @@
+xorg-x11 (6.9.1.dfsg.1-3) unstable; urgency=low
+
+ * Prior to this release, Debian's version of XFree86 and Xorg used a custom
+ version of evdev support. For this release, we are removing this version
+ and going with the upstream version. If you are using evdev, you'll have
+ to add a 'Load "evdev"' line to your Module section of your xorg.conf. In
+ addition, you'll have to tell your input device that uses evdev to use the
+ "evdev" Driver.
+
+ -- David Nusinow <dnusinow@debian.org> Sun, 8 Jan 2006 20:28:15 -0500
+
xorg-x11 (6.9.1.dfsg.1-2) unstable; urgency=low
* xkb went through significant changes for this release. If your old
Modified: trunk/debian/changelog
===================================================================
--- trunk/debian/changelog 2006-01-09 01:17:15 UTC (rev 1038)
+++ trunk/debian/changelog 2006-01-09 01:37:12 UTC (rev 1039)
@@ -28,8 +28,16 @@
* Raise mouse detection question to high priority when mdetect isn't
present. This will help out LiveCD's. Thanks Robert Millan and Daniel
Stone. (closes: #333921)
+ * Remove our custom support for evdev in favor of upstream's version
+ (closes: #325807, #322253, #346460, #346461)
+ + Remove general/054_lnx_evdev_mouse.diff, general/053_lnx_evdev.diff, and
+ general/055_lnx_evdev_keyboard.diff
+ + Adjust xserver-xorg.templates to include and load the evdev module by
+ default
+ + Document in NEWS file how to get evdev support working. Thanks to Ian
+ Wienand for instructions.
- -- David Nusinow <dnusinow@debian.org> Sun, 8 Jan 2006 20:01:53 -0500
+ -- David Nusinow <dnusinow@debian.org> Sun, 8 Jan 2006 20:32:45 -0500
xorg-x11 (6.9.0.dfsg.1-2) unstable; urgency=low
Deleted: trunk/debian/patches/general/053_lnx_evdev.diff
===================================================================
--- trunk/debian/patches/general/053_lnx_evdev.diff 2006-01-09 01:17:15 UTC (rev 1038)
+++ trunk/debian/patches/general/053_lnx_evdev.diff 2006-01-09 01:37:12 UTC (rev 1039)
@@ -1,1104 +0,0 @@
-$Id$
-
-Implement Linux evdev interface support.
-
-Copyright/license information:
-
- Copyright 2003 Zephaniah E. Hull.
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- ZEPHANIAH E. HULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
- Except as contained in this notice, the name of Zephaniah E. Hull shall
- not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization from
- Zephaniah E. Hull.
-
-Not submitted upstream.
-
-
-Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_evdev.c
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_evdev.c 2005-10-18 21:24:12.000000000 -0400
-@@ -0,0 +1,283 @@
-+/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c,v 1.1 1999/05/17 13:17:18 dawes Exp $ */
-+
-+/*
-+ * Copyright 2003 by Zephaniah E. Hull.
-+ */
-+
-+#include "X.h"
-+#include "xf86.h"
-+#include "xf86Priv.h"
-+#include "xf86_OSlib.h"
-+#include "xf86Xinput.h"
-+#include "xf86OSmouse.h"
-+#include "lnx_evdev.h"
-+#include "mipointer.h"
-+
-+static Bool evdev_alive = FALSE;
-+static evdevDriverPtr evdev_drivers = NULL;
-+static char *evdev_buf;
-+static char evdev_device[23];
-+
-+static int
-+glob_match(const char *pattern, const char *matchp)
-+{
-+ int i, j = 0, ret = 0;
-+ if (!(pattern && matchp))
-+ return (strlen(pattern) == strlen(matchp));
-+
-+ for (i = 0; matchp[i]; i++) {
-+ if (pattern[j] == '\\')
-+ j++;
-+ else if (pattern[j] == '*') {
-+ if (pattern[j + 1]) {
-+ if (!glob_match(pattern+j+1,matchp+i))
-+ return 0;
-+ } else
-+ return 0;
-+ continue;
-+ } else if (pattern[j] == '?') {
-+ j++;
-+ continue;
-+ }
-+
-+ if ((ret = (pattern[j] - matchp[i])))
-+ return ret;
-+
-+ j++;
-+ }
-+ if (!pattern[j] || ((pattern[j] == '*') && !pattern[j + 1]))
-+ return 0;
-+ else
-+ return 1;
-+}
-+
-+
-+int
-+evdevGetFDForDriver (evdevDriverPtr driver)
-+{
-+ char dev[20];
-+ char tmp[256] = "";
-+ int fd, i;
-+
-+ if (!driver)
-+ return -1;
-+
-+ if (driver->device) {
-+ SYSCALL(fd = open (driver->device, O_RDWR | O_NONBLOCK));
-+ return fd;
-+ }
-+
-+ for (i = 0; i < 32; i++) {
-+ snprintf(dev, sizeof(dev), "/dev/input/event%d", i);
-+ SYSCALL(fd = open (dev, O_RDWR | O_NONBLOCK));
-+ if (fd == -1)
-+ continue;
-+
-+#define check(name,get) \
-+ if (name) { \
-+ if (ioctl(fd, get, tmp) == -1) \
-+ tmp[0] = '\0'; \
-+ if (glob_match(name, tmp)) { \
-+ close(fd); \
-+ continue; \
-+ } \
-+ }
-+
-+ check(driver->name, EVIOCGNAME(sizeof(tmp)));
-+ check(driver->phys, EVIOCGPHYS(sizeof(tmp)));
-+#undef check
-+ return fd;
-+ }
-+ return -1;
-+}
-+
-+static void
-+evdevReadInput(InputInfoPtr pInfo)
-+{
-+ int n;
-+ evdevDriverPtr driver;
-+ char *cur, *end;
-+ char *id, *value, *name, *phys, *action;
-+ Bool up;
-+
-+ do {
-+ SYSCALL(n = read(pInfo->fd, evdev_buf, 1022));
-+ evdev_buf[n] = '\n'; /* Just to be extra safe. */
-+ evdev_buf[n + 1] = '\0';/* Just to be extra safe. */
-+
-+ cur = evdev_buf;
-+ while (cur[0] && (end = strchr(cur, '\n')) && (end != cur)) {
-+ name = phys = action = NULL;
-+ if (!strncmp("2.1", cur, 3)) {
-+#define next_sep(sep,end,clr) while (1) { \
-+ if ((*cur == '\n') || (*cur == '\0')) { \
-+ if (end) { \
-+ goto evdevReadInput__finished; \
-+ } else if (clr) \
-+ *cur = '\0'; \
-+ cur++; \
-+ break; \
-+ } else if (*cur == sep) { \
-+ if (clr) \
-+ *cur = '\0'; \
-+ cur++; \
-+ break; \
-+ } \
-+ cur++; \
-+ }
-+
-+ next_sep('\002', 1, 0);
-+loop_start__21:
-+ id = cur;
-+ next_sep('\003', 1, 1);
-+ value = cur;
-+ next_sep('\002', 0, 1);
-+ if (!strcmp(id, "ACTION"))
-+ action = value;
-+ else if (!strcmp(id, "NAME"))
-+ name = value;
-+ else if (!strcmp(id, "PHYS"))
-+ phys = value;
-+ if (*cur != '\n')
-+ goto loop_start__21;
-+#undef next_sep
-+ }
-+evdevReadInput__finished:
-+
-+ if (!(action && name && phys)) {
-+ xf86Msg(X_ERROR,"%s: Incomplete command! -%s-%s-%s-\n",
-+ pInfo->name, action, name, phys);
-+ } else {
-+ if (!strcmp(action, "add"))
-+ up = TRUE;
-+ else
-+ up = FALSE;
-+
-+ for (driver = evdev_drivers; driver; driver = driver->next) {
-+ if (driver->name && glob_match(name, driver->name))
-+ continue;
-+ if (driver->phys && glob_match(phys, driver->phys))
-+ continue;
-+ if (up)
-+ driver->callback(driver->cb_data, DEVICE_ON);
-+ else
-+ driver->callback(driver->cb_data, DEVICE_OFF);
-+ }
-+ }
-+ cur = end + 1;
-+ }
-+ } while (xf86WaitForInput(pInfo->fd, 0));
-+ return;
-+}
-+
-+static void
-+evdevSigioReadInput (int fd, void *closure)
-+{
-+ evdevReadInput ((InputInfoPtr) closure);
-+}
-+
-+static int
-+evdevGetControlFD (void)
-+{
-+ int i, ret;
-+
-+ for (i = 0; i < 100; i++) {
-+ snprintf(evdev_device,sizeof(evdev_device),"/tmp/.X11-unix/evdev%d", i);
-+ SYSCALL(ret = mkfifo (evdev_device, 0666));
-+ if (ret == -1) {
-+ if (errno != EEXIST)
-+ return -1;
-+ continue;
-+ }
-+ SYSCALL(ret = open (evdev_device, O_RDWR | O_NONBLOCK));
-+ return ret;
-+ }
-+
-+ return -1;
-+}
-+
-+static void
-+evdevReleaseControlFD (int fd)
-+{
-+ SYSCALL(close(fd));
-+ SYSCALL(unlink(evdev_device));
-+}
-+
-+static int
-+evdevControl(DeviceIntPtr pPointer, int what)
-+{
-+ InputInfoPtr pInfo;
-+
-+ pInfo = pPointer->public.devicePrivate;
-+
-+ switch (what) {
-+ case DEVICE_INIT:
-+ pPointer->public.on = FALSE;
-+ break;
-+
-+ case DEVICE_ON:
-+ pInfo->fd = evdevGetControlFD ();
-+ if (pInfo->fd == -1) {
-+ xf86Msg(X_ERROR, "%s: cannot open control FIFO.\n", pInfo->name);
-+ return BadRequest;
-+ }
-+ xf86FlushInput(pInfo->fd);
-+ if (!xf86InstallSIGIOHandler (pInfo->fd, evdevSigioReadInput, pInfo))
-+ AddEnabledDevice(pInfo->fd);
-+ pPointer->public.on = TRUE;
-+ break;
-+
-+ case DEVICE_OFF:
-+ case DEVICE_CLOSE:
-+ if (pInfo->fd != -1) {
-+ RemoveEnabledDevice(pInfo->fd);
-+ xf86RemoveSIGIOHandler(pInfo->fd);
-+ evdevReleaseControlFD (pInfo->fd);
-+ pInfo->fd = -1;
-+ }
-+ pPointer->public.on = FALSE;
-+ usleep(300000);
-+ break;
-+ }
-+ return Success;
-+}
-+
-+Bool
-+evdevStart (InputDriverPtr drv)
-+{
-+ InputInfoPtr pInfo;
-+
-+ if (evdev_alive)
-+ return TRUE;
-+
-+ if (!(evdev_buf = xcalloc(1024, 1)))
-+ return FALSE;
-+
-+ if (!(pInfo = xf86AllocateInput(drv, 0)))
-+ return FALSE;
-+
-+
-+ pInfo->name = "evdev brain";
-+ pInfo->type_name = "evdev brain";
-+ pInfo->device_control = evdevControl;
-+ pInfo->read_input = evdevReadInput;
-+ pInfo->fd = -1;
-+ evdev_alive = TRUE;
-+ pInfo->flags = XI86_CONFIGURED | XI86_OPEN_ON_INIT;
-+ return TRUE;
-+}
-+
-+Bool
-+evdevNewDriver (evdevDriverPtr driver)
-+{
-+ if (!evdev_alive)
-+ return FALSE;
-+ if (!(driver->name || driver->phys || driver->device))
-+ return FALSE;
-+ if (!driver->callback)
-+ return FALSE;
-+
-+ driver->next = evdev_drivers;
-+ evdev_drivers = driver;
-+ return TRUE;
-+}
-Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_evdev.h
-===================================================================
---- /dev/null 1970-01-01 00:00:00.000000000 +0000
-+++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_evdev.h 2005-10-18 21:24:12.000000000 -0400
-@@ -0,0 +1,753 @@
-+/* $XFree86: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx.h,v 3.2 2000/02/15 02:00:14 eich Exp $ */
-+
-+#ifndef LNX_EVDEV_H_
-+#define LNX_EVDEV_H_
-+
-+
-+/* Stuff taken from the linux header. (With some minor changes.) */
-+
-+#include <sys/time.h>
-+#include <sys/ioctl.h>
-+#include <asm/types.h>
-+
-+/*
-+ * The event structure itself
-+ */
-+
-+struct input_event {
-+ struct timeval time;
-+ __u16 type;
-+ __u16 code;
-+ __s32 value;
-+};
-+
-+/*
-+ * Protocol version.
-+ */
-+
-+#define EV_VERSION 0x010000
-+
-+/*
-+ * IOCTLs (0x00 - 0x7f)
-+ */
-+
-+struct input_id {
-+ __u16 bustype;
-+ __u16 vendor;
-+ __u16 product;
-+ __u16 version;
-+};
-+
-+struct input_absinfo {
-+ __s32 value;
-+ __s32 minimum;
-+ __s32 maximum;
-+ __s32 fuzz;
-+ __s32 flat;
-+};
-+
-+#define EVIOCGVERSION _IOR('E', 0x01, int) /* get driver version */
-+#define EVIOCGID _IOR('E', 0x02, struct input_id) /* get device ID */
-+#define EVIOCGREP _IOR('E', 0x03, int[2]) /* get repeat settings */
-+#define EVIOCSREP _IOW('E', 0x03, int[2]) /* get repeat settings */
-+#define EVIOCGKEYCODE _IOR('E', 0x04, int[2]) /* get keycode */
-+#define EVIOCSKEYCODE _IOW('E', 0x04, int[2]) /* set keycode */
-+
-+#define EVIOCGNAME(len) _IOC(_IOC_READ, 'E', 0x06, len) /* get device name */
-+#define EVIOCGPHYS(len) _IOC(_IOC_READ, 'E', 0x07, len) /* get physical location */
-+#define EVIOCGUNIQ(len) _IOC(_IOC_READ, 'E', 0x08, len) /* get unique identifier */
-+
-+#define EVIOCGKEY(len) _IOC(_IOC_READ, 'E', 0x18, len) /* get global keystate */
-+#define EVIOCGLED(len) _IOC(_IOC_READ, 'E', 0x19, len) /* get all LEDs */
-+#define EVIOCGSND(len) _IOC(_IOC_READ, 'E', 0x1a, len) /* get all sounds status */
-+
-+#define EVIOCGBIT(ev,len) _IOC(_IOC_READ, 'E', 0x20 + ev, len) /* get event bits */
-+#define EVIOCGABS(abs) _IOR('E', 0x40 + abs, struct input_absinfo) /* get abs value/limits */
-+#define EVIOCSABS(abs) _IOW('E', 0xc0 + abs, struct input_absinfo) /* set abs value/limits */
-+
-+#define EVIOCSFF _IOC(_IOC_WRITE, 'E', 0x80, sizeof(struct ff_effect)) /* send a force effect to a force feedback device */
-+#define EVIOCRMFF _IOW('E', 0x81, int) /* Erase a force effect */
-+#define EVIOCGEFFECTS _IOR('E', 0x84, int) /* Report number of effects playable at the same time */
-+
-+#define EVIOCGRAB _IOW('E', 0x90, int) /* Grab/Release device */
-+#define EVIOCGMASK _IOR('E', 0x91, unsigned long *) /* Get our input mask */
-+#define EVIOCSMASK _IOW('E', 0x92, unsigned long) /* Set our input mask */
-+#define EVIOCGDMASK _IOR('E', 0x93, unsigned long *) /* Get device input mask */
-+#define EVIOCSDMASK _IOW('E', 0x94, unsigned long) /* Set device input mask */
-+
-+
-+
-+#define BITS_PER_LONG (sizeof(long) * 8)
-+#define NBITS(x) ((((x)-1)/BITS_PER_LONG)+1)
-+#define OFF(x) ((x)%BITS_PER_LONG)
-+#define LONG(x) ((x)/BITS_PER_LONG)
-+#define BIT(x) (1UL<<((x)%BITS_PER_LONG))
-+#define test_bit(bit, array) ((array[LONG(bit)] >> OFF(bit)) & 1)
-+
-+/*
-+ * Event types
-+ */
-+
-+#define EV_SYN 0x00
-+#define EV_KEY 0x01
-+#define EV_REL 0x02
-+#define EV_ABS 0x03
-+#define EV_MSC 0x04
-+#define EV_LED 0x11
-+#define EV_SND 0x12
-+#define EV_REP 0x14
-+#define EV_FF 0x15
-+#define EV_PWR 0x16
-+#define EV_FF_STATUS 0x17
-+#define EV_MAX 0x1f
-+
-+/*
-+ * Synchronization events.
-+ */
-+
-+#define EV_SYN_REPORT 0
-+#define EV_SYN_CONFIG 1
-+
-+/*
-+ * Keys and buttons
-+ */
-+
-+#define EV_KEY_RESERVED 0
-+#define EV_KEY_ESC 1
-+#define EV_KEY_1 2
-+#define EV_KEY_2 3
-+#define EV_KEY_3 4
-+#define EV_KEY_4 5
-+#define EV_KEY_5 6
-+#define EV_KEY_6 7
-+#define EV_KEY_7 8
-+#define EV_KEY_8 9
-+#define EV_KEY_9 10
-+#define EV_KEY_0 11
-+#define EV_KEY_MINUS 12
-+#define EV_KEY_EQUAL 13
-+#define EV_KEY_BACKSPACE 14
-+#define EV_KEY_TAB 15
-+#define EV_KEY_Q 16
-+#define EV_KEY_W 17
-+#define EV_KEY_E 18
-+#define EV_KEY_R 19
-+#define EV_KEY_T 20
-+#define EV_KEY_Y 21
-+#define EV_KEY_U 22
-+#define EV_KEY_I 23
-+#define EV_KEY_O 24
-+#define EV_KEY_P 25
-+#define EV_KEY_LEFTBRACE 26
-+#define EV_KEY_RIGHTBRACE 27
-+#define EV_KEY_ENTER 28
-+#define EV_KEY_LEFTCTRL 29
-+#define EV_KEY_A 30
-+#define EV_KEY_S 31
-+#define EV_KEY_D 32
-+#define EV_KEY_F 33
-+#define EV_KEY_G 34
-+#define EV_KEY_H 35
-+#define EV_KEY_J 36
-+#define EV_KEY_K 37
-+#define EV_KEY_L 38
-+#define EV_KEY_SEMICOLON 39
-+#define EV_KEY_APOSTROPHE 40
-+#define EV_KEY_GRAVE 41
-+#define EV_KEY_LEFTSHIFT 42
-+#define EV_KEY_BACKSLASH 43
-+#define EV_KEY_Z 44
-+#define EV_KEY_X 45
-+#define EV_KEY_C 46
-+#define EV_KEY_V 47
-+#define EV_KEY_B 48
-+#define EV_KEY_N 49
-+#define EV_KEY_M 50
-+#define EV_KEY_COMMA 51
-+#define EV_KEY_DOT 52
-+#define EV_KEY_SLASH 53
-+#define EV_KEY_RIGHTSHIFT 54
-+#define EV_KEY_KPASTERISK 55
-+#define EV_KEY_LEFTALT 56
-+#define EV_KEY_SPACE 57
-+#define EV_KEY_CAPSLOCK 58
-+#define EV_KEY_F1 59
-+#define EV_KEY_F2 60
-+#define EV_KEY_F3 61
-+#define EV_KEY_F4 62
-+#define EV_KEY_F5 63
-+#define EV_KEY_F6 64
-+#define EV_KEY_F7 65
-+#define EV_KEY_F8 66
-+#define EV_KEY_F9 67
-+#define EV_KEY_F10 68
-+#define EV_KEY_NUMLOCK 69
-+#define EV_KEY_SCROLLLOCK 70
-+#define EV_KEY_KP7 71
-+#define EV_KEY_KP8 72
-+#define EV_KEY_KP9 73
-+#define EV_KEY_KPMINUS 74
-+#define EV_KEY_KP4 75
-+#define EV_KEY_KP5 76
-+#define EV_KEY_KP6 77
-+#define EV_KEY_KPPLUS 78
-+#define EV_KEY_KP1 79
-+#define EV_KEY_KP2 80
-+#define EV_KEY_KP3 81
-+#define EV_KEY_KP0 82
-+#define EV_KEY_KPDOT 83
-+#define EV_KEY_103RD 84
-+#define EV_KEY_F13 85
-+#define EV_KEY_102ND 86
-+#define EV_KEY_F11 87
-+#define EV_KEY_F12 88
-+#define EV_KEY_F14 89
-+#define EV_KEY_F15 90
-+#define EV_KEY_F16 91
-+#define EV_KEY_F17 92
-+#define EV_KEY_F18 93
-+#define EV_KEY_F19 94
-+#define EV_KEY_F20 95
-+#define EV_KEY_KPENTER 96
-+#define EV_KEY_RIGHTCTRL 97
-+#define EV_KEY_KPSLASH 98
-+#define EV_KEY_SYSRQ 99
-+#define EV_KEY_RIGHTALT 100
-+#define EV_KEY_LINEFEED 101
-+#define EV_KEY_HOME 102
-+#define EV_KEY_UP 103
-+#define EV_KEY_PAGEUP 104
-+#define EV_KEY_LEFT 105
-+#define EV_KEY_RIGHT 106
-+#define EV_KEY_END 107
-+#define EV_KEY_DOWN 108
-+#define EV_KEY_PAGEDOWN 109
-+#define EV_KEY_INSERT 110
-+#define EV_KEY_DELETE 111
-+#define EV_KEY_MACRO 112
-+#define EV_KEY_MUTE 113
-+#define EV_KEY_VOLUMEDOWN 114
-+#define EV_KEY_VOLUMEUP 115
-+#define EV_KEY_POWER 116
-+#define EV_KEY_KPEQUAL 117
-+#define EV_KEY_KPPLUSMINUS 118
-+#define EV_KEY_PAUSE 119
-+#define EV_KEY_F21 120
-+#define EV_KEY_F22 121
-+#define EV_KEY_F23 122
-+#define EV_KEY_F24 123
-+#define EV_KEY_KPCOMMA 124
-+#define EV_KEY_LEFTMETA 125
-+#define EV_KEY_RIGHTMETA 126
-+#define EV_KEY_COMPOSE 127
-+
-+#define EV_KEY_STOP 128
-+#define EV_KEY_AGAIN 129
-+#define EV_KEY_PROPS 130
-+#define EV_KEY_UNDO 131
-+#define EV_KEY_FRONT 132
-+#define EV_KEY_COPY 133
-+#define EV_KEY_OPEN 134
-+#define EV_KEY_PASTE 135
-+#define EV_KEY_FIND 136
-+#define EV_KEY_CUT 137
-+#define EV_KEY_HELP 138
-+#define EV_KEY_MENU 139
-+#define EV_KEY_CALC 140
-+#define EV_KEY_SETUP 141
-+#define EV_KEY_SLEEP 142
-+#define EV_KEY_WAKEUP 143
-+#define EV_KEY_FILE 144
-+#define EV_KEY_SENDFILE 145
-+#define EV_KEY_DELETEFILE 146
-+#define EV_KEY_XFER 147
-+#define EV_KEY_PROG1 148
-+#define EV_KEY_PROG2 149
-+#define EV_KEY_WWW 150
-+#define EV_KEY_MSDOS 151
-+#define EV_KEY_COFFEE 152
-+#define EV_KEY_DIRECTION 153
-+#define EV_KEY_CYCLEWINDOWS 154
-+#define EV_KEY_MAIL 155
-+#define EV_KEY_BOOKMARKS 156
-+#define EV_KEY_COMPUTER 157
-+#define EV_KEY_BACK 158
-+#define EV_KEY_FORWARD 159
-+#define EV_KEY_CLOSECD 160
-+#define EV_KEY_EJECTCD 161
-+#define EV_KEY_EJECTCLOSECD 162
-+#define EV_KEY_NEXTSONG 163
-+#define EV_KEY_PLAYPAUSE 164
-+#define EV_KEY_PREVIOUSSONG 165
-+#define EV_KEY_STOPCD 166
-+#define EV_KEY_RECORD 167
-+#define EV_KEY_REWIND 168
-+#define EV_KEY_PHONE 169
-+#define EV_KEY_ISO 170
-+#define EV_KEY_CONFIG 171
-+#define EV_KEY_HOMEPAGE 172
-+#define EV_KEY_REFRESH 173
-+#define EV_KEY_EXIT 174
-+#define EV_KEY_MOVE 175
-+#define EV_KEY_EDIT 176
-+#define EV_KEY_SCROLLUP 177
-+#define EV_KEY_SCROLLDOWN 178
-+#define EV_KEY_KPLEFTPAREN 179
-+#define EV_KEY_KPRIGHTPAREN 180
-+
-+#define EV_KEY_INTL1 181
-+#define EV_KEY_INTL2 182
-+#define EV_KEY_INTL3 183
-+#define EV_KEY_INTL4 184
-+#define EV_KEY_INTL5 185
-+#define EV_KEY_INTL6 186
-+#define EV_KEY_INTL7 187
-+#define EV_KEY_INTL8 188
-+#define EV_KEY_INTL9 189
-+#define EV_KEY_LANG1 190
-+#define EV_KEY_LANG2 191
-+#define EV_KEY_LANG3 192
-+#define EV_KEY_LANG4 193
-+#define EV_KEY_LANG5 194
-+#define EV_KEY_LANG6 195
-+#define EV_KEY_LANG7 196
-+#define EV_KEY_LANG8 197
-+#define EV_KEY_LANG9 198
-+
-+#define EV_KEY_PLAYCD 200
-+#define EV_KEY_PAUSECD 201
-+#define EV_KEY_PROG3 202
-+#define EV_KEY_PROG4 203
-+#define EV_KEY_SUSPEND 205
-+#define EV_KEY_CLOSE 206
-+#define EV_KEY_PLAY 207
-+#define EV_KEY_FASTFORWARD 208
-+#define EV_KEY_BASSBOOST 209
-+#define EV_KEY_PRINT 210
-+#define EV_KEY_HP 211
-+#define EV_KEY_CAMERA 212
-+#define EV_KEY_SOUND 213
-+#define EV_KEY_QUESTION 214
-+#define EV_KEY_EMAIL 215
-+#define EV_KEY_CHAT 216
-+#define EV_KEY_SEARCH 217
-+#define EV_KEY_CONNECT 218
-+#define EV_KEY_FINANCE 219
-+#define EV_KEY_SPORT 220
-+#define EV_KEY_SHOP 221
-+#define EV_KEY_ALTERASE 222
-+#define EV_KEY_CANCEL 223
-+#define EV_KEY_BRIGHTNESSDOWN 224
-+#define EV_KEY_BRIGHTNESSUP 225
-+#define EV_KEY_MEDIA 226
-+
-+#define EV_KEY_UNKNOWN 240
-+
-+#define EV_BTN_MISC 0x100
-+#define EV_BTN_0 0x100
-+#define EV_BTN_1 0x101
-+#define EV_BTN_2 0x102
-+#define EV_BTN_3 0x103
-+#define EV_BTN_4 0x104
-+#define EV_BTN_5 0x105
-+#define EV_BTN_6 0x106
-+#define EV_BTN_7 0x107
-+#define EV_BTN_8 0x108
-+#define EV_BTN_9 0x109
-+
-+#define EV_BTN_MOUSE 0x110
-+#define EV_BTN_LEFT 0x110
-+#define EV_BTN_RIGHT 0x111
-+#define EV_BTN_MIDDLE 0x112
-+#define EV_BTN_SIDE 0x113
-+#define EV_BTN_EXTRA 0x114
-+#define EV_BTN_FORWARD 0x115
-+#define EV_BTN_BACK 0x116
-+
-+#define EV_BTN_JOYSTICK 0x120
-+#define EV_BTN_TRIGGER 0x120
-+#define EV_BTN_THUMB 0x121
-+#define EV_BTN_THUMB2 0x122
-+#define EV_BTN_TOP 0x123
-+#define EV_BTN_TOP2 0x124
-+#define EV_BTN_PINKIE 0x125
-+#define EV_BTN_BASE 0x126
-+#define EV_BTN_BASE2 0x127
-+#define EV_BTN_BASE3 0x128
-+#define EV_BTN_BASE4 0x129
-+#define EV_BTN_BASE5 0x12a
-+#define EV_BTN_BASE6 0x12b
-+#define EV_BTN_DEAD 0x12f
-+
-+#define EV_BTN_GAMEPAD 0x130
-+#define EV_BTN_A 0x130
-+#define EV_BTN_B 0x131
-+#define EV_BTN_C 0x132
-+#define EV_BTN_X 0x133
-+#define EV_BTN_Y 0x134
-+#define EV_BTN_Z 0x135
-+#define EV_BTN_TL 0x136
-+#define EV_BTN_TR 0x137
-+#define EV_BTN_TL2 0x138
-+#define EV_BTN_TR2 0x139
-+#define EV_BTN_SELECT 0x13a
-+#define EV_BTN_START 0x13b
-+#define EV_BTN_MODE 0x13c
-+#define EV_BTN_THUMBL 0x13d
-+#define EV_BTN_THUMBR 0x13e
-+
-+#define EV_BTN_DIGI 0x140
-+#define EV_BTN_TOOL_PEN 0x140
-+#define EV_BTN_TOOL_RUBBER 0x141
-+#define EV_BTN_TOOL_BRUSH 0x142
-+#define EV_BTN_TOOL_PENCIL 0x143
-+#define EV_BTN_TOOL_AIRBRUSH 0x144
-+#define EV_BTN_TOOL_FINGER 0x145
-+#define EV_BTN_TOOL_MOUSE 0x146
-+#define EV_BTN_TOOL_LENS 0x147
-+#define EV_BTN_TOUCH 0x14a
-+#define EV_BTN_STYLUS 0x14b
-+#define EV_BTN_STYLUS2 0x14c
-+
-+#define EV_BTN_WHEEL 0x150
-+#define EV_BTN_GEAR_DOWN 0x150
-+#define EV_BTN_GEAR_UP 0x151
-+
-+#define EV_KEY_OK 0x160
-+#define EV_KEY_SELECT 0x161
-+#define EV_KEY_GOTO 0x162
-+#define EV_KEY_CLEAR 0x163
-+#define EV_KEY_POWER2 0x164
-+#define EV_KEY_OPTION 0x165
-+#define EV_KEY_INFO 0x166
-+#define EV_KEY_TIME 0x167
-+#define EV_KEY_VENDOR 0x168
-+#define EV_KEY_ARCHIVE 0x169
-+#define EV_KEY_PROGRAM 0x16a
-+#define EV_KEY_CHANNEL 0x16b
-+#define EV_KEY_FAVORITES 0x16c
-+#define EV_KEY_EPG 0x16d
-+#define EV_KEY_PVR 0x16e
-+#define EV_KEY_MHP 0x16f
-+#define EV_KEY_LANGUAGE 0x170
-+#define EV_KEY_TITLE 0x171
-+#define EV_KEY_SUBTITLE 0x172
-+#define EV_KEY_ANGLE 0x173
-+#define EV_KEY_ZOOM 0x174
-+#define EV_KEY_MODE 0x175
-+#define EV_KEY_KEYBOARD 0x176
-+#define EV_KEY_SCREEN 0x177
-+#define EV_KEY_PC 0x178
-+#define EV_KEY_TV 0x179
-+#define EV_KEY_TV2 0x17a
-+#define EV_KEY_VCR 0x17b
-+#define EV_KEY_VCR2 0x17c
-+#define EV_KEY_SAT 0x17d
-+#define EV_KEY_SAT2 0x17e
-+#define EV_KEY_CD 0x17f
-+#define EV_KEY_TAPE 0x180
-+#define EV_KEY_RADIO 0x181
-+#define EV_KEY_TUNER 0x182
-+#define EV_KEY_PLAYER 0x183
-+#define EV_KEY_TEXT 0x184
-+#define EV_KEY_DVD 0x185
-+#define EV_KEY_AUX 0x186
-+#define EV_KEY_MP3 0x187
-+#define EV_KEY_AUDIO 0x188
-+#define EV_KEY_VIDEO 0x189
-+#define EV_KEY_DIRECTORY 0x18a
-+#define EV_KEY_LIST 0x18b
-+#define EV_KEY_MEMO 0x18c
-+#define EV_KEY_CALENDAR 0x18d
-+#define EV_KEY_RED 0x18e
-+#define EV_KEY_GREEN 0x18f
-+#define EV_KEY_YELLOW 0x190
-+#define EV_KEY_BLUE 0x191
-+#define EV_KEY_CHANNELUP 0x192
-+#define EV_KEY_CHANNELDOWN 0x193
-+#define EV_KEY_FIRST 0x194
-+#define EV_KEY_LAST 0x195
-+#define EV_KEY_AB 0x196
-+#define EV_KEY_NEXT 0x197
-+#define EV_KEY_RESTART 0x198
-+#define EV_KEY_SLOW 0x199
-+#define EV_KEY_SHUFFLE 0x19a
-+#define EV_KEY_BREAK 0x19b
-+#define EV_KEY_PREVIOUS 0x19c
-+#define EV_KEY_DIGITS 0x19d
-+#define EV_KEY_TEEN 0x19e
-+#define EV_KEY_TWEN 0x19f
-+
-+#define EV_KEY_MAX 0x1ff
-+
-+/*
-+ * Relative axes
-+ */
-+
-+#define EV_REL_X 0x00
-+#define EV_REL_Y 0x01
-+#define EV_REL_Z 0x02
-+#define EV_REL_HWHEEL 0x06
-+#define EV_REL_DIAL 0x07
-+#define EV_REL_WHEEL 0x08
-+#define EV_REL_MISC 0x09
-+#define EV_REL_MAX 0x0f
-+
-+/*
-+ * Absolute axes
-+ */
-+
-+#define EV_ABS_X 0x00
-+#define EV_ABS_Y 0x01
-+#define EV_ABS_Z 0x02
-+#define EV_ABS_RX 0x03
-+#define EV_ABS_RY 0x04
-+#define EV_ABS_RZ 0x05
-+#define EV_ABS_THROTTLE 0x06
-+#define EV_ABS_RUDDER 0x07
-+#define EV_ABS_WHEEL 0x08
-+#define EV_ABS_GAS 0x09
-+#define EV_ABS_BRAKE 0x0a
-+#define EV_ABS_HAT0X 0x10
-+#define EV_ABS_HAT0Y 0x11
-+#define EV_ABS_HAT1X 0x12
-+#define EV_ABS_HAT1Y 0x13
-+#define EV_ABS_HAT2X 0x14
-+#define EV_ABS_HAT2Y 0x15
-+#define EV_ABS_HAT3X 0x16
-+#define EV_ABS_HAT3Y 0x17
-+#define EV_ABS_PRESSURE 0x18
-+#define EV_ABS_DISTANCE 0x19
-+#define EV_ABS_TILT_X 0x1a
-+#define EV_ABS_TILT_Y 0x1b
-+#define EV_ABS_VOLUME 0x20
-+#define EV_ABS_MISC 0x28
-+#define EV_ABS_MAX 0x3f
-+
-+/*
-+ * Misc events
-+ */
-+
-+#define EV_MSG_SERIAL 0x00
-+#define EV_MSG_PULSELED 0x01
-+#define EV_MSG_MAX 0x07
-+
-+/*
-+ * LEDs
-+ */
-+
-+#define EV_LED_NUML 0x00
-+#define EV_LED_CAPSL 0x01
-+#define EV_LED_SCROLLL 0x02
-+#define EV_LED_COMPOSE 0x03
-+#define EV_LED_KANA 0x04
-+#define EV_LED_SLEEP 0x05
-+#define EV_LED_SUSPEND 0x06
-+#define EV_LED_MUTE 0x07
-+#define EV_LED_MISC 0x08
-+#define EV_LED_MAX 0x0f
-+
-+/*
-+ * Autorepeat values
-+ */
-+
-+#define EV_REP_DELAY 0x00
-+#define EV_REP_PERIOD 0x01
-+#define EV_REP_MAX 0x01
-+
-+/*
-+ * Sounds
-+ */
-+
-+#define EV_SND_CLICK 0x00
-+#define EV_SND_BELL 0x01
-+#define EV_SND_TONE 0x02
-+#define EV_SND_MAX 0x07
-+
-+/*
-+ * IDs.
-+ */
-+
-+#define EV_ID_BUS 0
-+#define EV_ID_VENDOR 1
-+#define EV_ID_PRODUCT 2
-+#define EV_ID_VERSION 3
-+
-+#define EV_BUS_PCI 0x01
-+#define EV_BUS_ISAPNP 0x02
-+#define EV_BUS_USB 0x03
-+#define EV_BUS_HIL 0x04
-+
-+#define EV_BUS_ISA 0x10
-+#define EV_BUS_I8042 0x11
-+#define EV_BUS_XTKBD 0x12
-+#define EV_BUS_RS232 0x13
-+#define EV_BUS_GAMEPORT 0x14
-+#define EV_BUS_PARPORT 0x15
-+#define EV_BUS_AMIGA 0x16
-+#define EV_BUS_ADB 0x17
-+#define EV_BUS_I2C 0x18
-+#define EV_BUS_HOST 0x19
-+
-+/*
-+ * Values describing the status of an effect
-+ */
-+#define EV_FF_STATUS_STOPPED 0x00
-+#define EV_FF_STATUS_PLAYING 0x01
-+#define EV_FF_STATUS_MAX 0x01
-+
-+/*
-+ * Structures used in ioctls to upload effects to a device
-+ * The first structures are not passed directly by using ioctls.
-+ * They are sub-structures of the actually sent structure (called ff_effect)
-+ */
-+
-+struct ff_replay {
-+ __u16 length; /* Duration of an effect in ms. All other times are also expressed in ms */
-+ __u16 delay; /* Time to wait before to start playing an effect */
-+};
-+
-+struct ff_trigger {
-+ __u16 button; /* Number of button triggering an effect */
-+ __u16 interval; /* Time to wait before an effect can be re-triggered (ms) */
-+};
-+
-+struct ff_envelope {
-+ __u16 attack_length; /* Duration of attack (ms) */
-+ __u16 attack_level; /* Level at beginning of attack */
-+ __u16 fade_length; /* Duration of fade (ms) */
-+ __u16 fade_level; /* Level at end of fade */
-+};
-+
-+/* EV_FF_CONSTANT */
-+struct ff_constant_effect {
-+ __s16 level; /* Strength of effect. Negative values are OK */
-+ struct ff_envelope envelope;
-+};
-+
-+/* EV_FF_RAMP */
-+struct ff_ramp_effect {
-+ __s16 start_level;
-+ __s16 end_level;
-+ struct ff_envelope envelope;
-+};
-+
-+/* EV_FF_SPRING of FF_FRICTION */
-+struct ff_condition_effect {
-+ __u16 right_saturation; /* Max level when joystick is on the right */
-+ __u16 left_saturation; /* Max level when joystick in on the left */
-+
-+ __s16 right_coeff; /* Indicates how fast the force grows when the
-+ joystick moves to the right */
-+ __s16 left_coeff; /* Same for left side */
-+
-+ __u16 deadband; /* Size of area where no force is produced */
-+ __s16 center; /* Position of dead zone */
-+
-+};
-+
-+/* EV_FF_PERIODIC */
-+struct ff_periodic_effect {
-+ __u16 waveform; /* Kind of wave (sine, square...) */
-+ __u16 period; /* in ms */
-+ __s16 magnitude; /* Peak value */
-+ __s16 offset; /* Mean value of wave (roughly) */
-+ __u16 phase; /* 'Horizontal' shift */
-+
-+ struct ff_envelope envelope;
-+
-+/* Only used if waveform == EV_FF_CUSTOM */
-+ __u32 custom_len; /* Number of samples */
-+ __s16 *custom_data; /* Buffer of samples */
-+/* Note: the data pointed by custom_data is copied by the driver. You can
-+ * therefore dispose of the memory after the upload/update */
-+};
-+
-+/* EV_FF_RUMBLE */
-+/* Some rumble pads have two motors of different weight.
-+ strong_magnitude represents the magnitude of the vibration generated
-+ by the heavy motor.
-+*/
-+struct ff_rumble_effect {
-+ __u16 strong_magnitude; /* Magnitude of the heavy motor */
-+ __u16 weak_magnitude; /* Magnitude of the light one */
-+};
-+
-+/*
-+ * Structure sent through ioctl from the application to the driver
-+ */
-+struct ff_effect {
-+ __u16 type;
-+/* Following field denotes the unique id assigned to an effect.
-+ * If user sets if to -1, a new effect is created, and its id is returned in the same field
-+ * Else, the user sets it to the effect id it wants to update.
-+ */
-+ __s16 id;
-+
-+ __u16 direction; /* Direction. 0 deg -> 0x0000 (down)
-+ 90 deg -> 0x4000 (left)
-+ 180 deg -> 0x8000 (up)
-+ 270 deg -> 0xC000 (right)
-+ */
-+
-+ struct ff_trigger trigger;
-+ struct ff_replay replay;
-+
-+ union {
-+ struct ff_constant_effect constant;
-+ struct ff_ramp_effect ramp;
-+ struct ff_periodic_effect periodic;
-+ struct ff_condition_effect condition[2]; /* One for each axis */
-+ struct ff_rumble_effect rumble;
-+ } u;
-+};
-+
-+/*
-+ * Force feedback effect types
-+ */
-+
-+#define EV_FF_RUMBLE 0x50
-+#define EV_FF_PERIODIC 0x51
-+#define EV_FF_CONSTANT 0x52
-+#define EV_FF_SPRING 0x53
-+#define EV_FF_FRICTION 0x54
-+#define EV_FF_DAMPER 0x55
-+#define EV_FF_INERTIA 0x56
-+#define EV_FF_RAMP 0x57
-+
-+/*
-+ * Force feedback periodic effect types
-+ */
-+
-+#define EV_FF_SQUARE 0x58
-+#define EV_FF_TRIANGLE 0x59
-+#define EV_FF_SINE 0x5a
-+#define EV_FF_SAW_UP 0x5b
-+#define EV_FF_SAW_DOWN 0x5c
-+#define EV_FF_CUSTOM 0x5d
-+
-+/*
-+ * Set ff device properties
-+ */
-+
-+#define EV_FF_GAIN 0x60
-+#define EV_FF_AUTOCENTER 0x61
-+
-+#define EV_FF_MAX 0x7f
-+
-+
-+
-+typedef struct _evdevDriver {
-+ const char *name;
-+ const char *phys;
-+ const char *device;
-+ void *cb_data;
-+ int (*callback)(void *cb_data, int what);
-+ struct _evdevDriver *next;
-+} evdevDriver, *evdevDriverPtr;
-+
-+int evdevGetFDForDriver (evdevDriverPtr driver);
-+Bool evdevStart (InputDriverPtr drv);
-+Bool evdevNewDriver (evdevDriverPtr driver);
-+
-+#endif /* LNX_EVDEV_H_ */
-Index: xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile
-===================================================================
---- xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile.orig 2005-10-18 19:44:57.000000000 -0400
-+++ xc/programs/Xserver/hw/xfree86/os-support/linux/Imakefile 2005-10-18 21:25:34.000000000 -0400
-@@ -59,16 +59,16 @@
- SRCS = lnx_init.c lnx_video.c lnx_io.c libc_wrapper.c bios_mmap.c \
- VTsw_usl.c std_kbdEv.c posix_tty.c lnx_acpi.c $(MOUSESRC) \
- lnx_pci.c vidmem.c lnx_apm.c $(JOYSTICK_SRC) $(DRI_SRC) $(RES_SRCS) \
-- $(PLATFORM_SRC) lnx_kmod.c lnx_agp.c $(FONTSRC) $(KBDSRC) /*wcHelper.c*/
-+ $(PLATFORM_SRC) lnx_kmod.c lnx_agp.c $(FONTSRC) $(KBDSRC) /*wcHelper.c*/ lnx_evdev.c
-
- OBJS = lnx_init.o lnx_video.o lnx_io.o libc_wrapper.o bios_mmap.o \
- VTsw_usl.o std_kbdEv.o posix_tty.o lnx_acpi.o $(MOUSEOBJ) \
- lnx_pci.o vidmem.o lnx_apm.o $(JOYSTICK_OBJ) $(DRI_OBJ) $(RES_OBJS) \
-- $(PLATFORM_OBJ) lnx_kmod.o lnx_agp.o $(FONTOBJ) $(KBDOBJ) /*wcHelper.o*/
-+ $(PLATFORM_OBJ) lnx_kmod.o lnx_agp.o $(FONTOBJ) $(KBDOBJ) /*wcHelper.o*/ lnx_evdev.o
-
- INCLUDES = -I$(XF86COMSRC) -I$(XF86OSSRC) -I. -I$(SERVERSRC)/include \
- -I$(XINCLUDESRC) -I$(EXTINCSRC) -I$(XF86OSSRC)/shared \
-- -I$(XF86OSSRC)/bus -I$(DRMSRCDIR)/shared-core
-+ -I$(XF86OSSRC)/bus -I$(DRMSRCDIR)/shared-core -I$(SERVERSRC)/mi
-
- RESDEFINES = -DUSESTDRES
-
Deleted: trunk/debian/patches/general/054_lnx_evdev_mouse.diff
===================================================================
--- trunk/debian/patches/general/054_lnx_evdev_mouse.diff 2006-01-09 01:17:15 UTC (rev 1038)
+++ trunk/debian/patches/general/054_lnx_evdev_mouse.diff 2006-01-09 01:37:12 UTC (rev 1039)
@@ -1,343 +0,0 @@
-$Id$
-
-Implement Linux evdev interface support for the mouse.
-
-Copyright/license information:
-
- Copyright 2003 Zephaniah E. Hull.
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- ZEPHANIAH E. HULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
- Except as contained in this notice, the name of Zephaniah E. Hull shall
- not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization from
- Zephaniah E. Hull.
-
-Not submitted upstream.
-
-Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c
-===================================================================
---- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c.orig 2005-07-30 19:25:43.000000000 -0400
-+++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_mouse.c 2005-08-01 22:41:44.000000000 -0400
-@@ -10,19 +10,295 @@
-
- #include <X11/X.h>
- #include "xf86.h"
-+#include "xf86Priv.h"
- #include "xf86Xinput.h"
- #include "xf86OSmouse.h"
- #include "xf86_OSlib.h"
-+#include "mipointer.h"
-+#include "lnx_evdev.h"
- #include <sys/types.h>
- #include <sys/stat.h>
- #include <unistd.h>
-
-+/* Names of protocols that are handled internally here. */
-+static const char *internalNames[] = {
-+ "evdev",
-+ NULL
-+};
-+
- static int
- SupportedInterfaces(void)
- {
- return MSE_SERIAL | MSE_BUS | MSE_PS2 | MSE_XPS2 | MSE_AUTO;
- }
-
-+static const char **
-+BuiltinNames(void)
-+{
-+ return internalNames;
-+}
-+
-+static Bool
-+CheckProtocol(const char *protocol)
-+{
-+ int i;
-+
-+ for (i = 0; internalNames[i]; i++)
-+ if (xf86NameCmp(protocol, internalNames[i]) == 0)
-+ return TRUE;
-+ return FALSE;
-+}
-+
-+typedef struct _evdevMseRec {
-+ int packetSize;
-+ int buttons;
-+ Bool sync;
-+ evdevDriver evdev;
-+} evdevMseRec, *evdevMsePtr;
-+
-+static void
-+evdevMouseReadInput(InputInfoPtr pInfo)
-+{
-+ MouseDevPtr pMse;
-+ evdevMsePtr evdevMse;
-+ struct input_event *ev;
-+ int n, bit;
-+ int dx = 0, dy = 0, dz = 0, dw = 0;
-+
-+ pMse = pInfo->private;
-+ ev = (struct input_event *) pMse->buffer;
-+ evdevMse = pMse->mousePriv;
-+
-+ if (pInfo->fd == -1)
-+ return;
-+
-+ do {
-+ n = read(pInfo->fd, pMse->buffer, sizeof(struct input_event));
-+ if (n == -1) {
-+ xf86Msg(X_ERROR, "%s: Error in reading! (%s) Disabling.\n",
-+ pInfo->name, strerror(errno));
-+ RemoveEnabledDevice(pInfo->fd);
-+ xf86RemoveSIGIOHandler(pInfo->fd);
-+ close (pInfo->fd);
-+ pMse->device->public.on = FALSE;
-+ pInfo->fd = -1;
-+ pMse->PostEvent(pInfo, evdevMse->buttons, dx, dy, dz, dw);
-+ return;
-+ }
-+ if (n != sizeof(struct input_event)) {
-+ xf86Msg(X_WARNING, "%s: incomplete packet, size %d\n", pInfo->name, n);
-+ pMse->PostEvent(pInfo, evdevMse->buttons, dx, dy, dz, dw);
-+ return;
-+ }
-+
-+ switch (ev->type) {
-+ case EV_REL:
-+ switch (ev->code) {
-+ case EV_REL_X:
-+ dx += ev->value;
-+ break;
-+ case EV_REL_Y:
-+ dy += ev->value;
-+ break;
-+ case EV_REL_Z:
-+ case EV_REL_WHEEL:
-+ dz -= ev->value;
-+ break;
-+ case EV_REL_HWHEEL:
-+ dw -= ev->value;
-+ break;
-+ }
-+ break;
-+ case EV_KEY:
-+ if ((ev->code < EV_BTN_MOUSE) || (ev->code >= EV_BTN_JOYSTICK))
-+ break;
-+ switch (ev->code) {
-+ case EV_BTN_RIGHT: bit = 1 << 0; break; /* 1 */
-+ case EV_BTN_MIDDLE: bit = 1 << 1; break; /* 2 */
-+ case EV_BTN_LEFT: bit = 1 << 2; break; /* 3 */
-+ default: bit = 1 << (ev->code - EV_BTN_MOUSE); break;
-+ }
-+ evdevMse->buttons &= ~bit;
-+ if (ev->value)
-+ evdevMse->buttons |= bit;
-+ break;
-+ case EV_SYN:
-+ switch (ev->code) {
-+ case EV_SYN_REPORT:
-+ pMse->PostEvent(pInfo,evdevMse->buttons,dx, dy, dz, dw);
-+ dx = dy = dz = dw = 0;
-+ break;
-+ }
-+ break;
-+ }
-+ if (!evdevMse->sync) {
-+ pMse->PostEvent(pInfo,evdevMse->buttons,dx, dy, dz, dw);
-+ dx = dy = dz = dw = 0;
-+ }
-+ } while (xf86WaitForInput(pInfo->fd, 0));
-+
-+ pMse->PostEvent(pInfo, evdevMse->buttons, dx, dy, dz, dw);
-+
-+ return;
-+}
-+
-+static void
-+evdevMouseSigioReadInput (int fd, void *closure)
-+{
-+ evdevMouseReadInput ((InputInfoPtr) closure);
-+}
-+
-+static int
-+evdevMouseProc(DeviceIntPtr pPointer, int what)
-+{
-+ InputInfoPtr pInfo;
-+ MouseDevPtr pMse;
-+ evdevMsePtr evdevMse;
-+ unsigned char map[MSE_MAXBUTTONS + 1];
-+ int i, j, blocked;
-+ unsigned long evtype_bits[NBITS(EV_MAX)];
-+ unsigned long evkey_bits[NBITS(EV_KEY_MAX)];
-+
-+ pInfo = pPointer->public.devicePrivate;
-+ pMse = pInfo->private;
-+ pMse->device = pPointer;
-+ evdevMse = pMse->mousePriv;
-+
-+ switch (what) {
-+ case DEVICE_INIT:
-+ pPointer->public.on = FALSE;
-+
-+ evdevMse->evdev.name = xf86SetStrOption(pInfo->options,"Dev Name",NULL);
-+ evdevMse->evdev.phys = xf86SetStrOption(pInfo->options,"Dev Phys",NULL);
-+ evdevMse->evdev.device = xf86SetStrOption(pInfo->options,"Dev Device",NULL);
-+ evdevMse->evdev.cb_data = pInfo->dev;
-+ evdevMse->evdev.callback = evdevMouseProc;
-+ if (!evdevNewDriver (&evdevMse->evdev)) {
-+ xf86Msg(X_ERROR, "%s: cannot register with evdev brain\n", pInfo->name);
-+ return BadRequest;
-+ }
-+ if ((pInfo->fd = evdevGetFDForDriver (&evdevMse->evdev)) == -1) {
-+ xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name);
-+ return BadRequest;
-+ }
-+
-+ ioctl(pInfo->fd, EVIOCGBIT(0, EV_MAX), evtype_bits);
-+ if (test_bit(EV_SYN, evtype_bits))
-+ evdevMse->sync = TRUE;
-+ else
-+ evdevMse->sync = FALSE;
-+
-+ if (test_bit(EV_KEY, evtype_bits)) {
-+ ioctl(pInfo->fd, EVIOCGBIT(EV_KEY, EV_KEY_MAX), evkey_bits);
-+ i = EV_BTN_LEFT;
-+ for (i = EV_BTN_LEFT, j = 0; i <= EV_BTN_BACK; i++)
-+ if (test_bit(i, evkey_bits))
-+ j = i - EV_BTN_LEFT;
-+ if (++j > pMse->buttons) pMse->buttons = j;
-+ }
-+
-+ close(pInfo->fd);
-+ pInfo->fd = -1;
-+
-+ for (i = 0; i < MSE_MAXBUTTONS; ++i)
-+ map[i + 1] = i + 1;
-+
-+ InitPointerDeviceStruct((DevicePtr)pPointer, map,
-+ min(pMse->buttons, MSE_MAXBUTTONS),
-+ miPointerGetMotionEvents, pMse->Ctrl,
-+ miPointerGetMotionBufferSize());
-+
-+ /* X valuator */
-+ xf86InitValuatorAxisStruct(pPointer, 0, 0, -1, 1, 0, 1);
-+ xf86InitValuatorDefaults(pPointer, 0);
-+ /* Y valuator */
-+ xf86InitValuatorAxisStruct(pPointer, 1, 0, -1, 1, 0, 1);
-+ xf86InitValuatorDefaults(pPointer, 1);
-+ xf86MotionHistoryAllocate(pInfo);
-+ break;
-+
-+ case DEVICE_ON:
-+ if (pPointer->public.on)
-+ break;
-+ if ((pInfo->fd = evdevGetFDForDriver (&evdevMse->evdev)) == -1) {
-+ xf86Msg(X_ERROR, "%s: cannot open input device (name: '%s', phys: '%s')\n", pInfo->name, evdevMse->evdev.name, evdevMse->evdev.phys);
-+ return BadRequest;
-+ }
-+
-+ xf86FlushInput(pInfo->fd);
-+ if (!xf86InstallSIGIOHandler (pInfo->fd, evdevMouseSigioReadInput, pInfo))
-+ AddEnabledDevice(pInfo->fd);
-+ pMse->lastButtons = 0;
-+ pMse->emulateState = 0;
-+ evdevMse->buttons = 0;
-+ pPointer->public.on = TRUE;
-+ /*
-+ * send button up events for sanity. If no button down is pending
-+ * xf86PostButtonEvent() will discard them. So we are on the safe side.
-+ */
-+ blocked = xf86BlockSIGIO ();
-+ for (i = 1; i <= 5; i++)
-+ xf86PostButtonEvent(pPointer,0,i,0,0,0);
-+ xf86UnblockSIGIO (blocked);
-+ break;
-+
-+ case DEVICE_OFF:
-+ case DEVICE_CLOSE:
-+ if (pInfo->fd != -1) {
-+ RemoveEnabledDevice(pInfo->fd);
-+ xf86RemoveSIGIOHandler(pInfo->fd);
-+ close (pInfo->fd);
-+ pInfo->fd = -1;
-+ }
-+ pPointer->public.on = FALSE;
-+ usleep(300000);
-+ break;
-+ }
-+ return Success;
-+}
-+
-+
-+/* This function is called when the protocol is "evdev". */
-+static Bool
-+evdevMousePreInit(InputInfoPtr pInfo, const char *protocol, int flags)
-+{
-+ MouseDevPtr pMse = pInfo->private;
-+ evdevMsePtr evdevMse;
-+
-+ pMse->protocol = protocol;
-+ xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-+
-+ /* Collect the options, and process the common options. */
-+ xf86CollectInputOptions(pInfo, NULL, NULL);
-+ xf86ProcessCommonOptions(pInfo, pInfo->options);
-+
-+ if (sizeof(struct input_event) <= sizeof(pMse->protoBuf))
-+ pMse->buffer = pMse->protoBuf;
-+ else
-+ pMse->buffer = xcalloc(sizeof(struct input_event),1);
-+ pMse->mousePriv = evdevMse = xcalloc(sizeof(evdevMseRec), 1);
-+ if ((pMse->buffer == NULL) || (pMse->mousePriv == NULL)) {
-+ xf86Msg(X_ERROR, "%s: cannot allocate buffer\n", pInfo->name);
-+ xfree(pMse);
-+ return FALSE;
-+ }
-+
-+ if (!evdevStart (pInfo->drv)) {
-+ xf86Msg(X_ERROR, "%s: cannot start evdev brain\n", pInfo->name);
-+ return FALSE;
-+ }
-+
-+ pMse->CommonOptions(pInfo);
-+
-+ /* Setup the local procs. */
-+ pInfo->device_control = evdevMouseProc;
-+ pInfo->read_input = evdevMouseReadInput;
-+
-+ pInfo->flags |= XI86_CONFIGURED;
-+
-+ return TRUE;
-+}
-+
- static const char *
- DefaultProtocol(void)
- {
-@@ -201,6 +477,9 @@
- p->DefaultProtocol = DefaultProtocol;
- p->FindDevice = FindDevice;
- p->GuessProtocol = GuessProtocol;
-+ p->CheckProtocol = CheckProtocol;
-+ p->BuiltinNames = BuiltinNames;
-+ p->PreInit = evdevMousePreInit;
- return p;
- }
-
Deleted: trunk/debian/patches/general/055_lnx_evdev_keyboard.diff
===================================================================
--- trunk/debian/patches/general/055_lnx_evdev_keyboard.diff 2006-01-09 01:17:15 UTC (rev 1038)
+++ trunk/debian/patches/general/055_lnx_evdev_keyboard.diff 2006-01-09 01:37:12 UTC (rev 1039)
@@ -1,440 +0,0 @@
-$Id$
-
-Implement Linux evdev interface support for the keyboard.
-
-Copyright/license information:
-
- Copyright 2003 Zephaniah E. Hull.
-
- Permission is hereby granted, free of charge, to any person obtaining a
- copy of this software and associated documentation files (the "Software"),
- to deal in the Software without restriction, including without limitation
- the rights to use, copy, modify, merge, publish, distribute, sublicense,
- and/or sell copies of the Software, and to permit persons to whom the
- Software is furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
- ZEPHANIAH E. HULL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
- WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF
- OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
- SOFTWARE.
-
- Except as contained in this notice, the name of Zephaniah E. Hull shall
- not be used in advertising or otherwise to promote the sale, use or other
- dealings in this Software without prior written authorization from
- Zephaniah E. Hull.
-
-Not submitted upstream.
-
-
-Index: xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c
-===================================================================
---- xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c.orig 2005-08-01 22:33:02.000000000 -0400
-+++ xc/programs/Xserver/hw/xfree86/os-support/linux/lnx_kbd.c 2005-08-01 22:41:50.000000000 -0400
-@@ -29,6 +29,7 @@
- #include "lnx.h"
- #endif
- #include "lnx_kbd.h"
-+#include "lnx_evdev.h"
-
- #define KBC_TIMEOUT 250 /* Timeout in ms for sending to keyboard controller */
-
-@@ -517,8 +518,8 @@
- return TRUE;
- }
-
--Bool
--xf86OSKbdPreInit(InputInfoPtr pInfo)
-+static Bool
-+stdKbdPreInit(InputInfoPtr pInfo, char *protocol)
- {
- KbdDevPtr pKbd = pInfo->private;
-
-@@ -557,3 +558,382 @@
- #endif
- return TRUE;
- }
-+
-+typedef struct _evdevKbdRec {
-+ int packetSize;
-+ char *buffer;
-+ evdevDriver evdev;
-+} evdevKbdRec, *evdevKbdPtr;
-+
-+static void
-+evdevKbdReadInput(InputInfoPtr pInfo)
-+{
-+ KbdDevPtr pKbd;
-+ evdevKbdPtr evdevKbd;
-+ struct input_event *ev;
-+ int n;
-+ int code;
-+
-+ pKbd = (KbdDevPtr) pInfo->private;
-+ evdevKbd = pKbd->private;
-+ ev = (struct input_event *) evdevKbd->buffer;
-+
-+ if (pInfo->fd == -1)
-+ return;
-+
-+ do {
-+ n = read(pInfo->fd, ev, sizeof(struct input_event));
-+ if (n == -1) {
-+ xf86Msg(X_ERROR, "%s: Error in reading! (%s) Disabiling.\n",
-+ pInfo->name, strerror(errno));
-+ RemoveEnabledDevice(pInfo->fd);
-+ close (pInfo->fd);
-+ pInfo->dev->public.on = FALSE;
-+ pInfo->fd = -1;
-+ return;
-+ }
-+ if (n != sizeof(struct input_event)) {
-+ xf86Msg(X_WARNING, "%s: incomplete packet, size %d\n", pInfo->name, n);
-+ return;
-+ }
-+
-+ switch (ev->type) {
-+ case EV_KEY:
-+ if ((ev->code <= EV_KEY_RESERVED)||(ev->code >= EV_KEY_UNKNOWN))
-+ break;
-+ switch (ev->code) {
-+ case EV_KEY_103RD:
-+ case EV_KEY_102ND:
-+ case EV_KEY_LINEFEED:
-+ case EV_KEY_MACRO:
-+ case EV_KEY_MUTE:
-+ case EV_KEY_VOLUMEDOWN:
-+ case EV_KEY_VOLUMEUP:
-+ case EV_KEY_POWER:
-+ case EV_KEY_KPPLUSMINUS:
-+ case EV_KEY_F18:
-+ case EV_KEY_F19:
-+ case EV_KEY_F20:
-+ case EV_KEY_F21:
-+ case EV_KEY_F22:
-+ case EV_KEY_F23:
-+ case EV_KEY_F24:
-+ case EV_KEY_KPCOMMA:
-+ case EV_KEY_COMPOSE:
-+ code = KEY_UNKNOWN;
-+ break;
-+ case EV_KEY_F13:
-+ code = KEY_F13;
-+ break;
-+ case EV_KEY_F14:
-+ code = KEY_F14;
-+ break;
-+ case EV_KEY_F15:
-+ code = KEY_F15;
-+ break;
-+ case EV_KEY_F16:
-+ code = KEY_F16;
-+ break;
-+ case EV_KEY_F17:
-+ code = KEY_F17;
-+ break;
-+ case EV_KEY_KPENTER:
-+ code = KEY_KP_Enter;
-+ break;
-+ case EV_KEY_RIGHTCTRL:
-+ code = KEY_RCtrl;
-+ break;
-+ case EV_KEY_KPSLASH:
-+ code = KEY_KP_Divide;
-+ break;
-+ case EV_KEY_SYSRQ:
-+ code = KEY_SysReqest;
-+ break;
-+ case EV_KEY_RIGHTALT:
-+ code = KEY_AltLang;
-+ break;
-+ case EV_KEY_HOME:
-+ code = KEY_Home;
-+ break;
-+ case EV_KEY_UP:
-+ code = KEY_Up;
-+ break;
-+ case EV_KEY_PAGEUP:
-+ code = KEY_PgUp;
-+ break;
-+ case EV_KEY_LEFT:
-+ code = KEY_Left;
-+ break;
-+ case EV_KEY_RIGHT:
-+ code = KEY_Right;
-+ break;
-+ case EV_KEY_END:
-+ code = KEY_End;
-+ break;
-+ case EV_KEY_DOWN:
-+ code = KEY_Down;
-+ break;
-+ case EV_KEY_PAGEDOWN:
-+ code = KEY_PgDown;
-+ break;
-+ case EV_KEY_INSERT:
-+ code = KEY_Insert;
-+ break;
-+ case EV_KEY_DELETE:
-+ code = KEY_Delete;
-+ break;
-+ case EV_KEY_KPEQUAL:
-+ code = KEY_KP_Equal;
-+ break;
-+ case EV_KEY_PAUSE:
-+ code = KEY_Pause;
-+ break;
-+ case EV_KEY_LEFTMETA:
-+ code = KEY_LMeta;
-+ break;
-+ case EV_KEY_RIGHTMETA:
-+ code = KEY_RMeta;
-+ break;
-+ default:
-+ code = ev->code;
-+ break;
-+ }
-+ if (code >= 127)
-+ code = KEY_UNKNOWN;
-+
-+ if (ev->value)
-+ pKbd->PostEvent(pInfo, code, TRUE);
-+ else
-+ pKbd->PostEvent(pInfo, code, FALSE);
-+ break;
-+ }
-+ } while (xf86WaitForInput(pInfo->fd, 0));
-+
-+ return;
-+}
-+
-+static int
-+evdevKbdInit(InputInfoPtr pInfo, int what)
-+{
-+ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-+ evdevKbdPtr evdevKbd = (evdevKbdPtr) pKbd->private;
-+
-+ evdevKbd->evdev.name = xf86SetStrOption(pInfo->options,"Dev Name",NULL);
-+ evdevKbd->evdev.phys = xf86SetStrOption(pInfo->options,"Dev Phys",NULL);
-+ evdevKbd->evdev.device = xf86SetStrOption(pInfo->options,"Dev Device",NULL);
-+ evdevKbd->evdev.cb_data = pInfo->dev;
-+ evdevKbd->evdev.callback = pInfo->device_control;
-+ if (!evdevNewDriver (&evdevKbd->evdev)) {
-+ xf86Msg(X_ERROR, "%s: cannot register with evdev brain\n", pInfo->name);
-+ return BadRequest;
-+ }
-+ if ((pInfo->fd = evdevGetFDForDriver (&evdevKbd->evdev)) == -1) {
-+ xf86Msg(X_ERROR, "%s: cannot open input device\n", pInfo->name);
-+ return BadRequest;
-+ }
-+
-+ close(pInfo->fd);
-+ pInfo->fd = -1;
-+
-+ return Success;
-+}
-+
-+static int
-+evdevKbdOn(InputInfoPtr pInfo, int what)
-+{
-+ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-+ evdevKbdPtr evdevKbd = (evdevKbdPtr) pKbd->private;
-+ unsigned long mask;
-+
-+ if ((pInfo->fd = evdevGetFDForDriver (&evdevKbd->evdev)) == -1) {
-+ xf86Msg(X_ERROR, "%s: cannot open input device (name: '%s', phys: '%s')\n", pInfo->name, evdevKbd->evdev.name, evdevKbd->evdev.phys);
-+ return BadRequest;
-+ }
-+ /*
-+ * Grab the keyboard for ourselves.
-+ */
-+ if (ioctl(pInfo->fd, EVIOCGMASK, &mask) < 0) {
-+ xf86Msg(X_INFO, "%s: unable to use input device masking '%s', trying grabbing.\n", pInfo->name, strerror(errno));
-+ if (ioctl(pInfo->fd, EVIOCGRAB, 1) < 0) {
-+ xf86Msg(X_ERROR, "%s: unable to grab device '%s', you may have problems.\n", pInfo->name, strerror(errno));
-+ }
-+ return Success;
-+ }
-+
-+ mask |= BIT(2);
-+ ioctl(pInfo->fd, EVIOCSMASK, mask);
-+
-+ ioctl(pInfo->fd, EVIOCGDMASK, &mask);
-+ mask &= ~BIT(0);
-+ mask |= BIT(2);
-+ ioctl(pInfo->fd, EVIOCSDMASK, mask);
-+ xf86Msg(X_INFO, "%s: Using input device masking.\n", pInfo->name);
-+
-+ return Success;
-+}
-+
-+static int
-+evdevKbdOff(InputInfoPtr pInfo, int what)
-+{
-+ if (pInfo->fd != -1) {
-+ unsigned long mask;
-+
-+ if (ioctl(pInfo->fd, EVIOCGDMASK, &mask) >= 0) {
-+ mask |= BIT(0);
-+ ioctl(pInfo->fd, EVIOCSDMASK, mask);
-+ }
-+
-+ close (pInfo->fd);
-+ pInfo->fd = -1;
-+ }
-+ return Success;
-+}
-+
-+static void
-+evdevSoundBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
-+{
-+}
-+
-+static void
-+evdevSetKbdLeds(InputInfoPtr pInfo, int leds)
-+{
-+ struct input_event event;
-+
-+ memset(&event, 0, sizeof(event));
-+ event.type = EV_LED;
-+ event.code = EV_LED_CAPSL;
-+ event.value = (leds & XLED1) ? 1 : 0;
-+ write(pInfo->fd, (char *) &event, sizeof(event));
-+
-+ event.type = EV_LED;
-+ event.code = EV_LED_NUML;
-+ event.value = (leds & XLED2) ? 1 : 0;
-+ write(pInfo->fd, (char *) &event, sizeof(event));
-+
-+ event.type = EV_LED;
-+ event.code = EV_LED_SCROLLL;
-+ event.value = (leds & XLED3) ? 1 : 0;
-+ write(pInfo->fd, (char *) &event, sizeof(event));
-+
-+ event.type = EV_LED;
-+ event.code = EV_LED_COMPOSE;
-+ event.value = (leds & XLED4) ? 1 : 0;
-+ write(pInfo->fd, (char *) &event, sizeof(event));
-+}
-+
-+static int
-+evdevGetKbdLeds(InputInfoPtr pInfo)
-+{
-+ unsigned long evleds[NBITS(EV_LED_MAX)];
-+ int leds = 0;
-+
-+ ioctl(pInfo->fd, EVIOCGLED(sizeof(evleds)), &evleds);
-+ if (test_bit(EV_LED_CAPSL, evleds))
-+ leds |= XLED1;
-+
-+ if (test_bit(EV_LED_NUML, evleds))
-+ leds |= XLED2;
-+
-+ if (test_bit(EV_LED_SCROLLL, evleds))
-+ leds |= XLED3;
-+
-+ if (test_bit(EV_LED_COMPOSE, evleds))
-+ leds |= XLED4;
-+
-+ return leds;
-+}
-+
-+static void
-+evdevSetKbdRepeat(InputInfoPtr pInfo, char rad)
-+{
-+ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
-+ int rep_info[2];
-+
-+ rep_info[0] = pKbd->delay;
-+ rep_info[1] = pKbd->rate * 10;
-+ ioctl(pInfo->fd, EVIOCSREP, rep_info);
-+}
-+
-+static int
-+evdevGetSpecialKey(InputInfoPtr pInfo, int scanCode)
-+{
-+ return scanCode;
-+}
-+
-+static Bool
-+evdevOpenKeyboard(InputInfoPtr pInfo)
-+{
-+ return TRUE;
-+}
-+
-+static Bool
-+evdevKbdPreInit(InputInfoPtr pInfo, char *protocol)
-+{
-+ KbdDevPtr pKbd = pInfo->private;
-+ evdevKbdPtr evdevKbd;
-+ xf86Msg(X_CONFIG, "%s: Protocol: %s\n", pInfo->name, protocol);
-+
-+ pKbd->private = evdevKbd = xcalloc(sizeof(evdevKbdRec), 1);
-+
-+ xf86Msg(X_ERROR, "%s: pInfo->dev: %p\n", pInfo->name, pInfo->dev);
-+
-+ if (pKbd->private == NULL) {
-+ xf86Msg(X_ERROR, "%s: cannot allocate buffer\n", pInfo->name);
-+ return FALSE;
-+ }
-+
-+ evdevKbd->buffer = xcalloc(sizeof(struct input_event),1);
-+
-+ if (evdevKbd->buffer == NULL) {
-+ xf86Msg(X_ERROR, "%s: cannot allocate buffer\n", pInfo->name);
-+ xfree(evdevKbd);
-+ return FALSE;
-+ }
-+
-+ if (!evdevStart (pInfo->drv)) {
-+ xf86Msg(X_ERROR, "%s: cannot start evdev brain\n", pInfo->name);
-+ xfree(evdevKbd);
-+ xfree(evdevKbd->buffer);
-+ return FALSE;
-+ }
-+
-+ pKbd->KbdInit = evdevKbdInit;
-+ pKbd->KbdOn = evdevKbdOn;
-+ pKbd->KbdOff = evdevKbdOff;
-+ pKbd->Bell = evdevSoundBell;
-+ pKbd->SetLeds = evdevSetKbdLeds;
-+ pKbd->GetLeds = evdevGetKbdLeds;
-+ pKbd->SetKbdRepeat = evdevSetKbdRepeat;
-+ pKbd->KbdGetMapping = KbdGetMapping;
-+ pKbd->SpecialKey = SpecialKey;
-+
-+ pKbd->RemapScanCode = NULL;
-+ pKbd->GetSpecialKey = evdevGetSpecialKey;
-+
-+ pKbd->OpenKeyboard = evdevOpenKeyboard;
-+ pKbd->vtSwitchSupported = FALSE;
-+ pInfo->read_input = evdevKbdReadInput;
-+
-+ return TRUE;
-+}
-+
-+Bool
-+xf86OSKbdPreInit(InputInfoPtr pInfo)
-+{
-+ char *protocol;
-+ Bool ret;
-+
-+ protocol = xf86SetStrOption(pInfo->options, "Protocol", NULL);
-+
-+ if (!protocol)
-+ ret = FALSE;
-+ else if (!strcmp(protocol, "standard"))
-+ ret = stdKbdPreInit(pInfo, protocol);
-+ else if (!strcmp(protocol, "evdev"))
-+ ret = evdevKbdPreInit(pInfo, protocol);
-+ else
-+ ret = FALSE;
-+
-+ xfree(protocol);
-+ return ret;
-+}
Modified: trunk/debian/patches/series
===================================================================
--- trunk/debian/patches/series 2006-01-09 01:17:15 UTC (rev 1038)
+++ trunk/debian/patches/series 2006-01-09 01:37:12 UTC (rev 1039)
@@ -40,9 +40,6 @@
general/046_fix_cyrillic_font_aliases.diff -p0
general/048_via_driver_enable.diff -p0
general/051_xkb_documentation_updates.diff -p0
-general/053_lnx_evdev.diff -p0
-general/054_lnx_evdev_mouse.diff -p0
-general/055_lnx_evdev_keyboard.diff -p0
general/058_support_external_Xcursor_Xft_Xrender_libs.diff -p0
general/062_make_libGL_PIC_compliant.diff -p0
general/065_Xft1_manpage_conflict.diff -p0
Modified: trunk/debian/xserver-xorg.templates
===================================================================
--- trunk/debian/xserver-xorg.templates 2006-01-09 01:17:15 UTC (rev 1038)
+++ trunk/debian/xserver-xorg.templates 2006-01-09 01:37:12 UTC (rev 1039)
@@ -61,8 +61,8 @@
Template: xserver-xorg/config/modules
Type: multiselect
-Choices: bitmap, dbe, ddc, dri, extmod, freetype, glx, int10, record, type1, v4l, vbe
-Default: bitmap, dbe, ddc, dri, extmod, freetype, glx, int10, record, type1, vbe
+Choices: bitmap, dbe, ddc, dri, evdev, extmod, freetype, glx, int10, record, type1, v4l, vbe
+Default: bitmap, dbe, ddc, dri, evdev, extmod, freetype, glx, int10, record, type1, vbe
_Description: Select the X.Org server modules that should be loaded by default.
It is possible to customize (or completely omit) the list of modules that the
X server loads by default. This option is for advanced users. In most
Reply to: