Module Name:    src
Committed By:   martin
Date:           Mon Jul 13 14:22:47 UTC 2020

Modified Files:
        src/etc [netbsd-9]: wscons.conf
        src/sbin/wsconsctl [netbsd-9]: wsconsctl.8
        src/share/man/man4 [netbsd-9]: pckbd.4 wskbd.4
        src/sys/dev/hid [netbsd-9]: hidkbdmap.c
        src/sys/dev/pckbport [netbsd-9]: wskbdmap_mfii.c
        src/sys/dev/wscons [netbsd-9]: wsksymdef.h

Log Message:
Pull up following revision(s) (requested by nia in ticket #1002):

        sys/dev/wscons/wsksymdef.h: revision 1.68
        sys/dev/wscons/wsksymdef.h: revision 1.69
        sys/dev/pckbport/wskbdmap_mfii.c: revision 1.28
        sys/dev/pckbport/wskbdmap_mfii.c: revision 1.29
        sys/dev/hid/hidkbdmap.c: revision 1.10
        share/man/man4/pckbd.4: revision 1.23
        share/man/man4/wskbd.4: revision 1.18
        share/man/man4/wskbd.4: revision 1.19
        share/man/man4/pckbd.4: revision 1.25
        sys/dev/wscons/wsksymdef.h: revision 1.70
        sys/dev/wscons/wsksymdef.h: revision 1.71
        sys/dev/pckbport/wskbdmap_mfii.c: revision 1.30
        sys/dev/wscons/wsksymdef.h: revision 1.72
        sys/dev/pckbport/wskbdmap_mfii.c: revision 1.31
        sys/dev/wscons/wsksymdef.h: revision 1.73
        sys/dev/pckbport/wskbdmap_mfii.c: revision 1.32
        sys/dev/pckbport/wskbdmap_mfii.c: revision 1.33
        sys/dev/hid/hidkbdmap.c: revision 1.4
        sbin/wsconsctl/wsconsctl.8: revision 1.30
        sys/dev/hid/hidkbdmap.c: revision 1.5
        etc/wscons.conf: revision 1.20
        sys/dev/hid/hidkbdmap.c: revision 1.6
        etc/wscons.conf: revision 1.21
        sys/dev/hid/hidkbdmap.c: revision 1.7
        sys/dev/hid/hidkbdmap.c: revision 1.8
        sys/dev/hid/hidkbdmap.c: revision 1.9

Add support for the Brazilian keyboard layout to pckbd and ukbd.

This is significantly different from the European Portugese layout,
and was pieced together from Wikipedia, X11 layout files, and to
some extent with trial and error.

Thanks to lun-4 for helping test this.

PR kern/44570
Update lists of keyboard layouts to add Turkish and Brazilian

Bring br.nodead closer to X11

Add Estonian layout as a variation of Swedish for ukbd and pckbd

Add KB_TR for uhid keyboards (it was PS/2 only, this seems wrong)

Add Icelandic keyboard layout to ukbd/pckbd.

Add keyboard layout for Latin American Spanish to ukbd/pckbd

Canadian French keyboard layout for ukbd/pckbd

Clarify that KB_TR is the "Q" layout - there's two standards for Turkish.

Move description of keyboard layouts to wskbd.4, add newer layouts

Previously, the best reference was pckbd.4. This does not make much
sense to read if you are on, say, an evbarm device with only USB.
wsconsctl.8 contained a vaguer description of supported language names,
which isn't very useful because you can't pass full language names
to the command. Point readers to wskbd.4 instead.

Note in the wskbd.4 page that while all layouts are generally supported
by pckbd(4) and ukbd(4), older keyboard interfaces might only support
a subset.

wskbd.4: Add KB_LA

Point readers at wskbd.4


To generate a diff of this commit:
cvs rdiff -u -r1.19 -r1.19.46.1 src/etc/wscons.conf
cvs rdiff -u -r1.28 -r1.28.42.1 src/sbin/wsconsctl/wsconsctl.8
cvs rdiff -u -r1.21.44.1 -r1.21.44.2 src/share/man/man4/pckbd.4
cvs rdiff -u -r1.16 -r1.16.34.1 src/share/man/man4/wskbd.4
cvs rdiff -u -r1.1.10.1 -r1.1.10.2 src/sys/dev/hid/hidkbdmap.c
cvs rdiff -u -r1.26.10.1 -r1.26.10.2 src/sys/dev/pckbport/wskbdmap_mfii.c
cvs rdiff -u -r1.67 -r1.67.10.1 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/etc/wscons.conf
diff -u src/etc/wscons.conf:1.19 src/etc/wscons.conf:1.19.46.1
--- src/etc/wscons.conf:1.19	Fri Jul 22 19:06:23 2011
+++ src/etc/wscons.conf	Mon Jul 13 14:22:47 2020
@@ -1,4 +1,4 @@
-#	$NetBSD: wscons.conf,v 1.19 2011/07/22 19:06:23 christos Exp $
+#	$NetBSD: wscons.conf,v 1.19.46.1 2020/07/13 14:22:47 martin Exp $
 #
 # workstation console configuration
 
@@ -33,10 +33,8 @@ screen	4	-	-
 #keyboard	auto
 
 # Select a kernel builtin keyboard map by uncommenting the following line and
-# altering the country code to your requirements
-# (choose from user, us, uk, be, cz, dk, nl, fi, fr, de, gr, hu, it, jp, no,
-# pl, pt, ru, es, sv, sf, sg, ua)
-# See wsconsctl(8), pckbd(4), ukbd(4) etc. for more details.
+# altering the country code to your requirements.
+# See wskbd(4) for a full list of supported options.
 #encoding sv
 #encoding us.swapctrlcaps
 

Index: src/sbin/wsconsctl/wsconsctl.8
diff -u src/sbin/wsconsctl/wsconsctl.8:1.28 src/sbin/wsconsctl/wsconsctl.8:1.28.42.1
--- src/sbin/wsconsctl/wsconsctl.8:1.28	Tue Feb 14 11:05:32 2012
+++ src/sbin/wsconsctl/wsconsctl.8	Mon Jul 13 14:22:47 2020
@@ -1,4 +1,4 @@
-.\" $NetBSD: wsconsctl.8,v 1.28 2012/02/14 11:05:32 wiz Exp $
+.\" $NetBSD: wsconsctl.8,v 1.28.42.1 2020/07/13 14:22:47 martin Exp $
 .\"
 .\" Copyright (c) 1998, 2004 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -27,7 +27,7 @@
 .\" ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
 .\" POSSIBILITY OF SUCH DAMAGE.
 .\"/
-.Dd June 9, 2009
++.Dd July 13, 2020
 .Dt WSCONSCTL 8
 .Os
 .Sh NAME
@@ -114,12 +114,6 @@ file.
 There are also definitions relating to video control and cursor
 control, which are not applicable to all display types, and to text
 emulation and graphics (mapped) modes.
-.Pp
-In addition to British, US, and US-Dvorak keyboard encodings, support
-currently exists for the following languages: Belgian, Danish, Finnish,
-French, German, Greek, Hungarian, Italian, Japanese, Norwegian, Polish,
-Portuguese, Russian, Spanish, Swedish, Swiss, and Ukrainian.
-Additionally, a user-defined encoding is supported.
 .Sh FILES
 .Bl -tag -width /dev/wsmouse
 .It Pa /dev/wskbd
@@ -137,6 +131,8 @@ and its functionality.
 .Dl wsconsctl -w encoding=uk
 .Pp
 Set a UK keyboard encoding.
+For a full list of supported keyboard encodings, see
+.Xr wskbd 4 .
 .Pp
 .Dl wsconsctl -w map+="keysym Caps_Lock = Control_L"
 .Pp
@@ -200,8 +196,8 @@ and
 .Dv Cmd_ScrollSlowUp
 defined in your keyboard map.
 .Sh SEE ALSO
-.Xr pckbd 4 ,
 .Xr wscons 4 ,
+.Xr wskbd 4 ,
 .Xr wscons.conf 5 ,
 .Xr wsconscfg 8 ,
 .Xr wsfontload 8

Index: src/share/man/man4/pckbd.4
diff -u src/share/man/man4/pckbd.4:1.21.44.1 src/share/man/man4/pckbd.4:1.21.44.2
--- src/share/man/man4/pckbd.4:1.21.44.1	Tue Jan 21 15:39:02 2020
+++ src/share/man/man4/pckbd.4	Mon Jul 13 14:22:47 2020
@@ -1,4 +1,4 @@
-.\" $NetBSD: pckbd.4,v 1.21.44.1 2020/01/21 15:39:02 martin Exp $
+.\" $NetBSD: pckbd.4,v 1.21.44.2 2020/07/13 14:22:47 martin Exp $
 .\"
 .\" Copyright (c) 1999
 .\" 	Matthias Drochner.  All rights reserved.
@@ -24,7 +24,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd January 11, 2020
+.Dd July 13, 2020
 .Dt PCKBD 4
 .Os
 .Sh NAME
@@ -56,78 +56,6 @@ at compile time or with the utility
 at runtime.
 Other mappings can be used if the whole keymap is replaced by means of
 .Xr wsconsctl 8 .
-The builtin mappings are at this time:
-.Bl -column " KB_US|KB_COLEMAK" "wsconsctl" "language"
-.It Sy "option" Ta Sy "wsconsctl" Ta Sy "language"
-.It Li KB_US Ta us Ta English/US keyboard mapping (default)
-.It Li KB_UK Ta uk Ta English/UK keyboard mapping
-.It Li KB_BE Ta be Ta Belgian
-.It Li KB_CZ Ta cz Ta Czech (QWERTY)
-.It Li KB_DK Ta dk Ta Danish with
-.Dq dead accents
-.It Li KB_NL Ta nl Ta Dutch
-.It Li KB_FI Ta fi Ta Finnish
-.It Li KB_FR Ta fr Ta French
-.It Li KB_DE Ta de Ta German with
-.Dq dead accents
-.It Li KB_GR Ta gr Ta Greek
-.It Li KB_HU Ta hu Ta Hungarian
-.It Li KB_IT Ta it Ta Italian
-.It Li KB_JP Ta jp Ta Japanese
-.It Li KB_NO Ta no Ta Norwegian with
-.Dq dead accents
-.It Li KB_PL Ta pl Ta Polish
-.It Li KB_PT Ta pt Ta Portuguese
-.It Li KB_RU Ta ru Ta Russian
-.It Li KB_ES Ta es Ta Spanish
-.It Li KB_SV Ta sv Ta Swedish with
-.Dq dead accents
-.It Li KB_SF Ta sf Ta Swiss French
-.It Li KB_SG Ta sg Ta Swiss German
-.It Li KB_UA Ta ua Ta Ukrainian
-.It Li "KB_US|KB_DECLK" Ta \&us.declk Ta English/US mapping for Tn DEC
-.It Ta Ta LK400-style keyboards with PC keyboard
-.It Ta Ta interface (e.g., LK461)
-.It Li "KB_US|KB_DVORAK" Ta us.dvorak Ta English/US keyboard with
-.It Ta Ta Do Dvorak Dc layout
-.It Li "KB_US|KB_COLEMAK" Ta us.colemak Ta English/US keyboard with
-.It Ta Ta Do Colemak Dc layout
-.El
-.Pp
-The
-.Li KB_DE ,
-.Li KB_DK ,
-.Li KB_NO
-and
-.Li KB_SV
-mappings can be used in the
-.Li KB_NODEAD (
-.Dq .nodead )
-variant.
-This switches off the
-.Dq dead accents .
-.Pp
-The
-.Li KB_US ,
-.Li KB_UK ,
-.Li KB_FR ,
-.Li KB_JP
-and
-.Li KB_US|KB_DVORAK
-mappings can be modified
-to swap the left CTRL and the CAPS LOCK keys by the
-.Li KB_SWAPCTRLCAPS
-variant bit or the
-.Dq .swapctrlcaps
-suffix.
-.Pp
-The
-.Li KB_METAESC (
-.Dq .metaesc )
-option can be applied to any layout.
-If set, keys pressed together
-with the ALT modifier are prefixed by an ESC character.
-(Standard behaviour is to add 128 to the ASCII value.)
 .Pp
 Because PC keyboard hardware doesn't contain a beeper, requests for
 .Dq keyboard beeps
@@ -153,6 +81,3 @@ to the kernel configuration file.
 .Xr pcppi 4 ,
 .Xr wskbd 4 ,
 .Xr wsconsctl 8
-.Sh BUGS
-The list of builtin mappings doesn't follow any logic.
-It grew as people submitted what they needed.

Index: src/share/man/man4/wskbd.4
diff -u src/share/man/man4/wskbd.4:1.16 src/share/man/man4/wskbd.4:1.16.34.1
--- src/share/man/man4/wskbd.4:1.16	Sun May 27 12:05:40 2012
+++ src/share/man/man4/wskbd.4	Mon Jul 13 14:22:47 2020
@@ -1,4 +1,4 @@
-.\" $NetBSD: wskbd.4,v 1.16 2012/05/27 12:05:40 wiz Exp $
+.\" $NetBSD: wskbd.4,v 1.16.34.1 2020/07/13 14:22:47 martin Exp $
 .\"
 .\" Copyright (c) 1999
 .\" 	Matthias Drochner.  All rights reserved.
@@ -24,7 +24,7 @@
 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
 .\" SUCH DAMAGE.
 .\"
-.Dd May 27, 2012
+.Dd July 13, 2020
 .Dt WSKBD 4
 .Os
 .Sh NAME
@@ -114,6 +114,88 @@ match if the device is in use as system 
 (The console device selection in early system startup is not influenced.)
 This way, the console device can be connected to a known
 wskbd device instance.
+.Ss Keyboard encodings
+The following encodings are supported.
+Device drivers for legacy keyboard interfaces may only support a subset
+of these.
+However, generally, all encodings are supported by 
+.Xr pckbd 4 and
+.Xr ukbd 4 .
+.Bl -column " us.colemak" " KB_US|KB_COLEMAK" "language"
+.It Sy "wsconsctl" Ta Sy "define" Ta Sy "language"
+.It Li user Ta KB_USER Ta User-defined
+.It Li us Ta KB_US Ta English/US keyboard mapping (default)
+.It Li uk Ta KB_UK Ta English/UK keyboard mapping
+.It Li be Ta KB_BE Ta Belgian
+.It Li br Ta KB_BR Ta Brazilian with
+.Dq dead accents
+.It Li cf Ta KB_CF Ta Canadian French
+.It Li cz Ta KB_CZ Ta Czech (QWERTY)
+.It Li dk Ta KB_DK Ta Danish with
+.Dq dead accents
+.It Li nl Ta KB_NL Ta Dutch
+.It Li ee Ta KB_DK Ta Estonian with
+.Dq dead accents
+.It Li fi Ta KB_FI Ta Finnish
+.It Li fr Ta KB_FR Ta French
+.It Li de Ta KB_DE Ta German with
+.Dq dead accents
+.It Li gr Ta KB_GR Ta Greek
+.It Li hu Ta KB_HU Ta Hungarian
+.It Li is Ta KB_IS Ta Icelandic with
+.Dq dead accents
+.It Li it Ta KB_IT Ta Italian
+.It Li jp Ta KB_JP Ta Japanese
+.It Li la Ta KB_LA Ta Latin American Spanish
+.It Li no Ta KB_NO Ta Norwegian with
+.Dq dead accents
+.It Li pl Ta KB_PL Ta Polish
+.It Li pt Ta KB_PT Ta Portuguese
+.It Li ru Ta KB_RU Ta Russian
+.It Li es Ta KB_ES Ta Spanish
+.It Li sv Ta KB_SV Ta Swedish with
+.Dq dead accents
+.It Li sf Ta KB_SF Ta Swiss French
+.It Li sg Ta KB_SG Ta Swiss German
+.It Li tr Ta KB_TR Ta Turkish (QWERTY) with
+.Dq dead accents
+.It Li ua Ta KB_UA Ta Ukrainian
+.It Li \&us.declk Ta "KB_US|KB_DECLK" Ta English/US mapping for Tn DEC
+.It Ta Ta LK400-style keyboards with PC keyboard
+.It Ta Ta interface (e.g., LK461)
+.It Li us.dvorak Ta "KB_US|KB_DVORAK" Ta English/US keyboard with
+.It Ta Ta Do Dvorak Dc layout
+.It Li us.colemak Ta "KB_US|KB_COLEMAK" Ta English/US keyboard with
+.It Ta Ta Do Colemak Dc layout
+.El
+.Pp
+.Li KB_NODEAD (
+.Dq .nodead )
+can be applied to layouts with
+.Dq dead accents
+to switch them off.
+.Pp
+The
+.Li KB_US ,
+.Li KB_UK ,
+.Li KB_FR ,
+.Li KB_JP
+and
+.Li KB_US|KB_DVORAK
+mappings can be modified
+to swap the left CTRL and the CAPS LOCK keys by the
+.Li KB_SWAPCTRLCAPS
+variant bit or the
+.Dq .swapctrlcaps
+suffix.
+.Pp
+The
+.Li KB_METAESC (
+.Dq .metaesc )
+option can be applied to any layout.
+If set, keys pressed together
+with the ALT modifier are prefixed by an ESC character.
+(Standard behaviour is to add 128 to the ASCII value.)
 .Ss Ioctls
 The following
 .Xr ioctl 2
@@ -169,3 +251,6 @@ if (ioctl(fd, WSKBDIO_SETVERSION, &ver) 
 .Xr wsmux 4 ,
 .Xr wsconsctl 8 ,
 .Xr wskbd 9
+.Sh BUGS
+The list of builtin mappings doesn't follow any logic.
+It grew as people submitted what they needed.

Index: src/sys/dev/hid/hidkbdmap.c
diff -u src/sys/dev/hid/hidkbdmap.c:1.1.10.1 src/sys/dev/hid/hidkbdmap.c:1.1.10.2
--- src/sys/dev/hid/hidkbdmap.c:1.1.10.1	Tue Jan 21 15:39:02 2020
+++ src/sys/dev/hid/hidkbdmap.c	Mon Jul 13 14:22:47 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hidkbdmap.c,v 1.1.10.1 2020/01/21 15:39:02 martin Exp $	*/
+/*	$NetBSD: hidkbdmap.c,v 1.1.10.2 2020/07/13 14:22:47 martin 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.1.10.1 2020/01/21 15:39:02 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.1.10.2 2020/07/13 14:22:47 martin Exp $");
 
 #include <sys/types.h>
 #include <dev/wscons/wsksymdef.h>
@@ -367,6 +367,22 @@ Static const keysym_t hidkbd_keydesc_sv_
     KC(48),  KS_diaeresis,	KS_asciicircum,	KS_asciitilde,
 };
 
+Static const keysym_t hidkbd_keydesc_ee[] = {
+/*  pos      normal             shifted         altgr                   shift-altgr */
+    KC(22),  KS_s,		KS_S,		KS_scaron,		KS_Scaron,
+    KC(29),  KS_z,		KS_Z,		KS_zcaron,		KS_Zcaron,
+    KC(47),  KS_udiaeresis,	KS_Udiaeresis,	KS_dead_diaeresis,	KS_dead_abovering,
+    KC(48),  KS_otilde,		KS_Otilde,	KS_section,
+    KC(50),  KS_apostrophe,	KS_asterisk,	KS_onehalf,		KS_dead_breve,
+    KC(52),  KS_adiaeresis,	KS_Adiaeresis,	KS_asciicircum,		KS_dead_caron,
+    KC(53),  KS_dead_caron,	KS_dead_tilde,	KS_notsign,		KS_notsign,
+};
+
+Static const keysym_t hidkbd_keydesc_ee_nodead[] = {
+/*  pos      normal		shifted		altgr		shift-altgr */
+    KC(53),  KS_asciicircum,	KS_asciitilde,	KS_notsign,	KS_notsign,
+};
+
 Static const keysym_t hidkbd_keydesc_no[] = {
 /*  pos      normal		shifted		altgr		shift-altgr */
     KC(46),  KS_backslash,	KS_dead_grave,	KS_dead_acute,
@@ -619,6 +635,173 @@ static const keysym_t hidkbd_keydesc_hu[
     KC(230), KS_Mode_switch,	KS_Multi_key
 };
 
+static const keysym_t hidkbd_keydesc_br[] = {
+/*  pos      normal             shifted                 altgr                   shift-altgr */
+    KC(6),   KS_c,		KS_C,			KS_copyright,		KS_copyright,
+    KC(8),   KS_e,		KS_E,			KS_currency,		KS_currency,
+    KC(16),  KS_m,		KS_M,			KS_mu,			KS_mu,
+    KC(20),  KS_q,		KS_Q,			KS_slash,		KS_slash,
+    KC(21),  KS_r,		KS_R,			KS_registered,		KS_registered,
+    KC(26),  KS_w,		KS_W,			KS_question,		KS_question,
+    KC(30),  KS_1,		KS_exclam,		KS_onesuperior,		KS_exclamdown,
+    KC(31),  KS_2,		KS_at,			KS_twosuperior,		KS_onehalf,
+    KC(32),  KS_3,		KS_numbersign,		KS_threesuperior,	KS_threequarters,
+    KC(33),  KS_4,		KS_dollar,		KS_sterling,		KS_onequarter,
+    KC(34),  KS_5,		KS_percent,		KS_cent,		KS_cent,
+    KC(35),  KS_6,		KS_dead_diaeresis,	KS_notsign,		KS_diaeresis,
+    KC(46),  KS_equal,		KS_plus,		KS_section,		KS_dead_ogonek,
+    KC(47),  KS_dead_acute,	KS_dead_grave,		KS_acute,		KS_grave,
+    KC(48),  KS_bracketleft,	KS_braceleft,		KS_ordfeminine,		KS_macron,
+    KC(49),  KS_bracketright,	KS_braceright,		KS_masculine,		KS_masculine,
+    KC(50),  KS_bracketright,	KS_braceright,		KS_masculine,		KS_masculine,
+    KC(51),  KS_ccedilla,	KS_Ccedilla,		KS_dead_acute,		KS_dead_hungarumlaut,
+    KC(52),  KS_dead_tilde,	KS_dead_circumflex,	KS_asciitilde,		KS_asciicircum,
+    KC(53),  KS_apostrophe,	KS_quotedbl,		KS_notsign,		KS_notsign,
+    KC(56),  KS_semicolon,	KS_colon,		KS_dead_dotaccent,	KS_abovedot,
+    KC(100), KS_backslash,	KS_bar,			KS_masculine,		KS_dead_breve,
+    KC(135), KS_slash,		KS_question,		KS_degree,		KS_questiondown,
+    KC(230), KS_Mode_switch,	KS_Multi_key,
+};
+
+static const keysym_t hidkbd_keydesc_br_nodead[] = {
+/*  pos      normal             shifted         altgr           shift-altgr */
+    KC(35),  KS_6,		KS_diaeresis,	KS_notsign,	KS_dead_diaeresis,
+    KC(47),  KS_apostrophe,	KS_grave,	KS_dead_acute,	KS_dead_grave,
+    KC(52),  KS_asciitilde,	KS_asciicircum,	KS_dead_tilde,	KS_dead_circumflex,
+};
+
+static const keysym_t hidkbd_keydesc_tr[] = {
+/*  pos      normal		shifted         altgr           shift-altgr */
+    KC(12),  KS_L5_idotless,	KS_I,
+    KC(20),  KS_q,		KS_Q,		KS_at,
+    KC(31),  KS_2,		KS_apostrophe,	KS_sterling,
+    KC(32),  KS_3,		KS_asciicircum,	KS_numbersign,
+    KC(33),  KS_4,		KS_plus,	KS_dollar,
+    KC(34),  KS_5,		KS_percent,	KS_onehalf,
+    KC(35),  KS_6,		KS_ampersand,
+    KC(36),  KS_7,		KS_slash,	KS_braceleft,
+    KC(37),  KS_8,		KS_parenleft,	KS_bracketleft,
+    KC(38),  KS_9,		KS_parenright,	KS_bracketright,
+    KC(39),  KS_0,		KS_equal,	KS_braceright,
+    KC(45),  KS_asterisk,	KS_question,	KS_backslash,
+    KC(46),  KS_minus,	KS_underscore,
+    KC(47),  KS_L5_gbreve,	KS_L5_Gbreve,	KS_dead_diaeresis,
+    KC(48),  KS_udiaeresis,	KS_Udiaeresis,	KS_asciitilde,
+    KC(49),  KS_comma,	KS_semicolon,	KS_dead_grave,
+    KC(50),  KS_comma,	KS_semicolon,	KS_dead_grave,
+    KC(51),  KS_L5_scedilla,	KS_L5_Scedilla,	KS_dead_acute,
+    KC(52),  KS_i,		KS_L5_Idotabove,
+    KC(53),  KS_quotedbl,	KS_eacute,
+    KC(54),  KS_odiaeresis,	KS_Odiaeresis,
+    KC(55),  KS_ccedilla,	KS_Ccedilla,
+    KC(56),  KS_period,	KS_colon,
+    KC(100), KS_less,	KS_greater,	KS_bar,
+    KC(230), KS_Mode_switch,	KS_Multi_key,
+};
+
+static const keysym_t hidkbd_keydesc_tr_nodead[] = {
+/*  pos      normal		shifted         altgr           shift-altgr */
+    KC(47),  KS_L5_gbreve,	KS_L5_Gbreve,
+    KC(49),  KS_comma,		KS_semicolon,	KS_grave,
+    KC(50),  KS_comma,		KS_semicolon,	KS_grave,
+    KC(51),  KS_L5_scedilla,	KS_L5_Scedilla,	KS_apostrophe,
+};
+
+static const keysym_t hidkbd_keydesc_is[] = {
+/*  pos      normal		shifted			altgr			shift-altgr */
+    KC(8),   KS_e,		KS_E,			KS_currency,		KS_cent,
+    KC(16),  KS_m,		KS_M,			KS_mu,
+    KC(20),  KS_q,		KS_Q,			KS_at,
+    KC(30),  KS_1,		KS_exclam,		KS_onesuperior,		KS_exclamdown,
+    KC(31),  KS_2,		KS_quotedbl,		KS_twosuperior,		KS_currency,
+    KC(32),  KS_3,		KS_numbersign,		KS_threesuperior,	KS_sterling,
+    KC(33),  KS_4,		KS_dollar,		KS_onequarter,
+    KC(34),  KS_5,		KS_percent,		KS_onehalf,
+    KC(35),  KS_6,		KS_ampersand,		KS_notsign,
+    KC(36),  KS_7,		KS_slash,		KS_braceleft,
+    KC(37),  KS_8,		KS_parenleft,		KS_bracketleft,
+    KC(38),  KS_9,		KS_parenright,		KS_bracketright,	KS_plusminus,
+    KC(39),  KS_0,		KS_equal,		KS_braceright,		KS_degree,
+    KC(45),  KS_odiaeresis,	KS_Odiaeresis,		KS_backslash,		KS_questiondown,
+    KC(46),  KS_minus,		KS_underscore,		KS_dead_cedilla,	KS_dead_ogonek,
+    KC(47),  KS_eth,		KS_ETH,			KS_dead_diaeresis,	KS_dead_abovering,
+    KC(48),  KS_apostrophe,	KS_question,		KS_asciitilde,
+    KC(49),  KS_plus,		KS_asterisk,		KS_grave,		KS_dead_breve,
+    KC(50),  KS_plus,		KS_asterisk,		KS_grave,		KS_dead_breve,
+    KC(51),  KS_ae,		KS_AE,			KS_asciicircum,		KS_dead_hungarumlaut,
+    KC(52),  KS_dead_acute,	KS_dead_diaeresis,	KS_dead_circumflex,
+    KC(53),  KS_degree,		KS_diaeresis,
+    KC(54),  KS_comma,		KS_semicolon,
+    KC(55),  KS_period,		KS_colon,		KS_periodcentered,	KS_division,
+    KC(56),  KS_thorn,		KS_THORN,
+    KC(100), KS_less,		KS_greater,		KS_bar,
+    KC(230), KS_Mode_switch,	KS_Multi_key,
+};
+
+static const keysym_t hidkbd_keydesc_is_nodead[] = {
+/*  pos      normal	shifted		altgr		shift-altgr */
+    KC(52),  KS_acute,	KS_diaeresis,	KS_asciicircum,
+};
+
+static const keysym_t hidkbd_keydesc_la[] = {
+/*  pos      normal		shifted			altgr			shift-altgr */
+    KC(20),  KS_q,		KS_Q,			KS_at,
+    KC(30),  KS_1,		KS_exclam,		KS_bar,
+    KC(31),  KS_2,		KS_quotedbl,		KS_at,
+    KC(32),  KS_3,		KS_numbersign,		KS_periodcentered,
+    KC(35),  KS_6,		KS_ampersand,		KS_notsign,
+    KC(36),  KS_7,		KS_slash,
+    KC(37),  KS_8,		KS_parenleft,
+    KC(38),  KS_9,		KS_parenright,
+    KC(39),  KS_0,		KS_equal,
+    KC(45),  KS_apostrophe,	KS_question,		KS_backslash,
+    KC(46),  KS_questiondown,	KS_exclamdown,		KS_dead_cedilla,	KS_dead_ogonek,
+    KC(47),  KS_dead_acute,	KS_dead_diaeresis,	KS_dead_diaeresis,	KS_dead_abovering,
+    KC(48),  KS_plus,		KS_asterisk,		KS_asciitilde,
+    KC(49),  KS_braceright,	KS_bracketright,	KS_dead_grave,
+    KC(50),  KS_braceright,	KS_bracketright,	KS_dead_grave,
+    KC(51),  KS_ntilde,		KS_Ntilde,		KS_asciitilde,
+    KC(52),  KS_braceleft,	KS_bracketleft,		KS_dead_circumflex,
+    KC(53),  KS_bar,		KS_degree,		KS_notsign,
+    KC(54),  KS_comma,		KS_semicolon,
+    KC(55),  KS_period,		KS_colon,
+    KC(56),  KS_minus,		KS_underscore,
+    KC(100), KS_less,		KS_greater,
+    KC(230), KS_Mode_switch,	KS_Multi_key,
+};
+
+static const keysym_t hidkbd_keydesc_cf[] = {
+/*  pos      normal		shifted			altgr		shift-altgr */
+    KC(16),  KS_m,		KS_M,			KS_mu,
+    KC(18),  KS_o,		KS_O,			KS_section,
+    KC(19),  KS_p,		KS_P,			KS_paragraph,
+    KC(30),  KS_1,		KS_exclam,		KS_plusminus,
+    KC(31),  KS_2,		KS_quotedbl,		KS_at,
+    KC(32),  KS_3,		KS_slash,		KS_sterling,
+    KC(33),  KS_4,		KS_dollar,		KS_cent,
+    KC(34),  KS_5,		KS_percent,		KS_currency,
+    KC(35),  KS_6,		KS_question,		KS_notsign,
+    KC(36),  KS_7,		KS_ampersand,		KS_brokenbar,
+    KC(37),  KS_8,		KS_asterisk,		KS_twosuperior,
+    KC(38),  KS_9,		KS_parenleft,		KS_threesuperior,
+    KC(39),  KS_0,		KS_parenright,		KS_onequarter,
+    KC(44),  KS_space,		KS_space,		KS_nobreakspace,
+    KC(45),  KS_minus,		KS_underscore,		KS_onehalf,
+    KC(46),  KS_equal,		KS_plus,		KS_threequarters,
+    KC(47),  KS_dead_circumflex,KS_dead_circumflex,	KS_bracketleft,
+    KC(48),  KS_dead_cedilla,	KS_dead_diaeresis,	KS_bracketright,
+    KC(49),  KS_less,		KS_greater,		KS_braceright,
+    KC(50),  KS_less,		KS_greater,		KS_braceright,
+    KC(51),  KS_semicolon,	KS_colon,		KS_asciitilde,
+    KC(52),  KS_dead_grave,	KS_dead_grave,		KS_braceleft,
+    KC(53),  KS_numbersign,	KS_bar,			KS_backslash,
+    KC(54),  KS_comma,		KS_apostrophe,		KS_macron,
+    KC(55),  KS_period,		KS_period,		KS_hyphen,
+    KC(56),  KS_eacute,		KS_Eacute,		KS_dead_acute,
+    KC(100), KS_guillemotleft,	KS_guillemotright,	KS_degree,
+    KC(230), KS_Mode_switch,	KS_Multi_key,
+};
+
 #define KBD_MAP(name, base, map) \
 			{ name, base, sizeof(map)/sizeof(keysym_t), map }
 
@@ -636,13 +819,19 @@ const struct wscons_keydesc hidkbd_keyde
 	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),
+	KBD_MAP(KB_BR,                  KB_US,  hidkbd_keydesc_br),
+	KBD_MAP(KB_BR | KB_NODEAD,	KB_BR,  hidkbd_keydesc_br_nodead),
 	KBD_MAP(KB_DK,			KB_US,	hidkbd_keydesc_dk),
 	KBD_MAP(KB_DK | KB_NODEAD,	KB_DK,	hidkbd_keydesc_dk_nodead),
+	KBD_MAP(KB_IS,			KB_US,	hidkbd_keydesc_is),
+	KBD_MAP(KB_IS | KB_NODEAD,	KB_IS,	hidkbd_keydesc_is_nodead),
 	KBD_MAP(KB_IT,			KB_US,	hidkbd_keydesc_it),
 	KBD_MAP(KB_UK,			KB_US,	hidkbd_keydesc_uk),
 	KBD_MAP(KB_UK | KB_SWAPCTRLCAPS,KB_UK,	hidkbd_keydesc_swapctrlcaps),
 	KBD_MAP(KB_SV,			KB_DK,	hidkbd_keydesc_sv),
 	KBD_MAP(KB_SV | KB_NODEAD,	KB_SV,	hidkbd_keydesc_sv_nodead),
+	KBD_MAP(KB_EE,			KB_SV,	hidkbd_keydesc_ee),
+	KBD_MAP(KB_EE | KB_NODEAD,	KB_EE,	hidkbd_keydesc_ee_nodead),
 	KBD_MAP(KB_NO,			KB_DK,	hidkbd_keydesc_no),
 	KBD_MAP(KB_NO | KB_NODEAD,	KB_NO,	hidkbd_keydesc_no_nodead),
 	KBD_MAP(KB_ES ,			KB_US,	hidkbd_keydesc_es),
@@ -651,6 +840,10 @@ const struct wscons_keydesc hidkbd_keyde
 	KBD_MAP(KB_SG | KB_NODEAD,	KB_SG,	hidkbd_keydesc_sg_nodead),
 	KBD_MAP(KB_SF,			KB_SG,	hidkbd_keydesc_sf),
 	KBD_MAP(KB_SF | KB_NODEAD,	KB_SF,	hidkbd_keydesc_sg_nodead),
+	KBD_MAP(KB_TR,			KB_US,	hidkbd_keydesc_tr),
+	KBD_MAP(KB_TR | KB_NODEAD,	KB_TR,	hidkbd_keydesc_tr_nodead),
+	KBD_MAP(KB_LA,			KB_US,	hidkbd_keydesc_la),
+	KBD_MAP(KB_CF,			KB_US,	hidkbd_keydesc_cf),
 	KBD_MAP(KB_HU,			KB_US,	hidkbd_keydesc_hu),
 	{0, 0, 0, 0}
 };

