Difference between revisions of "KEYMAP"

From ArchWiki
Jump to: navigation, search
(Keyboard layouts)
(add into related category)
(11 intermediate revisions by 8 users not shown)
Line 1: Line 1:
 
[[Category:Internationalization]]
 
[[Category:Internationalization]]
 +
[[Category:Keyboards]]
 
[[de:KEYMAP]]
 
[[de:KEYMAP]]
 
[[es:KEYMAP]]
 
[[es:KEYMAP]]
Line 7: Line 8:
 
[[tr:Klavye_düzeni]]
 
[[tr:Klavye_düzeni]]
 
[[zh-CN:KEYMAP]]
 
[[zh-CN:KEYMAP]]
The '''KEYMAP''' variable is specified in the [[Systemd#Console_and_keymap|{{ic|/etc/vconsole.conf}}]] file. It defines what keymap the keyboard is in the virtual consoles. Keytable files are provided by the {{Pkg|kbd}} package.
+
==Introduction and basic configuration==
 +
 
 +
The virtual console (keyboard mapping, console font, and console map) is configured in {{ic|/etc/vconsole.conf}}. It defines what keymap the keyboard is in the virtual consoles. Keytable files are provided by the {{Pkg|kbd}} package. An example {{ic|/etc/vconsole.conf}} is shown below:
 +
 
 +
{{hc|/etc/vconsole.conf|2=
 +
KEYMAP=us
 +
FONT=lat9w-16
 +
FONT_MAP=8859-1_to_uni}}
 +
 
 +
{{Note|As of {{pkg|systemd}}-194, the built-in ''kernel'' font and the ''us'' keymap are used if {{ic|1=KEYMAP=}} and {{ic|1=FONT=}} are empty or not set.}}
 +
 
 +
Another way to set the keyboard mapping (keymap) is using {{ic|localectl}}:
 +
 
 +
# localectl set-keymap de
 +
 
 +
{{ic|localectl}} can also be used to set the X11 keymap:
 +
 
 +
# localectl set-x11-keymap de
 +
 
 +
See {{ic|man 1 localectl}} and {{ic|man 5 vconsole.conf}} for details.
 +
 
 +
== Keyboard layouts ==
  
==Keyboard layouts==
 
 
This is the list of known keymap settings to work for the corresponding keyboard layouts. Most keymaps can be found in the {{ic|/usr/share/kbd/keymaps/i386/''layout''}} (''layout''=qwerty, azerty, dvorak, etc.) directory.
 
This is the list of known keymap settings to work for the corresponding keyboard layouts. Most keymaps can be found in the {{ic|/usr/share/kbd/keymaps/i386/''layout''}} (''layout''=qwerty, azerty, dvorak, etc.) directory.
  
 
Less common but nonetheless useful keymaps for Arch Linux are found in the {{ic|/usr/share/kbd/keymaps/''architecture''}} (''architecture''=mac, sun, etc.) directory.
 
Less common but nonetheless useful keymaps for Arch Linux are found in the {{ic|/usr/share/kbd/keymaps/''architecture''}} (''architecture''=mac, sun, etc.) directory.
  
{{Note|In an X session, you can use setxkbmap to instantly apply keyboard layout: {{Ic|setxkbmap -layout dvorak}}}}
+
You can find more info about your keyboard layout with:  
 
+
{{ic|less /usr/share/X11/xkb/rules/base.lst}}
{{Note|If these keymaps do not work for you, make sure the keymap file exists in {{ic|/usr/share/kbd/keymaps/}} using {{Ic|find}}: {{Ic|find /usr/share/kbd/keymaps/ -name "*[your desired keymap]*"}}}}
+
  
{{Note|You can see some instructions on how to use some keymaps in their respective files with {{Ic| zless /usr/share/kbd/keymaps/.../.../xx.map.gz}}}}
+
{{Note|
 +
* In an X session, you can use setxkbmap to instantly apply keyboard layout: {{ic|setxkbmap -layout dvorak}}
 +
* You can also use this method to modify single keys. This command would assign the compose functionality to the caps lock key: {{ic|setxkbmap -option 'compose:caps'}}. This allows for example to write umlauts easily. Example for Umlaut A: {{ic| CAPSLOCK, ", A}}  ->  Ä. You can also configure the right Windows key as a Compose key with {{ic|setxkbmap -option 'compose:rwin'}}
 +
* If these keymaps do not work for you, make sure the keymap file exists in {{ic|/usr/share/kbd/keymaps/}} using {{ic|find}}: {{ic|find /usr/share/kbd/keymaps/ -name "*[your desired keymap]*"}}
 +
* You can see some instructions on how to use some keymaps in their respective files with: {{ic|zless /usr/share/kbd/keymaps/.../.../xx.map.gz}}}}
  
 
{| class="wikitable" border="1"
 
{| class="wikitable" border="1"
Line 24: Line 48:
 
!  Keyboard
 
!  Keyboard
 
!  Keymap setting
 
!  Keymap setting
 +
|-
 +
|-
 +
|Armenian
 +
|{{ic|KEYMAP<nowiki>=</nowiki>am}}
 +
|-
 +
|Armenian (Eastern)
 +
|{{ic|KEYMAP<nowiki>=</nowiki>am -variant eastern}}
 
|-
 
|-
 
|Belgian
 
|Belgian
|{{Ic|KEYMAP<nowiki>=</nowiki>be-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>be-latin1}}
 
|-
 
|-
 
|Brazilian Portuguese
 
|Brazilian Portuguese
|{{Ic|KEYMAP<nowiki>=</nowiki>br-abnt2}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>br-abnt2}}
 
|-
 
|-
 
|Canadian-French
 
|Canadian-French
|{{Ic|KEYMAP<nowiki>=</nowiki>cf}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>cf}}
 
|-
 
|-
|Canadian Multilingual (''in [[Arch User Repository|AUR]]'')  
+
|Canadian Multilingual (''in [[AUR]]'')  
|{{Ic|KEYMAP<nowiki>=</nowiki>ca_multi}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>ca_multi}}
 
|-
 
|-
 
|Colemak ''(US)''
 
|Colemak ''(US)''
|{{Ic|KEYMAP<nowiki>=</nowiki>colemak}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>colemak}}
 
|-
 
|-
 
|Croatian
 
|Croatian
|{{Ic|KEYMAP<nowiki>=</nowiki>croat}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>croat}}
 
|-
 
|-
 
|Czech
 
|Czech
|{{Ic|KEYMAP<nowiki>=</nowiki>cz-lat2}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>cz-lat2}}
 +
