From 0165d90d13f5b6d2ca1cd07396077c815ed24c10 Mon Sep 17 00:00:00 2001 From: David Shao Date: Mon, 22 Jul 2019 22:37:56 -0700 Subject: [PATCH] xf86-input-keyboard: Import xf86-input-keyboard-1.9.0 as wip/xf86-input-keyboard-dfbsd Add to pkgsrc NetBSD xsrc amiga keyboard patches --- Makefile | 1 + xf86-input-keyboard-dfbsd/DESCR | 1 + xf86-input-keyboard-dfbsd/Makefile | 48 +++++ xf86-input-keyboard-dfbsd/PLIST | 3 + xf86-input-keyboard-dfbsd/distinfo | 11 + .../patches/patch-src_at__scancode.c | 39 ++++ .../patches/patch-src_bsd__KbdMap.c | 188 ++++++++++++++++++ .../patches/patch-src_bsd__kbd.c | 67 +++++++ .../patches/patch-src_kbd.c | 36 ++++ .../patches/patch-src_sun__kbd.c | 31 +++ 10 files changed, 425 insertions(+) create mode 100644 xf86-input-keyboard-dfbsd/DESCR create mode 100644 xf86-input-keyboard-dfbsd/Makefile create mode 100644 xf86-input-keyboard-dfbsd/PLIST create mode 100644 xf86-input-keyboard-dfbsd/distinfo create mode 100644 xf86-input-keyboard-dfbsd/patches/patch-src_at__scancode.c create mode 100644 xf86-input-keyboard-dfbsd/patches/patch-src_bsd__KbdMap.c create mode 100644 xf86-input-keyboard-dfbsd/patches/patch-src_bsd__kbd.c create mode 100644 xf86-input-keyboard-dfbsd/patches/patch-src_kbd.c create mode 100644 xf86-input-keyboard-dfbsd/patches/patch-src_sun__kbd.c diff --git a/Makefile b/Makefile index 5eea68a121..e11c4ea444 100644 --- a/Makefile +++ b/Makefile @@ -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 diff --git a/xf86-input-keyboard-dfbsd/DESCR b/xf86-input-keyboard-dfbsd/DESCR new file mode 100644 index 0000000000..20be956ab0 --- /dev/null +++ b/xf86-input-keyboard-dfbsd/DESCR @@ -0,0 +1 @@ +This is the keyboard driver for the modular Xorg server. diff --git a/xf86-input-keyboard-dfbsd/Makefile b/xf86-input-keyboard-dfbsd/Makefile new file mode 100644 index 0000000000..5e10b0b966 --- /dev/null +++ b/xf86-input-keyboard-dfbsd/Makefile @@ -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" diff --git a/xf86-input-keyboard-dfbsd/PLIST b/xf86-input-keyboard-dfbsd/PLIST new file mode 100644 index 0000000000..e8acc066a4 --- /dev/null +++ b/xf86-input-keyboard-dfbsd/PLIST @@ -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 diff --git a/xf86-input-keyboard-dfbsd/distinfo b/xf86-input-keyboard-dfbsd/distinfo new file mode 100644 index 0000000000..5425feb8d2 --- /dev/null +++ b/xf86-input-keyboard-dfbsd/distinfo @@ -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 diff --git a/xf86-input-keyboard-dfbsd/patches/patch-src_at__scancode.c b/xf86-input-keyboard-dfbsd/patches/patch-src_at__scancode.c new file mode 100644 index 0000000000..dd090ef079 --- /dev/null +++ b/xf86-input-keyboard-dfbsd/patches/patch-src_at__scancode.c @@ -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; diff --git a/xf86-input-keyboard-dfbsd/patches/patch-src_bsd__KbdMap.c b/xf86-input-keyboard-dfbsd/patches/patch-src_bsd__KbdMap.c new file mode 100644 index 0000000000..28cea1309b --- /dev/null +++ b/xf86-input-keyboard-dfbsd/patches/patch-src_bsd__KbdMap.c @@ -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; diff --git a/xf86-input-keyboard-dfbsd/patches/patch-src_bsd__kbd.c b/xf86-input-keyboard-dfbsd/patches/patch-src_bsd__kbd.c new file mode 100644 index 0000000000..ca13f39f7a --- /dev/null +++ b/xf86-input-keyboard-dfbsd/patches/patch-src_bsd__kbd.c @@ -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 ++#include ++#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); diff --git a/xf86-input-keyboard-dfbsd/patches/patch-src_kbd.c b/xf86-input-keyboard-dfbsd/patches/patch-src_kbd.c new file mode 100644 index 0000000000..7270aa7c3f --- /dev/null +++ b/xf86-input-keyboard-dfbsd/patches/patch-src_kbd.c @@ -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 +@@ -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: diff --git a/xf86-input-keyboard-dfbsd/patches/patch-src_sun__kbd.c b/xf86-input-keyboard-dfbsd/patches/patch-src_sun__kbd.c new file mode 100644 index 0000000000..025108e57e --- /dev/null +++ b/xf86-input-keyboard-dfbsd/patches/patch-src_sun__kbd.c @@ -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 /* for ioctl */ ++#include ++#include ++#include ++#include /* needed before including older versions of hid.h */ ++#include + #include + #include "xf86.h" + #include "xf86Priv.h" +@@ -56,11 +62,6 @@ + #include "xf86OSKbd.h" + #include "sun_kbd.h" + +-#include +-#include +-#include +-#include /* needed before including older versions of hid.h */ +-#include + + static int KbdOn(InputInfoPtr pInfo, int what); + static Bool OpenKeyboard(InputInfoPtr pInfo);