The Linux Danish HOWTO

Thomas Petersen, petersen@post1.tele.dk v1.1, 2 June 1996

This document describes how to configure Linux and various Linux applications for Danish locale standards such as keyboard, font, paper-size etc. It is hoped that Linux users from other places in Western Europe will find this document of use too.

Contents

1 Introduction 2

2 Keyboard setup 2 2.1 Loading a Danish key-table . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 2 2.2 Getting the AltGr key to work under X . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3 Dead keys and accented characters . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.3.1 Removing dead key functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 2.3.2 Invoking dead key functionality . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3

2.4 Making ø (oslash) Ø (Oslash) and $ (the dollar sign) work . . . . . . . . . . . . . . . . . . . . 4 2.4.1 The dollar sign . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 4 2.4.2 ø (oslash) and Ø (Oslash) . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

3 Display and application setup 5 3.1 International character sets in specific applications . . . . . . . . . . . . . . . . . . . . . . . . 5 3.2 What characters you can display under Linux . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 3.3 Loading the Latin-1 character set on the console . . . . . . . . . . . . . . . . . . . . . . . . . 9

4 Miscellaneous problems 9 4.1 Time zone. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9 4.2 A4 papersize . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 4.3 Text file formats and other platforms. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10

5 References and FTP sites 10 5.1 Other documents of relevance . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 5.2 FTP and Web sites . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 6 Post-amble: Acknowledgments and Copyright 11

1 Introduction

All European users of almost any operating system have two problems: The first is to tell the computer that you have a non-American keyboard, and the second is to get the computer to display the special letters. To make matters worse the applications themselves will also consider you an exception if you are not an American and require special options or the setting of environment variables.

Under Linux you change the way your computer interprets the keyboard with the commands xmodmap and loadkeys. loadkeys will modify the keyboard for plain Linux while xmodmap makes the modifications necessary when the handshaking between X11 and Linux is imperfect.

To display the characters you need to tell your applications that you use the ISO-8859-Latin-1 international set of glyphs. Mostly this is not necessary, but a number of key applications need special attention.

This HOWTO is intended to tell Danish users how to do this. If you continue to have troubles after reading this you should try the German HOWTO, the Keystroke HOWTO for Linux or the ISO 8859-1 FAQ. Many of the hints contained herein are cribbed from there. You should also send me a mail describing your troubles. The HOWTOs are available from all respectable mirrors of sunsite.unc.edu while the ISO 8859-1 FAQ is

available from ftp.vlsivie.tuwien.ac.at in /pub/8bit/FAQ-ISO-8859-1.

A final problem is that error-messages, menus and documentation of applications always are in English. There’s a GNU project underway to address this problem. You can see what it’s all about by downloading the file gettext-0.9.tar.gz or a later version from your favourite mirror of prep.ai.mit.edu. This project needs volunteers for the translations. Send a mail to da-request@li.org with the body ”subscribe” if you want to contribute to the Danish part of the project.

2 Keyboard setup

2.1 Loading a Danish key-table

You have two tools for configuring your keyboard. Under plain Linux you need loadkeys and under X11

you need xmodmap

To try out loadkeys try typing one of these two commands:

     loadkeys /usr/lib/kbd/keytables/dk.map
     loadkeys /usr/lib/kbd/keytables/dk-latin1.map

The difference between the two lines is that dk-latin1.map uses ‘dead’ keys while dk.map doesn’t. Dead keys are explained in the 2.3. The program loadkeys and the keytables are part of the package kbd-0.90.tar.gz which (with differing version numbers) is available with all Linux distributions.

Usually loadkeys is run at boot-time from one of the scripts in the directory /etc/rc.d/. Details vary widely between distributions but it’s a good idea to look for a file called rc.keymap.

(Note for non-Danish users: Support for other languages is enabled similarly. Use es.map for Spanish keyboards etc.)

X11 will to the largest possible extent 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 atuomatically if you have a file called .Xmodmap in your home directory.