Index: src/sys/dev/pckbport/wskbdmap_mfii.c
diff -u src/sys/dev/pckbport/wskbdmap_mfii.c:1.26.10.1 src/sys/dev/pckbport/wskbdmap_mfii.c:1.26.10.2
--- src/sys/dev/pckbport/wskbdmap_mfii.c:1.26.10.1	Tue Jan 21 15:39:02 2020
+++ src/sys/dev/pckbport/wskbdmap_mfii.c	Mon Jul 13 14:22:47 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: wskbdmap_mfii.c,v 1.26.10.1 2020/01/21 15:39:02 martin Exp $	*/
+/*	$NetBSD: wskbdmap_mfii.c,v 1.26.10.2 2020/07/13 14:22:47 martin 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.26.10.1 2020/01/21 15:39:02 martin Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wskbdmap_mfii.c,v 1.26.10.2 2020/07/13 14:22:47 martin Exp $");
 
 #include "opt_wskbdmap.h"
 #include <sys/types.h>
@@ -371,6 +371,22 @@ static const keysym_t pckbd_keydesc_sv_n
     KC(27),  KS_diaeresis,	KS_asciicircum,	KS_asciitilde,
 };
 
+static const keysym_t pckbd_keydesc_ee[] = {
+/*  pos      normal             shifted         altgr                   shift-altgr */
+    KC(26),  KS_udiaeresis,	KS_Udiaeresis,	KS_dead_diaeresis,	KS_dead_abovering,
+    KC(27),  KS_otilde,		KS_Otilde,	KS_section,
+    KC(31),  KS_s,		KS_S,		KS_scaron,		KS_Scaron,
+    KC(44),  KS_z,		KS_Z,		KS_zcaron,		KS_Zcaron,
+    KC(40),  KS_adiaeresis,	KS_Adiaeresis,	KS_asciicircum,		KS_dead_caron,
+    KC(41),  KS_dead_caron,	KS_dead_tilde,	KS_notsign,		KS_notsign,
+    KC(43),  KS_apostrophe,	KS_asterisk,	KS_onehalf,		KS_dead_breve,
+};
+
+static const keysym_t pckbd_keydesc_ee_nodead[] = {
+/*  pos      normal		shifted		altgr		shift-altgr */
+    KC(41),  KS_asciicircum,	KS_asciitilde,	KS_notsign,	KS_notsign,
+};
+
 static const keysym_t pckbd_keydesc_no[] = {
 /*  pos      normal		shifted		altgr		shift-altgr */
     KC(13),  KS_backslash,	KS_dead_grave,	KS_dead_acute,
@@ -827,6 +843,132 @@ static const keysym_t pckbd_keydesc_iope
     KC(87),  KS_Cmd_Screen9,	KS_f10,
     KC(88), 			KS_f11,
 };
