Module Name:    src
Committed By:   nia
Date:           Sun Jul 12 01:35:59 UTC 2020

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

Log Message:
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


To generate a diff of this commit:
cvs rdiff -u -r1.3 -r1.4 src/sys/dev/hid/hidkbdmap.c
cvs rdiff -u -r1.27 -r1.28 src/sys/dev/pckbport/wskbdmap_mfii.c
cvs rdiff -u -r1.67 -r1.68 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.3 src/sys/dev/hid/hidkbdmap.c:1.4
--- src/sys/dev/hid/hidkbdmap.c:1.3	Fri Apr 24 13:29:46 2020
+++ src/sys/dev/hid/hidkbdmap.c	Sun Jul 12 01:35:59 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: hidkbdmap.c,v 1.3 2020/04/24 13:29:46 rhialto Exp $	*/
+/*	$NetBSD: hidkbdmap.c,v 1.4 2020/07/12 01:35:59 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.3 2020/04/24 13:29:46 rhialto Exp $");
+__KERNEL_RCSID(0, "$NetBSD: hidkbdmap.c,v 1.4 2020/07/12 01:35:59 nia Exp $");
 
 #include <sys/types.h>
 #include <dev/wscons/wsksymdef.h>
@@ -619,6 +619,40 @@ 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(47),  KS_apostrophe,	KS_grave,	KS_dead_acute,	KS_dead_grave,
+    KC(52),  KS_asciitilde,	KS_asciicircum,	KS_dead_tilde,	KS_dead_circumflex,
+};
+
 #define KBD_MAP(name, base, map) \
 			{ name, base, sizeof(map)/sizeof(keysym_t), map }
 
@@ -636,6 +670,8 @@ 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_IT,			KB_US,	hidkbd_keydesc_it),

Index: src/sys/dev/pckbport/wskbdmap_mfii.c
diff -u src/sys/dev/pckbport/wskbdmap_mfii.c:1.27 src/sys/dev/pckbport/wskbdmap_mfii.c:1.28
--- src/sys/dev/pckbport/wskbdmap_mfii.c:1.27	Sat Jan 11 21:43:11 2020
+++ src/sys/dev/pckbport/wskbdmap_mfii.c	Sun Jul 12 01:35:59 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: wskbdmap_mfii.c,v 1.27 2020/01/11 21:43:11 nia Exp $	*/
+/*	$NetBSD: wskbdmap_mfii.c,v 1.28 2020/07/12 01:35:59 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.27 2020/01/11 21:43:11 nia Exp $");
+__KERNEL_RCSID(0, "$NetBSD: wskbdmap_mfii.c,v 1.28 2020/07/12 01:35:59 nia Exp $");
 
 #include "opt_wskbdmap.h"
 #include <sys/types.h>
@@ -827,6 +827,39 @@ 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(26),  KS_apostrophe,	KS_grave,	KS_dead_acute,	KS_dead_grave,
+    KC(40),  KS_asciitilde,	KS_asciicircum,	KS_dead_tilde,	KS_dead_circumflex,
+};
 #endif /* WSKBD_USONLY */
 
 #define KBD_MAP(name, base, map) \
@@ -846,6 +879,8 @@ 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_IT,			KB_US,	pckbd_keydesc_it),

Index: src/sys/dev/wscons/wsksymdef.h
diff -u src/sys/dev/wscons/wsksymdef.h:1.67 src/sys/dev/wscons/wsksymdef.h:1.68
--- src/sys/dev/wscons/wsksymdef.h:1.67	Mon Feb 19 14:34:17 2018
+++ src/sys/dev/wscons/wsksymdef.h	Sun Jul 12 01:35:59 2020
@@ -1,4 +1,4 @@
-/*	$NetBSD: wsksymdef.h,v 1.67 2018/02/19 14:34:17 maya Exp $ */
+/*	$NetBSD: wsksymdef.h,v 1.68 2020/07/12 01:35:59 nia Exp $ */
 
 /*-
  * Copyright (c) 1997 The NetBSD Foundation, Inc.
@@ -655,6 +655,7 @@ action(KB_USER,	0,	0x0100,	"user",	,	"Us
 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_CZ,	0,	0x1500, "cz",	,	"Czech")	\
 action(KB_DK,	0,	0x0400,	"dk",	,	"Danish")	\
 action(KB_NL,	0,	0x1600,	"nl",	,	"Dutch") 	\

Reply via email to