2.2 Getting the AltGr key to work under X

Edit the file /etc/Xconfig (under XFree86 2.0) or /etc/X11/XF86Config or /etc/XF86Config (under

XFree86 3.x) and make sure the line

     RightAlt    ModeShift

appears in the Keyboard section. Usually you can do this by uncommenting the appropriate line.

2.3 Dead keys and accented characters

Dead keys are those who don’t 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 key map. This is the default behaviour under Microsoft Windows as well.

2.3.1 Removing dead key functionality

Under plain Linux log on as root and type

     loadkeys dk.map

2.3.2 Invoking dead key functionality

• Invoking dead key functionality under plain Linux Under plain Linux log on as root and type

          loadkeys dk-latin1.map

• Invoking dead key functionality under X11R5 sessions Insert the following lines in a file ~/.Xmodmap or /etc/X11/Xmodmap

          keycode 21 = acute      Dgrave_accent           bar
          keycode 35 = Ddiaeresis Dcircumflex_accent      Dtilde

You can now make the dead keys work by typing (e.g.) xmodmap ~/.Xmodmap. Mostly this command will be issued automatically when you start up X. Do not follow this procedure if you use X11R6. (Note for non-Danish readers: You can find the relevant key-codes for your own keyboard by using xev - it displays a little window and prints out all events it sees including key-codes for use with xmodmap.)

• Invoking dead key functionality under X11R6 sessions First you must make sure you are running XFree86 v3.1.2 or higher. Download and install everything related to this release if you have a lower version number. Dead keys won’t work in X11R6 applications unless these were compiled with support for this input method. A useful example of such an application is emacs version 19.30 (or higher) or the version of xterm available at

ftp://ftp.x.org/contrib/applications/ as xterm-R6-sb right-ansi-3d.tar.gz.

Next you’ll have to map some key to Compose or (equivalently) Multi Key. The Scroll Lock key is most likely already mapped thus (you can verify this with xev,) and you can easily map the right Control key by uncommenting the appropriate line in the XFree86 configuration file (often /etc/XF86Config). If you wish to use some other key you should put something like

     keycode 96 = Multi_key
in your ~/.Xmodmap file.

Finally make sure your shell and/or application is set up for iso-latin-1 compatibility as described in 3.1 and you should be all set. You can e.g. get ã by typing Compose - a - ~. And if dead keys work under plain Linux they ought also to work under X11 now. The available keystroke combinations are

listed in /etc/X11/locale/iso8859-1/Compose.

Many X applications do not support this general input method. Eventually this situation might improve, but until then you can either hack your applications or submit polite bug reports to their authors. The latter method is often the most efficient.

2.4 Making ø (oslash) Ø (Oslash) and $ (the dollar sign) work

2.4.1 The dollar sign

In older versions of loadkeys there’s a bug causing the dollar sign to be accessed with Shift-4 instead of AltGr-4 by default. You can fix this by changing the line

keycode   5 = four             dollar           dollar

in the keymap file to e.g.

keycode   5 = four             asciicircum      dollar

It doesn’t matter if you use something else instead of asciicircum if it is a valid symbol name. See section on 3.2 for a list of valid symbols.

A similar bug appears in some versions of XFree86 and can be fixed by adding

keycode  13 = 4 dollar dollar
to your ~/.Xmodmap or /etc/X11/Xmodmap file.

2.4.2 ø (oslash) and Ø (Oslash)

On some older distributions ø and Ø appear as a cent and a Yen sign. If you have this problem determine what keymap you load at boot-up. You should be able to find out by looking around in the directory /etc/rc.d/ or simply by paying attention to what happens at boot-up. On my computer the keymap is called /usr/lib/kbd/keytables/dk-latin1.map. Find the line for keycode 40 in this file and change it from

     keycode  40 = cent              yen

to

     keycode  40 = oslash            Ooblique

and load the keytable as described in section on 2.1.

Note: This bug appears to have been fixed in version 0.88 of the international keytable package.

3 Display and application setup

