xf86-input-keyboard: Import xf86-input-keyboard-1.9.0 as wip/xf86-input-keyboard-dfbsd

Add to pkgsrc NetBSD xsrc amiga keyboard patches
This commit is contained in:
David Shao 2019-07-22 22:37:56 -07:00
parent b52d9fefae
commit 0165d90d13
10 changed files with 425 additions and 0 deletions

View File

@ -5006,6 +5006,7 @@ SUBDIR+= xdiskusage
SUBDIR+= xebece
SUBDIR+= xerces-c-2.8.0
SUBDIR+= xesam-glib
SUBDIR+= xf86-input-keyboard-dfbsd
SUBDIR+= xf86-input-mouse-dfbsd
SUBDIR+= xf86-input-synaptics
SUBDIR+= xf86-input-vboxmouse

View File

@ -0,0 +1 @@
This is the keyboard driver for the modular Xorg server.

View File

@ -0,0 +1,48 @@
# $NetBSD: Makefile,v 1.26 2018/03/07 11:57:41 wiz Exp $
DISTNAME= xf86-input-keyboard-1.9.0
PKGREVISION= 2
CATEGORIES= x11
MASTER_SITES= ${MASTER_SITE_XORG:=driver/}
EXTRACT_SUFX= .tar.bz2
MAINTAINER= joerg@NetBSD.org
HOMEPAGE= http://xorg.freedesktop.org/
COMMENT= Modular Xorg keyboard driver
LICENSE= mit
USE_LIBTOOL= YES
GNU_CONFIGURE= YES
USE_TOOLS+= gmake pkg-config
CONFIGURE_ENV.SunOS+= DRIVER_MAN_SUFFIX=4
.include "../../mk/bsd.prefs.mk"
PKG_OPTIONS_VAR= PKG_OPTIONS.xf86-input-keyboard
PKG_SUPPORTED_OPTIONS= debug
# PKG_SUGGESTED_OPTIONS= debug
PKG_SUPPORTED_OPTIONS+= delay_kdsetled
.if ${OPSYS} == "DragonFly"
# PKG_SUGGESTED_OPTIONS+= delay_kdsetled
.endif
.include "../../mk/bsd.options.mk"
# Debug flags recommended for server and drivers by:
# https://www.x.org/wiki/Development/Documentation/ServerDebugging/
.if !empty(PKG_OPTIONS:Mdebug)
CPPFLAGS+= -DDEBUG
CFLAGS+= -O0 -g3
.endif
.if !empty(PKG_OPTIONS:Mdelay_kdsetled)
CPPFLAGS+= -DDELAY_KDSETLED
.endif
.include "../../x11/libxkbfile/buildlink3.mk"
.include "../../x11/modular-xorg-server/buildlink3.mk"
.include "../../x11/xorgproto/buildlink3.mk"
.include "../../mk/bsd.pkg.mk"

View File

@ -0,0 +1,3 @@
@comment $NetBSD: PLIST,v 1.2 2007/08/05 23:32:47 joerg Exp $
lib/xorg/modules/input/kbd_drv.la
man/man4/kbd.4

View File

@ -0,0 +1,11 @@
$NetBSD: distinfo,v 1.15 2018/01/21 10:12:39 triaxx Exp $
SHA1 (xf86-input-keyboard-1.9.0.tar.bz2) = 24b5d84d221a75650f390ff63315912bf9a94992
RMD160 (xf86-input-keyboard-1.9.0.tar.bz2) = 1b6d2d6fc538f7d57a0b452173184248e22d87d0
SHA512 (xf86-input-keyboard-1.9.0.tar.bz2) = d1a52d10039096d0d5e09750b6a8c2388345748331615af93e5be499646c3bc5fbbfc897fcebdeada5efaafff94f26a2ab84d6e35f01a875b8b9956a42015df9
Size (xf86-input-keyboard-1.9.0.tar.bz2) = 341693 bytes
SHA1 (patch-src_at__scancode.c) = 24aa54f28b645919b65e5e4eb1699c1cb5e64609
SHA1 (patch-src_bsd__KbdMap.c) = bd9b3f487f1915b3c06b6c25fcf541c3addc5480
SHA1 (patch-src_bsd__kbd.c) = 80240c465b85055739f0318b6a0cb3faae8b2eca
SHA1 (patch-src_kbd.c) = 334390167984fe750a26f24a297c71de50e75a6c
SHA1 (patch-src_sun__kbd.c) = 21da7cb7110ae8b08f9245de1d1678965ba7a0c8

View File

