Module Name:    src
Committed By:   nia
Date:           Tue May 11 10:16:48 UTC 2021

Modified Files:
        src/sys/dev/hid: hidkbdmap.c
        src/sys/dev/pckbport: wskbdmap_mfii.c
        src/sys/dev/wscons: wsksymdef.h

Log Message:
wscons: add support for the Neo 2 German keyboard layout

Neo is an optimized layout for German and English, similar to
Dvorak for English. It can be used to type most Latin-based languages
and has separate layers for symbols and directional commands.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 src/sys/dev/hid/hidkbdmap.c
cvs rdiff -u -r1.33 -r1.34 src/sys/dev/pckbport/wskbdmap_mfii.c
cvs rdiff -u -r1.75 -r1.76 src/sys/dev/wscons/wsksymdef.h

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/sys/dev/hid/hidkbdmap.c
diff -u src/sys/dev/hid/hidkbdmap.c:1.12 src/sys/dev/hid/hidkbdmap.c:1.13
--- src/sys/dev/hid/hidkbdmap.c:1.12	Sat Aug 29 22:42:53 2020
+++ src/sys/dev/hid/hidkbdmap.c	Tue May 11 10:16:48 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: hidkbdmap.c,v 1.12 2020/08/29 22:42:53 macallan Exp $	*/
+/*	$NetBSD: hidkbdmap.c,v 1.13 2021/05/11 10:16:48 nia Exp $	*/
 
 /*
  * Copyright (c) 1999,2001 The NetBSD Foundation, Inc.
@@ -31,7 +31,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.12 2020/08/29 22:42:53 macallan Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.13 2021/05/11 10:16:48 nia Exp $");
 
 #include <sys/types.h>
 #include <dev/wscons/wsksymdef.h>
@@ -327,6 +327,60 @@ Static const keysym_t hidkbd_keydesc_de_
     KC(53),  KS_asciicircum,	KS_degree,
 };
 
+Static const keysym_t hidkbd_keydesc_de_neo[] = {
+/*  pos     normal		shifted 	layer 3		layer 4 */
+    KC(53),  KS_dead_circumflex,	KS_dead_caron,
+    KC(30),  KS_1,		KS_degree,	KS_onesuperior,	KS_ordfeminine,
+    KC(31),  KS_2,		KS_section,	KS_twosuperior,	KS_masculine,
+    KC(32),  KS_3,		KS_l,		KS_threesuperior,KS_numbersign,
+    KC(33),  KS_4,		KS_guillemotright,KS_greater,
+    KC(34),  KS_5,		KS_guillemotleft,KS_less,	KS_periodcentered,
+    KC(35),  KS_6,		KS_dollar,	KS_cent,	KS_sterling,
+    KC(36),  KS_7,		KS_currency,	KS_yen,		KS_currency,
+    KC(37),  KS_8,		KS_quotedbl,	KS_quotedbl,	KS_Tab,
+    KC(38),  KS_9,		KS_quotedbl,	KS_quotedbl,	KS_KP_Divide,
+    KC(39),  KS_0,		KS_quotedbl,	KS_quotedbl,	KS_KP_Multiply,
+    KC(45),  KS_minus,		KS_hyphen,	KS_minus,	KS_minus,
+    KC(46),  KS_dead_grave,	KS_dead_cedilla,KS_dead_abovering,
+    KC(20),  KS_x,		KS_X,		KS_period,	KS_Prior,
+    KC(26),  KS_v,		KS_V,		KS_underscore,	KS_BackSpace,
+    KC(8),   KS_l,		KS_L,		KS_bracketleft,	KS_Up,
+    KC(21),  KS_c,		KS_C,		KS_bracketright,KS_Delete,
+    KC(23),  KS_w,		KS_W,		KS_asciicircum,	KS_Next,
+    KC(28),  KS_k,		KS_K,		KS_exclam,	KS_exclamdown,
+    KC(24),  KS_h,		KS_H,		KS_less,	KS_KP_7,
+    KC(12),  KS_g,		KS_G,		KS_greater,	KS_KP_8,
+    KC(18),  KS_f,		KS_F,		KS_equal,	KS_KP_9,
+    KC(19),  KS_q,		KS_Q,		KS_ampersand,	KS_KP_Add,
+    KC(47),  KS_ssharp,		KS_ssharp,	KS_f,		KS_KP_Subtract,
+    KC(48),  KS_dead_acute,	KS_dead_tilde,
+    KC(4),   KS_u,		KS_U,		KS_backslash,	KS_Home,
+    KC(22),  KS_i,		KS_I,		KS_slash,	KS_Left,
+    KC(7),   KS_a,		KS_A,		KS_braceleft,	KS_Down,
+    KC(9),   KS_e,		KS_E,		KS_braceright,	KS_Right,
+    KC(10),  KS_o,		KS_O,		KS_asterisk,	KS_End,
+    KC(11),  KS_s,		KS_S,		KS_question,	KS_questiondown,
+    KC(13),  KS_n,		KS_N,		KS_parenleft,	KS_KP_4,
+    KC(14),  KS_r,		KS_R,		KS_parenright,	KS_KP_5,
+    KC(15),  KS_t,		KS_T,		KS_minus,	KS_KP_6,
+    KC(51),  KS_d,		KS_D,		KS_colon,	KS_KP_Separator,
+    KC(52),  KS_y,		KS_Y,		KS_at,		KS_KP_Decimal,
+    KC(29),  KS_udiaeresis,	KS_Udiaeresis,	KS_numbersign,	KS_Escape,
+    KC(27),  KS_odiaeresis,	KS_Odiaeresis,	KS_dollar,	KS_Tab,
+    KC(6),   KS_adiaeresis,	KS_Adiaeresis,	KS_bar,		KS_Insert,
+    KC(25),  KS_p,		KS_P,		KS_asciitilde,	KS_Return,
+    KC(5),   KS_z,		KS_Z,		KS_grave,	KS_Undo,
+    KC(17),  KS_b,		KS_B,		KS_plus,	KS_colon,
+    KC(16),  KS_m,		KS_M,		KS_percent,	KS_KP_1,
+    KC(54),  KS_comma,		KS_minus,	KS_quotedbl,	KS_KP_2,
+    KC(55),  KS_period,		KS_period,	KS_apostrophe,	KS_KP_3,
+    KC(56),  KS_j,		KS_J,		KS_semicolon,	KS_semicolon,
+    KC(50),  KS_Mode_switch,	KS_Multi_key,
+    KC(57),  KS_Mode_switch,	KS_Multi_key,
+    KC(100), KS_Mode_switch,	KS_Multi_key,
+    KC(230), KS_Mode_switch,	KS_Multi_key,
+};
+
 Static const keysym_t hidkbd_keydesc_dk[] = {
 /*  pos      normal		shifted		altgr		shift-altgr */
     KC(31),  KS_2,		KS_quotedbl,	KS_at,
@@ -826,6 +880,7 @@ const struct wscons_keydesc hidkbd_keyde
 	KBD_MAP(KB_JP | KB_SWAPCTRLCAPS,KB_JP,	hidkbd_keydesc_swapctrlcaps),
 	KBD_MAP(KB_DE,			KB_US,	hidkbd_keydesc_de),
 	KBD_MAP(KB_DE | KB_NODEAD,	KB_DE,	hidkbd_keydesc_de_nodead),
+	KBD_MAP(KB_NEO,			KB_US,	hidkbd_keydesc_de_neo),
 	KBD_MAP(KB_FR,                  KB_US,  hidkbd_keydesc_fr),
 	KBD_MAP(KB_FR | KB_SWAPCTRLCAPS,KB_FR,	hidkbd_keydesc_swapctrlcaps),
 	KBD_MAP(KB_BE,                  KB_FR,  hidkbd_keydesc_be),

Index: src/sys/dev/pckbport/wskbdmap_mfii.c
diff -u src/sys/dev/pckbport/wskbdmap_mfii.c:1.33 src/sys/dev/pckbport/wskbdmap_mfii.c:1.34
--- src/sys/dev/pckbport/wskbdmap_mfii.c:1.33	Mon Jul 13 09:44:48 2020
+++ src/sys/dev/pckbport/wskbdmap_mfii.c	Tue May 11 10:16:48 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: wskbdmap_mfii.c,v 1.33 2020/07/13 09:44:48 nia Exp $	*/
+/*	$NetBSD: wskbdmap_mfii.c,v 1.34 2021/05/11 10:16:48 nia Exp $	*/
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -30,7 +30,7 @@
  */
 
 #include <sys/cdefs.h>
-__KERNEL_RCSID(0, "$NetBSD: wskbdmap_mfii.c,v 1.33 2020/07/13 09:44:48 nia Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wskbdmap_mfii.c,v 1.34 2021/05/11 10:16:48 nia Exp $");
 
 #include "opt_wskbdmap.h"
 #include <sys/types.h>
@@ -280,6 +280,62 @@ static const keysym_t pckbd_keydesc_de_n
     KC(41),  KS_asciicircum,	KS_degree,
 };
 
