Update to xf86-input-joystick 1.6.0 for good now.

This commit is contained in:
matthieu 2011-11-05 14:01:47 +00:00
parent 0dd14d82d9
commit 0e18138554
30 changed files with 1908 additions and 2211 deletions

View File

@ -1,12 +1,41 @@
This is a stub file. This package has not yet had its complete licensing Copyright 2007-2008 by Sascha Hlusiak. <saschahlusiak@freedesktop.org>
information compiled. Please see the individual source files for details on
your rights to use and modify this software.
Please submit updated COPYING files to the Xorg bugzilla: Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation, and that the name of Sascha Hlusiak not be used in
advertising or publicity pertaining to distribution of the software without
specific, written prior permission. Sascha Hlusiak makes no
representations about the suitability of this software for any purpose. It
is provided "as is" without express or implied warranty.
https://bugs.freedesktop.org/enter_bug.cgi?product=xorg SASCHA HLUSIAK DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL SASCHA HLUSIAK BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
All licensing questions regarding this software should be directed at the Copyright 2007-2009 by Sascha Hlusiak. <saschahlusiak@freedesktop.org>
Xorg mailing list: Copyright 1995-1999 by Frederic Lepied, France. <Lepied@XFree86.org>
Permission to use, copy, modify, distribute, and sell this software and its
documentation for any purpose is hereby granted without fee, provided that
the above copyright notice appear in all copies and that both that
copyright notice and this permission notice appear in supporting
documentation, and that the names of copyright holders not be used in
advertising or publicity pertaining to distribution of the software without
specific, written prior permission. The copyright holders make no
representations about the suitability of this software for any purpose. It
is provided "as is" without express or implied warranty.
THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR
CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE,
DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER
TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
PERFORMANCE OF THIS SOFTWARE.
http://lists.freedesktop.org/mailman/listinfo/xorg

View File

@ -1,3 +1,429 @@
commit bd6c54fe672a913334bfba1ca5dc0f2e0f1f1152
Author: Sascha Hlusiak <saschahlusiak@arcor.de>
Date: Wed Apr 20 20:55:24 2011 +0200
joystick 1.6.0
Signed-off-by: Sascha Hlusiak <saschahlusiak@arcor.de>
commit f1b8ef560049f1bb1bca9caa12c1529c9f992a09
Author: Sascha Hlusiak <saschahlusiak@arcor.de>
Date: Wed Apr 20 20:48:28 2011 +0200
Updated man page to reflect latest changes
commit aa78e01edabb27d1b5dcd4ffe2be32878a45e342
Author: Sascha Hlusiak <saschahlusiak@arcor.de>
Date: Wed Apr 20 20:47:33 2011 +0200
Added xorg.conf.d example snipped
Not installed by default, left for distributors.
Copy 50-joystick-all.conf to /etc/X11/xorg.conf.d/ and modify to your needs.
commit 29d3745e73d266db173828f40231cb78ec1c383a
Author: Sascha Hlusiak <saschahlusiak@arcor.de>
Date: Wed Apr 20 19:48:28 2011 +0200
Revert "config: fdi file must be installed in $(datadir)/hal/fdi/policy/20thirdparty"
The fdi file was never meant to be installed by default but exists merely as an
example and documentation for distributors who may decide to ship it by default or
install it in share/doc/...
This reverts commit 1d67a2da26fa3ba0b8f5498da89c01aeaa551515.
commit 4358209e7e4383b4ebdec93cc116bb1c21d373a7
Author: Sascha Hlusiak <saschahlusiak@arcor.de>
Date: Wed Apr 20 19:33:10 2011 +0200
Free pInfo->private only once to fix server crash on unplug (bug #35391)
The hotplugged keyboard device and the main device share the same pInfo->private data
and the same jstkCoreUnInit, so the data is freed twice. Furthermore, since the keyboard
device will delete itself, we must not delete it from within the deletion of the main device.
Freeing pInfo->private is done by the main device, hopefully done independently of the order
in which the two devices will be removed by the server.
Should fix bug #35391
commit 3f03fa76f8fb152210c6ed80191f34e428af2c00
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Wed Apr 6 21:02:49 2011 +1000
joystick 1.5.99.901
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
commit 8c7ad54d6d869bb4202aee8408c72ed72bf929a7
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 17:00:28 2010 +1000
Support input ABI 12
This commit adds support for input ABI 12, consisting of a number of
changes:
- requires an X server with an ABI of 12
- valuators have a per-mode setting
- new PreInit prototype.
Because of the new PreInit prototype, the hotplug system has been switched
around too (should have probably been done in a separate commit before,
but...).
The old hotplug mechanism added a separate ModuleInfoRec for the keyboard
part of the driver. This isn't feasable for InputClass configurations, the
driver part may get overwritten.
On entering the driver, after checking a few default values, hotplug the
keyboard device (wacom-style) and let it initialize. Because NIDR calls
DEVICE_INIT and DEVICE_ON the keyboard must initialise the private pointer
and pass it back to the original device.
Call order is:
NewInputDeviceRequest
- jstkCorePreInit
- jstkKeyboardHotplug
- NewInputDeviceRequest
- jstkCorePreInit
immediately return jstkKeyboardPreInit()
- keyboard DEVICE_INIT
- keyboard DEVICE_ON
return keyboard device
- copy keyboard->priv to joystick->priv
- finish jstkCorePreInit as normal
- joystick DEVICE_INIT
- joystick DEVICE_ON
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit f2050e6be5b6b3f8c429060992cc3ead0cfe86c1
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 16:51:15 2010 +1000
Get the option values from pInfo instead of from the IDevRec.
Doesn't matter which one we take, but ABI 12 dropped the IDevRec.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit df0567d2fa2d67a00dce78a89803e8925d20e324
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 16:48:50 2010 +1000
Don't call xf86OptionListReport()
All options used by the driver will show up in the log anyway.
And new xserver versions will call this for debugging purposes for us.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit 135aaf612bcb591ae1692ae47b2d36a814230cbe
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 15:19:08 2010 +1000
Purge use of XI_PRIVATE macro.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit 29a486ba56bc6279297a716b018ba24880680e82
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 15:14:47 2010 +1000
Drop close_proc, conversion_proc, reverse_conversion_proc
All three aren't called by the server.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit 0674bdfdb67e9195af7cb5982ae2eda0fa03ce57
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 15:09:32 2010 +1000
Don't handle history_size in the driver.
This has been handled in the server for quite a while now, just initialize
with the defaults and ignore it otherwise.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit 39205d76cb45242ee9b47594ec5be7edc509edc7
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 15:08:49 2010 +1000
Require server 1.9, drop pre-ABI 11 support.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit 074dc4a2a06aebae144afc21de5c4f8bc365937d
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 15:04:44 2010 +1000
Remove usage of XI86_POINTER_CAPABLE flag.
Flag was write-only for a number of server generations already.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit 107e4b14d90d06864247c7878ee0cc5f59e4bc5a
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 14:47:31 2010 +1000
Replace LocalDevicePtr with InputInfoPtr
Both typedefs describe the same struct, LocalDevicePtr has been removed with
input ABI 12.
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
Reviewed-by: Trevor Woerner <twoerner@gmail.com>
commit a23a4a77c7157c516a8194e05e9f07b64d8e8089
Author: Peter Hutterer <peter.hutterer@who-t.net>
Date: Tue Dec 14 15:03:45 2010 +1000
Bump to 1.5.99
commit cd6b81d377a5d541100996fa4e2ac2decffe65f1
Author: Trevor Woerner <twoerner@gmail.com>
Date: Sun Oct 17 21:26:16 2010 -0400
Code cleanup, bad structure initialization.
The InputDriverRec data structure in xserver/hw/xfree86/common/xf86Xinput.h
no longer contains an integer refCount member; as per commit
d568221710959cf7d783e6ff0fb80fb43a231124.
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
commit 38363bde5d94c9a8f163fde31ede067f6d0d1669
Author: Trevor Woerner <twoerner@gmail.com>
Date: Sun Oct 17 21:25:56 2010 -0400
Deprecated code cleanup.
Replace calls to deprecated functions (Xfree(), Xcalloc(), Xmalloc(), etc)
with calls to standard dynamic memory functions (free(), calloc(), malloc(),
etc) in driver code.
Signed-off-by: Trevor Woerner <twoerner@gmail.com>
Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net>
commit d209590c06e7a4df9d921ff53cb9792e9beb1aeb
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Fri Jun 11 22:00:45 2010 -0400
COPYING: replace stub file with Copyright notices
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 1d67a2da26fa3ba0b8f5498da89c01aeaa551515
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Fri Jun 11 21:50:34 2010 -0400
config: fdi file must be installed in $(datadir)/hal/fdi/policy/20thirdparty
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 09ca64e76568868e8f9c7bf48e8858669fc5aaa7
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Fri Jun 11 21:47:23 2010 -0400
config: EXTRA_DIST is redundant
sdkdir provides the install path for sdk_HEADERS primary
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 55783bf0cd5e0ae29b008dd3fc3a47c66eabffbd
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Fri Jun 11 17:46:37 2010 -0400
config: upgrade to util-macros 1.8 for additional man page support
Use MAN_SUBST now supplied in XORG_MANPAGE_SECTIONS
The value of MAN_SUBST is the same for all X.Org packages.
Use AC_PROG_SED now supplied by XORG_DEFAULT_OPTIONS
Use $(AM_V_GEN)$(SED) to support silent rule
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 342908f4d06c8000789d659b9f8871e56812b78e
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Fri Jun 11 17:41:59 2010 -0400
config: fix warnings, m4 quoting and layout
Fix some m4 quoting
Fix some autoconf warnings
Regroup statements per section
Add comments
Remove unused NDEBUG define
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit e98f0d0349222a4d981086f944398d32a548d953
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Sun Apr 18 15:37:29 2010 -0400
config: remove AC_PROG_CC as it overrides AC_PROG_C_C99
XORG_STRICT_OPTION from XORG_DEFAULT_OPTIONS calls
AC_PROG_C_C99. This sets gcc with -std=gnu99.
If AC_PROG_CC macro is called afterwards, it resets CC to gcc.
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit c6908579b56b7d8c478ebe8c07e2a68a30c5de44
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Sun Apr 18 15:36:32 2010 -0400
config: remove unrequired AC_HEADER_STDC
Autoconf says:
"This macro is obsolescent, as current systems have conforming
header files. New programs need not use this macro".
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit ab6308ed177fc341ba0cca3e4a9048f858d80007
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Sun Apr 18 15:35:45 2010 -0400
config: replace deprecated AM_CONFIG_HEADER with AC_CONFIG_HEADERS
Regroup AC statements at the top.
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 2252c78fb11b09c688b1b2cc82a542fc2470b8e2
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Sun Apr 18 15:26:16 2010 -0400
config: update AC_PREREQ statement to 2.60
Unrelated to the previous patches, the new value simply reflects
the reality that the minimum level for autoconf to configure
all x.org modules is 2.60 dated June 2006.
ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.60.tar.gz
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 25722aa12bfbb5675a02d7d8520ae83fdc5735c8
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Sun Apr 18 15:24:59 2010 -0400
config: remove AH_TOP autoheader statement
The generated config.h does not need to include xorg-server.h
for the content it provides.
Add #include <xorg-server.h> in .[hc] files as needed.
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 3de065d6822206695c0aee2fd68cd9db8b2f3063
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Thu Feb 11 10:08:07 2010 -0500
config: move CWARNFLAGS from configure.ac to Makefile.am
Compiler warning flags should be explicitly set in the makefile
rather than being merged with other packages compiler flags.
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit 30d1089cffc9afd9fd468a6c30989e77c7884248
Author: Alan Coopersmith <alan.coopersmith@sun.com>
Date: Fri Jan 15 15:08:26 2010 -0800
Update Sun license notices to current X.Org standard form
Signed-off-by: Alan Coopersmith <alan.coopersmith@sun.com>
commit efe94ccfb4505f18a44b39ada256df8ba16b3ec5
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Mon Dec 28 15:05:39 2009 -0500
configure.ac: use backticks rather than $() for cmd subs
Use "$PKG_CONFIG" rather than hard coded "pkg-config"
Acked-by: Dan Nicholson <dbn.lists@gmail.com>
Acked-by: Daniel Stone <daniel@fooishbar.org>
Signed-off-by: Gaetan Nadon <memsize@videotron.ca>
commit ad0abb97a19e311988deffd385ca69e96bd106a4
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Mon Nov 23 09:25:05 2009 -0500
Makefile.am: add ChangeLog and INSTALL on MAINTAINERCLEANFILES
Now that the INSTALL file is generated.
Allows running make maintainer-clean.
commit 260c441981c1fe1c6e076bde1a6a26328e6b5675
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Wed Oct 28 14:41:41 2009 -0400
INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206
Automake 'foreign' option is specified in configure.ac.
Remove from Makefile.am
commit 877f13a6056cc8b17a73a5d4c839cd8b30065f9b
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Wed Oct 28 14:09:09 2009 -0400
INSTALL, NEWS, README or AUTHORS files are missing/incorrect #24206
Add missing INSTALL file. Use standard GNU file on building tarball
README may have been updated
Remove AUTHORS file as it is empty and no content available yet.
Remove NEWS file as it is empty and no content available yet.
commit 9fc986bd5dc3bd1741b1ad4e4da152edfaf928d9
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Mon Oct 26 12:54:20 2009 -0400
Several driver modules do not have a ChangeLog target in Makefile.am #23814
The git generated ChangeLog replaces the hand written one.
Update configure.ac to xorg-macros level 1.3.
Use XORG_DEFAULT_OPTIONS which replaces four XORG_* macros
Update Makefile.am to add ChangeLog target if missing
Remove ChangeLog from EXTRA_DIST or *CLEAN variables
This is a pre-req for the INSTALL_CMD
commit cd4e5ab0c64f477c343ab161ec309c42b9737450
Author: Gaetan Nadon <memsize@videotron.ca>
Date: Thu Oct 22 12:34:16 2009 -0400
.gitignore: use common defaults with custom section # 24239
Using common defaults will reduce errors and maintenance.
Only the very small or inexistent custom section need periodic maintenance
when the structure of the component changes. Do not edit defaults.
commit eaf8d1a1d87af9f67ca3e3d0436bb9d9a7cfc17a
Author: Sascha Hlusiak <saschahlusiak@arcor.de>
Date: Sat Oct 31 12:41:15 2009 +0100
Bump to 1.5.0
Signed-off-by: Sascha Hlusiak <saschahlusiak@arcor.de>
commit 657c01c8ebb9e0571d498356e6d3d03917199328 commit 657c01c8ebb9e0571d498356e6d3d03917199328
Author: Sascha Hlusiak <saschahlusiak@arcor.de> Author: Sascha Hlusiak <saschahlusiak@arcor.de>
Date: Wed Oct 7 09:24:39 2009 +0200 Date: Wed Oct 7 09:24:39 2009 +0200

View File

@ -289,3 +289,294 @@ operates.
`configure' also accepts some other, not widely useful, options. Run `configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details. `configure --help' for more details.
Installation Instructions
*************************
Copyright (C) 1994, 1995, 1996, 1999, 2000, 2001, 2002, 2004, 2005,
2006, 2007, 2008 Free Software Foundation, Inc.
This file is free documentation; the Free Software Foundation gives
unlimited permission to copy, distribute and modify it.
Basic Installation
==================
Briefly, the shell commands `./configure; make; make install' should
configure, build, and install this package. The following
more-detailed instructions are generic; see the `README' file for
instructions specific to this package.
The `configure' shell script attempts to guess correct values for
various system-dependent variables used during compilation. It uses
those values to create a `Makefile' in each directory of the package.
It may also create one or more `.h' files containing system-dependent
definitions. Finally, it creates a shell script `config.status' that
you can run in the future to recreate the current configuration, and a
file `config.log' containing compiler output (useful mainly for
debugging `configure').
It can also use an optional file (typically called `config.cache'
and enabled with `--cache-file=config.cache' or simply `-C') that saves
the results of its tests to speed up reconfiguring. Caching is
disabled by default to prevent problems with accidental use of stale
cache files.
If you need to do unusual things to compile the package, please try
to figure out how `configure' could check whether to do them, and mail
diffs or instructions to the address given in the `README' so they can
be considered for the next release. If you are using the cache, and at
some point `config.cache' contains results you don't want to keep, you
may remove or edit it.
The file `configure.ac' (or `configure.in') is used to create
`configure' by a program called `autoconf'. You need `configure.ac' if
you want to change it or regenerate `configure' using a newer version
of `autoconf'.
The simplest way to compile this package is:
1. `cd' to the directory containing the package's source code and type
`./configure' to configure the package for your system.
Running `configure' might take a while. While running, it prints
some messages telling which features it is checking for.
2. Type `make' to compile the package.
3. Optionally, type `make check' to run any self-tests that come with
the package.
4. Type `make install' to install the programs and any data files and
documentation.
5. You can remove the program binaries and object files from the
source code directory by typing `make clean'. To also remove the
files that `configure' created (so you can compile the package for
a different kind of computer), type `make distclean'. There is
also a `make maintainer-clean' target, but that is intended mainly
for the package's developers. If you use it, you may have to get
all sorts of other programs in order to regenerate files that came
with the distribution.
6. Often, you can also type `make uninstall' to remove the installed
files again.
Compilers and Options
=====================
Some systems require unusual options for compilation or linking that
the `configure' script does not know about. Run `./configure --help'
for details on some of the pertinent environment variables.
You can give `configure' initial values for configuration parameters
by setting variables in the command line or in the environment. Here
is an example:
./configure CC=c99 CFLAGS=-g LIBS=-lposix
*Note Defining Variables::, for more details.
Compiling For Multiple Architectures
====================================
You can compile the package for more than one kind of computer at the
same time, by placing the object files for each architecture in their
own directory. To do this, you can use GNU `make'. `cd' to the
directory where you want the object files and executables to go and run
the `configure' script. `configure' automatically checks for the
source code in the directory that `configure' is in and in `..'.
With a non-GNU `make', it is safer to compile the package for one
architecture at a time in the source code directory. After you have
installed the package for one architecture, use `make distclean' before
reconfiguring for another architecture.
On MacOS X 10.5 and later systems, you can create libraries and
executables that work on multiple system types--known as "fat" or
"universal" binaries--by specifying multiple `-arch' options to the
compiler but only a single `-arch' option to the preprocessor. Like
this:
./configure CC="gcc -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CXX="g++ -arch i386 -arch x86_64 -arch ppc -arch ppc64" \
CPP="gcc -E" CXXCPP="g++ -E"
This is not guaranteed to produce working output in all cases, you
may have to build one architecture at a time and combine the results
using the `lipo' tool if you have problems.
Installation Names
==================
By default, `make install' installs the package's commands under
`/usr/local/bin', include files under `/usr/local/include', etc. You
can specify an installation prefix other than `/usr/local' by giving
`configure' the option `--prefix=PREFIX'.
You can specify separate installation prefixes for
architecture-specific files and architecture-independent files. If you
pass the option `--exec-prefix=PREFIX' to `configure', the package uses
PREFIX as the prefix for installing programs and libraries.
Documentation and other data files still use the regular prefix.
In addition, if you use an unusual directory layout you can give
options like `--bindir=DIR' to specify different values for particular
kinds of files. Run `configure --help' for a list of the directories
you can set and what kinds of files go in them.
If the package supports it, you can cause programs to be installed
with an extra prefix or suffix on their names by giving `configure' the
option `--program-prefix=PREFIX' or `--program-suffix=SUFFIX'.
Optional Features
=================
Some packages pay attention to `--enable-FEATURE' options to
`configure', where FEATURE indicates an optional part of the package.
They may also pay attention to `--with-PACKAGE' options, where PACKAGE
is something like `gnu-as' or `x' (for the X Window System). The
`README' should mention any `--enable-' and `--with-' options that the
package recognizes.
For packages that use the X Window System, `configure' can usually
find the X include and library files automatically, but if it doesn't,
you can use the `configure' options `--x-includes=DIR' and
`--x-libraries=DIR' to specify their locations.
Particular systems
==================
On HP-UX, the default C compiler is not ANSI C compatible. If GNU
CC is not installed, it is recommended to use the following options in
order to use an ANSI C compiler:
./configure CC="cc -Ae"
and if that doesn't work, install pre-built binaries of GCC for HP-UX.
On OSF/1 a.k.a. Tru64, some versions of the default C compiler cannot
parse its `<wchar.h>' header file. The option `-nodtk' can be used as
a workaround. If GNU CC is not installed, it is therefore recommended
to try
./configure CC="cc"
and if that doesn't work, try
./configure CC="cc -nodtk"
Specifying the System Type
==========================
There may be some features `configure' cannot figure out
automatically, but needs to determine by the type of machine the package
will run on. Usually, assuming the package is built to be run on the
_same_ architectures, `configure' can figure that out, but if it prints
a message saying it cannot guess the machine type, give it the
`--build=TYPE' option. TYPE can either be a short name for the system
type, such as `sun4', or a canonical name which has the form:
CPU-COMPANY-SYSTEM
where SYSTEM can have one of these forms:
OS KERNEL-OS
See the file `config.sub' for the possible values of each field. If
`config.sub' isn't included in this package, then this package doesn't
need to know the machine type.
If you are _building_ compiler tools for cross-compiling, you should
use the option `--target=TYPE' to select the type of system they will
produce code for.
If you want to _use_ a cross compiler, that generates code for a
platform different from the build platform, you should specify the
"host" platform (i.e., that on which the generated programs will
eventually be run) with `--host=TYPE'.
Sharing Defaults
================
If you want to set default values for `configure' scripts to share,
you can create a site shell script called `config.site' that gives
default values for variables like `CC', `cache_file', and `prefix'.
`configure' looks for `PREFIX/share/config.site' if it exists, then
`PREFIX/etc/config.site' if it exists. Or, you can set the
`CONFIG_SITE' environment variable to the location of the site script.
A warning: not all `configure' scripts look for a site script.
Defining Variables
==================
Variables not defined in a site shell script can be set in the
environment passed to `configure'. However, some packages may run
configure again during the build, and the customized values of these
variables may be lost. In order to avoid this problem, you should set
them in the `configure' command line, using `VAR=value'. For example:
./configure CC=/usr/local2/bin/gcc
causes the specified `gcc' to be used as the C compiler (unless it is
overridden in the site shell script).
Unfortunately, this technique does not work for `CONFIG_SHELL' due to
an Autoconf bug. Until the bug is fixed you can use this workaround:
CONFIG_SHELL=/bin/bash /bin/bash ./configure CONFIG_SHELL=/bin/bash
`configure' Invocation
======================
`configure' recognizes the following options to control how it
operates.
`--help'
`-h'
Print a summary of all of the options to `configure', and exit.
`--help=short'
`--help=recursive'
Print a summary of the options unique to this package's
`configure', and exit. The `short' variant lists options used
only in the top level, while the `recursive' variant lists options
also present in any nested packages.
`--version'
`-V'
Print the version of Autoconf used to generate the `configure'
script, and exit.
`--cache-file=FILE'
Enable the cache: use and save the results of the tests in FILE,
traditionally `config.cache'. FILE defaults to `/dev/null' to
disable caching.
`--config-cache'
`-C'
Alias for `--cache-file=config.cache'.
`--quiet'
`--silent'
`-q'
Do not print messages saying which checks are being made. To
suppress all normal output, redirect it to `/dev/null' (any error
messages will still be shown).
`--srcdir=DIR'
Look for the package's source code in directory DIR. Usually
`configure' can determine that directory automatically.
`--prefix=DIR'
Use DIR as the installation prefix. *Note Installation Names::
for more details, including other options available for fine-tuning
the installation locations.
`--no-create'
`-n'
Run the configure checks, but stop before creating any output
files.
`configure' also accepts some other, not widely useful, options. Run
`configure --help' for more details.