@ -0,0 +1,39 @@
$NetBSD$
From FreeBSD ports x11-drivers/xf86-input-keyboard 1.9.0.
--- src/at_scancode.c.orig 2014-02-10 22:04:31.000000000 +0000
+++ src/at_scancode.c
@@ -82,6 +82,12 @@ ATScancode(InputInfoPtr pInfo, int *scan
case KEY_Prefix0:
pKbd->scanPrefix = 0;
switch (*scanCode) {
+#if (defined(__FreeBSD__) && __FreeBSD__ >= 11) || defined(__DragonFly__)
+ case 0x1e: *scanCode = KEY_AudioRaise;break;
+ case 0x1f: *scanCode = KEY_AudioLower;break;
+ case 0x20: *scanCode = KEY_Power; break;
+ case 0x25: *scanCode = KEY_Mute; break;
+#endif
case KEY_KP_7: *scanCode = KEY_Home; break; /* curs home */
case KEY_KP_8: *scanCode = KEY_Up; break; /* curs up */
case KEY_KP_9: *scanCode = KEY_PgUp; break; /* curs pgup */
@@ -102,6 +108,19 @@ ATScancode(InputInfoPtr pInfo, int *scan
case 0x5b: *scanCode = KEY_LMeta; break;
case 0x5c: *scanCode = KEY_RMeta; break;
case 0x5d: *scanCode = KEY_Menu; break;
+#if (defined(__FreeBSD__) && __FreeBSD__ >= 11) || defined(__DragonFly__)
+ case 0x5e: *scanCode = KEY_L1; break; /* stop */
+ case 0x5f: *scanCode = KEY_L2; break; /* again */
+ case 0x60: *scanCode = KEY_L3; break; /* props */
+ case 0x61: *scanCode = KEY_L4; break; /* undo */
+ case 0x62: *scanCode = KEY_L5; break; /* front */
+ case 0x63: *scanCode = KEY_L6; break; /* copy */
+ case 0x64: *scanCode = KEY_L7; break; /* open */
+ case 0x65: *scanCode = KEY_L8; break; /* paste */
+ case 0x66: *scanCode = KEY_L9; break; /* find */
+ case 0x67: *scanCode = KEY_L10; break; /* cut */
+ case 0x68: *scanCode = KEY_Help; break;
+#endif
case KEY_F3: *scanCode = KEY_F13; break;
case KEY_F4: *scanCode = KEY_F14; break;
case KEY_F5: *scanCode = KEY_F15; break;

View File

@ -0,0 +1,188 @@
$NetBSD: patch-src_bsd__KbdMap.c,v 1.1 2018/01/21 10:12:39 triaxx Exp $
PR191459: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=191459
Fix a segmentation fault due to the use of Unicode codepoints in vt(4) which is
the default console driver from FreeBSD 11.
Don't query console keymap
This seems to be useless and doesn't work anymore with vt(4), due to the
use of Unicode codepoints in vt(4). So remove the related code. This fixes
a segmentation fault during X.Org server startup.
PR: 191459
Also used in DragonFly dports.
Patches from NetBSD xsrc:
Scancode translation table for wskbd on Amiga keyboards.
--- src/bsd_KbdMap.c.orig 2015-08-07 03:16:08.000000000 +0000
+++ src/bsd_KbdMap.c
@@ -28,6 +28,7 @@
#include "bsd_kbd.h"
#if (defined(SYSCONS_SUPPORT) || defined(PCVT_SUPPORT)) && defined(GIO_KEYMAP)
+#if !(defined(__FreeBSD__) && __FreeBSD__ >= 11) && !defined(__DragonFly__)
#define KD_GET_ENTRY(i,n) \
eascii_to_x[((keymap.key[i].spcl << (n+1)) & 0x100) + keymap.key[i].map[n]]
@@ -188,6 +189,7 @@ static KeySym eascii_to_x[512] = {
NoSymbol, NoSymbol, NoSymbol, NoSymbol,
NoSymbol, NoSymbol, NoSymbol, NoSymbol
};
+#endif /* !(defined(__FreeBSD__) && __FreeBSD__ >= 11) */
#ifdef SYSCONS_SUPPORT
static
@@ -841,6 +843,122 @@ TransMapRec wsAdb = {
wsAdbMap
};
+/* Map for amiga keyboards */
+static CARD8 wsAmigaMap[] = {
+ /* 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 */ KEY_BSlash, /* key in this position only on Amiga */
+ /* 14 */ KEY_NOTUSED,
+ /* 15 */ KEY_KP_0,
+ /* 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_NOTUSED,
+ /* 29 */ KEY_KP_1,
+ /* 30 */ KEY_KP_2,
+ /* 31 */ KEY_KP_3,
+ /* 32 */ KEY_A,
+ /* 33 */ KEY_S,
+ /* 34 */ KEY_D,
+ /* 35 */ KEY_F,
+ /* 36 */ KEY_G,
+ /* 37 */ KEY_H,
+ /* 38 */ KEY_J,
+ /* 39 */ KEY_K,
+ /* 40 */ KEY_L,
+ /* 41 */ KEY_SemiColon,
+ /* 42 */ KEY_Quote,
+ /* 43 */ KEY_BSlash, /* # on international keyboards */
+ /* 44 */ KEY_NOTUSED,
+ /* 45 */ KEY_KP_4,
+ /* 46 */ KEY_KP_5,
+ /* 47 */ KEY_KP_6,
+ /* 48 */ KEY_Less,
+ /* 49 */ KEY_Z,
+ /* 50 */ KEY_X,
+ /* 51 */ KEY_C,
+ /* 52 */ KEY_V,
+ /* 53 */ KEY_B,
+ /* 54 */ KEY_N,
+ /* 55 */ KEY_M,
+ /* 56 */ KEY_Comma,
+ /* 57 */ KEY_Period,
+ /* 58 */ KEY_Slash,
+ /* 59 */ KEY_NOTUSED,
+ /* 60 */ KEY_KP_Decimal,
+ /* 61 */ KEY_KP_7,
+ /* 62 */ KEY_KP_8,
+ /* 63 */ KEY_KP_9,
+ /* 64 */ KEY_Space,
+ /* 65 */ KEY_BackSpace,
+ /* 66 */ KEY_Tab,
+ /* 67 */ KEY_KP_Enter,
+ /* 68 */ KEY_Enter,
+ /* 69 */ KEY_Escape,
+ /* 70 */ KEY_Delete,
+ /* 71 */ KEY_NOTUSED,
+ /* 72 */ KEY_NOTUSED,
+ /* 73 */ KEY_NOTUSED,
+ /* 74 */ KEY_KP_Minus,
+ /* 75 */ KEY_NOTUSED,
+ /* 76 */ KEY_Up,
+ /* 77 */ KEY_Down,
+ /* 78 */ KEY_Right,
+ /* 79 */ KEY_Left,
+ /* 80 */ KEY_F1,
+ /* 81 */ KEY_F2,
+ /* 82 */ KEY_F3,
+ /* 83 */ KEY_F4,
+ /* 84 */ KEY_F5,
+ /* 85 */ KEY_F6,
+ /* 86 */ KEY_F7,
+ /* 87 */ KEY_F8,
+ /* 88 */ KEY_F9,
+ /* 89 */ KEY_F10,
+ /* 90 */ KEY_UNKNOWN, /* Keypad [ */
+ /* 91 */ KEY_UNKNOWN, /* Keypad ] */
+ /* 92 */ KEY_KP_Divide,
+ /* 93 */ KEY_KP_Multiply,
+ /* 94 */ KEY_KP_Plus,
+ /* 95 */ KEY_Help,
+ /* 96 */ KEY_ShiftL,
+ /* 97 */ KEY_ShiftR,
+ /* 98 */ KEY_NOTUSED,
+ /* 99 */ KEY_LCtrl,
+ /* 100 */ KEY_Alt,
+ /* 101 */ KEY_AltLang,
+ /* 102 */ KEY_LMeta,
+ /* 103 */ KEY_RMeta
+};
+#define WS_AMIGA_MAP_SIZE (sizeof(wsAmigaMap)/sizeof(*wsAmigaMap))
+
+static
+TransMapRec wsAmiga = {
+ 0,
+ WS_AMIGA_MAP_SIZE,
+ wsAmigaMap
+};
+
/* Map for LK201 keyboards */
static CARD8 wsLk201Map[] = {
/* 0 */ KEY_F1,
@@ -1261,6 +1379,7 @@ KbdGetMapping (InputInfoPtr pInfo, KeySy
KeySym *k;
int i;
+#if !(defined(__FreeBSD__) && __FreeBSD__ >= 11) && !defined(__DragonFly__)
#ifndef __bsdi__
switch (pKbd->consType) {
@@ -1294,6 +1413,7 @@ KbdGetMapping (InputInfoPtr pInfo, KeySy
}
#endif /* !bsdi */
+#endif /* !(defined(__FreeBSD__) && __FreeBSD__ >= 11) */
/*
* compute the modifier map
@@ -1386,6 +1506,11 @@ KbdGetMapping (InputInfoPtr pInfo, KeySy
pKbd->scancodeMap = &wsAdb;
break;
#endif
+#ifdef WSKBD_TYPE_AMIGA
+ case WSKBD_TYPE_AMIGA:
+ pKbd->scancodeMap = &wsAmiga;
+ break;
+#endif
#ifdef WSKBD_TYPE_LK201
case WSKBD_TYPE_LK201:
pKbd->scancodeMap = &wsLk201;

View File

@ -0,0 +1,67 @@
$NetBSD$
* DragonFly has on a specific machine some timing problem at SetKbdLeds.
Try a random sleep before calling it.
Patch from FreeBSD ports / DragonFly dports x11-drivers/xf86-input-keyboard.
* Switch keyboards which are not attached to console to RAW mode.
Patches from NetBSD xsrc:
Scancode translation table for wskbd on Amiga keyboards.
--- src/bsd_kbd.c.orig 2013-10-28 00:44:23.000000000 +0000
+++ src/bsd_kbd.c
@@ -27,6 +27,11 @@
#include "atKeynames.h"
#include "bsd_kbd.h"
+#if defined(DELAY_KDSETLED)
+#include <unistd.h>
+#include <stdlib.h>
+#endif
+
static KbdProtocolRec protocols[] = {
{"standard", PROT_STD },
#ifdef WSCONS_SUPPORT
@@ -104,7 +109,13 @@ SetKbdLeds(InputInfoPtr pInfo, int leds)
#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
case SYSCONS:
case PCVT:
+#if defined(DELAY_KDSETLED)
+ sleep(1 + (unsigned int)(0x03L && random()));
+#endif
ioctl(pInfo->fd, KDSETLED, real_leds);
+#if defined(DELAY_KDSETLED)
+ sleep(1);
+#endif
break;
#endif
#if defined(WSCONS_SUPPORT)
@@ -236,6 +247,14 @@ KbdOn(InputInfoPtr pInfo, int what)
break;
#endif
}
+#if (defined(__FreeBSD__) && __FreeBSD__ >= 11) || defined(__DragonFly__)
+/*
+ * Switch keyboards which are not attached to console in RAW mode
+ */
+#if defined (SYSCONS_SUPPORT) || defined (PCVT_SUPPORT)
+ ioctl(pInfo->fd, KDSKBMODE, K_RAW);
+#endif
+#endif
}
return Success;
}
@@ -459,6 +478,11 @@ OpenKeyboard(InputInfoPtr pInfo)
printWsType("ADB", pInfo->name);
break;
#endif
+#ifdef WSKBD_TYPE_AMIGA
+ case WSKBD_TYPE_AMIGA:
+ printWsType("Amiga", pInfo->name);
+ break;
+#endif
#ifdef WSKBD_TYPE_LK201
case WSKBD_TYPE_LK201:
printWsType("LK201", pInfo->name);

View File

@ -0,0 +1,36 @@
$NetBSD$
FreeBSD ports / DragonFly dports x11-drivers/xf86-input-keyboard.
Close device file for keyboards which are not attached
to console, otherwise they can't be opened again after
relogin when using session manager like xdm.
--- src/kbd.c.orig 2016-05-30 21:35:35.000000000 +0000
+++ src/kbd.c
@@ -25,6 +25,9 @@
#include "xf86.h"
#include "atKeynames.h"
+#if (defined(__FreeBSD__) && __FreeBSD__ >= 11) || defined(__DragonFly__)
+#include "xf86Priv.h"
+#endif
#include "xf86Privstr.h"
#include <X11/extensions/XI.h>
@@ -382,6 +385,16 @@ KbdProc(DeviceIntPtr device, int what)
}
pKbd->KbdOff(pInfo, what);
device->public.on = FALSE;
+#if (defined(__FreeBSD__) && __FreeBSD__ >= 11) || defined(__DragonFly__)
+ /*
+ * Close device file for keyboards which are not attached
+ * to console, otherwise they can't be opened again after
+ * relogin when using session manager like xdm.
+ * X server will take care about console attached keyboards.
+ */
+ if (pInfo->fd != xf86Info.consoleFd)
+ close(pInfo->fd);
+#endif
break;
default:

View File

@ -0,0 +1,31 @@
$NetBSD: patch-src_sun__kbd.c,v 1.2 2016/11/17 08:05:55 wiz Exp $
rearrange includes to fix build on OmniOS. Include unistd.h for ioctl(2).
--- src/sun_kbd.c.orig 2013-03-27 00:56:38.000000000 +0000
+++ src/sun_kbd.c
@@ -49,6 +49,12 @@
#include "config.h"
#endif
+#include <unistd.h> /* for ioctl */
+#include <sys/stropts.h>
+#include <sys/vuid_event.h>
+#include <sys/kbd.h>
+#include <sys/note.h> /* needed before including older versions of hid.h */
+#include <sys/usb/clients/hid/hid.h>
#include <xorg-server.h>
#include "xf86.h"
#include "xf86Priv.h"
@@ -56,11 +62,6 @@
#include "xf86OSKbd.h"
#include "sun_kbd.h"
-#include <sys/stropts.h>
-#include <sys/vuid_event.h>
-#include <sys/kbd.h>
-#include <sys/note.h> /* needed before including older versions of hid.h */
-#include <sys/usb/clients/hid/hid.h>
static int KbdOn(InputInfoPtr pInfo, int what);
static Bool OpenKeyboard(InputInfoPtr pInfo);