Home » List all valid kbd layouts, variants and toggle options (to use with setxkbmap)

List all valid kbd layouts, variants and toggle options (to use with setxkbmap)

Solutons:


Take a look at localectl, especially following options:

  • localectl list-x11-keymap-layouts – gives you layouts (~100 on modern systems)
  • localectl list-x11-keymap-variants de gives you variants for this layout (or all variants if no layout specified, ~300 on modern systems)
  • localectl list-x11-keymap-options | grep grp: – gives you all layout switching options

Try looking in /usr/share/X11/xkb/symbols as described on the setxkbmap man page. The options can be found in various files, try doing a grep -rinH alts_toggle /usr/share/X11/xkb. /usr/share/X11/xkb/rules/xorg.xml looks like a good choice.

You could retrieve the list in that file /usr/share/X11/xkb/rules/evdev.lst

Example to retrieve variants with sed to find only Danish variant

sed '/! variant/,/^$/!d;/Danish/!d' < /usr/share/X11/xkb/rules/evdev.lst

  nodeadkeys      dk: Danish (eliminate dead keys)
  winkeys         dk: Danish (Winkeys)
  mac             dk: Danish (Macintosh)
  mac_nodeadkeys  dk: Danish (Macintosh, eliminate dead keys)
  dvorak          dk: Danish (Dvorak)

Edit: I add the full list

! layout
  us              USA
  ad              Andorra
  af              Afghanistan
  ara             Arabic
  al              Albania
  am              Armenia
  az              Azerbaijan
  by              Belarus
  be              Belgium
  bd              Bangladesh
  in              India
  ba              Bosnia and Herzegovina
  br              Brazil
  bg              Bulgaria
  ma              Morocco
  mm              Myanmar
  ca              Canada
  cd              Congo, Democratic Republic of the
  cn              China
  hr              Croatia
  cz              Czechia
  dk              Denmark
  nl              Netherlands
  bt              Bhutan
  ee              Estonia
  ir              Iran
  iq              Iraq
  fo              Faroe Islands
  fi              Finland
  fr              France
  gh              Ghana
  gn              Guinea
  ge              Georgia
  de              Germany
  gr              Greece
  hu              Hungary
  is              Iceland
  il              Israel
  it              Italy
  jp              Japan
  kg              Kyrgyzstan
  kh              Cambodia
  kz              Kazakhstan
  la              Laos
  latam           Latin American
  lt              Lithuania
  lv              Latvia
  mao             Maori
  me              Montenegro
  mk              Macedonia
  mt              Malta
  mn              Mongolia
  no              Norway
  pl              Poland
  pt              Portugal
  ro              Romania
  ru              Russia
  rs              Serbia
  si              Slovenia
  sk              Slovakia
  es              Spain
  se              Sweden
  ch              Switzerland
  sy              Syria
  tj              Tajikistan
  lk              Sri Lanka
  th              Thailand
  tr              Turkey
  tw              Taiwan
  ua              Ukraine
  gb              United Kingdom
  uz              Uzbekistan
  vn              Vietnam
  kr              Korea, Republic of
  nec_vndr/jp     Japan (PC-98xx Series)
  ie              Ireland
  pk              Pakistan
  mv              Maldives
  za              South Africa
  epo             Esperanto
  np              Nepal
  ng              Nigeria
  et              Ethiopia
  sn              Senegal
  brai            Braille
  tm              Turkmenistan
  ml              Mali
  tz              Tanzania