+
+static const keysym_t pckbd_keydesc_br[] = {
+/*  pos      normal             shifted                 altgr                   shift-altgr */
+    KC(2),   KS_1,		KS_exclam,		KS_onesuperior,		KS_exclamdown,
+    KC(3),   KS_2,		KS_at,			KS_twosuperior,		KS_onehalf,
+    KC(4),   KS_3,		KS_numbersign,		KS_threesuperior,	KS_threequarters,
+    KC(5),   KS_4,		KS_dollar,		KS_sterling,		KS_onequarter,
+    KC(6),   KS_5,		KS_percent,		KS_cent,		KS_cent,
+    KC(7),   KS_6,		KS_dead_diaeresis,	KS_notsign,		KS_diaeresis,
+    KC(13),  KS_equal,		KS_plus,		KS_section,		KS_dead_ogonek,
+    KC(16),  KS_q,		KS_Q,			KS_slash,		KS_slash,
+    KC(17),  KS_w,		KS_W,			KS_question,		KS_question,
+    KC(18),  KS_e,		KS_E,			KS_currency,		KS_currency,
+    KC(19),  KS_r,		KS_R,			KS_registered,		KS_registered,
+    KC(26),  KS_dead_acute,	KS_dead_grave,		KS_acute,		KS_grave,
+    KC(27),  KS_bracketleft,	KS_braceleft,		KS_ordfeminine,		KS_macron,
+    KC(39),  KS_ccedilla,	KS_Ccedilla,		KS_dead_acute,		KS_dead_hungarumlaut,
+    KC(40),  KS_dead_tilde,	KS_dead_circumflex,	KS_asciitilde,		KS_asciicircum,
+    KC(41),  KS_apostrophe,	KS_quotedbl,		KS_notsign,		KS_notsign,
+    KC(43),  KS_bracketright,	KS_braceright,		KS_masculine,		KS_masculine,
+    KC(46),  KS_c,		KS_C,			KS_copyright,		KS_copyright,
+    KC(50),  KS_m,		KS_M,			KS_mu,			KS_mu,
+    KC(53),  KS_semicolon,	KS_colon,		KS_dead_dotaccent,	KS_abovedot,
+    KC(86),  KS_backslash,	KS_bar,			KS_masculine,		KS_dead_breve,
+    KC(115), KS_slash,		KS_question,		KS_degree,		KS_questiondown,
+    KC(184), KS_Mode_switch,	KS_Multi_key,
+};
+
+static const keysym_t pckbd_keydesc_br_nodead[] = {
+/*  pos      normal             shifted         altgr           shift-altgr */
+    KC(7),   KS_6,		KS_diaeresis,	KS_notsign,	KS_dead_diaeresis,
+    KC(26),  KS_apostrophe,	KS_grave,	KS_dead_acute,	KS_dead_grave,
+    KC(40),  KS_asciitilde,	KS_asciicircum,	KS_dead_tilde,	KS_dead_circumflex,
+};
+
+static const keysym_t pckbd_keydesc_is[] = {
+/*  pos      normal		shifted			altgr			shift-altgr */
+    KC(2),   KS_1,		KS_exclam,		KS_onesuperior,		KS_exclamdown,
+    KC(3),   KS_2,		KS_quotedbl,		KS_twosuperior,
+    KC(4),   KS_3,		KS_numbersign,		KS_threesuperior,	KS_sterling,
+    KC(5),   KS_4,		KS_dollar,		KS_onequarter,		KS_currency,
+    KC(6),   KS_5,		KS_percent,		KS_onehalf,
+    KC(7),   KS_6,		KS_ampersand,		KS_notsign,
+    KC(8),   KS_7,		KS_slash,		KS_braceleft,
+    KC(9),   KS_8,		KS_parenleft,		KS_bracketleft,
+    KC(10),  KS_9,		KS_parenright,		KS_bracketright,	KS_plusminus,
+    KC(11),  KS_0,		KS_equal,		KS_braceright,		KS_degree,
+    KC(12),  KS_odiaeresis,	KS_Odiaeresis,		KS_backslash,		KS_questiondown,
+    KC(13),  KS_minus,		KS_underscore,		KS_dead_cedilla,	KS_dead_ogonek,
+    KC(16),  KS_q,		KS_Q,			KS_at,
+    KC(18),  KS_e,		KS_E,			KS_currency,		KS_cent,
+    KC(26),  KS_eth,		KS_ETH,			KS_dead_diaeresis,	KS_dead_abovering,
+    KC(27),  KS_apostrophe,	KS_question,		KS_asciitilde,
+    KC(39),  KS_ae,		KS_AE,			KS_asciicircum,
+    KC(40),  KS_dead_acute,	KS_dead_diaeresis,	KS_dead_circumflex,	KS_dead_caron,
+    KC(41),  KS_degree,		KS_diaeresis,
+    KC(43),  KS_plus,		KS_asterisk,		KS_grave,		KS_dead_breve,
+    KC(50),  KS_m,		KS_M,			KS_mu,
+    KC(51),  KS_comma,		KS_semicolon,
+    KC(52),  KS_period,		KS_colon,		KS_periodcentered,	KS_division,
+    KC(53),  KS_thorn,
+    KC(86),  KS_less,		KS_greater,		KS_bar,
+    KC(184), KS_Mode_switch,	KS_Multi_key,
+};
+
+static const keysym_t pckbd_keydesc_is_nodead[] = {
+/*  pos      normal		shifted		altgr		shift-altgr */
+    KC(40),  KS_acute,		KS_diaeresis,	KS_asciicircum,
+};
+
+static const keysym_t pckbd_keydesc_la[] = {
+/*  pos      normal		shifted			altgr			shift-altgr */
+    KC(2),   KS_1,		KS_exclam,		KS_bar,
+    KC(3),   KS_2,		KS_quotedbl,		KS_at,
+    KC(4),   KS_3,		KS_numbersign,		KS_periodcentered,
+    KC(7),   KS_6,		KS_ampersand,		KS_notsign,
+    KC(8),   KS_7,		KS_slash,
+    KC(9),   KS_8,		KS_parenleft,
+    KC(10),  KS_9,		KS_parenright,
+    KC(11),  KS_0,		KS_equal,
+    KC(12),  KS_apostrophe,	KS_question,		KS_backslash,
+    KC(13),  KS_questiondown,	KS_exclamdown,		KS_dead_cedilla,	KS_dead_ogonek,
+    KC(16),  KS_q,		KS_Q,			KS_at,
+    KC(26),  KS_dead_acute,	KS_dead_diaeresis,	KS_dead_diaeresis,	KS_dead_abovering,
+    KC(27),  KS_plus,		KS_asterisk,		KS_asciitilde,
+    KC(39),  KS_ntilde,		KS_Ntilde,		KS_asciitilde,
+    KC(40),  KS_braceleft,	KS_bracketleft,		KS_dead_circumflex,
+    KC(41),  KS_bar,		KS_degree,		KS_notsign,
+    KC(43),  KS_braceright,	KS_bracketright,	KS_dead_grave,
+    KC(51),  KS_comma,		KS_semicolon,
+    KC(52),  KS_period,		KS_colon,
+    KC(53),  KS_minus,		KS_underscore,
+    KC(86),  KS_less,		KS_greater,
+    KC(184), KS_Mode_switch,	KS_Multi_key,
+};
+
+static const keysym_t pckbd_keydesc_cf[] = {
+/*  pos      normal		shifted			altgr		shift-altgr */
+    KC(2),   KS_1,		KS_exclam,		KS_plusminus,
+    KC(3),   KS_2,		KS_quotedbl,		KS_at,
+    KC(4),   KS_3,		KS_slash,		KS_sterling,
+    KC(5),   KS_4,		KS_dollar,		KS_cent,
+    KC(6),   KS_5,		KS_percent,		KS_currency,
+    KC(7),   KS_6,		KS_question,		KS_notsign,
+    KC(8),   KS_7,		KS_ampersand,		KS_brokenbar,
+    KC(9),   KS_8,		KS_asterisk,		KS_twosuperior,
+    KC(10),  KS_9,		KS_parenleft,		KS_threesuperior,
+    KC(11),  KS_0,		KS_parenright,		KS_onequarter,
+    KC(12),  KS_minus,		KS_underscore,		KS_onehalf,
+    KC(13),  KS_equal,		KS_plus,		KS_threequarters,
+    KC(24),  KS_o,		KS_O,			KS_section,
+    KC(25),  KS_p,		KS_P,			KS_paragraph,
+    KC(26),  KS_dead_circumflex,KS_dead_circumflex,	KS_bracketleft,
+    KC(27),  KS_dead_cedilla,	KS_dead_diaeresis, 	KS_bracketright,
+    KC(39),  KS_semicolon,	KS_colon,		KS_asciitilde,
+    KC(40),  KS_dead_grave,	KS_dead_grave,		KS_braceleft,
+    KC(41),  KS_numbersign,	KS_bar,			KS_backslash,
+    KC(43),  KS_less,		KS_greater,		KS_braceright,
+    KC(50),  KS_m,		KS_M,			KS_mu,
+    KC(51),  KS_comma,		KS_apostrophe,		KS_macron,
+    KC(52),  KS_period,		KS_period,		KS_hyphen,
+    KC(53),  KS_eacute,		KS_Eacute,		KS_dead_acute,
+    KC(57),  KS_space,		KS_space,		KS_nobreakspace,
+    KC(86),  KS_guillemotleft,	KS_guillemotright,	KS_degree,
+    KC(184), KS_Mode_switch,	KS_Multi_key,
+};
 #endif /* WSKBD_USONLY */
 
 #define KBD_MAP(name, base, map) \
