.gitignore       |    1 
 ChangeLog        |   51 ---------
 Makefile.am      |   11 ++
 configure.ac     |   18 ++-
 man/.cvsignore   |    2 
 man/.gitignore   |    2 
 src/.cvsignore   |    6 -
 src/.gitignore   |    6 +
 src/Makefile.am  |    7 -
 src/atKeynames.h |  295 +++++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/kbd.c        |   52 +++++++--
 src/sun_kbd.c    |    8 +
 src/sun_kbd.h    |    2 
 13 files changed, 376 insertions(+), 85 deletions(-)

New commits:
commit 708ecbf8557d9e676e3bb07c1f83170f6d9f7cd7
Author: Paulo Cesar Pereira de Andrade <p...@mandriva.com.br>
Date:   Wed Jan 7 15:09:01 2009 -0200

    Update for servers newer then 1.5 or git master.
    
      The atKeynames.h header was moved to the kbd driver sources as
    well as the xf86CommonSpecialKey() function. This problem probably
    got unnoticed for quite sometime, mainly because most people doing
    regular builds should either not have been building the kbd driver,
    or had atKeynames.h in /usr/include/xorg from a previous install.

diff --git a/.gitignore b/.gitignore
index 2df4a8d..8cc2c1c 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,3 +18,4 @@ ltmain.sh
 missing
 stamp-h1
 *~
+kbd.4
diff --git a/ChangeLog b/ChangeLog
deleted file mode 100644
index ce3cf1c..0000000
--- a/ChangeLog
+++ /dev/null
@@ -1,51 +0,0 @@
-2006-04-06  Adam Jackson  <a...@freedesktop.org>
-
-       * configure.ac:
-       * src/kbd.c:
-       Unlibcwrap.  Bump server version requirement.  Bump to 1.1.0.
-
-2005-12-20  Kevin E. Martin  <kem-at-freedesktop-dot-org>
-
-       * configure.ac:
-       Update package version for X11R7 release.
-
-2005-12-19  Alan Coopersmith  <alan.coopersm...@sun.com>
-
-       * man/kbd.man: 
-       * man/keyboard.man:
-       Correct documentation of XKB default settings
-       
-2005-12-14  Kevin E. Martin  <kem-at-freedesktop-dot-org>
-
-       * configure.ac:
-       Update package version number for final X11R7 release candidate.
-
-2005-12-06  Kevin E. Martin  <kem-at-freedesktop-dot-org>
-
-       * man/Makefile.am:
-       Change *man_SOURCES ==> *man_PRE to fix autotools warnings.
-
-2005-12-03  Kevin E. Martin  <kem-at-freedesktop-dot-org>
-
-       * configure.ac:
-       Update package version number for X11R7 RC3 release.
-
-2005-12-01  Kevin E. Martin  <kem-at-freedesktop-dot-org>
-
-       * configure.ac:
-       Remove extraneous AC_MSG_RESULT.
-
-2005-11-29  Adam Jackson  <a...@freedesktop.org>
-
-       * configure.ac:
-       Only build dlloader modules by default.
-
-2005-11-09  Kevin E. Martin  <kem-at-freedesktop-dot-org>
-
-       * configure.ac:
-       Update package version number for X11R7 RC2 release.
-
-2005-11-01  Kevin E. Martin  <kem-at-freedesktop-dot-org>
-
-       * configure.ac:
-       Update pkgcheck dependencies to work with separate build roots.
diff --git a/Makefile.am b/Makefile.am
index 7052905..aec514f 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -20,3 +20,14 @@
 
 AUTOMAKE_OPTIONS = foreign
 SUBDIRS = src man
+
+EXTRA_DIST = ChangeLog
+
+MAINTAINERCLEANFILES=ChangeLog
+
+.PHONY: ChangeLog
+
+ChangeLog:
+       $(CHANGELOG_CMD)
+
+dist-hook: ChangeLog
diff --git a/configure.ac b/configure.ac
index c5ca5ac..aab639c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -22,10 +22,15 @@
 
 AC_PREREQ(2.57)
 AC_INIT([xf86-input-keyboard],
-        1.3.1,
+        1.3.2,
         [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg],
         xf86-input-keyboard)
 