+static const keysym_t pckbd_keydesc_de_neo[] = {
+/*  pos     normal		shifted 	layer 3		layer 4 */
+    KC(41),  KS_dead_circumflex,	KS_dead_caron,
+    KC(2),   KS_1,		KS_degree,	KS_onesuperior,	KS_ordfeminine,
+    KC(3),   KS_2,		KS_section,	KS_twosuperior,	KS_masculine,
+    KC(4),   KS_3,		KS_l,		KS_threesuperior,KS_numbersign,
+    KC(5),   KS_4,		KS_guillemotright,KS_greater,
+    KC(6),   KS_5,		KS_guillemotleft,KS_less,	KS_periodcentered,
+    KC(7),   KS_6,		KS_dollar,	KS_cent,	KS_sterling,
+    KC(8),   KS_7,		KS_currency,	KS_yen,		KS_currency,
+    KC(9),   KS_8,		KS_quotedbl,	KS_quotedbl,	KS_Tab,
+    KC(10),  KS_9,		KS_quotedbl,	KS_quotedbl,	KS_KP_Divide,
+    KC(11),  KS_0,		KS_quotedbl,	KS_quotedbl,	KS_KP_Multiply,
+    KC(12),  KS_minus,		KS_hyphen,	KS_minus,	KS_minus,
+    KC(13),  KS_dead_grave,	KS_dead_cedilla,KS_dead_abovering,
+    KC(16),  KS_x,		KS_X,		KS_period,	KS_Prior,
+    KC(17),  KS_v,		KS_V,		KS_underscore,	KS_BackSpace,
+    KC(18),  KS_l,		KS_L,		KS_bracketleft,	KS_Up,
+    KC(19),  KS_c,		KS_C,		KS_bracketright,KS_Delete,
+    KC(20),  KS_w,		KS_W,		KS_asciicircum,	KS_Next,
+    KC(21),  KS_k,		KS_K,		KS_exclam,	KS_exclamdown,
+    KC(22),  KS_h,		KS_H,		KS_less,	KS_KP_7,
+    KC(23),  KS_g,		KS_G,		KS_greater,	KS_KP_8,
+    KC(24),  KS_f,		KS_F,		KS_equal,	KS_KP_9,
+    KC(25),  KS_q,		KS_Q,		KS_ampersand,	KS_KP_Add,
+    KC(26),  KS_ssharp,		KS_ssharp,	KS_f,		KS_KP_Subtract,
+    KC(27),  KS_dead_acute,	KS_dead_tilde,
+    KC(29),  KS_Control_L,	KS_Control_L,	KS_Control_L,	KS_Control_L,
+    KC(30),  KS_u,		KS_U,		KS_backslash,	KS_Home,
+    KC(31),  KS_i,		KS_I,		KS_slash,	KS_Left,
+    KC(32),  KS_a,		KS_A,		KS_braceleft,	KS_Down,
+    KC(33),  KS_e,		KS_E,		KS_braceright,	KS_Right,
+    KC(34),  KS_o,		KS_O,		KS_asterisk,	KS_End,
+    KC(35),  KS_s,		KS_S,		KS_question,	KS_questiondown,
+    KC(36),  KS_n,		KS_N,		KS_parenleft,	KS_KP_4,
+    KC(37),  KS_r,		KS_R,		KS_parenright,	KS_KP_5,
+    KC(38),  KS_t,		KS_T,		KS_minus,	KS_KP_6,
+    KC(39),  KS_d,		KS_D,		KS_colon,	KS_KP_Separator,
+    KC(40),  KS_y,		KS_Y,		KS_at,		KS_KP_Decimal,
+    KC(44),  KS_udiaeresis,	KS_Udiaeresis,	KS_numbersign,	KS_Escape,
+    KC(45),  KS_odiaeresis,	KS_Odiaeresis,	KS_dollar,	KS_Tab,
+    KC(46),  KS_adiaeresis,	KS_Adiaeresis,	KS_bar,		KS_Insert,
+    KC(47),  KS_p,		KS_P,		KS_asciitilde,	KS_Return,
+    KC(48),  KS_z,		KS_Z,		KS_grave,	KS_Undo,
+    KC(49),  KS_b,		KS_B,		KS_plus,	KS_colon,
+    KC(50),  KS_m,		KS_M,		KS_percent,	KS_KP_1,
+    KC(51),  KS_comma,		KS_minus,	KS_quotedbl,	KS_KP_2,
+    KC(52),  KS_period,		KS_period,	KS_apostrophe,	KS_KP_3,
+    KC(53),  KS_j,		KS_J,		KS_semicolon,	KS_semicolon,
+    KC(56),  KS_Alt_L,		KS_Alt_L,	KS_Alt_L,	KS_Alt_L,
+    KC(43),  KS_Mode_switch,	KS_Multi_key,
+    KC(58),  KS_Mode_switch,	KS_Multi_key,
+    KC(86),  KS_Mode_switch,	KS_Multi_key,
+    KC(184), KS_Mode_switch,	KS_Multi_key,
+};
+
 static const keysym_t pckbd_keydesc_sg[] = {
 /*  pos      normal             shifted         altgr           shift-altgr */
     KC(2),   KS_1,              KS_plus,        KS_bar,
@@ -982,6 +1038,7 @@ const struct wscons_keydesc pckbd_keydes
 #ifndef WSKBD_USONLY
 	KBD_MAP(KB_DE,			KB_US,	pckbd_keydesc_de),
 	KBD_MAP(KB_DE | KB_NODEAD,	KB_DE,	pckbd_keydesc_de_nodead),
+	KBD_MAP(KB_NEO,			KB_US,	pckbd_keydesc_de_neo),
 	KBD_MAP(KB_SG,			KB_US,	pckbd_keydesc_sg),
 	KBD_MAP(KB_SG | KB_NODEAD,	KB_SG,	pckbd_keydesc_sg_nodead),
 	KBD_MAP(KB_SF,			KB_SG,	pckbd_keydesc_sf),

Index: src/sys/dev/wscons/wsksymdef.h
diff -u src/sys/dev/wscons/wsksymdef.h:1.75 src/sys/dev/wscons/wsksymdef.h:1.76
--- src/sys/dev/wscons/wsksymdef.h:1.75	Sat Oct 17 10:28:10 2020
+++ src/sys/dev/wscons/wsksymdef.h	Tue May 11 10:16:48 2021
@@ -1,4 +1,4 @@
-/*	$NetBSD: wsksymdef.h,v 1.75 2020/10/17 10:28:10 mlelstv Exp $ */
+/*	$NetBSD: wsksymdef.h,v 1.76 2021/05/11 10:16:48 nia Exp $ */
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -664,7 +664,8 @@ action(KB_NL,	0,	0x1600,	"nl",	,	"Dutch"
 action(KB_EE,	0,	0x1900,	"ee",	,	"Estonian") 		\
 action(KB_FI,	0,	0x0900,	"fi",	,	"Finnish")		\
 action(KB_FR,	0,	0x0600,	"fr",	,	"French")		\
-action(KB_DE, KB_NODEAD,0x0300,	"de",".nodead",	"German")		\
+action(KB_DE, KB_NODEAD,0x0300,	"de",".nodead",	"German (QWERTZ)")	\
+action(KB_NEO,  0,	0x2000,	"neo",	,	"German (Neo 2)")	\
 action(KB_GR,	0,	0x1400,	"gr",	,	"Greek")		\
 action(KB_HU,	0,	0x0c00,	"hu",	,	"Hungarian")		\
 action(KB_IS,	0,	0x1a00,	"is",	,	"Icelandic")		\

Reply via email to