|-
 +
|Danish
 +
|{{ic|KEYMAP<nowiki>=</nowiki>dk}}
 
|-
 
|-
 
|Dvorak
 
|Dvorak
|{{Ic|KEYMAP<nowiki>=</nowiki>dvorak}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>dvorak}}
 
|-
 
|-
 
|Finnish
 
|Finnish
|{{Ic|KEYMAP<nowiki>=</nowiki>fi-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>fi-latin1}}
 
|-
 
|-
 
|French
 
|French
|{{Ic|KEYMAP<nowiki>=</nowiki>fr-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>fr-latin1}}
 +
|-
 +
|Georgian
 +
|{{ic|KEYMAP<nowiki>=</nowiki>ge}}
 
|-
 
|-
 
|German
 
|German
|{{Ic|KEYMAP<nowiki>=</nowiki>de-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>de-latin1}}
 
|-
 
|-
 
|German ''(no dead keys)''
 
|German ''(no dead keys)''
|{{Ic|KEYMAP<nowiki>=</nowiki>de-latin1-nodeadkeys}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>de-latin1-nodeadkeys}}
 
|-
 
|-
 
|Greek
 
|Greek
|{{Ic|KEYMAP<nowiki>=</nowiki>gr}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>gr}}
 
|-
 
|-
 
|Italian
 
|Italian
|{{Ic|KEYMAP<nowiki>=</nowiki>it}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>it}}
 +
|-
 +
|Japanese
 +
|{{ic|KEYMAP<nowiki>=</nowiki>jp106}}
 
|-
 
|-
 
|Lithuanian ''(qwerty)''
 
|Lithuanian ''(qwerty)''
|{{Ic|KEYMAP<nowiki>=</nowiki>lt.baltic}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>lt.baltic}}
 
|-
 
|-
 
|Norwegian
 
|Norwegian
|{{Ic|KEYMAP<nowiki>=</nowiki>no-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>no-latin1}}
 
|-
 
|-
 
|Polish
 
|Polish
|{{Ic|KEYMAP<nowiki>=</nowiki>pl}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>pl}}
 
|-
 
|-
 
|Portuguese
 
|Portuguese
|{{Ic|KEYMAP<nowiki>=</nowiki>pt-latin9}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>pt-latin9}}
 
|-
 
|-
 
|Romanian
 
|Romanian
|{{Ic|KEYMAP<nowiki>=</nowiki>ro_win}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>ro_win}}
 
|-
 
|-
 
|Russian
 
|Russian
|{{Ic|KEYMAP<nowiki>=</nowiki>ru4}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>ru4}}
 
|-
 
|-
 
|Singapore
 
|Singapore
|{{Ic|KEYMAP<nowiki>=</nowiki>sg-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>sg-latin1}}
 
|-
 
|-
 
|Slovene
 
|Slovene
|{{Ic|KEYMAP<nowiki>=</nowiki>slovene}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>slovene}}
 
|-
 
|-
 
|Swedish
 
|Swedish
|{{Ic|KEYMAP<nowiki>=</nowiki>sv-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>sv-latin1}}
 
