Subject: port-i386/35473: Added Dutch keyboard support to wscons (patches included)
To: None <port-i386-maintainer@netbsd.org, gnats-admin@netbsd.org,>
From: None <spanny@spanny.nl>
List: netbsd-bugs
Date: 01/24/2007 09:20:00
>Number:         35473
>Category:       port-i386
>Synopsis:       Added Dutch keyboard support to wscons (patches included)
>Confidential:   no
>Severity:       non-critical
>Priority:       medium
>Responsible:    port-i386-maintainer
>State:          open
>Class:          change-request
>Submitter-Id:   net
>Arrival-Date:   Wed Jan 24 09:20:00 +0000 2007
>Originator:     Wigcher Spanninga
>Release:        3.1
>Organization:
>Environment:
NetBSD staalbsd 3.1 NetBSD 3.1
>Description:
Being the user of a dutch PC keyboard I find it more convenient to use the dutch keyboard layout when working on the console. I therefor updated wskbdmap_mfii.c and wsksymdef.h to include dutch keyboard support and rebuild the kernel and wsconsctl. If this could be added to some future release that would be nice.
>How-To-Repeat:
wsconsctl -k -w encoding=nl
wsconsctl: nl: not a valid encoding
>Fix:
Applying the following patches and rebuilding the kernel and wsconsctl will fix the problem:

wsksymdef.h:
<--snip-->
Index: wsksymdef.h
===================================================================
RCS file: /cvsroot/src/sys/dev/wscons/wsksymdef.h,v
retrieving revision 1.56
diff -u -r1.56 wsksymdef.h
--- wsksymdef.h	1 Apr 2006 23:02:32 -0000	1.56
+++ wsksymdef.h	24 Jan 2007 08:43:08 -0000
@@ -584,6 +584,7 @@
 action(KB_UK,	0,	0x0700,	"uk",	,	"UK-English")	\
 action(KB_BE,	0,	0x1300,	"be",	,	"Belgian")	\
 action(KB_DK,	0,	0x0400,	"dk",	,	"Danish")	\
+action(KB_NL,	0,	0x1500,	"nl",	,	"Dutch") 	\
 action(KB_FI,	0,	0x0900,	"fi",	,	"Finnish")	\
 action(KB_FR,	0,	0x0600,	"fr",	,	"French")	\
 action(KB_DE, KB_NODEAD,0x0300,	"de",".nodead",	"German")	\
@@ -604,7 +605,7 @@
 
 /* Define all the KB_xx numeric values using above table */
 #define KBF_ENUM(tag, tagf, value, cc, ccf, country) tag=value,
-enum { KB_ENC_FUN(KBF_ENUM) KB_NEXT=0x1500 };
+enum { KB_ENC_FUN(KBF_ENUM) KB_NEXT=0x1600 };
 
 /* Define list of KB_xxx and country codes for array initialisation */
 #define KBF_ENCTAB(tag, tagf, value, cc, ccf, country) { tag, cc },
<--snip-->

wskbdmap_mfii.c:
<--snip-->
Index: wskbdmap_mfii.c
===================================================================
RCS file: /cvsroot/src/sys/dev/pckbport/wskbdmap_mfii.c,v
retrieving revision 1.11
diff -u -r1.11 wskbdmap_mfii.c
--- wskbdmap_mfii.c	1 Apr 2006 23:02:32 -0000	1.11
+++ wskbdmap_mfii.c	24 Jan 2007 08:38:32 -0000
@@ -192,6 +192,40 @@
     KC(184), KS_Mode_switch,	KS_Multi_key,
 };
 
+static const keysym_t pckbd_keydesc_nl[] = {
+/*  pos	     normal		shifted		altgr		shift-altgr */
+    KC(2),   KS_1,		KS_exclam,	KS_onesuperior,
+    KC(3),   KS_2,		KS_quotedbl,	KS_twosuperior,
+    KC(4),   KS_3,		KS_numbersign,	KS_threesuperior,
+    KC(5),   KS_4,		KS_dollar,	KS_onequarter,
+    KC(6),   KS_5,		KS_percent,	KS_onehalf,
+    KC(7),   KS_6,		KS_ampersand,	KS_threequarters,
+    KC(8),   KS_7,		KS_underscore,	KS_sterling,
+    KC(9),   KS_8,		KS_parenleft,	KS_bracketleft,
+    KC(10),  KS_9,		KS_parenright,	KS_bracketright,
+    KC(11),  KS_0,		KS_apostrophe,
+    KC(12),  KS_slash,		KS_question,	KS_backslash,
+    KC(13),  KS_degree,		KS_dead_tilde,	KS_dead_cedilla,
+    KC(18),  KS_e,		KS_E,		KS_currency,
+    KC(26),  KS_dead_diaeresis,	KS_dead_circumflex,
+    KC(27),  KS_asterisk,	KS_bar,
+    KC(30),  KS_s,		KS_S,		KS_ssharp,
+    KC(39),  KS_plus,		KS_plusminus,
+    KC(40),  KS_dead_acute,	KS_dead_grave,
+    KC(41),  KS_at,		KS_paragraph,	KS_notsign,
+    KC(43),  KS_less,		KS_greater,
+    KC(44),  KS_z,		KS_Z,		KS_guillemotleft,
+    KC(45),  KS_x,		KS_X,		KS_guillemotright,
+    KC(46),  KS_c,		KS_C,		KS_cent,
+    KC(50),  KS_m,		KS_M,		KS_mu,
+    KC(51),  KS_comma,		KS_semicolon,
+    KC(52),  KS_period,		KS_colon,
+    KC(53),  KS_minus,		KS_equal,
+    KC(86),  KS_braceleft,	KS_braceright,	KS_brokenbar,
+    KC(184), KS_Mode_switch,	KS_Multi_key,
+};
+
+
 static const keysym_t pckbd_keydesc_de[] = {
 /*  pos      normal		shifted		altgr		shift-altgr */
     KC(3),   KS_2,		KS_quotedbl,	KS_twosuperior,
@@ -579,6 +613,7 @@
 	KBD_MAP(KB_ES ,			KB_US,	pckbd_keydesc_es),
 	KBD_MAP(KB_PT,			KB_US,	pckbd_keydesc_pt),
 	KBD_MAP(KB_GR,			KB_US,	pckbd_keydesc_gr),
+	KBD_MAP(KB_NL,      KB_US,  pckbd_keydesc_nl),
 #endif /* WSKBD_USONLY */
 
 	/* placeholders */
<--snip-->