.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