|-
 
|-
 
|Swiss-French
 
|Swiss-French
|{{Ic|KEYMAP<nowiki>=</nowiki>fr_CH-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>fr_CH-latin1}}
 
|-
 
|-
 
|Swiss-German
 
|Swiss-German
|{{Ic|KEYMAP<nowiki>=</nowiki>de_CH-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>de_CH-latin1}}
 
|-
 
|-
|Spanish
+
|Spanish Spaniard
|{{Ic|KEYMAP<nowiki>=</nowiki>es}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>es}}
 
|-
 
|-
|Spanish Dvorak
+
|Spanish Latin American
|{{Ic|KEYMAP<nowiki>=</nowiki>dvorak-es}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>la-latin1}}
 
|-
 
|-
|Spanish Latinoamerican
+
|Spanish Dvorak
|{{Ic|KEYMAP<nowiki>=</nowiki>la-latin1}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>dvorak-es}}
 
|-
 
|-
 
|Turkish
 
|Turkish
|{{Ic|KEYMAP<nowiki>=</nowiki>tr_q-latin5}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>tr_q-latin5}}
 
|-
 
|-
 
|Ukrainian
 
|Ukrainian
|{{Ic|KEYMAP<nowiki>=</nowiki>ua}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>ua}}
 
|-
 
|-
 
|United Kingdom
 
|United Kingdom
|{{Ic|KEYMAP<nowiki>=</nowiki>uk}}
+
|{{ic|KEYMAP<nowiki>=</nowiki>uk}}
 
|}
 
|}
  
==Configuring the Console Keymap==
+
== Configuring the console keymap ==
  
#{{ic|cd}} to {{ic|/usr/share/kbd/keymaps/i386/qwerty}}
+
# {{ic|cd /usr/share/kbd/keymaps/i386/qwerty}}.
#Copy your default keymap ({{ic|us.map.gz}}) to a new file {{ic|personal.map.gz}}
+
# Copy your default keymap ({{ic|us.map.gz}}) to a new file {{ic|personal.map.gz}}.
#{{ic|gunzip}} the new map file
+
# {{ic|gunzip}} the new map file.
#Edit {{ic|personal.map}} using your favorite editor. Examples:
+
# Edit {{ic|personal.map}} using your favorite editor. Examples:
#*'''Make the Right Alt key same as Left Alt key (Emacs)'''<br>change the line {{ic|include "linux-with-alt-and-altgr"}} to {{ic|include "linux-with-two-alt-keys"}}
+
#* '''Make the Right Alt key same as Left Alt key (Emacs)'''<br>change the line {{ic|include "linux-with-alt-and-altgr"}} to {{ic|include "linux-with-two-alt-keys"}}.
#*'''Swap CapsLock with Escape (Vim)'''<br>make {{ic|keycode 1 <nowiki>=</nowiki> Caps_Lock}} and {{ic|keycode 58 <nowiki>=</nowiki> Escape}}
+
#* '''Swap CapsLock with Escape (Vim)'''<br>make {{ic|keycode 1 <nowiki>=</nowiki> Caps_Lock}} and {{ic|keycode 58 <nowiki>=</nowiki> Escape}}.
#*'''Make CapsLock another Control key'''<br>change the line {{ic|keycode 58 <nowiki>=</nowiki> Caps_Lock}} to {{ic|keycode 58 <nowiki>=</nowiki> Control}}
+
#* '''Make CapsLock another Control key'''<br>change the line {{ic|keycode 58 <nowiki>=</nowiki> Caps_Lock}} to {{ic|keycode 58 <nowiki>=</nowiki> Control}}.
#*'''Swap CapsLock with Left Control key'''<br>make {{ic|keycode 29 <nowiki>=</nowiki> Caps_Lock}} and {{ic|keycode 58 <nowiki>=</nowiki> Control}}
+
#* '''Swap CapsLock with Left Control key'''<br>make {{ic|keycode 29 <nowiki>=</nowiki> Caps_Lock}} and {{ic|keycode 58 <nowiki>=</nowiki> Control}}.
#{{ic|gzip}} the map file
+
# {{ic|gzip}} the map file.
#Change the default keyboard layout file that will be used by editing {{ic|/etc/vconsole.conf}} (you might have to create this file) and changing the line that says {{ic|KEYMAP<nowiki>=</nowiki>us}} to {{ic|KEYMAP<nowiki>=</nowiki>personal}}
+
# Change the default keyboard layout file that will be used by editing {{ic|/etc/vconsole.conf}} (you might have to create this file) and changing the line that says {{ic|KEYMAP<nowiki>=</nowiki>us}} to {{ic|KEYMAP<nowiki>=</nowiki>personal}}.
#Reboot to use your keymap the way nature intended (or run "loadkeys personal")
+
# Reboot to use your keymap the way nature intended (or run "loadkeys personal").