@@ -846,13 +988,19 @@ const struct wscons_keydesc pckbd_keydes
 	KBD_MAP(KB_SF | KB_NODEAD,	KB_SF,	pckbd_keydesc_sg_nodead),
 	KBD_MAP(KB_FR,                  KB_US,  pckbd_keydesc_fr),
 	KBD_MAP(KB_BE,                  KB_FR,  pckbd_keydesc_be),
+	KBD_MAP(KB_BR,                  KB_US,  pckbd_keydesc_br),
+	KBD_MAP(KB_BR | KB_NODEAD,	KB_BR,  pckbd_keydesc_br_nodead),
 	KBD_MAP(KB_DK,			KB_US,	pckbd_keydesc_dk),
 	KBD_MAP(KB_DK | KB_NODEAD,	KB_DK,	pckbd_keydesc_dk_nodead),
+	KBD_MAP(KB_IS,			KB_US,	pckbd_keydesc_is),
+	KBD_MAP(KB_IS | KB_NODEAD,	KB_IS,	pckbd_keydesc_is_nodead),
 	KBD_MAP(KB_IT,			KB_US,	pckbd_keydesc_it),
 	KBD_MAP(KB_UK,			KB_US,	pckbd_keydesc_uk),
 	KBD_MAP(KB_JP,			KB_US,	pckbd_keydesc_jp),
 	KBD_MAP(KB_SV,			KB_DK,	pckbd_keydesc_sv),
 	KBD_MAP(KB_SV | KB_NODEAD,	KB_SV,	pckbd_keydesc_sv_nodead),
