This is an old revision of the document!


Layout-switching in the Console

The command loadkeys can be used to set a new layout. The following outline explains how to implement such a mechanism in dCore. Due to the size of the needed packages, some optimisation is desirable (cf. note below).

Warning about log-in prompt

The man-page of loadkeys explains a possible side-effect of changing the keyboard-layout in the console. “Note that because the changes affect all the virtual consoles, they also outlive your session. This means that even at the login prompt the key bindings may not be what the user expects.”

Installing

  • Import and load the kbd package, providing 'loadkeys'. This extension is to be made persistent by adding it to 'sceboot.lst'.
  • Import and load the console-date package. This extension is only used in an ephemeral way and can be removed afterwards.

Note

The package kbd has a almost one hundred dependencies going back to, e.g. passwd and mount. Thus it is desirable to include it into a base extension rather than used it as an isolated extension as here presented. That may be done at a later time without need for repeating the whole procedure.

Storing the key-map-files

The necessary key-map files are stored away and made persistent.

  • Create a directory to store the key-map files in, e.g. '/opt/system/keymaps/', and make it the working directory.
  • In a console (virtual TTY, accessed by Ctrl+Alt+F#), sudo loadkeys us should output “/usr/share/keymaps/i386/qwerty/us.kmap.gz”. Use dumpkeys > us.keymap to produce an appropriate key-map file.
  • Determine your keyboard layout by sudo loadkeys <LAYOUT>, substituting some desired key-map code (likely some file name in '/usr/share/keymaps/', probably under 'i386/qwerty/'). Use dumpkeys > <LAYOUT>.keymap to produce an appropriate key-map file.

Hint: if you should have loaded a non-functional keyboard layout, use the arrow-up key to get back to the line loading the US-layout.

Notes

  • The naming scheme remains a bit hazy. The Swiss-German layout, for instance, may well be loaded by 'loadkeys ch' but the command does not produce any output. Indeed, there is no file 'ch*' at all but instead one for 'sg_latin1'. YMMV. In the end, the file names do not matter as a new key-map file for local use is generated anyways.

Testing

Loading any such key-map with loadkeys should switch keyboard layout, e.g. sudo loadkeys /opt/system/keymaps/us.kmap.

Persistence

Add the name of the directory, e.g. “opt/system/keymaps” to '.filetool.lst' and issue backup.

Personalisation

Standard layout

In order to specify a standard layout for the console, add the following to '~/.profile'.

~/.profile:
sudo loadkeys <KMAP>

The US-keyboard layout is used as default if nothing else is specified so this step can be omitted if that layout should be used by default.

Aliases

In order to quickly switch between layout, add something like the following to '~/.ashrc'.

~/.ashrc:
alias us='sudo loadkeys /opt/system/keymaps/us.kmap'
alias <CODE>='sudo loadkeys <KMAP>'
Print/export
QR Code
QR Code dcore:keyboard_layout_in_console (generated for current page)