View File

@ -18,19 +18,19 @@
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # 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. # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
AUTOMAKE_OPTIONS = foreign
DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir=\$${includedir}/xorg DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir=\$${includedir}/xorg
SUBDIRS = src man config include SUBDIRS = src man config include
MAINTAINERCLEANFILES = ChangeLog INSTALL
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = xorg-joystick.pc pkgconfig_DATA = xorg-joystick.pc
EXTRA_DIST = ChangeLog .PHONY: ChangeLog INSTALL
MAINTAINERCLEANFILES = ChangeLog
.PHONY: ChangeLog INSTALL:
$(INSTALL_CMD)
ChangeLog: ChangeLog:
$(CHANGELOG_CMD) $(CHANGELOG_CMD)
dist-hook: ChangeLog dist-hook: ChangeLog INSTALL

View File

@ -43,9 +43,9 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = . top_builddir = .
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644 install_sh_DATA = ${SHELL} $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c install_sh_PROGRAM = ${SHELL} $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c install_sh_SCRIPT = ${SHELL} $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name) transform = $(program_transform_name)
NORMAL_INSTALL = : NORMAL_INSTALL = :
@ -59,8 +59,8 @@ host_triplet = @host@
DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \ DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
$(srcdir)/Makefile.in $(srcdir)/config.h.in \ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
$(srcdir)/xorg-joystick.pc.in $(top_srcdir)/configure COPYING \ $(srcdir)/xorg-joystick.pc.in $(top_srcdir)/configure COPYING \
ChangeLog config.guess config.sub depcomp install-sh ltmain.sh \ ChangeLog INSTALL config.guess config.sub depcomp install-sh \
missing ltmain.sh missing
subdir = . subdir = .
ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
am__aclocal_m4_deps = $(top_srcdir)/configure.ac am__aclocal_m4_deps = $(top_srcdir)/configure.ac
@ -108,6 +108,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@ AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@ AR = @AR@
@ -150,6 +151,7 @@ FFLAGS = @FFLAGS@
FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
GREP = @GREP@ GREP = @GREP@
INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
@ -185,6 +187,7 @@ RANLIB = @RANLIB@
SED = @SED@ SED = @SED@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
STRICT_CFLAGS = @STRICT_CFLAGS@
STRIP = @STRIP@ STRIP = @STRIP@
VERSION = @VERSION@ VERSION = @VERSION@
XORG_CFLAGS = @XORG_CFLAGS@ XORG_CFLAGS = @XORG_CFLAGS@
@ -239,13 +242,11 @@ sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
target_alias = @target_alias@ target_alias = @target_alias@
AUTOMAKE_OPTIONS = foreign
DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir=\$${includedir}/xorg DISTCHECK_CONFIGURE_FLAGS = --with-sdkdir=\$${includedir}/xorg
SUBDIRS = src man config include SUBDIRS = src man config include
MAINTAINERCLEANFILES = ChangeLog INSTALL
pkgconfigdir = $(libdir)/pkgconfig pkgconfigdir = $(libdir)/pkgconfig
pkgconfig_DATA = xorg-joystick.pc pkgconfig_DATA = xorg-joystick.pc
EXTRA_DIST = ChangeLog
MAINTAINERCLEANFILES = ChangeLog
all: config.h all: config.h
$(MAKE) $(AM_MAKEFLAGS) all-recursive $(MAKE) $(AM_MAKEFLAGS) all-recursive
@ -710,12 +711,15 @@ uninstall-info: uninstall-info-recursive
uninstall-pkgconfigDATA uninstall-pkgconfigDATA
.PHONY: ChangeLog .PHONY: ChangeLog INSTALL
INSTALL:
$(INSTALL_CMD)
ChangeLog: ChangeLog:
$(CHANGELOG_CMD) $(CHANGELOG_CMD)
dist-hook: ChangeLog dist-hook: ChangeLog INSTALL
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT: .NOEXPORT:

View File