+# Require xorg-macros version 1.2 or newer for XORG_CWARNFLAGS and
+# XORG_CHANGELOG macros
+m4_ifndef([XORG_MACROS_VERSION], [AC_FATAL([must install xorg-macros 1.2.1 or 
later before running autoconf/autogen])])
+XORG_MACROS_VERSION(1.2.1)
+
 AC_CONFIG_SRCDIR([Makefile.am])
 AC_CONFIG_AUX_DIR(.)
 AM_INIT_AUTOMAKE([dist-bzip2])
@@ -44,8 +49,6 @@ AC_PROG_CC
 
 AH_TOP([#include "xorg-server.h"])
 
-m4_ifdef([AS_HELP_STRING], , [m4_define([AS_HELP_STRING], 
m4_defn([AC_HELP_STRING]))])
-
 case $host_os in
   linux*)
     IS_LINUX="yes"
@@ -98,8 +101,7 @@ AC_ARG_WITH(xorg-module-dir,
                            [Default xorg module directory 
[[default=$libdir/xorg/modules]]]),
             [moduledir="$withval"],
             [moduledir="$libdir/xorg/modules"])
-inputdir=${moduledir}/input
-AC_SUBST(inputdir)
+AC_SUBST(moduledir)
 
 # Checks for extensions
 XORG_DRIVER_CHECK_EXT(RANDR, randrproto)
@@ -110,8 +112,9 @@ XORG_DRIVER_CHECK_EXT(XKB, kbproto)
 PKG_CHECK_MODULES(XORG, [xorg-server >= 1.2.99.0] xproto $REQUIRED_MODULES)
 sdkdir=$(pkg-config --variable=sdkdir xorg-server)
 
-CFLAGS="$CFLAGS $XORG_CFLAGS "' -I$(top_srcdir)/src'
-AC_SUBST([CFLAGS])
+XORG_CWARNFLAGS
+XORG_CFLAGS="$CWARNFLAGS $XORG_CFLAGS"
+AC_SUBST([XORG_CFLAGS])
 
 # Checks for libraries.
 
@@ -120,5 +123,6 @@ AC_HEADER_STDC
 
 XORG_MANPAGE_SECTIONS
 XORG_RELEASE_VERSION
+XORG_CHANGELOG
 
 AC_OUTPUT([Makefile src/Makefile man/Makefile])
diff --git a/src/Makefile.am b/src/Makefile.am
index 7a589cb..823a9db 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -18,10 +18,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.
 
-driverdir = @inputdir@
-driver_LTLIBRARIES = kbd_drv.la
+AM_CFLAGS = @XORG_CFLAGS@
+kbd_drv_la_LTLIBRARIES = kbd_drv.la
 kbd_drv_la_LDFLAGS = -avoid-version -module
 kbd_drv_la_SOURCES = kbd.c xf86OSKbd.h xf86Keymap.h atKeynames.h
+kbd_drv_ladir = @moduledir@/input
 
 BSD_SRCS = bsd_KbdMap.c bsd_kbd.c bsd_kbd.h at_scancode.c
 HURD_SRCS = hurd_kbd.c at_scancode.c