! variant
  chr             us: Cherokee
  euro            us: With EuroSign on 5
  intl            us: International (with dead keys)
  alt-intl        us: Alternative international (former us_intl)
  colemak         us: Colemak
  dvorak          us: Dvorak
  dvorak-intl     us: Dvorak international
  dvorak-l        us: Left handed Dvorak
  dvorak-r        us: Right handed Dvorak
  dvorak-classic  us: Classic Dvorak
  dvp             us: Programmer Dvorak
  rus             us: Russian phonetic
  mac             us: Macintosh
  altgr-intl      us: International (AltGr dead keys)
  olpc2           us: Group toggle on multiply/divide key
  srp             us: Serbian
  ps              af: Pashto
  uz              af: Southern Uzbek
  olpc-ps         af: OLPC Pashto
  olpc-fa         af: OLPC Dari
  olpc-uz         af: OLPC Southern Uzbek
  azerty          ara: azerty
  azerty_digits   ara: azerty/digits
  digits          ara: digits
  qwerty          ara: qwerty
  qwerty_digits   ara: qwerty/digits
  buckwalter      ara: Buckwalter
  phonetic        am: Phonetic
  phonetic-alt    am: Alternative Phonetic
  eastern         am: Eastern
  western         am: Western
  eastern-alt     am: Alternative Eastern
  cyrillic        az: Cyrillic
  legacy          by: Legacy
  latin           by: Latin
  oss             be: Alternative
  oss_latin9      be: Alternative, latin-9 only
  oss_sundeadkeys be: Alternative, Sun dead keys
  iso-alternate   be: ISO Alternate
  nodeadkeys      be: Eliminate dead keys
  sundeadkeys     be: Sun dead keys
  wang            be: Wang model 724 azerty
  probhat         bd: Probhat
  ben             in: Bengali
  ben_probhat     in: Bengali Probhat
  guj             in: Gujarati
  guru            in: Gurmukhi
  jhelum          in: Gurmukhi Jhelum
  kan             in: Kannada
  mal             in: Malayalam
  mal_lalitha     in: Malayalam Lalitha
  ori             in: Oriya
  tam_unicode     in: Tamil Unicode
  tam_keyboard_with_numerals in: Tamil Keyboard with Numerals
  tam_TAB         in: Tamil TAB Typewriter
  tam_TSCII       in: Tamil TSCII Typewriter
  tam             in: Tamil
  tel             in: Telugu
  urd-phonetic    in: Urdu, Phonetic
  urd-phonetic3   in: Urdu, Alternative phonetic
  urd-winkeys     in: Urdu, Winkeys
  bolnagri        in: Hindi Bolnagri
  hin-wx          in: Hindi Wx
  alternatequotes ba: Use guillemets for quotes
  unicode         ba: Use Bosnian digraphs
  unicodeus       ba: US keyboard with Bosnian digraphs
  us              ba: US keyboard with Bosnian letters
  nodeadkeys      br: Eliminate dead keys
  dvorak          br: Dvorak
  nativo          br: Nativo
  nativo-us       br: Nativo for USA keyboards
  nativo-epo      br: Nativo for Esperanto
  phonetic        bg: Traditional phonetic
  bas_phonetic    bg: New phonetic
  french          ma: French
  tifinagh        ma: Tifinagh
  tifinagh-alt    ma: Tifinagh Alternative
  tifinagh-alt-phonetic ma: Tifinagh Alternative Phonetic
  tifinagh-extended ma: Tifinagh Extended
  tifinagh-phonetic ma: Tifinagh Phonetic
  tifinagh-extended-phonetic ma: Tifinagh Extended Phonetic
  fr-dvorak       ca: French Dvorak
  fr-legacy       ca: French (legacy)
  multix          ca: Multilingual
  multi           ca: Multilingual, first part
  multi-2gr       ca: Multilingual, second part
  ike             ca: Inuktitut
  shs             ca: Secwepemctsin
  kut             ca: Ktunaxa
  eng             ca: English
  tib             cn: Tibetan
  tib_asciinum    cn: Tibetan (with ASCII numerals)
  alternatequotes hr: Use guillemets for quotes
  unicode         hr: Use Croatian digraphs
  unicodeus       hr: US keyboard with Croatian digraphs
  us              hr: US keyboard with Croatian letters
  bksl            cz: With &lt;|&gt; key
  qwerty          cz: qwerty
  qwerty_bksl     cz: qwerty, extended Backslash
  ucw             cz: UCW layout (accented letters only)
  dvorak-ucw      cz: US Dvorak with CZ UCW support
  nodeadkeys      dk: Eliminate dead keys
  mac             dk: Macintosh
  mac_nodeadkeys  dk: Macintosh, eliminate dead keys
  dvorak          dk: Dvorak
  sundeadkeys     nl: Sun dead keys
  mac             nl: Macintosh
  std             nl: Standard
  nodeadkeys      ee: Eliminate dead keys
  dvorak          ee: Dvorak
  us              ee: US keyboard with Estonian letters
  pes_keypad      ir: Persian, with Persian Keypad
  ku              ir: Kurdish, Latin Q
  ku_f            ir: Kurdish, (F)
  ku_alt          ir: Kurdish, Latin Alt-Q
  ku_ara          ir: Kurdish, Arabic-Latin
  ku              iq: Kurdish, Latin Q
  ku_f            iq: Kurdish, (F)
  ku_alt          iq: Kurdish, Latin Alt-Q
  ku_ara          iq: Kurdish, Arabic-Latin
  nodeadkeys      fo: Eliminate dead keys
  nodeadkeys      fi: Eliminate dead keys
  smi             fi: Northern Saami
  classic         fi: Classic
  mac             fi: Macintosh
  nodeadkeys      fr: Eliminate dead keys
  sundeadkeys     fr: Sun dead keys
  oss             fr: Alternative
  oss_latin9      fr: Alternative, latin-9 only
  oss_nodeadkeys  fr: Alternative, eliminate dead keys
  oss_sundeadkeys fr: Alternative, Sun dead keys
  latin9          fr: (Legacy) Alternative
  latin9_nodeadkeys fr: (Legacy) Alternative, eliminate dead keys
  latin9_sundeadkeys fr: (Legacy) Alternative, Sun dead keys
  bepo            fr: Bepo, ergonomic, Dvorak way
  bepo_latin9     fr: Bepo, ergonomic, Dvorak way, latin-9 only
  dvorak          fr: Dvorak
  mac             fr: Macintosh
  bre             fr: Breton
  oci             fr: Occitan
  geo             fr: Georgian AZERTY Tskapo
  generic         gh: Multilingual
  akan            gh: Akan
  ewe             gh: Ewe
  fula            gh: Fula
  ga              gh: Ga
  hausa           gh: Hausa
  ergonomic       ge: Ergonomic
  mess            ge: MESS
  ru              ge: Russian
  os              ge: Ossetian
  deadacute       de: Dead acute
  deadgraveacute  de: Dead grave acute
  nodeadkeys      de: Eliminate dead keys
  ro              de: Romanian keyboard with German letters
  ro_nodeadkeys   de: Romanian keyboard with German letters, eliminate dead keys
  dvorak          de: Dvorak
  sundeadkeys     de: Sun dead keys
  neo             de: Neo 2
  mac             de: Macintosh
  mac_nodeadkeys  de: Macintosh, eliminate dead keys
  dsb             de: Lower Sorbian
  dsb_qwertz      de: Lower Sorbian (qwertz)
  qwerty          de: qwerty
  simple          gr: Simple
  extended        gr: Extended
  nodeadkeys      gr: Eliminate dead keys
  polytonic       gr: Polytonic
  standard        hu: Standard
  nodeadkeys      hu: Eliminate dead keys
  qwerty          hu: qwerty
  101_qwertz_comma_dead hu: 101/qwertz/comma/Dead keys
  101_qwertz_comma_nodead hu: 101/qwertz/comma/Eliminate dead keys
  101_qwertz_dot_dead hu: 101/qwertz/dot/Dead keys
  101_qwertz_dot_nodead hu: 101/qwertz/dot/Eliminate dead keys
  101_qwerty_comma_dead hu: 101/qwerty/comma/Dead keys
  101_qwerty_comma_nodead hu: 101/qwerty/comma/Eliminate dead keys
  101_qwerty_dot_dead hu: 101/qwerty/dot/Dead keys
  101_qwerty_dot_nodead hu: 101/qwerty/dot/Eliminate dead keys
  102_qwertz_comma_dead hu: 102/qwertz/comma/Dead keys
  102_qwertz_comma_nodead hu: 102/qwertz/comma/Eliminate dead keys
  102_qwertz_dot_dead hu: 102/qwertz/dot/Dead keys
  102_qwertz_dot_nodead hu: 102/qwertz/dot/Eliminate dead keys
  102_qwerty_comma_dead hu: 102/qwerty/comma/Dead keys
  102_qwerty_comma_nodead hu: 102/qwerty/comma/Eliminate dead keys
  102_qwerty_dot_dead hu: 102/qwerty/dot/Dead keys
  102_qwerty_dot_nodead hu: 102/qwerty/dot/Eliminate dead keys
  Sundeadkeys     is: Sun dead keys
  nodeadkeys      is: Eliminate dead keys
  mac             is: Macintosh
  dvorak          is: Dvorak
  lyx             il: lyx
  phonetic        il: Phonetic
  biblical        il: Biblical Hebrew (Tiro)
  nodeadkeys      it: Eliminate dead keys
  mac             it: Macintosh
  us              it: US keyboard with Italian letters
  geo             it: Georgian
  kana            jp: Kana
  OADG109A        jp: OADG 109A
  mac             jp: Macintosh
  phonetic        kg: Phonetic
  ruskaz          kz: Russian with Kazakh
  kazrus          kz: Kazakh with Russian
  basic           la: Laos
  stea            la: Laos - STEA (proposed standard layout)
  nodeadkeys      latam: Eliminate dead keys
  deadtilde       latam: Include dead tilde
  sundeadkeys     latam: Sun dead keys
  std             lt: Standard
  us              lt: US keyboard with Lithuanian letters
  ibm             lt: IBM (LST 1205-92)
  lekp            lt: LEKP
  lekpa           lt: LEKPa
  apostrophe      lv: Apostrophe (') variant
  tilde           lv: Tilde (~) variant
  fkey            lv: F-letter (F) variant
  cyrillic        me: Cyrillic
  cyrillicyz      me: Cyrillic, Z and ZHE swapped
  latinunicode    me: Latin unicode
  latinyz         me: Latin qwerty
  latinunicodeyz  me: Latin unicode qwerty
  cyrillicalternatequotes me: Cyrillic with guillemets
  latinalternatequotes me: Latin with guillemets
  nodeadkeys      mk: Eliminate dead keys
  us              mt: Maltese keyboard with US layout
  nodeadkeys      no: Eliminate dead keys
  dvorak          no: Dvorak
  smi             no: Northern Saami
  smi_nodeadkeys  no: Northern Saami, eliminate dead keys
  mac             no: Macintosh
  mac_nodeadkeys  no: Macintosh, eliminate dead keys
  qwertz          pl: qwertz
  dvorak          pl: Dvorak
  dvorak_quotes   pl: Dvorak, Polish quotes on quotemark key
  dvorak_altquotes pl: Dvorak, Polish quotes on key 1
  csb             pl: Kashubian
  ru_phonetic_dvorak pl: Russian phonetic Dvorak
  dvp             pl: Programmer Dvorak
  nodeadkeys      pt: Eliminate dead keys
  sundeadkeys     pt: Sun dead keys
  mac             pt: Macintosh
  mac_nodeadkeys  pt: Macintosh, eliminate dead keys
  mac_sundeadkeys pt: Macintosh, Sun dead keys
  nativo          pt: Nativo
  nativo-us       pt: Nativo for USA keyboards
  nativo-epo      pt: Nativo for Esperanto
  cedilla         ro: Cedilla
  std             ro: Standard
  std_cedilla     ro: Standard (Cedilla)
  winkeys         ro: Winkeys
  crh_f           ro: Crimean Tatar (Turkish F)
  crh_alt         ro: Crimean Tatar (Turkish Alt-Q)
  crh_dobruca1    ro: Crimean Tatar (Dobruca-1 Q)
  crh_dobruca2    ro: Crimean Tatar (Dobruca-2 Q)
  phonetic        ru: Phonetic
  phonetic_winkeys ru: Phonetic Winkeys
  typewriter      ru: Typewriter
  legacy          ru: Legacy
  typewriter-legacy ru: Typewriter, legacy
  tt              ru: Tatar
  os_legacy       ru: Ossetian, legacy
  os_winkeys      ru: Ossetian, Winkeys
  cv              ru: Chuvash
  cv_latin        ru: Chuvash Latin
  udm             ru: Udmurt
  kom             ru: Komi
  sah             ru: Yakut
  xal             ru: Kalmyk
  dos             ru: DOS
  srp             ru: Serbian
  bak             ru: Bashkirian
  yz              rs: Z and ZHE swapped
  latin           rs: Latin
  latinunicode    rs: Latin Unicode
  latinyz         rs: Latin qwerty
  latinunicodeyz  rs: Latin Unicode qwerty
  alternatequotes rs: With guillemets
  latinalternatequotes rs: Latin with guillemets
  alternatequotes si: Use guillemets for quotes
  us              si: US keyboard with Slovenian letters
  bksl            sk: Extended Backslash
  qwerty          sk: qwerty
  qwerty_bksl     sk: qwerty, extended Backslash
  nodeadkeys      es: Eliminate dead keys
  deadtilde       es: Include dead tilde
  sundeadkeys     es: Sun dead keys
  dvorak          es: Dvorak
  ast             es: Asturian variant with bottom-dot H and bottom-dot L
  cat             es: Catalan variant with middle-dot L
  mac             es: Macintosh
  nodeadkeys      se: Eliminate dead keys
  dvorak          se: Dvorak
  rus             se: Russian phonetic
  rus_nodeadkeys  se: Russian phonetic, eliminate dead keys
  smi             se: Northern Saami
  mac             se: Macintosh
  svdvorak        se: Svdvorak
  legacy          ch: Legacy
  de_nodeadkeys   ch: German, eliminate dead keys
  de_sundeadkeys  ch: German, Sun dead keys
  fr              ch: French
  fr_nodeadkeys   ch: French, eliminate dead keys
  fr_sundeadkeys  ch: French, Sun dead keys
  fr_mac          ch: French (Macintosh)
  de_mac          ch: German (Macintosh)
  syc             sy: Syriac
  syc_phonetic    sy: Syriac phonetic
  ku              sy: Kurdish, Latin Q
  ku_f            sy: Kurdish, (F)
  ku_alt          sy: Kurdish, Latin Alt-Q
  legacy          tj: Legacy
  tam_unicode     lk: Tamil Unicode
  tam_TAB         lk: Tamil TAB Typewriter
  tis             th: TIS-820.2538
  pat             th: Pattachote
  f               tr: (F)
  alt             tr: Alt-Q
  sundeadkeys     tr: Sun dead keys
  ku              tr: Kurdish, Latin Q
  ku_f            tr: Kurdish, (F)
  ku_alt          tr: Kurdish, Latin Alt-Q
  intl            tr: International (with dead keys)
  crh             tr: Crimean Tatar (Turkish Q)
  crh_f           tr: Crimean Tatar (Turkish F)
  crh_alt         tr: Crimean Tatar (Turkish Alt-Q)
  indigenous      tw: Indigenous
  saisiyat        tw: Saisiyat
  phonetic        ua: Phonetic
  typewriter      ua: Typewriter
  winkeys         ua: Winkeys
  legacy          ua: Legacy
  rstu            ua: Standard RSTU
  rstu_ru         ua: Standard RSTU on Russian layout
  homophonic      ua: Homophonic
  crh             ua: Crimean Tatar (Turkish Q)
  crh_f           ua: Crimean Tatar (Turkish F)
  crh_alt         ua: Crimean Tatar (Turkish Alt-Q)
  extd            gb: Extended - Winkeys
  intl            gb: International (with dead keys)
  dvorak          gb: Dvorak
  dvorakukp       gb: Dvorak (UK Punctuation)
  mac             gb: Macintosh
  colemak         gb: Colemak
  latin           uz: Latin
  crh             uz: Crimean Tatar (Turkish Q)
  crh_f           uz: Crimean Tatar (Turkish F)
  crh_alt         uz: Crimean Tatar (Turkish Alt-Q)
  kr104           kr: 101/104 key Compatible
  CloGaelach      ie: CloGaelach
  UnicodeExpert   ie: UnicodeExpert
  ogam            ie: Ogham
  ogam_is434      ie: Ogham IS434
  urd-crulp       pk: CRULP
  urd-nla         pk: NLA
  ara             pk: Arabic
  legacy          epo: displaced semicolon and quote (obsolete)
  igbo            ng: Igbo
  yoruba          ng: Yoruba
  hausa           ng: Hausa
  left_hand       brai: Left hand
  right_hand      brai: Right hand
  alt             tm: Alt-Q
  fr-oss          ml: Français (France Alternative)
  us-mac          ml: English (USA Macintosh)
  us-intl         ml: English (USA International)

Related Solutions

Joining bash arguments into single string with spaces

[*] I believe that this does what you want. It will put all the arguments in one string, separated by spaces, with single quotes around all: str="'$*'" $* produces all the scripts arguments separated by the first character of $IFS which, by default, is a space....

AddTransient, AddScoped and AddSingleton Services Differences

TL;DR Transient objects are always different; a new instance is provided to every controller and every service. Scoped objects are the same within a request, but different across different requests. Singleton objects are the same for every object and every...

How to download package not install it with apt-get command?

Use --download-only: sudo apt-get install --download-only pppoe This will download pppoe and any dependencies you need, and place them in /var/cache/apt/archives. That way a subsequent apt-get install pppoe will be able to complete without any extra downloads....

What defines the maximum size for a command single argument?

Answers Definitely not a bug. The parameter which defines the maximum size for one argument is MAX_ARG_STRLEN. There is no documentation for this parameter other than the comments in binfmts.h: /* * These are the maximum length and maximum number of strings...

Bulk rename, change prefix

I'd say the simplest it to just use the rename command which is common on many Linux distributions. There are two common versions of this command so check its man page to find which one you have: ## rename from Perl (common in Debian systems -- Ubuntu, Mint,...

Output from ls has newlines but displays on a single line. Why?

When you pipe the output, ls acts differently. This fact is hidden away in the info documentation: If standard output is a terminal, the output is in columns (sorted vertically) and control characters are output as question marks; otherwise, the output is...

mv: Move file only if destination does not exist

mv -vn file1 file2. This command will do what you want. You can skip -v if you want. -v makes it verbose - mv will tell you that it moved file if it moves it(useful, since there is possibility that file will not be moved) -n moves only if file2 does not exist....

Is it possible to store and query JSON in SQLite?

SQLite 3.9 introduced a new extension (JSON1) that allows you to easily work with JSON data . Also, it introduced support for indexes on expressions, which (in my understanding) should allow you to define indexes on your JSON data as well. PostgreSQL has some...

Combining tail && journalctl

You could use: journalctl -u service-name -f -f, --follow Show only the most recent journal entries, and continuously print new entries as they are appended to the journal. Here I've added "service-name" to distinguish this answer from others; you substitute...

how can shellshock be exploited over SSH?

One example where this can be exploited is on servers with an authorized_keys forced command. When adding an entry to ~/.ssh/authorized_keys, you can prefix the line with command="foo" to force foo to be run any time that ssh public key is used. With this...

Why doesn’t the tilde (~) expand inside double quotes?

The reason, because inside double quotes, tilde ~ has no special meaning, it's treated as literal. POSIX defines Double-Quotes as: Enclosing characters in double-quotes ( "" ) shall preserve the literal value of all characters within the double-quotes, with the...

What is GNU Info for?

GNU Info was designed to offer documentation that was comprehensive, hyperlinked, and possible to output to multiple formats. Man pages were available, and they were great at providing printed output. However, they were designed such that each man page had a...

Set systemd service to execute after fstab mount

a CIFS network location is mounted via /etc/fstab to /mnt/ on boot-up. No, it is not. Get this right, and the rest falls into place naturally. The mount is handled by a (generated) systemd mount unit that will be named something like mnt-wibble.mount. You can...

Merge two video clips into one, placing them next to each other

To be honest, using the accepted answer resulted in a lot of dropped frames for me. However, using the hstack filter_complex produced perfectly fluid output: ffmpeg -i left.mp4 -i right.mp4 -filter_complex hstack output.mp4 ffmpeg -i input1.mp4 -i input2.mp4...

How portable are /dev/stdin, /dev/stdout and /dev/stderr?

It's been available on Linux back into its prehistory. It is not POSIX, although many actual shells (including AT&T ksh and bash) will simulate it if it's not present in the OS; note that this simulation only works at the shell level (i.e. redirection or...

How can I increase the number of inodes in an ext4 filesystem?

It seems that you have a lot more files than normal expectation. I don't know whether there is a solution to change the inode table size dynamically. I'm afraid that you need to back-up your data, and create new filesystem, and restore your data. To create new...

Why doesn’t cp have a progress bar like wget?

The tradition in unix tools is to display messages only if something goes wrong. I think this is both for design and practical reasons. The design is intended to make it obvious when something goes wrong: you get an error message, and it's not drowned in...