Subject: German keyboard layout for lk201
To: None <port-vax@netbsd.org>
From: Christian Groessler <cpg@aladdin.de>
List: port-vax
Date: 10/08/2002 01:12:51
Hi,
I'm using a German lk201 keyboard connected to a VS3100. Since there
was no support for the German layout, I tried to implement it. Here's
the result...
in the kernel config file I use
lkkbd0 at dz0 line 0
wskbd* at lkkbd?
options DZKBD_LAYOUT="(KB_DE | KB_LK401)"
Since I don't know how the Compose ("Kombizeichen" on German kb) is
supposed to work (I always get a ^@ when I type it), I changed it to
be like the AltGr key on German PC keyboards (yes, I know, should I
better follow the Mac kb layout? :-)
This results in the following layout:
- all keys generate the keys displayed on the keycaps wrt normal and
shift status
- Compose/Kombizeichen generates these keys:
ü - @ (printed on the keycap)
ä - ] (printed on the keycap)
8 - { (not printed, but shift-8 is "(")
9 - } (not printed, but shift-9 is ")")
< - | (not printed, but on the same place
on PC kbs...)
- Shift + Compose/Kombizeichen generates these:
ü - \ (printed on the keycap)
ä - [ (printed on the keycap)
The patch is attached...
regards,
chris
Index: wskbdmap_lk201.c
===================================================================
RCS file: /nfs/swamp/zeug/netbsd-rsync/main/syssrc/sys/dev/dec/wskbdmap_lk201.c,v
retrieving revision 1.6
diff -p -u -r1.6 wskbdmap_lk201.c
--- wskbdmap_lk201.c 2002/03/13 15:21:30 1.6
+++ wskbdmap_lk201.c 2002/10/07 22:46:55
@@ -126,12 +126,40 @@ static const keysym_t lkkbd_keydesc_us_l
KC(178), KS_Alt_R,
};
+static const keysym_t lkkbd_keydesc_de[] = {
+ KC(177), KS_Mode_switch,
+ KC(191), KS_asciitilde, KS_asciicircum,
+ KC(192), KS_1, KS_exclam,
+ KC(195), KS_y,
+ KC(197), KS_2, KS_quotedbl,
+ KC(201), KS_less, KS_greater, KS_bar,
+ KC(203), KS_3, KS_section,
+ KC(219), KS_6, KS_ampersand,
+ KC(220), KS_z,
+ KC(224), KS_7, KS_slash, KS_bar,
+ KC(229), KS_8, KS_parenleft, KS_braceleft,
+ KC(232), KS_comma, KS_semicolon,
+ KC(234), KS_9, KS_parenright, KS_braceright,
+ KC(237), KS_period, KS_colon,
+ KC(239), KS_0, KS_equal,
+ KC(242), KS_odiaeresis,
+ KC(243), KS_minus, KS_underscore,
+ KC(245), KS_apostrophe, KS_grave,
+ KC(246), KS_plus, KS_asterisk,
+ KC(247), KS_numbersign, KS_apostrophe,
+ KC(249), KS_ssharp, KS_question,
+ KC(250), KS_udiaeresis, KS_Udiaeresis, KS_at, KS_backslash,
+ KC(251), KS_adiaeresis, KS_Adiaeresis, KS_bracketright, KS_bracketleft,
+};
+
#define KBD_MAP(name, base, map) \
{ name, base, sizeof(map)/sizeof(keysym_t), map }
const struct wscons_keydesc lkkbd_keydesctab[] = {
KBD_MAP(KB_US, 0, lkkbd_keydesc_us),
KBD_MAP(KB_US | KB_LK401, KB_US, lkkbd_keydesc_us_lk401),
+ KBD_MAP(KB_DE, KB_US, lkkbd_keydesc_de),
+ KBD_MAP(KB_DE | KB_LK401, KB_US | KB_LK401, lkkbd_keydesc_de),
{0, 0, 0, 0}
};