@ -7134,18 +7134,6 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
[AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"])
]) ])
# Copyright (C) 1996, 1997, 2000, 2001, 2003, 2005
# Free Software Foundation, Inc.
#
# This file is free software; the Free Software Foundation
# gives unlimited permission to copy and/or distribute it,
# with or without modifications, as long as this notice is preserved.
# serial 8
# AM_CONFIG_HEADER is obsolete. It has been replaced by AC_CONFIG_HEADERS.
AU_DEFUN([AM_CONFIG_HEADER], [AC_CONFIG_HEADERS($@)])
# Do all the work for Automake. -*- Autoconf -*- # Do all the work for Automake. -*- Autoconf -*-
# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005 # Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
@ -7670,7 +7658,7 @@ dnl DEALINGS IN THE SOFTWARE.
# See the "minimum version" comment for each macro you use to see what # See the "minimum version" comment for each macro you use to see what
# version you require. # version you require.
m4_defun([XORG_MACROS_VERSION],[ m4_defun([XORG_MACROS_VERSION],[
m4_define([vers_have], [1.13.0]) m4_define([vers_have], [1.15.0])
m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.]))) m4_define([maj_have], m4_substr(vers_have, 0, m4_index(vers_have, [.])))
m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.]))) m4_define([maj_needed], m4_substr([$1], 0, m4_index([$1], [.])))
m4_if(m4_cmp(maj_have, maj_needed), 0,, m4_if(m4_cmp(maj_have, maj_needed), 0,,
@ -7697,7 +7685,7 @@ AC_PATH_PROGS(RAWCPP, [cpp], [${CPP}],
# which is not the best choice for supporting other OS'es, but covers most # which is not the best choice for supporting other OS'es, but covers most
# of the ones we need for now. # of the ones we need for now.
AC_MSG_CHECKING([if $RAWCPP requires -undef]) AC_MSG_CHECKING([if $RAWCPP requires -undef])
AC_LANG_CONFTEST([Does cpp redefine unix ?]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp redefine unix ?]])])
if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then if test `${RAWCPP} < conftest.$ac_ext | grep -c 'unix'` -eq 1 ; then
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
else else
@ -7715,7 +7703,7 @@ fi
rm -f conftest.$ac_ext rm -f conftest.$ac_ext
AC_MSG_CHECKING([if $RAWCPP requires -traditional]) AC_MSG_CHECKING([if $RAWCPP requires -traditional])
AC_LANG_CONFTEST([Does cpp preserve "whitespace"?]) AC_LANG_CONFTEST([AC_LANG_SOURCE([[Does cpp preserve "whitespace"?]])])
if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then if test `${RAWCPP} < conftest.$ac_ext | grep -c 'preserve \"'` -eq 1 ; then
AC_MSG_RESULT([no]) AC_MSG_RESULT([no])
else else
@ -8090,6 +8078,8 @@ AM_CONDITIONAL([HAVE_XMLTO], [test "$have_xmlto" = yes])
# #
AC_DEFUN([XORG_WITH_XSLTPROC],[ AC_DEFUN([XORG_WITH_XSLTPROC],[
AC_ARG_VAR([XSLTPROC], [Path to xsltproc command]) AC_ARG_VAR([XSLTPROC], [Path to xsltproc command])
# Preserves the interface, should it be implemented later
m4_ifval([$1], [m4_warn([syntax], [Checking for xsltproc MIN-VERSION is not implemented])])
m4_define([_defopt], m4_default([$2], [auto])) m4_define([_defopt], m4_default([$2], [auto]))
AC_ARG_WITH(xsltproc, AC_ARG_WITH(xsltproc,
AS_HELP_STRING([--with-xsltproc], AS_HELP_STRING([--with-xsltproc],
@ -8120,13 +8110,65 @@ else
AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no']) AC_MSG_ERROR([--with-xsltproc expects 'yes' or 'no'])
fi fi
# Checking for minimum version is not implemented
# but we want to keep the interface consistent with other commands
m4_ifval([$1],[AC_MSG_WARN(Checking for MIN-VERSION is not implemented.)])
AM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes]) AM_CONDITIONAL([HAVE_XSLTPROC], [test "$have_xsltproc" = yes])
]) # XORG_WITH_XSLTPROC ]) # XORG_WITH_XSLTPROC
# XORG_WITH_PERL([MIN-VERSION], [DEFAULT])
# ----------------------------------------
# Minimum version: 1.15.0
#
# PERL (Practical Extraction and Report Language) is a language optimized for
# scanning arbitrary text files, extracting information from those text files,
# and printing reports based on that information.
#
# When DEFAULT is not specified, --with-perl assumes 'auto'.
#
# Interface to module:
# HAVE_PERL: used in makefiles to conditionally scan text files
# PERL: returns the path of the perl program found
# returns the path set by the user in the environment
# --with-perl: 'yes' user instructs the module to use perl
# 'no' user instructs the module not to use perl
# have_perl: returns yes if perl found in PATH or no
#
# If the user sets the value of PERL, AC_PATH_PROG skips testing the path.
#
AC_DEFUN([XORG_WITH_PERL],[
AC_ARG_VAR([PERL], [Path to perl command])
# Preserves the interface, should it be implemented later
m4_ifval([$1], [m4_warn([syntax], [Checking for perl MIN-VERSION is not implemented])])
m4_define([_defopt], m4_default([$2], [auto]))
AC_ARG_WITH(perl,
AS_HELP_STRING([--with-perl],
[Use perl for extracting information from files (default: ]_defopt[)]),
[use_perl=$withval], [use_perl=]_defopt)
m4_undefine([_defopt])
if test "x$use_perl" = x"auto"; then
AC_PATH_PROG([PERL], [perl])
if test "x$PERL" = "x"; then
AC_MSG_WARN([perl not found - cannot extract information and report])
have_perl=no
else
have_perl=yes
fi
elif test "x$use_perl" = x"yes" ; then
AC_PATH_PROG([PERL], [perl])
if test "x$PERL" = "x"; then
AC_MSG_ERROR([--with-perl=yes specified but perl not found in PATH])
fi
have_perl=yes
elif test "x$use_perl" = x"no" ; then
if test "x$PERL" != "x"; then
AC_MSG_WARN([ignoring PERL environment variable since --with-perl=no was specified])
fi
have_perl=no
else
AC_MSG_ERROR([--with-perl expects 'yes' or 'no'])
fi
AM_CONDITIONAL([HAVE_PERL], [test "$have_perl" = yes])
]) # XORG_WITH_PERL
# XORG_WITH_ASCIIDOC([MIN-VERSION], [DEFAULT]) # XORG_WITH_ASCIIDOC([MIN-VERSION], [DEFAULT])
# ---------------- # ----------------
@ -8373,10 +8415,11 @@ AM_CONDITIONAL([HAVE_GROFF_MM], [test "$groff_mm_works" = yes])
AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes]) AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes])
]) # XORG_WITH_GROFF ]) # XORG_WITH_GROFF
# XORG_WITH_FOP([DEFAULT]) # XORG_WITH_FOP([MIN-VERSION], [DEFAULT])
# ---------------- # ---------------------------------------
# Minimum version: 1.6.0 # Minimum version: 1.6.0
# Minimum version for optional DEFAULT argument: 1.11.0 # Minimum version for optional DEFAULT argument: 1.11.0
# Minimum version for optional MIN-VERSION argument: 1.15.0
# #
# Documentation tools are not always available on all platforms and sometimes # Documentation tools are not always available on all platforms and sometimes
# not at the appropriate level. This macro enables a module to test for the # not at the appropriate level. This macro enables a module to test for the
@ -8396,7 +8439,7 @@ AM_CONDITIONAL([HAVE_GROFF_HTML], [test "$have_groff_html" = yes])
# #
AC_DEFUN([XORG_WITH_FOP],[ AC_DEFUN([XORG_WITH_FOP],[
AC_ARG_VAR([FOP], [Path to fop command]) AC_ARG_VAR([FOP], [Path to fop command])
m4_define([_defopt], m4_default([$1], [auto])) m4_define([_defopt], m4_default([$2], [auto]))
AC_ARG_WITH(fop, AC_ARG_WITH(fop,
AS_HELP_STRING([--with-fop], AS_HELP_STRING([--with-fop],
[Use fop to regenerate documentation (default: ]_defopt[)]), [Use fop to regenerate documentation (default: ]_defopt[)]),
@ -8425,6 +8468,22 @@ elif test "x$use_fop" = x"no" ; then
else else
AC_MSG_ERROR([--with-fop expects 'yes' or 'no']) AC_MSG_ERROR([--with-fop expects 'yes' or 'no'])
fi fi
# Test for a minimum version of fop, if provided.
m4_ifval([$1],
[if test "$have_fop" = yes; then
# scrape the fop version
AC_MSG_CHECKING([for fop minimum version])
fop_version=`$FOP -version 2>/dev/null | cut -d' ' -f3`
AC_MSG_RESULT([$fop_version])
AS_VERSION_COMPARE([$fop_version], [$1],
[if test "x$use_fop" = xauto; then
AC_MSG_WARN([fop version $fop_version found, but $1 needed])
have_fop=no
else
AC_MSG_ERROR([fop version $fop_version found, but $1 needed])
fi])
fi])
AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes]) AM_CONDITIONAL([HAVE_FOP], [test "$have_fop" = yes])
]) # XORG_WITH_FOP ]) # XORG_WITH_FOP
@ -8923,6 +8982,23 @@ AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno])
]) # XORG_LINT_LIBRARY ]) # XORG_LINT_LIBRARY
# XORG_COMPILER_BRAND
# -------------------
# Minimum version: 1.14.0
#
# Checks for various brands of compilers and sets flags as appropriate:
# GNU gcc - relies on AC_PROG_CC (via AC_PROG_CC_C99) to set GCC to "yes"
# clang compiler - sets CLANGCC to "yes"
# Intel compiler - sets INTELCC to "yes"
# Sun/Oracle Solaris Studio cc - sets SUNCC to "yes"
#
AC_DEFUN([XORG_COMPILER_BRAND], [
AC_REQUIRE([AC_PROG_CC_C99])
AC_CHECK_DECL([__clang__], [CLANGCC="yes"], [CLANGCC="no"])
AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"])
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
]) # XORG_COMPILER_BRAND
# XORG_CWARNFLAGS # XORG_CWARNFLAGS
# --------------- # ---------------
# Minimum version: 1.2.0 # Minimum version: 1.2.0
@ -8931,6 +9007,7 @@ AM_CONDITIONAL(MAKE_LINT_LIB, [test x$make_lint_lib != xno])
# #
AC_DEFUN([XORG_CWARNFLAGS], [ AC_DEFUN([XORG_CWARNFLAGS], [
AC_REQUIRE([AC_PROG_CC_C99]) AC_REQUIRE([AC_PROG_CC_C99])
AC_REQUIRE([XORG_COMPILER_BRAND])
if test "x$GCC" = xyes ; then if test "x$GCC" = xyes ; then
CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \ CWARNFLAGS="-Wall -Wpointer-arith -Wstrict-prototypes -Wmissing-prototypes \
-Wmissing-declarations -Wnested-externs -fno-strict-aliasing \ -Wmissing-declarations -Wnested-externs -fno-strict-aliasing \
@ -8941,7 +9018,6 @@ if test "x$GCC" = xyes ; then
;; ;;
esac esac
else else
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
if test "x$SUNCC" = "xyes"; then if test "x$SUNCC" = "xyes"; then
CWARNFLAGS="-v" CWARNFLAGS="-v"
fi fi
@ -8953,28 +9029,43 @@ AC_SUBST(CWARNFLAGS)
# ----------------------- # -----------------------
# Minimum version: 1.3.0 # Minimum version: 1.3.0
# #
# Add configure option to enable strict compilation # Add configure option to enable strict compilation flags, such as treating
# warnings as fatal errors.
# If --enable-strict-compilation is passed to configure, adds strict flags to
# $CWARNFLAGS.
#
# Starting in 1.14.0 also exports $STRICT_CFLAGS for use in other tests or
# when strict compilation is unconditionally desired.
AC_DEFUN([XORG_STRICT_OPTION], [ AC_DEFUN([XORG_STRICT_OPTION], [
# If the module's configure.ac calls AC_PROG_CC later on, CC gets set to C89 # If the module's configure.ac calls AC_PROG_CC later on, CC gets set to C89
AC_REQUIRE([AC_PROG_CC_C99]) AC_REQUIRE([AC_PROG_CC_C99])
AC_REQUIRE([XORG_COMPILER_BRAND])
AC_REQUIRE([XORG_CWARNFLAGS]) AC_REQUIRE([XORG_CWARNFLAGS])
AC_ARG_ENABLE(strict-compilation, AC_ARG_ENABLE(strict-compilation,
AS_HELP_STRING([--enable-strict-compilation], AS_HELP_STRING([--enable-strict-compilation],
[Enable all warnings from compiler and make them errors (default: disabled)]), [Enable all warnings from compiler and make them errors (default: disabled)]),
[STRICT_COMPILE=$enableval], [STRICT_COMPILE=no]) [STRICT_COMPILE=$enableval], [STRICT_COMPILE=no])
if test "x$STRICT_COMPILE" = "xyes"; then if test "x$GCC" = xyes ; then
AC_CHECK_DECL([__SUNPRO_C], [SUNCC="yes"], [SUNCC="no"])
AC_CHECK_DECL([__INTEL_COMPILER], [INTELCC="yes"], [INTELCC="no"])
if test "x$GCC" = xyes ; then
STRICT_CFLAGS="-pedantic -Werror" STRICT_CFLAGS="-pedantic -Werror"
elif test "x$SUNCC" = "xyes"; then # Add -Werror=attributes if supported (gcc 4.2 & later)
AC_MSG_CHECKING([if $CC supports -Werror=attributes])
save_CFLAGS="$CFLAGS"
CFLAGS="$CFLAGS $STRICT_CFLAGS -Werror=attributes"
AC_COMPILE_IFELSE([AC_LANG_SOURCE([return 0;])],
[STRICT_CFLAGS="$STRICT_CFLAGS -Werror=attributes"
AC_MSG_RESULT([yes])],
[AC_MSG_RESULT([no])])
CFLAGS="$save_CFLAGS"
elif test "x$SUNCC" = "xyes"; then
STRICT_CFLAGS="-errwarn" STRICT_CFLAGS="-errwarn"
elif test "x$INTELCC" = "xyes"; then elif test "x$INTELCC" = "xyes"; then
STRICT_CFLAGS="-Werror" STRICT_CFLAGS="-Werror"
fi
fi fi
CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS" if test "x$STRICT_COMPILE" = "xyes"; then
CWARNFLAGS="$CWARNFLAGS $STRICT_CFLAGS"
fi
AC_SUBST([STRICT_CFLAGS])
AC_SUBST([CWARNFLAGS]) AC_SUBST([CWARNFLAGS])
]) # XORG_STRICT_OPTION ]) # XORG_STRICT_OPTION

View File

@ -1,7 +1,5 @@
/* config.h.in. Generated from configure.ac by autoheader. */ /* config.h.in. Generated from configure.ac by autoheader. */
#include "xorg-server.h"
/* Compile BSD usbhid backend */ /* Compile BSD usbhid backend */
#undef BSD_BACKEND #undef BSD_BACKEND
@ -65,9 +63,6 @@
/* Compile Linux joystick backend */ /* Compile Linux joystick backend */
#undef LINUX_BACKEND #undef LINUX_BACKEND
/* Disable some debugging code */
#undef NDEBUG
/* Name of package */ /* Name of package */
#undef PACKAGE #undef PACKAGE

View File

@ -49,3 +49,54 @@ Section "InputClass"
# Option "XkbVariant" "nodeadkeys" # Option "XkbVariant" "nodeadkeys"
# Option "AutoRepeat" "400 25" # Option "AutoRepeat" "400 25"
EndSection EndSection
# Example xorg.conf.d snippet that assigns the joystick driver
# to all joysticks. See xorg.conf.d(5) for more information on
# InputClass.
# DO NOT EDIT THIS FILE, your distribution will likely overwrite
# it when updating. Copy (and rename) this file into
# /etc/X11/xorg.conf.d first.
# Additional options may be added in the form of
# Option "OptionName" "value"
#
Section "InputClass"
Identifier "joystick-all"
# UNCOMMENT TO ENABLE HOTPLUGGING OF JOYSTICKS
# Driver "joystick"
# MatchIsJoystick "on"
# MatchDevicePath "/dev/input/event*"
Option "MapButton1" "button=1"
Option "MapButton2" "button=2"
Option "MapButton3" "button=3"
Option "MapAxis1" "mode=relative axis=+1x deadzone=5000"
Option "MapAxis2" "mode=relative axis=+1y deadzone=5000"
Option "MapAxis3" "mode=relative axis=+1zx deadzone=5000"
Option "MapAxis4" "mode=relative axis=+1zy deadzone=5000"
Option "MapAxis5" "mode=accelerated axis=+1x deadzone=5000"
Option "MapAxis6" "mode=accelerated axis=+1y deadzone=5000"
# Map Alt+Tab to button #4
# Option "MapButton4" "key=64+23"
# Button 8 will slow down all movement to factor 0.3
# Option "MapButton8" "amplify=0.3"
# Button 9 will disable all events except button #9 itself
# Option "MapButton9" "disable-all"
# Map button #10 to Space
# Option "MapButton10" "key=65"
# Map axis #1 and #2 to the keycodes for Left, Right, Up and Down rather
# than pointer movement
# Option "MapAxis1" "mode=accelerated keylow=113 keyhigh=114"
# Option "MapAxis2" "mode=accelerated keylow=111 keyhigh=116"
# Option "XkbLayout" "de"
# Option "XkbVariant" "nodeadkeys"
# Option "AutoRepeat" "400 25"
EndSection

View File

@ -1 +1 @@
EXTRA_DIST = 50-x11-input-joystick.fdi EXTRA_DIST = 50-x11-input-joystick.fdi 50-joystick-all.conf

View File

@ -22,9 +22,9 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .. top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644 install_sh_DATA = ${SHELL} $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c install_sh_PROGRAM = ${SHELL} $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c install_sh_SCRIPT = ${SHELL} $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name) transform = $(program_transform_name)
NORMAL_INSTALL = : NORMAL_INSTALL = :
@ -53,6 +53,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@ AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@ AR = @AR@
@ -95,6 +96,7 @@ FFLAGS = @FFLAGS@
FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
GREP = @GREP@ GREP = @GREP@
INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
@ -130,6 +132,7 @@ RANLIB = @RANLIB@
SED = @SED@ SED = @SED@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
STRICT_CFLAGS = @STRICT_CFLAGS@
STRIP = @STRIP@ STRIP = @STRIP@
VERSION = @VERSION@ VERSION = @VERSION@
XORG_CFLAGS = @XORG_CFLAGS@ XORG_CFLAGS = @XORG_CFLAGS@
@ -184,7 +187,7 @@ sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
target_alias = @target_alias@ target_alias = @target_alias@
EXTRA_DIST = 50-x11-input-joystick.fdi EXTRA_DIST = 50-x11-input-joystick.fdi 50-joystick-all.conf
all: all-am all: all-am
.SUFFIXES: .SUFFIXES:
@ -197,9 +200,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \ exit 1;; \
esac; \ esac; \
done; \ done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu config/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign config/Makefile'; \
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu config/Makefile $(AUTOMAKE) --foreign config/Makefile
.PRECIOUS: Makefile .PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \

File diff suppressed because it is too large Load Diff

View File

@ -20,70 +20,73 @@
# #
# Process this file with autoconf to produce a configure script # Process this file with autoconf to produce a configure script
AC_PREREQ(2.57) # Initialize Autoconf
AC_PREREQ([2.60])
AC_INIT([xf86-input-joystick], AC_INIT([xf86-input-joystick],
1.5.0, [1.6.0],
[https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
xf86-input-joystick) [xf86-input-joystick])
AC_CONFIG_SRCDIR([Makefile.am]) AC_CONFIG_SRCDIR([Makefile.am])
AC_CONFIG_HEADERS([config.h])
AC_CONFIG_AUX_DIR(.) AC_CONFIG_AUX_DIR(.)
AM_INIT_AUTOMAKE([dist-bzip2])
# Initialize Automake
AM_INIT_AUTOMAKE([foreign dist-bzip2])
AM_MAINTAINER_MODE AM_MAINTAINER_MODE
# Require xorg-macros: XORG_CWARNFLAGS, XORG_CHANGELOG # Initialize libtool
m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2 or later before running autoconf/autogen])])
XORG_MACROS_VERSION(1.2)
AM_CONFIG_HEADER([config.h])
# Checks for programs.
AC_DISABLE_STATIC AC_DISABLE_STATIC
AC_PROG_LIBTOOL AC_PROG_LIBTOOL
AC_PROG_CC
XORG_CWARNFLAGS
AH_TOP([#include "xorg-server.h"]) # Initialize X.Org macros 1.8 or later for MAN_SUBSTS set by XORG_MANPAGE_SECTIONS
m4_ifndef([XORG_MACROS_VERSION],
AC_ARG_WITH(xorg-module-dir, [m4_fatal([must install xorg-macros 1.8 or later before running autoconf/autogen])])
AC_HELP_STRING([--with-xorg-module-dir=DIR], XORG_MACROS_VERSION(1.8)
[Default xorg module directory XORG_DEFAULT_OPTIONS
[[default=$libdir/xorg/modules]]]),
[moduledir="$withval"],
[moduledir="$libdir/xorg/modules"])
AC_ARG_ENABLE(debug,
AS_HELP_STRING([--enable-debug],
[Enable debugging (default: enabled)]),
[DEBUGGING=$enableval], [DEBUGGING=yes])
if test "x$DEBUGGING" = xyes; then
AC_DEFINE(DEBUG, 1, [Enable debugging code])
else
AC_DEFINE(NDEBUG, 1, [Disable some debugging code])
fi
AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes])
inputdir=${moduledir}/input
AC_SUBST(inputdir)
# Checks for extensions # Checks for extensions
XORG_DRIVER_CHECK_EXT(XINPUT, inputproto) XORG_DRIVER_CHECK_EXT(XINPUT, inputproto)
XORG_DRIVER_CHECK_EXT(XKB, kbproto) XORG_DRIVER_CHECK_EXT(XKB, kbproto)
# Checks for pkg-config packages # Checks for pkg-config packages
PKG_CHECK_MODULES(XORG, PKG_CHECK_MODULES(XORG, [xorg-server >= 1.9.99.2] xproto $REQUIRED_MODULES)
[xorg-server >= 1.3.99.901] xproto $REQUIRED_MODULES)
XORG_CFLAGS="$CWARNFLAGS $XORG_CFLAGS" DRIVER_NAME=joystick
xorg_sdkdir=$(pkg-config --variable=sdkdir xorg-server) AC_SUBST([DRIVER_NAME])
# -----------------------------------------------------------------------------
# Configuration options
# -----------------------------------------------------------------------------
# Define a configure option for an alternate input module directory
AC_ARG_WITH(xorg-module-dir,
AS_HELP_STRING([--with-xorg-module-dir=DIR],
[Default xorg module directory [[default=$libdir/xorg/modules]]]),
[moduledir="$withval"],
[moduledir="$libdir/xorg/modules"])
inputdir=${moduledir}/input
AC_SUBST(inputdir)
# Define a configure option for an alternate X Server SDK Headers
# X Server SDK location is required to install joystick header files
AC_ARG_WITH(sdkdir, AC_ARG_WITH(sdkdir,
AC_HELP_STRING([--with-sdkdir=<path>], AS_HELP_STRING([--with-sdkdir=<path>],
[Xorg X Server sdk headers (default is autodetected)]), [Xorg X Server sdk headers (default is autodetected)]),
[sdkdir="$withval"], [sdkdir="${xorg_sdkdir}"]) [sdkdir="$withval"],
[sdkdir=`$PKG_CONFIG --variable=sdkdir xorg-server`])
AC_SUBST(sdkdir) AC_SUBST(sdkdir)
# Checks for libraries. # Define a configure option to enable code debugging
AC_ARG_ENABLE(debug, AS_HELP_STRING([--enable-debug],
[Enable debugging (default: disabled)]),
[DEBUGGING=$enableval], [DEBUGGING=no])
if test "x$DEBUGGING" = xyes; then
AC_DEFINE(DEBUG, 1, [Enable debugging code])
fi
AM_CONDITIONAL(DEBUG, [test "x$DEBUGGING" = xyes])
# Checks for header files. # -----------------------------------------------------------------------------
# Determine which joystick backend to build
# -----------------------------------------------------------------------------
linux_backend=yes linux_backend=yes
AC_CHECK_HEADERS([linux/joystick.h],, [linux_backend=no]) AC_CHECK_HEADERS([linux/joystick.h],, [linux_backend=no])
AM_CONDITIONAL(LINUX_BACKEND, [test "x$linux_backend" = xyes]) AM_CONDITIONAL(LINUX_BACKEND, [test "x$linux_backend" = xyes])
@ -111,27 +114,22 @@ AM_CONDITIONAL(EVDEV_BACKEND, [test "x$evdev_backend" = xyes])
if test "x$evdev_backend" = xyes; then if test "x$evdev_backend" = xyes; then
AC_DEFINE(EVDEV_BACKEND, 1, [Compile Linux evdev backend]) AC_DEFINE(EVDEV_BACKEND, 1, [Compile Linux evdev backend])
fi fi
# -----------------------------------------------------------------------------
AC_HEADER_STDC AC_CONFIG_FILES([Makefile
DRIVER_NAME=joystick
AC_SUBST([DRIVER_NAME])
XORG_MANPAGE_SECTIONS
XORG_RELEASE_VERSION
XORG_CHANGELOG
AC_OUTPUT([Makefile
src/Makefile src/Makefile
man/Makefile man/Makefile
config/Makefile config/Makefile
include/Makefile include/Makefile
xorg-joystick.pc]) xorg-joystick.pc])
AC_OUTPUT
echo # -----------------------------------------------------------------------------
echo Building Linux joystick backend: $linux_backend
echo Building Linux evdev backend: $evdev_backend AS_ECHO()
echo Building BSD usbhid backend: $bsd_backend AS_ECHO("Building Linux joystick backend: $linux_backend")
AS_ECHO("Building Linux evdev backend: $evdev_backend")
AS_ECHO("Building BSD usbhid backend: $bsd_backend")
if test "x$linux_backend" != "xyes" -a \ if test "x$linux_backend" != "xyes" -a \
"x$bsd_backend" != "xyes" -a \ "x$bsd_backend" != "xyes" -a \

View File

@ -18,6 +18,4 @@
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # 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. # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
EXTRA_DIST = joystick-properties.h
sdk_HEADERS = joystick-properties.h sdk_HEADERS = joystick-properties.h

View File

@ -43,9 +43,9 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .. top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644 install_sh_DATA = ${SHELL} $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c install_sh_PROGRAM = ${SHELL} $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c install_sh_SCRIPT = ${SHELL} $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name) transform = $(program_transform_name)
NORMAL_INSTALL = : NORMAL_INSTALL = :
@ -86,6 +86,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@ AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@ AR = @AR@
@ -128,6 +129,7 @@ FFLAGS = @FFLAGS@
FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
GREP = @GREP@ GREP = @GREP@
INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
@ -163,6 +165,7 @@ RANLIB = @RANLIB@
SED = @SED@ SED = @SED@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
STRICT_CFLAGS = @STRICT_CFLAGS@
STRIP = @STRIP@ STRIP = @STRIP@
VERSION = @VERSION@ VERSION = @VERSION@
XORG_CFLAGS = @XORG_CFLAGS@ XORG_CFLAGS = @XORG_CFLAGS@
@ -217,7 +220,6 @@ sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
target_alias = @target_alias@ target_alias = @target_alias@
EXTRA_DIST = joystick-properties.h
sdk_HEADERS = joystick-properties.h sdk_HEADERS = joystick-properties.h
all: all-am all: all-am
@ -231,9 +233,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \ exit 1;; \
esac; \ esac; \
done; \ done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu include/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign include/Makefile'; \
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu include/Makefile $(AUTOMAKE) --foreign include/Makefile
.PRECIOUS: Makefile .PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \

View File

@ -1,27 +1,24 @@
# #
# Copyright 2005 Sun Microsystems, Inc. All rights reserved. # Copyright 2005 Sun Microsystems, Inc. All rights reserved.
# #
# Permission to use, copy, modify, distribute, and sell this software and its # Permission is hereby granted, free of charge, to any person obtaining a
# documentation for any purpose is hereby granted without fee, provided that # copy of this software and associated documentation files (the "Software"),
# the above copyright notice appear in all copies and that both that # to deal in the Software without restriction, including without limitation
# copyright notice and this permission notice appear in supporting # the rights to use, copy, modify, merge, publish, distribute, sublicense,
# documentation. # 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 # The above copyright notice and this permission notice (including the next
# in all copies or substantial portions of the Software. # paragraph) shall be included in all copies or substantial portions of the
# Software.
# #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# OTHER DEALINGS IN THE SOFTWARE. # DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the copyright holders shall
# not be used in advertising or otherwise to promote the sale, use or
# other dealings in this Software without prior written authorization
# from the copyright holders.
# #
drivermandir = $(DRIVER_MAN_DIR) drivermandir = $(DRIVER_MAN_DIR)
@ -34,25 +31,8 @@ EXTRA_DIST = @DRIVER_NAME@.man
CLEANFILES = $(driverman_DATA) CLEANFILES = $(driverman_DATA)
SED = sed
# Strings to replace in man pages
XORGRELSTRING = @PACKAGE_STRING@
XORGMANNAME = X Version 11
MAN_SUBSTS = \
-e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xservername__|Xorg|g' \
-e 's|__xconfigfile__|xorg.conf|g' \
-e 's|__projectroot__|$(prefix)|g' \
-e 's|__appmansuffix__|$(APP_MAN_SUFFIX)|g' \
-e 's|__drivermansuffix__|$(DRIVER_MAN_SUFFIX)|g' \
-e 's|__adminmansuffix__|$(ADMIN_MAN_SUFFIX)|g' \
-e 's|__miscmansuffix__|$(MISC_MAN_SUFFIX)|g' \
-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g'
SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
.man.$(DRIVER_MAN_SUFFIX): .man.$(DRIVER_MAN_SUFFIX):
sed $(MAN_SUBSTS) < $< > $@ $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@

View File

@ -17,27 +17,24 @@
# #
# Copyright 2005 Sun Microsystems, Inc. All rights reserved. # Copyright 2005 Sun Microsystems, Inc. All rights reserved.
# #
# Permission to use, copy, modify, distribute, and sell this software and its # Permission is hereby granted, free of charge, to any person obtaining a
# documentation for any purpose is hereby granted without fee, provided that # copy of this software and associated documentation files (the "Software"),
# the above copyright notice appear in all copies and that both that # to deal in the Software without restriction, including without limitation
# copyright notice and this permission notice appear in supporting # the rights to use, copy, modify, merge, publish, distribute, sublicense,
# documentation. # 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 # The above copyright notice and this permission notice (including the next
# in all copies or substantial portions of the Software. # paragraph) shall be included in all copies or substantial portions of the
# Software.
# #
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS # THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
# OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF # IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. # FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
# IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR # THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, # LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR # FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
# OTHER DEALINGS IN THE SOFTWARE. # DEALINGS IN THE SOFTWARE.
#
# Except as contained in this notice, the name of the copyright holders shall
# not be used in advertising or otherwise to promote the sale, use or
# other dealings in this Software without prior written authorization
# from the copyright holders.
# #
srcdir = @srcdir@ srcdir = @srcdir@
@ -49,9 +46,9 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .. top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644 install_sh_DATA = ${SHELL} $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c install_sh_PROGRAM = ${SHELL} $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c install_sh_SCRIPT = ${SHELL} $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name) transform = $(program_transform_name)
NORMAL_INSTALL = : NORMAL_INSTALL = :
@ -89,6 +86,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@ AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@ AR = @AR@
@ -131,6 +129,7 @@ FFLAGS = @FFLAGS@
FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
GREP = @GREP@ GREP = @GREP@
INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
@ -149,18 +148,7 @@ MAINT = @MAINT@
MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@ MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@ MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
MAKEINFO = @MAKEINFO@ MAKEINFO = @MAKEINFO@
MAN_SUBSTS = \ MAN_SUBSTS = @MAN_SUBSTS@
-e 's|__vendorversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xorgversion__|"$(XORGRELSTRING)" "$(XORGMANNAME)"|' \
-e 's|__xservername__|Xorg|g' \
-e 's|__xconfigfile__|xorg.conf|g' \
-e 's|__projectroot__|$(prefix)|g' \
-e 's|__appmansuffix__|$(APP_MAN_SUFFIX)|g' \
-e 's|__drivermansuffix__|$(DRIVER_MAN_SUFFIX)|g' \
-e 's|__adminmansuffix__|$(ADMIN_MAN_SUFFIX)|g' \
-e 's|__miscmansuffix__|$(MISC_MAN_SUFFIX)|g' \
-e 's|__filemansuffix__|$(FILE_MAN_SUFFIX)|g'
MISC_MAN_DIR = @MISC_MAN_DIR@ MISC_MAN_DIR = @MISC_MAN_DIR@
MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
NMEDIT = @NMEDIT@ NMEDIT = @NMEDIT@
@ -174,9 +162,10 @@ PACKAGE_VERSION = @PACKAGE_VERSION@
PATH_SEPARATOR = @PATH_SEPARATOR@ PATH_SEPARATOR = @PATH_SEPARATOR@
PKG_CONFIG = @PKG_CONFIG@ PKG_CONFIG = @PKG_CONFIG@
RANLIB = @RANLIB@ RANLIB = @RANLIB@
SED = sed SED = @SED@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
STRICT_CFLAGS = @STRICT_CFLAGS@
STRIP = @STRIP@ STRIP = @STRIP@
VERSION = @VERSION@ VERSION = @VERSION@
XORG_CFLAGS = @XORG_CFLAGS@ XORG_CFLAGS = @XORG_CFLAGS@
@ -236,10 +225,6 @@ driverman_PRE = @DRIVER_NAME@.man
driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@) driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
EXTRA_DIST = @DRIVER_NAME@.man EXTRA_DIST = @DRIVER_NAME@.man
CLEANFILES = $(driverman_DATA) CLEANFILES = $(driverman_DATA)
# Strings to replace in man pages
XORGRELSTRING = @PACKAGE_STRING@
XORGMANNAME = X Version 11
SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man SUFFIXES = .$(DRIVER_MAN_SUFFIX) .man
all: all-am all: all-am
@ -254,9 +239,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \ exit 1;; \
esac; \ esac; \
done; \ done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu man/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign man/Makefile'; \
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu man/Makefile $(AUTOMAKE) --foreign man/Makefile
.PRECIOUS: Makefile .PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \
@ -425,8 +410,9 @@ uninstall-am: uninstall-drivermanDATA uninstall-info-am
uninstall-info-am uninstall-info-am
# String replacements in MAN_SUBSTS now come from xorg-macros.m4 via configure
.man.$(DRIVER_MAN_SUFFIX): .man.$(DRIVER_MAN_SUFFIX):
sed $(MAN_SUBSTS) < $< > $@ $(AM_V_GEN)$(SED) $(MAN_SUBSTS) < $< > $@
# Tell versions [3.59,3.63) of GNU make to not export all variables. # Tell versions [3.59,3.63) of GNU make to not export all variables.
# Otherwise a system limit (for SysV at least) may be exceeded. # Otherwise a system limit (for SysV at least) may be exceeded.
.NOEXPORT: .NOEXPORT:

View File

@ -4,14 +4,19 @@
.SH NAME .SH NAME
joystick \- Joystick input driver joystick \- Joystick input driver
.SH SYNOPSIS .SH SYNOPSIS
Snipped for xorg.conf.d(5):
.nf .nf
.B "Section \*qInputDevice\*q" .B "Section \*qInputClass\*q"
.BI " Identifier \*q" devname \*q .BI " Identifier \*q" joystick-all \*q
.B " Driver \*qjoystick\*q" .BI " Driver \*q" joystick \*q
.BI " Option \*qDevice\*q \*q" devpath \*q .BI " Option \*qMatchIsJoystick\*q \*q" on \*q
.BI " Option \*qMatchDevicePath \*q" /dev/input/event* \*q
\ \ ... \ \ ...
.B EndSection .B EndSection
.fi .fi
.SH DESCRIPTION .SH DESCRIPTION
.B joystick .B joystick
is an __xservername__ input driver for Joysticks. There are 3 backends available that are used in the following order, if support was found: is an __xservername__ input driver for Joysticks. There are 3 backends available that are used in the following order, if support was found:
@ -314,33 +319,21 @@ The keys for the first two axes will be generated in an interval according to th
The keys for the third and fourth axis are generated once when the axis moves out of the deadzone and when it moves back into the deadzone. X.Org will autorepeat those keys according to current keyboard settings. The keys for the third and fourth axis are generated once when the axis moves out of the deadzone and when it moves back into the deadzone. X.Org will autorepeat those keys according to current keyboard settings.
.SH "NOTES" .SH "NOTES"
The driver does not do hotplugging on it's own. The joystick needs to be plugged in when the driver is loaded. Configuration through
If the joystick is unplugged, the device will be automatically deactivated. .I InputClass
.P sections is recommended in X servers 1.8 and later. See xorg.conf.d(5) for more details. An example xorg.conf.d snipped is provided in
There is an example hal policy in .I ${sourcecode}/config/50-joystick-all.conf
.I ${sourcecode}/config/50-x11-input-joystick.fdi
which will take care of hotplugging. Place it in
.I /etc/hal/fdi/policy
and customize it to your needs. Pass custom options to the driver using x11_options properties. This requires xorg-server-1.5 or
higher.
.P
Make sure you add the
.I \*qSendCoreEvents\*q
keyword to the device entry of your
.B ServerLayout
section of the
.I xorg.conf
file, otherwise the device won't report core pointer and core key events.
Example: Configuration through hal fdi files is recommended in X servers 1.5,
.nf 1.6 and 1.7. An example hal policy file is still provided in
.BI " InputDevice " "\*qJoystick1\*q \*qSendCoreEvents\*q" .I ${sourcecode}/config/50-x11-input-joystick.fdi
.fi to be placed in
.IR /etc/hal/fdi/policy .
.SH "SEE ALSO" .SH "SEE ALSO"
__xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__), xmodmap(1) __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorg.conf.d(5), Xserver(__appmansuffix__), X(__miscmansuffix__), xmodmap(1)
.SH AUTHORS .SH AUTHORS
Sascha Hlusiak (2007-2009), Sascha Hlusiak (2007-2011),
.fi .fi
Frederic Lepied (1995-1999) Frederic Lepied (1995-1999)