Revision as of 03:33, 14 September 2013

Introduction and basic configuration

The virtual console (keyboard mapping, console font, and console map) is configured in /etc/vconsole.conf. It defines what keymap the keyboard is in the virtual consoles. Keytable files are provided by the kbd package. An example /etc/vconsole.conf is shown below:

/etc/vconsole.conf
KEYMAP=us
FONT=lat9w-16
FONT_MAP=8859-1_to_uni
Note: As of systemd-194, the built-in kernel font and the us keymap are used if KEYMAP= and FONT= are empty or not set.

Another way to set the keyboard mapping (keymap) is using localectl:

# localectl set-keymap de

localectl can also be used to set the X11 keymap:

# localectl set-x11-keymap de

See man 1 localectl and man 5 vconsole.conf for details.

Keyboard layouts

This is the list of known keymap settings to work for the corresponding keyboard layouts. Most keymaps can be found in the /usr/share/kbd/keymaps/i386/layout (layout=qwerty, azerty, dvorak, etc.) directory.

Less common but nonetheless useful keymaps for Arch Linux are found in the /usr/share/kbd/keymaps/architecture (architecture=mac, sun, etc.) directory.

You can find more info about your keyboard layout with: less /usr/share/X11/xkb/rules/base.lst

Note:
  • In an X session, you can use setxkbmap to instantly apply keyboard layout: setxkbmap -layout dvorak
  • You can also use this method to modify single keys. This command would assign the compose functionality to the caps lock key: setxkbmap -option 'compose:caps'. This allows for example to write umlauts easily. Example for Umlaut A: CAPSLOCK, ", A -> Ä. You can also configure the right Windows key as a Compose key with setxkbmap -option 'compose:rwin'
  • If these keymaps do not work for you, make sure the keymap file exists in /usr/share/kbd/keymaps/ using find: find /usr/share/kbd/keymaps/ -name "*[your desired keymap]*"
  • You can see some instructions on how to use some keymaps in their respective files with: zless /usr/share/kbd/keymaps/.../.../xx.map.gz
Keyboard Keymap setting
Armenian KEYMAP=am
Armenian (Eastern) KEYMAP=am -variant eastern
Belgian KEYMAP=be-latin1
Brazilian Portuguese KEYMAP=br-abnt2
Canadian-French KEYMAP=cf
Canadian Multilingual (in AUR) KEYMAP=ca_multi
Colemak (US) KEYMAP=colemak
Croatian KEYMAP=croat
Czech KEYMAP=cz-lat2
Danish KEYMAP=dk
Dvorak KEYMAP=dvorak
Finnish KEYMAP=fi-latin1
French KEYMAP=fr-latin1
Georgian KEYMAP=ge
German KEYMAP=de-latin1
German (no dead keys) KEYMAP=de-latin1-nodeadkeys
Greek KEYMAP=gr
Italian KEYMAP=it
Japanese KEYMAP=jp106
Lithuanian (qwerty) KEYMAP=lt.baltic
Norwegian KEYMAP=no-latin1
Polish KEYMAP=pl
Portuguese KEYMAP=pt-latin9
Romanian KEYMAP=ro_win
Russian KEYMAP=ru4
Singapore KEYMAP=sg-latin1
Slovene KEYMAP=slovene
Swedish KEYMAP=sv-latin1
Swiss-French KEYMAP=fr_CH-latin1
Swiss-German KEYMAP=de_CH-latin1
Spanish Spaniard KEYMAP=es
Spanish Latin American KEYMAP=la-latin1
Spanish Dvorak KEYMAP=dvorak-es
Turkish KEYMAP=tr_q-latin5
Ukrainian KEYMAP=ua
United Kingdom KEYMAP=uk

Configuring the console keymap

  1. cd /usr/share/kbd/keymaps/i386/qwerty.
  2. Copy your default keymap (us.map.gz) to a new file personal.map.gz.
  3. gunzip the new map file.
  4. Edit personal.map using your favorite editor. Examples:
    • Make the Right Alt key same as Left Alt key (Emacs)
      change the line include "linux-with-alt-and-altgr" to include "linux-with-two-alt-keys".
    • Swap CapsLock with Escape (Vim)
      make keycode 1 = Caps_Lock and keycode 58 = Escape.
    • Make CapsLock another Control key
      change the line keycode 58 = Caps_Lock to keycode 58 = Control.
    • Swap CapsLock with Left Control key
      make keycode 29 = Caps_Lock and keycode 58 = Control.
  5. gzip the map file.
  6. Change the default keyboard layout file that will be used by editing /etc/vconsole.conf (you might have to create this file) and changing the line that says KEYMAP=us to KEYMAP=personal.
  7. Reboot to use your keymap the way nature intended (or run "loadkeys personal").