Subject: misc/29648: Userland implementation of Slovenian keymap
To: None <misc-bug-people@netbsd.org, gnats-admin@netbsd.org,>
From: None <jkovacic@gmail.com>
List: netbsd-bugs
Date: 03/10/2005 07:04:00
>Number: 29648
>Category: misc
>Synopsis: Userland implementation of Slovenian keymap
>Confidential: no
>Severity: non-critical
>Priority: low
>Responsible: misc-bug-people
>State: open
>Class: support
>Submitter-Id: net
>Arrival-Date: Thu Mar 10 07:04:00 +0000 2005
>Originator: Jernej Kovacic
>Release: NetBSD 2.0-releae
>Organization:
>Environment:
>Description:
Slovenian keymap not supported in NetBSD. kern/29615 already suggests an in-kernel solution, this is its userland version that does not require recompiling the kernel.
>How-To-Repeat:
>Fix:
Copy/paste the following lines into a file (e.g. /usr/share/wscons/keymaps/pckbd.si):
------ file start ----------
# Slovenian keymap (usable in most parts of the former Yugoslavia)
# by Jernej Kovacic
keycode 2=1 exclam asciitilde
keycode 3=2 quotedbl L2_caron
keycode 4=3 numbersign asciicircum
keycode 5=4 dollar L2_breve
keycode 6=5 percent degree
keycode 7=6 ampersand L2_ogonek
keycode 8=7 slash grave
keycode 9=8 parenleft L2_dotabove
keycode 10=9 parenright acute
keycode 11=0 equal L2_dblacute
keycode 12=apostrophe question diaeresis
keycode 13=plus asterisk cedilla
keycode 16=q Q backslash
keycode 17=w W bar
keycode 21=z Z
keycode 26=L2_scaron L2_Scaron division
keycode 27=L2_dstroke L2_Dstroke multiply
keycode 33=f F bracketleft
keycode 34=g G bracketright
keycode 37=k K L2_lstroke
keycode 38=l L L2_Lstroke
keycode 39=L2_ccaron L2_Ccaron
keycode 40=L2_cacute L2_Cacute ssharp
keycode 41=cedilla diaeresis
keycode 43=L2_zcaron L2_Zcaron currency
keycode 44=y Y
keycode 47=v V at
keycode 48=b B braceleft
keycode 49=n N braceright
keycode 50=m M section
keycode 51=comma semicolon
keycode 52=period colon
keycode 53=minus underscore
keycode 86=less greater
keycode 184=Mode_switch Multi_key
-------- file end ---------------
open /etc/wscons.conf, comment out any lines starting with encoding and add
mapfile /usr/share/wscons/keymaps/pckbd.si
(or whatever your filename is).
Now you have to recompile wsconsctl so it will recognise new keysyms. Open sys/dev/wscons/wsksymdef.h
If you want central/eastern European charcters to be encoded in Unicode,
insert the following lines into it:
------ file section start -----------
#define KS_L2_Lstroke 0x0141
#define KS_L2_lstroke 0x0142
#define KS_L2_Cacute 0x0106
#define KS_L2_cacute 0x0107
#define KS_L2_Ccaron 0x010c
#define KS_L2_ccaron 0x010d
#define KS_L2_Scaron 0x0160
#define KS_L2_scaron 0x0161
#define KS_L2_Zcaron 0x017d
#define KS_L2_zcaron 0x017e
#define KS_L2_Dstroke 0x0110
#define KS_L2_dstroke 0x0111
#define KS_L2_caron 0x02c7
#define KS_L2_breve 0x02d8
#define KS_L2_ogonek 0x02db
#define KS_L2_dotabove 0x02d9
#define KS_L2_dblacute 0x02dd
-------- file section end -----------
if you prefer ISO8859-2 encoded characters, insert the following lines instead:
------ file section start -----------
/*
* Group Latin-2 (characters from iso8859-2)
*/
#define KS_L2_Lstroke 0xa3
#define KS_L2_lstroke 0xb3
#define KS_L2_Cacute 0xc6
#define KS_L2_cacute 0xe6
#define KS_L2_Ccaron 0xc8
#define KS_L2_ccaron 0xe8
#define KS_L2_Scaron 0xa9
#define KS_L2_scaron 0xb9
#define KS_L2_Zcaron 0xae
#define KS_L2_zcaron 0xbe
#define KS_L2_Dstroke 0xd0
#define KS_L2_dstroke 0xf0
#define KS_L2_caron 0xb7
#define KS_L2_breve 0xa2
#define KS_L2_ogonek 0xb2
#define KS_L2_dotabove 0xff
#define KS_L2_dblacute 0xbd
-------- file section end -----------
Then copy wsksymdef.h to /usr/include/dev/wscons
and recompile wsconsctl:
cd sbin/wsconsctl
make
make install
Now you can restart your computer.
If you don't want to recompile wsconsctl, do not touch wsksymdef.h. Just open pckbd.si again and replace newly created ISO8859-2 keysyms with their ISO8859-1 "counterparts" bearing the same numeric code:
L2_Lstroke --> sterling
L2_lstroke --> threesuperior
L2_Cacute --> AE
L2_cacute --> ae
L2_Ccaron --> Egrave
L2_ccaron --> egrave
L2_Scaron --> copyright
L2_scaron --> onesuperior
L2_Zcaron --> registered
L2_zcaron --> threequarters
L2_Dstroke --> ETH
L2_dstroke --> eth
L2_caron --> periodcentered
L2_breve --> cent
L2_ogonek --> twosuperior
L2_dotabove --> ydiaeresis
L2_dblacute --> onehalf
edit /etc/wscons.conf as described above and reboot.
If you have any further questions, do not hesitate to ask me.