View File

@ -24,7 +24,8 @@
# -avoid-version prevents gratuitous .0.0.0 version numbers on the end # -avoid-version prevents gratuitous .0.0.0 version numbers on the end
# _ladir passes a dummy rpath to libtool so the thing will actually link # _ladir passes a dummy rpath to libtool so the thing will actually link
# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc. # TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
AM_CFLAGS = $(XORG_CFLAGS)
AM_CFLAGS = $(XORG_CFLAGS) $(CWARNFLAGS)
@DRIVER_NAME@_drv_la_LTLIBRARIES = @DRIVER_NAME@_drv.la @DRIVER_NAME@_drv_la_LTLIBRARIES = @DRIVER_NAME@_drv.la
@DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version @DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version

View File

@ -34,6 +34,12 @@
# IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN # 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. # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# this is obnoxious:
# -module lets us name the module exactly how we want
# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
# _ladir passes a dummy rpath to libtool so the thing will actually link
# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
srcdir = @srcdir@ srcdir = @srcdir@
top_srcdir = @top_srcdir@ top_srcdir = @top_srcdir@
VPATH = @srcdir@ VPATH = @srcdir@
@ -43,9 +49,9 @@ pkgincludedir = $(includedir)/@PACKAGE@
top_builddir = .. top_builddir = ..
am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
INSTALL = @INSTALL@ INSTALL = @INSTALL@
install_sh_DATA = $(install_sh) -c -m 644 install_sh_DATA = ${SHELL} $(install_sh) -c -m 644
install_sh_PROGRAM = $(install_sh) -c install_sh_PROGRAM = ${SHELL} $(install_sh) -c
install_sh_SCRIPT = $(install_sh) -c install_sh_SCRIPT = ${SHELL} $(install_sh) -c
INSTALL_HEADER = $(INSTALL_DATA) INSTALL_HEADER = $(INSTALL_DATA)
transform = $(program_transform_name) transform = $(program_transform_name)
NORMAL_INSTALL = : NORMAL_INSTALL = :
@ -116,6 +122,7 @@ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
AMDEP_FALSE = @AMDEP_FALSE@ AMDEP_FALSE = @AMDEP_FALSE@
AMDEP_TRUE = @AMDEP_TRUE@ AMDEP_TRUE = @AMDEP_TRUE@
AMTAR = @AMTAR@ AMTAR = @AMTAR@
AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@
APP_MAN_DIR = @APP_MAN_DIR@ APP_MAN_DIR = @APP_MAN_DIR@
APP_MAN_SUFFIX = @APP_MAN_SUFFIX@ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
AR = @AR@ AR = @AR@
@ -158,6 +165,7 @@ FFLAGS = @FFLAGS@
FILE_MAN_DIR = @FILE_MAN_DIR@ FILE_MAN_DIR = @FILE_MAN_DIR@
FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
GREP = @GREP@ GREP = @GREP@
INSTALL_CMD = @INSTALL_CMD@
INSTALL_DATA = @INSTALL_DATA@ INSTALL_DATA = @INSTALL_DATA@
INSTALL_PROGRAM = @INSTALL_PROGRAM@ INSTALL_PROGRAM = @INSTALL_PROGRAM@
INSTALL_SCRIPT = @INSTALL_SCRIPT@ INSTALL_SCRIPT = @INSTALL_SCRIPT@
@ -193,6 +201,7 @@ RANLIB = @RANLIB@
SED = @SED@ SED = @SED@
SET_MAKE = @SET_MAKE@ SET_MAKE = @SET_MAKE@
SHELL = @SHELL@ SHELL = @SHELL@
STRICT_CFLAGS = @STRICT_CFLAGS@
STRIP = @STRIP@ STRIP = @STRIP@
VERSION = @VERSION@ VERSION = @VERSION@
XORG_CFLAGS = @XORG_CFLAGS@ XORG_CFLAGS = @XORG_CFLAGS@
@ -247,13 +256,7 @@ sdkdir = @sdkdir@
sharedstatedir = @sharedstatedir@ sharedstatedir = @sharedstatedir@
sysconfdir = @sysconfdir@ sysconfdir = @sysconfdir@
target_alias = @target_alias@ target_alias = @target_alias@
AM_CFLAGS = $(XORG_CFLAGS) $(CWARNFLAGS)
# this is obnoxious:
# -module lets us name the module exactly how we want
# -avoid-version prevents gratuitous .0.0.0 version numbers on the end
# _ladir passes a dummy rpath to libtool so the thing will actually link
# TODO: -nostdlib/-Bstatic/-lgcc platform magic, not installing the .a, etc.
AM_CFLAGS = $(XORG_CFLAGS)
@DRIVER_NAME@_drv_la_LTLIBRARIES = @DRIVER_NAME@_drv.la @DRIVER_NAME@_drv_la_LTLIBRARIES = @DRIVER_NAME@_drv.la
@DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version $(am__append_2) @DRIVER_NAME@_drv_la_LDFLAGS = -module -avoid-version $(am__append_2)
@DRIVER_NAME@_drv_ladir = @inputdir@ @DRIVER_NAME@_drv_ladir = @inputdir@
@ -279,9 +282,9 @@ $(srcdir)/Makefile.in: @MAINTAINER_MODE_TRUE@ $(srcdir)/Makefile.am $(am__confi
exit 1;; \ exit 1;; \
esac; \ esac; \
done; \ done; \
echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \ echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign src/Makefile'; \
cd $(top_srcdir) && \ cd $(top_srcdir) && \
$(AUTOMAKE) --gnu src/Makefile $(AUTOMAKE) --foreign src/Makefile
.PRECIOUS: Makefile .PRECIOUS: Makefile
Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
@case '$?' in \ @case '$?' in \

View File

@ -30,6 +30,7 @@
#include "config.h" #include "config.h"
#endif #endif
#include <xorg-server.h>
#include <unistd.h> #include <unistd.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>

View File

@ -29,6 +29,7 @@
#include "config.h" #include "config.h"
#endif #endif
#include <xorg-server.h>
#include <unistd.h> #include <unistd.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>

View File

@ -32,6 +32,7 @@
#include "config.h" #include "config.h"
#endif #endif
#include <xorg-server.h>
#include <unistd.h> #include <unistd.h>
#include <sys/types.h> #include <sys/types.h>
#include <sys/ioctl.h> #include <sys/ioctl.h>

View File

@ -26,6 +26,7 @@
#include "config.h" #include "config.h"
#endif #endif
#include <xorg-server.h>
#include <stdio.h> #include <stdio.h>
#include <xorgVersion.h> #include <xorgVersion.h>
@ -44,9 +45,7 @@
#include "jstk_key.h" #include "jstk_key.h"
#include "jstk_options.h" #include "jstk_options.h"
#include "jstk_properties.h" #include "jstk_properties.h"
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3 #include <xserver-properties.h>
#include <xserver-properties.h>
#endif
#ifdef LINUX_BACKEND #ifdef LINUX_BACKEND
#include "backend_joystick.h" #include "backend_joystick.h"
@ -63,40 +62,6 @@
char debug_level = 0; char debug_level = 0;
#endif #endif
/*
***************************************************************************
*
* jstkConvertProc --
*
* Convert valuators to X and Y.
*
***************************************************************************
*/
static Bool
jstkConvertProc(LocalDevicePtr local,
int first,
int num,
int v0,
int v1,
int v2,
int v3,
int v4,
int v5,
int* x,
int* y)
{
if (first != 0 || num != 2)
return FALSE;
*x = v0;
*y = v1;
return TRUE;
}
/* /*
*************************************************************************** ***************************************************************************
* *
@ -147,21 +112,21 @@ jstkOpenDevice(JoystickDevPtr priv, BOOL probe)
*/ */
static void static void
jstkReadProc(LocalDevicePtr local) jstkReadProc(InputInfoPtr pInfo)
{ {
JOYSTICKEVENT event; JOYSTICKEVENT event;
int number; int number;
int i, r; int i, r;
JoystickDevPtr priv = local->private; JoystickDevPtr priv = pInfo->private;
do { do {
if ((priv->read_proc == NULL) || if ((priv->read_proc == NULL) ||
((r=priv->read_proc(priv, &event, &number))==0)) { ((r=priv->read_proc(priv, &event, &number))==0)) {
xf86Msg(X_WARNING, "JOYSTICK: Read failed. Deactivating device.\n"); xf86Msg(X_WARNING, "JOYSTICK: Read failed. Deactivating device.\n");
if (local->fd >= 0) if (pInfo->fd >= 0)
RemoveEnabledDevice(local->fd); RemoveEnabledDevice(pInfo->fd);
return; return;
} }
@ -174,7 +139,7 @@ jstkReadProc(LocalDevicePtr local)
switch (priv->button[number].mapping) { switch (priv->button[number].mapping) {
case JSTK_MAPPING_BUTTON: case JSTK_MAPPING_BUTTON:
if (priv->mouse_enabled == TRUE) { if (priv->mouse_enabled == TRUE) {
xf86PostButtonEvent(local->dev, 0, xf86PostButtonEvent(pInfo->dev, 0,
priv->button[number].buttonnumber, priv->button[number].buttonnumber,
priv->button[number].pressed, 0, 0); priv->button[number].pressed, 0, 0);
} }
@ -187,7 +152,7 @@ jstkReadProc(LocalDevicePtr local)
if (priv->button[number].pressed == 0) if (priv->button[number].pressed == 0)
priv->button[number].currentspeed = 1.0; priv->button[number].currentspeed = 1.0;
else if (priv->mouse_enabled == TRUE) else if (priv->mouse_enabled == TRUE)
jstkStartButtonAxisTimer(local, number); jstkStartButtonAxisTimer(pInfo, number);
break; break;
case JSTK_MAPPING_KEY: case JSTK_MAPPING_KEY:
@ -258,7 +223,7 @@ jstkReadProc(LocalDevicePtr local)
priv->axis[number].mapping)); priv->axis[number].mapping));
if (priv->axis[number].valuator != -1) if (priv->axis[number].valuator != -1)
xf86PostMotionEvent(local->dev, 1, priv->axis[number].valuator, xf86PostMotionEvent(pInfo->dev, 1, priv->axis[number].valuator,
1, priv->axis[number].value); 1, priv->axis[number].value);
switch (priv->axis[number].mapping) { switch (priv->axis[number].mapping) {
@ -272,12 +237,12 @@ jstkReadProc(LocalDevicePtr local)
if (priv->axis[number].value == 0) if (priv->axis[number].value == 0)
priv->axis[number].currentspeed = 1.0; priv->axis[number].currentspeed = 1.0;
if (priv->mouse_enabled == TRUE) if (priv->mouse_enabled == TRUE)
jstkStartAxisTimer(local, number); jstkStartAxisTimer(pInfo, number);
break; break;
case JSTK_TYPE_ABSOLUTE: case JSTK_TYPE_ABSOLUTE:
if (priv->mouse_enabled == TRUE) if (priv->mouse_enabled == TRUE)
jstkHandleAbsoluteAxis(local, number); jstkHandleAbsoluteAxis(pInfo, number);
break; break;
default: default:
break; break;
@ -286,9 +251,9 @@ jstkReadProc(LocalDevicePtr local)
case JSTK_MAPPING_KEY: if (priv->keys_enabled == TRUE) { case JSTK_MAPPING_KEY: if (priv->keys_enabled == TRUE) {
if (priv->axis[number].type == JSTK_TYPE_ACCELERATED) { if (priv->axis[number].type == JSTK_TYPE_ACCELERATED) {
jstkHandlePWMAxis(local, number); jstkHandlePWMAxis(pInfo, number);
} else if (priv->axis[number].type == JSTK_TYPE_BYVALUE) { } else if (priv->axis[number].type == JSTK_TYPE_BYVALUE) {
jstkStartAxisTimer(local, number); jstkStartAxisTimer(pInfo, number);
} }
break; break;
} }
@ -327,12 +292,10 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
int what) int what)
{ {
int i; int i;
LocalDevicePtr local = (LocalDevicePtr)pJstk->public.devicePrivate; InputInfoPtr pInfo = (InputInfoPtr)pJstk->public.devicePrivate;
JoystickDevPtr priv = (JoystickDevPtr)XI_PRIVATE(pJstk); JoystickDevPtr priv = pInfo->private;
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
Atom btn_labels[BUTTONMAP_SIZE+1] = {0}; /* TODO: fillme */ Atom btn_labels[BUTTONMAP_SIZE+1] = {0}; /* TODO: fillme */
Atom axes_labels[MAXAXES] = {0}; /* TODO: fillme */ Atom axes_labels[MAXAXES] = {0}; /* TODO: fillme */
#endif
switch (what) { switch (what) {
case DEVICE_INIT: { case DEVICE_INIT: {
@ -355,9 +318,7 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
if (InitButtonClassDeviceStruct(pJstk, BUTTONMAP_SIZE, if (InitButtonClassDeviceStruct(pJstk, BUTTONMAP_SIZE,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
btn_labels, btn_labels,
#endif
buttonmap) == FALSE) { buttonmap) == FALSE) {
ErrorF("unable to allocate Button class device\n"); ErrorF("unable to allocate Button class device\n");
return !Success; return !Success;
@ -373,71 +334,48 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
priv->axis[i].valuator = m++; priv->axis[i].valuator = m++;
} }
if (InitValuatorClassDeviceStruct(pJstk, if (InitValuatorClassDeviceStruct(pJstk, m, axes_labels,
m, GetMotionHistorySize(),
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
axes_labels,
#endif
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 3
xf86GetMotionEvents,
#endif
local->history_size,
Relative) == FALSE) { Relative) == FALSE) {
ErrorF("unable to allocate Valuator class device\n"); ErrorF("unable to allocate Valuator class device\n");
return !Success; return !Success;
} else { } else {
InitValuatorAxisStruct(pJstk, InitValuatorAxisStruct(pJstk,
0, /* valuator num */ 0, /* valuator num */
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
XIGetKnownProperty(AXIS_LABEL_PROP_REL_X), XIGetKnownProperty(AXIS_LABEL_PROP_REL_X),
#endif
0, /* min val */ 0, /* min val */
screenInfo.screens[0]->width, /* max val */ screenInfo.screens[0]->width, /* max val */
1, /* resolution */ 1, /* resolution */
0, /* min_res */ 0, /* min_res */
1); /* max_res */ 1, /* max_res */
Absolute);
InitValuatorAxisStruct(pJstk, InitValuatorAxisStruct(pJstk,
1, /* valuator num */ 1, /* valuator num */
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y), XIGetKnownProperty(AXIS_LABEL_PROP_REL_Y),
#endif
0, /* min val */ 0, /* min val */
screenInfo.screens[0]->height, /* max val */ screenInfo.screens[0]->height, /* max val */
1, /* resolution */ 1, /* resolution */
0, /* min_res */ 0, /* min_res */
1); /* max_res */ 1, /* max_res */
Absolute);
for (i=0; i<MAXAXES; i++) for (i=0; i<MAXAXES; i++)
if (priv->axis[i].valuator != -1) if (priv->axis[i].valuator != -1)
{ {
InitValuatorAxisStruct(pJstk, InitValuatorAxisStruct(pJstk,
priv->axis[i].valuator, priv->axis[i].valuator,
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 7
axes_labels[i], axes_labels[i],
#endif
-32768, /* min val */ -32768, /* min val */
32767, /* max val */ 32767, /* max val */
1, /* resolution */ 1, /* resolution */
0, /* min_res */ 0, /* min_res */
1); /* max_res */ 1, /* max_res */
Absolute);
} }
/* allocate the motion history buffer if needed */ /* allocate the motion history buffer if needed */
xf86MotionHistoryAllocate(local); xf86MotionHistoryAllocate(pInfo);
} }
if (priv->keyboard_device != NULL)
{
DBG(2, ErrorF("Activating keyboard device\n"));
xf86ActivateDevice(priv->keyboard_device);
priv->keyboard_device->dev->inited =
(priv->keyboard_device->device_control(priv->keyboard_device->dev, DEVICE_INIT) == Success);
xf86EnableDevice(priv->keyboard_device->dev);
DBG(2, ErrorF("Keyboard device activated\n"));
}
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
jstkInitProperties(pJstk, priv); jstkInitProperties(pJstk, priv);
#endif
break; break;
} }
@ -448,8 +386,8 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
if (jstkOpenDevice(priv, FALSE) != -1) { if (jstkOpenDevice(priv, FALSE) != -1) {
pJstk->public.on = TRUE; pJstk->public.on = TRUE;
local->fd = priv->fd; pInfo->fd = priv->fd;
AddEnabledDevice(local->fd); AddEnabledDevice(pInfo->fd);
} else return !Success; } else return !Success;
break; break;
@ -471,9 +409,9 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
TimerCancel(priv->axis[i].timer); TimerCancel(priv->axis[i].timer);
} }
if (local->fd >= 0) if (pInfo->fd >= 0)
RemoveEnabledDevice(local->fd); RemoveEnabledDevice(pInfo->fd);
local->fd = -1; pInfo->fd = -1;
if (priv->close_proc) if (priv->close_proc)
priv->close_proc(priv); priv->close_proc(priv);
pJstk->public.on = FALSE; pJstk->public.on = FALSE;
@ -487,19 +425,6 @@ jstkDeviceControlProc(DeviceIntPtr pJstk,
return Success; return Success;
} }
_X_EXPORT InputDriverRec JSTK_KEYBOARD = {
1,
"joystick_keyboard",
NULL,
jstkKeyboardPreInit,
jstkKeyboardUnInit,
NULL,
0
};
/* /*
*************************************************************************** ***************************************************************************
* *
@ -507,41 +432,41 @@ _X_EXPORT InputDriverRec JSTK_KEYBOARD = {
* *
* Called when a device will be instantiated * Called when a device will be instantiated
* *
* This is a tad complicated. NewInputDeviceRequest(), which we use to
* hotplug a keyboard device,. enables the device, so we need to make sure
* that all options for the dependent device are set correctly.
*
* This means that we parse the keyboard-specific options into the
* keyboard device's PreInit, and re-use the keyboard's priv field.
*
*************************************************************************** ***************************************************************************
*/ */
static InputInfoPtr static int
jstkCorePreInit(InputDriverPtr drv, IDevPtr dev, int flags) jstkCorePreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
{ {
LocalDevicePtr local = NULL; InputInfoPtr keyboard_device;
JoystickDevPtr priv = NULL; JoystickDevPtr priv = NULL;
char *s; char *s;
int i, j; int i, j;
local = xf86AllocateInput(drv, 0); s = xf86CheckStrOption(pInfo->options, "_source", "");
if (!local) { if (strcmp(s, "_driver/joystick") == 0)
goto SetupProc_fail; return jstkKeyboardPreInit(drv, pInfo, flags);
}
local->private = (JoystickDevPtr)xalloc(sizeof(JoystickDevRec)); pInfo->device_control = jstkDeviceControlProc;
priv = (JoystickDevPtr)local->private; pInfo->read_input = jstkReadProc;
pInfo->control_proc = NULL;
pInfo->switch_mode = NULL;
pInfo->fd = -1;
pInfo->dev = NULL;
pInfo->type_name = XI_JOYSTICK;
local->name = dev->identifier; keyboard_device = jstkKeyboardHotplug(pInfo, flags);
local->flags = XI86_POINTER_CAPABLE; if (!keyboard_device)
local->flags |= XI86_SEND_DRAG_EVENTS; return BadAlloc;
local->device_control = jstkDeviceControlProc;
local->read_input = jstkReadProc; pInfo->private = priv = keyboard_device->private;
local->close_proc = NULL;
local->control_proc = NULL;
local->switch_mode = NULL;
local->conversion_proc = jstkConvertProc;
local->fd = -1;
local->dev = NULL;
local->private = priv;
local->type_name = XI_JOYSTICK;
local->history_size = 0;
local->always_core_feedback = NULL;
local->conf_idev = dev;
priv->fd = -1; priv->fd = -1;
priv->open_proc = NULL; priv->open_proc = NULL;
@ -554,9 +479,7 @@ jstkCorePreInit(InputDriverPtr drv, IDevPtr dev, int flags)
priv->mouse_enabled = TRUE; priv->mouse_enabled = TRUE;
priv->keys_enabled = TRUE; priv->keys_enabled = TRUE;
priv->amplify = 1.0f; priv->amplify = 1.0f;
priv->keyboard_device = NULL; priv->keyboard_device = keyboard_device;
priv->repeat_delay = 0;
priv->repeat_interval = 0;
priv->num_axes = MAXAXES; priv->num_axes = MAXAXES;
priv->num_buttons = MAXBUTTONS; priv->num_buttons = MAXBUTTONS;
@ -614,81 +537,39 @@ jstkCorePreInit(InputDriverPtr drv, IDevPtr dev, int flags)
priv->axis[5].type = JSTK_TYPE_ACCELERATED; priv->axis[5].type = JSTK_TYPE_ACCELERATED;
priv->axis[5].mapping = JSTK_MAPPING_Y; priv->axis[5].mapping = JSTK_MAPPING_Y;
xf86CollectInputOptions(local, NULL, NULL);
xf86OptionListReport(local->options);
/* Joystick device is mandatory */ /* Joystick device is mandatory */
priv->device = xf86SetStrOption(dev->commonOptions, "Device", NULL); priv->device = xf86SetStrOption(pInfo->options, "Device", NULL);
if (!priv->device) if (!priv->device)
priv->device = xf86SetStrOption(dev->commonOptions, "Path", NULL); priv->device = xf86SetStrOption(pInfo->options, "Path", NULL);
if (!priv->device) { if (!priv->device) {
xf86Msg (X_ERROR, "%s: No Device specified.\n", local->name); xf86Msg (X_ERROR, "%s: No Device specified.\n", pInfo->name);
goto SetupProc_fail; goto SetupProc_fail;
} }
xf86ProcessCommonOptions(local, local->options);
#if DEBUG #if DEBUG
debug_level = xf86SetIntOption(dev->commonOptions, "DebugLevel", 0); debug_level = xf86SetIntOption(pInfo->options, "DebugLevel", 0);
if (debug_level > 0) { if (debug_level > 0) {
xf86Msg(X_CONFIG, "%s: debug level set to %d\n", xf86Msg(X_CONFIG, "%s: debug level set to %d\n",
local->name, debug_level); pInfo->name, debug_level);
} }
#else #else
if (xf86SetIntOption(dev->commonOptions, "DebugLevel", 0) != 0) { if (xf86SetIntOption(pInfo->options, "DebugLevel", 0) != 0) {
xf86Msg(X_WARNING, "%s: DebugLevel: Compiled without debugging support!\n", xf86Msg(X_WARNING, "%s: DebugLevel: Compiled without debugging support!\n",
local->name); pInfo->name);
} }
#endif #endif
/* Parse option for autorepeat */ priv->mouse_enabled = xf86SetBoolOption(pInfo->options, "StartMouseEnabled", TRUE);
if ((s = xf86SetStrOption(dev->commonOptions, "AutoRepeat", NULL))) { priv->keys_enabled = xf86SetBoolOption(pInfo->options, "StartKeysEnabled", TRUE);
int delay, rate;
if (sscanf(s, "%d %d", &delay, &rate) != 2) {
xf86Msg(X_ERROR, "%s: \"%s\" is not a valid AutoRepeat value",
local->name, s);
} else {
priv->repeat_delay = delay;
if (rate != 0)
priv->repeat_interval = 1000/rate;
else priv->repeat_interval = 0;
DBG(1, xf86Msg(X_CONFIG, "Autorepeat set to delay=%d, interval=%d\n",
priv->repeat_delay,priv->repeat_interval));
}
xfree(s);
}
priv->rmlvo.rules = xf86SetStrOption(dev->commonOptions, "xkb_rules", NULL);
if (!priv->rmlvo.rules)
priv->rmlvo.rules = xf86SetStrOption(dev->commonOptions, "XkbRules", "evdev");
priv->rmlvo.model = xf86SetStrOption(dev->commonOptions, "xkb_model", NULL);
if (!priv->rmlvo.model)
priv->rmlvo.model = xf86SetStrOption(dev->commonOptions, "XkbModel", "evdev");
priv->rmlvo.layout = xf86SetStrOption(dev->commonOptions, "xkb_layout", NULL);
if (!priv->rmlvo.layout)
priv->rmlvo.layout = xf86SetStrOption(dev->commonOptions, "XkbLayout", "us");
priv->rmlvo.variant = xf86SetStrOption(dev->commonOptions, "xkb_variant", NULL);
if (!priv->rmlvo.variant)
priv->rmlvo.variant = xf86SetStrOption(dev->commonOptions, "XkbVariant", "");
priv->rmlvo.options = xf86SetStrOption(dev->commonOptions, "xkb_options", NULL);
if (!priv->rmlvo.options)
priv->rmlvo.options = xf86SetStrOption(dev->commonOptions, "XkbOptions", "");
priv->mouse_enabled = xf86SetBoolOption(dev->commonOptions, "StartMouseEnabled", TRUE);
priv->keys_enabled = xf86SetBoolOption(dev->commonOptions, "StartKeysEnabled", TRUE);
/* Process button mapping options */ /* Process button mapping options */
for (i=0; i<MAXBUTTONS; i++) { for (i=0; i<MAXBUTTONS; i++) {
char p[64]; char p[64];
sprintf(p,"MapButton%d",i+1); sprintf(p,"MapButton%d",i+1);
s = xf86SetStrOption(dev->commonOptions, p, NULL); s = xf86SetStrOption(pInfo->options, p, NULL);
if (s != NULL) { if (s != NULL) {
jstkParseButtonOption(s, priv, i, local->name); jstkParseButtonOption(s, priv, i, pInfo->name);
} }
DBG(1, xf86Msg(X_CONFIG, "Button %d mapped to %d\n", i+1, DBG(1, xf86Msg(X_CONFIG, "Button %d mapped to %d\n", i+1,
priv->button[i].mapping)); priv->button[i].mapping));
@ -698,9 +579,9 @@ jstkCorePreInit(InputDriverPtr drv, IDevPtr dev, int flags)
for (i=0; i<MAXAXES; i++) { for (i=0; i<MAXAXES; i++) {
char p[64]; char p[64];
sprintf(p,"MapAxis%d",i+1); sprintf(p,"MapAxis%d",i+1);
s = xf86SetStrOption(dev->commonOptions, p, NULL); s = xf86SetStrOption(pInfo->options, p, NULL);
if (s != NULL) { if (s != NULL) {
jstkParseAxisOption(s, priv, &priv->axis[i], local->name); jstkParseAxisOption(s, priv, &priv->axis[i], pInfo->name);
} }
DBG(1, xf86Msg(X_CONFIG, DBG(1, xf86Msg(X_CONFIG,
"Axis %d type is %d, mapped to %d, amplify=%.3f\n", i+1, "Axis %d type is %d, mapped to %d, amplify=%.3f\n", i+1,
@ -709,23 +590,17 @@ jstkCorePreInit(InputDriverPtr drv, IDevPtr dev, int flags)
priv->axis[i].amplify)); priv->axis[i].amplify));
} }
/* return the LocalDevice */ return Success;
local->flags |= XI86_CONFIGURED;
priv->keyboard_device = jstkKeyboardPreInit(&JSTK_KEYBOARD, dev, flags);
if (priv->keyboard_device) {
priv->keyboard_device->private = priv;
}
return (local);
SetupProc_fail: SetupProc_fail:
if (priv) if (priv) {
xfree(priv); free(priv);
if (local) if (keyboard_device)
local->private = NULL; keyboard_device->private = NULL;
return NULL; }
/* return (local); */ /* Makes X segfault on error */ if (pInfo)
pInfo->private = NULL;
return BadValue;
} }
@ -736,26 +611,39 @@ SetupProc_fail:
* jstkCoreUnInit -- * jstkCoreUnInit --
* *
* Called when a device is unplugged and needs to be removed * Called when a device is unplugged and needs to be removed
* This is a bit tricky, because the keyboard device and the main device
* share the same private data, which must be freed only once, which is done
* by the main device.
*
* *
*************************************************************************** ***************************************************************************
*/ */
static void static void
jstkCoreUnInit(InputDriverPtr drv, jstkCoreUnInit(InputDriverPtr drv,
LocalDevicePtr local, InputInfoPtr pInfo,
int flags) int flags)
{ {
JoystickDevPtr device = (JoystickDevPtr) local->private; if (pInfo->private) {
JoystickDevPtr priv = (JoystickDevPtr) pInfo->private;
if (priv->keyboard_device == pInfo) {
/* this is the keyboard device */
/* Unlink from private data to notify that the
* keyboard device is no more, but don't free */
priv->keyboard_device = NULL;
} else {
/* freeing main device
if keyboard still exists, notify keyboard device that it's
private data is gone */
if (priv->keyboard_device)
priv->keyboard_device->private = NULL;
if (device->keyboard_device != NULL) free (priv);
{ }
xf86DisableDevice(device->keyboard_device->dev, TRUE);
device->keyboard_device = NULL;
} }
xfree (device); pInfo->private = NULL;
local->private = NULL; xf86DeleteInput(pInfo, 0);
xf86DeleteInput(local, 0);
} }
@ -767,11 +655,9 @@ _X_EXPORT InputDriverRec JOYSTICK = {
NULL, NULL,
jstkCorePreInit, jstkCorePreInit,
jstkCoreUnInit, jstkCoreUnInit,
NULL, NULL
0
}; };
/* /*
*************************************************************************** ***************************************************************************
* *
@ -789,7 +675,6 @@ jstkDriverPlug(pointer module,
int *errmin) int *errmin)
{ {
xf86AddInputDriver(&JOYSTICK, module, 0); xf86AddInputDriver(&JOYSTICK, module, 0);
xf86AddInputDriver(&JSTK_KEYBOARD, module, 0);
return module; return module;
} }

View File

@ -55,17 +55,6 @@
#define XI_JOYSTICK "JOYSTICK" #define XI_JOYSTICK "JOYSTICK"
#endif #endif
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 5
typedef struct {
char *rules;
char *model;
char *layout;
char *variant;
char *options;
} XkbRMLVOSet;
#endif
typedef enum _JOYSTICKEVENT { typedef enum _JOYSTICKEVENT {
EVENT_NONE=0, EVENT_NONE=0,
@ -117,7 +106,7 @@ typedef struct _JoystickDevRec {
jstkReadDataProc read_proc; /* Callback for reading data from the backend */ jstkReadDataProc read_proc; /* Callback for reading data from the backend */
void *devicedata; /* Extra platform device dependend data */ void *devicedata; /* Extra platform device dependend data */
char *device; /* Name of the device */ char *device; /* Name of the device */
LocalDevicePtr keyboard_device; /* Slave device for keyboard events */ InputInfoPtr keyboard_device; /* Slave device for keyboard events */
OsTimerPtr timer; /* Timer for axis movement */ OsTimerPtr timer; /* Timer for axis movement */
Bool timerrunning; Bool timerrunning;

View File

@ -27,6 +27,7 @@
#include "config.h" #include "config.h"
#endif #endif
#include <xorg-server.h>
#include <xf86Xinput.h> #include <xf86Xinput.h>
#include <xf86_OSproc.h> #include <xf86_OSproc.h>
#include <math.h> #include <math.h>
@ -55,7 +56,8 @@ jstkAxisTimer(OsTimerPtr timer,
{ {
#define NEXTTIMER 15 #define NEXTTIMER 15
DeviceIntPtr device = (DeviceIntPtr)arg; DeviceIntPtr device = (DeviceIntPtr)arg;
JoystickDevPtr priv = (JoystickDevPtr)XI_PRIVATE(device); InputInfoPtr pInfo = device->public.devicePrivate;
JoystickDevPtr priv = pInfo->private;
int sigstate, i; int sigstate, i;
int nexttimer; int nexttimer;
@ -266,7 +268,7 @@ jstkAxisTimer(OsTimerPtr timer,
*********************************************************************** ***********************************************************************
*/ */
void void
jstkStartAxisTimer(LocalDevicePtr device, int number) jstkStartAxisTimer(InputInfoPtr device, int number)
{ {
int pixel; int pixel;
JoystickDevPtr priv = device->private; JoystickDevPtr priv = device->private;
@ -298,7 +300,7 @@ jstkStartAxisTimer(LocalDevicePtr device, int number)
*/ */
void void
jstkStartButtonAxisTimer(LocalDevicePtr device, int number) jstkStartButtonAxisTimer(InputInfoPtr device, int number)
{ {
int pixel; int pixel;
JoystickDevPtr priv = device->private; JoystickDevPtr priv = device->private;
@ -338,7 +340,7 @@ jstkStartButtonAxisTimer(LocalDevicePtr device, int number)
*********************************************************************** ***********************************************************************
*/ */
void void
jstkHandleAbsoluteAxis(LocalDevicePtr device, int number) jstkHandleAbsoluteAxis(InputInfoPtr device, int number)
{ {
JoystickDevPtr priv = device->private; JoystickDevPtr priv = device->private;
int i,x,y; int i,x,y;
@ -406,7 +408,8 @@ jstkPWMAxisTimer(OsTimerPtr timer,
pointer arg) pointer arg)
{ {
DeviceIntPtr device = (DeviceIntPtr)arg; DeviceIntPtr device = (DeviceIntPtr)arg;
JoystickDevPtr priv = (JoystickDevPtr)XI_PRIVATE(device); InputInfoPtr pInfo = device->public.devicePrivate;
JoystickDevPtr priv = pInfo->private;
int sigstate, i; int sigstate, i;
int nexttimer; int nexttimer;
@ -535,7 +538,7 @@ jstkPWMAxisTimer(OsTimerPtr timer,
*********************************************************************** ***********************************************************************
*/ */
void void
jstkHandlePWMAxis(LocalDevicePtr device, int number) jstkHandlePWMAxis(InputInfoPtr device, int number)
{ {
JoystickDevPtr priv = device->private; JoystickDevPtr priv = device->private;
if (priv->axis[number].timerrunning) return; if (priv->axis[number].timerrunning) return;

View File

@ -24,9 +24,9 @@
#ifndef _XF86JSTK_AXIS_H_INCLUDED_ #ifndef _XF86JSTK_AXIS_H_INCLUDED_
#define _XF86JSTK_AXIS_H_INCLUDED_ #define _XF86JSTK_AXIS_H_INCLUDED_
void jstkStartAxisTimer(LocalDevicePtr device, int number); void jstkStartAxisTimer(InputInfoPtr device, int number);
void jstkStartButtonAxisTimer(LocalDevicePtr device, int number); void jstkStartButtonAxisTimer(InputInfoPtr device, int number);
void jstkHandleAbsoluteAxis(LocalDevicePtr device, int number); void jstkHandleAbsoluteAxis(InputInfoPtr device, int number);
void jstkHandlePWMAxis(LocalDevicePtr device, int number); void jstkHandlePWMAxis(InputInfoPtr device, int number);
#endif #endif

View File

@ -28,6 +28,7 @@
#endif #endif
#include <xorg-server.h>
#include <xf86.h> #include <xf86.h>
#include <xf86Xinput.h> #include <xf86Xinput.h>
#include <X11/extensions/XKBsrv.h> #include <X11/extensions/XKBsrv.h>
@ -38,9 +39,7 @@
#include "jstk.h" #include "jstk.h"
#include "jstk_key.h" #include "jstk_key.h"
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 5
#include <xkbsrv.h> #include <xkbsrv.h>
#endif
#define MIN_KEYCODE 8 #define MIN_KEYCODE 8
#define GLYPHS_PER_KEY 2 #define GLYPHS_PER_KEY 2
@ -51,280 +50,6 @@
#define KanaMask Mod4Mask #define KanaMask Mod4Mask
#define ScrollLockMask Mod5Mask #define ScrollLockMask Mod5Mask
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 5
static KeySym map[] = {
/* 0x00 */ NoSymbol, NoSymbol,
/* 0x01 */ XK_Escape, NoSymbol,
/* 0x02 */ XK_1, XK_exclam,
/* 0x03 */ XK_2, XK_at,
/* 0x04 */ XK_3, XK_numbersign,
/* 0x05 */ XK_4, XK_dollar,
/* 0x06 */ XK_5, XK_percent,
/* 0x07 */ XK_6, XK_asciicircum,
/* 0x08 */ XK_7, XK_ampersand,
/* 0x09 */ XK_8, XK_asterisk,
/* 0x0a */ XK_9, XK_parenleft,
/* 0x0b */ XK_0, XK_parenright,
/* 0x0c */ XK_minus, XK_underscore,
/* 0x0d */ XK_equal, XK_plus,
/* 0x0e */ XK_BackSpace, NoSymbol,
/* 0x0f */ XK_Tab, XK_ISO_Left_Tab,
/* 0x10 */ XK_Q, NoSymbol,
/* 0x11 */ XK_W, NoSymbol,
/* 0x12 */ XK_E, NoSymbol,
/* 0x13 */ XK_R, NoSymbol,
/* 0x14 */ XK_T, NoSymbol,
/* 0x15 */ XK_Y, NoSymbol,
/* 0x16 */ XK_U, NoSymbol,
/* 0x17 */ XK_I, NoSymbol,
/* 0x18 */ XK_O, NoSymbol,
/* 0x19 */ XK_P, NoSymbol,
/* 0x1a */ XK_bracketleft, XK_braceleft,
/* 0x1b */ XK_bracketright,XK_braceright,
/* 0x1c */ XK_Return, NoSymbol,
/* 0x1d */ XK_Control_L, NoSymbol,
/* 0x1e */ XK_A, NoSymbol,
/* 0x1f */ XK_S, NoSymbol,
/* 0x20 */ XK_D, NoSymbol,
/* 0x21 */ XK_F, NoSymbol,
/* 0x22 */ XK_G, NoSymbol,
/* 0x23 */ XK_H, NoSymbol,
/* 0x24 */ XK_J, NoSymbol,
/* 0x25 */ XK_K, NoSymbol,
/* 0x26 */ XK_L, NoSymbol,
/* 0x27 */ XK_semicolon, XK_colon,
/* 0x28 */ XK_quoteright, XK_quotedbl,
/* 0x29 */ XK_quoteleft, XK_asciitilde,
/* 0x2a */ XK_Shift_L, NoSymbol,
/* 0x2b */ XK_backslash, XK_bar,
/* 0x2c */ XK_Z, NoSymbol,
/* 0x2d */ XK_X, NoSymbol,
/* 0x2e */ XK_C, NoSymbol,
/* 0x2f */ XK_V, NoSymbol,
/* 0x30 */ XK_B, NoSymbol,
/* 0x31 */ XK_N, NoSymbol,
/* 0x32 */ XK_M, NoSymbol,
/* 0x33 */ XK_comma, XK_less,
/* 0x34 */ XK_period, XK_greater,
/* 0x35 */ XK_slash, XK_question,
/* 0x36 */ XK_Shift_R, NoSymbol,
/* 0x37 */ XK_KP_Multiply, NoSymbol,
/* 0x38 */ XK_Alt_L, XK_Meta_L,
/* 0x39 */ XK_space, NoSymbol,
/* 0x3a */ XK_Caps_Lock, NoSymbol,
/* 0x3b */ XK_F1, NoSymbol,
/* 0x3c */ XK_F2, NoSymbol,
/* 0x3d */ XK_F3, NoSymbol,
/* 0x3e */ XK_F4, NoSymbol,
/* 0x3f */ XK_F5, NoSymbol,
/* 0x40 */ XK_F6, NoSymbol,
/* 0x41 */ XK_F7, NoSymbol,
/* 0x42 */ XK_F8, NoSymbol,
/* 0x43 */ XK_F9, NoSymbol,
/* 0x44 */ XK_F10, NoSymbol,
/* 0x45 */ XK_Num_Lock, NoSymbol,
/* 0x46 */ XK_Scroll_Lock, NoSymbol,
/* These KP keys should have the KP_7 keysyms in the numlock
* modifer... ? */
/* 0x47 */ XK_KP_Home, XK_KP_7,
/* 0x48 */ XK_KP_Up, XK_KP_8,
/* 0x49 */ XK_KP_Prior, XK_KP_9,
/* 0x4a */ XK_KP_Subtract, NoSymbol,
/* 0x4b */ XK_KP_Left, XK_KP_4,
/* 0x4c */ XK_KP_Begin, XK_KP_5,
/* 0x4d */ XK_KP_Right, XK_KP_6,
/* 0x4e */ XK_KP_Add, NoSymbol,
/* 0x4f */ XK_KP_End, XK_KP_1,
/* 0x50 */ XK_KP_Down, XK_KP_2,
/* 0x51 */ XK_KP_Next, XK_KP_3,
/* 0x52 */ XK_KP_Insert, XK_KP_0,
/* 0x53 */ XK_KP_Delete, XK_KP_Decimal,
/* 0x54 */ NoSymbol, NoSymbol,
/* 0x55 */ XK_F13, NoSymbol,
/* 0x56 */ XK_less, XK_greater,
/* 0x57 */ XK_F11, NoSymbol,
/* 0x58 */ XK_F12, NoSymbol,
/* 0x59 */ XK_F14, NoSymbol,
/* 0x5a */ XK_F15, NoSymbol,
/* 0x5b */ XK_F16, NoSymbol,
/* 0x5c */ XK_F17, NoSymbol,
/* 0x5d */ XK_F18, NoSymbol,
/* 0x5e */ XK_F19, NoSymbol,
/* 0x5f */ XK_F20, NoSymbol,
/* 0x60 */ XK_KP_Enter, NoSymbol,
/* 0x61 */ XK_Control_R, NoSymbol,
/* 0x62 */ XK_KP_Divide, NoSymbol,
/* 0x63 */ XK_Print, XK_Sys_Req,
/* 0x64 */ XK_Alt_R, XK_Meta_R,
/* 0x65 */ NoSymbol, NoSymbol, /* KEY_LINEFEED */
/* 0x66 */ XK_Home, NoSymbol,
/* 0x67 */ XK_Up, NoSymbol,
/* 0x68 */ XK_Prior, NoSymbol,
/* 0x69 */ XK_Left, NoSymbol,
/* 0x6a */ XK_Right, NoSymbol,
/* 0x6b */ XK_End, NoSymbol,
/* 0x6c */ XK_Down, NoSymbol,
/* 0x6d */ XK_Next, NoSymbol,
/* 0x6e */ XK_Insert, NoSymbol,
/* 0x6f */ XK_Delete, NoSymbol,
/* 0x70 */ NoSymbol, NoSymbol, /* KEY_MACRO */
/* 0x71 */ NoSymbol, NoSymbol,
/* 0x72 */ NoSymbol, NoSymbol,
/* 0x73 */ NoSymbol, NoSymbol,
/* 0x74 */ NoSymbol, NoSymbol,
/* 0x75 */ XK_KP_Equal, NoSymbol,
/* 0x76 */ NoSymbol, NoSymbol,
/* 0x77 */ NoSymbol, NoSymbol,
/* 0x78 */ XK_F21, NoSymbol,
/* 0x79 */ XK_F22, NoSymbol,
/* 0x7a */ XK_F23, NoSymbol,
/* 0x7b */ XK_F24, NoSymbol,
/* 0x7c */ XK_KP_Separator, NoSymbol,
/* 0x7d */ XK_Meta_L, NoSymbol,
/* 0x7e */ XK_Meta_R, NoSymbol,
/* 0x7f */ XK_Multi_key, NoSymbol,
/* 0x80 */ NoSymbol, NoSymbol,
/* 0x81 */ NoSymbol, NoSymbol,
/* 0x82 */ NoSymbol, NoSymbol,
/* 0x83 */ NoSymbol, NoSymbol,
/* 0x84 */ NoSymbol, NoSymbol,
/* 0x85 */ NoSymbol, NoSymbol,
/* 0x86 */ NoSymbol, NoSymbol,
/* 0x87 */ NoSymbol, NoSymbol,
/* 0x88 */ NoSymbol, NoSymbol,
/* 0x89 */ NoSymbol, NoSymbol,
/* 0x8a */ NoSymbol, NoSymbol,
/* 0x8b */ NoSymbol, NoSymbol,
/* 0x8c */ NoSymbol, NoSymbol,
/* 0x8d */ NoSymbol, NoSymbol,
/* 0x8e */ NoSymbol, NoSymbol,
/* 0x8f */ NoSymbol, NoSymbol,
/* 0x90 */ NoSymbol, NoSymbol,
/* 0x91 */ NoSymbol, NoSymbol,
/* 0x92 */ NoSymbol, NoSymbol,
/* 0x93 */ NoSymbol, NoSymbol,
/* 0x94 */ NoSymbol, NoSymbol,
/* 0x95 */ NoSymbol, NoSymbol,
/* 0x96 */ NoSymbol, NoSymbol,
/* 0x97 */ NoSymbol, NoSymbol,
/* 0x98 */ NoSymbol, NoSymbol,
/* 0x99 */ NoSymbol, NoSymbol,
/* 0x9a */ NoSymbol, NoSymbol,
/* 0x9b */ NoSymbol, NoSymbol,
/* 0x9c */ NoSymbol, NoSymbol,
/* 0x9d */ NoSymbol, NoSymbol,
/* 0x9e */ NoSymbol, NoSymbol,
/* 0x9f */ NoSymbol, NoSymbol,
/* 0xa0 */ NoSymbol, NoSymbol,
/* 0xa1 */ NoSymbol, NoSymbol,
/* 0xa2 */ NoSymbol, NoSymbol,
/* 0xa3 */ NoSymbol, NoSymbol,
/* 0xa4 */ NoSymbol, NoSymbol,
/* 0xa5 */ NoSymbol, NoSymbol,
/* 0xa6 */ NoSymbol, NoSymbol,
/* 0xa7 */ NoSymbol, NoSymbol,
/* 0xa8 */ NoSymbol, NoSymbol,
/* 0xa9 */ NoSymbol, NoSymbol,
/* 0xaa */ NoSymbol, NoSymbol,
/* 0xab */ NoSymbol, NoSymbol,
/* 0xac */ NoSymbol, NoSymbol,
/* 0xad */ NoSymbol, NoSymbol,
/* 0xae */ NoSymbol, NoSymbol,
/* 0xaf */ NoSymbol, NoSymbol,
/* 0xb0 */ NoSymbol, NoSymbol,
/* 0xb1 */ NoSymbol, NoSymbol,
/* 0xb2 */ NoSymbol, NoSymbol,
/* 0xb3 */ NoSymbol, NoSymbol,
/* 0xb4 */ NoSymbol, NoSymbol,
/* 0xb5 */ NoSymbol, NoSymbol,
/* 0xb6 */ NoSymbol, NoSymbol,
/* 0xb7 */ NoSymbol, NoSymbol,
/* 0xb8 */ NoSymbol, NoSymbol,
/* 0xb9 */ NoSymbol, NoSymbol,
/* 0xba */ NoSymbol, NoSymbol,
/* 0xbb */ NoSymbol, NoSymbol,
/* 0xbc */ NoSymbol, NoSymbol,
/* 0xbd */ NoSymbol, NoSymbol,
/* 0xbe */ NoSymbol, NoSymbol,
/* 0xbf */ NoSymbol, NoSymbol,
/* 0xc0 */ NoSymbol, NoSymbol,
/* 0xc1 */ NoSymbol, NoSymbol,
/* 0xc2 */ NoSymbol, NoSymbol,
/* 0xc3 */ NoSymbol, NoSymbol,
/* 0xc4 */ NoSymbol, NoSymbol,
/* 0xc5 */ NoSymbol, NoSymbol,
/* 0xc6 */ NoSymbol, NoSymbol,
/* 0xc7 */ NoSymbol, NoSymbol,
/* 0xc8 */ NoSymbol, NoSymbol,
/* 0xc9 */ NoSymbol, NoSymbol,
/* 0xca */ NoSymbol, NoSymbol,
/* 0xcb */ NoSymbol, NoSymbol,
/* 0xcc */ NoSymbol, NoSymbol,
/* 0xcd */ NoSymbol, NoSymbol,
/* 0xce */ NoSymbol, NoSymbol,
/* 0xcf */ NoSymbol, NoSymbol,
/* 0xd0 */ NoSymbol, NoSymbol,
/* 0xd1 */ NoSymbol, NoSymbol,
/* 0xd2 */ NoSymbol, NoSymbol,
/* 0xd3 */ NoSymbol, NoSymbol,
/* 0xd4 */ NoSymbol, NoSymbol,
/* 0xd5 */ NoSymbol, NoSymbol,
/* 0xd6 */ NoSymbol, NoSymbol,
/* 0xd7 */ NoSymbol, NoSymbol,
/* 0xd8 */ NoSymbol, NoSymbol,
/* 0xd9 */ NoSymbol, NoSymbol,
/* 0xda */ NoSymbol, NoSymbol,
/* 0xdb */ NoSymbol, NoSymbol,
/* 0xdc */ NoSymbol, NoSymbol,
/* 0xdd */ NoSymbol, NoSymbol,
/* 0xde */ NoSymbol, NoSymbol,
/* 0xdf */ NoSymbol, NoSymbol,
/* 0xe0 */ NoSymbol, NoSymbol,
/* 0xe1 */ NoSymbol, NoSymbol,
/* 0xe2 */ NoSymbol, NoSymbol,
/* 0xe3 */ NoSymbol, NoSymbol,
/* 0xe4 */ NoSymbol, NoSymbol,
/* 0xe5 */ NoSymbol, NoSymbol,
/* 0xe6 */ NoSymbol, NoSymbol,
/* 0xe7 */ NoSymbol, NoSymbol,
/* 0xe8 */ NoSymbol, NoSymbol,
/* 0xe9 */ NoSymbol, NoSymbol,
/* 0xea */ NoSymbol, NoSymbol,
/* 0xeb */ NoSymbol, NoSymbol,
/* 0xec */ NoSymbol, NoSymbol,
/* 0xed */ NoSymbol, NoSymbol,
/* 0xee */ NoSymbol, NoSymbol,
/* 0xef */ NoSymbol, NoSymbol,
/* 0xf0 */ NoSymbol, NoSymbol,
/* 0xf1 */ NoSymbol, NoSymbol,
/* 0xf2 */ NoSymbol, NoSymbol,
/* 0xf3 */ NoSymbol, NoSymbol,
/* 0xf4 */ NoSymbol, NoSymbol,
/* 0xf5 */ NoSymbol, NoSymbol,
/* 0xf6 */ NoSymbol, NoSymbol,
/* 0xf7 */ NoSymbol, NoSymbol,
};
static struct { KeySym keysym; CARD8 mask; } modifiers[] = {
{ XK_Shift_L, ShiftMask },
{ XK_Shift_R, ShiftMask },
{ XK_Control_L, ControlMask },
{ XK_Control_R, ControlMask },
{ XK_Caps_Lock, LockMask },
{ XK_Alt_L, AltMask },
{ XK_Alt_R, AltMask },
{ XK_Meta_L, Mod4Mask },
{ XK_Meta_R, Mod4Mask },
{ XK_Num_Lock, NumLockMask },
{ XK_Scroll_Lock, ScrollLockMask },
{ XK_Mode_switch, AltLangMask }
};
#endif
static void static void
jstkKbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl) jstkKbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl)
{ {
@ -346,46 +71,11 @@ jstkInitKeys(DeviceIntPtr pJstk, JoystickDevPtr priv)
XkbSrvInfoPtr xkbi; XkbSrvInfoPtr xkbi;
XkbControlsPtr ctrls; XkbControlsPtr ctrls;
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 5
{
if (!InitKeyboardDeviceStruct(pJstk, &priv->rmlvo, NULL, jstkKbdCtrl)) if (!InitKeyboardDeviceStruct(pJstk, &priv->rmlvo, NULL, jstkKbdCtrl))
{ {
ErrorF("unable to init keyboard device\n"); ErrorF("unable to init keyboard device\n");
return !Success; return !Success;
} }
}
#else
KeySymsRec keySyms;
CARD8 modMap[MAP_LENGTH];
KeySym sym;
int i, j;
XkbComponentNamesRec xkbnames;
memset(modMap, 0, sizeof(modMap));
memset(&xkbnames, 0, sizeof(xkbnames));
keySyms.map = map;
keySyms.mapWidth = GLYPHS_PER_KEY;
keySyms.minKeyCode = MIN_KEYCODE;
keySyms.maxKeyCode = MIN_KEYCODE + (sizeof(map) / sizeof(map[0])) / GLYPHS_PER_KEY - 1;
for (i = 0; i < (sizeof(map) / sizeof(map[0])) / GLYPHS_PER_KEY; i++) {
sym = map[i * GLYPHS_PER_KEY];
for (j = 0; j < sizeof(modifiers)/sizeof(modifiers[0]); j++) {
if (modifiers[j].keysym == sym)
modMap[i + MIN_KEYCODE] = modifiers[j].mask;
}
}
ErrorF("%s, %s, %s, %s, %s\n", priv->rmlvo.rules, priv->rmlvo.model, priv->rmlvo.layout, priv->rmlvo.variant, priv->rmlvo.options);
XkbSetRulesDflts(priv->rmlvo.rules, priv->rmlvo.model,
priv->rmlvo.layout, priv->rmlvo.variant,
priv->rmlvo.options);
if (!XkbInitKeyboardDeviceStruct(pJstk, &xkbnames,
&keySyms, modMap, NULL,
jstkKbdCtrl))
return !Success;
#endif
/* Set Autorepeat and Delay */ /* Set Autorepeat and Delay */
if ((priv->repeat_delay || priv->repeat_interval) && if ((priv->repeat_delay || priv->repeat_interval) &&
@ -417,7 +107,7 @@ jstkInitKeys(DeviceIntPtr pJstk, JoystickDevPtr priv)
*************************************************************************** ***************************************************************************
*/ */
void void
jstkGenerateKeys(LocalDevicePtr device, KEYSCANCODES keys, char pressed) jstkGenerateKeys(InputInfoPtr device, KEYSCANCODES keys, char pressed)
{ {
int i; int i;
unsigned int k; unsigned int k;
@ -447,11 +137,12 @@ jstkGenerateKeys(LocalDevicePtr device, KEYSCANCODES keys, char pressed)
* *
*************************************************************************** ***************************************************************************
*/ */
static Bool Bool
jstkKeyboardDeviceControlProc(DeviceIntPtr dev, jstkKeyboardDeviceControlProc(DeviceIntPtr dev,
int what) int what)
{ {
JoystickDevPtr priv = (JoystickDevPtr)XI_PRIVATE(dev); InputInfoPtr pInfo = dev->public.devicePrivate;
JoystickDevPtr priv = pInfo->private;
if (!priv) { if (!priv) {
DBG(2, ErrorF("jstkKeyboardDeviceControlProc: priv == NULL\n")); DBG(2, ErrorF("jstkKeyboardDeviceControlProc: priv == NULL\n"));
return !Success; return !Success;
@ -489,65 +180,116 @@ jstkKeyboardDeviceControlProc(DeviceIntPtr dev,
* *
* jstkKeyboardPreInit -- * jstkKeyboardPreInit --
* *
* Called manually to create a keyboard device for the joystick * See comment in jstkCorePreInit() for details.
* *
*************************************************************************** ***************************************************************************
*/ */
InputInfoPtr
jstkKeyboardPreInit(InputDriverPtr drv, IDevPtr _dev, int flags) int jstkKeyboardPreInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags)
{ {
LocalDevicePtr local = NULL; JoystickDevPtr priv = NULL;
IDevPtr dev = NULL; char *s;
pInfo->private = priv = calloc(1, sizeof(JoystickDevRec));
if (!priv)
return BadAlloc;
pInfo->device_control = jstkKeyboardDeviceControlProc;
pInfo->read_input = NULL;
pInfo->control_proc = NULL;
pInfo->switch_mode = NULL;
pInfo->fd = -1;
pInfo->type_name = XI_JOYSTICK;
/* parse keyboard-related options */
priv->repeat_delay = 0;
priv->repeat_interval = 0;
/* Parse option for autorepeat */
if ((s = xf86SetStrOption(pInfo->options, "AutoRepeat", NULL))) {
int delay, rate;
if (sscanf(s, "%d %d", &delay, &rate) != 2) {
xf86Msg(X_ERROR, "%s: \"%s\" is not a valid AutoRepeat value",
pInfo->name, s);
} else {
priv->repeat_delay = delay;
if (rate != 0)
priv->repeat_interval = 1000/rate;
else priv->repeat_interval = 0;
DBG(1, xf86Msg(X_CONFIG, "Autorepeat set to delay=%d, interval=%d\n",
priv->repeat_delay,priv->repeat_interval));
}
free(s);
}
priv->rmlvo.rules = xf86SetStrOption(pInfo->options, "xkb_rules", NULL);
if (!priv->rmlvo.rules)
priv->rmlvo.rules = xf86SetStrOption(pInfo->options, "XkbRules", "evdev");
priv->rmlvo.model = xf86SetStrOption(pInfo->options, "xkb_model", NULL);
if (!priv->rmlvo.model)
priv->rmlvo.model = xf86SetStrOption(pInfo->options, "XkbModel", "evdev");
priv->rmlvo.layout = xf86SetStrOption(pInfo->options, "xkb_layout", NULL);
if (!priv->rmlvo.layout)
priv->rmlvo.layout = xf86SetStrOption(pInfo->options, "XkbLayout", "us");
priv->rmlvo.variant = xf86SetStrOption(pInfo->options, "xkb_variant", NULL);
if (!priv->rmlvo.variant)
priv->rmlvo.variant = xf86SetStrOption(pInfo->options, "XkbVariant", "");
priv->rmlvo.options = xf86SetStrOption(pInfo->options, "xkb_options", NULL);
if (!priv->rmlvo.options)
priv->rmlvo.options = xf86SetStrOption(pInfo->options, "XkbOptions", "");
return Success;
}
InputInfoPtr
jstkKeyboardHotplug(InputInfoPtr pInfo, int flags)
{
int rc;
char name[512] = {0}; char name[512] = {0};
InputAttributes *attrs = NULL;
InputOption *options;
InputOption *iopts = NULL, *tmp;
DeviceIntPtr dev;
local = xf86AllocateInput(drv, 0); /* duplicate option list, append to name */
if (!local) { options = xf86OptionListDuplicate(pInfo->options);
goto SetupProc_fail; strcpy(name, pInfo->name);
}
dev = xcalloc(sizeof(IDevRec), 1);
strcpy(name, _dev->identifier);
strcat(name, " (keys)"); strcat(name, " (keys)");
dev->identifier = xstrdup(name); options = xf86ReplaceStrOption(options, "Name", name);
dev->driver = xstrdup(_dev->driver); options = xf86ReplaceStrOption(options, "_source", "_driver/joystick");
dev->commonOptions = (pointer)xf86optionListDup(_dev->commonOptions);
dev->extraOptions = (pointer)xf86optionListDup(_dev->extraOptions);
local->name = dev->identifier; while(options)
local->flags = XI86_KEYBOARD_CAPABLE; {
local->device_control = jstkKeyboardDeviceControlProc; tmp = calloc(1, sizeof(InputOption));
local->read_input = NULL;
local->close_proc = NULL;
local->control_proc = NULL;
local->switch_mode = NULL;
local->conversion_proc = NULL;
local->fd = -1;
local->dev = NULL;
local->private = NULL;
local->type_name = XI_JOYSTICK;
local->history_size = 0;
local->always_core_feedback = 0;
local->conf_idev = dev;
xf86CollectInputOptions(local, NULL, NULL); tmp->key = xf86OptionName(options);
xf86OptionListReport(local->options); tmp->value = xf86OptionValue(options);
xf86ProcessCommonOptions(local, local->options); tmp->next = iopts;
iopts = tmp;
options = xf86NextOption(options);
/* return the LocalDevice */
local->flags |= XI86_CONFIGURED;
return (local);
SetupProc_fail:
if (local)
local->private = NULL;
if (dev) {
if (dev->identifier) xfree(dev->identifier);
if (dev->driver) xfree(dev->driver);
xfree(dev);
} }
return NULL;
/* duplicate attribute list */
attrs = DuplicateInputAttributes(pInfo->attrs);
rc = NewInputDeviceRequest(iopts, attrs, &dev);
while(iopts)
{
tmp = iopts->next;
free(iopts->key);
free(iopts->value);
free(iopts);
iopts = tmp;
}
FreeInputAttributes(attrs);
return (rc == Success) ? dev->public.devicePrivate : NULL;
} }
@ -562,15 +304,15 @@ SetupProc_fail:
*/ */
void void
jstkKeyboardUnInit(InputDriverPtr drv, jstkKeyboardUnInit(InputDriverPtr drv,
LocalDevicePtr local, InputInfoPtr pInfo,
int flags) int flags)
{ {
JoystickDevPtr device = (JoystickDevPtr) local->private; JoystickDevPtr device = (JoystickDevPtr) pInfo->private;
DBG(2, ErrorF("jstkKeyboardUnInit.\n")); DBG(2, ErrorF("jstkKeyboardUnInit.\n"));
device->keyboard_device = NULL; device->keyboard_device = NULL;
local->private = NULL; pInfo->private = NULL;
xf86DeleteInput(local, 0); xf86DeleteInput(pInfo, 0);
} }

View File

@ -25,9 +25,10 @@
#ifndef __JSTK_KEY_H_INCLUDED__ #ifndef __JSTK_KEY_H_INCLUDED__
#define __JSTK_KEY_H_INCLUDED__ #define __JSTK_KEY_H_INCLUDED__
void jstkGenerateKeys(LocalDevicePtr device, KEYSCANCODES keys, char pressed); void jstkGenerateKeys(InputInfoPtr device, KEYSCANCODES keys, char pressed);
InputInfoPtr jstkKeyboardPreInit(InputDriverPtr drv, IDevPtr dev, int flags);
void jstkKeyboardUnInit(InputDriverPtr drv, LocalDevicePtr local, int flags);
int jstkKeyboardPreInit(InputDriverPtr pInfo, InputInfoPtr dev, int flags);
void jstkKeyboardUnInit(InputDriverPtr drv, InputInfoPtr pInfo, int flags);
Bool jstkKeyboardDeviceControlProc(DeviceIntPtr dev, int what);
InputInfoPtr jstkKeyboardHotplug(InputInfoPtr dev, int flags);
#endif #endif

View File

@ -26,6 +26,7 @@
#include "config.h" #include "config.h"
#endif #endif
#include <xorg-server.h>
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
@ -154,7 +155,7 @@ jstkParseButtonOption(const char* org,
xf86Msg(X_WARNING, "%s: error parsing button parameter.\n", xf86Msg(X_WARNING, "%s: error parsing button parameter.\n",
name); name);
} }
xfree(param); free(param);
} }
@ -292,5 +293,5 @@ jstkParseAxisOption(const char* org,
}else xf86Msg(X_WARNING, "%s: error parsing deadzone.\n", }else xf86Msg(X_WARNING, "%s: error parsing deadzone.\n",
name); name);
} }
xfree(param); free(param);
} }

View File

@ -25,12 +25,9 @@
#include "config.h" #include "config.h"
#endif #endif
#include <xorg-server.h>
#include <xf86Module.h> #include <xf86Module.h>
#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) >= 3
#include <misc.h> #include <misc.h>
#include <xf86.h> #include <xf86.h>
#include <X11/Xatom.h> #include <X11/Xatom.h>
@ -456,5 +453,3 @@ jstkInitProperties(DeviceIntPtr pJstk, JoystickDevPtr priv)
return TRUE; return TRUE;
} }
#endif