.gitignore | 1 configure.ac | 2 man/evdev.man | 121 ++++--- src/Makefile.am | 2 src/evdev.c | 458 +++++++++++++++------------ src/evdev.h | 245 ++++++-------- src/evdev_axes.c | 810 +++++++++++++++++++++++++++++++------------------ src/evdev_brain.c | 505 ------------------------------ src/evdev_btn.c | 354 +++++++++++---------- src/evdev_key.c | 209 ++++++++---- src/inotify-syscalls.h | 83 ----- src/inotify.h | 60 --- 12 files changed, 1305 insertions(+), 1545 deletions(-)
New commits: commit fa15e909933252d5cc0a2a272506effbcf21d6f9 Author: Peter Samuelson <[EMAIL PROTECTED]> Date: Thu Oct 11 07:27:30 2007 +0200 Fix one additional typo in evdev.man (axis named BRAKE, not BREAK). diff --git a/man/evdev.man b/man/evdev.man index 3026efe..2a11945 100644 --- a/man/evdev.man +++ b/man/evdev.man @@ -253,7 +253,7 @@ and map the Wheel axis to buttons 4 5, you get buttons 1 2 3 .SS ABSOLUTE AXIS CONFIGURATION The relative axis portion of this driver handle all reported relative axes. .fi -The axes are named X, Y, Z, RX, RY, RZ, THROTTLE, RUDDER, WHEEL, GAS, BREAK, +The axes are named X, Y, Z, RX, RY, RZ, THROTTLE, RUDDER, WHEEL, GAS, BRAKE, <11\-15>, HAT0X, HAT0Y, HAT1X, HAT1Y, HAT2X, HAT2Y, HAT3X, HAT3Y, PRESSURE, TILT_X, TILT_Y, TOOL_WIDTH, VOLUME, <29\-39>, MISC, <41\-62>. .fi commit 12a27693b9bb41b9222c5c2256815d225ee75929 Author: Peter Samuelson <[EMAIL PROTECTED]> Date: Thu Oct 11 00:09:40 2007 +0200 evdev.man minor fixes * Use \- (ASCII dash) instead of - (hyphen), where appropriate * Use a roff escape instead of a UTF-8 character. * Consistent use of quote characters. * Consistent use of typographic conventions: italic "n" in place of "<N>" or "integer" or "number", bold for option names, bit maps, etc. Debian bug #446118 diff --git a/man/evdev.man b/man/evdev.man index 2395cd8..3026efe 100644 --- a/man/evdev.man +++ b/man/evdev.man @@ -14,7 +14,7 @@ evdev \- Generic Linux input driver .fi .SH DESCRIPTION .B evdev -is an __xservername__ input driver for Linux\'s generic event devices. It +is an __xservername__ input driver for Linux's generic event devices. It therefore supports all input devices that the kernel knows about, including most mice and keyboards. .PP @@ -46,7 +46,7 @@ all QWERTY keyboards: .BI " Identifier \*q" keyboard \*q .B " Driver \*qevdev\*q" .BI " Option \*qevBits\*q \*q" "+1" \*q -.BI " Option \*qkeyBits\*q \*q" "~1-255 ~352-511" \*q +.BI " Option \*qkeyBits\*q \*q" "~1\-255 ~352\-511" \*q .BI " Option \*qPass\*q \*q" "3" \*q \ \ ... .B EndSection @@ -58,9 +58,9 @@ And the following for all mice: .B "Section \*qInputDevice\*q" .BI " Identifier \*q" mouse \*q .B " Driver \*qevdev\*q" -.BI " Option \*qevBits\*q \*q" "+1-2" \*q -.BI " Option \*qkeyBits\*q \*q" "~272-287" \*q -.BI " Option \*qrelBits\*q \*q" "~0-2 ~6 ~8" \*q +.BI " Option \*qevBits\*q \*q" "+1\-2" \*q +.BI " Option \*qkeyBits\*q \*q" "~272\-287" \*q +.BI " Option \*qrelBits\*q \*q" "~0\-2 ~6 ~8" \*q .BI " Option \*qPass\*q \*q" "3" \*q \ \ ... .B EndSection @@ -86,8 +86,11 @@ control what devices are accepted: .TP 7 .BI "Option \*qDevice\*q \*q" string \*q Specifies the device note through which the device can be accessed. -At this time ONLY /dev/input/event<N>, where <N> is an integer, are -matched against this this field. +At this time ONLY +.RI /dev/input/event n , +where +.I n +is an integer, are matched against this this field. .fi This option uses globbing. .fi @@ -120,25 +123,29 @@ is the value you want for this option. This option uses globbing. .TP 7 -.BI "Option \*q<map>Bits\*q \*q" "bit specifier" \*q +.BI "Option \*q" map "Bits\*q \*q" "bit specifier" \*q Specifies device capability bits which must be set, possibly set, or unset. .fi -<map>Bits: Where map is one of ev, key, rel, abs, msc, led, snd, or -ff. +.IR map "Bits: Where " map +is one of +.BR ev ", " key ", " rel ", " abs , +.BR msc ", " led ", " snd ", or " ff . .fi -The bit specifier format is a string consisting of +<n>, -<n>, and ~<n> -space separated specifiers, where <n> is a positive integer or integer range. -(The latter given in the format of 2-6.) +The bit specifier format is a string consisting of +.RI + n ", \-" n ", and ~" n +space-separated specifiers, where +.I n +is a positive integer or integer range. (The latter given in the format of 2\-6.) .fi + specifies bits which must be set. .fi -- specifies bits which must not be set. +\- specifies bits which must not be set. .fi ~ is a little more complex, it specifies that at least one of the bits given with ~ for the field in question must be set, but it doesn't matter how many or which of the bits. (It is actually the most useful of the 3 specifiers.) .fi -As an example '+0 +3 -1-2 ~5-10', requires bits 0 and 3 be set, +As an example, \*q+0 +3 \-1\-2 ~5\-10\*q requires bits 0 and 3 be set, bits 1 and 2 to not be set, and at least one bit in the range of 5 to 10 be set. .fi @@ -148,20 +155,24 @@ by typing \*qcat /proc/bus/input/devices\*q, and should contain the defines which declare what bits are what for each field. .TP 7 -.BI "Option \*qbustype\*q \*q" integer \*q +.BI "Option \*qbustype\*q \*q" n \*q Specifies the bus ID for the device you wish to use. .fi -This is either 0 (the default, matches anything), or the Bus=<n> field in +This is either 0 (the default, matches anything), or the +.BI Bus= n +field in .B /proc/bus/input/devices for your device. .fi This value depends on what type of bus your device is connected to. .TP 7 -.BI "Option \*qvendor\*q \*q" integer \*q +.BI "Option \*qvendor\*q \*q" n \*q Specifies the vendor ID for the device you wish to use. .fi -This is either 0 (the default, matches anything), or the Vendor=<n> field in +This is either 0 (the default, matches anything), or the +.BI Vendor= n +field in .B /proc/bus/input/devices for your device. .fi @@ -169,10 +180,12 @@ This value should remain constant barring perhaps firmware updates to the device itself. .TP 7 -.BI "Option \*qversion\*q \*q" integer \*q +.BI "Option \*qversion\*q \*q" n \*q Specifies the version for the device you wish to use. .fi -This is either 0 (the default, matches anything), or the Version=<n> field in +This is either 0 (the default, matches anything), or the +.BI Version= n +field in .B /proc/bus/input/devices for your device. .fi @@ -180,10 +193,12 @@ This value should remain constant barring perhaps firmware updates to the device itself. .TP 7 -.BI "Option \*qproduct\*q \*q" integer \*q +.BI "Option \*qproduct\*q \*q" n \*q Specifies the product ID for the device you wish to use. .fi -This is either 0 (the default, matches anything), or the Product=<n> field in +This is either 0 (the default, matches anything), or the +.BI Product= n +field in .B /proc/bus/input/devices for your device. .fi @@ -191,7 +206,7 @@ This value should remain constant barring perhaps firmware updates to the device itself. .TP 7 -.BI "Option \*qPass\*q \*q" integer \*q +.BI "Option \*qPass\*q \*q" n \*q Specifies the order in which evdev will scan for devices. .fi This is in the range of 0 to 3, and is used for the case @@ -223,13 +238,13 @@ The following driver .B Options control the relative axis portion of the driver: .TP 7 -.BI "Option \*q<axis>RelativeAxisMap\*q \*q" number \*q +.BI "Option \*q" axis "RelativeAxisMap\*q \*q" n \*q This remaps the axis specified to the specified valuator. .TP 7 -.BI "Option \*q<axis>RelativeAxisButtons\*q \*q" number " number\*q +.BI "Option \*q" axis "RelativeAxisButtons\*q \*q" "n n" \*q This remaps the axis specified to the specified buttons. .fi -Note that the physical buttons are always remapped around 'fake' buttons +Note that the physical buttons are always remapped around \*qfake\*q buttons created by this option, so that if you have physical buttons 1 2 3 4 5, and map the Wheel axis to buttons 4 5, you get buttons 1 2 3 .B 4 5 @@ -239,8 +254,8 @@ and map the Wheel axis to buttons 4 5, you get buttons 1 2 3 The relative axis portion of this driver handle all reported relative axes. .fi The axes are named X, Y, Z, RX, RY, RZ, THROTTLE, RUDDER, WHEEL, GAS, BREAK, -<11-15>, HAT0X, HAT0Y, HAT1X, HAT1Y, HAT2X, HAT2Y, HAT3X, HAT3Y, PRESSURE, -TILT_X, TILT_Y, TOOL_WIDTH, VOLUME, <29-39>, MISC, <41-62>. +<11\-15>, HAT0X, HAT0Y, HAT1X, HAT1Y, HAT2X, HAT2Y, HAT3X, HAT3Y, PRESSURE, +TILT_X, TILT_Y, TOOL_WIDTH, VOLUME, <29\-39>, MISC, <41\-62>. .fi The axes are reported to X as valuators, with the default mapping of axes to valuators being the first axes found to the first valuator, the second @@ -254,21 +269,21 @@ The following driver .B Options control the relative axis portion of the driver: .TP 7 -.BI "Option \*q<axis>AbsoluteAxisMap\*q \*q" number \*q +.BI "Option \*q" axis "AbsoluteAxisMap\*q \*q" n \*q This remaps the axis specified to the specified valuator. .TP 7 -.BI "Option \*qAbsoluteScreen\*q \*q" number \*q +.BI "Option \*qAbsoluteScreen\*q \*q" n \*q This binds the device to a specific screen, scaling it to the coordinate space of that screen. .fi -The number can either be -1, or a valid screen number. +The number can either be \-1, or a valid screen number. .fi -If -1 or if in relative mode no scaling or screen fixing is done. +If \-1 or if in relative mode no scaling or screen fixing is done. .fi This is of most use for digitizers, where the screen and the input device are the same surface. .TP 7 -.BI "Option \*qMode\*q \*q" <mode>\*q +.BI "Option \*qMode\*q \*q" mode \*q This selects the default mode for the device. .fi Valid values are \*qabsolute\*q and \*qrelative\*q. @@ -277,7 +292,7 @@ This can be set at run time per actual device with the xinput utility. .PP .SS BUTTON CONFIGURATION At the moment, the button portion of this driver only handles buttons -reported as mouse buttons, that is from BTN_MOUSE to BTN_JOYSTICK - 1. +reported as mouse buttons, that is from BTN_MOUSE to BTN_JOYSTICK \- 1. .fi At this time there are no configuration options for buttons. .SS KEYBOARD CONFIGURATION @@ -295,15 +310,15 @@ specifies which XKB rules file to use for interpreting the .BR XkbVariant , and .B XkbOptions -settings. Default: "xorg" for most platforms, but "xfree98" for the +settings. Default: \*qxorg\*q for most platforms, but \*qxfree98\*q for the Japanese PC-98 platforms. .TP 7 .BI "Option \*qXkbModel\*q \*q" modelname \*q -specifies the XKB keyboard model name. Default: "evdev". +specifies the XKB keyboard model name. Default: \*qevdev\*q. .TP 7 .BI "Option \*qXkbLayout\*q \*q" layoutname \*q specifies the XKB keyboard layout name. This is usually the country or -language type of the keyboard. Default: "us". +language type of the keyboard. Default: \*qus\*q. .TP 7 .BI "Option \*qXkbVariant\*q \*q" variants \*q specifies the XKB keyboard variant components. These can be used to @@ -317,6 +332,6 @@ enhance the keyboard behaviour. Default: not set. .SH AUTHORS Zephaniah E. Hull. .fi -Kristian Høgsberg. +Kristian H\(/ogsberg. .SH "SEE ALSO" __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__). commit 1c40c7db188bc9030aaf256004b914815e821940 Author: James Cloos <[EMAIL PROTECTED]> Date: Mon Sep 3 05:52:08 2007 -0400 Add *~ to .gitignore to skip patch/emacs droppings diff --git a/.gitignore b/.gitignore index da4f97a..df3de77 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,4 @@ ltmain.sh missing stamp-h1 .*.swp +*~ commit e2be2ffa473583b98b93a319163bb54eb5d83ed6 Author: Daniel Stone <[EMAIL PROTECTED]> Date: Wed Aug 1 00:02:33 2007 +0300 Options: Accept differently-named options Take some differently-named options for device and the XKB options. These should really be better-handled, but eh. diff --git a/src/evdev.c b/src/evdev.c index 94cb619..dc801d0 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -398,7 +398,9 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags) pInfo->private = pEvdev; - pEvdev->device = xf86CheckStrOption(dev->commonOptions, "Device", NULL); + pEvdev->device = xf86CheckStrOption(dev->commonOptions, "path", NULL); + if (!pEvdev->device) + pEvdev->device = xf86CheckStrOption(dev->commonOptions, "Device", NULL); xf86CollectInputOptions(pInfo, NULL, NULL); xf86ProcessCommonOptions(pInfo, pInfo->options); diff --git a/src/evdev_key.c b/src/evdev_key.c index d278988..eed6319 100644 --- a/src/evdev_key.c +++ b/src/evdev_key.c @@ -466,11 +466,22 @@ EvdevKeyNew (InputInfoPtr pInfo) pInfo->flags |= XI86_KEYBOARD_CAPABLE | XI86_CONFIGURED; - SetXkbOption (pInfo, "XkbRules", __XKBDEFRULES__, &state->key->xkb_rules); - SetXkbOption (pInfo, "XkbModel", "evdev", &state->key->xkb_model); - SetXkbOption (pInfo, "XkbLayout", "us", &state->key->xkb_layout); - SetXkbOption (pInfo, "XkbVariant", NULL, &state->key->xkb_variant); - SetXkbOption (pInfo, "XkbOptions", NULL, &state->key->xkb_options); + SetXkbOption (pInfo, "xkb_rules", NULL, &state->key->xkb_rules); + if (!state->key->xkb_rules) + SetXkbOption (pInfo, "XkbRules", __XKBDEFRULES__, + &state->key->xkb_rules); + SetXkbOption (pInfo, "xkb_model", NULL, &state->key->xkb_model); + if (!state->key->xkb_model) + SetXkbOption (pInfo, "XkbModel", "evdev", &state->key->xkb_model); + SetXkbOption (pInfo, "xkb_layout", NULL, &state->key->xkb_layout); + if (!state->key->xkb_layout) + SetXkbOption (pInfo, "XkbLayout", "us", &state->key->xkb_layout); + SetXkbOption (pInfo, "xkb_variant", NULL, &state->key->xkb_variant); + if (!state->key->xkb_variant) + SetXkbOption (pInfo, "XkbVariant", NULL, &state->key->xkb_variant); + SetXkbOption (pInfo, "xkb_options", NULL, &state->key->xkb_options); + if (!state->key->xkb_options) + SetXkbOption (pInfo, "XkbOptions", NULL, &state->key->xkb_options); return Success; } commit e86aab93c56ad72f3798169ea94dc6b91dab6ab6 Author: Brice Goglin <[EMAIL PROTECTED]> Date: Thu Jul 26 18:31:58 2007 +0200 Multiple typos in evdev.man Reported by "A. Costa" <[EMAIL PROTECTED]> in http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=432063 diff --git a/man/evdev.man b/man/evdev.man index 8c6ed00..2395cd8 100644 --- a/man/evdev.man +++ b/man/evdev.man @@ -110,7 +110,7 @@ This option uses globbing. .BI "Option \*qPhys\*q \*q" string \*q Specifies the device phys string for the device you wish to use. .fi -The phys string is generally consistant to the USB port a device is plugged +The phys string is generally consistent to the USB port a device is plugged into. .fi A list of currently plugged in devices and associated device names can be @@ -127,7 +127,7 @@ Specifies device capability bits which must be set, possibly set, or unset. ff. .fi The bit specifier format is a string consisting of +<n>, -<n>, and ~<n> -space sepirated specifiers, where <n> is a positive integer or integer range. +space separated specifiers, where <n> is a positive integer or integer range. (The latter given in the format of 2-6.) .fi + specifies bits which must be set. @@ -195,9 +195,9 @@ device itself. Specifies the order in which evdev will scan for devices. .fi This is in the range of 0 to 3, and is used for the case -where more then one evdev inputsection matches the same device. +where more then one evdev input section matches the same device. .fi -An inputsection with a lower pass number will always beat out +An input section with a lower pass number will always beat out one with a higher pass number. Order when both sections are the same number is undefined. .fi @@ -206,14 +206,14 @@ The default is 0. .PP .SS RELATIVE AXIS CONFIGURATION -The relative axis portion of this driver handle all reported relative axies. +The relative axis portion of this driver handle all reported relative axes. .fi -The axies are named X, Y, Z, RX, RY, RZ, HWHEEL, DIAL, WHEEL, MISC, 10, 11, +The axes are named X, Y, Z, RX, RY, RZ, HWHEEL, DIAL, WHEEL, MISC, 10, 11, 12, 13, 14, and 15. .fi -The axies are reported to X as valuators, with the default mapping of axies -to valuators being the first axies found to the first valuator, the second -found to the second valuator, and so on, so that if you have axies X, Y, +The axes are reported to X as valuators, with the default mapping of axes +to valuators being the first axes found to the first valuator, the second +found to the second valuator, and so on, so that if you have axes X, Y, HWHEEL, and WHEEL, you would have X=0, Y=1, HWHEEL=2, WHEEL=3. .fi If the driver is reporting core events, valuators 0 and 1 are always mapped @@ -236,15 +236,15 @@ and map the Wheel axis to buttons 4 5, you get buttons 1 2 3 6 7, with buttons 6 and 7 being physical buttons 4 and 5. .PP .SS ABSOLUTE AXIS CONFIGURATION -The relative axis portion of this driver handle all reported relative axies. +The relative axis portion of this driver handle all reported relative axes. .fi -The axies are named X, Y, Z, RX, RY, RZ, THROTTLE, RUDDER, WHEEL, GAS, BREAK, +The axes are named X, Y, Z, RX, RY, RZ, THROTTLE, RUDDER, WHEEL, GAS, BREAK, <11-15>, HAT0X, HAT0Y, HAT1X, HAT1Y, HAT2X, HAT2Y, HAT3X, HAT3Y, PRESSURE, TILT_X, TILT_Y, TOOL_WIDTH, VOLUME, <29-39>, MISC, <41-62>. .fi -The axies are reported to X as valuators, with the default mapping of axies -to valuators being the first axies found to the first valuator, the second -found to the second valuator, and so on, so that if you have axies X, Y, +The axes are reported to X as valuators, with the default mapping of axes +to valuators being the first axes found to the first valuator, the second +found to the second valuator, and so on, so that if you have axes X, Y, TILT_X, and TILT_Y, you would have X=0, Y=1, TILT_X=2, TILT_Y=3. .fi If the driver is reporting core events, valuators 0 and 1 are always mapped @@ -279,7 +279,7 @@ This can be set at run time per actual device with the xinput utility. At the moment, the button portion of this driver only handles buttons reported as mouse buttons, that is from BTN_MOUSE to BTN_JOYSTICK - 1. .fi -At this time there are no configuration options for buttens. +At this time there are no configuration options for buttons. .SS KEYBOARD CONFIGURATION The keyboard portion of this driver handles all keys reported and requires XKB support. commit c69f4bd5707093a4f998c3fad508f466edbe8334 Author: Tiago Vignatti <[EMAIL PROTECTED]> Date: Fri Jun 15 01:35:29 2007 -0300 Clean up a little bit the code. diff --git a/src/evdev.c b/src/evdev.c index 42bc9df..94cb619 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -267,12 +267,6 @@ EvdevReadInput(InputInfoPtr pInfo) } } -static void -EvdevSigioReadInput (int fd, void *data) -{ - EvdevReadInput ((InputInfoPtr) data); -} - static int EvdevProc(DeviceIntPtr device, int what) { @@ -315,8 +309,8 @@ EvdevProc(DeviceIntPtr device, int what) xf86Msg(X_ERROR, "%s: Unable to grab device (%s).\n", pInfo->name, strerror(errno)); xf86FlushInput (pInfo->fd); - if (!xf86InstallSIGIOHandler (pInfo->fd, EvdevSigioReadInput, pInfo)) - AddEnabledDevice (pInfo->fd); + + xf86AddEnabledDevice(pInfo); device->public.on = TRUE; commit 64677ecc76d6eae530960b714712921e1bb9d4a7 Author: Tiago Vignatti <[EMAIL PROTECTED]> Date: Fri Jun 15 01:33:49 2007 -0300 Remove inotify things. diff --git a/src/Makefile.am b/src/Makefile.am index 5a68288..0fb7ffd 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -29,4 +29,4 @@ @[EMAIL PROTECTED] = -Wall @[EMAIL PROTECTED] = @inputdir@ [EMAIL PROTECTED]@_drv_la_SOURCES = evdev.c evdev.h evdev_axes.c evdev_btn.c evdev_key.c inotify.h inotify-syscalls.h [EMAIL PROTECTED]@_drv_la_SOURCES = evdev.c evdev.h evdev_axes.c evdev_btn.c evdev_key.c diff --git a/src/inotify-syscalls.h b/src/inotify-syscalls.h deleted file mode 100644 index 296da90..0000000 --- a/src/inotify-syscalls.h +++ /dev/null @@ -1,83 +0,0 @@ -#ifndef _LINUX_INOTIFY_SYSCALLS_H -#define _LINUX_INOTIFY_SYSCALLS_H - -#include <sys/syscall.h> - -#if defined(__i386__) -# define __NR_inotify_init 291 -# define __NR_inotify_add_watch 292 -# define __NR_inotify_rm_watch 293 -#elif defined(__x86_64__) -# define __NR_inotify_init 253 -# define __NR_inotify_add_watch 254 -# define __NR_inotify_rm_watch 255 -#elif defined(__powerpc__) || defined(__powerpc64__) -# define __NR_inotify_init 275 -# define __NR_inotify_add_watch 276 -# define __NR_inotify_rm_watch 277 -#elif defined (__ia64__) -# define __NR_inotify_init 1277 -# define __NR_inotify_add_watch 1278 -# define __NR_inotify_rm_watch 1279 -#elif defined (__s390__) -# define __NR_inotify_init 284 -# define __NR_inotify_add_watch 285 -# define __NR_inotify_rm_watch 286 -#elif defined (__alpha__) -# define __NR_inotify_init 444 -# define __NR_inotify_add_watch 445 -# define __NR_inotify_rm_watch 446 -#elif defined (__sparc__) || defined (__sparc64__) -# define __NR_inotify_init 151 -# define __NR_inotify_add_watch 152 -# define __NR_inotify_rm_watch 156 -#elif defined (__arm__) -# define __NR_inotify_init 316 -# define __NR_inotify_add_watch 317 -# define __NR_inotify_rm_watch 318 -#elif defined (__sh__) -# define __NR_inotify_init 290 -# define __NR_inotify_add_watch 291 -# define __NR_inotify_rm_watch 292 -#elif defined (__hppa__) || defined (__hppa64__) -# define __NR_inotify_init 269 -# define __NR_inotify_add_watch 270 -# define __NR_inotify_rm_watch 271 -#elif defined (__mips__) -# if _MIPS_SIM == _MIPS_SIM_ABI32 -# define __NR_inotify_init 4284 -# define __NR_inotify_add_watch 4285 -# define __NR_inotify_rm_watch 4286 -# elif _MIPS_SIM == _MIPS_SIM_NABI32 -# define __NR_inotify_init 6247 -# define __NR_inotify_add_watch 6248 -# define __NR_inotify_rm_watch 6249 -# elif _MIPS_SIM == _MIPS_SIM_ABI64 -# define __NR_inotify_init 5243 -# define __NR_inotify_add_watch 5244 -# define __NR_inotify_rm_watch 5245 -# endif -#elif defined (__mc68000__) -# define __NR_inotify_init 284 -# define __NR_inotify_add_watch 285 -# define __NR_inotify_rm_watch 286 -#else -# error "Unsupported architecture!" -#endif - -static inline int inotify_init (void) -{ - return syscall (__NR_inotify_init); -} - -static inline int inotify_add_watch (int fd, const char *name, __u32 mask) -{ - return syscall (__NR_inotify_add_watch, fd, name, mask); -} - -static inline int inotify_rm_watch (int fd, __u32 wd) -{ - return syscall (__NR_inotify_rm_watch, fd, wd); -} - -#endif /* _LINUX_INOTIFY_SYSCALLS_H */ diff --git a/src/inotify.h b/src/inotify.h deleted file mode 100644 index 20d419a..0000000 --- a/src/inotify.h +++ /dev/null @@ -1,60 +0,0 @@ -/* - * Inode based directory notification for Linux - * - * Copyright (C) 2005 John McCutchan - */ - -#ifndef _LINUX_INOTIFY_H -#define _LINUX_INOTIFY_H - -#include <linux/types.h> - -/* - * struct inotify_event - structure read from the inotify device for each event - * - * When you are watching a directory, you will receive the filename for events - * such as IN_CREATE, IN_DELETE, IN_OPEN, IN_CLOSE, ..., relative to the wd. - */ -struct inotify_event { - __s32 wd; /* watch descriptor */ - __u32 mask; /* watch mask */ - __u32 cookie; /* cookie to synchronize two events */ - __u32 len; /* length (including nulls) of name */ - char name[0]; /* stub for possible name */ -}; - -/* the following are legal, implemented events that user-space can watch for */ -#define IN_ACCESS 0x00000001 /* File was accessed */ -#define IN_MODIFY 0x00000002 /* File was modified */ -#define IN_ATTRIB 0x00000004 /* Metadata changed */ -#define IN_CLOSE_WRITE 0x00000008 /* Writtable file was closed */ -#define IN_CLOSE_NOWRITE 0x00000010 /* Unwrittable file closed */ -#define IN_OPEN 0x00000020 /* File was opened */ -#define IN_MOVED_FROM 0x00000040 /* File was moved from X */ -#define IN_MOVED_TO 0x00000080 /* File was moved to Y */ -#define IN_CREATE 0x00000100 /* Subfile was created */ -#define IN_DELETE 0x00000200 /* Subfile was deleted */ -#define IN_DELETE_SELF 0x00000400 /* Self was deleted */ - -/* the following are legal events. they are sent as needed to any watch */ -#define IN_UNMOUNT 0x00002000 /* Backing fs was unmounted */ -#define IN_Q_OVERFLOW 0x00004000 /* Event queued overflowed */ -#define IN_IGNORED 0x00008000 /* File was ignored */ - -/* helper events */ -#define IN_CLOSE (IN_CLOSE_WRITE | IN_CLOSE_NOWRITE) /* close */ -#define IN_MOVE (IN_MOVED_FROM | IN_MOVED_TO) /* moves */ - -/* special flags */ -#define IN_ISDIR 0x40000000 /* event occurred against dir */ -#define IN_ONESHOT 0x80000000 /* only send event once */ - -/* - * All of the events - we build the list by hand so that we can add flags in - * the future and not break backward compatibility. Apps will get only the - * events that they originally wanted. Be sure to add new events here! - */ -#define IN_ALL_EVENTS (IN_ACCESS | IN_MODIFY | IN_ATTRIB | IN_CLOSE_WRITE | \ - IN_CLOSE_NOWRITE | IN_OPEN | IN_MOVED_FROM | \ - IN_MOVED_TO | IN_DELETE | IN_CREATE | IN_DELETE_SELF) -#endif /* _LINUX_INOTIFY_H */ commit 08a09682f5b6d43181e98bc72782e2b2eec180e5 Author: Zephaniah E. Hull <[EMAIL PROTECTED]> Date: Wed Jun 13 11:05:07 2007 -0400 Update version using PACKAGE_VERSION_*. diff --git a/src/evdev.c b/src/evdev.c index 868bbff..42bc9df 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -562,7 +562,7 @@ static XF86ModuleVersionInfo EvdevVersionRec = MODINFOSTRING1, MODINFOSTRING2, XORG_VERSION_CURRENT, - 1, 1, 0, + PACKAGE_VERSION_MAJOR, PACKAGE_VERSION_MINOR, PACKAGE_VERSION_PATCHLEVEL, ABI_CLASS_XINPUT, ABI_XINPUT_VERSION, MOD_CLASS_XINPUT, commit 9c9a47210a6c7146f29fd6d05b6f46955a3bee5a Author: Zephaniah E. Hull <[EMAIL PROTECTED]> Date: Tue Jun 12 11:59:16 2007 -0400 Move the mode option handling to the Init stage. (Sorta ugly placement wise, but the other segfaults.) diff --git a/src/evdev_axes.c b/src/evdev_axes.c index 60bfde7..e967c61 100644 --- a/src/evdev_axes.c +++ b/src/evdev_axes.c @@ -726,18 +726,6 @@ EvdevAxisAbsNew1(InputInfoPtr pInfo) } } - s = xf86SetStrOption(pInfo->options, "Mode", "Absolute"); - if (!strcasecmp(s, "Absolute")) { - pInfo->dev->valuator->mode = Absolute; - xf86Msg(X_CONFIG, "%s: Configuring in %s mode.\n", pInfo->name, s); - } else if (!strcasecmp(s, "Relative")) { - pInfo->dev->valuator->mode = Relative; - xf86Msg(X_CONFIG, "%s: Configuring in %s mode.\n", pInfo->name, s); - } else { - pInfo->dev->valuator->mode = Absolute; - xf86Msg(X_CONFIG, "%s: Unknown Mode: %s.\n", pInfo->name, s); - } - return Success; } @@ -861,6 +849,7 @@ EvdevAxesInit (DeviceIntPtr device) evdevAxesRec *axes = state->axes; AbsoluteClassRec *dev_abs; int i; + const char *s; if (!axes || !axes->axes) return Success; @@ -874,6 +863,23 @@ EvdevAxesInit (DeviceIntPtr device) 0)) return !Success; + + /* + * This has to go in Init, because until now there is no valuator struct + * allocated. + */ + s = xf86SetStrOption(pInfo->options, "Mode", "Absolute"); + if (!strcasecmp(s, "Absolute")) { + pInfo->dev->valuator->mode = Absolute; + xf86Msg(X_CONFIG, "%s: Configuring in %s mode.\n", pInfo->name, s); + } else if (!strcasecmp(s, "Relative")) { + pInfo->dev->valuator->mode = Relative; + xf86Msg(X_CONFIG, "%s: Configuring in %s mode.\n", pInfo->name, s); + } else { + pInfo->dev->valuator->mode = Absolute; + xf86Msg(X_CONFIG, "%s: Unknown Mode: %s.\n", pInfo->name, s); + } + /* * Yes, we want to do this for relative devices too. * Some of the settings are useful for both. commit 2d2c4804f925505e737c2c812687f47840218c93 Author: Zephaniah E. Hull <[EMAIL PROTECTED]> Date: Mon Jun 11 09:08:24 2007 -0400 evdev.c: Set and use the X mode control, letting XInput see it properly. Kill some cruft. evdev.h: Set and use the X mode control, letting XInput see it properly. evdev_axes.c: Set and use the X mode control, letting XInput see it properly. evdev_key.c: Remove some cruft, the bell func can be NULL now, so do so. Don't bother looking for keys above 0xF7 until we can actually do something with them. diff --git a/src/evdev.c b/src/evdev.c index 881f079..868bbff 100644 --- a/src/evdev.c +++ b/src/evdev.c @@ -367,9 +367,7 @@ EvdevSwitchMode (ClientPtr client, DeviceIntPtr device, int mode) case Absolute: case Relative: xf86Msg(X_INFO, "%s: Switching mode to %d.\n", pInfo->name, mode); - if (state->abs) - state->mode = mode; - else + if (!state->abs) return !Success; break; default: @@ -379,11 +377,6 @@ EvdevSwitchMode (ClientPtr client, DeviceIntPtr device, int mode) return Success; } -/* -static Bool -EvdevNew(evdevDriverPtr driver, evdevDevicePtr device) -*/ - InputInfoPtr EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags) { @@ -407,9 +400,6 @@ EvdevPreInit(InputDriverPtr drv, IDevPtr dev, int flags) pInfo->device_control = EvdevProc; pInfo->read_input = EvdevReadInput; pInfo->switch_mode = EvdevSwitchMode; -#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) == 0 - pInfo->motion_history_proc = xf86GetMotionEvents; -#endif pInfo->conf_idev = dev; pInfo->private = pEvdev; diff --git a/src/evdev.h b/src/evdev.h index d14bba3..9d84843 100644 --- a/src/evdev.h +++ b/src/evdev.h @@ -181,7 +181,6 @@ typedef struct { typedef struct _evdevState { Bool can_grab; Bool sync; - int mode; /* Either Absolute or Relative. */ evdevBtnPtr btn; evdevAbsPtr abs; diff --git a/src/evdev_axes.c b/src/evdev_axes.c index 4abab46..60bfde7 100644 --- a/src/evdev_axes.c +++ b/src/evdev_axes.c @@ -581,7 +581,7 @@ EvdevAxesAbsProcess (InputInfoPtr pInfo, struct input_event *ev) if (v_flags & EV_ABS_V_M_REL) is_rel = 1; - else if ((v_flags & EV_ABS_V_M_AUTO) && state->mode == Relative) + else if ((v_flags & EV_ABS_V_M_AUTO) && pInfo->dev->valuator->mode == Relative) is_rel = 1; else is_rel = 0; @@ -728,13 +728,13 @@ EvdevAxisAbsNew1(InputInfoPtr pInfo) s = xf86SetStrOption(pInfo->options, "Mode", "Absolute"); if (!strcasecmp(s, "Absolute")) { - state->mode = Absolute; + pInfo->dev->valuator->mode = Absolute; xf86Msg(X_CONFIG, "%s: Configuring in %s mode.\n", pInfo->name, s); } else if (!strcasecmp(s, "Relative")) { - state->mode = Relative; + pInfo->dev->valuator->mode = Relative; xf86Msg(X_CONFIG, "%s: Configuring in %s mode.\n", pInfo->name, s); } else { - state->mode = Absolute; + pInfo->dev->valuator->mode = Absolute; xf86Msg(X_CONFIG, "%s: Unknown Mode: %s.\n", pInfo->name, s); } diff --git a/src/evdev_key.c b/src/evdev_key.c index b0864a3..d278988 100644 --- a/src/evdev_key.c +++ b/src/evdev_key.c @@ -331,22 +331,6 @@ static KeySym map[] = { /* 0xf7 */ NoSymbol, NoSymbol, }; -/* - * FIXME: We have no way of ringing the bell ourselves. - * - * And recent versions of X don't have the system call. - * Who cares. - */ -static void -EvdevKbdBell (int percent, DeviceIntPtr device, pointer arg, int unused) -{ -#if 0 - KeybdCtrl *ctrl = arg; - - xf86OSRingBell(percent, ctrl->bell_pitch, ctrl->bell_duration); -#endif -} - static void EvdevKbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl) { @@ -440,7 +424,7 @@ EvdevKeyInit (DeviceIntPtr device) state->key->xkb_options); XkbInitKeyboardDeviceStruct (device, &state->key->xkbnames, &keySyms, modMap, - EvdevKbdBell, EvdevKbdCtrl); + NULL, EvdevKbdCtrl); return Success; } @@ -467,17 +451,11 @@ EvdevKeyNew (InputInfoPtr pInfo) evdevStatePtr state = &pEvdev->state; int i, keys = 0; - for (i = 0; i <= KEY_UNKNOWN; i++) + for (i = 0; i <= 0xF7; i++) if (test_bit (i, pEvdev->bits.key)) { keys = 1; break; } - if (!keys) - for (i = KEY_OK; i <= KEY_MAX; i++) - if (test_bit (i, pEvdev->bits.key)) { - keys = 1; - break; - } if (!keys) return !Success; commit 6b97bf7a4eaa34ebde4ac7250f660da5bab8164d Author: Zephaniah E. Hull <[EMAIL PROTECTED]> Date: Wed Jun 6 05:00:29 2007 -0400 Handle default remapping around existing button targets better. diff --git a/src/evdev_btn.c b/src/evdev_btn.c index 90f33b4..c03f879 100644 --- a/src/evdev_btn.c +++ b/src/evdev_btn.c @@ -362,7 +362,7 @@ EvdevBtnNew1(InputInfoRec *pInfo) evdevStateRec *state = &pEvdev->state; evdevBtnRec *btn = state->btn; char option[128], value[128]; - int i, b, j; + int i, b, j, target; if (!btn) return !Success; @@ -375,24 +375,32 @@ EvdevBtnNew1(InputInfoRec *pInfo) btn->real_buttons++; snprintf(option, sizeof(option), "Button%sMapTo", button_names[i]); + if (b >= BTN_DIGI && b < BTN_WHEEL) - snprintf (value, sizeof (value), "null"); + target = -1; else if (b == BTN_RIGHT) - snprintf (value, sizeof (value), "Button 3"); + target = 3; else if (b == BTN_MIDDLE) - snprintf (value, sizeof (value), "Button 2"); + target = 2; else if (b >= BTN_MOUSE && b < BTN_JOYSTICK) - snprintf (value, sizeof (value), "Button %d", 1 + i - (BTN_MOUSE - BTN_MISC)); + target = 1 + i - (BTN_MOUSE - BTN_MISC); else if (b >= BTN_MISC && b < BTN_MOUSE) - snprintf (value, sizeof (value), "Button %d", 1 + i + (BTN_MOUSE - BTN_MISC)); - else if (btn->b_flags[i] & EV_BTN_B_PRESENT) { - for (j = i; j < BTN_MAX; j++) + target = 1 + i + (BTN_MOUSE - BTN_MISC); + else + target = 1 + i; + + if (btn->b_flags[target] & EV_BTN_B_PRESENT) { + for (j = target; j < BTN_MAX; j++) if (!(btn->b_flags[j] & EV_BTN_B_PRESENT)) { - snprintf (value, sizeof (value), "Button %d", j + 1); + target = j; break; } - } else - snprintf (value, sizeof (value), "Button %d", i + 1); + } + + if (target > 0) + snprintf (value, sizeof (value), "Button %d", target); + else + snprintf (value, sizeof (value), "null"); EvdevParseMapOption (pInfo, option, value, &btn->b_map_data[i], &btn->b_map[i]); } commit 5c6b3dd86feef58ccf43a710624404031df72f2c Author: Zephaniah E. Hull <[EMAIL PROTECTED]> Date: Wed Jun 6 04:42:51 2007 -0400 Move MapButtons_t closer to where it's used. diff --git a/src/evdev_btn.c b/src/evdev_btn.c index 63a6abf..90f33b4 100644 --- a/src/evdev_btn.c +++ b/src/evdev_btn.c @@ -161,13 +161,6 @@ EvdevBtnPostFakeClicks(InputInfoRec *pInfo, int button, int count) } } -typedef struct { - int button_plus; - int button_minus; - int step; - int count; -} MapButtons_t; - static void EvdevMapButton (InputInfoRec *pInfo, int value, int mode, void *map_data) -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]