113

I am using Ubuntu 12.04. The keyboard layout is English US everywhere except for the Command Line where it works in English UK. Terminal also has English US. How do I change the default keyboard layout in Command Line to English US?

Also, I think it might be worth noting here, that when I had installed Ubuntu (dual boot with Windows 8. 1), I had initially set the language as English UK, but later changed it to English US from the system settings.

Braiam
  • 67,791
  • 32
  • 179
  • 269
Evelyn
  • 1,233
  • 2
  • 9
  • 4
  • 4
    What exactly is the "Command Line" as opposed to the terminal? Do you mean a virtual console (tty)? – terdon Mar 16 '14 at 04:22
  • CTRL + ALT + F2 brings up the Command Line – Evelyn Mar 16 '14 at 12:00
  • lang=en_US.UTF-8 – Evelyn Mar 16 '14 at 22:06
  • 1
    @terdon I think you second guessed yourself, Ctrl+Alt+F2 should indeed be a virtual terminal (the 'Run Dialog' is plain Alt+F2). I'm not sure if console-setup is installed by default, but perhaps the OP should try sudo dpkg-reconfigure console-setup? – steeldriver Mar 17 '14 at 02:03
  • @steeldriver you are absolutely correct, I did not notice the Ctrl! Thanks, that makes this answerable! – terdon Mar 17 '14 at 02:07
  • @steeldriver Thanks a lot! Your method worked for me. – Evelyn Mar 17 '14 at 04:12
  • @user241411 really? You ran sudo dpkg-reconfigure console-setup? That only gave me options to change encoding and font, not the keyboard layout. I had to run sudo dpkg-reconfigure console-data to get the layout. – terdon Mar 17 '14 at 04:57
  • Yes, I had to run both... Thanks to you too. :) – Evelyn Mar 17 '14 at 08:34

7 Answers7

85

Update 2017-04-13: This seems to have changed in recent Ubuntu versions and running sudo apt-get install console-common will try to remove other packages. So, for recent Ubuntu versions, use this instead (Tested in 17.04):

sudo dpkg-reconfigure keyboard-configuration

The simplest way would indeed be as @steeldriver suggested to open a terminal and run this command:

sudo apt-get install console-common

That will install the console-common package and in the process allow you to chose your console layout. If that is already installed, use this to bring up the same wizard and set the layout:

sudo dpkg-reconfigure console-data

Tested on 13.10, and taken from here.

terdon
  • 100,812
  • 15
    Using Ubutnu 14.04 I was able to set the keyboard on a text-console. But after a reboot it would be reset to the previous settings. Only after issuing a sudo dpkg-reconfigure keyboard-configurationI was able to set it permanently. – MadMike Oct 05 '15 at 20:59
  • Seems like a bit of kludge to do something so seemingly simple - but hey, it worked on a Raspberry PI (running raspbian), so cool, thanks. – demaniak Sep 20 '16 at 12:57
  • 5
    This doesn't work anymore with 16.04. Installing console-common wants to remove packages cryptsetup, plymouth, lightdm, and some others. dpkg-reconfigure keyboard-configuration does work however. – Olaf Dietsche Oct 03 '16 at 15:43
  • 1
    Goddamn it. After I ran this command and reboot, it stuck at the purple blank screen. Turns out this command also removed plymouth and unity. @OlafDietsche is right! – zeng_overflow Apr 04 '17 at 17:05
  • sudo dpkg-reconfigure keyboard-configuration

    This worked for me.

    – josephdpurcell Aug 30 '19 at 00:22
  • If I have a custom kmap file how do I make it show up in this list? Or a custom xkb symbols file? – Joseph Garvin Jan 31 '21 at 18:07
80

The above didn't work for me, but this did. From terminal enter the following command:

setxkbmap us
David Foerster
  • 36,264
  • 56
  • 94
  • 147
Rich S
  • 909
  • 6
  • 6
74

Run this command:

sudo dpkg-reconfigure keyboard-configuration

This worked for me.