diff --git a/src/kbd.c b/src/kbd.c
index 1439c4f..3560a65 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -454,12 +454,14 @@ static void
 InitKBD(InputInfoPtr pInfo, Bool init)
 {
   char            rad;
-  unsigned int    i;
   xEvent          kevent;
   KbdDevPtr pKbd = (KbdDevPtr) pInfo->private;
+#if GET_ABI_MAJOR(ABI_XINPUT_VERSION) < 1
   DeviceIntPtr    pKeyboard = pInfo->dev;
   KeyClassRec     *keyc = pKeyboard->key;
   KeySym          *map = keyc->curKeySyms.map;
+  unsigned int    i;
+#endif
 
   kevent.u.keyButtonPointer.time = GetTimeInMillis();
   kevent.u.keyButtonPointer.rootX = 0;

commit 9294caab68d58d13f429b7c0b23541b99f2b0dae
Author: Alan Coopersmith <alan.coopersm...@sun.com>
Date:   Tue Nov 18 18:40:58 2008 -0800

    Renamed subdir .cvsignore files to .gitignore

diff --git a/man/.cvsignore b/man/.cvsignore
deleted file mode 100644
index 282522d..0000000
--- a/man/.cvsignore
+++ /dev/null
@@ -1,2 +0,0 @@
-Makefile
-Makefile.in
diff --git a/man/.gitignore b/man/.gitignore
new file mode 100644
index 0000000..282522d
--- /dev/null
+++ b/man/.gitignore
@@ -0,0 +1,2 @@
+Makefile
+Makefile.in
diff --git a/src/.cvsignore b/src/.cvsignore
deleted file mode 100644
index 9730646..0000000
--- a/src/.cvsignore
+++ /dev/null
@@ -1,6 +0,0 @@
-.deps
-.libs
-Makefile
-Makefile.in
-*.la
-*.lo
diff --git a/src/.gitignore b/src/.gitignore
new file mode 100644
index 0000000..9730646
--- /dev/null
+++ b/src/.gitignore
@@ -0,0 +1,6 @@
+.deps
+.libs
+Makefile
+Makefile.in
+*.la
+*.lo

commit 74b6461c5362e3401fdcf5a080bf71e6f7908e09
Author: Alan Coopersmith <alan.coopersm...@sun.com>
Date:   Tue Nov 11 17:35:55 2008 -0800

    sun_kbd.c: Don't try to repeat shutdown actions on already closed keyboard

diff --git a/src/sun_kbd.c b/src/sun_kbd.c
index f8eedfe..cc43022 100644
--- a/src/sun_kbd.c
+++ b/src/sun_kbd.c
@@ -219,8 +219,11 @@ KbdOff(InputInfoPtr pInfo, int what)
     int i;
 
     /* restore original state */
-    
-    sunKbdSetLeds(pInfo, priv->oleds);
+
+    if (priv->oleds != -1) {
+       sunKbdSetLeds(pInfo, priv->oleds);
+       priv->oleds = -1;
+    }
     
     if (priv->otranslation != -1) {
         SYSCALL(i = ioctl(pInfo->fd, KIOCTRANS, &priv->otranslation));
@@ -251,6 +254,7 @@ KbdOff(InputInfoPtr pInfo, int what)
                    "%s: cannot pop module '%s' off keyboard device: %s\n",
                    pInfo->name, priv->strmod, strerror(errno));
        }
+       priv->strmod = NULL;
     }
 
     return Success;
diff --git a/src/sun_kbd.h b/src/sun_kbd.h
index 1c50993..a73e201 100644
--- a/src/sun_kbd.h
+++ b/src/sun_kbd.h
@@ -34,7 +34,7 @@ typedef struct {
     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 */
+    int                        oleds;          /* Original LED state */
     const char *       strmod;         /* Streams module pushed on kbd device 
*/
 } sunKbdPrivRec, *sunKbdPrivPtr;
 

commit 3e28d68b50d291938734e9684b8296ca864f3892
Author: Luc Verhaegen <l...@skynet.be>
Date:   Mon Oct 13 15:22:32 2008 +0200

    Set TERMINATE_FALLBACK to 0.
    
    This stops the keyboard driver from sending 2 extra ctrl-alt-backspace
    events to the server.

diff --git a/src/kbd.c b/src/kbd.c
index 8523495..1439c4f 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -678,7 +678,7 @@ PostKbdEvent(InputInfoPtr pInfo, unsigned int scanCode, 
Bool down)
   }
 
 #ifndef TERMINATE_FALLBACK