+	KBD_MAP(KB_EE,			KB_SV,	pckbd_keydesc_ee),
+	KBD_MAP(KB_EE | KB_NODEAD,	KB_EE,	pckbd_keydesc_ee_nodead),
 	KBD_MAP(KB_NO,			KB_DK,	pckbd_keydesc_no),
 	KBD_MAP(KB_NO | KB_NODEAD,	KB_NO,	pckbd_keydesc_no_nodead),
 	KBD_MAP(KB_US | KB_DECLK,	KB_US,	pckbd_keydesc_us_declk),
@@ -876,6 +1024,8 @@ const struct wscons_keydesc pckbd_keydes
 	KBD_MAP(KB_NL | KB_NODEAD,	KB_NL,	pckbd_keydesc_nl_nodead),
 	KBD_MAP(KB_TR,			KB_US,	pckbd_keydesc_tr),
 	KBD_MAP(KB_TR | KB_NODEAD,	KB_TR,	pckbd_keydesc_tr_nodead),
+	KBD_MAP(KB_LA,			KB_US,	pckbd_keydesc_la),
+	KBD_MAP(KB_CF,			KB_US,	pckbd_keydesc_cf),
 #endif /* WSKBD_USONLY */
 
 	/* placeholders */

Index: src/sys/dev/wscons/wsksymdef.h
diff -u src/sys/dev/wscons/wsksymdef.h:1.67 src/sys/dev/wscons/wsksymdef.h:1.67.10.1
--- src/sys/dev/wscons/wsksymdef.h:1.67	Mon Feb 19 14:34:17 2018
+++ src/sys/dev/wscons/wsksymdef.h	Mon Jul 13 14:22:47 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: wsksymdef.h,v 1.67 2018/02/19 14:34:17 maya Exp $ */
+/*	$NetBSD: wsksymdef.h,v 1.67.10.1 2020/07/13 14:22:47 martin Exp $ */
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -651,29 +651,34 @@
  * Sort (loosely) by country name.
  */
 #define KB_ENC_FUN(action) \