In general applications need to be compiled as ”8-bit-clean” to work well with European charaters. Actually they often need a few extra hints to get it right. You are advised to define the environment variable LC CTYPE to iso 8859 1 right away. You should put this definition both in /etc/profile (for bash users) and also in /etc/csh.cshrc (for tcsh users.) Similarly you should (for the sake of principle) put something like this in

your .Xdefaults or .Xresources file:
     *basicLocale:   C
     *timeFormat:    C
     *numeric:       C
     *displayLang:   iso_8859_1
     *inputLang:     iso_8859_1

3.1 International character sets in specific applications

A number of applications demand special attention. This section describes how to set up configuration files for them.

bash v.1.13+ :

Put the following in your /etc/inputrc or your ~/.inputrc file

          set meta-flag on
          set convert-meta off
          set output-meta on
tcsh :

Put the following in your /etc/csh.cshrc or .tcshrc file

     setenv LC_CTYPE iso_8859_1
     stty pass8

Note: If this doesn’t work your copy of tcsh was probably not compiled with NLS support or possibly it’s version 6.03 or lower.

ls :

Issue the command as

     ls -N

or possibly

     ls --8bit
less :

Set the following environment variable

     LESSCHARSET=latin1
elm :

Set the following environment variables

     LANG=C
     LC_CTYPE=iso_8859_1

Some versions of elm require that your put the following definitions in your ~/.elm/elmrc/ file:

     charset = iso-8859-1
     displaycharset = iso-8859-1
     textencoding = 8bit
telnet :

Put the following line in your ~/.telnetrc file

     set binary true
kermit :

This is as close as I can get, but not completely satisfying yet: Put the following in your ~/.emacs file

     set terminal bytesize 8
     set command bytesize 8
     set file bytesize 8
     set language danish
     set file character-set latin1-iso
     set transfer character-set latin1-iso
     set terminal character-set latin1-iso

I think there are more variables to set, but they are hiding. You would have to modify these settings if the remote system is DOS or OS/2 based.

emacs :

In version 19.26 or later of GNU emacs you can simply set the environment variable LC CTYPE to iso 8859 1 like you do for tcsh and elm. If you use an older version put the following in your .emacs

or the /usr/lib/emacs/site-lisp/default.el file:
     (standard-display-european t)
     (set-input-mode (car (current-input-mode))
             (nth 1 (current-input-mode))
             0)

Dead key functionality should work under GNU emacs provided you use GNU emacs v19.30 or higher and XFree86 v3.1.2 or higher, so don’t start researching available elisp packages implementing ”electric keys” or anything like that. If you want to implement European keyboard conventions in emacs without upgrading the best choice is probably the remap package available from the AUC FTP server (see section 5.)

ispell - Spell checking in Danish :

First make sure you install version 3.1 instead of version 4.0 of ispell. The latter is obsolete and multiply brain-damaged. You can download the sources for ispell at the GNU archive at prep.ai.mit.edu, and you can get a Danish dictionary via FTP from ftp.iesd.auc.dk in /pub/packages/dkispell/. Follow the compilation instructions and you should have no trouble (One caveat: When defining the variables necessary for compilation you should slightly confusingly tell ispell that Linux is a Sys V type OS by defining the variable USG.) (Note for non-Danish readers: You can find dictionaries for most Western languages by reading the file Where included with the sources for ispell.)

TeX/LaTeX :

There are several problems with TeX/LaTeX: You want LaTeX to understand the special characters, and you also want the output to follow Danish conventions and so forth. Under LaTeX2e the header should look something like this:

     \documentclass{article}
     \usepackage{a4}
     \usepackage{isolatin1}
     \usepackage[danish]{babel}

The first usepackage statement obviously sets the paper size to A4. The second makes sure LaTeX will interpret European characters correctly, so that you don’t have to use pesky escape codes for European characters. These two packages are likely to be included in your TeX distribution. The last usepackage statement implements a range of standards for use in a Danish text. This last bit is tricky because it will most likely not have been built into your version of LaTeX and you’ll need to do this yourself. You will need some Danish hyphenation patterns (Dansk: orddeling) These are available at