-#define TERMINATE_FALLBACK 1
+#define TERMINATE_FALLBACK 0
 #endif
 #ifdef XKB
   if (noXkbExtension

commit eecfd24481b5768692409666b16b666e71ec97f8
Author: Adam Jackson <a...@redhat.com>
Date:   Tue Aug 19 15:28:02 2008 -0400

    Remove useless call to xf86AddModuleInfo

diff --git a/src/kbd.c b/src/kbd.c
index 6d99ea2..8523495 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -872,13 +872,8 @@ xf86KbdPlug(pointer        module,
 {
     static Bool Initialised = FALSE;
 
-    if (!Initialised) {
+    if (!Initialised)
        Initialised = TRUE;
-#ifndef REMOVE_LOADER_CHECK_MODULE_INFO
-       if (xf86LoaderCheckSymbol("xf86AddModuleInfo"))
-#endif
-       xf86AddModuleInfo(&KbdInfo, module);
-    }
 
     xf86AddInputDriver(&KBD, module, 0);
 

commit 574442b906fa8ff600d2fd32fdb2bf953b3bb5fa
Author: Adam Jackson <a...@redhat.com>
Date:   Tue Aug 19 10:20:47 2008 -0400

    Remove XFree86-Misc leftovers.

diff --git a/src/kbd.c b/src/kbd.c
index 7b4f1d4..6d99ea2 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -1,6 +1,3 @@
-/* $XdotOrg: driver/xf86-input-keyboard/src/kbd.c,v 1.19 2005/11/09 21:31:23 
kem Exp $ */
-/* $XFree86: xc/programs/Xserver/hw/xfree86/input/keyboard/kbd.c,v 1.8 
2003/11/03 05:11:47 tsi Exp $ */
-
 /*
  * Copyright (c) 2002 by The XFree86 Project, Inc.
  * Author: Ivan Pascal.
@@ -12,7 +9,6 @@
  * xf86Events.c and xf86Io.c which are
  * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
  */
-/* $XdotOrg: driver/xf86-input-keyboard/src/kbd.c,v 1.19 2005/11/09 21:31:23 
kem Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -226,16 +222,6 @@ CommonSpecialKey(int key, Bool down, int modifiers)
        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;
-       
        /*
         * The idea here is to pass the scancode down to a list of
         * registered routines. There should be some standard conventions

commit 80b04aa649f5e65294439264b6bbb0dc90c22a7c
Author: Kristian Høgsberg <k...@redhat.com>
Date:   Thu Jul 24 16:39:02 2008 -0400

    Move atKeynames.h and xf86CommonSpecialKey() here.

diff --git a/src/Makefile.am b/src/Makefile.am
index c08b255..7a589cb 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -21,7 +21,7 @@
 driverdir = @inputdir@
 driver_LTLIBRARIES = kbd_drv.la
 kbd_drv_la_LDFLAGS = -avoid-version -module
-kbd_drv_la_SOURCES = kbd.c xf86OSKbd.h xf86Keymap.h
+kbd_drv_la_SOURCES = kbd.c xf86OSKbd.h xf86Keymap.h atKeynames.h
 
 BSD_SRCS = bsd_KbdMap.c bsd_kbd.c bsd_kbd.h at_scancode.c
 HURD_SRCS = hurd_kbd.c at_scancode.c
diff --git a/src/atKeynames.h b/src/atKeynames.h
new file mode 100644
index 0000000..85f13ac
--- /dev/null
+++ b/src/atKeynames.h
@@ -0,0 +1,295 @@
+/*
+ * Copyright 1990,91 by Thomas Roell, Dinkelscherben, Germany.
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and its
+ * documentation for any purpose is hereby granted without fee, provided that
+ * the above copyright notice appear in all copies and that both that
+ * copyright notice and this permission notice appear in supporting
+ * documentation, and that the name of Thomas Roell not be used in
+ * advertising or publicity pertaining to distribution of the software without
+ * specific, written prior permission.  Thomas Roell makes no representations
+ * about the suitability of this software for any purpose.  It is provided
+ * "as is" without express or implied warranty.
+ *
+ * THOMAS ROELL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE,
+ * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO
+ * EVENT SHALL THOMAS ROELL 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.
+ *
+ */
+/*
+ * Copyright (c) 1994-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).
+ */
+
+#ifndef _ATKEYNAMES_H
+#define _ATKEYNAMES_H
+
+#define XK_TECHNICAL
+#define        XK_KATAKANA
+#include <X11/keysym.h>
+#include <X11/XF86keysym.h>
+
+#define GLYPHS_PER_KEY 4
+#define NUM_KEYCODES   248
+#define MIN_KEYCODE     8
+#define MAX_KEYCODE     (NUM_KEYCODES + MIN_KEYCODE - 1)
+
+#define AltMask                Mod1Mask
+#define NumLockMask    Mod2Mask
+#define AltLangMask    Mod3Mask
+#define KanaMask       Mod4Mask
+#define ScrollLockMask Mod5Mask
+
+#define KeyPressed(k) (keyc->postdown[k >> 3] & (1 << (k & 7)))
+#define ModifierDown(k) ((keyc->state & (k)) == (k))
+
+/*
+ * NOTE: The AT/MF keyboards can generate (via the 8042) two (MF: three)
+ *       sets of scancodes. Set3 can only be generated by a MF keyboard.
+ *       Set2 sends a makecode for keypress, and the same code prefixed by a
+ *       F0 for keyrelease. This is a little bit ugly to handle. Thus we use
+ *       here for X386 the PC/XT compatible Set1. This set uses 8bit scancodes.
+ *       Bit 7 ist set if the key is released. The code E0 switches to a
+ *       different meaning to add the new MF cursorkeys, while not breaking old
+ *       applications. E1 is another special prefix. Since I assume that there
+ *       will be further versions of PC/XT scancode compatible keyboards, we
+ *       may be in trouble one day.
+ *
+ * IDEA: 1) Use Set2 on AT84 keyboards and translate it to MF Set3.
+ *       2) Use the keyboards native set and translate it to common keysyms.
+ */
+
+/*
+ * definition of the AT84/MF101/MF102 Keyboard:
+ * ============================================================
+ *       Defined             Key Cap Glyphs       Pressed value
+ *      Key Name            Main       Also       (hex)    (dec)
+ *      ----------------   ---------- -------    ------    ------
+ */
+
+#define KEY_Escape       /* Escape                0x01  */    1  
+#define KEY_1            /* 1           !         0x02  */    2 
+#define KEY_2            /* 2           @         0x03  */    3 
+#define KEY_3            /* 3           #         0x04  */    4 
+#define KEY_4            /* 4           $         0x05  */    5 
+#define KEY_5            /* 5           %         0x06  */    6 
+#define KEY_6            /* 6           ^         0x07  */    7 
+#define KEY_7            /* 7           &         0x08  */    8 
+#define KEY_8            /* 8           *         0x09  */    9 
+#define KEY_9            /* 9           (         0x0a  */   10 
+#define KEY_0            /* 0           )         0x0b  */   11 
+#define KEY_Minus        /* - (Minus)   _ (Under) 0x0c  */   12
+#define KEY_Equal        /* = (Equal)   +         0x0d  */   13 
+#define KEY_BackSpace    /* Back Space            0x0e  */   14 
+#define KEY_Tab          /* Tab                   0x0f  */   15
+#define KEY_Q            /* Q                     0x10  */   16
+#define KEY_W            /* W                     0x11  */   17
+#define KEY_E            /* E                     0x12  */   18
+#define KEY_R            /* R                     0x13  */   19
+#define KEY_T            /* T                     0x14  */   20
+#define KEY_Y            /* Y                     0x15  */   21
+#define KEY_U            /* U                     0x16  */   22
+#define KEY_I            /* I                     0x17  */   23
+#define KEY_O            /* O                     0x18  */   24
+#define KEY_P            /* P                     0x19  */   25
+#define KEY_LBrace       /* [           {         0x1a  */   26
+#define KEY_RBrace       /* ]           }         0x1b  */   27 
+#define KEY_Enter        /* Enter                 0x1c  */   28
+#define KEY_LCtrl        /* Ctrl(left)            0x1d  */   29
+#define KEY_A            /* A                     0x1e  */   30
+#define KEY_S            /* S                     0x1f  */   31
+#define KEY_D            /* D                     0x20  */   32 
+#define KEY_F            /* F                     0x21  */   33
+#define KEY_G            /* G                     0x22  */   34
+#define KEY_H            /* H                     0x23  */   35
+#define KEY_J            /* J                     0x24  */   36
+#define KEY_K            /* K                     0x25  */   37
+#define KEY_L            /* L                     0x26  */   38
+#define KEY_SemiColon    /* ;(SemiColon) :(Colon) 0x27  */   39
+#define KEY_Quote        /* ' (Apostr)  " (Quote) 0x28  */   40
+#define KEY_Tilde        /* ` (Accent)  ~ (Tilde) 0x29  */   41
+#define KEY_ShiftL       /* Shift(left)           0x2a  */   42
+#define KEY_BSlash       /* \(BckSlash) |(VertBar)0x2b  */   43
+#define KEY_Z            /* Z                     0x2c  */   44
+#define KEY_X            /* X                     0x2d  */   45
+#define KEY_C            /* C                     0x2e  */   46
+#define KEY_V            /* V                     0x2f  */   47
+#define KEY_B            /* B                     0x30  */   48
+#define KEY_N            /* N                     0x31  */   49
+#define KEY_M            /* M                     0x32  */   50
+#define KEY_Comma        /* , (Comma)   < (Less)  0x33  */   51
+#define KEY_Period       /* . (Period)  >(Greater)0x34  */   52
+#define KEY_Slash        /* / (Slash)   ?         0x35  */   53
+#define KEY_ShiftR       /* Shift(right)          0x36  */   54
+#define KEY_KP_Multiply  /* *                     0x37  */   55
+#define KEY_Alt          /* Alt(left)             0x38  */   56
+#define KEY_Space        /*   (SpaceBar)          0x39  */   57
+#define KEY_CapsLock     /* CapsLock              0x3a  */   58
+#define KEY_F1           /* F1                    0x3b  */   59
+#define KEY_F2           /* F2                    0x3c  */   60
+#define KEY_F3           /* F3                    0x3d  */   61
+#define KEY_F4           /* F4                    0x3e  */   62
+#define KEY_F5           /* F5                    0x3f  */   63
+#define KEY_F6           /* F6                    0x40  */   64
+#define KEY_F7           /* F7                    0x41  */   65
+#define KEY_F8           /* F8                    0x42  */   66
+#define KEY_F9           /* F9                    0x43  */   67
+#define KEY_F10          /* F10                   0x44  */   68
+#define KEY_NumLock      /* NumLock               0x45  */   69
+#define KEY_ScrollLock   /* ScrollLock            0x46  */   70
+#define KEY_KP_7         /* 7           Home      0x47  */   71 
+#define KEY_KP_8         /* 8           Up        0x48  */   72 
+#define KEY_KP_9         /* 9           PgUp      0x49  */   73 
+#define KEY_KP_Minus     /* - (Minus)             0x4a  */   74
+#define KEY_KP_4         /* 4           Left      0x4b  */   75
+#define KEY_KP_5         /* 5                     0x4c  */   76
+#define KEY_KP_6         /* 6           Right     0x4d  */   77
+#define KEY_KP_Plus      /* + (Plus)              0x4e  */   78
+#define KEY_KP_1         /* 1           End       0x4f  */   79
+#define KEY_KP_2         /* 2           Down      0x50  */   80
+#define KEY_KP_3         /* 3           PgDown    0x51  */   81
+#define KEY_KP_0         /* 0           Insert    0x52  */   82
+#define KEY_KP_Decimal   /* . (Decimal) Delete    0x53  */   83 
+#define KEY_SysReqest    /* SysReqest             0x54  */   84
+                         /* NOTUSED               0x55  */
+#define KEY_Less         /* < (Less)   >(Greater) 0x56  */   86
+#define KEY_F11          /* F11                   0x57  */   87
+#define KEY_F12          /* F12                   0x58  */   88
+
+#define KEY_Prefix0      /* special               0x60  */   96
+#define KEY_Prefix1      /* specail               0x61  */   97
+
+/*
+ * The 'scancodes' below are generated by the server, because the MF101/102
+ * keyboard sends them as sequence of other scancodes
+ */
+#define KEY_Home         /* Home                  0x59  */   89
+#define KEY_Up           /* Up                    0x5a  */   90
+#define KEY_PgUp         /* PgUp                  0x5b  */   91
+#define KEY_Left         /* Left                  0x5c  */   92
+#define KEY_Begin        /* Begin                 0x5d  */   93
+#define KEY_Right        /* Right                 0x5e  */   94
+#define KEY_End          /* End                   0x5f  */   95
+#define KEY_Down         /* Down                  0x60  */   96
+#define KEY_PgDown       /* PgDown                0x61  */   97
+#define KEY_Insert       /* Insert                0x62  */   98
+#define KEY_Delete       /* Delete                0x63  */   99
+#define KEY_KP_Enter     /* Enter                 0x64  */  100
+#define KEY_RCtrl        /* Ctrl(right)           0x65  */  101
+#define KEY_Pause        /* Pause                 0x66  */  102
+#define KEY_Print        /* Print                 0x67  */  103
+#define KEY_KP_Divide    /* Divide                0x68  */  104
+#define KEY_AltLang      /* AtlLang(right)        0x69  */  105
+#define KEY_Break        /* Break                 0x6a  */  106
+#define KEY_LMeta        /* Left Meta             0x6b  */  107
+#define KEY_RMeta        /* Right Meta            0x6c  */  108
+#define KEY_Menu         /* Menu                  0x6d  */  109
+#define KEY_F13          /* F13                   0x6e  */  110
+#define KEY_F14          /* F14                   0x6f  */  111
+#define KEY_F15          /* F15                   0x70  */  112
+#define KEY_HKTG         /* Hirugana/Katakana tog 0x70  */  112
+#define KEY_F16          /* F16                   0x71  */  113
+#define KEY_F17          /* F17                   0x72  */  114
+#define KEY_KP_DEC       /* KP_DEC                0x73  */  115
+#define KEY_BSlash2      /* \           _         0x73  */  115
+#define KEY_KP_Equal    /* Equal (Keypad)        0x76  */  118
+#define KEY_XFER         /* Kanji Transfer        0x79  */  121
+#define KEY_NFER         /* No Kanji Transfer     0x7b  */  123
+#define KEY_Yen          /* Yen                   0x7d  */  125
+
+#define KEY_Power        /* Power Key             0x84  */  132
+#define KEY_Mute         /* Audio Mute            0x85  */  133
+#define KEY_AudioLower   /* Audio Lower           0x86  */  134
+#define KEY_AudioRaise   /* Audio Raise           0x87  */  135
+#define KEY_Help         /* Help                  0x88  */  136
+#define KEY_L1           /* Stop                  0x89  */  137
+#define KEY_L2           /* Again                 0x8a  */  138
+#define KEY_L3           /* Props                 0x8b  */  139
+#define KEY_L4           /* Undo                  0x8c  */  140
+#define KEY_L5           /* Front                 0x8d  */  141
+#define KEY_L6           /* Copy                  0x8e  */  142
+#define KEY_L7           /* Open                  0x8f  */  143
+#define KEY_L8           /* Paste                 0x90  */  144
+#define KEY_L9           /* Find                  0x91  */  145
+#define KEY_L10          /* Cut                   0x92  */  146
+
+/*
+ * Fake 'scancodes' in the following ranges are generated for 2-byte
+ * codes not handled elsewhere.  These correspond to most extended keys
+ * on so-called "Internet" keyboards:
+ *
+ *     0x79-0x93
+ *     0x96-0xa1
+ *     0xa3-0xac
+ *     0xb1-0xb4
+ *     0xba-0xbd
+ *     0xc2
+ *     0xcc-0xd2
+ *     0xd6-0xf7
+ */
+
+/*
+ * Remapped 'scancodes' are generated for single-byte codes in the range
+ * 0x59-0x5f,0x62-0x76.  These are used for some extra keys on some keyboards.
+ */
+
+#define KEY_0x59               0x95
+#define KEY_0x5A               0xA2
+#define KEY_0x5B               0xAD
+#define KEY_0x5C               KEY_KP_EQUAL
+#define KEY_0x5D               0xAE
+#define KEY_0x5E               0xAF
+#define KEY_0x5F               0xB0
+#define KEY_0x62               0xB5
+#define KEY_0x63               0xB6
+#define KEY_0x64               0xB7
+#define KEY_0x65               0xB8
+#define KEY_0x66               0xB9
+#define KEY_0x67               0xBE
+#define KEY_0x68               0xBF
+#define KEY_0x69               0xC0
+#define KEY_0x6A               0xC1
+#define KEY_0x6B               0xC3
+#define KEY_0x6C               0xC4
+#define KEY_0x6D               0xC5
+#define KEY_0x6E               0xC6
+#define KEY_0x6F               0xC7
+#define KEY_0x70               0xC8
+#define KEY_0x71               0xC9
+#define KEY_0x72               0xCA
+#define KEY_0x73               0xCB
+#define KEY_0x74               0xD3
+#define KEY_0x75               0xD4
+#define KEY_0x76               0xD5
+
+/* These are for "notused" and "unknown" entries in translation maps. */
+#define KEY_NOTUSED      0
+#define KEY_UNKNOWN    255
+
+#endif /* _ATKEYNAMES_H */
diff --git a/src/kbd.c b/src/kbd.c
index 969d64c..7b4f1d4 100644
--- a/src/kbd.c
+++ b/src/kbd.c
@@ -211,6 +211,49 @@ SetXkbOption(InputInfoPtr pInfo, char *name, char **option)
     }
 }
 
+
+#define ModifierIsSet(k) ((modifiers & (k)) == (k))
+
+static Bool
+CommonSpecialKey(int key, Bool down, int modifiers)
+{
+  if ((!ModifierIsSet(ShiftMask)) &&
+      (((ModifierIsSet(ControlMask | AltMask)) ||
+        (ModifierIsSet(ControlMask | AltLangMask))))) {
+      switch (key) {
+       
+      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;
+       
+       /*
+        * 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_KP_Minus:   /* Keypad - */
+       if (down) xf86ProcessActionEvent(ACTION_PREV_MODE, NULL);
+       break;
+       
+      case KEY_KP_Plus:   /* Keypad + */
+       if (down) xf86ProcessActionEvent(ACTION_NEXT_MODE, NULL);
+       break;
+      }
+  }
+  return FALSE;
+}
+
+
 static InputInfoPtr
 KbdPreInit(InputDriverPtr drv, IDevPtr dev, int flags)
 {
@@ -659,7 +702,7 @@ PostKbdEvent(InputInfoPtr pInfo, unsigned int scanCode, 
Bool down)
      )
 #endif
   {    
-      if (xf86CommonSpecialKey(specialkey, down, keyc->state))
+      if (CommonSpecialKey(specialkey, down, keyc->state))
          return;
       if (pKbd->SpecialKey != NULL)
          if (pKbd->SpecialKey(pInfo, specialkey, down, keyc->state))


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org

Reply via email to