-action(KB_USER,	0,	0x0100,	"user",	,	"User-defined")	\
-action(KB_US,	0,	0x0200,	"us",	,	"US-English")	\
-action(KB_UK,	0,	0x0700,	"uk",	,	"UK-English")	\
-action(KB_BE,	0,	0x1300,	"be",	,	"Belgian")	\
-action(KB_CZ,	0,	0x1500, "cz",	,	"Czech")	\
-action(KB_DK,	0,	0x0400,	"dk",	,	"Danish")	\
-action(KB_NL,	0,	0x1600,	"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")	\
-action(KB_GR,	0,	0x1400,	"gr",	,	"Greek")	\
-action(KB_HU,	0,	0x0c00,	"hu",	,	"Hungarian")	\
-action(KB_IT,	0,	0x0500,	"it",	,	"Italian")	\
-action(KB_JP,	0,	0x0800,	"jp",	,	"Japanese")	\
-action(KB_NO,	0,	0x0a00,	"no",	,	"Norwegian")	\
-action(KB_PL,	0,	0x0d00,	"pl",	,	"Polish")	\
-action(KB_PT,	0,	0x1100,	"pt",	,	"Portuguese")	\
-action(KB_RU,	0,	0x0e00,	"ru",	,	"Russian")	\
-action(KB_ES,	0,	0x0b00,	"es",	,	"Spanish")	\
-action(KB_SV,	0,	0x0900,	"sv",	,	"Swedish")	\
-action(KB_SF,	0,	0x1000,	"sf",	,	"Swiss French")	\
-action(KB_SG,	0,	0x0f00,	"sg",	,	"Swiss German")	\
-action(KB_TR,	0,	0x1700,	"tr",	,	"Turkish")	\
+action(KB_USER,	0,	0x0100,	"user",	,	"User-defined")		\
+action(KB_US,	0,	0x0200,	"us",	,	"US-English")		\
+action(KB_UK,	0,	0x0700,	"uk",	,	"UK-English")		\
+action(KB_BE,	0,	0x1300,	"be",	,	"Belgian")		\
+action(KB_BR,	0,	0x1800,	"br",	,	"Brazilian")		\
+action(KB_CF,	0,	0x1c00,	"cf",	,	"Canadian French")	\
+action(KB_CZ,	0,	0x1500, "cz",	,	"Czech")		\
+action(KB_DK,	0,	0x0400,	"dk",	,	"Danish")		\
+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_GR,	0,	0x1400,	"gr",	,	"Greek")		\
+action(KB_HU,	0,	0x0c00,	"hu",	,	"Hungarian")		\
+action(KB_IS,	0,	0x1a00,	"is",	,	"Icelandic")		\
+action(KB_IT,	0,	0x0500,	"it",	,	"Italian")		\
+action(KB_JP,	0,	0x0800,	"jp",	,	"Japanese")		\
+action(KB_LA,	0,	0x1b00,	"la",	,	"Latin American")	\
+action(KB_NO,	0,	0x0a00,	"no",	,	"Norwegian")		\
+action(KB_PL,	0,	0x0d00,	"pl",	,	"Polish")		\
+action(KB_PT,	0,	0x1100,	"pt",	,	"Portuguese")		\
+action(KB_RU,	0,	0x0e00,	"ru",	,	"Russian")		\
+action(KB_ES,	0,	0x0b00,	"es",	,	"Spanish")		\
+action(KB_SV,	0,	0x0900,	"sv",	,	"Swedish")		\
+action(KB_SF,	0,	0x1000,	"sf",	,	"Swiss French")		\
+action(KB_SG,	0,	0x0f00,	"sg",	,	"Swiss German")		\
+action(KB_TR,	0,	0x1700,	"tr",	,	"Turkish (Q-Layout)")	\
 action(KB_UA,	0,	0x1200,	"ua",	,	"Ukrainian")	
 #define KB_NONE 0x0000
 

Reply via email to