You have two tools for configuring your keyboard. Under plain
Linux you have loadkeys
and under X11 you have xmodmap
.
To try out loadkeys
type one of these two commands:
loadkeys /usr/lib/kbd/keytables/dk.mapor
loadkeys /usr/lib/kbd/keytables/dk-latin1.map
The difference between the two keymaps is that dk-latin1.map
enables `dead' keys while dk.map
does not. Dead keys are explained
in section
Dead keys and accented characters. The
program loadkeys
and the keymaps are part of the package
kbd-0.??.tar.gz
which (with differing version numbers ??) is available
with all Linux distributions.
Usually loadkeys
is executed at boot-time from one of the scripts
under the directory /etc/rc.d/
. Details vary between distributions.
(Note for non-Danish readers: Support for other languages is enabled
in a similar manner. Use es.map
for Spanish keyboards etc.)
Versions of XFree86 up to and including v3.1.2 will normally follow the
keymap used by plain Linux, but you can modify keyboard behavior under X11
with xmodmap
. Usually the X11 initialization process will run this
command automatically if you have a file called .Xmodmap
in your
home directory.
In XFree86 v3.2 and higher you should have the following Keyboard
section in your /etc/XF86Config
file (it is made automatically by
the program XF86Setup
if you choose a Danish keytable):
Section "Keyboard" Protocol "Standard" XkbRules "xfree86" XkbModel "pc101" XkbLayout "dk" XkbVariant "nodeadkeys" EndSection
The only keyboard variant available at the moment is "nodeadkeys"
, but
dead keys can still be made to work. See section
Dead keys and accented characters for more information on this.
For versions of XFree86 up to and including v3.1.2 you should edit the file
/etc/X11/XF86Config
(or possibly /etc/XF86Config
) and make
sure the line
RightAlt ModeShiftappears in the
Keyboard
section. Usually you can do this by
uncommenting the appropriate line. In XFree86 v3.1.2 you can use
AltGr
as an alias for RightAlt
.
The AltGr
key should work as expected in XFree86 v3.2 and higher if you
choose Danish keyboard support.
You can't input the characters ``{'' (<AltGr><7>)
,
``['' (<AltGr><8>)
, ``]''
(<AltGr><9>)
and ``}'' (<AltGr><0>)
under the Metro-X server. This bug has been observed under versions 3.1.5
and 3.1.8 of the server.
To correct this bug you have to edit the file
/usr/X11R6/lib/X11/xkb/symbols/dk
and change the lines
key <AE07> { [ 7, slash ] }; key <AE08> { [ 8, parenleft ] }; key <AE09> { [ 9, parenright ] }; key <AE10> { [ 0, equal ] };to
key <AE07> { [ 7, slash ], [ braceleft, NoSymbol ] }; key <AE08> { [ 8, parenleft ], [ bracketleft, NoSymbol ] }; key <AE09> { [ 9, parenright ], [ bracketright, NoSymbol ] }; key <AE10> { [ 0, equal ], [ braceright, NoSymbol ] };
Dead keys are those that do not type anything until you hit another
key. Tildes and umlauts are like this by default under plain Linux if
you use the dk-latin1.map
keymap. This is the default
behaviour for these keys under Microsoft Windows as well.
loadkeys dk.map
Keyboard
section of your
/etc/XF86Config
file:
XkbVariant "nodeadkeys"
loadkeys dk-latin1.map
GNU emacs
version 19.30 (or higher.)
Some X11 applications still do not support this input method. Eventually
this situation might improve, but until that happens you can either hack your
applications or submit polite bug reports to the program authors. The latter
approach is often the most efficient. See section
Programming tips for X11 for some advice on what needs to be done.
Next you will have to map a key to Multi_key
(Compose
.) The
Scroll Lock
key is most likely already mapped as such if you use
XFree86 v3.1.2 (you can verify this with the program xev
,) and it is
easy to map the right Control
key by uncommenting the appropriate line
in the Keyboard
section of the XFree86 configuration file (often
/etc/XF86Config
.) If you wish to use some other key, or if you are
using XFree86 v3.2 or higher and want to change the default, you should put
something like
keycode 78 = Multi_keyin your
~/.Xmodmap
file. The statement in the example defines
Scroll Lock
as the Compose
key. The default Compose
key in
XFree86 v3.2 and higher is <Shift><AltGr>
.
XFree86 v3.2 and higher comes without support for the dead keys on the standard
Danish keyboard. To get this support you have to change a few lines in the
xkb_symbols "basic"
section of the file
/usr/X11R6/lib/X11/xkb/symbols/dk
. The lines
key <AE12> { [ acute, grave ], [ bar, dead_ogonek ] }; key <AD12> { [ diaeresis, asciicircum ], [ asciitilde, dead_macron ] };should be changed to
key <AE12> { [ dead_acute, dead_grave ], [ bar, dead_ogonek ] }; key <AD12> { [ dead_diaeresis, dead_circumflex ], [ dead_tilde, dead_macron ] };After these changes you can get support for dead keys by removing the line
XkbVariant "nodeadkeys"from the
Keyboard
section of your /etc/XF86Config
file.
(Note for non-Danish readers: There are files for many local keyboard maps in
/usr/X11R6/lib/X11/xkb/symbols
.)
The available keystroke combinations are listed in
/usr/X11R6/lib/X11/locale/iso8859-1/Compose
. There are some
bugs in that file you will want to fix:
<dead_tilde> <space> : "~" tildeshould be changed to
<dead_tilde> <space> : "~" asciitilde
asciicircum
is misspelled as asciicirum
There is a bug in the Danish keymaps causing the dollar sign to be accessed
with <Shift><4>
instead of <AltGr><4>
by default. If this is a problem for you, determine what keymap you load at
boot-time. You can find it by looking around in the directory
/etc/rc.d/
or simply by paying attention to what happens at boot-time.
On my computer the relevant keymap is called
/usr/lib/kbd/keytables/dk-latin1.map
. You can fix the problem by
changing the line
keycode 5 = four dollar dollarin the keymap file to
keycode 5 = four currency dollarand then (re-)loading the keytable as described in section Loading a keytable. Currency (dansk: ``soltegn'') is the default
<Shift><4>
character on a Danish keyboard.
This should fix the problem for both X11 and plain Linux.
In some older distributions ``ø'' and ``Ø'' appear as cent and yen. Find the line for keycode 40 in the keymap file and change it from
keycode 40 = cent yento
keycode 40 = +oslash +Ooblique
This bug appears to have been fixed in kbd-0.88.tar.gz
and newer versions.
The plus signs are necessary to get Caps Lock
working properly. ``Oslash''
can be used as an alias for ``Ooblique'' in kbd-0.90.tar.gz
and newer
versions.
You can read more about keyboard configuration at this site.