loadkeys reads the file or files specified by filename... . If this file does not contain any compose key definitions, the kernel accent table is left unchanged, unless the -c (or --clearcompose ) option is given. The option -s (or --clearstrings ) clears the kernel string table. If this option is not given, loadkeys will only add or replace strings, not remove them. If the -d (or --default ) option is given, loadkeys loads a default keymap, probably the file defkeymap.map either in /usr/lib/kbd/keytables or in /usr/src/linux/drivers/char. If the -m (or --mktable ) option is given it prints to the standard output a file that may be used as /usr/src/linux/drivers/char/defkeymap.c, specifying the default key bindings for a kernel. Otherwise, it modifies the keyboard drivers's translation tables. The files are in the format specified by keytables (5). When specifying the file names, standard input can be denoted by dash (-). The files are read in consecutively one by one to in effect catenate all the input files together. If no file is specified, the data is read from the standard input. Thus, the following command lines are equivalent:
cat foo.map bar.map | loadkeys -
cat foo.map | loadkeys - bar.map
cat bar.map | loadkeys foo.map -
loadkeys foo.map bar.map
Note that anyone having read access to /dev/console can run loadkeys and thus change the keyboard layout, possibly making it unusable. Note that the keyboard translation table is common for all the virtual consoles, so any changes to the keyboard bindings affect all the virtual consoles simultaneously.
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.