ftp://ftp.iesd.auc.dk/pub/packages/. The files you need are dkhyphen.tex, dkcommon.tex and

dkspecial.tex. If you use the teTeX distribution (distributed with e.g. RedHat) you already have the relevant files. Essentially you need to put these into the directory containing international hyphenation patterns, edit the appropriate language dependency file (usually called language.dat) and finally rebuild LaTeX with initex. Before you do anything rash please make sure you know what files you are changing and back them up in advance. Below is a procedure for enabling danish hyphenation. If it looks vague it’s because TeX/LaTeX installations differ very much in their choice of path-names.

1. Find  out  where

you have the hyphenation patterns. Under N-TeX this is /usr/lib/texmf/tex/hyphenation/,

    under teTeX it’s /usr/lib/texmf/texmf/tex/generic/hyphen/. Try issuing a command find

/usr/lib/ -iname '*hyph*' if you can’t find the directory.

2. Check if the hyphenation patterns are already there. If not put the hyphenation patterns mentioned above in this directory.

3. Edit the file (probably) called language.dat. In the teTeX distribution you can just uncomment

the appropriate line. If you downloaded the hyphenation pattern insert a line reading

         danish dkhyphen.tex

If you have difficulty finding language.dat try issuing the command find /usr/lib/ -name

    language.dat

4. Back up the file latex.fmt. It could be in a variety of places. Use find /usr/lib/ -name

    latex.fmt to find it.

5. Change to the directory where you found latex.fmt. Issue the command initex latex.ltx. Pray. If everything went well you now have a new version of latex.fmt.

6. You can now use

         \usepackage[danish]{babel}

in your LaTeX headers. Hyphenation should now be reasonably correct, quotation marks follow Danish conventions and chapters are now called ”Kapitel” instead of ”Chapter” etc.

If you use N-TeX you will have a configuration script called ntm-ltx.cfg located in /usr/lib/texmf/tools/. In that case simply put the hyphenation patterns in the the relevant directory (most likely called /usr/lib/texmf/tex/hyphenation/) and run the script. It will the prompt you to do the various steps described above. (Note for non-Danish readers: The process is similar for other Western European languages, and the necessary files are mostly included by default. Simply executing the command /usr/lib/texmf/tools/ntm-ltx.cfg and following the instructions will be enough for almost all major Western languages.) In LaTeX 2.09, use

     \documentstyle[a4,isolatin]{article}

to include support for ISO latin1 characters and European paper-sizes.

isolatin.sty  is  available  from  all

