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-->