Wagner
  • 741
  • 1
    I needed to reboot so that it takes effect, could you mention it in the answer? Cheers – Augustin Riedinger Jan 04 '18 at 16:50
  • @AugustinRiedinger I didn't have to reboot to get that into effect. – defiant Apr 05 '18 at 08:45
  • 1
    No reboot is required. – Miguel Ortiz Nov 20 '18 at 14:02
  • 1
    Yes, running 16.04 (Thinkpad T430) and sudo dpkg-reconfigure keyboard-configuration worked a treat for me. Did not have to reboot just chose Generic 105 Int Keyboard and UK layout to recover my Keyboard after it had mysteriously change to US layout... Thanks – Dig Feb 27 '20 at 14:48
  • I had to logout and back in to have it taking effect. [i3wm] – Zheng Qu Nov 10 '20 at 12:31
  • Doesn't work in Ubuntu 20.04 server in freshly installed KVM machine. Applied UK layout, still have US layout. – Jon Bentley Nov 24 '20 at 16:12
  • It did require a reboot for be (Debian 11), so I guess if it doesn't work do try rebooting, even though it appears to work without a reboot for some. – Derkades Jan 08 '22 at 16:52
44

I have a console only (without X) Linux running inside a VirtualBox. Needed to change layout from US keyboard to a German one. I used loadkeys (load keyboard translation tables by kbd package):

loadkeys de

To make it permanent use systemd's localectl:

localectl set-keymap de

From manual:

set-keymap MAP [TOGGLEMAP]
Set the system keyboard mapping for the console and X11. This takes a mapping name (such as "de" or "us"), and possibly a second one to define a toggle keyboard mapping. Unless --no-convert is passed, the selected setting is also applied as the default system keyboard mapping of X11, after converting it to the closest matching X11 keyboard mapping. Use list-keymaps for a list of available keyboard mappings (see below).

See also

Pablo Bianchi
  • 15,657
hB0
  • 541
9

I'm running 14.04 LTS with a standard US keyboard. My problem was that I had relied on the installer to choose US-Intl for me and it caused "dead keys" and improper formation of the " and ' keys (as well as others I don't know about, I'm sure).

After a lot of frustration and trial and error, I ran the "sudo apt-get install console-common" suggestion and it fixed my problem, but only while I was logged in.

When I logged out, restarted the server and back in, it failed.

It only took hold permanently when I executed the "sudo dpkg-reconfigure keyboard-configuration" command and specified the generic US keyboard.

"setxkbmap" did not work for me.

It seems that (I don't KNOW) setxkbmap is obsolete in 14.04 LTS.

Prashant Chikhalkar
  • 2,411
  • 2
  • 18
  • 25
4

On Ubuntu/Debian you have /etc/default/keyboard config file which actually manages the keyboard layout on your distro. When you boot your system the /etc/default/keyboard file is read by setup scripts along with other config files. If you look at the output of /etc/default/keyboard file you can see my keybord layout is set to german de :

# KEYBOARD CONFIGURATION FILE

# Consult the keyboard(5) manual page.

XKBMODEL="pc105"
XKBLAYOUT="de"
XKBVARIANT=""
XKBOPTIONS=""

It is not good idea (like other config files) to directly change the attributes of /etc/default/keyboard file.

To change the layout or model of your keyboard always use following command:

sudo dpkg-reconfigure keyboard-configuration
1

Additional Information.

You should probably also change your locale!

Use locale -a to show all possible languages:

$ locale -a
C
C.UTF-8
de_AT.utf8
de_BE.utf8
de_CH.utf8
de_DE.utf8
de_LI.utf8
de_LU.utf8
en_AG
en_AG.utf8
...
POSIX

If your locale is not in the above list, then you have to generate it:

$ sudo locale-gen fr_FR.UTF-8
Generating locales...
  fr_FR.UTF-8... done
Generation complete.

The default settings are stored in /etc/default/locale:

You can either manually configure it, or use the tool:

update-locale LANG=de_DE.UTF-8

More details (german source).

Black
  • 801