DANTE (see servers and from URL ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit. It should also

be included in the standard Linux distributions.

Note: Some people prefer using emacs in a special mode which translates ”special” letters into TeX escape codes, but this method should be obsolete by now.

3.2 What characters you can display under Linux

Type dumpkeys -l | less at the prompt to find out what is readily available. You can map them to your keyboard via the keymap files mentioned in section 2.1.

0 X11R5 Note: The dead keys don’t get the correct names under X11R5 with this scheme. Generally

     dead * (under plain Linux) => D* or D* accent (under X11R5)

(i.e. the tilde may be dead tilde in dk-latin1.map but X11R5 expects the dead tilde to be called Dtilde.) This does not apply to X11R6.

3.3 Loading the Latin-1 character set on the console

Execute the following commands under the bash shell:

     setfont /usr/lib/kbd/consolefonts/lat1-16.psf
     mapscrn /usr/lib/kbd/consoletrans/trivial
     echo -ne '\033(K'

Note: This only has effect under plain Linux on the console.

4 Miscellaneous problems

4.1 Time zone.

Denmark is placed in the Central European Time zone (CET or MET), which is equivalent to Greenwich Middle Time plus 1 (GMT+1). You set the time zone on a Linux system by making a symbolic link between

/usr/lib/zoneinfo/localtime and the file in /usr/lib/zoneinfo/ with a name corresponding to your

zone. Danes will want to execute the command

     ln -sf /usr/lib/zoneinfo/MET /usr/lib/zoneinfo/localtime

You synchronize the system time with the CMOS clock by issuing the command clock. If your CMOS clock is set to Greenwich time (the standard on proper Unix systems) use

     clock -u -s

or if your CMOS clock is set to local time use

     clock -s

4.2 A4 papersize

• - in ghostscript: Add the command line option -sPAPERSIZE=a4.

• - in ghostview: Define the following Xresource:

          Ghostview.pageMedia:  A4
   • - in dvips: Edit the file /usr/lib/texmf/dvips/config.ps or .dvips.

• - in xdvi: Define the Xresource

          XDvi.paper:     a4

• - in TeX/LaTeX: See the entry for TeX/LaTeX in section on 3.1.

4.3 Text file formats and other platforms.

You can translate files between an ISO-8859-1 formatted text file and e.g. a DOS text file using codepage 850 with the recode package. A DOS file called foo.txt would be translated into a proper Unix file with the command

     recode  cp850:latin1 foo.txt
recode is available as recode-3.4.tar.gz from all mirrors of prep.ai.mit.edu.

5 References and FTP sites

5.1 Other documents of relevance

The HOWTOs ought to be available from all mirrors of sunsite.unc.edu and tsx-11.mit.edu. A good close and fast mirror is the ftp site src.doc.uc.ac.uk.

The German HOWTO (in German) by Thomas Ploss.

The Portugese HOWTO (in Portugese) by Joao Carlos Rodrigues Pereira.

The Keystroke HOWTO by Zenon Fortuna.

The ISO-8859-1 FAQ by Michael Gschwind available from His FTP site

<ftp://ftp.vlsivie.tuwien.ac.at/pub/8bit/>.

5.2 FTP and Web sites

FTP site at Aalborg University Centre <ftp://ftp.iesd.auc.dk/pub/packages/> (AUC) Danish hyphenation tables, dictionary for ispell, the remap package for emacs etc.

FTP site at Imperial College <ftp://src.doc.ic.ac.uk/computing/> mirrors all the sites below and gives much better access for Europeans.

Sunsite <ftp://sunsite.unc.edu/pub/linux/> and mirrors. doc/howto has the above mentioned HOW-

TOs. utils/nls and subdirectories contains files related to National Language Support. Developers

should take a look at locale-tutorial-0.8.txt.gz, locale-pack-0.8.tar.gz, cat-pack.tar.gz and
cat-pack.tar.gz.

The GNU archives <ftp://prep.ai.mit.edu/pub/gnu/> has the recode package for character table conversion, the gettext package for locale support of some GNU applications and (of course) the latest versions of GNU emacs.

The DANTE FTP site <ftp://ftp.dante.de/> Everything needed for TeX and LaTeX support.

6 Post-amble: Acknowledgments and Copyright

Thanks to Peter Dalgaard, Anders Majland, Jon Haugsand, the authors of the German HOWTO and Michael Gschwind for suggestions and help with several questions. And a big thanks to the people at Aalborg University Center for writing and making available several of the packages described in this file.

This HOWTO is copyrighted by Thomas Petersen and distributed as other Linux HOWTOs under the terms described below.

Linux HOWTO documents may be reproduced and distributed in whole or in part, in any medium physical or electronic, as long as this copyright notice is retained on all copies. Commercial redistribution is allowed and encouraged; however, the author would like to be notified of any such distributions.

All translations, derivative works, or aggregate works incorporating any Linux HOWTO documents must be covered under this copyright notice. That is, you may not produce a derivative work from a HOWTO and impose additional restrictions on its distribution. Exceptions to these rules may be granted under certain conditions; please contact the Linux HOWTO coordinator at the address given below.

If you have questions, please contact Greg Hankins, the Linux HOWTO coordinator, at gregh@sunsite.unc.edu. You may finger this address for phone number and additional contact information.