summaryrefslogtreecommitdiffstats
path: root/abs/core-testing/xf86-input-keyboard/new-server.patch
diff options
context:
space:
mode:
authorJames Meyer <James.meyer@operamail.com>2008-10-02 03:19:12 (GMT)
committerJames Meyer <James.meyer@operamail.com>2008-10-02 03:19:12 (GMT)
commit0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a (patch)
treec0aa2c0b53c317be87eacfcb77b63f53f1f415e7 /abs/core-testing/xf86-input-keyboard/new-server.patch
downloadlinhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.zip
linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.tar.gz
linhes_pkgbuild-0e2532d4e8f4eed5e047f1db54d5c03ba849ec0a.tar.bz2
initial import
Diffstat (limited to 'abs/core-testing/xf86-input-keyboard/new-server.patch')
-rw-r--r--abs/core-testing/xf86-input-keyboard/new-server.patch5087
1 files changed, 5087 insertions, 0 deletions
diff --git a/abs/core-testing/xf86-input-keyboard/new-server.patch b/abs/core-testing/xf86-input-keyboard/new-server.patch
new file mode 100644
index 0000000..0d50466
--- /dev/null
+++ b/abs/core-testing/xf86-input-keyboard/new-server.patch
@@ -0,0 +1,5087 @@
+diff -ruN xf86-input-keyboard-1.2.0/Makefile.in xf86-input-keyboard/Makefile.in
+--- xf86-input-keyboard-1.2.0/Makefile.in 2006-11-01 22:19:32.000000000 +0000
++++ xf86-input-keyboard/Makefile.in 2007-09-03 10:36:18.000000000 +0000
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.10 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This Makefile.in 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.
+@@ -33,15 +33,11 @@
+ # ADAM JACKSON BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
+ # IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
+ # CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+-top_builddir = .
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+ install_sh_PROGRAM = $(install_sh) -c
+ install_sh_SCRIPT = $(install_sh) -c
+@@ -55,17 +51,17 @@
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
++subdir = .
+ DIST_COMMON = $(am__configure_deps) $(srcdir)/Makefile.am \
+ $(srcdir)/Makefile.in $(srcdir)/config.h.in \
+ $(top_srcdir)/configure COPYING ChangeLog config.guess \
+ config.sub depcomp install-sh ltmain.sh missing
+-subdir = .
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+ am__aclocal_m4_deps = $(top_srcdir)/configure.ac
+ am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \
+ $(ACLOCAL_M4)
+ am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \
+- configure.lineno configure.status.lineno
++ configure.lineno config.status.lineno
+ mkinstalldirs = $(install_sh) -d
+ CONFIG_HEADER = config.h
+ CONFIG_CLEAN_FILES =
+@@ -73,10 +69,13 @@
+ DIST_SOURCES =
+ RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
+ html-recursive info-recursive install-data-recursive \
+- install-exec-recursive install-info-recursive \
+- install-recursive installcheck-recursive installdirs-recursive \
+- pdf-recursive ps-recursive uninstall-info-recursive \
+- uninstall-recursive
++ install-dvi-recursive install-exec-recursive \
++ install-html-recursive install-info-recursive \
++ install-pdf-recursive install-ps-recursive install-recursive \
++ installcheck-recursive installdirs-recursive pdf-recursive \
++ ps-recursive uninstall-recursive
++RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \
++ distclean-recursive maintainer-clean-recursive
+ ETAGS = etags
+ CTAGS = ctags
+ DIST_SUBDIRS = $(SUBDIRS)
+@@ -94,8 +93,6 @@
+ ACLOCAL = @ACLOCAL@
+ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
+ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
+-AMDEP_FALSE = @AMDEP_FALSE@
+-AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+ APP_MAN_DIR = @APP_MAN_DIR@
+ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
+@@ -104,8 +101,6 @@
+ AUTOHEADER = @AUTOHEADER@
+ AUTOMAKE = @AUTOMAKE@
+ AWK = @AWK@
+-BSD_FALSE = @BSD_FALSE@
+-BSD_TRUE = @BSD_TRUE@
+ CC = @CC@
+ CCDEPMODE = @CCDEPMODE@
+ CFLAGS = @CFLAGS@
+@@ -132,8 +127,7 @@
+ FILE_MAN_DIR = @FILE_MAN_DIR@
+ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
+ GREP = @GREP@
+-HURD_FALSE = @HURD_FALSE@
+-HURD_TRUE = @HURD_TRUE@
++INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -144,16 +138,13 @@
+ LIBTOOL = @LIBTOOL@
+ LIB_MAN_DIR = @LIB_MAN_DIR@
+ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
+-LINUX_FALSE = @LINUX_FALSE@
+-LINUX_TRUE = @LINUX_TRUE@
+ LN_S = @LN_S@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAINT = @MAINT@
+-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+ MAKEINFO = @MAKEINFO@
+ MISC_MAN_DIR = @MISC_MAN_DIR@
+ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
++MKDIR_P = @MKDIR_P@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -164,23 +155,20 @@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
+ PKG_CONFIG = @PKG_CONFIG@
+ RANLIB = @RANLIB@
+-SCO_FALSE = @SCO_FALSE@
+-SCO_TRUE = @SCO_TRUE@
++SED = @SED@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+-SOLARIS_FALSE = @SOLARIS_FALSE@
+-SOLARIS_TRUE = @SOLARIS_TRUE@
+ STRIP = @STRIP@
+ VERSION = @VERSION@
+ XORG_CFLAGS = @XORG_CFLAGS@
+ XORG_LIBS = @XORG_LIBS@
++abs_builddir = @abs_builddir@
++abs_srcdir = @abs_srcdir@
++abs_top_builddir = @abs_top_builddir@
++abs_top_srcdir = @abs_top_srcdir@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
+-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+@@ -192,6 +180,7 @@
+ build_cpu = @build_cpu@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
++builddir = @builddir@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
+@@ -220,8 +209,11 @@
+ psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
++srcdir = @srcdir@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
++top_builddir = @top_builddir@
++top_srcdir = @top_srcdir@
+ AUTOMAKE_OPTIONS = foreign
+ SUBDIRS = src man
+ all: config.h
+@@ -265,7 +257,7 @@
+ config.h: stamp-h1
+ @if test ! -f $@; then \
+ rm -f stamp-h1; \
+- $(MAKE) stamp-h1; \
++ $(MAKE) $(AM_MAKEFLAGS) stamp-h1; \
+ else :; fi
+
+ stamp-h1: $(srcdir)/config.h.in $(top_builddir)/config.status
+@@ -287,7 +279,6 @@
+
+ distclean-libtool:
+ -rm -f libtool
+-uninstall-info-am:
+
+ # This directory's subdirectories are mostly independent; you can cd
+ # into them and run `make' without going through this Makefile.
+@@ -320,8 +311,7 @@
+ $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
+ fi; test -z "$$fail"
+
+-mostlyclean-recursive clean-recursive distclean-recursive \
+-maintainer-clean-recursive:
++$(RECURSIVE_CLEAN_TARGETS):
+ @failcom='exit 1'; \
+ for f in x $$MAKEFLAGS; do \
+ case $$f in \
+@@ -423,23 +413,22 @@
+
+ distdir: $(DISTFILES)
+ $(am__remove_distdir)
+- mkdir $(distdir)
+- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+- list='$(DISTFILES)'; for file in $$list; do \
+- case $$file in \
+- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+- esac; \
++ test -d $(distdir) || mkdir $(distdir)
++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
++ list='$(DISTFILES)'; \
++ dist_files=`for file in $$list; do echo $$file; done | \
++ sed -e "s|^$$srcdirstrip/||;t" \
++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
++ case $$dist_files in \
++ */*) $(MKDIR_P) `echo "$$dist_files" | \
++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
++ sort -u` ;; \
++ esac; \
++ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+- dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
+- else \
+- dir=''; \
+- fi; \
+ if test -d $$d/$$file; then \
++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+@@ -453,7 +442,7 @@
+ list='$(DIST_SUBDIRS)'; for subdir in $$list; do \
+ if test "$$subdir" = .; then :; else \
+ test -d "$(distdir)/$$subdir" \
+- || $(mkdir_p) "$(distdir)/$$subdir" \
++ || $(MKDIR_P) "$(distdir)/$$subdir" \
+ || exit 1; \
+ distdir=`$(am__cd) $(distdir) && pwd`; \
+ top_distdir=`$(am__cd) $(top_distdir) && pwd`; \
+@@ -461,6 +450,8 @@
+ $(MAKE) $(AM_MAKEFLAGS) \
+ top_distdir="$$top_distdir" \
+ distdir="$$distdir/$$subdir" \
++ am__remove_distdir=: \
++ am__skip_length_check=: \
+ distdir) \
+ || exit 1; \
+ fi; \
+@@ -468,7 +459,7 @@
+ -find $(distdir) -type d ! -perm -777 -exec chmod a+rwx {} \; -o \
+ ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \
+ ! -type d ! -perm -400 -exec chmod a+r {} \; -o \
+- ! -type d ! -perm -444 -exec $(SHELL) $(install_sh) -c -m a+r {} {} \; \
++ ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \
+ || chmod -R a+r $(distdir)
+ dist-gzip: distdir
+ tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz
+@@ -543,7 +534,7 @@
+ $(am__remove_distdir)
+ @(echo "$(distdir) archives ready for distribution: "; \
+ list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \
+- sed -e '1{h;s/./=/g;p;x;}' -e '$${p;x;}'
++ sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x'
+ distuninstallcheck:
+ @cd $(distuninstallcheck_dir) \
+ && test `$(distuninstallcheck_listfiles) | wc -l` -le 1 \
+@@ -613,12 +604,20 @@
+
+ install-data-am:
+
++install-dvi: install-dvi-recursive
++
+ install-exec-am:
+
++install-html: install-html-recursive
++
+ install-info: install-info-recursive
+
+ install-man:
+
++install-pdf: install-pdf-recursive
++
++install-ps: install-ps-recursive
++
+ installcheck-am:
+
+ maintainer-clean: maintainer-clean-recursive
+@@ -639,24 +638,26 @@
+
+ ps-am:
+
+-uninstall-am: uninstall-info-am
++uninstall-am:
+
+-uninstall-info: uninstall-info-recursive
++.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) install-am \
++ install-strip
+
+-.PHONY: $(RECURSIVE_TARGETS) CTAGS GTAGS all all-am am--refresh check \
+- check-am clean clean-generic clean-libtool clean-recursive \
+- ctags ctags-recursive dist dist-all dist-bzip2 dist-gzip \
+- dist-shar dist-tarZ dist-zip distcheck distclean \
++.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
++ all all-am am--refresh check check-am clean clean-generic \
++ clean-libtool ctags ctags-recursive dist dist-all dist-bzip2 \
++ dist-gzip dist-shar dist-tarZ dist-zip distcheck distclean \
+ distclean-generic distclean-hdr distclean-libtool \
+- distclean-recursive distclean-tags distcleancheck distdir \
+- distuninstallcheck dvi dvi-am html html-am info info-am \
+- install install-am install-data install-data-am install-exec \
+- install-exec-am install-info install-info-am install-man \
+- install-strip installcheck installcheck-am installdirs \
+- installdirs-am maintainer-clean maintainer-clean-generic \
+- maintainer-clean-recursive mostlyclean mostlyclean-generic \
+- mostlyclean-libtool mostlyclean-recursive pdf pdf-am ps ps-am \
+- tags tags-recursive uninstall uninstall-am uninstall-info-am
++ distclean-tags distcleancheck distdir distuninstallcheck dvi \
++ dvi-am html html-am info info-am install install-am \
++ install-data install-data-am install-dvi install-dvi-am \
++ install-exec install-exec-am install-html install-html-am \
++ install-info install-info-am install-man install-pdf \
++ install-pdf-am install-ps install-ps-am install-strip \
++ installcheck installcheck-am installdirs installdirs-am \
++ maintainer-clean maintainer-clean-generic mostlyclean \
++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++ tags tags-recursive uninstall uninstall-am
+
+ # 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.
+diff -ruN xf86-input-keyboard-1.2.0/configure.ac xf86-input-keyboard/configure.ac
+--- xf86-input-keyboard-1.2.0/configure.ac 2006-11-01 22:16:54.000000000 +0000
++++ xf86-input-keyboard/configure.ac 2007-09-03 10:34:00.000000000 +0000
+@@ -22,7 +22,7 @@
+
+ AC_PREREQ(2.57)
+ AC_INIT([xf86-input-keyboard],
+- 1.2.0,
++ 1.2.1,
+ [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
+ xf86-input-keyboard)
+
+diff -ruN xf86-input-keyboard-1.2.0/depcomp xf86-input-keyboard/depcomp
+--- xf86-input-keyboard-1.2.0/depcomp 2006-11-01 22:19:31.000000000 +0000
++++ xf86-input-keyboard/depcomp 2007-09-03 10:36:18.000000000 +0000
+@@ -1,9 +1,10 @@
+ #! /bin/sh
+ # depcomp - compile a program generating dependencies as side-effects
+
+-scriptversion=2005-07-09.11
++scriptversion=2006-10-15.18
+
+-# Copyright (C) 1999, 2000, 2003, 2004, 2005 Free Software Foundation, Inc.
++# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2006 Free Software
++# Foundation, Inc.
+
+ # This program is free software; you can redistribute it and/or modify
+ # it under the terms of the GNU General Public License as published by
+@@ -91,7 +92,20 @@
+ ## gcc 3 implements dependency tracking that does exactly what
+ ## we want. Yay! Note: for some reason libtool 1.4 doesn't like
+ ## it if -MD -MP comes after the -MF stuff. Hmm.
+- "$@" -MT "$object" -MD -MP -MF "$tmpdepfile"
++## Unfortunately, FreeBSD c89 acceptance of flags depends upon
++## the command line argument order; so add the flags where they
++## appear in depend2.am. Note that the slowdown incurred here
++## affects only configure: in makefiles, %FASTDEP% shortcuts this.
++ for arg
++ do
++ case $arg in
++ -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;;
++ *) set fnord "$@" "$arg" ;;
++ esac
++ shift # fnord
++ shift # $arg
++ done
++ "$@"
+ stat=$?
+ if test $stat -eq 0; then :
+ else
+@@ -276,6 +290,46 @@
+ rm -f "$tmpdepfile"
+ ;;
+
++hp2)
++ # The "hp" stanza above does not work with aCC (C++) and HP's ia64
++ # compilers, which have integrated preprocessors. The correct option
++ # to use with these is +Maked; it writes dependencies to a file named
++ # 'foo.d', which lands next to the object file, wherever that
++ # happens to be.
++ # Much of this is similar to the tru64 case; see comments there.
++ dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
++ test "x$dir" = "x$object" && dir=
++ base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
++ if test "$libtool" = yes; then
++ tmpdepfile1=$dir$base.d
++ tmpdepfile2=$dir.libs/$base.d
++ "$@" -Wc,+Maked
++ else
++ tmpdepfile1=$dir$base.d
++ tmpdepfile2=$dir$base.d
++ "$@" +Maked
++ fi
++ stat=$?
++ if test $stat -eq 0; then :
++ else
++ rm -f "$tmpdepfile1" "$tmpdepfile2"
++ exit $stat
++ fi
++
++ for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2"
++ do
++ test -f "$tmpdepfile" && break
++ done
++ if test -f "$tmpdepfile"; then
++ sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
++ # Add `dependent.h:' lines.
++ sed -ne '2,${; s/^ *//; s/ \\*$//; s/$/:/; p;}' "$tmpdepfile" >> "$depfile"
++ else
++ echo "#dummy" > "$depfile"
++ fi
++ rm -f "$tmpdepfile" "$tmpdepfile2"
++ ;;
++
+ tru64)
+ # The Tru64 compiler uses -MD to generate dependencies as a side
+ # effect. `cc -MD -o foo.o ...' puts the dependencies into `foo.o.d'.
+@@ -288,13 +342,13 @@
+
+ if test "$libtool" = yes; then
+ # With Tru64 cc, shared objects can also be used to make a
+- # static library. This mecanism is used in libtool 1.4 series to
++ # static library. This mechanism is used in libtool 1.4 series to
+ # handle both shared and static libraries in a single compilation.
+ # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
+ #
+ # With libtool 1.5 this exception was removed, and libtool now
+ # generates 2 separate objects for the 2 libraries. These two
+- # compilations output dependencies in in $dir.libs/$base.o.d and
++ # compilations output dependencies in $dir.libs/$base.o.d and
+ # in $dir$base.o.d. We have to check for both files, because
+ # one of the two compilations can be disabled. We should prefer
+ # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+diff -ruN xf86-input-keyboard-1.2.0/install-sh xf86-input-keyboard/install-sh
+--- xf86-input-keyboard-1.2.0/install-sh 2006-11-01 22:19:31.000000000 +0000
++++ xf86-input-keyboard/install-sh 2007-09-03 10:36:18.000000000 +0000
+@@ -1,7 +1,7 @@
+ #!/bin/sh
+ # install - install a program, script, or datafile
+
+-scriptversion=2005-05-14.22
++scriptversion=2006-10-14.15
+
+ # This originates from X11R5 (mit/util/scripts/install.sh), which was
+ # later released in X11R6 (xc/config/util/install.sh) with the
+@@ -39,15 +39,24 @@
+ # when there is no Makefile.
+ #
+ # This script is compatible with the BSD install script, but was written
+-# from scratch. It can only install one file at a time, a restriction
+-# shared with many OS's install programs.
++# from scratch.
++
++nl='
++'
++IFS=" "" $nl"
+
+ # set DOITPROG to echo to test this script
+
+ # Don't use :- since 4.3BSD and earlier shells don't like it.
+ doit="${DOITPROG-}"
++if test -z "$doit"; then
++ doit_exec=exec
++else
++ doit_exec=$doit
++fi
+
+-# put in absolute paths if you don't have them in your path; or use env. vars.
++# Put in absolute file names if you don't have them in your path;
++# or use environment vars.
+
+ mvprog="${MVPROG-mv}"
+ cpprog="${CPPROG-cp}"
+@@ -58,7 +67,13 @@
+ rmprog="${RMPROG-rm}"
+ mkdirprog="${MKDIRPROG-mkdir}"
+
+-chmodcmd="$chmodprog 0755"
++posix_glob=
++posix_mkdir=
++
++# Desired mode of installed file.
++mode=0755
++
++chmodcmd=$chmodprog
+ chowncmd=
+ chgrpcmd=
+ stripcmd=
+@@ -95,7 +110,7 @@
+ CHGRPPROG CHMODPROG CHOWNPROG CPPROG MKDIRPROG MVPROG RMPROG STRIPPROG
+ "
+
+-while test -n "$1"; do
++while test $# -ne 0; do
+ case $1 in
+ -c) shift
+ continue;;
+@@ -111,9 +126,15 @@
+
+ --help) echo "$usage"; exit $?;;
+
+- -m) chmodcmd="$chmodprog $2"
++ -m) mode=$2
+ shift
+ shift
++ case $mode in
++ *' '* | *' '* | *'
++'* | *'*'* | *'?'* | *'['*)
++ echo "$0: invalid mode: $mode" >&2
++ exit 1;;
++ esac
+ continue;;
+
+ -o) chowncmd="$chownprog $2"
+@@ -136,25 +157,33 @@
+
+ --version) echo "$0 $scriptversion"; exit $?;;
+
+- *) # When -d is used, all remaining arguments are directories to create.
+- # When -t is used, the destination is already specified.
+- test -n "$dir_arg$dstarg" && break
+- # Otherwise, the last argument is the destination. Remove it from $@.
+- for arg
+- do
+- if test -n "$dstarg"; then
+- # $@ is not empty: it contains at least $arg.
+- set fnord "$@" "$dstarg"
+- shift # fnord
+- fi
+- shift # arg
+- dstarg=$arg
+- done
++ --) shift
+ break;;
++
++ -*) echo "$0: invalid option: $1" >&2
++ exit 1;;
++
++ *) break;;
+ esac
+ done
+
+-if test -z "$1"; then
++if test $# -ne 0 && test -z "$dir_arg$dstarg"; then
++ # When -d is used, all remaining arguments are directories to create.
++ # When -t is used, the destination is already specified.
++ # Otherwise, the last argument is the destination. Remove it from $@.
++ for arg
++ do
++ if test -n "$dstarg"; then
++ # $@ is not empty: it contains at least $arg.
++ set fnord "$@" "$dstarg"
++ shift # fnord
++ fi
++ shift # arg
++ dstarg=$arg
++ done
++fi
++
++if test $# -eq 0; then
+ if test -z "$dir_arg"; then
+ echo "$0: no input file specified." >&2
+ exit 1
+@@ -164,6 +193,33 @@
+ exit 0
+ fi
+
++if test -z "$dir_arg"; then
++ trap '(exit $?); exit' 1 2 13 15
++
++ # Set umask so as not to create temps with too-generous modes.
++ # However, 'strip' requires both read and write access to temps.
++ case $mode in
++ # Optimize common cases.
++ *644) cp_umask=133;;
++ *755) cp_umask=22;;
++
++ *[0-7])
++ if test -z "$stripcmd"; then
++ u_plus_rw=
++ else
++ u_plus_rw='% 200'
++ fi
++ cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;;
++ *)
++ if test -z "$stripcmd"; then
++ u_plus_rw=
++ else
++ u_plus_rw=,u+rw
++ fi
++ cp_umask=$mode$u_plus_rw;;
++ esac
++fi
++
+ for src
+ do
+ # Protect names starting with `-'.
+@@ -173,15 +229,11 @@
+
+ if test -n "$dir_arg"; then
+ dst=$src
+- src=
+-
+- if test -d "$dst"; then
+- mkdircmd=:
+- chmodcmd=
+- else
+- mkdircmd=$mkdirprog
+- fi
++ dstdir=$dst
++ test -d "$dstdir"
++ dstdir_status=$?
+ else
++
+ # Waiting for this to be detected by the "$cpprog $src $dsttmp" command
+ # might cause directories to be created, which would be especially bad
+ # if $src (and thus $dsttmp) contains '*'.
+@@ -208,53 +260,188 @@
+ echo "$0: $dstarg: Is a directory" >&2
+ exit 1
+ fi
+- dst=$dst/`basename "$src"`
++ dstdir=$dst
++ dst=$dstdir/`basename "$src"`
++ dstdir_status=0
++ else
++ # Prefer dirname, but fall back on a substitute if dirname fails.
++ dstdir=`
++ (dirname "$dst") 2>/dev/null ||
++ expr X"$dst" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \
++ X"$dst" : 'X\(//\)[^/]' \| \
++ X"$dst" : 'X\(//\)$' \| \
++ X"$dst" : 'X\(/\)' \| . 2>/dev/null ||
++ echo X"$dst" |
++ sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)[^/].*/{
++ s//\1/
++ q
++ }
++ /^X\(\/\/\)$/{
++ s//\1/
++ q
++ }
++ /^X\(\/\).*/{
++ s//\1/
++ q
++ }
++ s/.*/./; q'
++ `
++
++ test -d "$dstdir"
++ dstdir_status=$?
+ fi
+ fi
+
+- # This sed command emulates the dirname command.
+- dstdir=`echo "$dst" | sed -e 's,/*$,,;s,[^/]*$,,;s,/*$,,;s,^$,.,'`
+-
+- # Make sure that the destination directory exists.
++ obsolete_mkdir_used=false
+
+- # Skip lots of stat calls in the usual case.
+- if test ! -d "$dstdir"; then
+- defaultIFS='
+- '
+- IFS="${IFS-$defaultIFS}"
+-
+- oIFS=$IFS
+- # Some sh's can't handle IFS=/ for some reason.
+- IFS='%'
+- set x `echo "$dstdir" | sed -e 's@/@%@g' -e 's@^%@/@'`
+- shift
+- IFS=$oIFS
++ if test $dstdir_status != 0; then
++ case $posix_mkdir in
++ '')
++ # Create intermediate dirs using mode 755 as modified by the umask.
++ # This is like FreeBSD 'install' as of 1997-10-28.
++ umask=`umask`
++ case $stripcmd.$umask in
++ # Optimize common cases.
++ *[2367][2367]) mkdir_umask=$umask;;
++ .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;;
++
++ *[0-7])
++ mkdir_umask=`expr $umask + 22 \
++ - $umask % 100 % 40 + $umask % 20 \
++ - $umask % 10 % 4 + $umask % 2
++ `;;
++ *) mkdir_umask=$umask,go-w;;
++ esac
++
++ # With -d, create the new directory with the user-specified mode.
++ # Otherwise, rely on $mkdir_umask.
++ if test -n "$dir_arg"; then
++ mkdir_mode=-m$mode
++ else
++ mkdir_mode=
++ fi
++
++ posix_mkdir=false
++ case $umask in
++ *[123567][0-7][0-7])
++ # POSIX mkdir -p sets u+wx bits regardless of umask, which
++ # is incompatible with FreeBSD 'install' when (umask & 300) != 0.
++ ;;
++ *)
++ tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$
++ trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0
++
++ if (umask $mkdir_umask &&
++ exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1
++ then
++ if test -z "$dir_arg" || {
++ # Check for POSIX incompatibilities with -m.
++ # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or
++ # other-writeable bit of parent directory when it shouldn't.
++ # FreeBSD 6.1 mkdir -m -p sets mode of existing directory.
++ ls_ld_tmpdir=`ls -ld "$tmpdir"`
++ case $ls_ld_tmpdir in
++ d????-?r-*) different_mode=700;;
++ d????-?--*) different_mode=755;;
++ *) false;;
++ esac &&
++ $mkdirprog -m$different_mode -p -- "$tmpdir" && {
++ ls_ld_tmpdir_1=`ls -ld "$tmpdir"`
++ test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1"
++ }
++ }
++ then posix_mkdir=:
++ fi
++ rmdir "$tmpdir/d" "$tmpdir"
++ else
++ # Remove any dirs left behind by ancient mkdir implementations.
++ rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null
++ fi
++ trap '' 0;;
++ esac;;
++ esac
+
+- pathcomp=
++ if
++ $posix_mkdir && (
++ umask $mkdir_umask &&
++ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir"
++ )
++ then :
++ else
+
+- while test $# -ne 0 ; do
+- pathcomp=$pathcomp$1
++ # The umask is ridiculous, or mkdir does not conform to POSIX,
++ # or it failed possibly due to a race condition. Create the
++ # directory the slow way, step by step, checking for races as we go.
++
++ case $dstdir in
++ /*) prefix=/ ;;
++ -*) prefix=./ ;;
++ *) prefix= ;;
++ esac
++
++ case $posix_glob in
++ '')
++ if (set -f) 2>/dev/null; then
++ posix_glob=true
++ else
++ posix_glob=false
++ fi ;;
++ esac
++
++ oIFS=$IFS
++ IFS=/
++ $posix_glob && set -f
++ set fnord $dstdir
+ shift
+- if test ! -d "$pathcomp"; then
+- $mkdirprog "$pathcomp"
+- # mkdir can fail with a `File exist' error in case several
+- # install-sh are creating the directory concurrently. This
+- # is OK.
+- test -d "$pathcomp" || exit
++ $posix_glob && set +f
++ IFS=$oIFS
++
++ prefixes=
++
++ for d
++ do
++ test -z "$d" && continue
++
++ prefix=$prefix$d
++ if test -d "$prefix"; then
++ prefixes=
++ else
++ if $posix_mkdir; then
++ (umask=$mkdir_umask &&
++ $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break
++ # Don't fail if two instances are running concurrently.
++ test -d "$prefix" || exit 1
++ else
++ case $prefix in
++ *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;;
++ *) qprefix=$prefix;;
++ esac
++ prefixes="$prefixes '$qprefix'"
++ fi
++ fi
++ prefix=$prefix/
++ done
++
++ if test -n "$prefixes"; then
++ # Don't fail if two instances are running concurrently.
++ (umask $mkdir_umask &&
++ eval "\$doit_exec \$mkdirprog $prefixes") ||
++ test -d "$dstdir" || exit 1
++ obsolete_mkdir_used=true
+ fi
+- pathcomp=$pathcomp/
+- done
++ fi
+ fi
+
+ if test -n "$dir_arg"; then
+- $doit $mkdircmd "$dst" \
+- && { test -z "$chowncmd" || $doit $chowncmd "$dst"; } \
+- && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } \
+- && { test -z "$stripcmd" || $doit $stripcmd "$dst"; } \
+- && { test -z "$chmodcmd" || $doit $chmodcmd "$dst"; }
+-
++ { test -z "$chowncmd" || $doit $chowncmd "$dst"; } &&
++ { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } &&
++ { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false ||
++ test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1
+ else
+- dstfile=`basename "$dst"`
+
+ # Make a couple of temp file names in the proper directory.
+ dsttmp=$dstdir/_inst.$$_
+@@ -262,10 +449,9 @@
+
+ # Trap to clean up those temp files at exit.
+ trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0
+- trap '(exit $?); exit' 1 2 13 15
+
+ # Copy the file name to the temp name.
+- $doit $cpprog "$src" "$dsttmp" &&
++ (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") &&
+
+ # and set any options; do chmod last to preserve setuid bits.
+ #
+@@ -276,10 +462,10 @@
+ { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } \
+ && { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } \
+ && { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } \
+- && { test -z "$chmodcmd" || $doit $chmodcmd "$dsttmp"; } &&
++ && { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } &&
+
+ # Now rename the file to the real destination.
+- { $doit $mvcmd -f "$dsttmp" "$dstdir/$dstfile" 2>/dev/null \
++ { $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null \
+ || {
+ # The rename failed, perhaps because mv can't rename something else
+ # to itself, or perhaps because mv is so ancient that it does not
+@@ -291,11 +477,12 @@
+ # reasons. In this case, the final cleanup might fail but the new
+ # file should still install successfully.
+ {
+- if test -f "$dstdir/$dstfile"; then
+- $doit $rmcmd -f "$dstdir/$dstfile" 2>/dev/null \
+- || $doit $mvcmd -f "$dstdir/$dstfile" "$rmtmp" 2>/dev/null \
++ if test -f "$dst"; then
++ $doit $rmcmd -f "$dst" 2>/dev/null \
++ || { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null \
++ && { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; }; }\
+ || {
+- echo "$0: cannot unlink or rename $dstdir/$dstfile" >&2
++ echo "$0: cannot unlink or rename $dst" >&2
+ (exit 1); exit 1
+ }
+ else
+@@ -304,16 +491,13 @@
+ } &&
+
+ # Now rename the file to the real destination.
+- $doit $mvcmd "$dsttmp" "$dstdir/$dstfile"
++ $doit $mvcmd "$dsttmp" "$dst"
+ }
+- }
+- fi || { (exit 1); exit 1; }
+-done
++ } || exit 1
+
+-# The final little trick to "correctly" pass the exit status to the exit trap.
+-{
+- (exit 0); exit 0
+-}
++ trap '' 0
++ fi
++done
+
+ # Local variables:
+ # eval: (add-hook 'write-file-hooks 'time-stamp)
+diff -ruN xf86-input-keyboard-1.2.0/ltmain.sh xf86-input-keyboard/ltmain.sh
+--- xf86-input-keyboard-1.2.0/ltmain.sh 2006-06-19 18:36:49.000000000 +0000
++++ xf86-input-keyboard/ltmain.sh 2007-06-26 19:45:46.000000000 +0000
+@@ -1,8 +1,8 @@
+ # ltmain.sh - Provide generalized library-building support services.
+ # NOTE: Changing this file will not affect anything until you rerun configure.
+ #
+-# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005
+-# Free Software Foundation, Inc.
++# Copyright (C) 1996, 1997, 1998, 1999, 2000, 2001, 2003, 2004, 2005, 2006,
++# 2007 Free Software Foundation, Inc.
+ # Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
+ #
+ # This program is free software; you can redistribute it and/or modify
+@@ -43,14 +43,22 @@
+
+ PROGRAM=ltmain.sh
+ PACKAGE=libtool
+-VERSION="1.5.22 Debian 1.5.22-4"
+-TIMESTAMP=" (1.1220.2.365 2005/12/18 22:14:06)"
++VERSION=1.5.24
++TIMESTAMP=" (1.1220.2.455 2007/06/24 02:13:29)"
+
+-# See if we are running on zsh, and set the options which allow our
+-# commands through without removal of \ escapes.
+-if test -n "${ZSH_VERSION+set}" ; then
++# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
++if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on ${1+"$@"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '${1+"$@"}'='"$@"'
+ setopt NO_GLOB_SUBST
++else
++ case `(set -o) 2>/dev/null` in *posix*) set -o posix;; esac
+ fi
++BIN_SH=xpg4; export BIN_SH # for Tru64
++DUALCASE=1; export DUALCASE # for MKS sh
+
+ # Check that we have a working $echo.
+ if test "X$1" = X--no-reexec; then
+@@ -105,12 +113,14 @@
+ # These must not be set unconditionally because not all systems understand
+ # e.g. LANG=C (notably SCO).
+ # We save the old values to restore during execute mode.
+-if test "${LC_ALL+set}" = set; then
+- save_LC_ALL="$LC_ALL"; LC_ALL=C; export LC_ALL
+-fi
+-if test "${LANG+set}" = set; then
+- save_LANG="$LANG"; LANG=C; export LANG
+-fi
++for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
++do
++ eval "if test \"\${$lt_var+set}\" = set; then
++ save_$lt_var=\$$lt_var
++ $lt_var=C
++ export $lt_var
++ fi"
++done
+
+ # Make sure IFS has a sensible default
+ lt_nl='
+@@ -136,6 +146,8 @@
+ preserve_args=
+ lo2o="s/\\.lo\$/.${objext}/"
+ o2lo="s/\\.${objext}\$/.lo/"
++extracted_archives=
++extracted_serial=0
+
+ #####################################
+ # Shell function definitions:
+@@ -196,7 +208,13 @@
+ if eval $OBJDUMP -f $1 | $SED -e '10q' 2>/dev/null | \
+ $EGREP -e 'file format pe-i386(.*architecture: i386)?' >/dev/null ; then
+ win32_nmres=`eval $NM -f posix -A $1 | \
+- $SED -n -e '1,100{/ I /{s,.*,import,;p;q;};}'`
++ $SED -n -e '1,100{
++ / I /{
++ s,.*,import,
++ p
++ q
++ }
++ }'`
+ case $win32_nmres in
+ import*) win32_libid_type="x86 archive import";;
+ *) win32_libid_type="x86 archive static";;
+@@ -327,7 +345,17 @@
+ *) my_xabs=`pwd`"/$my_xlib" ;;
+ esac
+ my_xlib=`$echo "X$my_xlib" | $Xsed -e 's%^.*/%%'`
+- my_xdir="$my_gentop/$my_xlib"
++ my_xlib_u=$my_xlib
++ while :; do
++ case " $extracted_archives " in
++ *" $my_xlib_u "*)
++ extracted_serial=`expr $extracted_serial + 1`
++ my_xlib_u=lt$extracted_serial-$my_xlib ;;
++ *) break ;;
++ esac
++ done
++ extracted_archives="$extracted_archives $my_xlib_u"
++ my_xdir="$my_gentop/$my_xlib_u"
+
+ $show "${rm}r $my_xdir"
+ $run ${rm}r "$my_xdir"
+@@ -454,11 +482,12 @@
+ ;;
+
+ --version)
+- $echo "$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP"
+- $echo
+- $echo "Copyright (C) 2005 Free Software Foundation, Inc."
+- $echo "This is free software; see the source for copying conditions. There is NO"
+- $echo "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
++ echo "\
++$PROGRAM (GNU $PACKAGE) $VERSION$TIMESTAMP
++
++Copyright (C) 2007 Free Software Foundation, Inc.
++This is free software; see the source for copying conditions. There is NO
++warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
+ exit $?
+ ;;
+
+@@ -755,9 +784,10 @@
+ *.class) xform=class ;;
+ *.cpp) xform=cpp ;;
+ *.cxx) xform=cxx ;;
+- *.f90) xform=f90 ;;
++ *.[fF][09]?) xform=[fF][09]. ;;
+ *.for) xform=for ;;
+ *.java) xform=java ;;
++ *.obj) xform=obj ;;
+ esac
+
+ libobj=`$echo "X$libobj" | $Xsed -e "s/\.$xform$/.lo/"`
+@@ -1138,8 +1168,9 @@
+ for arg
+ do
+ case $arg in
+- -all-static | -static)
+- if test "X$arg" = "X-all-static"; then
++ -all-static | -static | -static-libtool-libs)
++ case $arg in
++ -all-static)
+ if test "$build_libtool_libs" = yes && test -z "$link_static_flag"; then
+ $echo "$modename: warning: complete static linking is impossible in this configuration" 1>&2
+ fi
+@@ -1147,12 +1178,20 @@
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=yes
+- else
++ ;;
++ -static)
+ if test -z "$pic_flag" && test -n "$link_static_flag"; then
+ dlopen_self=$dlopen_self_static
+ fi
+ prefer_static_libs=built
+- fi
++ ;;
++ -static-libtool-libs)
++ if test -z "$pic_flag" && test -n "$link_static_flag"; then
++ dlopen_self=$dlopen_self_static
++ fi
++ prefer_static_libs=yes
++ ;;
++ esac
+ build_libtool_libs=no
+ build_old_libs=yes
+ break
+@@ -1600,7 +1639,7 @@
+ continue
+ ;;
+
+- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ compiler_flags="$compiler_flags $arg"
+ compile_command="$compile_command $arg"
+ finalize_command="$finalize_command $arg"
+@@ -1620,10 +1659,11 @@
+ # -m* pass through architecture-specific compiler args for GCC
+ # -m*, -t[45]*, -txscale* pass through architecture-specific
+ # compiler args for GCC
+- # -pg pass through profiling flag for GCC
++ # -p, -pg, --coverage, -fprofile-* pass through profiling flag for GCC
++ # -F/path gives path to uninstalled frameworks, gcc on darwin
+ # @file GCC response files
+- -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*|-pg| \
+- -t[45]*|-txscale*|@*)
++ -64|-mips[0-9]|-r[0-9][0-9]*|-xarch=*|-xtarget=*|+DA*|+DD*|-q*|-m*| \
++ -t[45]*|-txscale*|-p|-pg|--coverage|-fprofile-*|-F*|@*)
+
+ # Unknown arguments in both finalize_command and compile_command need
+ # to be aesthetically quoted because they are evaled later.
+@@ -1651,9 +1691,9 @@
+
+ -no-install)
+ case $host in
+- *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2*)
++ *-*-cygwin* | *-*-mingw* | *-*-pw32* | *-*-os2* | *-*-darwin*)
+ # The PATH hackery in wrapper scripts is required on Windows
+- # in order for the loader to find any dlls it needs.
++ # and Darwin in order for the loader to find any dlls it needs.
+ $echo "$modename: warning: \`-no-install' is ignored for $host" 1>&2
+ $echo "$modename: warning: assuming \`-no-fast-install' instead" 1>&2
+ fast_install=no
+@@ -1712,7 +1752,7 @@
+ continue
+ ;;
+
+- -static)
++ -static | -static-libtool-libs)
+ # The effects of -static are defined in a previous loop.
+ # We used to do the same as -all-static on platforms that
+ # didn't have a PIC flag, but the assumption that the effects
+@@ -2082,10 +2122,7 @@
+ case $pass in
+ dlopen) libs="$dlfiles" ;;
+ dlpreopen) libs="$dlprefiles" ;;
+- link)
+- libs="$deplibs %DEPLIBS%"
+- test "X$link_all_deplibs" != Xno && libs="$libs $dependency_libs"
+- ;;
++ link) libs="$deplibs %DEPLIBS% $dependency_libs" ;;
+ esac
+ fi
+ if test "$pass" = dlopen; then
+@@ -2097,7 +2134,7 @@
+ lib=
+ found=no
+ case $deplib in
+- -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe)
++ -mt|-mthreads|-kthread|-Kthread|-pthread|-pthreads|--thread-safe|-threads)
+ if test "$linkmode,$pass" = "prog,link"; then
+ compile_deplibs="$deplib $compile_deplibs"
+ finalize_deplibs="$deplib $finalize_deplibs"
+@@ -2493,7 +2530,9 @@
+
+ if test "$linkmode,$pass" = "prog,link"; then
+ if test -n "$library_names" &&
+- { test "$prefer_static_libs" = no || test -z "$old_library"; }; then
++ { { test "$prefer_static_libs" = no ||
++ test "$prefer_static_libs,$installed" = "built,yes"; } ||
++ test -z "$old_library"; }; then
+ # We need to hardcode the library path
+ if test -n "$shlibpath_var" && test -z "$avoidtemprpath" ; then
+ # Make sure the rpath contains only unique directories.
+@@ -3189,7 +3228,7 @@
+ # which has an extra 1 added just for fun
+ #
+ case $version_type in
+- darwin|linux|osf|windows)
++ darwin|linux|osf|windows|none)
+ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_revision"
+@@ -3200,14 +3239,10 @@
+ age="0"
+ ;;
+ irix|nonstopux)
+- current=`expr $number_major + $number_minor - 1`
++ current=`expr $number_major + $number_minor`
+ age="$number_minor"
+ revision="$number_minor"
+- ;;
+- *)
+- $echo "$modename: unknown library version type \`$version_type'" 1>&2
+- $echo "Fatal configuration error. See the $PACKAGE docs for more information." 1>&2
+- exit $EXIT_FAILURE
++ lt_irix_increment=no
+ ;;
+ esac
+ ;;
+@@ -3266,7 +3301,8 @@
+ versuffix="$major.$age.$revision"
+ # Darwin ld doesn't like 0 for these options...
+ minor_current=`expr $current + 1`
+- verstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
++ xlcverstring="${wl}-compatibility_version ${wl}$minor_current ${wl}-current_version ${wl}$minor_current.$revision"
++ verstring="-compatibility_version $minor_current -current_version $minor_current.$revision"
+ ;;
+
+ freebsd-aout)
+@@ -3280,8 +3316,11 @@
+ ;;
+
+ irix | nonstopux)
+- major=`expr $current - $age + 1`
+-
++ if test "X$lt_irix_increment" = "Xno"; then
++ major=`expr $current - $age`
++ else
++ major=`expr $current - $age + 1`
++ fi
+ case $version_type in
+ nonstopux) verstring_prefix=nonstopux ;;
+ *) verstring_prefix=sgi ;;
+@@ -3418,11 +3457,11 @@
+ fi
+
+ # Eliminate all temporary directories.
+- for path in $notinst_path; do
+- lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
+- deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
+- dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
+- done
++ #for path in $notinst_path; do
++ # lib_search_path=`$echo "$lib_search_path " | ${SED} -e "s% $path % %g"`
++ # deplibs=`$echo "$deplibs " | ${SED} -e "s% -L$path % %g"`
++ # dependency_libs=`$echo "$dependency_libs " | ${SED} -e "s% -L$path % %g"`
++ #done
+
+ if test -n "$xrpath"; then
+ # If the user specified any rpath flags, then add them.
+@@ -3523,13 +3562,12 @@
+ int main() { return 0; }
+ EOF
+ $rm conftest
+- $LTCC $LTCFLAGS -o conftest conftest.c $deplibs
+- if test "$?" -eq 0 ; then
++ if $LTCC $LTCFLAGS -o conftest conftest.c $deplibs; then
+ ldd_output=`ldd conftest`
+ for i in $deplibs; do
+ name=`expr $i : '-l\(.*\)'`
+ # If $name is empty we are operating on a -L argument.
+- if test "$name" != "" && test "$name" -ne "0"; then
++ if test "$name" != "" && test "$name" != "0"; then
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+ *" $i "*)
+@@ -3568,9 +3606,7 @@
+ # If $name is empty we are operating on a -L argument.
+ if test "$name" != "" && test "$name" != "0"; then
+ $rm conftest
+- $LTCC $LTCFLAGS -o conftest conftest.c $i
+- # Did it work?
+- if test "$?" -eq 0 ; then
++ if $LTCC $LTCFLAGS -o conftest conftest.c $i; then
+ ldd_output=`ldd conftest`
+ if test "X$allow_libtool_libs_with_static_runtimes" = "Xyes" ; then
+ case " $predeps $postdeps " in
+@@ -3602,7 +3638,7 @@
+ droppeddeps=yes
+ $echo
+ $echo "*** Warning! Library $i is needed by this library but I was not able to"
+- $echo "*** make it link in! You will probably need to install it or some"
++ $echo "*** make it link in! You will probably need to install it or some"
+ $echo "*** library that it depends on before this library will be fully"
+ $echo "*** functional. Installing it before continuing would be even better."
+ fi
+@@ -3888,7 +3924,10 @@
+ test -n "$hardcode_libdirs"; then
+ libdir="$hardcode_libdirs"
+ if test -n "$hardcode_libdir_flag_spec_ld"; then
+- eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\"
++ case $archive_cmds in
++ *\$LD*) eval dep_rpath=\"$hardcode_libdir_flag_spec_ld\" ;;
++ *) eval dep_rpath=\"$hardcode_libdir_flag_spec\" ;;
++ esac
+ else
+ eval dep_rpath=\"$hardcode_libdir_flag_spec\"
+ fi
+@@ -4247,12 +4286,14 @@
+ reload_conv_objs=
+ gentop=
+ # reload_cmds runs $LD directly, so let us get rid of
+- # -Wl from whole_archive_flag_spec
++ # -Wl from whole_archive_flag_spec and hope we can get by with
++ # turning comma into space..
+ wl=
+
+ if test -n "$convenience"; then
+ if test -n "$whole_archive_flag_spec"; then
+- eval reload_conv_objs=\"\$reload_objs $whole_archive_flag_spec\"
++ eval tmp_whole_archive_flags=\"$whole_archive_flag_spec\"
++ reload_conv_objs=$reload_objs\ `$echo "X$tmp_whole_archive_flags" | $Xsed -e 's|,| |g'`
+ else
+ gentop="$output_objdir/${obj}x"
+ generated="$generated $gentop"
+@@ -4700,16 +4741,16 @@
+ case $host in
+ *cygwin* | *mingw* )
+ if test -f "$output_objdir/${outputname}.def" ; then
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%"`
++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}.def $output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ else
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ fi
+ ;;
+ * )
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%"`
++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s%@SYMFILE@%$output_objdir/${outputname}S.${objext}%" | $NL2SP`
+ ;;
+ esac
+ ;;
+@@ -4724,13 +4765,13 @@
+ # really was required.
+
+ # Nullify the symbol file.
+- compile_command=`$echo "X$compile_command" | $Xsed -e "s% @SYMFILE@%%"`
+- finalize_command=`$echo "X$finalize_command" | $Xsed -e "s% @SYMFILE@%%"`
++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
++ finalize_command=`$echo "X$finalize_command" | $SP2NL | $Xsed -e "s% @SYMFILE@%%" | $NL2SP`
+ fi
+
+ if test "$need_relink" = no || test "$build_libtool_libs" != yes; then
+ # Replace the output file specification.
+- compile_command=`$echo "X$compile_command" | $Xsed -e 's%@OUTPUT@%'"$output"'%g'`
++ compile_command=`$echo "X$compile_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$output"'%g' | $NL2SP`
+ link_command="$compile_command$compile_rpath"
+
+ # We have no uninstalled library dependencies, so finalize right now.
+@@ -4817,7 +4858,7 @@
+ if test "$fast_install" != no; then
+ link_command="$finalize_var$compile_command$finalize_rpath"
+ if test "$fast_install" = yes; then
+- relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g'`
++ relink_command=`$echo "X$compile_var$compile_command$compile_rpath" | $SP2NL | $Xsed -e 's%@OUTPUT@%\$progdir/\$file%g' | $NL2SP`
+ else
+ # fast_install is set to needless
+ relink_command=
+@@ -4854,7 +4895,7 @@
+ fi
+ done
+ relink_command="(cd `pwd`; $relink_command)"
+- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+ fi
+
+ # Quote $echo for shipping.
+@@ -5261,6 +5302,20 @@
+ Xsed='${SED} -e 1s/^X//'
+ sed_quote_subst='$sed_quote_subst'
+
++# Be Bourne compatible (taken from Autoconf:_AS_BOURNE_COMPATIBLE).
++if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then
++ emulate sh
++ NULLCMD=:
++ # Zsh 3.x and 4.x performs word splitting on \${1+\"\$@\"}, which
++ # is contrary to our usage. Disable this feature.
++ alias -g '\${1+\"\$@\"}'='\"\$@\"'
++ setopt NO_GLOB_SUBST
++else
++ case \`(set -o) 2>/dev/null\` in *posix*) set -o posix;; esac
++fi
++BIN_SH=xpg4; export BIN_SH # for Tru64
++DUALCASE=1; export DUALCASE # for MKS sh
++
+ # The HP-UX ksh and POSIX shell print the target directory to stdout
+ # if CDPATH is set.
+ (unset CDPATH) >/dev/null 2>&1 && unset CDPATH
+@@ -5403,7 +5458,7 @@
+ ;;
+ esac
+ $echo >> $output "\
+- \$echo \"\$0: cannot exec \$program \${1+\"\$@\"}\"
++ \$echo \"\$0: cannot exec \$program \$*\"
+ exit $EXIT_FAILURE
+ fi
+ else
+@@ -5589,7 +5644,7 @@
+ done
+ # Quote the link command for shipping.
+ relink_command="(cd `pwd`; $SHELL $progpath $preserve_args --mode=relink $libtool_args @inst_prefix_dir@)"
+- relink_command=`$echo "X$relink_command" | $Xsed -e "$sed_quote_subst"`
++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e "$sed_quote_subst" | $NL2SP`
+ if test "$hardcode_automatic" = yes ; then
+ relink_command=
+ fi
+@@ -5934,9 +5989,9 @@
+
+ if test -n "$inst_prefix_dir"; then
+ # Stick the inst_prefix_dir data into the link command.
+- relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%"`
++ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%-inst-prefix-dir $inst_prefix_dir%" | $NL2SP`
+ else
+- relink_command=`$echo "$relink_command" | $SED "s%@inst_prefix_dir@%%"`
++ relink_command=`$echo "$relink_command" | $SP2NL | $SED "s%@inst_prefix_dir@%%" | $NL2SP`
+ fi
+
+ $echo "$modename: warning: relinking \`$file'" 1>&2
+@@ -6145,7 +6200,7 @@
+ file=`$echo "X$file$stripped_ext" | $Xsed -e 's%^.*/%%'`
+ outputname="$tmpdir/$file"
+ # Replace the output file specification.
+- relink_command=`$echo "X$relink_command" | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g'`
++ relink_command=`$echo "X$relink_command" | $SP2NL | $Xsed -e 's%@OUTPUT@%'"$outputname"'%g' | $NL2SP`
+
+ $show "$relink_command"
+ if $run eval "$relink_command"; then :
+@@ -6356,8 +6411,10 @@
+ if test -f "$dir/$objdir/$dlname"; then
+ dir="$dir/$objdir"
+ else
+- $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
+- exit $EXIT_FAILURE
++ if test ! -f "$dir/$dlname"; then
++ $echo "$modename: cannot find \`$dlname' in \`$dir' or \`$dir/$objdir'" 1>&2
++ exit $EXIT_FAILURE
++ fi
+ fi
+ ;;
+
+@@ -6421,12 +6478,12 @@
+ fi
+
+ # Restore saved environment variables
+- if test "${save_LC_ALL+set}" = set; then
+- LC_ALL="$save_LC_ALL"; export LC_ALL
+- fi
+- if test "${save_LANG+set}" = set; then
+- LANG="$save_LANG"; export LANG
+- fi
++ for lt_var in LANG LC_ALL LC_CTYPE LC_COLLATE LC_MESSAGES
++ do
++ eval "if test \"\${save_$lt_var+set}\" = set; then
++ $lt_var=\$save_$lt_var; export $lt_var
++ fi"
++ done
+
+ # Now prepare to actually exec the command.
+ exec_cmd="\$cmd$args"
+@@ -6783,9 +6840,9 @@
+ -dlpreopen FILE link in FILE and add its symbols to lt_preloaded_symbols
+ -export-dynamic allow symbols from OUTPUT-FILE to be resolved with dlsym(3)
+ -export-symbols SYMFILE
+- try to export only the symbols listed in SYMFILE
++ try to export only the symbols listed in SYMFILE
+ -export-symbols-regex REGEX
+- try to export only the symbols matching REGEX
++ try to export only the symbols matching REGEX
+ -LLIBDIR search LIBDIR for required installed libraries
+ -lNAME OUTPUT-FILE requires the installed library libNAME
+ -module build a library that can dlopened
+@@ -6799,9 +6856,11 @@
+ -release RELEASE specify package release information
+ -rpath LIBDIR the created library will eventually be installed in LIBDIR
+ -R[ ]LIBDIR add LIBDIR to the runtime path of programs and libraries
+- -static do not do any dynamic linking of libtool libraries
++ -static do not do any dynamic linking of uninstalled libtool libraries
++ -static-libtool-libs
++ do not do any dynamic linking of libtool libraries
+ -version-info CURRENT[:REVISION[:AGE]]
+- specify library version info [each variable defaults to 0]
++ specify library version info [each variable defaults to 0]
+
+ All other options (arguments beginning with \`-') are ignored.
+
+diff -ruN xf86-input-keyboard-1.2.0/man/.cvsignore xf86-input-keyboard/man/.cvsignore
+--- xf86-input-keyboard-1.2.0/man/.cvsignore 1970-01-01 00:00:00.000000000 +0000
++++ xf86-input-keyboard/man/.cvsignore 2007-09-03 10:34:00.000000000 +0000
+@@ -0,0 +1,2 @@
++Makefile
++Makefile.in
+diff -ruN xf86-input-keyboard-1.2.0/man/Makefile.in xf86-input-keyboard/man/Makefile.in
+--- xf86-input-keyboard-1.2.0/man/Makefile.in 2006-11-01 22:19:31.000000000 +0000
++++ xf86-input-keyboard/man/Makefile.in 2007-09-03 10:36:18.000000000 +0000
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.10 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This Makefile.in 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.
+@@ -41,15 +41,11 @@
+ # from the copyright holders.
+ #
+
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+-top_builddir = ..
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+ install_sh_PROGRAM = $(install_sh) -c
+ install_sh_SCRIPT = $(install_sh) -c
+@@ -87,8 +83,6 @@
+ ACLOCAL = @ACLOCAL@
+ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
+ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
+-AMDEP_FALSE = @AMDEP_FALSE@
+-AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+ APP_MAN_DIR = @APP_MAN_DIR@
+ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
+@@ -97,8 +91,6 @@
+ AUTOHEADER = @AUTOHEADER@
+ AUTOMAKE = @AUTOMAKE@
+ AWK = @AWK@
+-BSD_FALSE = @BSD_FALSE@
+-BSD_TRUE = @BSD_TRUE@
+ CC = @CC@
+ CCDEPMODE = @CCDEPMODE@
+ CFLAGS = @CFLAGS@
+@@ -125,8 +117,7 @@
+ FILE_MAN_DIR = @FILE_MAN_DIR@
+ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
+ GREP = @GREP@
+-HURD_FALSE = @HURD_FALSE@
+-HURD_TRUE = @HURD_TRUE@
++INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -137,16 +128,13 @@
+ LIBTOOL = @LIBTOOL@
+ LIB_MAN_DIR = @LIB_MAN_DIR@
+ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
+-LINUX_FALSE = @LINUX_FALSE@
+-LINUX_TRUE = @LINUX_TRUE@
+ LN_S = @LN_S@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAINT = @MAINT@
+-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+ MAKEINFO = @MAKEINFO@
+ MISC_MAN_DIR = @MISC_MAN_DIR@
+ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
++MKDIR_P = @MKDIR_P@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -157,23 +145,20 @@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
+ PKG_CONFIG = @PKG_CONFIG@
+ RANLIB = @RANLIB@
+-SCO_FALSE = @SCO_FALSE@
+-SCO_TRUE = @SCO_TRUE@
++SED = sed
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+-SOLARIS_FALSE = @SOLARIS_FALSE@
+-SOLARIS_TRUE = @SOLARIS_TRUE@
+ STRIP = @STRIP@
+ VERSION = @VERSION@
+ XORG_CFLAGS = @XORG_CFLAGS@
+ XORG_LIBS = @XORG_LIBS@
++abs_builddir = @abs_builddir@
++abs_srcdir = @abs_srcdir@
++abs_top_builddir = @abs_top_builddir@
++abs_top_srcdir = @abs_top_srcdir@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
+-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+@@ -185,6 +170,7 @@
+ build_cpu = @build_cpu@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
++builddir = @builddir@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
+@@ -213,14 +199,16 @@
+ psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
++srcdir = @srcdir@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
++top_builddir = @top_builddir@
++top_srcdir = @top_srcdir@
+ drivermandir = $(DRIVER_MAN_DIR)
+ driverman_PRE = @DRIVER_NAME@.man
+ driverman_DATA = $(driverman_PRE:man=@DRIVER_MAN_SUFFIX@)
+ EXTRA_DIST = @DRIVER_NAME@.man
+ CLEANFILES = $(driverman_DATA)
+-SED = sed
+
+ # Strings to replace in man pages
+ XORGRELSTRING = @PACKAGE_STRING@
+@@ -277,13 +265,9 @@
+
+ clean-libtool:
+ -rm -rf .libs _libs
+-
+-distclean-libtool:
+- -rm -f libtool
+-uninstall-info-am:
+ install-drivermanDATA: $(driverman_DATA)
+ @$(NORMAL_INSTALL)
+- test -z "$(drivermandir)" || $(mkdir_p) "$(DESTDIR)$(drivermandir)"
++ test -z "$(drivermandir)" || $(MKDIR_P) "$(DESTDIR)$(drivermandir)"
+ @list='$(driverman_DATA)'; for p in $$list; do \
+ if test -f "$$p"; then d=; else d="$(srcdir)/"; fi; \
+ f=$(am__strip_dir) \
+@@ -306,22 +290,21 @@
+
+
+ distdir: $(DISTFILES)
+- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+- list='$(DISTFILES)'; for file in $$list; do \
+- case $$file in \
+- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+- esac; \
++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
++ list='$(DISTFILES)'; \
++ dist_files=`for file in $$list; do echo $$file; done | \
++ sed -e "s|^$$srcdirstrip/||;t" \
++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
++ case $$dist_files in \
++ */*) $(MKDIR_P) `echo "$$dist_files" | \
++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
++ sort -u` ;; \
++ esac; \
++ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+- dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
+- else \
+- dir=''; \
+- fi; \
+ if test -d $$d/$$file; then \
++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+@@ -337,7 +320,7 @@
+ all-am: Makefile $(DATA)
+ installdirs:
+ for dir in "$(DESTDIR)$(drivermandir)"; do \
+- test -z "$$dir" || $(mkdir_p) "$$dir"; \
++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+ install: install-am
+ install-exec: install-exec-am
+@@ -370,7 +353,7 @@
+
+ distclean: distclean-am
+ -rm -f Makefile
+-distclean-am: clean-am distclean-generic distclean-libtool
++distclean-am: clean-am distclean-generic
+
+ dvi: dvi-am
+
+@@ -384,12 +367,20 @@
+
+ install-data-am: install-drivermanDATA
+
++install-dvi: install-dvi-am
++
+ install-exec-am:
+
++install-html: install-html-am
++
+ install-info: install-info-am
+
+ install-man:
+
++install-pdf: install-pdf-am
++
++install-ps: install-ps-am
++
+ installcheck-am:
+
+ maintainer-clean: maintainer-clean-am
+@@ -408,18 +399,21 @@
+
+ ps-am:
+
+-uninstall-am: uninstall-drivermanDATA uninstall-info-am
++uninstall-am: uninstall-drivermanDATA
++
++.MAKE: install-am install-strip
+
+ .PHONY: all all-am check check-am clean clean-generic clean-libtool \
+ distclean distclean-generic distclean-libtool distdir dvi \
+ dvi-am html html-am info info-am install install-am \
+- install-data install-data-am install-drivermanDATA \
+- install-exec install-exec-am install-info install-info-am \
+- install-man install-strip installcheck installcheck-am \
+- installdirs maintainer-clean maintainer-clean-generic \
+- mostlyclean mostlyclean-generic mostlyclean-libtool pdf pdf-am \
+- ps ps-am uninstall uninstall-am uninstall-drivermanDATA \
+- uninstall-info-am
++ install-data install-data-am install-drivermanDATA install-dvi \
++ install-dvi-am install-exec install-exec-am install-html \
++ install-html-am install-info install-info-am install-man \
++ install-pdf install-pdf-am install-ps install-ps-am \
++ install-strip installcheck installcheck-am installdirs \
++ maintainer-clean maintainer-clean-generic mostlyclean \
++ mostlyclean-generic mostlyclean-libtool pdf pdf-am ps ps-am \
++ uninstall uninstall-am uninstall-drivermanDATA
+
+
+ .man.$(DRIVER_MAN_SUFFIX):
+diff -ruN xf86-input-keyboard-1.2.0/man/keyboard.man xf86-input-keyboard/man/keyboard.man
+--- xf86-input-keyboard-1.2.0/man/keyboard.man 1970-01-01 00:00:00.000000000 +0000
++++ xf86-input-keyboard/man/keyboard.man 2007-09-03 10:34:00.000000000 +0000
+@@ -0,0 +1,108 @@
++.\" $XdotOrg: $
++.\" $XFree86: xc/programs/Xserver/hw/xfree86/input/keyboard/keyboard.man,v 1.2 2001/01/27 18:20:57 dawes Exp $
++.\" shorthand for double quote that works everywhere.
++.ds q \N'34'
++.TH KEYBOARD __drivermansuffix__ __vendorversion__
++.SH NAME
++keyboard \- Keyboard input driver
++.SH SYNOPSIS
++.nf
++.B "Section \*qInputDevice\*q"
++.BI " Identifier \*q" idevname \*q
++.B " Driver \*qkeyboard\*q"
++\ \ ...
++.B EndSection
++.fi
++.SH DESCRIPTION
++.B keyboard
++is an __xservername__ input driver for keyboards. The driver supports the standard
++OS-provided keyboard interface.
++.PP
++The
++.B keyboard
++driver functions as a keyboard input device, and may be used as the
++X server's core keyboard.
++.PP
++This driver is built-in to the core X server, and multiple instances are not
++supported. A loadable driver,
++.BR kbd ,
++is available, and is planned to replace the
++.B keyboard
++driver in a future release of the __xservername__ server.
++.SH CONFIGURATION DETAILS
++Please refer to __xconfigfile__(__filemansuffix__) for general configuration
++details and for options that can be used with all input drivers. This
++section only covers configuration details specific to this driver.
++.PP
++The following driver
++.B Options
++are supported:
++.TP 7
++.BI "Option \*qProtocol\*q \*q" string \*q
++Specify the keyboard protocol. Valid protocol types include:
++.PP
++.RS 12
++Standard, Xqueue.
++.RE
++.PP
++.RS 7
++Not all protocols are supported on all platforms. Default: "Standard".
++.RE
++.TP 7
++.BI "Option \*qAutoRepeat\*q \*q" "delay rate" \*q
++sets the auto repeat behaviour for the keyboard. This is not implemented
++on all platforms.
++.I delay
++is the time in milliseconds before a key starts repeating.
++.I rate
++is the number of times a key repeats per second. Default: "500 30".
++.TP 7
++.BI "Option \*qXLeds\*q \*q" ledlist \*q
++makes the keyboard LEDs specified in
++.I ledlist
++available for client use instead of their traditional function
++(Scroll Lock, Caps Lock and Num Lock). The numbers in the list are
++in the range 1 to 3. Default: empty list.
++.TP 7
++.BI "Option \*qXkbDisable\*q \*q" boolean \*q
++disable/enable the XKEYBOARD extension. The \-kb command line
++option overrides this config file option. Default: XKB is enabled.
++.PP
++.RS 7
++NOTE: This option should be specified in the
++.B ServerFlags
++section rather than here. It's use here is deprecated.
++.RE
++.TP 7
++.BI "Option \*qXkbRules\*q \*q" rules \*q
++specifies which XKB rules file to use for interpreting the
++.BR XkbModel ,
++.BR XkbLayout ,
++.BR XkbVariant ,
++and
++.B XkbOptions
++settings. Default: "xorg" for most platforms, but "xfree98" for the
++Japanese PC-98 platforms.
++.TP 7
++.BI "Option \*qXkbModel\*q \*q" modelname \*q
++specifies the XKB keyboard model name. Default: "pc105" for most platforms,
++but "pc98" for the Japanese PC-98 platforms.
++.TP 7
++.BI "Option \*qXkbLayout\*q \*q" layoutname \*q
++specifies the XKB keyboard layout name. This is usually the country or
++language type of the keyboard. Default: "us" for most platforms, but
++"nec/jp" for the Japanese PC-98 platforms.
++.TP 7
++.BI "Option \*qXkbVariant\*q \*q" variants \*q
++specifies the XKB keyboard variant components. These can be used to
++enhance the keyboard layout details. Default: not set.
++.TP 7
++.BI "Option \*qXkbOptions\*q \*q" options \*q
++specifies the XKB keyboard option components. These can be used to
++enhance the keyboard behaviour. Default: not set.
++.PP
++Some other XKB-related options are available, but they are incompatible
++with the ones listed above and are not recommended, so they are not
++documented here.
++.SH "SEE ALSO"
++kbd(__drivermansuffix__), __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__).
+diff -ruN xf86-input-keyboard-1.2.0/missing xf86-input-keyboard/missing
+--- xf86-input-keyboard-1.2.0/missing 2006-11-01 22:19:31.000000000 +0000
++++ xf86-input-keyboard/missing 2007-09-03 10:36:18.000000000 +0000
+@@ -1,9 +1,9 @@
+ #! /bin/sh
+ # Common stub for a few missing GNU programs while installing.
+
+-scriptversion=2005-06-08.21
++scriptversion=2006-05-10.23
+
+-# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005
++# Copyright (C) 1996, 1997, 1999, 2000, 2002, 2003, 2004, 2005, 2006
+ # Free Software Foundation, Inc.
+ # Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+
+@@ -33,6 +33,8 @@
+ fi
+
+ run=:
++sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
++sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
+
+ # In the cases where this matters, `missing' is being run in the
+ # srcdir already.
+@@ -44,7 +46,7 @@
+
+ msg="missing on your system"
+
+-case "$1" in
++case $1 in
+ --run)
+ # Try to run requested program, and just exit if it succeeds.
+ run=
+@@ -77,6 +79,7 @@
+ aclocal touch file \`aclocal.m4'
+ autoconf touch file \`configure'
+ autoheader touch file \`config.h.in'
++ autom4te touch the output file, or create a stub one
+ automake touch all \`Makefile.in' files
+ bison create \`y.tab.[ch]', if possible, from existing .[ch]
+ flex create \`lex.yy.c', if possible, from existing .c
+@@ -106,7 +109,7 @@
+ # Now exit if we have it, but it failed. Also exit now if we
+ # don't have it and --version was passed (most likely to detect
+ # the program).
+-case "$1" in
++case $1 in
+ lex|yacc)
+ # Not GNU programs, they don't have --version.
+ ;;
+@@ -135,7 +138,7 @@
+
+ # If it does not exist, or fails to run (possibly an outdated version),
+ # try to emulate it.
+-case "$1" in
++case $1 in
+ aclocal*)
+ echo 1>&2 "\
+ WARNING: \`$1' is $msg. You should only need it if
+@@ -164,7 +167,7 @@
+ test -z "$files" && files="config.h"
+ touch_files=
+ for f in $files; do
+- case "$f" in
++ case $f in
+ *:*) touch_files="$touch_files "`echo "$f" |
+ sed -e 's/^[^:]*://' -e 's/:.*//'`;;
+ *) touch_files="$touch_files $f.in";;
+@@ -192,8 +195,8 @@
+ You can get \`$1' as part of \`Autoconf' from any GNU
+ archive site."
+
+- file=`echo "$*" | sed -n 's/.*--output[ =]*\([^ ]*\).*/\1/p'`
+- test -z "$file" && file=`echo "$*" | sed -n 's/.*-o[ ]*\([^ ]*\).*/\1/p'`
++ file=`echo "$*" | sed -n "$sed_output"`
++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -f "$file"; then
+ touch $file
+ else
+@@ -214,25 +217,25 @@
+ in order for those modifications to take effect. You can get
+ \`Bison' from any GNU archive site."
+ rm -f y.tab.c y.tab.h
+- if [ $# -ne 1 ]; then
++ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+- case "$LASTARG" in
++ case $LASTARG in
+ *.y)
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
+- if [ -f "$SRCFILE" ]; then
++ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.c
+ fi
+ SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
+- if [ -f "$SRCFILE" ]; then
++ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" y.tab.h
+ fi
+ ;;
+ esac
+ fi
+- if [ ! -f y.tab.h ]; then
++ if test ! -f y.tab.h; then
+ echo >y.tab.h
+ fi
+- if [ ! -f y.tab.c ]; then
++ if test ! -f y.tab.c; then
+ echo 'main() { return 0; }' >y.tab.c
+ fi
+ ;;
+@@ -244,18 +247,18 @@
+ in order for those modifications to take effect. You can get
+ \`Flex' from any GNU archive site."
+ rm -f lex.yy.c
+- if [ $# -ne 1 ]; then
++ if test $# -ne 1; then
+ eval LASTARG="\${$#}"
+- case "$LASTARG" in
++ case $LASTARG in
+ *.l)
+ SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
+- if [ -f "$SRCFILE" ]; then
++ if test -f "$SRCFILE"; then
+ cp "$SRCFILE" lex.yy.c
+ fi
+ ;;
+ esac
+ fi
+- if [ ! -f lex.yy.c ]; then
++ if test ! -f lex.yy.c; then
+ echo 'main() { return 0; }' >lex.yy.c
+ fi
+ ;;
+@@ -267,11 +270,9 @@
+ \`Help2man' package in order for those modifications to take
+ effect. You can get \`Help2man' from any GNU archive site."
+
+- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
+- if test -z "$file"; then
+- file=`echo "$*" | sed -n 's/.*--output=\([^ ]*\).*/\1/p'`
+- fi
+- if [ -f "$file" ]; then
++ file=`echo "$*" | sed -n "$sed_output"`
++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
++ if test -f "$file"; then
+ touch $file
+ else
+ test -z "$file" || exec >$file
+@@ -289,11 +290,17 @@
+ DU, IRIX). You might want to install the \`Texinfo' package or
+ the \`GNU make' package. Grab either from any GNU archive site."
+ # The file to touch is that specified with -o ...
+- file=`echo "$*" | sed -n 's/.*-o \([^ ]*\).*/\1/p'`
++ file=`echo "$*" | sed -n "$sed_output"`
++ test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
+ if test -z "$file"; then
+ # ... or it is the one specified with @setfilename ...
+ infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
+- file=`sed -n '/^@setfilename/ { s/.* \([^ ]*\) *$/\1/; p; q; }' $infile`
++ file=`sed -n '
++ /^@setfilename/{
++ s/.* \([^ ]*\) *$/\1/
++ p
++ q
++ }' $infile`
+ # ... or it is derived from the source name (dir/f.texi becomes f.info)
+ test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
+ fi
+@@ -317,13 +324,13 @@
+ fi
+ firstarg="$1"
+ if shift; then
+- case "$firstarg" in
++ case $firstarg in
+ *o*)
+ firstarg=`echo "$firstarg" | sed s/o//`
+ tar "$firstarg" "$@" && exit 0
+ ;;
+ esac
+- case "$firstarg" in
++ case $firstarg in
+ *h*)
+ firstarg=`echo "$firstarg" | sed s/h//`
+ tar "$firstarg" "$@" && exit 0
+diff -ruN xf86-input-keyboard-1.2.0/src/.cvsignore xf86-input-keyboard/src/.cvsignore
+--- xf86-input-keyboard-1.2.0/src/.cvsignore 1970-01-01 00:00:00.000000000 +0000
++++ xf86-input-keyboard/src/.cvsignore 2007-09-03 10:34:00.000000000 +0000
+@@ -0,0 +1,6 @@
++.deps
++.libs
++Makefile
++Makefile.in
++*.la
++*.lo
+diff -ruN xf86-input-keyboard-1.2.0/src/Makefile.am xf86-input-keyboard/src/Makefile.am
+--- xf86-input-keyboard-1.2.0/src/Makefile.am 2006-11-01 22:16:43.000000000 +0000
++++ xf86-input-keyboard/src/Makefile.am 2007-09-03 10:34:00.000000000 +0000
+@@ -21,33 +21,32 @@
+ driverdir = @inputdir@
+ driver_LTLIBRARIES = kbd_drv.la
+ kbd_drv_la_LDFLAGS = -avoid-version -module
+-kbd_drv_la_SOURCES = kbd.c
++kbd_drv_la_SOURCES = kbd.c xf86OSKbd.h xf86Keymap.h
+
+-BSD_SOURCES = bsd_KbdMap.c bsd_kbd.c bsd_kbd.h at_scancode.c
+-HURD_SOURCES = hurd_kbd.c at_scancode.c
+-LINUX_SOURCES = lnx_KbdMap.c lnx_kbd.c lnx_kbd.h at_scancode.c
+-SCO_SOURCES = sco_KbdMap.c sco_kbd.c sco_kbd.h
+-SOLARIS_SOURCES = sun_kbd.c sun_kbd.h sun_kbdEv.c
++BSD_SRCS = bsd_KbdMap.c bsd_kbd.c bsd_kbd.h at_scancode.c
++HURD_SRCS = hurd_kbd.c at_scancode.c
++LINUX_SRCS = lnx_KbdMap.c lnx_kbd.c lnx_kbd.h at_scancode.c
++SCO_SRCS = sco_KbdMap.c sco_kbd.c sco_kbd.h
++SOLARIS_SRCS = sun_kbd.c sun_kbd.h sun_kbdMap.c
+
+ if BSD
+-kbd_drv_la_SOURCES += $(BSD_SOURCES)
++kbd_drv_la_SOURCES += $(BSD_SRCS)
+ endif
+
+ if SOLARIS
+-kbd_drv_la_SOURCES += $(SOLARIS_SOURCES)
++kbd_drv_la_SOURCES += $(SOLARIS_SRCS)
+ endif
+
+ if LINUX
+-kbd_drv_la_SOURCES += $(LINUX_SOURCES)
++kbd_drv_la_SOURCES += $(LINUX_SRCS)
+ endif
+
+ if SCO
+-kbd_drv_la_SOURCES += $(SCO_SOURCES)
++kbd_drv_la_SOURCES += $(SCO_SRCS)
+ endif
+
+ if HURD
+-kbd_drv_la_SOURCES += $(HURD_SOURCES)
++kbd_drv_la_SOURCES += $(HURD_SRCS)
+ endif
+
+-EXTRA_DIST = $(BSD_SOURCES) $(HURD_SOURCES) $(LINUX_SOURCES) $(SCO_SOURCES) \
+- $(SOLARIS_SOURCES)
++EXTRA_DIST = $(BSD_SRCS) $(HURD_SRCS) $(LINUX_SRCS) $(SCO_SRCS) $(SOLARIS_SRCS)
+diff -ruN xf86-input-keyboard-1.2.0/src/Makefile.in xf86-input-keyboard/src/Makefile.in
+--- xf86-input-keyboard-1.2.0/src/Makefile.in 2006-11-01 22:19:32.000000000 +0000
++++ xf86-input-keyboard/src/Makefile.in 2007-09-03 10:36:18.000000000 +0000
+@@ -1,8 +1,8 @@
+-# Makefile.in generated by automake 1.9.6 from Makefile.am.
++# Makefile.in generated by automake 1.10 from Makefile.am.
+ # @configure_input@
+
+ # Copyright (C) 1994, 1995, 1996, 1997, 1998, 1999, 2000, 2001, 2002,
+-# 2003, 2004, 2005 Free Software Foundation, Inc.
++# 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+ # This Makefile.in 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.
+@@ -34,15 +34,11 @@
+ # 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.
+
+-srcdir = @srcdir@
+-top_srcdir = @top_srcdir@
+ VPATH = @srcdir@
+ pkgdatadir = $(datadir)/@PACKAGE@
+ pkglibdir = $(libdir)/@PACKAGE@
+ pkgincludedir = $(includedir)/@PACKAGE@
+-top_builddir = ..
+ am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd
+-INSTALL = @INSTALL@
+ install_sh_DATA = $(install_sh) -c -m 644
+ install_sh_PROGRAM = $(install_sh) -c
+ install_sh_SCRIPT = $(install_sh) -c
+@@ -56,11 +52,11 @@
+ POST_UNINSTALL = :
+ build_triplet = @build@
+ host_triplet = @host@
+-@BSD_TRUE@am__append_1 = $(BSD_SOURCES)
+-@SOLARIS_TRUE@am__append_2 = $(SOLARIS_SOURCES)
+-@LINUX_TRUE@am__append_3 = $(LINUX_SOURCES)
+-@SCO_TRUE@am__append_4 = $(SCO_SOURCES)
+-@HURD_TRUE@am__append_5 = $(HURD_SOURCES)
++@BSD_TRUE@am__append_1 = $(BSD_SRCS)
++@SOLARIS_TRUE@am__append_2 = $(SOLARIS_SRCS)
++@LINUX_TRUE@am__append_3 = $(LINUX_SRCS)
++@SCO_TRUE@am__append_4 = $(SCO_SRCS)
++@HURD_TRUE@am__append_5 = $(HURD_SRCS)
+ subdir = src
+ DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+ ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
+@@ -80,13 +76,13 @@
+ driverLTLIBRARIES_INSTALL = $(INSTALL)
+ LTLIBRARIES = $(driver_LTLIBRARIES)
+ kbd_drv_la_LIBADD =
+-am__kbd_drv_la_SOURCES_DIST = kbd.c bsd_KbdMap.c bsd_kbd.c bsd_kbd.h \
+- at_scancode.c sun_kbd.c sun_kbd.h sun_kbdEv.c lnx_KbdMap.c \
+- lnx_kbd.c lnx_kbd.h sco_KbdMap.c sco_kbd.c sco_kbd.h \
+- hurd_kbd.c
++am__kbd_drv_la_SOURCES_DIST = kbd.c xf86OSKbd.h xf86Keymap.h \
++ bsd_KbdMap.c bsd_kbd.c bsd_kbd.h at_scancode.c sun_kbd.c \
++ sun_kbd.h sun_kbdMap.c lnx_KbdMap.c lnx_kbd.c lnx_kbd.h \
++ sco_KbdMap.c sco_kbd.c sco_kbd.h hurd_kbd.c
+ am__objects_1 = bsd_KbdMap.lo bsd_kbd.lo at_scancode.lo
+ @BSD_TRUE@am__objects_2 = $(am__objects_1)
+-am__objects_3 = sun_kbd.lo sun_kbdEv.lo
++am__objects_3 = sun_kbd.lo sun_kbdMap.lo
+ @SOLARIS_TRUE@am__objects_4 = $(am__objects_3)
+ am__objects_5 = lnx_KbdMap.lo lnx_kbd.lo at_scancode.lo
+ @LINUX_TRUE@am__objects_6 = $(am__objects_5)
+@@ -97,17 +93,21 @@
+ am_kbd_drv_la_OBJECTS = kbd.lo $(am__objects_2) $(am__objects_4) \
+ $(am__objects_6) $(am__objects_8) $(am__objects_10)
+ kbd_drv_la_OBJECTS = $(am_kbd_drv_la_OBJECTS)
+-DEFAULT_INCLUDES = -I. -I$(srcdir) -I$(top_builddir)
++kbd_drv_la_LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) \
++ $(LIBTOOLFLAGS) --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
++ $(kbd_drv_la_LDFLAGS) $(LDFLAGS) -o $@
++DEFAULT_INCLUDES = -I. -I$(top_builddir)@am__isrc@
+ depcomp = $(SHELL) $(top_srcdir)/depcomp
+ am__depfiles_maybe = depfiles
+ COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \
+ $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+-LTCOMPILE = $(LIBTOOL) --tag=CC --mode=compile $(CC) $(DEFS) \
+- $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) \
+- $(AM_CFLAGS) $(CFLAGS)
++LTCOMPILE = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
++ --mode=compile $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) \
++ $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS)
+ CCLD = $(CC)
+-LINK = $(LIBTOOL) --tag=CC --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) \
+- $(AM_LDFLAGS) $(LDFLAGS) -o $@
++LINK = $(LIBTOOL) --tag=CC $(AM_LIBTOOLFLAGS) $(LIBTOOLFLAGS) \
++ --mode=link $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) \
++ $(LDFLAGS) -o $@
+ SOURCES = $(kbd_drv_la_SOURCES)
+ DIST_SOURCES = $(am__kbd_drv_la_SOURCES_DIST)
+ ETAGS = etags
+@@ -116,8 +116,6 @@
+ ACLOCAL = @ACLOCAL@
+ ADMIN_MAN_DIR = @ADMIN_MAN_DIR@
+ ADMIN_MAN_SUFFIX = @ADMIN_MAN_SUFFIX@
+-AMDEP_FALSE = @AMDEP_FALSE@
+-AMDEP_TRUE = @AMDEP_TRUE@
+ AMTAR = @AMTAR@
+ APP_MAN_DIR = @APP_MAN_DIR@
+ APP_MAN_SUFFIX = @APP_MAN_SUFFIX@
+@@ -126,8 +124,6 @@
+ AUTOHEADER = @AUTOHEADER@
+ AUTOMAKE = @AUTOMAKE@
+ AWK = @AWK@
+-BSD_FALSE = @BSD_FALSE@
+-BSD_TRUE = @BSD_TRUE@
+ CC = @CC@
+ CCDEPMODE = @CCDEPMODE@
+ CFLAGS = @CFLAGS@
+@@ -154,8 +150,7 @@
+ FILE_MAN_DIR = @FILE_MAN_DIR@
+ FILE_MAN_SUFFIX = @FILE_MAN_SUFFIX@
+ GREP = @GREP@
+-HURD_FALSE = @HURD_FALSE@
+-HURD_TRUE = @HURD_TRUE@
++INSTALL = @INSTALL@
+ INSTALL_DATA = @INSTALL_DATA@
+ INSTALL_PROGRAM = @INSTALL_PROGRAM@
+ INSTALL_SCRIPT = @INSTALL_SCRIPT@
+@@ -166,16 +161,13 @@
+ LIBTOOL = @LIBTOOL@
+ LIB_MAN_DIR = @LIB_MAN_DIR@
+ LIB_MAN_SUFFIX = @LIB_MAN_SUFFIX@
+-LINUX_FALSE = @LINUX_FALSE@
+-LINUX_TRUE = @LINUX_TRUE@
+ LN_S = @LN_S@
+ LTLIBOBJS = @LTLIBOBJS@
+ MAINT = @MAINT@
+-MAINTAINER_MODE_FALSE = @MAINTAINER_MODE_FALSE@
+-MAINTAINER_MODE_TRUE = @MAINTAINER_MODE_TRUE@
+ MAKEINFO = @MAKEINFO@
+ MISC_MAN_DIR = @MISC_MAN_DIR@
+ MISC_MAN_SUFFIX = @MISC_MAN_SUFFIX@
++MKDIR_P = @MKDIR_P@
+ OBJEXT = @OBJEXT@
+ PACKAGE = @PACKAGE@
+ PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
+@@ -186,23 +178,20 @@
+ PATH_SEPARATOR = @PATH_SEPARATOR@
+ PKG_CONFIG = @PKG_CONFIG@
+ RANLIB = @RANLIB@
+-SCO_FALSE = @SCO_FALSE@
+-SCO_TRUE = @SCO_TRUE@
++SED = @SED@
+ SET_MAKE = @SET_MAKE@
+ SHELL = @SHELL@
+-SOLARIS_FALSE = @SOLARIS_FALSE@
+-SOLARIS_TRUE = @SOLARIS_TRUE@
+ STRIP = @STRIP@
+ VERSION = @VERSION@
+ XORG_CFLAGS = @XORG_CFLAGS@
+ XORG_LIBS = @XORG_LIBS@
++abs_builddir = @abs_builddir@
++abs_srcdir = @abs_srcdir@
++abs_top_builddir = @abs_top_builddir@
++abs_top_srcdir = @abs_top_srcdir@
+ ac_ct_CC = @ac_ct_CC@
+ ac_ct_CXX = @ac_ct_CXX@
+ ac_ct_F77 = @ac_ct_F77@
+-am__fastdepCC_FALSE = @am__fastdepCC_FALSE@
+-am__fastdepCC_TRUE = @am__fastdepCC_TRUE@
+-am__fastdepCXX_FALSE = @am__fastdepCXX_FALSE@
+-am__fastdepCXX_TRUE = @am__fastdepCXX_TRUE@
+ am__include = @am__include@
+ am__leading_dot = @am__leading_dot@
+ am__quote = @am__quote@
+@@ -214,6 +203,7 @@
+ build_cpu = @build_cpu@
+ build_os = @build_os@
+ build_vendor = @build_vendor@
++builddir = @builddir@
+ datadir = @datadir@
+ datarootdir = @datarootdir@
+ docdir = @docdir@
+@@ -242,21 +232,23 @@
+ psdir = @psdir@
+ sbindir = @sbindir@
+ sharedstatedir = @sharedstatedir@
++srcdir = @srcdir@
+ sysconfdir = @sysconfdir@
+ target_alias = @target_alias@
++top_builddir = @top_builddir@
++top_srcdir = @top_srcdir@
+ driverdir = @inputdir@
+ driver_LTLIBRARIES = kbd_drv.la
+ kbd_drv_la_LDFLAGS = -avoid-version -module
+-kbd_drv_la_SOURCES = kbd.c $(am__append_1) $(am__append_2) \
+- $(am__append_3) $(am__append_4) $(am__append_5)
+-BSD_SOURCES = bsd_KbdMap.c bsd_kbd.c bsd_kbd.h at_scancode.c
+-HURD_SOURCES = hurd_kbd.c at_scancode.c
+-LINUX_SOURCES = lnx_KbdMap.c lnx_kbd.c lnx_kbd.h at_scancode.c
+-SCO_SOURCES = sco_KbdMap.c sco_kbd.c sco_kbd.h
+-SOLARIS_SOURCES = sun_kbd.c sun_kbd.h sun_kbdEv.c
+-EXTRA_DIST = $(BSD_SOURCES) $(HURD_SOURCES) $(LINUX_SOURCES) $(SCO_SOURCES) \
+- $(SOLARIS_SOURCES)
+-
++kbd_drv_la_SOURCES = kbd.c xf86OSKbd.h xf86Keymap.h $(am__append_1) \
++ $(am__append_2) $(am__append_3) $(am__append_4) \
++ $(am__append_5)
++BSD_SRCS = bsd_KbdMap.c bsd_kbd.c bsd_kbd.h at_scancode.c
++HURD_SRCS = hurd_kbd.c at_scancode.c
++LINUX_SRCS = lnx_KbdMap.c lnx_kbd.c lnx_kbd.h at_scancode.c
++SCO_SRCS = sco_KbdMap.c sco_kbd.c sco_kbd.h
++SOLARIS_SRCS = sun_kbd.c sun_kbd.h sun_kbdMap.c
++EXTRA_DIST = $(BSD_SRCS) $(HURD_SRCS) $(LINUX_SRCS) $(SCO_SRCS) $(SOLARIS_SRCS)
+ all: all-am
+
+ .SUFFIXES:
+@@ -292,7 +284,7 @@
+ cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
+ install-driverLTLIBRARIES: $(driver_LTLIBRARIES)
+ @$(NORMAL_INSTALL)
+- test -z "$(driverdir)" || $(mkdir_p) "$(DESTDIR)$(driverdir)"
++ test -z "$(driverdir)" || $(MKDIR_P) "$(DESTDIR)$(driverdir)"
+ @list='$(driver_LTLIBRARIES)'; for p in $$list; do \
+ if test -f $$p; then \
+ f=$(am__strip_dir) \
+@@ -303,7 +295,7 @@
+
+ uninstall-driverLTLIBRARIES:
+ @$(NORMAL_UNINSTALL)
+- @set -x; list='$(driver_LTLIBRARIES)'; for p in $$list; do \
++ @list='$(driver_LTLIBRARIES)'; for p in $$list; do \
+ p=$(am__strip_dir) \
+ echo " $(LIBTOOL) --mode=uninstall rm -f '$(DESTDIR)$(driverdir)/$$p'"; \
+ $(LIBTOOL) --mode=uninstall rm -f "$(DESTDIR)$(driverdir)/$$p"; \
+@@ -318,7 +310,7 @@
+ rm -f "$${dir}/so_locations"; \
+ done
+ kbd_drv.la: $(kbd_drv_la_OBJECTS) $(kbd_drv_la_DEPENDENCIES)
+- $(LINK) -rpath $(driverdir) $(kbd_drv_la_LDFLAGS) $(kbd_drv_la_OBJECTS) $(kbd_drv_la_LIBADD) $(LIBS)
++ $(kbd_drv_la_LINK) -rpath $(driverdir) $(kbd_drv_la_OBJECTS) $(kbd_drv_la_LIBADD) $(LIBS)
+
+ mostlyclean-compile:
+ -rm -f *.$(OBJEXT)
+@@ -336,25 +328,25 @@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sco_KbdMap.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sco_kbd.Plo@am__quote@
+ @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sun_kbd.Plo@am__quote@
+-@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sun_kbdEv.Plo@am__quote@
++@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sun_kbdMap.Plo@am__quote@
+
+ .c.o:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(COMPILE) -c $<
+
+ .c.obj:
+-@am__fastdepCC_TRUE@ if $(COMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ `$(CYGPATH_W) '$<'`; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Po"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=no @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(COMPILE) -c `$(CYGPATH_W) '$<'`
+
+ .c.lo:
+-@am__fastdepCC_TRUE@ if $(LTCOMPILE) -MT $@ -MD -MP -MF "$(DEPDIR)/$*.Tpo" -c -o $@ $<; \
+-@am__fastdepCC_TRUE@ then mv -f "$(DEPDIR)/$*.Tpo" "$(DEPDIR)/$*.Plo"; else rm -f "$(DEPDIR)/$*.Tpo"; exit 1; fi
++@am__fastdepCC_TRUE@ $(LTCOMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $<
++@am__fastdepCC_TRUE@ mv -f $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Plo
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ source='$<' object='$@' libtool=yes @AMDEPBACKSLASH@
+ @AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
+ @am__fastdepCC_FALSE@ $(LTCOMPILE) -c -o $@ $<
+@@ -365,10 +357,6 @@
+ clean-libtool:
+ -rm -rf .libs _libs
+
+-distclean-libtool:
+- -rm -f libtool
+-uninstall-info-am:
+-
+ ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
+ list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
+ unique=`for i in $$list; do \
+@@ -418,22 +406,21 @@
+ -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
+
+ distdir: $(DISTFILES)
+- @srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`; \
+- topsrcdirstrip=`echo "$(top_srcdir)" | sed 's|.|.|g'`; \
+- list='$(DISTFILES)'; for file in $$list; do \
+- case $$file in \
+- $(srcdir)/*) file=`echo "$$file" | sed "s|^$$srcdirstrip/||"`;; \
+- $(top_srcdir)/*) file=`echo "$$file" | sed "s|^$$topsrcdirstrip/|$(top_builddir)/|"`;; \
+- esac; \
++ @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
++ topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
++ list='$(DISTFILES)'; \
++ dist_files=`for file in $$list; do echo $$file; done | \
++ sed -e "s|^$$srcdirstrip/||;t" \
++ -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \
++ case $$dist_files in \
++ */*) $(MKDIR_P) `echo "$$dist_files" | \
++ sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \
++ sort -u` ;; \
++ esac; \
++ for file in $$dist_files; do \
+ if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \
+- dir=`echo "$$file" | sed -e 's,/[^/]*$$,,'`; \
+- if test "$$dir" != "$$file" && test "$$dir" != "."; then \
+- dir="/$$dir"; \
+- $(mkdir_p) "$(distdir)$$dir"; \
+- else \
+- dir=''; \
+- fi; \
+ if test -d $$d/$$file; then \
++ dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \
+ if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \
+ cp -pR $(srcdir)/$$file $(distdir)$$dir || exit 1; \
+ fi; \
+@@ -449,7 +436,7 @@
+ all-am: Makefile $(LTLIBRARIES)
+ installdirs:
+ for dir in "$(DESTDIR)$(driverdir)"; do \
+- test -z "$$dir" || $(mkdir_p) "$$dir"; \
++ test -z "$$dir" || $(MKDIR_P) "$$dir"; \
+ done
+ install: install-am
+ install-exec: install-exec-am
+@@ -484,7 +471,7 @@
+ -rm -rf ./$(DEPDIR)
+ -rm -f Makefile
+ distclean-am: clean-am distclean-compile distclean-generic \
+- distclean-libtool distclean-tags
++ distclean-tags
+
+ dvi: dvi-am
+
+@@ -498,12 +485,20 @@
+
+ install-data-am: install-driverLTLIBRARIES
+
++install-dvi: install-dvi-am
++
+ install-exec-am:
+
++install-html: install-html-am
++
+ install-info: install-info-am
+
+ install-man:
+
++install-pdf: install-pdf-am
++
++install-ps: install-ps-am
++
+ installcheck-am:
+
+ maintainer-clean: maintainer-clean-am
+@@ -524,20 +519,24 @@
+
+ ps-am:
+
+-uninstall-am: uninstall-driverLTLIBRARIES uninstall-info-am
++uninstall-am: uninstall-driverLTLIBRARIES
++
++.MAKE: install-am install-strip
+
+ .PHONY: CTAGS GTAGS all all-am check check-am clean \
+ clean-driverLTLIBRARIES clean-generic clean-libtool ctags \
+ distclean distclean-compile distclean-generic \
+ distclean-libtool distclean-tags distdir dvi dvi-am html \
+ html-am info info-am install install-am install-data \
+- install-data-am install-driverLTLIBRARIES install-exec \
+- install-exec-am install-info install-info-am install-man \
++ install-data-am install-driverLTLIBRARIES install-dvi \
++ install-dvi-am install-exec install-exec-am install-html \
++ install-html-am install-info install-info-am install-man \
++ install-pdf install-pdf-am install-ps install-ps-am \
+ install-strip installcheck installcheck-am installdirs \
+ maintainer-clean maintainer-clean-generic mostlyclean \
+ mostlyclean-compile mostlyclean-generic mostlyclean-libtool \
+ pdf pdf-am ps ps-am tags uninstall uninstall-am \
+- uninstall-driverLTLIBRARIES uninstall-info-am
++ uninstall-driverLTLIBRARIES
+
+ # 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.
+diff -ruN xf86-input-keyboard-1.2.0/src/kbd.c xf86-input-keyboard/src/kbd.c
+--- xf86-input-keyboard-1.2.0/src/kbd.c 2006-11-01 22:16:43.000000000 +0000
++++ xf86-input-keyboard/src/kbd.c 2007-09-03 10:34:00.000000000 +0000
+@@ -383,7 +383,22 @@
+ InputInfoPtr pInfo = (InputInfoPtr) device->public.devicePrivate;
+ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+
+- if ( ctrl->leds & XCOMP ) {
++ if ( ctrl->leds & XLED1) {
++ pKbd->keyLeds |= CAPSFLAG;
++ } else {
++ pKbd->keyLeds &= ~CAPSFLAG;
++ }
++ if ( ctrl->leds & XLED2) {
++ pKbd->keyLeds |= NUMFLAG;
++ } else {
++ pKbd->keyLeds &= ~NUMFLAG;
++ }
++ if ( ctrl->leds & XLED3) {
++ pKbd->keyLeds |= SCROLLFLAG;
++ } else {
++ pKbd->keyLeds &= ~SCROLLFLAG;
++ }
++ if ( ctrl->leds & (XCOMP|XLED4) ) {
+ pKbd->keyLeds |= COMPOSEFLAG;
+ } else {
+ pKbd->keyLeds &= ~COMPOSEFLAG;
+@@ -419,6 +434,8 @@
+ kevent.u.keyButtonPointer.rootX = 0;
+ kevent.u.keyButtonPointer.rootY = 0;
+
++/* The server does this for us with i-h. */
++#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 1
+ /*
+ * Hmm... here is the biggest hack of every time !
+ * It may be possible that a switch-vt procedure has finished BEFORE
+@@ -448,6 +465,8 @@
+ (* pKeyboard->public.processInputProc)(&kevent, pKeyboard, 1);
+ }
+ }
++#endif
++
+ pKbd->scanPrefix = 0;
+
+ if (init) {
+@@ -830,7 +849,7 @@
+ MODINFOSTRING1,
+ MODINFOSTRING2,
+ XORG_VERSION_CURRENT,
+- 1, 1, 0,
++ PACKAGE_VERSION_MAJOR, PACKAGE_VERSION_MINOR, PACKAGE_VERSION_PATCHLEVEL,
+ ABI_CLASS_XINPUT,
+ ABI_XINPUT_VERSION,
+ MOD_CLASS_XINPUT,
+diff -ruN xf86-input-keyboard-1.2.0/src/lnx_kbd.c xf86-input-keyboard/src/lnx_kbd.c
+--- xf86-input-keyboard-1.2.0/src/lnx_kbd.c 2006-11-01 22:18:25.000000000 +0000
++++ xf86-input-keyboard/src/lnx_kbd.c 2007-09-03 10:34:00.000000000 +0000
+@@ -6,6 +6,10 @@
+ * Based on the code from lnx_io.c which is
+ * Copyright 1992 by Orest Zborowski <obz@Kodak.com>
+ * Copyright 1993 by David Dawes <dawes@xfree86.org>
++ *
++ * Portions based on kbdrate.c from util-linux 2.9t, which is
++ * Copyright 1992 Rickard E. Faith. Distributed under the GPL.
++ * This program comes with ABSOLUTELY NO WARRANTY.
+ */
+
+ #define NEED_EVENTS
+diff -ruN xf86-input-keyboard-1.2.0/src/sun_kbd.c xf86-input-keyboard/src/sun_kbd.c
+--- xf86-input-keyboard-1.2.0/src/sun_kbd.c 2006-11-01 22:18:26.000000000 +0000
++++ xf86-input-keyboard/src/sun_kbd.c 2007-09-03 10:34:00.000000000 +0000
+@@ -22,7 +22,7 @@
+ * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
+ * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
+ */
+-/* Copyright 2004-2005 Sun Microsystems, Inc. All rights reserved.
++/* Copyright 2004-2007 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+@@ -59,42 +59,36 @@
+ #include "xf86_OSlib.h"
+ #include "xf86OSKbd.h"
+ #include "sun_kbd.h"
+-
+-/***************************************************************************
+- * Common implementation of routines shared by "keyboard" driver in sun_io.c
+- * and "kbd" driver (later on in this file)
+- */
++#include "atKeynames.h"
+
+ #include <sys/stropts.h>
+ #include <sys/vuid_event.h>
+ #include <sys/kbd.h>
+
+-_X_HIDDEN int
+-sunKbdOpen(const char *devName, pointer options)
++static void
++sunKbdSetLeds(InputInfoPtr pInfo, int leds)
+ {
+- int kbdFD;
+- const char *kbdPath = NULL;
+- const char *defaultKbd = "/dev/kbd";
++ int i;
+
+- if (options != NULL) {
+- kbdPath = xf86SetStrOption(options, "Device", NULL);
+- }
+- if (kbdPath == NULL) {
+- kbdPath = defaultKbd;
++ SYSCALL(i = ioctl(pInfo->fd, KIOCSLED, &leds));
++ if (i < 0) {
++ xf86Msg(X_ERROR, "%s: Failed to set keyboard LED's: %s\n",
++ pInfo->name, strerror(errno));
+ }
++}
+
+- kbdFD = open(kbdPath, O_RDONLY | O_NONBLOCK);
+-
+- if (kbdFD == -1) {
+- xf86Msg(X_ERROR, "%s: cannot open \"%s\"\n", devName, kbdPath);
+- } else {
+- xf86MsgVerb(X_INFO, 3, "%s: Opened device \"%s\"\n", devName, kbdPath);
+- }
+-
+- if ((kbdPath != NULL) && (kbdPath != defaultKbd)) {
+- xfree(kbdPath);
++
++static int
++sunKbdGetLeds(InputInfoPtr pInfo)
++{
++ int i, leds = 0;
++
++ SYSCALL(i = ioctl(pInfo->fd, KIOCGLED, &leds));
++ if (i < 0) {
++ xf86Msg(X_ERROR, "%s: Failed to get keyboard LED's: %s\n",
++ pInfo->name, strerror(errno));
+ }
+- return kbdFD;
++ return leds;
+ }
+
+
+@@ -102,15 +96,16 @@
+ * Save initial keyboard state. This is called at the start of each server
+ * generation.
+ */
+-
+-_X_HIDDEN int
+-sunKbdInit(sunKbdPrivPtr priv, int kbdFD, const char *devName, pointer options)
++static int
++KbdInit(InputInfoPtr pInfo, int what)
+ {
++ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
++ sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
++ pointer options = pInfo->options;
++
+ int ktype, klayout, i;
+ const char *ktype_name;
+
+- priv->kbdFD = kbdFD;
+- priv->devName = devName;
+ priv->otranslation = -1;
+ priv->odirect = -1;
+
+@@ -121,25 +116,25 @@
+ }
+
+ if (priv->strmod) {
+- SYSCALL(i = ioctl(priv->kbdFD, I_PUSH, priv->strmod));
++ SYSCALL(i = ioctl(pInfo->fd, I_PUSH, priv->strmod));
+ if (i < 0) {
+ xf86Msg(X_ERROR,
+ "%s: cannot push module '%s' onto keyboard device: %s\n",
+- priv->devName, priv->strmod, strerror(errno));
++ pInfo->name, priv->strmod, strerror(errno));
+ }
+ }
+
+- SYSCALL(i = ioctl(kbdFD, KIOCTYPE, &ktype));
++ SYSCALL(i = ioctl(pInfo->fd, KIOCTYPE, &ktype));
+ if (i < 0) {
+ xf86Msg(X_ERROR, "%s: Unable to determine keyboard type: %s\n",
+- devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ return BadImplementation;
+ }
+
+- SYSCALL(i = ioctl(kbdFD, KIOCLAYOUT, &klayout));
++ SYSCALL(i = ioctl(pInfo->fd, KIOCLAYOUT, &klayout));
+ if (i < 0) {
+ xf86Msg(X_ERROR, "%s: Unable to determine keyboard layout: %s\n",
+- devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ return BadImplementation;
+ }
+
+@@ -157,213 +152,181 @@
+ }
+
+ xf86Msg(X_PROBED, "%s: Keyboard type: %s (%d)\n",
+- devName, ktype_name, ktype);
+- xf86Msg(X_PROBED, "%s: Keyboard layout: %d\n", devName, klayout);
++ pInfo->name, ktype_name, ktype);
++ xf86Msg(X_PROBED, "%s: Keyboard layout: %d\n", pInfo->name, klayout);
+
+ priv->ktype = ktype;
+- priv->keyMap = sunGetKbdMapping(ktype);
+- priv->oleds = sunKbdGetLeds(priv);
++ priv->oleds = sunKbdGetLeds(pInfo);
+
+ return Success;
+ }
+
+-_X_HIDDEN int
+-sunKbdOn(sunKbdPrivPtr priv)
++
++static int
++KbdOn(InputInfoPtr pInfo, int what)
+ {
++ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
++ sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
++
+ int ktrans, kdirect, i;
+
+- SYSCALL(i = ioctl(priv->kbdFD, KIOCGDIRECT, &kdirect));
++ SYSCALL(i = ioctl(pInfo->fd, KIOCGDIRECT, &kdirect));
+ if (i < 0) {
+ xf86Msg(X_ERROR,
+ "%s: Unable to determine keyboard direct setting: %s\n",
+- priv->devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ return BadImplementation;
+ }
+
+ priv->odirect = kdirect;
+ kdirect = 1;
+
+- SYSCALL(i = ioctl(priv->kbdFD, KIOCSDIRECT, &kdirect));
++ SYSCALL(i = ioctl(pInfo->fd, KIOCSDIRECT, &kdirect));
+ if (i < 0) {
+ xf86Msg(X_ERROR, "%s: Failed turning keyboard direct mode on: %s\n",
+- priv->devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ return BadImplementation;
+ }
+
+ /* Setup translation */
+
+- SYSCALL(i = ioctl(priv->kbdFD, KIOCGTRANS, &ktrans));
++ SYSCALL(i = ioctl(pInfo->fd, KIOCGTRANS, &ktrans));
+ if (i < 0) {
+ xf86Msg(X_ERROR,
+ "%s: Unable to determine keyboard translation mode: %s\n",
+- priv->devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ return BadImplementation;
+ }
+
+ priv->otranslation = ktrans;
+ ktrans = TR_UNTRANS_EVENT;
+
+- SYSCALL(i = ioctl(priv->kbdFD, KIOCTRANS, &ktrans));
++ SYSCALL(i = ioctl(pInfo->fd, KIOCTRANS, &ktrans));
+ if (i < 0) {
+ xf86Msg(X_ERROR, "%s: Failed setting keyboard translation mode: %s\n",
+- priv->devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ return BadImplementation;
+ }
+
++ /* If Caps Lock or Num Lock LEDs are on when server starts,
++ * send a fake key down on those keys to set the server state
++ * to match the LED's.
++ */
++ if ( priv->oleds & (LED_CAPS_LOCK | LED_NUM_LOCK) ) {
++ int capslock = -1;
++ int numlock = -1;
++ int j;
++ TransMapPtr kmap = pKbd->scancodeMap;
++
++ for (j = kmap->begin; j < kmap->end ; j++) {
++ switch (kmap->map[j]) {
++ case KEY_CapsLock:
++ capslock = j;
++ break;
++ case KEY_NumLock:
++ numlock = j;
++ break;
++ default:
++ /* nothing to do */
++ break;
++ }
++ if ((capslock >= 0) && (numlock >= 0)) {
++ break;
++ }
++ }
++ if ((priv->oleds & LED_CAPS_LOCK) && (capslock > 0)) {
++ pKbd->PostEvent(pInfo, capslock, TRUE); /* Press */
++ pKbd->PostEvent(pInfo, capslock, FALSE); /* Release */
++ }
++ if ((priv->oleds & LED_NUM_LOCK) && (numlock > 0)) {
++ pKbd->PostEvent(pInfo, numlock, TRUE); /* Press */
++ pKbd->PostEvent(pInfo, numlock, FALSE); /* Release */
++ }
++ }
++
+ return Success;
+ }
+
+-_X_HIDDEN int
+-sunKbdOff(sunKbdPrivPtr priv)
++static int
++KbdOff(InputInfoPtr pInfo, int what)
+ {
++ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
++ sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
++
+ int i;
+
+ /* restore original state */
+
+- sunKbdSetLeds(priv, priv->oleds);
++ sunKbdSetLeds(pInfo, priv->oleds);
+
+ if (priv->otranslation != -1) {
+- SYSCALL(i = ioctl(priv->kbdFD, KIOCTRANS, &priv->otranslation));
++ SYSCALL(i = ioctl(pInfo->fd, KIOCTRANS, &priv->otranslation));
+ if (i < 0) {
+ xf86Msg(X_ERROR,
+ "%s: Unable to restore keyboard translation mode: %s\n",
+- priv->devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ return BadImplementation;
+ }
+ priv->otranslation = -1;
+ }
+
+ if (priv->odirect != -1) {
+- SYSCALL(i = ioctl(priv->kbdFD, KIOCSDIRECT, &priv->odirect));
++ SYSCALL(i = ioctl(pInfo->fd, KIOCSDIRECT, &priv->odirect));
+ if (i < 0) {
+ xf86Msg(X_ERROR,
+ "%s: Unable to restore keyboard direct setting: %s\n",
+- priv->devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ return BadImplementation;
+ }
+ priv->odirect = -1;
+ }
+
+ if (priv->strmod) {
+- SYSCALL(i = ioctl(priv->kbdFD, I_POP, priv->strmod));
++ SYSCALL(i = ioctl(pInfo->fd, I_POP, priv->strmod));
+ if (i < 0) {
+ xf86Msg(X_WARNING,
+ "%s: cannot pop module '%s' off keyboard device: %s\n",
+- priv->devName, priv->strmod, strerror(errno));
++ pInfo->name, priv->strmod, strerror(errno));
+ }
+ }
+
+ return Success;
+ }
+
+-_X_HIDDEN void
+-sunKbdSoundBell(sunKbdPrivPtr priv, int loudness, int pitch, int duration)
++
++static void
++SoundKbdBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
+ {
++ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
++ sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
++
+ int kbdCmd, i;
+
+ if (loudness && pitch)
+ {
+ kbdCmd = KBD_CMD_BELL;
+
+- SYSCALL(i = ioctl (priv->kbdFD, KIOCCMD, &kbdCmd));
++ SYSCALL(i = ioctl (pInfo->fd, KIOCCMD, &kbdCmd));
+ if (i < 0) {
+ xf86Msg(X_ERROR, "%s: Failed to activate bell: %s\n",
+- priv->devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ }
+
+ usleep(duration * loudness * 20);
+
+ kbdCmd = KBD_CMD_NOBELL;
+- SYSCALL(i = ioctl (priv->kbdFD, KIOCCMD, &kbdCmd));
++ SYSCALL(i = ioctl (pInfo->fd, KIOCCMD, &kbdCmd));
+ if (i < 0) {
+ xf86Msg(X_ERROR, "%s: Failed to deactivate bell: %s\n",
+- priv->devName, strerror(errno));
++ pInfo->name, strerror(errno));
+ }
+ }
+ }
+
+-_X_HIDDEN void
+-sunKbdSetLeds(sunKbdPrivPtr priv, int leds)
+-{
+- int i;
+-
+- SYSCALL(i = ioctl(priv->kbdFD, KIOCSLED, &leds));
+- if (i < 0) {
+- xf86Msg(X_ERROR, "%s: Failed to set keyboard LED's: %s\n",
+- priv->devName, strerror(errno));
+- }
+-}
+-
+-_X_HIDDEN int
+-sunKbdGetLeds(sunKbdPrivPtr priv)
+-{
+- int i, leds = 0;
+-
+- SYSCALL(i = ioctl(priv->kbdFD, KIOCGLED, &leds));
+- if (i < 0) {
+- xf86Msg(X_ERROR, "%s: Failed to get keyboard LED's: %s\n",
+- priv->devName, strerror(errno));
+- }
+- return leds;
+-}
+-
+-/* ARGSUSED0 */
+-_X_HIDDEN void
+-sunKbdSetRepeat(sunKbdPrivPtr priv, char rad)
+-{
+- /* Nothing to do */
+-}
+-
+-/***************************************************************************
+- * Routines called from "kbd" driver via proc vectors filled in by
+- * xf86OSKbdPreInit().
+- */
+-
+-
+-static int
+-KbdInit(InputInfoPtr pInfo, int what)
+-{
+- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+-
+- return sunKbdInit(priv, pInfo->fd, pInfo->name, pInfo->options);
+-}
+-
+-
+-static int
+-KbdOn(InputInfoPtr pInfo, int what)
+-{
+- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+-
+- return sunKbdOn(priv);
+-}
+-
+-static int
+-KbdOff(InputInfoPtr pInfo, int what)
+-{
+- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+-
+- return sunKbdOff(priv);
+-}
+-
+-
+-static void
+-SoundKbdBell(InputInfoPtr pInfo, int loudness, int pitch, int duration)
+-{
+- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+-
+- sunKbdSoundBell(priv, loudness, pitch, duration);
+-}
+-
+ static void
+ SetKbdLeds(InputInfoPtr pInfo, int leds)
+ {
+- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+- int real_leds = sunKbdGetLeds(priv);
++ int real_leds = sunKbdGetLeds(pInfo);
+
+ real_leds &= ~(LED_CAPS_LOCK | LED_NUM_LOCK | LED_SCROLL_LOCK | LED_COMPOSE);
+
+@@ -372,16 +335,14 @@
+ if (leds & XLED3) real_leds |= LED_SCROLL_LOCK;
+ if (leds & XLED4) real_leds |= LED_COMPOSE;
+
+- sunKbdSetLeds(priv, real_leds);
++ sunKbdSetLeds(pInfo, real_leds);
+ }
+
+ static int
+ GetKbdLeds(InputInfoPtr pInfo)
+ {
+- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+ int leds = 0;
+- int real_leds = sunKbdGetLeds(priv);
++ int real_leds = sunKbdGetLeds(pInfo);
+
+ if (real_leds & LED_CAPS_LOCK) leds |= XLED1;
+ if (real_leds & LED_NUM_LOCK) leds |= XLED2;
+@@ -391,27 +352,17 @@
+ return leds;
+ }
+
++/* ARGSUSED0 */
+ static void
+ SetKbdRepeat(InputInfoPtr pInfo, char rad)
+ {
+- KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+-
+- sunKbdSetRepeat(priv, rad);
+-}
+-
+-static void
+-KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
+-{
+- /* Should probably do something better here */
+- xf86KbdGetMapping(pKeySyms, pModMap);
++ /* Nothing to do */
+ }
+
+ static void
+ ReadInput(InputInfoPtr pInfo)
+ {
+ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+- sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
+ Firm_event event[64];
+ int nBytes, i;
+
+@@ -420,7 +371,7 @@
+ if ((nBytes = read(pInfo->fd, (char *)event, sizeof(event))) > 0)
+ {
+ for (i = 0; i < (nBytes / sizeof(Firm_event)); i++) {
+- pKbd->PostEvent(pInfo, priv->keyMap[event[i].id],
++ pKbd->PostEvent(pInfo, event[i].id & 0xFF,
+ event[i].value == VKEY_DOWN ? TRUE : FALSE);
+ }
+ }
+@@ -429,13 +380,34 @@
+ static Bool
+ OpenKeyboard(InputInfoPtr pInfo)
+ {
+- pInfo->fd = sunKbdOpen(pInfo->name, pInfo->options);
++ const char *kbdPath = NULL;
++ const char *defaultKbd = "/dev/kbd";
+
+- if (pInfo->fd >= 0) {
+- pInfo->read_input = ReadInput;
+- return TRUE;
++ if (pInfo->options != NULL) {
++ kbdPath = xf86SetStrOption(pInfo->options, "Device", NULL);
++ }
++ if (kbdPath == NULL) {
++ kbdPath = defaultKbd;
++ }
++
++ pInfo->fd = open(kbdPath, O_RDONLY | O_NONBLOCK);
++
++ if (pInfo->fd == -1) {
++ xf86Msg(X_ERROR, "%s: cannot open \"%s\"\n", pInfo->name, kbdPath);
+ } else {
++ xf86MsgVerb(X_INFO, 3, "%s: Opened device \"%s\"\n", pInfo->name,
++ kbdPath);
++ }
++
++ if ((kbdPath != NULL) && (kbdPath != defaultKbd)) {
++ xfree(kbdPath);
++ }
++
++ if (pInfo->fd == -1) {
+ return FALSE;
++ } else {
++ pInfo->read_input = ReadInput;
++ return TRUE;
+ }
+ }
+
+diff -ruN xf86-input-keyboard-1.2.0/src/sun_kbd.h xf86-input-keyboard/src/sun_kbd.h
+--- xf86-input-keyboard-1.2.0/src/sun_kbd.h 2006-11-01 22:18:26.000000000 +0000
++++ xf86-input-keyboard/src/sun_kbd.h 2007-09-03 10:34:00.000000000 +0000
+@@ -1,4 +1,4 @@
+-/* Copyright 2005 Sun Microsystems, Inc. All rights reserved.
++/* Copyright 2007 Sun Microsystems, Inc. All rights reserved.
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a
+ * copy of this software and associated documentation files (the
+@@ -29,41 +29,16 @@
+ #ifndef _XORG_SUN_KBD_H_
+ #define _XORG_SUN_KBD_H_
+
+-/*
+- * Keyboard common implementation routines shared by "keyboard" driver
+- * in sun_io.c and "kbd" driver in sun_kbd.c
+- */
+-
+ typedef struct {
+- int kbdFD;
+- const char * devName;
+ int ktype; /* Keyboard type from KIOCTYPE */
+ Bool kbdActive; /* Have we set kbd modes for X? */
+ int otranslation; /* Original translation mode */
+ int odirect; /* Original "direct" mode setting */
+ unsigned char oleds; /* Original LED state */
+ const char * strmod; /* Streams module pushed on kbd device */
+- const unsigned char *keyMap;
+ } sunKbdPrivRec, *sunKbdPrivPtr;
+
+-/* sun_kbd.c */
+-extern int sunKbdOpen (const char *devName, pointer options);
+-extern int sunKbdInit (sunKbdPrivPtr priv, int kbdFD,
+- const char *devName, pointer options);
+-extern int sunKbdOn (sunKbdPrivPtr priv);
+-extern int sunKbdOff (sunKbdPrivPtr priv);
+-
+-extern void sunKbdSoundBell (sunKbdPrivPtr priv,
+- int loudness, int pitch, int duration);
+-
+-extern void sunKbdSetLeds (sunKbdPrivPtr priv, int leds);
+-extern int sunKbdGetLeds (sunKbdPrivPtr priv);
+-extern void sunKbdSetRepeat (sunKbdPrivPtr priv, char rad);
+-
+-/* sun_kbdEv.c */
+-#include <sys/vuid_event.h>
+-extern void sunPostKbdEvent (int ktype, Firm_event *event);
+-
+-extern const unsigned char *sunGetKbdMapping(int ktype);
+-
++/* sun_kbdMap.c */
++extern void KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms,
++ CARD8 *pModMap);
+ #endif
+diff -ruN xf86-input-keyboard-1.2.0/src/sun_kbdEv.c xf86-input-keyboard/src/sun_kbdEv.c
+--- xf86-input-keyboard-1.2.0/src/sun_kbdEv.c 2006-11-01 22:18:27.000000000 +0000
++++ xf86-input-keyboard/src/sun_kbdEv.c 1970-01-01 00:00:00.000000000 +0000
+@@ -1,855 +0,0 @@
+-/*
+- * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+- * Copyright 1993 by David Dawes <dawes@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 Thomas Roell and David Dawes not be used in advertising or
+- * publicity pertaining to distribution of the software without specific,
+- * written prior permission. Thomas Roell and David Dawes make no
+- * representations about the suitability of this software for any purpose. It
+- * is provided "as is" without express or implied warranty.
+- *
+- * THOMAS ROELL AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
+- * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
+- * IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES 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.
+- */
+-
+-/* [JCH-96/01/21] Extended std reverse map to four buttons. */
+-
+-#ifdef HAVE_CONFIG_H
+-#include "config.h"
+-#endif
+-
+-#include "xf86.h"
+-#include "xf86Priv.h"
+-#include "xf86_OSlib.h"
+-#include "xf86OSKbd.h"
+-#include "sun_kbd.h"
+-
+-#ifdef XINPUT
+-#include <X11/extensions/XI.h>
+-#include <X11/extensions/XIproto.h>
+-#include "xf86Xinput.h"
+-#endif
+-
+-#include "inputstr.h"
+-
+-#include <sys/kbd.h>
+-#include "atKeynames.h"
+-
+-#ifdef XKB
+-extern Bool noXkbExtension;
+-#endif
+-
+-#define XE_POINTER 1
+-#define XE_KEYBOARD 2
+-
+-#ifdef XINPUT
+-#define ENQUEUE(ev, code, direction, dev_type) \
+- (ev)->u.u.detail = (code); \
+- (ev)->u.u.type = (direction); \
+- xf86eqEnqueue((ev))
+-#else
+-#define ENQUEUE(ev, code, direction, dev_type) \
+- (ev)->u.u.detail = (code); \
+- (ev)->u.u.type = (direction); \
+- mieqEnqueue((ev))
+-#endif
+-
+-static void startautorepeat(long keycode);
+-static CARD32 processautorepeat(OsTimerPtr timer, CARD32 now, pointer arg);
+-
+-static OsTimerPtr sunTimer = NULL;
+-
+-/* Map the Solaris keycodes to the "XFree86" keycodes. */
+-/*
+- * This doesn't seem right. It probably needs to be dependent on a keyboard
+- * type.
+- */
+-
+-/* Additional Sun Japanese Keyboard Keys not defined in common/atKeynames.h */
+-#define KEY_Kanji 0x82
+-#define KEY_Execute 0x83
+-
+-static unsigned char map[256] = {
+-#if defined(i386) || defined(__i386) || defined(__i386__) || defined(__x86)
+- KEY_NOTUSED, /* 0 */
+- KEY_Tilde, /* 1 */
+- KEY_1, /* 2 */
+- KEY_2, /* 3 */
+- KEY_3, /* 4 */
+- KEY_4, /* 5 */
+- KEY_5, /* 6 */
+- KEY_6, /* 7 */
+- KEY_7, /* 8 */
+- KEY_8, /* 9 */
+- KEY_9, /* 10 */
+- KEY_0, /* 11 */
+- KEY_Minus, /* 12 */
+- KEY_Equal, /* 13 */
+- 0x7D, /*KEY_P_YEN*/ /* 14 */
+- KEY_BackSpace, /* 15 */
+- KEY_Tab, /* 16 */
+- KEY_Q, /* 17 */
+- KEY_W, /* 18 */
+- KEY_E, /* 19 */
+- KEY_R, /* 20 */
+- KEY_T, /* 21 */
+- KEY_Y, /* 22 */
+- KEY_U, /* 23 */
+- KEY_I, /* 24 */
+- KEY_O, /* 25 */
+- KEY_P, /* 26 */
+- KEY_LBrace, /* 27 */
+- KEY_RBrace, /* 28 */
+- KEY_BSlash, /* 29 */
+- KEY_CapsLock, /* 30 */
+- KEY_A, /* 31 */
+- KEY_S, /* 32 */
+- KEY_D, /* 33 */
+- KEY_F, /* 34 */
+- KEY_G, /* 35 */
+- KEY_H, /* 36 */
+- KEY_J, /* 37 */
+- KEY_K, /* 38 */
+- KEY_L, /* 39 */
+- KEY_SemiColon, /* 40 */
+- KEY_Quote, /* 41 */
+- KEY_UNKNOWN, /* 42 */
+- KEY_Enter, /* 43 */
+- KEY_ShiftL, /* 44 */
+- KEY_Less, /* 45 */
+- KEY_Z, /* 46 */
+- KEY_X, /* 47 */
+- KEY_C, /* 48 */
+- KEY_V, /* 49 */
+- KEY_B, /* 50 */
+- KEY_N, /* 51 */
+- KEY_M, /* 52 */
+- KEY_Comma, /* 53 */
+- KEY_Period, /* 54 */
+- KEY_Slash, /* 55 */
+- KEY_BSlash2, /* 56 */
+- KEY_ShiftR, /* 57 */
+- KEY_LCtrl, /* 58 */
+- KEY_LMeta, /* 59 */
+- KEY_Alt, /* 60 */
+- KEY_Space, /* 61 */
+- KEY_AltLang, /* 62 */
+- KEY_RMeta, /* 63 */
+- KEY_RCtrl, /* 64 */
+- KEY_Menu, /* 65 */
+- KEY_UNKNOWN, /* 66 */
+- KEY_UNKNOWN, /* 67 */
+- KEY_UNKNOWN, /* 68 */
+- KEY_UNKNOWN, /* 69 */
+- KEY_UNKNOWN, /* 70 */
+- KEY_UNKNOWN, /* 71 */
+- KEY_UNKNOWN, /* 72 */
+- KEY_UNKNOWN, /* 73 */
+- KEY_UNKNOWN, /* 74 */
+- KEY_Insert, /* 75 */
+- KEY_Delete, /* 76 */
+- KEY_UNKNOWN, /* 77 */
+- KEY_UNKNOWN, /* 78 */
+- KEY_Left, /* 79 */
+- KEY_Home, /* 80 */
+- KEY_End, /* 81 */
+- KEY_UNKNOWN, /* 82 */
+- KEY_Up, /* 83 */
+- KEY_Down, /* 84 */
+- KEY_PgUp, /* 85 */
+- KEY_PgDown, /* 86 */
+- KEY_UNKNOWN, /* 87 */
+- KEY_UNKNOWN, /* 88 */
+- KEY_Right, /* 89 */
+- KEY_NumLock, /* 90 */
+- KEY_KP_7, /* 91 */
+- KEY_KP_4, /* 92 */
+- KEY_KP_1, /* 93 */
+- KEY_UNKNOWN, /* 94 */
+- KEY_KP_Divide, /* 95 */
+- KEY_KP_8, /* 96 */
+- KEY_KP_5, /* 97 */
+- KEY_KP_2, /* 98 */
+- KEY_KP_0, /* 99 */
+- KEY_KP_Multiply, /* 100 */
+- KEY_KP_9, /* 101 */
+- KEY_KP_6, /* 102 */
+- KEY_KP_3, /* 103 */
+- KEY_KP_Decimal, /* 104 */
+- KEY_KP_Minus, /* 105 */
+- KEY_KP_Plus, /* 106 */
+- KEY_UNKNOWN, /* 107 */
+- KEY_KP_Enter, /* 108 */
+- KEY_UNKNOWN, /* 109 */
+- KEY_Escape, /* 110 */
+- KEY_UNKNOWN, /* 111 */
+- KEY_F1, /* 112 */
+- KEY_F2, /* 113 */
+- KEY_F3, /* 114 */
+- KEY_F4, /* 115 */
+- KEY_F5, /* 116 */
+- KEY_F6, /* 117 */
+- KEY_F7, /* 118 */
+- KEY_F8, /* 119 */
+- KEY_F9, /* 120 */
+- KEY_F10, /* 121 */
+- KEY_F11, /* 122 */
+- KEY_F12, /* 123 */
+- KEY_Print, /* 124 */
+- KEY_ScrollLock, /* 125 */
+- KEY_Pause, /* 126 */
+- KEY_UNKNOWN, /* 127 */
+- KEY_UNKNOWN, /* 128 */
+- KEY_UNKNOWN, /* 129 */
+- KEY_UNKNOWN, /* 130 */
+- KEY_NFER, /* 131 */
+- KEY_XFER, /* 132 */
+- KEY_HKTG, /* 133 */
+- KEY_UNKNOWN, /* 134 */
+-#elif defined(sparc) || defined(__sparc__)
+- KEY_UNKNOWN, /* 0x00 */
+- KEY_UNKNOWN, /* 0x01 */
+- KEY_UNKNOWN, /* 0x02 */
+- KEY_UNKNOWN, /* 0x03 */
+- KEY_UNKNOWN, /* 0x04 */
+- KEY_F1, /* 0x05 */
+- KEY_F2, /* 0x06 */
+- KEY_F10, /* 0x07 */
+- KEY_F3, /* 0x08 */
+- KEY_F11, /* 0x09 */
+- KEY_F4, /* 0x0A */
+- KEY_F12, /* 0x0B */
+- KEY_F5, /* 0x0C */
+- KEY_UNKNOWN, /* 0x0D */
+- KEY_F6, /* 0x0E */
+- KEY_UNKNOWN, /* 0x0F */
+- KEY_F7, /* 0x10 */
+- KEY_F8, /* 0x11 */
+- KEY_F9, /* 0x12 */
+- KEY_Alt, /* 0x13 */
+- KEY_Up, /* 0x14 */
+- KEY_Pause, /* 0x15 */
+- KEY_SysReqest, /* 0x16 */
+- KEY_ScrollLock, /* 0x17 */
+- KEY_Left, /* 0x18 */
+- KEY_UNKNOWN, /* 0x19 */
+- KEY_UNKNOWN, /* 0x1A */
+- KEY_Down, /* 0x1B */
+- KEY_Right, /* 0x1C */
+- KEY_Escape, /* 0x1D */
+- KEY_1, /* 0x1E */
+- KEY_2, /* 0x1F */
+- KEY_3, /* 0x20 */
+- KEY_4, /* 0x21 */
+- KEY_5, /* 0x22 */
+- KEY_6, /* 0x23 */
+- KEY_7, /* 0x24 */
+- KEY_8, /* 0x25 */
+- KEY_9, /* 0x26 */
+- KEY_0, /* 0x27 */
+- KEY_Minus, /* 0x28 */
+- KEY_Equal, /* 0x29 */
+- KEY_Tilde, /* 0x2A */
+- KEY_BackSpace, /* 0x2B */
+- KEY_Insert, /* 0x2C */
+- KEY_UNKNOWN, /* 0x2D */
+- KEY_KP_Divide, /* 0x2E */
+- KEY_KP_Multiply, /* 0x2F */
+- KEY_UNKNOWN, /* 0x30 */
+- KEY_UNKNOWN, /* 0x31 */
+- KEY_KP_Decimal, /* 0x32 */
+- KEY_UNKNOWN, /* 0x33 */
+- KEY_Home, /* 0x34 */
+- KEY_Tab, /* 0x35 */
+- KEY_Q, /* 0x36 */
+- KEY_W, /* 0x37 */
+- KEY_E, /* 0x38 */
+- KEY_R, /* 0x39 */
+- KEY_T, /* 0x3A */
+- KEY_Y, /* 0x3B */
+- KEY_U, /* 0x3C */
+- KEY_I, /* 0x3D */
+- KEY_O, /* 0x3E */
+- KEY_P, /* 0x3F */
+- KEY_LBrace, /* 0x40 */
+- KEY_RBrace, /* 0x41 */
+- KEY_Delete, /* 0x42 */
+- KEY_UNKNOWN, /* 0x43 */
+- KEY_KP_7, /* 0x44 */
+- KEY_KP_8, /* 0x45 */
+- KEY_KP_9, /* 0x46 */
+- KEY_KP_Minus, /* 0x47 */
+- KEY_UNKNOWN, /* 0x48 */
+- KEY_UNKNOWN, /* 0x49 */
+- KEY_End, /* 0x4A */
+- KEY_UNKNOWN, /* 0x4B */
+- KEY_LCtrl, /* 0x4C */
+- KEY_A, /* 0x4D */
+- KEY_S, /* 0x4E */
+- KEY_D, /* 0x4F */
+- KEY_F, /* 0x50 */
+- KEY_G, /* 0x51 */
+- KEY_H, /* 0x52 */
+- KEY_J, /* 0x53 */
+- KEY_K, /* 0x54 */
+- KEY_L, /* 0x55 */
+- KEY_SemiColon, /* 0x56 */
+- KEY_Quote, /* 0x57 */
+- KEY_BSlash, /* 0x58 */
+- KEY_Enter, /* 0x59 */
+- KEY_KP_Enter, /* 0x5A */
+- KEY_KP_4, /* 0x5B */
+- KEY_KP_5, /* 0x5C */
+- KEY_KP_6, /* 0x5D */
+- KEY_KP_0, /* 0x5E */
+- KEY_UNKNOWN, /* 0x5F */
+- KEY_PgUp, /* 0x60 */
+- KEY_UNKNOWN, /* 0x61 */
+- KEY_NumLock, /* 0x62 */
+- KEY_ShiftL, /* 0x63 */
+- KEY_Z, /* 0x64 */
+- KEY_X, /* 0x65 */
+- KEY_C, /* 0x66 */
+- KEY_V, /* 0x67 */
+- KEY_B, /* 0x68 */
+- KEY_N, /* 0x69 */
+- KEY_M, /* 0x6A */
+- KEY_Comma, /* 0x6B */
+- KEY_Period, /* 0x6C */
+- KEY_Slash, /* 0x6D */
+- KEY_ShiftR, /* 0x6E */
+- KEY_UNKNOWN, /* 0x6F */
+- KEY_KP_1, /* 0x70 */
+- KEY_KP_2, /* 0x71 */
+- KEY_KP_3, /* 0x72 */
+- KEY_UNKNOWN, /* 0x73 */
+- KEY_UNKNOWN, /* 0x74 */
+- KEY_UNKNOWN, /* 0x75 */
+- KEY_UNKNOWN, /* 0x76 */
+- KEY_CapsLock, /* 0x77 */
+- KEY_LMeta, /* 0x78 */
+- KEY_Space, /* 0x79 */
+- KEY_RMeta, /* 0x7A */
+- KEY_PgDown, /* 0x7B */
+- KEY_UNKNOWN, /* 0x7C */
+- KEY_KP_Plus, /* 0x7D */
+- KEY_UNKNOWN, /* 0x7E */
+- KEY_UNKNOWN, /* 0x7F */
+-#endif
+- /* The rest default to KEY_UNKNOWN */
+-};
+-
+-#if defined(KB_USB)
+-static unsigned char usbmap[256] = {
+-/*
+- * partially taken from ../bsd/bsd_KbdMap.c
+- *
+- * added keycodes for Sun special keys (left function keys, audio control)
+- */
+- /* 0 */ KEY_NOTUSED,
+- /* 1 */ KEY_NOTUSED,
+- /* 2 */ KEY_NOTUSED,
+- /* 3 */ KEY_NOTUSED,
+- /* 4 */ KEY_A,
+- /* 5 */ KEY_B,
+- /* 6 */ KEY_C,
+- /* 7 */ KEY_D,
+- /* 8 */ KEY_E,
+- /* 9 */ KEY_F,
+- /* 10 */ KEY_G,
+- /* 11 */ KEY_H,
+- /* 12 */ KEY_I,
+- /* 13 */ KEY_J,
+- /* 14 */ KEY_K,
+- /* 15 */ KEY_L,
+- /* 16 */ KEY_M,
+- /* 17 */ KEY_N,
+- /* 18 */ KEY_O,
+- /* 19 */ KEY_P,
+- /* 20 */ KEY_Q,
+- /* 21 */ KEY_R,
+- /* 22 */ KEY_S,
+- /* 23 */ KEY_T,
+- /* 24 */ KEY_U,
+- /* 25 */ KEY_V,
+- /* 26 */ KEY_W,
+- /* 27 */ KEY_X,
+- /* 28 */ KEY_Y,
+- /* 29 */ KEY_Z,
+- /* 30 */ KEY_1, /* 1 !*/
+- /* 31 */ KEY_2, /* 2 @ */
+- /* 32 */ KEY_3, /* 3 # */
+- /* 33 */ KEY_4, /* 4 $ */
+- /* 34 */ KEY_5, /* 5 % */
+- /* 35 */ KEY_6, /* 6 ^ */
+- /* 36 */ KEY_7, /* 7 & */
+- /* 37 */ KEY_8, /* 8 * */
+- /* 38 */ KEY_9, /* 9 ( */
+- /* 39 */ KEY_0, /* 0 ) */
+- /* 40 */ KEY_Enter, /* Return */
+- /* 41 */ KEY_Escape, /* Escape */
+- /* 42 */ KEY_BackSpace, /* Backspace Delete */
+- /* 43 */ KEY_Tab, /* Tab */
+- /* 44 */ KEY_Space, /* Space */
+- /* 45 */ KEY_Minus, /* - _ */
+- /* 46 */ KEY_Equal, /* = + */
+- /* 47 */ KEY_LBrace, /* [ { */
+- /* 48 */ KEY_RBrace, /* ] } */
+- /* 49 */ KEY_BSlash, /* \ | */
+- /* 50 */ KEY_BSlash, /* \ _ # ~ on some keyboards */
+- /* 51 */ KEY_SemiColon, /* ; : */
+- /* 52 */ KEY_Quote, /* ' " */
+- /* 53 */ KEY_Tilde, /* ` ~ */
+- /* 54 */ KEY_Comma, /* , < */
+- /* 55 */ KEY_Period, /* . > */
+- /* 56 */ KEY_Slash, /* / ? */
+- /* 57 */ KEY_CapsLock, /* Caps Lock */
+- /* 58 */ KEY_F1, /* F1 */
+- /* 59 */ KEY_F2, /* F2 */
+- /* 60 */ KEY_F3, /* F3 */
+- /* 61 */ KEY_F4, /* F4 */
+- /* 62 */ KEY_F5, /* F5 */
+- /* 63 */ KEY_F6, /* F6 */
+- /* 64 */ KEY_F7, /* F7 */
+- /* 65 */ KEY_F8, /* F8 */
+- /* 66 */ KEY_F9, /* F9 */
+- /* 67 */ KEY_F10, /* F10 */
+- /* 68 */ KEY_F11, /* F11 */
+- /* 69 */ KEY_F12, /* F12 */
+- /* 70 */ KEY_Print, /* PrintScrn SysReq */
+- /* 71 */ KEY_ScrollLock, /* Scroll Lock */
+- /* 72 */ KEY_Pause, /* Pause Break */
+- /* 73 */ KEY_Insert, /* Insert XXX Help on some Mac Keyboards */
+- /* 74 */ KEY_Home, /* Home */
+- /* 75 */ KEY_PgUp, /* Page Up */
+- /* 76 */ KEY_Delete, /* Delete */
+- /* 77 */ KEY_End, /* End */
+- /* 78 */ KEY_PgDown, /* Page Down */
+- /* 79 */ KEY_Right, /* Right Arrow */
+- /* 80 */ KEY_Left, /* Left Arrow */
+- /* 81 */ KEY_Down, /* Down Arrow */
+- /* 82 */ KEY_Up, /* Up Arrow */
+- /* 83 */ KEY_NumLock, /* Num Lock */
+- /* 84 */ KEY_KP_Divide, /* Keypad / */
+- /* 85 */ KEY_KP_Multiply, /* Keypad * */
+- /* 86 */ KEY_KP_Minus, /* Keypad - */
+- /* 87 */ KEY_KP_Plus, /* Keypad + */
+- /* 88 */ KEY_KP_Enter, /* Keypad Enter */
+- /* 89 */ KEY_KP_1, /* Keypad 1 End */
+- /* 90 */ KEY_KP_2, /* Keypad 2 Down */
+- /* 91 */ KEY_KP_3, /* Keypad 3 Pg Down */
+- /* 92 */ KEY_KP_4, /* Keypad 4 Left */
+- /* 93 */ KEY_KP_5, /* Keypad 5 */
+- /* 94 */ KEY_KP_6, /* Keypad 6 */
+- /* 95 */ KEY_KP_7, /* Keypad 7 Home */
+- /* 96 */ KEY_KP_8, /* Keypad 8 Up */
+- /* 97 */ KEY_KP_9, /* KEypad 9 Pg Up */
+- /* 98 */ KEY_KP_0, /* Keypad 0 Ins */
+- /* 99 */ KEY_KP_Decimal, /* Keypad . Del */
+- /* 100 */ KEY_Less, /* < > on some keyboards */
+- /* 101 */ KEY_Menu, /* Menu */
+- /* 102 */ KEY_Power, /* Sun: Power */
+- /* 103 */ KEY_KP_Equal, /* Keypad = on Mac keyboards */
+- /* 104 */ KEY_NOTUSED,
+- /* 105 */ KEY_NOTUSED,
+- /* 106 */ KEY_NOTUSED,
+- /* 107 */ KEY_NOTUSED,
+- /* 108 */ KEY_NOTUSED,
+- /* 109 */ KEY_NOTUSED,
+- /* 110 */ KEY_NOTUSED,
+- /* 111 */ KEY_NOTUSED,
+- /* 112 */ KEY_NOTUSED,
+- /* 113 */ KEY_NOTUSED,
+- /* 114 */ KEY_NOTUSED,
+- /* 115 */ KEY_NOTUSED,
+- /* 116 */ KEY_L7, /* Sun: Open */
+- /* 117 */ KEY_Help, /* Sun: Help */
+- /* 118 */ KEY_L3, /* Sun: Props */
+- /* 119 */ KEY_L5, /* Sun: Front */
+- /* 120 */ KEY_L1, /* Sun: Stop */
+- /* 121 */ KEY_L2, /* Sun: Again */
+- /* 122 */ KEY_L4, /* Sun: Undo */
+- /* 123 */ KEY_L10, /* Sun: Cut */
+- /* 124 */ KEY_L6, /* Sun: Copy */
+- /* 125 */ KEY_L8, /* Sun: Paste */
+- /* 126 */ KEY_L9, /* Sun: Find */
+- /* 127 */ KEY_Mute, /* Sun: AudioMute */
+- /* 128 */ KEY_AudioRaise, /* Sun: AudioRaise */
+- /* 129 */ KEY_AudioLower, /* Sun: AudioLower */
+- /* 130 */ KEY_NOTUSED,
+- /* 131 */ KEY_NOTUSED,
+- /* 132 */ KEY_NOTUSED,
+- /* 133 */ KEY_NOTUSED,
+- /* 134 */ KEY_NOTUSED,
+- /* 135 */ KEY_BSlash2, /* Sun Japanese Kbd: Backslash / Underscore */
+- /* 136 */ KEY_XFER, /* Sun Japanese Kbd: Henkan Mode */
+- /* 137 */ KEY_Yen, /* Sun Japanese Kbd: Yen / Brokenbar */
+- /* 138 */ KEY_Kanji, /* Sun Japanese Kbd: Kanji */
+- /* 139 */ KEY_Execute, /* Sun Japanese Kbd: Execute */
+- /* 140 */ KEY_NOTUSED,
+- /* 141 */ KEY_NOTUSED,
+- /* 142 */ KEY_NOTUSED,
+- /* 143 */ KEY_NOTUSED,
+- /* 144 */ KEY_NOTUSED,
+- /* 145 */ KEY_NOTUSED,
+- /* 146 */ KEY_NOTUSED,
+- /* 147 */ KEY_NOTUSED,
+- /* 148 */ KEY_NOTUSED,
+- /* 149 */ KEY_NOTUSED,
+- /* 150 */ KEY_NOTUSED,
+- /* 151 */ KEY_NOTUSED,
+- /* 152 */ KEY_NOTUSED,
+- /* 153 */ KEY_NOTUSED,
+- /* 154 */ KEY_NOTUSED,
+- /* 155 */ KEY_NOTUSED,
+- /* 156 */ KEY_NOTUSED,
+- /* 157 */ KEY_NOTUSED,
+- /* 158 */ KEY_NOTUSED,
+- /* 159 */ KEY_NOTUSED,
+- /* 160 */ KEY_NOTUSED,
+- /* 161 */ KEY_NOTUSED,
+- /* 162 */ KEY_NOTUSED,
+- /* 163 */ KEY_NOTUSED,
+- /* 164 */ KEY_NOTUSED,
+- /* 165 */ KEY_NOTUSED,
+- /* 166 */ KEY_NOTUSED,
+- /* 167 */ KEY_NOTUSED,
+- /* 168 */ KEY_NOTUSED,
+- /* 169 */ KEY_NOTUSED,
+- /* 170 */ KEY_NOTUSED,
+- /* 171 */ KEY_NOTUSED,
+- /* 172 */ KEY_NOTUSED,
+- /* 173 */ KEY_NOTUSED,
+- /* 174 */ KEY_NOTUSED,
+- /* 175 */ KEY_NOTUSED,
+- /* 176 */ KEY_NOTUSED,
+- /* 177 */ KEY_NOTUSED,
+- /* 178 */ KEY_NOTUSED,
+- /* 179 */ KEY_NOTUSED,
+- /* 180 */ KEY_NOTUSED,
+- /* 181 */ KEY_NOTUSED,
+- /* 182 */ KEY_NOTUSED,
+- /* 183 */ KEY_NOTUSED,
+- /* 184 */ KEY_NOTUSED,
+- /* 185 */ KEY_NOTUSED,
+- /* 186 */ KEY_NOTUSED,
+- /* 187 */ KEY_NOTUSED,
+- /* 188 */ KEY_NOTUSED,
+- /* 189 */ KEY_NOTUSED,
+- /* 190 */ KEY_NOTUSED,
+- /* 191 */ KEY_NOTUSED,
+- /* 192 */ KEY_NOTUSED,
+- /* 193 */ KEY_NOTUSED,
+- /* 194 */ KEY_NOTUSED,
+- /* 195 */ KEY_NOTUSED,
+- /* 196 */ KEY_NOTUSED,
+- /* 197 */ KEY_NOTUSED,
+- /* 198 */ KEY_NOTUSED,
+- /* 199 */ KEY_NOTUSED,
+- /* 200 */ KEY_NOTUSED,
+- /* 201 */ KEY_NOTUSED,
+- /* 202 */ KEY_NOTUSED,
+- /* 203 */ KEY_NOTUSED,
+- /* 204 */ KEY_NOTUSED,
+- /* 205 */ KEY_NOTUSED,
+- /* 206 */ KEY_NOTUSED,
+- /* 207 */ KEY_NOTUSED,
+- /* 208 */ KEY_NOTUSED,
+- /* 209 */ KEY_NOTUSED,
+- /* 210 */ KEY_NOTUSED,
+- /* 211 */ KEY_NOTUSED,
+- /* 212 */ KEY_NOTUSED,
+- /* 213 */ KEY_NOTUSED,
+- /* 214 */ KEY_NOTUSED,
+- /* 215 */ KEY_NOTUSED,
+- /* 216 */ KEY_NOTUSED,
+- /* 217 */ KEY_NOTUSED,
+- /* 218 */ KEY_NOTUSED,
+- /* 219 */ KEY_NOTUSED,
+- /* 220 */ KEY_NOTUSED,
+- /* 221 */ KEY_NOTUSED,
+- /* 222 */ KEY_NOTUSED,
+- /* 223 */ KEY_NOTUSED,
+- /* 224 */ KEY_LCtrl, /* Left Control */
+- /* 225 */ KEY_ShiftL, /* Left Shift */
+- /* 226 */ KEY_Alt, /* Left Alt */
+- /* 227 */ KEY_LMeta, /* Left Meta */
+- /* 228 */ KEY_RCtrl, /* Right Control */
+- /* 229 */ KEY_ShiftR, /* Right Shift */
+- /* 230 */ KEY_AltLang, /* Right Alt, AKA AltGr */
+- /* 231 */ KEY_RMeta, /* Right Meta */
+-};
+-
+-#endif /* KB_USB */
+-
+-_X_HIDDEN const unsigned char *
+-sunGetKbdMapping(int ktype) {
+-#if defined(KB_USB)
+- if (ktype == KB_USB)
+- return usbmap;
+- else
+-#endif
+- return map;
+-}
+-
+-
+-/*
+- * sunPostKbdEvent --
+- * Translate the raw hardware Firm_event into an XEvent, and tell DIX
+- * about it. KeyCode preprocessing and so on is done ...
+- *
+- * Most of the Solaris stuff has whacked Panix/PC98 support in the
+- * interests of simplicity - DWH 8/30/99
+- */
+-
+-_X_HIDDEN void
+-sunPostKbdEvent(int sun_ktype, Firm_event *event)
+-{
+- Bool down;
+- KeyClassRec *keyc = ((DeviceIntPtr)xf86Info.pKeyboard)->key;
+- Bool updateLeds = FALSE;
+- xEvent kevent;
+- KeySym *keysym;
+- int keycode;
+- static int lockkeys = 0;
+-
+- /* Give down a value */
+- if (event->value == VKEY_DOWN)
+- down = TRUE;
+- else
+- down = FALSE;
+-
+-
+-#if defined(KB_USB)
+- if(sun_ktype == KB_USB)
+- keycode = usbmap[event->id];
+- else
+-#endif
+- keycode = map[event->id];
+-
+- /*
+- * and now get some special keysequences
+- */
+-
+-#ifdef XKB
+- if (((xf86Info.ddxSpecialKeys == SKWhenNeeded) &&
+- (!xf86Info.ActionKeyBindingsSet)) ||
+- noXkbExtension || (xf86Info.ddxSpecialKeys == SKAlways))
+-#endif
+- {
+- if (!(ModifierDown(ShiftMask)) &&
+- ((ModifierDown(ControlMask | AltMask)) ||
+- (ModifierDown(ControlMask | AltLangMask))))
+- {
+- switch (keycode) {
+- /*
+- * The idea here is to pass the scancode down to a list of
+- * registered routines. There should be some standard conventions
+- * for processing certain keys.
+- */
+- case KEY_BackSpace:
+- xf86ProcessActionEvent(ACTION_TERMINATE, NULL);
+- break;
+-
+- /*
+- * Check grabs
+- */
+- case KEY_KP_Divide:
+- xf86ProcessActionEvent(ACTION_DISABLEGRAB, NULL);
+- break;
+- case KEY_KP_Multiply:
+- xf86ProcessActionEvent(ACTION_CLOSECLIENT, NULL);
+- break;
+-
+- /*
+- * Video mode switches
+- */
+- case KEY_KP_Minus: /* Keypad - */
+- if (down) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
+- if (!xf86Info.dontZoom) return;
+- break;
+-
+- case KEY_KP_Plus: /* Keypad + */
+- if (down) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
+- if (!xf86Info.dontZoom) return;
+- break;
+- }
+- }
+- }
+-
+- /*
+- * Now map the scancodes to real X-keycodes ...
+- */
+- if (keycode == KEY_NOTUSED) {
+- xf86MsgVerb(X_INFO, 0,
+- "raw code %d mapped to KEY_NOTUSED -- please report\n", event->id);
+- return;
+- }
+- if (keycode == KEY_UNKNOWN) {
+- xf86MsgVerb(X_INFO, 0,
+- "raw code %d mapped to KEY_UNKNOWN -- please report\n", event->id);
+- return;
+- }
+- keycode += MIN_KEYCODE;
+- keysym = keyc->curKeySyms.map +
+- (keyc->curKeySyms.mapWidth *
+- (keycode - keyc->curKeySyms.minKeyCode));
+-
+-#ifdef XKB
+- if (noXkbExtension)
+-#endif
+- {
+- /*
+- * Toggle lock keys.
+- */
+-#define CAPSFLAG 0x01
+-#define NUMFLAG 0x02
+-#define SCROLLFLAG 0x04
+-#define MODEFLAG 0x08
+-
+- if (down) {
+- /*
+- * Handle the KeyPresses of the lock keys.
+- */
+-
+- switch (keysym[0]) {
+-
+- case XK_Caps_Lock:
+- if (lockkeys & CAPSFLAG) {
+- lockkeys &= ~CAPSFLAG;
+- return;
+- }
+- lockkeys |= CAPSFLAG;
+- updateLeds = TRUE;
+- xf86Info.capsLock = down;
+- break;
+-
+- case XK_Num_Lock:
+- if (lockkeys & NUMFLAG) {
+- lockkeys &= ~NUMFLAG;
+- return;
+- }
+- lockkeys |= NUMFLAG;
+- updateLeds = TRUE;
+- xf86Info.numLock = down;
+- break;
+-
+- case XK_Scroll_Lock:
+- if (lockkeys & SCROLLFLAG) {
+- lockkeys &= ~SCROLLFLAG;
+- return;
+- }
+- lockkeys |= SCROLLFLAG;
+- updateLeds = TRUE;
+- xf86Info.scrollLock = down;
+- break;
+- }
+- } else {
+- /*
+- * Handle the releases of the lock keys.
+- */
+-
+- switch (keysym[0]) {
+-
+- case XK_Caps_Lock:
+- if (lockkeys & CAPSFLAG)
+- return;
+- updateLeds = TRUE;
+- xf86Info.capsLock = down;
+- break;
+-
+- case XK_Num_Lock:
+- if (lockkeys & NUMFLAG)
+- return;
+- updateLeds = TRUE;
+- xf86Info.numLock = down;
+- break;
+-
+- case XK_Scroll_Lock:
+- if (lockkeys & SCROLLFLAG)
+- return;
+- updateLeds = TRUE;
+- xf86Info.scrollLock = down;
+- break;
+- }
+- }
+-
+- if (updateLeds)
+- xf86KbdLeds();
+-
+- /*
+- * If this keycode is not a modifier key, and its down initiate the
+- * autorepeate sequence. (Only necessary if not using XKB).
+- *
+- * If its not down, then reset the timer.
+- */
+- if (!keyc->modifierMap[keycode]) {
+- if (down) {
+- startautorepeat(keycode);
+- } else {
+- TimerFree(sunTimer);
+- sunTimer = NULL;
+- }
+- }
+- }
+-
+- xf86Info.lastEventTime =
+- kevent.u.keyButtonPointer.time =
+- GetTimeInMillis();
+-
+- /*
+- * And now send these prefixes ...
+- * NOTE: There cannot be multiple Mode_Switch keys !!!!
+- */
+-
+- ENQUEUE(&kevent, keycode, (down ? KeyPress : KeyRelease), XE_KEYBOARD);
+-}
+-
+-
+-
+-/*
+- * Autorepeat stuff
+- */
+-
+-void
+-startautorepeat(long keycode)
+-{
+- sunTimer = TimerSet(sunTimer, /* Timer */
+- 0, /* Flags */
+- xf86Info.kbdDelay, /* millis */
+- processautorepeat, /* callback */
+- (pointer) keycode); /* arg for timer */
+-}
+-
+-CARD32
+-processautorepeat(OsTimerPtr timer, CARD32 now, pointer arg)
+-{
+- xEvent kevent;
+- int keycode;
+-
+- keycode = (long)arg;
+-
+- xf86Info.lastEventTime =
+- kevent.u.keyButtonPointer.time =
+- GetTimeInMillis();
+-
+- /*
+- * Repeat a key by faking a KeyRelease, and a KeyPress event in rapid
+- * succession
+- */
+-
+- ENQUEUE(&kevent, keycode, KeyRelease, XE_KEYBOARD);
+- ENQUEUE(&kevent, keycode, KeyPress, XE_KEYBOARD);
+-
+- /* And return the appropriate value so we get rescheduled */
+- return xf86Info.kbdRate;
+-}
+diff -ruN xf86-input-keyboard-1.2.0/src/sun_kbdMap.c xf86-input-keyboard/src/sun_kbdMap.c
+--- xf86-input-keyboard-1.2.0/src/sun_kbdMap.c 1970-01-01 00:00:00.000000000 +0000
++++ xf86-input-keyboard/src/sun_kbdMap.c 2007-09-03 10:34:00.000000000 +0000
+@@ -0,0 +1,671 @@
++/*
++ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
++ * Copyright 1993 by David Dawes <dawes@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 Thomas Roell and David Dawes not be used in advertising or
++ * publicity pertaining to distribution of the software without specific,
++ * written prior permission. Thomas Roell and David Dawes make no
++ * representations about the suitability of this software for any purpose. It
++ * is provided "as is" without express or implied warranty.
++ *
++ * THOMAS ROELL AND DAVID DAWES DISCLAIM ALL WARRANTIES WITH REGARD TO THIS
++ * SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS.
++ * IN NO EVENT SHALL THOMAS ROELL OR DAVID DAWES 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.
++ */
++
++#ifdef HAVE_CONFIG_H
++#include "config.h"
++#endif
++
++#include <X11/Xfuncproto.h>
++#include <X11/Sunkeysym.h>
++#include "atKeynames.h"
++#include "xf86OSKbd.h"
++#include "xf86Keymap.h"
++#include "sun_kbd.h"
++
++#include <sys/kbd.h>
++
++/* Map the Solaris keycodes to the "XFree86" keycodes. */
++
++/* Additional Sun Japanese Keyboard Keys not defined in common/atKeynames.h */
++#define KEY_Kanji 0x82
++#define KEY_Execute 0x83
++
++static unsigned char sunmap[256] = {
++#if defined(i386) || defined(__i386) || defined(__i386__) || defined(__x86)
++ KEY_NOTUSED, /* 0 */
++ KEY_Tilde, /* 1 */
++ KEY_1, /* 2 */
++ KEY_2, /* 3 */
++ KEY_3, /* 4 */
++ KEY_4, /* 5 */
++ KEY_5, /* 6 */
++ KEY_6, /* 7 */
++ KEY_7, /* 8 */
++ KEY_8, /* 9 */
++ KEY_9, /* 10 */
++ KEY_0, /* 11 */
++ KEY_Minus, /* 12 */
++ KEY_Equal, /* 13 */
++ 0x7D, /*KEY_P_YEN*/ /* 14 */
++ KEY_BackSpace, /* 15 */
++ KEY_Tab, /* 16 */
++ KEY_Q, /* 17 */
++ KEY_W, /* 18 */
++ KEY_E, /* 19 */
++ KEY_R, /* 20 */
++ KEY_T, /* 21 */
++ KEY_Y, /* 22 */
++ KEY_U, /* 23 */
++ KEY_I, /* 24 */
++ KEY_O, /* 25 */
++ KEY_P, /* 26 */
++ KEY_LBrace, /* 27 */
++ KEY_RBrace, /* 28 */
++ KEY_BSlash, /* 29 */
++ KEY_CapsLock, /* 30 */
++ KEY_A, /* 31 */
++ KEY_S, /* 32 */
++ KEY_D, /* 33 */
++ KEY_F, /* 34 */
++ KEY_G, /* 35 */
++ KEY_H, /* 36 */
++ KEY_J, /* 37 */
++ KEY_K, /* 38 */
++ KEY_L, /* 39 */
++ KEY_SemiColon, /* 40 */
++ KEY_Quote, /* 41 */
++ KEY_UNKNOWN, /* 42 */
++ KEY_Enter, /* 43 */
++ KEY_ShiftL, /* 44 */
++ KEY_Less, /* 45 */
++ KEY_Z, /* 46 */
++ KEY_X, /* 47 */
++ KEY_C, /* 48 */
++ KEY_V, /* 49 */
++ KEY_B, /* 50 */
++ KEY_N, /* 51 */
++ KEY_M, /* 52 */
++ KEY_Comma, /* 53 */
++ KEY_Period, /* 54 */
++ KEY_Slash, /* 55 */
++ KEY_BSlash2, /* 56 */
++ KEY_ShiftR, /* 57 */
++ KEY_LCtrl, /* 58 */
++ KEY_LMeta, /* 59 */
++ KEY_Alt, /* 60 */
++ KEY_Space, /* 61 */
++ KEY_AltLang, /* 62 */
++ KEY_RMeta, /* 63 */
++ KEY_RCtrl, /* 64 */
++ KEY_Menu, /* 65 */
++ KEY_UNKNOWN, /* 66 */
++ KEY_UNKNOWN, /* 67 */
++ KEY_UNKNOWN, /* 68 */
++ KEY_UNKNOWN, /* 69 */
++ KEY_UNKNOWN, /* 70 */
++ KEY_UNKNOWN, /* 71 */
++ KEY_UNKNOWN, /* 72 */
++ KEY_UNKNOWN, /* 73 */
++ KEY_UNKNOWN, /* 74 */
++ KEY_Insert, /* 75 */
++ KEY_Delete, /* 76 */
++ KEY_UNKNOWN, /* 77 */
++ KEY_UNKNOWN, /* 78 */
++ KEY_Left, /* 79 */
++ KEY_Home, /* 80 */
++ KEY_End, /* 81 */
++ KEY_UNKNOWN, /* 82 */
++ KEY_Up, /* 83 */
++ KEY_Down, /* 84 */
++ KEY_PgUp, /* 85 */
++ KEY_PgDown, /* 86 */
++ KEY_UNKNOWN, /* 87 */
++ KEY_UNKNOWN, /* 88 */
++ KEY_Right, /* 89 */
++ KEY_NumLock, /* 90 */
++ KEY_KP_7, /* 91 */
++ KEY_KP_4, /* 92 */
++ KEY_KP_1, /* 93 */
++ KEY_UNKNOWN, /* 94 */
++ KEY_KP_Divide, /* 95 */
++ KEY_KP_8, /* 96 */
++ KEY_KP_5, /* 97 */
++ KEY_KP_2, /* 98 */
++ KEY_KP_0, /* 99 */
++ KEY_KP_Multiply, /* 100 */
++ KEY_KP_9, /* 101 */
++ KEY_KP_6, /* 102 */
++ KEY_KP_3, /* 103 */
++ KEY_KP_Decimal, /* 104 */
++ KEY_KP_Minus, /* 105 */
++ KEY_KP_Plus, /* 106 */
++ KEY_UNKNOWN, /* 107 */
++ KEY_KP_Enter, /* 108 */
++ KEY_UNKNOWN, /* 109 */
++ KEY_Escape, /* 110 */
++ KEY_UNKNOWN, /* 111 */
++ KEY_F1, /* 112 */
++ KEY_F2, /* 113 */
++ KEY_F3, /* 114 */
++ KEY_F4, /* 115 */
++ KEY_F5, /* 116 */
++ KEY_F6, /* 117 */
++ KEY_F7, /* 118 */
++ KEY_F8, /* 119 */
++ KEY_F9, /* 120 */
++ KEY_F10, /* 121 */
++ KEY_F11, /* 122 */
++ KEY_F12, /* 123 */
++ KEY_Print, /* 124 */
++ KEY_ScrollLock, /* 125 */
++ KEY_Pause, /* 126 */
++ KEY_UNKNOWN, /* 127 */
++ KEY_UNKNOWN, /* 128 */
++ KEY_UNKNOWN, /* 129 */
++ KEY_UNKNOWN, /* 130 */
++ KEY_NFER, /* 131 */
++ KEY_XFER, /* 132 */
++ KEY_HKTG, /* 133 */
++ KEY_UNKNOWN, /* 134 */
++#elif defined(sparc) || defined(__sparc__)
++ KEY_UNKNOWN, /* 0x00 */
++ KEY_UNKNOWN, /* 0x01 */
++ KEY_UNKNOWN, /* 0x02 */
++ KEY_UNKNOWN, /* 0x03 */
++ KEY_UNKNOWN, /* 0x04 */
++ KEY_F1, /* 0x05 */
++ KEY_F2, /* 0x06 */
++ KEY_F10, /* 0x07 */
++ KEY_F3, /* 0x08 */
++ KEY_F11, /* 0x09 */
++ KEY_F4, /* 0x0A */
++ KEY_F12, /* 0x0B */
++ KEY_F5, /* 0x0C */
++ KEY_UNKNOWN, /* 0x0D */
++ KEY_F6, /* 0x0E */
++ KEY_UNKNOWN, /* 0x0F */
++ KEY_F7, /* 0x10 */
++ KEY_F8, /* 0x11 */
++ KEY_F9, /* 0x12 */
++ KEY_Alt, /* 0x13 */
++ KEY_Up, /* 0x14 */
++ KEY_Pause, /* 0x15 */
++ KEY_SysReqest, /* 0x16 */
++ KEY_ScrollLock, /* 0x17 */
++ KEY_Left, /* 0x18 */
++ KEY_UNKNOWN, /* 0x19 */
++ KEY_UNKNOWN, /* 0x1A */
++ KEY_Down, /* 0x1B */
++ KEY_Right, /* 0x1C */
++ KEY_Escape, /* 0x1D */
++ KEY_1, /* 0x1E */
++ KEY_2, /* 0x1F */
++ KEY_3, /* 0x20 */
++ KEY_4, /* 0x21 */
++ KEY_5, /* 0x22 */
++ KEY_6, /* 0x23 */
++ KEY_7, /* 0x24 */
++ KEY_8, /* 0x25 */
++ KEY_9, /* 0x26 */
++ KEY_0, /* 0x27 */
++ KEY_Minus, /* 0x28 */
++ KEY_Equal, /* 0x29 */
++ KEY_Tilde, /* 0x2A */
++ KEY_BackSpace, /* 0x2B */
++ KEY_Insert, /* 0x2C */
++ KEY_UNKNOWN, /* 0x2D */
++ KEY_KP_Divide, /* 0x2E */
++ KEY_KP_Multiply, /* 0x2F */
++ KEY_UNKNOWN, /* 0x30 */
++ KEY_UNKNOWN, /* 0x31 */
++ KEY_KP_Decimal, /* 0x32 */
++ KEY_UNKNOWN, /* 0x33 */
++ KEY_Home, /* 0x34 */
++ KEY_Tab, /* 0x35 */
++ KEY_Q, /* 0x36 */
++ KEY_W, /* 0x37 */
++ KEY_E, /* 0x38 */
++ KEY_R, /* 0x39 */
++ KEY_T, /* 0x3A */
++ KEY_Y, /* 0x3B */
++ KEY_U, /* 0x3C */
++ KEY_I, /* 0x3D */
++ KEY_O, /* 0x3E */
++ KEY_P, /* 0x3F */
++ KEY_LBrace, /* 0x40 */
++ KEY_RBrace, /* 0x41 */
++ KEY_Delete, /* 0x42 */
++ KEY_UNKNOWN, /* 0x43 */
++ KEY_KP_7, /* 0x44 */
++ KEY_KP_8, /* 0x45 */
++ KEY_KP_9, /* 0x46 */
++ KEY_KP_Minus, /* 0x47 */
++ KEY_UNKNOWN, /* 0x48 */
++ KEY_UNKNOWN, /* 0x49 */
++ KEY_End, /* 0x4A */
++ KEY_UNKNOWN, /* 0x4B */
++ KEY_LCtrl, /* 0x4C */
++ KEY_A, /* 0x4D */
++ KEY_S, /* 0x4E */
++ KEY_D, /* 0x4F */
++ KEY_F, /* 0x50 */
++ KEY_G, /* 0x51 */
++ KEY_H, /* 0x52 */
++ KEY_J, /* 0x53 */
++ KEY_K, /* 0x54 */
++ KEY_L, /* 0x55 */
++ KEY_SemiColon, /* 0x56 */
++ KEY_Quote, /* 0x57 */
++ KEY_BSlash, /* 0x58 */
++ KEY_Enter, /* 0x59 */
++ KEY_KP_Enter, /* 0x5A */
++ KEY_KP_4, /* 0x5B */
++ KEY_KP_5, /* 0x5C */
++ KEY_KP_6, /* 0x5D */
++ KEY_KP_0, /* 0x5E */
++ KEY_UNKNOWN, /* 0x5F */
++ KEY_PgUp, /* 0x60 */
++ KEY_UNKNOWN, /* 0x61 */
++ KEY_NumLock, /* 0x62 */
++ KEY_ShiftL, /* 0x63 */
++ KEY_Z, /* 0x64 */
++ KEY_X, /* 0x65 */
++ KEY_C, /* 0x66 */
++ KEY_V, /* 0x67 */
++ KEY_B, /* 0x68 */
++ KEY_N, /* 0x69 */
++ KEY_M, /* 0x6A */
++ KEY_Comma, /* 0x6B */
++ KEY_Period, /* 0x6C */
++ KEY_Slash, /* 0x6D */
++ KEY_ShiftR, /* 0x6E */
++ KEY_UNKNOWN, /* 0x6F */
++ KEY_KP_1, /* 0x70 */
++ KEY_KP_2, /* 0x71 */
++ KEY_KP_3, /* 0x72 */
++ KEY_UNKNOWN, /* 0x73 */
++ KEY_UNKNOWN, /* 0x74 */
++ KEY_UNKNOWN, /* 0x75 */
++ KEY_UNKNOWN, /* 0x76 */
++ KEY_CapsLock, /* 0x77 */
++ KEY_LMeta, /* 0x78 */
++ KEY_Space, /* 0x79 */
++ KEY_RMeta, /* 0x7A */
++ KEY_PgDown, /* 0x7B */
++ KEY_UNKNOWN, /* 0x7C */
++ KEY_KP_Plus, /* 0x7D */
++ KEY_UNKNOWN, /* 0x7E */
++ KEY_UNKNOWN, /* 0x7F */
++#endif
++ /* The rest default to KEY_UNKNOWN */
++};
++
++static
++TransMapRec sunTransMap = {
++ 0,
++ (sizeof(sunmap)/sizeof(unsigned char)),
++ sunmap
++};
++
++#if defined(KB_USB)
++static unsigned char usbmap[256] = {
++/*
++ * partially taken from ../bsd/bsd_KbdMap.c
++ *
++ * added keycodes for Sun special keys (left function keys, audio control)
++ */
++ /* 0 */ KEY_NOTUSED,
++ /* 1 */ KEY_NOTUSED,
++ /* 2 */ KEY_NOTUSED,
++ /* 3 */ KEY_NOTUSED,
++ /* 4 */ KEY_A,
++ /* 5 */ KEY_B,
++ /* 6 */ KEY_C,
++ /* 7 */ KEY_D,
++ /* 8 */ KEY_E,
++ /* 9 */ KEY_F,
++ /* 10 */ KEY_G,
++ /* 11 */ KEY_H,
++ /* 12 */ KEY_I,
++ /* 13 */ KEY_J,
++ /* 14 */ KEY_K,
++ /* 15 */ KEY_L,
++ /* 16 */ KEY_M,
++ /* 17 */ KEY_N,
++ /* 18 */ KEY_O,
++ /* 19 */ KEY_P,
++ /* 20 */ KEY_Q,
++ /* 21 */ KEY_R,
++ /* 22 */ KEY_S,
++ /* 23 */ KEY_T,
++ /* 24 */ KEY_U,
++ /* 25 */ KEY_V,
++ /* 26 */ KEY_W,
++ /* 27 */ KEY_X,
++ /* 28 */ KEY_Y,
++ /* 29 */ KEY_Z,
++ /* 30 */ KEY_1, /* 1 !*/
++ /* 31 */ KEY_2, /* 2 @ */
++ /* 32 */ KEY_3, /* 3 # */
++ /* 33 */ KEY_4, /* 4 $ */
++ /* 34 */ KEY_5, /* 5 % */
++ /* 35 */ KEY_6, /* 6 ^ */
++ /* 36 */ KEY_7, /* 7 & */
++ /* 37 */ KEY_8, /* 8 * */
++ /* 38 */ KEY_9, /* 9 ( */
++ /* 39 */ KEY_0, /* 0 ) */
++ /* 40 */ KEY_Enter, /* Return */
++ /* 41 */ KEY_Escape, /* Escape */
++ /* 42 */ KEY_BackSpace, /* Backspace Delete */
++ /* 43 */ KEY_Tab, /* Tab */
++ /* 44 */ KEY_Space, /* Space */
++ /* 45 */ KEY_Minus, /* - _ */
++ /* 46 */ KEY_Equal, /* = + */
++ /* 47 */ KEY_LBrace, /* [ { */
++ /* 48 */ KEY_RBrace, /* ] } */
++ /* 49 */ KEY_BSlash, /* \ | */
++ /* 50 */ KEY_BSlash, /* \ _ # ~ on some keyboards */
++ /* 51 */ KEY_SemiColon, /* ; : */
++ /* 52 */ KEY_Quote, /* ' " */
++ /* 53 */ KEY_Tilde, /* ` ~ */
++ /* 54 */ KEY_Comma, /* , < */
++ /* 55 */ KEY_Period, /* . > */
++ /* 56 */ KEY_Slash, /* / ? */
++ /* 57 */ KEY_CapsLock, /* Caps Lock */
++ /* 58 */ KEY_F1, /* F1 */
++ /* 59 */ KEY_F2, /* F2 */
++ /* 60 */ KEY_F3, /* F3 */
++ /* 61 */ KEY_F4, /* F4 */
++ /* 62 */ KEY_F5, /* F5 */
++ /* 63 */ KEY_F6, /* F6 */
++ /* 64 */ KEY_F7, /* F7 */
++ /* 65 */ KEY_F8, /* F8 */
++ /* 66 */ KEY_F9, /* F9 */
++ /* 67 */ KEY_F10, /* F10 */
++ /* 68 */ KEY_F11, /* F11 */
++ /* 69 */ KEY_F12, /* F12 */
++ /* 70 */ KEY_Print, /* PrintScrn SysReq */
++ /* 71 */ KEY_ScrollLock, /* Scroll Lock */
++ /* 72 */ KEY_Pause, /* Pause Break */
++ /* 73 */ KEY_Insert, /* Insert XXX Help on some Mac Keyboards */
++ /* 74 */ KEY_Home, /* Home */
++ /* 75 */ KEY_PgUp, /* Page Up */
++ /* 76 */ KEY_Delete, /* Delete */
++ /* 77 */ KEY_End, /* End */
++ /* 78 */ KEY_PgDown, /* Page Down */
++ /* 79 */ KEY_Right, /* Right Arrow */
++ /* 80 */ KEY_Left, /* Left Arrow */
++ /* 81 */ KEY_Down, /* Down Arrow */
++ /* 82 */ KEY_Up, /* Up Arrow */
++ /* 83 */ KEY_NumLock, /* Num Lock */
++ /* 84 */ KEY_KP_Divide, /* Keypad / */
++ /* 85 */ KEY_KP_Multiply, /* Keypad * */
++ /* 86 */ KEY_KP_Minus, /* Keypad - */
++ /* 87 */ KEY_KP_Plus, /* Keypad + */
++ /* 88 */ KEY_KP_Enter, /* Keypad Enter */
++ /* 89 */ KEY_KP_1, /* Keypad 1 End */
++ /* 90 */ KEY_KP_2, /* Keypad 2 Down */
++ /* 91 */ KEY_KP_3, /* Keypad 3 Pg Down */
++ /* 92 */ KEY_KP_4, /* Keypad 4 Left */
++ /* 93 */ KEY_KP_5, /* Keypad 5 */
++ /* 94 */ KEY_KP_6, /* Keypad 6 */
++ /* 95 */ KEY_KP_7, /* Keypad 7 Home */
++ /* 96 */ KEY_KP_8, /* Keypad 8 Up */
++ /* 97 */ KEY_KP_9, /* KEypad 9 Pg Up */
++ /* 98 */ KEY_KP_0, /* Keypad 0 Ins */
++ /* 99 */ KEY_KP_Decimal, /* Keypad . Del */
++ /* 100 */ KEY_Less, /* < > on some keyboards */
++ /* 101 */ KEY_Menu, /* Menu */
++ /* 102 */ KEY_Power, /* Sun: Power */
++ /* 103 */ KEY_KP_Equal, /* Keypad = on Mac keyboards */
++ /* 104 */ KEY_NOTUSED,
++ /* 105 */ KEY_NOTUSED,
++ /* 106 */ KEY_NOTUSED,
++ /* 107 */ KEY_NOTUSED,
++ /* 108 */ KEY_NOTUSED,
++ /* 109 */ KEY_NOTUSED,
++ /* 110 */ KEY_NOTUSED,
++ /* 111 */ KEY_NOTUSED,
++ /* 112 */ KEY_NOTUSED,
++ /* 113 */ KEY_NOTUSED,
++ /* 114 */ KEY_NOTUSED,
++ /* 115 */ KEY_NOTUSED,
++ /* 116 */ KEY_L7, /* Sun: Open */
++ /* 117 */ KEY_Help, /* Sun: Help */
++ /* 118 */ KEY_L3, /* Sun: Props */
++ /* 119 */ KEY_L5, /* Sun: Front */
++ /* 120 */ KEY_L1, /* Sun: Stop */
++ /* 121 */ KEY_L2, /* Sun: Again */
++ /* 122 */ KEY_L4, /* Sun: Undo */
++ /* 123 */ KEY_L10, /* Sun: Cut */
++ /* 124 */ KEY_L6, /* Sun: Copy */
++ /* 125 */ KEY_L8, /* Sun: Paste */
++ /* 126 */ KEY_L9, /* Sun: Find */
++ /* 127 */ KEY_Mute, /* Sun: AudioMute */
++ /* 128 */ KEY_AudioRaise, /* Sun: AudioRaise */
++ /* 129 */ KEY_AudioLower, /* Sun: AudioLower */
++ /* 130 */ KEY_NOTUSED,
++ /* 131 */ KEY_NOTUSED,
++ /* 132 */ KEY_NOTUSED,
++ /* 133 */ KEY_NOTUSED,
++ /* 134 */ KEY_NOTUSED,
++ /* 135 */ KEY_BSlash2, /* Sun Japanese Kbd: Backslash / Underscore */
++ /* 136 */ KEY_XFER, /* Sun Japanese Kbd: Henkan Mode */
++ /* 137 */ KEY_Yen, /* Sun Japanese Kbd: Yen / Brokenbar */
++ /* 138 */ KEY_Kanji, /* Sun Japanese Kbd: Kanji */
++ /* 139 */ KEY_Execute, /* Sun Japanese Kbd: Execute */
++ /* 140 */ KEY_NOTUSED,
++ /* 141 */ KEY_NOTUSED,
++ /* 142 */ KEY_NOTUSED,
++ /* 143 */ KEY_NOTUSED,
++ /* 144 */ KEY_NOTUSED,
++ /* 145 */ KEY_NOTUSED,
++ /* 146 */ KEY_NOTUSED,
++ /* 147 */ KEY_NOTUSED,
++ /* 148 */ KEY_NOTUSED,
++ /* 149 */ KEY_NOTUSED,
++ /* 150 */ KEY_NOTUSED,
++ /* 151 */ KEY_NOTUSED,
++ /* 152 */ KEY_NOTUSED,
++ /* 153 */ KEY_NOTUSED,
++ /* 154 */ KEY_NOTUSED,
++ /* 155 */ KEY_NOTUSED,
++ /* 156 */ KEY_NOTUSED,
++ /* 157 */ KEY_NOTUSED,
++ /* 158 */ KEY_NOTUSED,
++ /* 159 */ KEY_NOTUSED,
++ /* 160 */ KEY_NOTUSED,
++ /* 161 */ KEY_NOTUSED,
++ /* 162 */ KEY_NOTUSED,
++ /* 163 */ KEY_NOTUSED,
++ /* 164 */ KEY_NOTUSED,
++ /* 165 */ KEY_NOTUSED,
++ /* 166 */ KEY_NOTUSED,
++ /* 167 */ KEY_NOTUSED,
++ /* 168 */ KEY_NOTUSED,
++ /* 169 */ KEY_NOTUSED,
++ /* 170 */ KEY_NOTUSED,
++ /* 171 */ KEY_NOTUSED,
++ /* 172 */ KEY_NOTUSED,
++ /* 173 */ KEY_NOTUSED,
++ /* 174 */ KEY_NOTUSED,
++ /* 175 */ KEY_NOTUSED,
++ /* 176 */ KEY_NOTUSED,
++ /* 177 */ KEY_NOTUSED,
++ /* 178 */ KEY_NOTUSED,
++ /* 179 */ KEY_NOTUSED,
++ /* 180 */ KEY_NOTUSED,
++ /* 181 */ KEY_NOTUSED,
++ /* 182 */ KEY_NOTUSED,
++ /* 183 */ KEY_NOTUSED,
++ /* 184 */ KEY_NOTUSED,
++ /* 185 */ KEY_NOTUSED,
++ /* 186 */ KEY_NOTUSED,
++ /* 187 */ KEY_NOTUSED,
++ /* 188 */ KEY_NOTUSED,
++ /* 189 */ KEY_NOTUSED,
++ /* 190 */ KEY_NOTUSED,
++ /* 191 */ KEY_NOTUSED,
++ /* 192 */ KEY_NOTUSED,
++ /* 193 */ KEY_NOTUSED,
++ /* 194 */ KEY_NOTUSED,
++ /* 195 */ KEY_NOTUSED,
++ /* 196 */ KEY_NOTUSED,
++ /* 197 */ KEY_NOTUSED,
++ /* 198 */ KEY_NOTUSED,
++ /* 199 */ KEY_NOTUSED,
++ /* 200 */ KEY_NOTUSED,
++ /* 201 */ KEY_NOTUSED,
++ /* 202 */ KEY_NOTUSED,
++ /* 203 */ KEY_NOTUSED,
++ /* 204 */ KEY_NOTUSED,
++ /* 205 */ KEY_NOTUSED,
++ /* 206 */ KEY_NOTUSED,
++ /* 207 */ KEY_NOTUSED,
++ /* 208 */ KEY_NOTUSED,
++ /* 209 */ KEY_NOTUSED,
++ /* 210 */ KEY_NOTUSED,
++ /* 211 */ KEY_NOTUSED,
++ /* 212 */ KEY_NOTUSED,
++ /* 213 */ KEY_NOTUSED,
++ /* 214 */ KEY_NOTUSED,
++ /* 215 */ KEY_NOTUSED,
++ /* 216 */ KEY_NOTUSED,
++ /* 217 */ KEY_NOTUSED,
++ /* 218 */ KEY_NOTUSED,
++ /* 219 */ KEY_NOTUSED,
++ /* 220 */ KEY_NOTUSED,
++ /* 221 */ KEY_NOTUSED,
++ /* 222 */ KEY_NOTUSED,
++ /* 223 */ KEY_NOTUSED,
++ /* 224 */ KEY_LCtrl, /* Left Control */
++ /* 225 */ KEY_ShiftL, /* Left Shift */
++ /* 226 */ KEY_Alt, /* Left Alt */
++ /* 227 */ KEY_LMeta, /* Left Meta */
++ /* 228 */ KEY_RCtrl, /* Right Control */
++ /* 229 */ KEY_ShiftR, /* Right Shift */
++ /* 230 */ KEY_AltLang, /* Right Alt, AKA AltGr */
++ /* 231 */ KEY_RMeta, /* Right Meta */
++};
++
++static
++TransMapRec usbTransMap = {
++ 0,
++ (sizeof(usbmap)/sizeof(unsigned char)),
++ usbmap
++};
++#endif /* KB_USB */
++
++_X_HIDDEN void
++KbdGetMapping (InputInfoPtr pInfo, KeySymsPtr pKeySyms, CARD8 *pModMap)
++{
++ KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
++ sunKbdPrivPtr priv = (sunKbdPrivPtr) pKbd->private;
++ const unsigned char *keymap;
++ int i;
++ KeySym *k;
++
++#if defined(KB_USB)
++ if (priv->ktype == KB_USB)
++ pKbd->scancodeMap = &usbTransMap;
++ else
++#endif
++ pKbd->scancodeMap = &sunTransMap;
++
++ /*
++ * Add Sun keyboard keysyms to default map
++ */
++#define map_for_key(k,c) map[(k * GLYPHS_PER_KEY) + c]
++ map_for_key(KEY_Kanji, 0) = XK_Kanji;
++ map_for_key(KEY_Execute, 0) = XK_Execute;
++ map_for_key(KEY_Power, 0) = SunXK_PowerSwitch;
++ map_for_key(KEY_Power, 1) = SunXK_PowerSwitchShift;
++ map_for_key(KEY_Mute, 0) = SunXK_AudioMute;
++ map_for_key(KEY_Mute, 1) = SunXK_VideoDegauss;
++ map_for_key(KEY_AudioLower, 0) = SunXK_AudioLowerVolume;
++ map_for_key(KEY_AudioLower, 1) = SunXK_VideoLowerBrightness;
++ map_for_key(KEY_AudioRaise, 0) = SunXK_AudioRaiseVolume;
++ map_for_key(KEY_AudioRaise, 1) = SunXK_VideoRaiseBrightness;
++ map_for_key(KEY_Help, 0) = XK_Help;
++ map_for_key(KEY_L1, 0) = XK_L1;
++ map_for_key(KEY_L2, 0) = XK_L2;
++ map_for_key(KEY_L3, 0) = XK_L3;
++ map_for_key(KEY_L4, 0) = XK_L4;
++ map_for_key(KEY_L5, 0) = XK_L5;
++ map_for_key(KEY_L6, 0) = XK_L6;
++ map_for_key(KEY_L7, 0) = XK_L7;
++ map_for_key(KEY_L8, 0) = XK_L8;
++ map_for_key(KEY_L9, 0) = XK_L9;
++ map_for_key(KEY_L10, 0) = XK_L10;
++ map_for_key(KEY_F11, 0) = SunXK_F36;
++ map_for_key(KEY_F12, 0) = SunXK_F37;
++ map_for_key(KEY_Menu, 0) = XK_Multi_key;
++
++ /*
++ * compute the modifier map
++ */
++ for (i = 0; i < MAP_LENGTH; i++)
++ pModMap[i] = NoSymbol; /* make sure it is restored */
++
++ for (k = map, i = MIN_KEYCODE;
++ i < (NUM_KEYCODES + MIN_KEYCODE);
++ i++, k += 4)
++ {
++ switch(*k) {
++
++ case XK_Shift_L:
++ case XK_Shift_R:
++ pModMap[i] = ShiftMask;
++ break;
++
++ case XK_Control_L:
++ case XK_Control_R:
++ pModMap[i] = ControlMask;
++ break;
++
++ case XK_Caps_Lock:
++ pModMap[i] = LockMask;
++ break;
++
++ case XK_Alt_L:
++ case XK_Alt_R:
++ pModMap[i] = AltMask;
++ break;
++
++ case XK_Num_Lock:
++ pModMap[i] = NumLockMask;
++ break;
++
++ case XK_Scroll_Lock:
++ pModMap[i] = ScrollLockMask;
++ break;
++
++ /* kana support */
++ case XK_Kana_Lock:
++ case XK_Kana_Shift:
++ pModMap[i] = KanaMask;
++ break;
++
++ /* alternate toggle for multinational support */
++ case XK_Mode_switch:
++ pModMap[i] = AltLangMask;
++ break;
++
++ }
++ }
++
++ pKeySyms->map = map;
++ pKeySyms->mapWidth = GLYPHS_PER_KEY;
++ pKeySyms->minKeyCode = MIN_KEYCODE;
++ pKeySyms->maxKeyCode = MAX_KEYCODE;
++}
+diff -ruN xf86-input-keyboard-1.2.0/src/xf86Keymap.h xf86-input-keyboard/src/xf86Keymap.h
+--- xf86-input-keyboard-1.2.0/src/xf86Keymap.h 1970-01-01 00:00:00.000000000 +0000
++++ xf86-input-keyboard/src/xf86Keymap.h 2007-09-03 10:34:00.000000000 +0000
+@@ -0,0 +1,308 @@
++
++/*
++ * Copyright (c) 1994-2002 by The XFree86 Project, Inc.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Software"),
++ * to deal in the Software without restriction, including without limitation
++ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ *
++ * Except as contained in this notice, the name of the copyright holder(s)
++ * and author(s) 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 holder(s) and author(s).
++ */
++
++/*
++ *
++ * For Scancodes see notes in atKeynames.h !!!!
++ *
++ */
++/* $XConsortium: xf86Keymap.h /main/14 1996/02/21 17:38:47 kaleb $ */
++
++#include "xorg-server.h"
++
++static KeySym map[NUM_KEYCODES * GLYPHS_PER_KEY] = {
++
++ /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x01 */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
++ /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
++ /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
++ /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
++ /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
++ /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
++ /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
++ /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
++ /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
++ /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
++ /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
++ /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
++ /* 0x0e */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x0f */ XK_Tab, XK_ISO_Left_Tab,NoSymbol, NoSymbol,
++ /* 0x10 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x11 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x12 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x13 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x14 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x15 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x16 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x17 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x18 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x19 */ XK_P, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x1a */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
++ /* 0x1b */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
++ /* 0x1c */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x1d */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x1e */ XK_A, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x1f */ XK_S, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x20 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x21 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x22 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x23 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x24 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x25 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x26 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x27 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
++ /* 0x28 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
++ /* 0x29 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
++ /* 0x2a */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x2b */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
++ /* 0x2c */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x2d */ XK_X, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x2e */ XK_C, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x2f */ XK_V, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x30 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x31 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x32 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x33 */ XK_comma, XK_less, NoSymbol, NoSymbol,
++ /* 0x34 */ XK_period, XK_greater, NoSymbol, NoSymbol,
++ /* 0x35 */ XK_slash, XK_question, NoSymbol, NoSymbol,
++ /* 0x36 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x37 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x38 */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
++ /* 0x39 */ XK_space, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3a */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3b */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3c */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3d */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3e */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3f */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x40 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x41 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x42 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x43 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x44 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x45 */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x46 */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x47 */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
++ /* 0x48 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
++ /* 0x49 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
++ /* 0x4a */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x4b */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
++ /* 0x4c */ XK_KP_Begin, XK_KP_5, NoSymbol, NoSymbol,
++ /* 0x4d */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
++ /* 0x4e */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x4f */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
++ /* 0x50 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
++ /* 0x51 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
++ /* 0x52 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
++ /* 0x53 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
++ /* 0x54 */ XK_Sys_Req, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x55 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x56 */ XK_less, XK_greater, NoSymbol, NoSymbol,
++ /* 0x57 */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x58 */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x59 */ XK_Home, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5a */ XK_Up, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5b */ XK_Prior, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5c */ XK_Left, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5d */ XK_Begin, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5e */ XK_Right, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5f */ XK_End, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x60 */ XK_Down, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x61 */ XK_Next, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x62 */ XK_Insert, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x63 */ XK_Delete, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x64 */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x65 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x66 */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x67 */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x68 */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x69 */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
++ /* 0x6a */ XK_Break, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6b */ XK_Meta_L, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6c */ XK_Meta_R, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6d */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6e */ XK_F13, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6f */ XK_F14, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x70 */ XK_F15, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x71 */ XK_F16, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x72 */ XK_F17, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x73 */ XK_backslash, XK_underscore, NoSymbol, NoSymbol,
++ /* 0x74 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x75 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x76 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x77 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x78 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x79 */ XK_Henkan, XK_Mode_switch, NoSymbol, NoSymbol,
++ /* 0x7a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7b */ XK_Muhenkan, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7d */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
++ /* 0x7e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++};
++
++#if !defined(Lynx) && \
++ !defined(__UNIXOS2__) && \
++ !defined(__mips__) && \
++ !defined(linux) && \
++ !defined(CSRG_BASED) && \
++ !defined(__CYGWIN__) && \
++ !defined(__SOL8__) && \
++ (!defined(sun) || defined(i386))
++
++static KeySym map84[NUM_KEYCODES * GLYPHS_PER_KEY] = {
++ /* 0x00 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x01 */ XK_Escape, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x02 */ XK_1, XK_exclam, NoSymbol, NoSymbol,
++ /* 0x03 */ XK_2, XK_at, NoSymbol, NoSymbol,
++ /* 0x04 */ XK_3, XK_numbersign, NoSymbol, NoSymbol,
++ /* 0x05 */ XK_4, XK_dollar, NoSymbol, NoSymbol,
++ /* 0x06 */ XK_5, XK_percent, NoSymbol, NoSymbol,
++ /* 0x07 */ XK_6, XK_asciicircum, NoSymbol, NoSymbol,
++ /* 0x08 */ XK_7, XK_ampersand, NoSymbol, NoSymbol,
++ /* 0x09 */ XK_8, XK_asterisk, NoSymbol, NoSymbol,
++ /* 0x0a */ XK_9, XK_parenleft, NoSymbol, NoSymbol,
++ /* 0x0b */ XK_0, XK_parenright, NoSymbol, NoSymbol,
++ /* 0x0c */ XK_minus, XK_underscore, NoSymbol, NoSymbol,
++ /* 0x0d */ XK_equal, XK_plus, NoSymbol, NoSymbol,
++ /* 0x0e */ XK_BackSpace, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x0f */ XK_Tab, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x10 */ XK_Q, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x11 */ XK_W, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x12 */ XK_E, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x13 */ XK_R, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x14 */ XK_T, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x15 */ XK_Y, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x16 */ XK_U, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x17 */ XK_I, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x18 */ XK_O, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x19 */ XK_P, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x1a */ XK_bracketleft, XK_braceleft, NoSymbol, NoSymbol,
++ /* 0x1b */ XK_bracketright,XK_braceright, NoSymbol, NoSymbol,
++ /* 0x1c */ XK_Return, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x1d */ XK_Control_L, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x1e */ XK_A, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x1f */ XK_S, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x20 */ XK_D, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x21 */ XK_F, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x22 */ XK_G, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x23 */ XK_H, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x24 */ XK_J, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x25 */ XK_K, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x26 */ XK_L, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x27 */ XK_semicolon, XK_colon, NoSymbol, NoSymbol,
++ /* 0x28 */ XK_quoteright, XK_quotedbl, NoSymbol, NoSymbol,
++ /* 0x29 */ XK_quoteleft, XK_asciitilde, NoSymbol, NoSymbol,
++ /* 0x2a */ XK_Shift_L, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x2b */ XK_backslash, XK_bar, NoSymbol, NoSymbol,
++ /* 0x2c */ XK_Z, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x2d */ XK_X, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x2e */ XK_C, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x2f */ XK_V, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x30 */ XK_B, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x31 */ XK_N, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x32 */ XK_M, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x33 */ XK_comma, XK_less, NoSymbol, NoSymbol,
++ /* 0x34 */ XK_period, XK_greater, NoSymbol, NoSymbol,
++ /* 0x35 */ XK_slash, XK_question, NoSymbol, NoSymbol,
++ /* 0x36 */ XK_Shift_R, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x37 */ XK_KP_Multiply, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x38 */ XK_Alt_L, XK_Meta_L, NoSymbol, NoSymbol,
++ /* 0x39 */ XK_space, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3a */ XK_Caps_Lock, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3b */ XK_F1, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3c */ XK_F2, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3d */ XK_F3, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3e */ XK_F4, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x3f */ XK_F5, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x40 */ XK_F6, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x41 */ XK_F7, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x42 */ XK_F8, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x43 */ XK_F9, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x44 */ XK_F10, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x45 */ XK_Num_Lock, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x46 */ XK_Scroll_Lock, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x47 */ XK_KP_Home, XK_KP_7, NoSymbol, NoSymbol,
++ /* 0x48 */ XK_KP_Up, XK_KP_8, NoSymbol, NoSymbol,
++ /* 0x49 */ XK_KP_Prior, XK_KP_9, NoSymbol, NoSymbol,
++ /* 0x4a */ XK_KP_Subtract, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x4b */ XK_KP_Left, XK_KP_4, NoSymbol, NoSymbol,
++ /* 0x4c */ NoSymbol, XK_KP_5, NoSymbol, NoSymbol,
++ /* 0x4d */ XK_KP_Right, XK_KP_6, NoSymbol, NoSymbol,
++ /* 0x4e */ XK_KP_Add, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x4f */ XK_KP_End, XK_KP_1, NoSymbol, NoSymbol,
++ /* 0x50 */ XK_KP_Down, XK_KP_2, NoSymbol, NoSymbol,
++ /* 0x51 */ XK_KP_Next, XK_KP_3, NoSymbol, NoSymbol,
++ /* 0x52 */ XK_KP_Insert, XK_KP_0, NoSymbol, NoSymbol,
++ /* 0x53 */ XK_KP_Delete, XK_KP_Decimal, NoSymbol, NoSymbol,
++ /* 0x54 */ XK_Sys_Req, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x55 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x56 */ XK_less, XK_greater, NoSymbol, NoSymbol,
++ /* 0x57 */ XK_F11, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x58 */ XK_F12, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x59 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x5f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x60 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x61 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x62 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x63 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x64 */ XK_KP_Enter, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x65 */ XK_Control_R, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x66 */ XK_Pause, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x67 */ XK_Print, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x68 */ XK_KP_Divide, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x69 */ XK_Alt_R, XK_Meta_R, NoSymbol, NoSymbol,
++ /* 0x6a */ XK_Break, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6b */ XK_Meta_L, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6c */ XK_Meta_R, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6d */ XK_Menu, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x6f */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x70 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x71 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x72 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x73 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x74 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x75 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x76 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x77 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x78 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x79 */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7a */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7b */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7c */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7d */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++ /* 0x7e */ NoSymbol, NoSymbol, NoSymbol, NoSymbol,
++};
++#endif
+diff -ruN xf86-input-keyboard-1.2.0/src/xf86OSKbd.h xf86-input-keyboard/src/xf86OSKbd.h
+--- xf86-input-keyboard-1.2.0/src/xf86OSKbd.h 1970-01-01 00:00:00.000000000 +0000
++++ xf86-input-keyboard/src/xf86OSKbd.h 2007-09-03 10:34:00.000000000 +0000
+@@ -0,0 +1,132 @@
++/*
++ * Copyright (c) 2002-2003 by The XFree86 Project, Inc.
++ *
++ * Permission is hereby granted, free of charge, to any person obtaining a
++ * copy of this software and associated documentation files (the "Software"),
++ * to deal in the Software without restriction, including without limitation
++ * the rights to use, copy, modify, merge, publish, distribute, sublicense,
++ * and/or sell copies of the Software, and to permit persons to whom the
++ * Software is furnished to do so, subject to the following conditions:
++ *
++ * The above copyright notice and this permission notice shall be included in
++ * all copies or substantial portions of the Software.
++ *
++ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
++ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
++ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
++ * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR
++ * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
++ * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
++ * OTHER DEALINGS IN THE SOFTWARE.
++ *
++ * Except as contained in this notice, the name of the copyright holder(s)
++ * and author(s) 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 holder(s) and author(s).
++ *
++ * Author: Ivan Pascal.
++ */
++
++#include "xf86Xinput.h"
++
++Bool ATScancode(InputInfoPtr pInfo, int *scanCode);
++
++/* Public interface to OS-specific keyboard support. */
++
++typedef int (*KbdInitProc)(InputInfoPtr pInfo, int what);
++typedef int (*KbdOnProc)(InputInfoPtr pInfo, int what);
++typedef int (*KbdOffProc)(InputInfoPtr pInfo, int what);
++typedef void (*BellProc)(InputInfoPtr pInfo,
++ int loudness, int pitch, int duration);
++typedef void (*SetLedsProc)(InputInfoPtr pInfo, int leds);
++typedef int (*GetLedsProc)(InputInfoPtr pInfo);
++typedef void (*SetKbdRepeatProc)(InputInfoPtr pInfo, char rad);
++typedef void (*KbdGetMappingProc)(InputInfoPtr pInfo,
++ KeySymsPtr pKeySyms, CARD8* pModMap);
++typedef int (*GetSpecialKeyProc)(InputInfoPtr pInfo, int scanCode);
++typedef Bool (*SpecialKeyProc)(InputInfoPtr pInfo,
++ int key, Bool down, int modifiers);
++typedef int (*RemapScanCodeProc)(InputInfoPtr pInfo, int *scanCode);
++typedef Bool (*OpenKeyboardProc)(InputInfoPtr pInfo);
++typedef void (*PostEventProc)(InputInfoPtr pInfo,
++ unsigned int key, Bool down);
++typedef struct {
++ int begin;
++ int end;
++ unsigned char *map;
++} TransMapRec, *TransMapPtr;
++
++typedef struct {
++ KbdInitProc KbdInit;
++ KbdOnProc KbdOn;
++ KbdOffProc KbdOff;
++ BellProc Bell;
++ SetLedsProc SetLeds;
++ GetLedsProc GetLeds;
++ SetKbdRepeatProc SetKbdRepeat;
++ KbdGetMappingProc KbdGetMapping;
++ RemapScanCodeProc RemapScanCode;
++ GetSpecialKeyProc GetSpecialKey;
++ SpecialKeyProc SpecialKey;
++
++ OpenKeyboardProc OpenKeyboard;
++ PostEventProc PostEvent;
++
++ int rate;
++ int delay;
++ int bell_pitch;
++ int bell_duration;
++ Bool autoRepeat;
++ unsigned long leds;
++ unsigned long xledsMask;
++ unsigned long keyLeds;
++ int scanPrefix;
++ Bool vtSwitchSupported;
++ Bool CustomKeycodes;
++ Bool noXkb;
++ Bool isConsole;
++ TransMapPtr scancodeMap;
++ TransMapPtr specialMap;
++
++ /* os specific */
++ pointer private;
++ int kbdType;
++ int consType;
++ int wsKbdType;
++ Bool sunKbd;
++ Bool Panix106;
++
++} KbdDevRec, *KbdDevPtr;
++
++typedef enum {
++ PROT_STD,
++ PROT_XQUEUE,
++ PROT_WSCONS,
++ PROT_USB,
++ PROT_UNKNOWN_KBD
++} KbdProtocolId;
++
++typedef struct {
++ const char *name;
++ KbdProtocolId id;
++} KbdProtocolRec;
++
++Bool xf86OSKbdPreInit(InputInfoPtr pInfo);
++
++/* Adjust this when the kbd interface changes. */
++
++/*
++ * History:
++ *
++ * 1.0.0 - Initial version.
++ */
++
++#define OS_KBD_VERSION_MAJOR 1
++#define OS_KBD_VERSION_MINOR 0
++#define OS_KBD_VERSION_PATCH 0
++
++#define OS_KBD_VERSION_CURRENT \
++ BUILTIN_INTERFACE_VERSION_NUMERIC(OS_KBD_VERSION_MAJOR, \
++ OS_KBD_VERSION_MINOR, \
++ OS_KBD_VERSION_PATCH)
++