XKEYBOARD-CONFIG(7)
๐ซ xkeyboard-config โ XKB data description files ๐ซ
okay bestie, so this is XKEYBOARD-CONFIG(7)</p> โ Miscellaneous Information Manual energy โ and it's literally the glow-up guide for your keyboard's whole personality. Let's get into it ๐
โจ NAME โจ
xkeyboard-config</p> โ the XKB data description files. that's it, that's the name, she's iconic ๐
๐ธ DESCRIPTION ๐ธ
okay so xkeyboard-config</p> ships the description files for the X Keyboard Extension (XKB) and for libxkbcommon. no cap, that's the whole job.
and like โ usually it's the desktop environment's moment to shine โจ, because applying the configuration you asked for is typically their task. main character energy, honestly.
if you're running an X server you've got options too, bestie:
- you can use the
setxkbmap(1)tool to apply keyboard configuration at runtime ๐ฅ - or you can configure XKB settings in
xorg.conf(5)
both valid, both slay, pick your vibe ๐ซถ
๐ฆ XKB DATA FILES LOAD PATHS ๐ฆ
so xkeyboard-config provides the XKB data files, and they're installed in:
/usr/share/xkeyboard-config-2
user-specific data files may live somewhere else, but โ and this is the tea โ โ it depends on the tool whether those files actually get loaded. so don't come for me if your tool ghosts your custom path, okay? ๐ญ
for example (fr fr), the libxkbcommon library will by default load XKB data files from the user's home directory ๐ . see the libxkbcommon documentation for the details, bestie โ that's where the fine print lives ๐
๐ THE CUSTOM LAYOUT ๐
okay this part is lowkey my fave because it's giving exclusive but not really ๐
the "custom" layout is a layout that's listed as available to tools reading the data files โ but it's not actually provided by xkeyboard-config. she's on the guest list but she didn't bring the snacks, iykyk ๐
so what's the move? you, bestie, may save a layout specification in this file:
/usr/share/xkeyboard-config-2/symbols/custom
and then that layout will be available to most tools interacting with the xkeyboard-config data files. boom. your own lil layout, living her life ๐
this is primarily aimed at systems running X where additional lookup paths cannot easily be added. like, the system can't easily expand its friend group, so we're sneaking you in through the side door ๐ง
and because the "custom" layout is merely listed as available but not provided by xkeyboard-config, your layout will not be overwritten on updates ๐โจ โ yes bestie, she survives the update apocalypse. periodt. ๐
lowkey the most important glow-up here: updates won't touch your custom file, so your work is safe. cherish her. ๐
โจ MODELS โจ
Okay bestie, so this is the big one โ the MODELS list. Every single one of these names is a model you can name-drop, and each one maps to a specific hunk of keyboard plastic and the way its keys are physically laid out. Think of it as a guest list: if your keyboard isn't on it, the party doesn't know it yet. ๐
No cap, there are a LOT of them. Go get a snack. ๐
pc86โ Generic 86-key PCpc101โ Generic 101-key PCpc102โ Generic 102-key PCpc104โ Generic 104-key PCpc104altโ Generic 104-key PC with L-shaped Enter keypc105โ Generic 105-key PCa4techKB21โ A4Tech KB-21a4techKBS8โ A4Tech KBS-8a4_rfkb23โ A4Tech Wireless Desktop RFKB-23airkeyโ Acer AirKey Vacer_c300โ Acer C300acer_ferrari4kโ Acer Ferrari 4000acer_laptopโ Acer laptopscorpiusโ Advance Scorpius KIappleโ Appleapplealu_ansiโ Apple Aluminium (ANSI)applealu_isoโ Apple Aluminium (ISO)applealu_jisโ Apple Aluminium (JIS)asus_laptopโ Asus laptopazonaRF2300โ Azona RF2300 Wireless Internetbenqxโ BenQ X-Touchbenqx730โ BenQ X-Touch 730benqx800โ BenQ X-Touch 800abnt2โ Brazilian ABNT2blackberry-key2โ BlackBerry KEY2brotherโ Brother Internetbtc5090โ BTC 5090btc5113rfโ BTC 5113RF Multimediabtc5126tโ BTC 5126Tbtc6301urfโ BTC 6301URFbtc9000โ BTC 9000btc9000aโ BTC 9000Abtc9001ahโ BTC 9001AHbtc9019uโ BTC 9019Ubtc9116uโ BTC 9116U Mini Wireless Internet and Gamingcherryblueโ Cherry Blue Line CyBo@rdcherryblueaโ Cherry Blue Line CyBo@rd (alt.)cherrybunlimโ Cherry B.UNLIMITEDcherrycyboardโ Cherry CyBo@rd USB-Hubcherrycmexpertโ Cherry CyMotion Expertcymotionlinuxโ Cherry CyMotion Master Linuxcherrybluebโ Cherry CyMotion Master XPresschiconyโ Chicony Internetchicony9885โ Chicony KB-9885chicony0108โ Chicony KU-0108chicony0420โ Chicony KU-0420chromebookโ Chromebookcompalfl90โ Compal FL90armadaโ Compaq Armada laptopcompaqeak8โ Compaq Easy Accesscompaqik7โ Compaq Internet (7 keys)compaqik13โ Compaq Internet (13 keys)compaqik18โ Compaq Internet (18 keys)ipaqโ Compaq iPaqpresarioโ Compaq Presario laptopcreativedw7000โ Creative Desktop Wireless 7000dellโ Delldell101โ Dell 101-key PClatitudeโ Dell Latitude laptopinspironโ Dell Inspiron 6000/8000 laptopprecision_mโ Dell Precision M laptopdellm65โ Dell Precision M65 laptopdellsk8125โ Dell SK-8125dellsk8135โ Dell SK-8135dellusbmmโ Dell USB Multimediadexxaโ Dexxa Wireless Desktopdiamondโ Diamond 9801/9802dtk2000โ DTK2000emachinesโ eMachines m6800 laptopennyah_dkb1008โ Ennyah DKB-1008everexโ Everex STEPnotefscaa1667gโ Fujitsu-Siemens Amilo laptopgeniusโ Genius Comfy KB-16M/Multimedia KWD-910geniuscomfyโ Genius Comfy KB-12egeniuscomfy2โ Genius Comfy KB-21e-Scrollgeniuskb19eโ Genius KB-19e NBgeniuskkb2050hsโ Genius KKB-2050HSgyrationโ Gyrationhhkโ Happy Hackinghpi6โ Hewlett-Packard Internethpmini110โ Hewlett-Packard Mini 110 laptophpnx9020โ Hewlett-Packard nx9020hp5xxโ Hewlett-Packard Omnibook 500hp500faโ Hewlett-Packard Omnibook 500 FAhp6000โ Hewlett-Packard Omnibook 6000/6100hpxe3gcโ Hewlett-Packard Omnibook XE3 GChpxe3gfโ Hewlett-Packard Omnibook XE3 GFhpxt1000โ Hewlett-Packard Omnibook XT1000hpdv5โ Hewlett-Packard Pavilion dv5hpzt11xxโ Hewlett-Packard Pavilion ZT1100hp250xโ Hewlett-Packard SK-2501 Multimediahoneywell_euroboardโ Honeywell Euroboardrapidaccessโ IBM Rapid Accessrapidaccess2โ IBM Rapid Access IIibm_spacesaverโ IBM Space Saverthinkpadโ IBM ThinkPad 560Z/600/600E/A22Ethinkpad60โ IBM ThinkPad R60/T60/R61/T61thinkpadz60โ IBM ThinkPad Z60m/Z60t/Z61m/Z61tjp106โ Japanese 106-keyflexproโ Keytronic FlexProkinesisโ Kinesiskr106โ Korean 106-keylogitech_baseโ Logitechlogiaccessโ Logitech Accesslogicdโ Logitech Cordless Desktoplogicdaโ Logitech Cordless Desktop (alt.)logiex110โ Logitech Cordless Desktop EX110logicd_itโ Logitech Cordless Desktop iTouchlogiclx300โ Logitech Cordless Desktop LX-300logicd_navโ Logitech Cordless Desktop Navigatorlogicd_optโ Logitech Cordless Desktop Opticallogidinovoโ Logitech diNovologidinovoedgeโ Logitech diNovo Edgelogitech_g15โ Logitech G15 extra keys via G15daemonlogiikโ Logitech Internetlogii350โ Logitech Internet 350logimelโ Logitech Internet 350logicinkโ Logitech Internet Navigatoritouchโ Logitech iTouchlogiitcโ Logitech iTouch Cordless Y-RB6logiinkseโ Logitech iTouch Internet Navigator SElogiinkseusbโ Logitech iTouch Internet Navigator SE USBlogiultraxโ Logitech Ultra-Xlogiultraxcโ Logitech Ultra-X Cordless Media Desktopmx1998โ Memorex MX1998mx2500โ Memorex MX2500 EZ-Accessmx2750โ Memorex MX2750microsoftccurve2kโ Microsoft Comfort Curve 2000microsoftinetโ Microsoft Internetmicrosoftproseโ Microsoft Internet Pro (Swedish)microsoftโ Microsoft Naturalmicrosofteliteโ Microsoft Natural Elitemicrosoft4000โ Microsoft Natural Ergonomic 4000microsoft7000โ Microsoft Natural Wireless Ergonomic 7000microsoftproโ Microsoft Natural Pro/Internet Promicrosoftprousbโ Microsoft Natural Pro USB/Internet Pro
A few little moments I need to point at, because they're sending me:
pc104altis the generic 104-key but with an L-shaped Enter key โ that's its whole personality and honestly, valid. ๐- The Apple aluminium trio is a whole set:
applealu_ansi,applealu_iso,applealu_jisโ three flavours of the same vibe, pick your regional icon. ๐ cherryblue,cherrybluea, andcherrycyboardall rock the CyBo@rd spelling with the @ โ do not "correct" it when you type it, the@is load-bearing. ๐logii350andlogimelboth list Logitech Internet 350 as their description. Not a typo on my end, both are right there. ๐ซถlogitech_g15is described as Logitech G15 extra keys via G15daemon โ that daemon mention is literally part of the description, so it stays. โจhhk= Happy Hacking, which is just the most main-character name in the entire list and I don't make the rules. ๐ง
That's the full model roster, every last one, in the same order as ever. ๐
microsoftprooemโ Microsoft Natural Pro OEM ๐ธmicrosoftofficeโ Microsoft Office Keyboardmicrosoftsurfaceโ Microsoft Surfacemicrosoftmultโ Microsoft Wireless Multimedia 1.0Ask1300โ NEC SK-1300sk2500โ NEC SK-2500sk6200โ NEC SK-6200sk7100โ NEC SK-7100omnikey101โ Northgate OmniKey 101olpcโ OLPC โจoretecโ Ortek Multimedia/Internet MCK-800pc98โ PC-98ppkbโ PinePhone Keyboard ๐propellerโ Propeller Voyager KTEZ-1000qtronixโ QTronix Scorpius 98N+samsung4500โ Samsung SDM 4500Psamsung4510โ Samsung SDM 4510Psanwaskbkg3โ Sanwa Supply SKB-KG3silvercrestโ Silvercrest Multimedia Wirelessapex300โ SteelSeries Apex 300 (Apex RAW) ๐ฅsun_type6_jpโ Sun Type 6 (Japanese)sun_type6_jp_usbโ Sun Type 6 USB (Japanese)sun_type6_unix_usbโ Sun Type 6 USB (Unix)sun_type6_usbโ Sun Type 6/7 USBsun_type6_euro_usbโ Sun Type 6/7 USB (European)sun_type7_usbโ Sun Type 7 USBsun_type7_euro_usbโ Sun Type 7 USB (European)sun_type7_jp_usbโ Sun Type 7 USB (Japanese)/Japanese 106-keysun_type7_unix_usbโ Sun Type 7 USB (Unix)sp_inetโ Super Power Multimediasvenโ SVEN Ergonomic 2500sven303โ SVEN Slim 303symplonโ Symplon PaceBook tablet ๐targa_v811โ Targa Visionary 811toshiba_s3000โ Toshiba Satellite S3000teck227โ Truly Ergonomic 227teck229โ Truly Ergonomic 229trustdaโ Trust Direct Accesstrust_slimlineโ Trust Slimlinetrustโ Trust Wireless Classictm2020โ TypeMatrix EZ-Reach 2020tm2030PS2โ TypeMatrix EZ-Reach 2030 PS2tm2030USBโ TypeMatrix EZ-Reach 2030 USBtm2030USB-102โ TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)tm2030USB-106โ TypeMatrix EZ-Reach 2030 USB (106:JP mode)unitekkb1925โ Unitek KB-1925vsonku306โ ViewSonic KU-306 Internetwinbookโ Winbook Model XP5yahooโ Yahoo! Internet ๐ฆ
And that's a wrap on the model roster โ like, that's the whole alphabet soup of keyboards the rules file knows about, bestie. If your board's name is in there, you're literally set. ๐
๐ LAYOUTS
okay bestie, this is the big one โ the master list of every layout and variant you can drop into ${layout}(${variant}) form. Each bullet is a base layout code, and the lil' indented ones under it are the variants (that's the (whatever) bit in the parens). Descriptions are right there next to each one so you know exactly what vibe you're typing in. No cap, it's a long list โ go get a snack. ๐
alโ Albanianal(plisi)โ Albanian (Plisi)al(veqilharxhi)โ Albanian (Veqilharxhi)
etโ Amharicamโ Armenianam(phonetic)โ Armenian (phonetic)am(phonetic-alt)โ Armenian (alt. phonetic)am(eastern)โ Armenian (eastern)am(eastern-alt)โ Armenian (alt. eastern)am(western)โ Armenian (western)
araโ Arabicara(digits)โ Arabic (Eastern Arabic numerals)ara(azerty)โ Arabic (AZERTY)ara(azerty_digits)โ Arabic (AZERTY, Eastern Arabic numerals)ara(buckwalter)โ Arabic (Buckwalter)ara(mac)โ Arabic (Macintosh)ara(mac-phonetic)โ Arabic (Macintosh, phonetic)ara(olpc)โ Arabic (OLPC)
egโ Arabic (Egypt)iqโ Arabic (Iraq)iq(ku)โ Kurdish (Iraq, Latin Q)iq(ku_alt)โ Kurdish (Iraq, Latin Alt-Q)iq(ku_f)โ Kurdish (Iraq, F)iq(ku_ara)โ Kurdish (Iraq, Arabic-Latin)
maโ Arabic (Morocco)ma(tifinagh)โ Berber (Morocco, Tifinagh)ma(tifinagh-alt)โ Berber (Morocco, Tifinagh alt.)ma(tifinagh-alt-phonetic)โ Berber (Morocco, Tifinagh phonetic, alt.)ma(tifinagh-extended)โ Berber (Morocco, Tifinagh extended)ma(tifinagh-phonetic)โ Berber (Morocco, Tifinagh phonetic)ma(tifinagh-extended-phonetic)โ Berber (Morocco, Tifinagh extended phonetic)ma(french)โ French (Morocco)ma(rif)โ Tarifit
syโ Arabic (Syria)sy(syc)โ Syriacsy(syc_phonetic)โ Syriac (phonetic)sy(ku)โ Kurdish (Syria, Latin Q)sy(ku_alt)โ Kurdish (Syria, Latin Alt-Q)sy(ku_f)โ Kurdish (Syria, F)
azโ Azerbaijaniaz(cyrillic)โ Azerbaijani (Cyrillic)az(standard)โ Azerbaijani (standard)
mlโ Bambaraml(fr-oss)โ French (Mali, alt.)ml(us-mac)โ English (Mali, US, Macintosh)ml(us-intl)โ English (Mali, US, intl.)
bdโ Banglabd(probhat)โ Bangla (Probhat)
byโ Belarusianby(legacy)โ Belarusian (legacy)by(latin)โ Belarusian (Latin)by(intl)โ Belarusian (intl.)by(phonetic)โ Belarusian (phonetic)by(typographic)โ Belarusian (typo.)by(ru)โ Russian (Belarus)
beโ Belgianbe(oss)โ Belgian (alt.)be(oss_latin9)โ Belgian (Latin-9 only, alt.)be(iso-alternate)โ Belgian (ISO, alt.)be(nodeadkeys)โ Belgian (no dead keys)be(wang)โ Belgian (Wang 724 AZERTY)
dzโ Berber (Algeria, Latin)dz(ber)โ Berber (Algeria, Tifinagh)dz(azerty-deadkeys)โ Kabyle (AZERTY, with dead keys)dz(qwerty-gb-deadkeys)โ Kabyle (QWERTY, UK, with dead keys)dz(qwerty-us-deadkeys)โ Kabyle (QWERTY, US, with dead keys)dz(ar)โ Arabic (Algeria)
baโ Bosnianba(alternatequotes)โ Bosnian (with guillemets)ba(unicode)โ Bosnian (with Bosnian digraphs)ba(unicodeus)โ Bosnian (US, with Bosnian digraphs)
and yes the list keeps going, we're only like halfway down the alphabet ๐ stay with me bestie ๐ซถ
ba(us)โ Bosnian (US) ๐ฆ
okay next up is the Braille corner of the keyboard world and it is so cool that these even exist ๐ five whole variants, one for each hand, and yes there's an "inverted thumb" option because of course there is:
braiโ Braillebrai(left_hand)โ Braille (one-handed, left)brai(left_hand_invert)โ Braille (one-handed, left, inverted thumb)brai(right_hand)โ Braille (one-handed, right)brai(right_hand_invert)โ Braille (one-handed, right, inverted thumb)
then we slide into Bulgarian ๐ง๐ฌ and she has opinions about phonetics:
bgโ Bulgarianbg(phonetic)โ Bulgarian (traditional phonetic)bg(bas_phonetic)โ Bulgarian (new phonetic)bg(bekl)โ Bulgarian (enhanced)
Burmese time, and this group is genuinely stacked โ scripts on scripts on scripts ๐ญโจ:
mmโ Burmesemm(zawgyi)โ Burmese (Zawgyi)mm(mara)โ Maramm(mnw)โ Monmm(mnw-a1)โ Mon (A1)mm(shn)โ Shanmm(zgt)โ Shan (Zawgyi)
Chinese, and bestie this one is a journey โ pinyin, Mongolian in like six different flavours, Tibetan, Uyghur, all chillin' under cn ๐:
cnโ Chinesecn(altgr-pinyin)โ Hanyu Pinyin Letters (with AltGr dead keys)cn(mon_trad)โ Mongolian (Bichig)cn(mon_trad_todo)โ Mongolian (Todo)cn(mon_trad_xibe)โ Mongolian (Xibe)cn(mon_trad_manchu)โ Mongolian (Manchu)cn(mon_trad_galik)โ Mongolian (Galik)cn(mon_todo_galik)โ Mongolian (Todo Galik)cn(mon_manchu_galik)โ Mongolian (Manchu Galik)cn(tib)โ Tibetancn(tib_asciinum)โ Tibetan (with ASCII numerals)cn(ug)โ Uyghur
Croatian next โ guillemets, digraphs, the US crossover, the whole aesthetic ๐ :
hrโ Croatianhr(alternatequotes)โ Croatian (with guillemets)hr(unicode)โ Croatian (with Croatian digraphs)hr(unicodeus)โ Croatian (US, with Croatian digraphs)hr(us)โ Croatian (US)
Czech, and ngl this list goes hard โ QWERTY, QWERTZ, Windows, Mac, UCW, Dvorak, and a Russian phonetic one just vibing at the bottom ๐ฅ:
czโ Czechcz(bksl)โ Czech (extra backslash)cz(qwerty)โ Czech (QWERTY)cz(qwerty_bksl)โ Czech (QWERTY, extra backslash)cz(winkeys)โ Czech (QWERTZ, Windows)cz(winkeys-qwerty)โ Czech (QWERTY, Windows)cz(qwerty-mac)โ Czech (QWERTY, Macintosh)cz(ucw)โ Czech (UCW, only accented letters)cz(dvorak-ucw)โ Czech (US, Dvorak, UCW support)cz(rus)โ Russian (Czechia, phonetic)
Danish ๐ฉ๐ฐ โ she's got dead keys, no dead keys, Windows, Mac, Mac without dead keys, and a Dvorak moment:
dkโ Danishdk(nodeadkeys)โ Danish (no dead keys)dk(winkeys)โ Danish (Windows)dk(mac)โ Danish (Macintosh)dk(mac_nodeadkeys)โ Danish (Macintosh, no dead keys)dk(dvorak)โ Danish (Dvorak)
Dari, and the OLPC variants are giving "one laptop per child" main character energy ๐:
afโ Dariaf(ps)โ Pashtoaf(uz)โ Uzbek (Afghanistan)af(fa-olpc)โ Dari (Afghanistan, OLPC)af(ps-olpc)โ Pashto (Afghanistan, OLPC)af(uz-olpc)โ Uzbek (Afghanistan, OLPC)
mvโ Dhivehi ๐ธ
Dutch, short and sweet, love that for her:
nlโ Dutchnl(us)โ Dutch (US)nl(mac)โ Dutch (Macintosh)nl(std)โ Dutch (standard)
btโ Dzongkha โญ
auโ English (Australia) ๐ฆ
Cameroon, and she brought the whole multilingual friend group with her ๐ซถ:
cmโ English (Cameroon)cm(french)โ French (Cameroon)cm(qwerty)โ Cameroon Multilingual (QWERTY, intl.)cm(azerty)โ Cameroon (AZERTY, intl.)cm(dvorak)โ Cameroon (Dvorak, intl.)cm(mmuock)โ Mmuock
Ghana, and this group is a whole language family reunion โ Akan, Avatime, Ewe, Fula, Ga, Hausa, all under gh:
ghโ English (Ghana)gh(generic)โ English (Ghana, multilingual)gh(gillbt)โ English (Ghana, GILLBT)gh(akan)โ Akangh(avn)โ Avatimegh(ewe)โ Ewegh(fula)โ Fulagh(ga)โ Gagh(hausa)โ Hausa (Ghana)nzโ English (New Zealand)nz(mao)โ Maori
okay next up, Nigeria and South Africa, keep scrolling bestie we're getting through the whole alphabet ๐
ngโ English (Nigeria)ng(hausa)โ Hausa (Nigeria)ng(igbo)โ Igbong(yoruba)โ Yoruba
zaโ English (South Africa)
gbโ English (UK)gb(extd)โ English (UK, extended, Windows)gb(intl)โ English (UK, intl., with dead keys)gb(dvorak)โ English (UK, Dvorak)gb(dvorakukp)โ English (UK, Dvorak, with UK punctuation)gb(mac)โ English (UK, Macintosh)gb(mac_intl)โ English (UK, Macintosh, intl.)gb(colemak)โ English (UK, Colemak)gb(colemak_dh)โ English (UK, Colemak-DH)gb(gla)โ Scottish Gaelicgb(pl)โ Polish (British keyboard)
and then there's the us one, which is literally the main character of this whole list โ look at all these variants, she ate and left no crumbs ๐
usโ English (US)us(euro)โ English (US, euro on 5)us(intl)โ English (US, intl., with dead keys)us(alt-intl)โ English (US, alt. intl.)us(altgr-intl)โ English (intl., with AltGr dead keys)us(mac)โ English (Macintosh, ABC, ANSI)us(mac-iso)โ English (Macintosh, ABC, ISO)us(colemak)โ English (Colemak)us(colemak_dh)โ English (Colemak-DH)us(colemak_dh_wide)โ English (Colemak-DH Wide)us(colemak_dh_ortho)โ English (Colemak-DH Ortholinear)us(colemak_dh_iso)โ English (Colemak-DH ISO)us(colemak_dh_wide_iso)โ English (Colemak-DH Wide ISO)us(dvorak)โ English (Dvorak)us(dvorak-intl)โ English (Dvorak, intl., with dead keys)us(dvorak-alt-intl)โ English (Dvorak, alt. intl.)us(dvorak-l)โ English (Dvorak, one-handed, left)us(dvorak-r)โ English (Dvorak, one-handed, right)us(dvorak-classic)โ English (classic Dvorak)us(dvp)โ English (programmer Dvorak)us(dvorak-mac)โ English (Dvorak, Macintosh, ANSI)us(dvorak-mac-iso)โ English (Dvorak, Macintosh, ISO)us(norman)โ English (Norman)us(symbolic)โ English (US, Symbolic)us(workman)โ English (Workman)us(workman-intl)โ English (Workman, intl., with dead keys)us(olpc2)โ English (the divide/multiply toggle the layout)us(chr)โ Cherokeeus(haw)โ Hawaiianus(rus)โ Russian (US, phonetic)us(hbs)โ Serbo-Croatian (US)
epoโ Esperantoepo(legacy)โ Esperanto (legacy)
eeโ Estonianee(nodeadkeys)โ Estonian (no dead keys)ee(dvorak)โ Estonian (Dvorak)ee(us)โ Estonian (US)
foโ Faroesefo(nodeadkeys)โ Faroese (no dead keys)
phโ Filipinoph(qwerty-bay)โ Filipino (QWERTY, Baybayin)ph(capewell-dvorak)โ Filipino (Capewell-Dvorak, Latin)ph(capewell-dvorak-bay)โ Filipino (Capewell-Dvorak, Baybayin)ph(capewell-qwerf2k6)โ Filipino (Capewell-QWERF 2006, Latin)ph(capewell-qwerf2k6-bay)โ Filipino (Capewell-QWERF 2006, Baybayin)ph(colemak)โ Filipino (Colemak, Latin)ph(colemak-bay)โ Filipino (Colemak, Baybayin)ph(dvorak)โ Filipino (Dvorak, Latin)ph(dvorak-bay)โ Filipino (Dvorak, Baybayin)
fiโ Finnishfi(winkeys)โ Finnish (Windows)fi(classic)โ Finnish (classic)fi(nodeadkeys)โ Finnish (classic, no dead keys)fi(mac)โ Finnish (Macintosh)fi(smi)โ Northern Saami (Finland)
frโ Frenchfr(nodeadkeys)โ French (no dead keys)fr(oss)โ French (alt.)fr(oss_nodeadkeys)โ French (alt., no dead keys)fr(oss_latin9)โ French (alt., Latin-9 only)fr(latin9)โ French (legacy, alt.)fr(latin9_nodeadkeys)โ French (legacy, alt., no dead keys)fr(azerty)โ French (AZERTY)fr(afnor)โ French (AZERTY, AFNOR)fr(bepo)โ French (BEPO)fr(bepo_latin9)โ French (BEPO, Latin-9 only)fr(bepo_afnor)โ French (BEPO, AFNOR)fr(dvorak)โ French (Dvorak)
โฆand the fr fam wraps up like this, bestie:
fr(ergol)โ French (ErgoโL) โ the ergo girlies are obsessed ๐fr(ergol_iso)โ French (ErgoโL, ISO variant)fr(mac)โ French (Macintosh)fr(us)โ French (US)fr(bre)โ Breton (France)fr(oci)โ Occitanfr(geo)โ Georgian (France, AZERTY Tskapo)
๐จ๐ฆ the ca girlies (yes there are several)
caโ French (Canada)ca(fr-dvorak)โ French (Canada, Dvorak)ca(fr-legacy)โ French (Canada, legacy)ca(multix)โ Canadian (CSA)ca(eng)โ English (Canada) ๐ca(ike)โ Inuktitut
๐ the little single-variant solo acts
cdโ French (Democratic Republic of the Congo)tgโ French (Togo)
no variants, just vibes, and honestly? respect ๐ซถ
๐ฌ๐ช ge, aka Georgian station
geโ Georgiange(ergonomic)โ Georgian (ergonomic)ge(mess)โ Georgian (MESS)ge(os)โ Ossetian (Georgia)ge(ru)โ Russian (Georgia)
๐ฉ๐ช de โ the German mothership, and she is huge
okay so de has main character energy and a million children, let's get through them all:
deโ Germande(deadacute)โ German (dead acute)de(deadgraveacute)โ German (dead grave acute)de(deadtilde)โ German (dead tilde)de(nodeadkeys)โ German (no dead keys) โ for when the dead keys keep jumpscaring you ๐ญde(e1)โ German (E1)de(e2)โ German (E2)de(T3)โ German (T3)de(us)โ German (US)de(dvorak)โ German (Dvorak)de(mac)โ German (Macintosh)de(mac_nodeadkeys)โ German (Macintosh, no dead keys)de(neo)โ German (Neo 2)de(qwerty)โ German (QWERTY)de(dsb)โ Lower Sorbiande(dsb_qwertz)โ Lower Sorbian (QWERTZ)de(ro)โ Romanian (Germany)de(ro_nodeadkeys)โ Romanian (Germany, no dead keys)de(ru)โ Russian (Germany, phonetic)de(tr)โ Turkish (Germany)
๐ฆ๐น at โ Austria said "we're also German, actually"
atโ German (Austria)at(nodeadkeys)โ German (Austria, no dead keys)at(mac)โ German (Austria, Macintosh)
๐จ๐ญ ch โ Switzerland, being multilingual and iconic as always
chโ German (Switzerland)ch(de_nodeadkeys)โ German (Switzerland, no dead keys)ch(de_mac)โ German (Switzerland, Macintosh)ch(legacy)โ German (Switzerland, legacy)ch(fr)โ French (Switzerland)ch(fr_nodeadkeys)โ French (Switzerland, no dead keys)ch(fr_mac)โ French (Switzerland, Macintosh)
๐ฌ๐ท gr โ Greek
grโ Greekgr(simple)โ Greek (simple)gr(nodeadkeys)โ Greek (no dead keys)gr(polytonic)โ Greek (polytonic)
๐ฎ๐ฑ il โ Hebrew
ilโ Hebrewil(si2)โ Hebrew (SI-1452-2)il(lyx)โ Hebrew (lyx)il(phonetic)โ Hebrew (phonetic)il(biblical)โ Hebrew (Biblical, Tiro)
๐ญ๐บ hu โ Hungarian, and she brought a spreadsheet of variants
bestie, the Hungarian list is lowkey iconic โ it's basically every combination of QWERTZ/QWERTY ร 101/102-key ร comma/dot ร dead/nodead. And yes, every single one is in here. No skipping. ๐ค
the basics first:
huโ Hungarianhu(standard)โ Hungarian (standard)hu(nodeadkeys)โ Hungarian (no dead keys)hu(qwerty)โ Hungarian (QWERTY)
then the 101-key squad:
hu(101_qwertz_comma_dead)โ Hungarian (QWERTZ, 101-key, comma, dead keys)hu(101_qwertz_comma_nodead)โ Hungarian (QWERTZ, 101-key, comma, no dead keys)hu(101_qwertz_dot_dead)โ Hungarian (QWERTZ, 101-key, dot, dead keys)hu(101_qwertz_dot_nodead)โ Hungarian (QWERTZ, 101-key, dot, no dead keys)hu(101_qwerty_comma_dead)โ Hungarian (QWERTY, 101-key, comma, dead keys)hu(101_qwerty_comma_nodead)โ Hungarian (QWERTY, 101-key, comma, no dead keys)hu(101_qwerty_dot_dead)โ Hungarian (QWERTY, 101-key, dot, dead keys)hu(101_qwerty_dot_nodead)โ Hungarian (QWERTY, 101-key, dot, no dead keys)
and the 102-key squad, same energy:
hu(102_qwertz_comma_dead)โ Hungarian (QWERTZ, 102-key, comma, dead keys)hu(102_qwertz_comma_nodead)โ Hungarian (QWERTZ, 102-key, comma, no dead keys)hu(102_qwertz_dot_dead)โ Hungarian (QWERTZ, 102-key, dot, dead keys)hu(102_qwertz_dot_nodead)โ Hungarian (QWERTZ, 102-key, dot, no dead keys)hu(102_qwerty_comma_dead)โ Hungarian (QWERTY, 102-key, comma, dead keys)hu(102_qwerty_comma_nodead)โ Hungarian (QWERTY, 102-key, comma, no dead keys)hu(102_qwerty_dot_dead)โ Hungarian (QWERTY, 102-key, dot, dead keys)hu(102_qwerty_dot_nodead)โ Hungarian (QWERTY, 102-key, dot, no dead keys)
ok and remember the notation bestie:hu(102_qwerty_dot_nodead)is just the layouthuplus the variant102_qwerty_dot_nodeadโ that's the whole pattern, every time. ๐
๐ฎ๐ธ is โ Icelandic (and the is key code confusion is not my problem today)
isโ Icelandicis(mac_legacy)โ Icelandic (Macintosh, legacy)is(mac)โ Icelandic (Macintosh)is(dvorak)โ Icelandic (Dvorak)
still in the India block btw โ this thing is long and we're not even done:
inโ Indianin(asm-kagapa)โ Assamese (KaGaPa, phonetic)in(ben)โ Bangla (India)in(ben_probhat)โ Bangla (India, Probhat)in(ben_baishakhi)โ Bangla (India, Baishakhi)in(ben_bornona)โ Bangla (India, Bornona)in(ben-kagapa)โ Bangla (India, KaGaPa, phonetic)in(ben_gitanjali)โ Bangla (India, Gitanjali)in(ben_inscript)โ Bangla (India, Baishakhi InScript)in(eng)โ English (India, with rupee)in(guj)โ Gujaratiin(guj-kagapa)โ Gujarati (KaGaPa, phonetic)in(bolnagri)โ Hindi (Bolnagri)in(hin-wx)โ Hindi (Wx)in(hin-kagapa)โ Hindi (KaGaPa, phonetic)in(kan)โ Kannadain(kan-kagapa)โ Kannada (KaGaPa, phonetic)in(mal)โ Malayalamin(mal_lalitha)โ Malayalam (Lalitha)in(mal_enhanced)โ Malayalam (enhanced InScript, with rupee)in(mal_poorna)โ Malayalam (Poorna, extended InScript)in(mara)โ Marain(mni)โ Manipuri (Meitei)in(mar-kagapa)โ Marathi (KaGaPa, phonetic)in(marathi)โ Marathi (enhanced InScript)in(ori)โ Oriyain(ori-bolnagri)โ Oriya (Bolnagri)in(ori-wx)โ Oriya (Wx)in(guru)โ Punjabi (Gurmukhi)in(jhelum)โ Punjabi (Gurmukhi Jhelum)in(san-kagapa)โ Sanskrit (KaGaPa, phonetic)in(sat)โ Santali (Ol Chiki)in(tamilnet)โ Tamil (TamilNet '99)in(tamilnet_tamilnumbers)โ Tamil (TamilNet '99 with Tamil numerals)in(tamilnet_TAB)โ Tamil (TamilNet '99, TAB encoding)in(tamilnet_TSCII)โ Tamil (TamilNet '99, TSCII encoding)in(tam)โ Tamil (InScript, with Arabic numerals)in(tam_tamilnumbers)โ Tamil (InScript, with Tamil numerals)in(tel)โ Teluguin(tel-kagapa)โ Telugu (KaGaPa, phonetic)in(tel-sarala)โ Telugu (Sarala)in(urd-phonetic)โ Urdu (phonetic)in(urd-phonetic3)โ Urdu (alt. phonetic)in(urd-winkeys)โ Urdu (Windows)in(iipa)โ Indic IPA
that in(iipa) one at the bottom is serving Indic IPA realness, slay.
๐ฎ๐ฉ Indonesian block, we move
idโ Indonesian (Latin)id(melayu-phonetic)โ Indonesian (Arab Melayu, phonetic)id(melayu-phoneticx)โ Indonesian (Arab Melayu, extended phonetic)id(pegon-phonetic)โ Indonesian (Arab Pegon, phonetic)id(javanese)โ Javanese
๐ฎ๐ช Irish, my beloved
ieโ Irishie(UnicodeExpert)โ Irish (UnicodeExpert)ie(CloGaelach)โ CloGaelachie(ogam)โ Oghamie(ogam_is434)โ Ogham (IS434)
bestie the Ogham layouts are literally ancient-script energy, we love a historical moment ๐
๐ฎ๐น Italian
itโ Italianit(nodeadkeys)โ Italian (no dead keys)it(winkeys)โ Italian (Windows)it(mac)โ Italian (Macintosh)it(us)โ Italian (US)it(ibm)โ Italian (IBM 142)it(fur)โ Friulian (Italy)it(scn)โ Sicilianit(geo)โ Georgian (Italy)
not it(geo) being Georgian but in Italy ๐ญ the crossover episode nobody asked for but we're here for it.
๐ฏ๐ต Japanese
jpโ Japanesejp(kana)โ Japanese (Kana)jp(OADG109A)โ Japanese (OADG 109A)jp(mac)โ Japanese (Macintosh)jp(dvorak)โ Japanese (Dvorak)
๐ฐ๐ฟ Kazakh
kzโ Kazakhkz(kazrus)โ Kazakh (with Russian)kz(ext)โ Kazakh (extended)kz(latin)โ Kazakh (Latin)kz(ruskaz)โ Russian (Kazakhstan, with Kazakh)
heads up that kz(ruskaz) is filed under Russian, not Kazakh โ it's the Russian layout for Kazakhstan with Kazakh support. read the label, bestie ๐ซถ
๐ฐ๐ญ Khmer
khโ Khmer (Cambodia)
one (1) layout. iconic minimalist behaviour, we respect it. โจ
๐ฐ๐ท Korean
krโ Koreankr(kr104)โ Korean (101/104-key compatible)
๐ฐ๐ฌ Kyrgyz
kgโ Kyrgyzkg(phonetic)โ Kyrgyz (phonetic)
๐ฑ๐ฆ Lao
laโ Laola(stea)โ Lao (STEA)
๐ฑ๐ป Latvian โ okay this one has range
lvโ Latvianlv(apostrophe)โ Latvian (apostrophe)lv(tilde)โ Latvian (tilde)lv(fkey)โ Latvian (F)lv(modern)โ Latvian (Modern Latin)lv(modern-cyr)โ Latvian (Modern Cyrillic)lv(ergonomic)โ Latvian (ergonomic, ลชGJRMV)lv(adapted)โ Latvian (adapted)
note the ลชGJRMV in lv(ergonomic) โ that's macron-U, G, J, R, M, V, and yes it's written exactly like that, don't come for me. Latvian really said "we have options" and honestly? correct. ๐ธ
๐ฑ๐น lt โ Lithuanian
ltโ Lithuanian, the plain one, no variant needed ๐lt(std)โ Lithuanian (standard)lt(us)โ Lithuanian (US)lt(ibm)โ Lithuanian (IBM)lt(lekp)โ Lithuanian (LEKP)lt(lekpa)โ Lithuanian (LEKPa)lt(ratise)โ Lithuanian (Ratise)lt(sgs)โ Samogitian
๐ฒ๐ฐ mk โ Macedonian
mkโ Macedonianmk(nodeadkeys)โ Macedonian (no dead keys) โ for when dead keys are giving you grief ๐ญ
๐ฒ๐พ my โ Malay (Jawi, Arabic Keyboard)
myโ Malay (Jawi, Arabic Keyboard)my(phonetic)โ Malay (Jawi, phonetic)
๐ฒ๐น mt โ Maltese
mtโ Maltesemt(us)โ Maltese (US)mt(alt-us)โ Maltese (US, with AltGr overrides)mt(alt-gb)โ Maltese (UK, with AltGr overrides)
๐ฒ๐ฉ md โ Moldavian
mdโ Moldavianmd(gag)โ Gagauz (Moldova)
๐ฒ๐ณ mn โ Mongolian
mnโ Mongolian, that's it, one and done, no variants โจ
๐ฒ๐ช me โ Montenegrin
meโ Montenegrinme(cyrillic)โ Montenegrin (Cyrillic)me(cyrillicyz)โ Montenegrin (Cyrillic, ZE and ZHE swapped)me(cyrillicalternatequotes)โ Montenegrin (Cyrillic, with guillemets)me(latinunicode)โ Montenegrin (Latin, Unicode)me(latinyz)โ Montenegrin (Latin, QWERTY)me(latinunicodeyz)โ Montenegrin (Latin, Unicode, QWERTY)me(latinalternatequotes)โ Montenegrin (Latin, with guillemets)
๐ณ๐ต np โ Nepali
npโ Nepali, solo entry, she's lowkey iconic on her own ๐ซถ
gn โ N'Ko (AZERTY)
gnโ N'Ko (AZERTY)
๐ณ๐ด no โ Norwegian
okay this one is stacked, bestie, buckle up ๐
noโ Norwegianno(nodeadkeys)โ Norwegian (no dead keys)no(winkeys)โ Norwegian (Windows)no(mac)โ Norwegian (Macintosh)no(mac_nodeadkeys)โ Norwegian (Macintosh, no dead keys)no(colemak)โ Norwegian (Colemak)no(colemak_dh)โ Norwegian (Colemak-DH)no(colemak_dh_wide)โ Norwegian (Colemak-DH Wide)no(dvorak)โ Norwegian (Dvorak)no(smi)โ Northern Saami (Norway)no(smi_nodeadkeys)โ Northern Saami (Norway, no dead keys)
๐ฎ๐ท ir โ Persian
irโ Persianir(pes_keypad)โ Persian (with Persian keypad) โ numeric keypad said "me too" ๐ฅir(winkeys)โ Persian (Windows)ir(azb)โ Azerbaijani (Iran)ir(ku)โ Kurdish (Iran, Latin Q)ir(ku_alt)โ Kurdish (Iran, Latin Alt-Q)ir(ku_f)โ Kurdish (Iran, F)ir(ku_ara)โ Kurdish (Iran, Arabic-Latin)
๐ต๐ฑ pl โ Polish
plโ Polishpl(legacy)โ Polish (legacy)pl(qwertz)โ Polish (QWERTZ)pl(dvorak)โ Polish (Dvorak)pl(dvorak_quotes)โ Polish (Dvorak, with Polish quotes on quotemark key)pl(dvorak_altquotes)โ Polish (Dvorak, with Polish quotes on key 1)pl(dvp)โ Polish (programmer Dvorak)pl(csb)โ Kashubianpl(szl)โ Silesianpl(ru_phonetic_dvorak)โ Russian (Poland, phonetic Dvorak)
๐ต๐น pt โ Portuguese
ptโ Portuguesept(nodeadkeys)โ Portuguese (no dead keys)pt(mac)โ Portuguese (Macintosh)pt(mac_nodeadkeys)โ Portuguese (Macintosh, no dead keys)pt(nativo)โ Portuguese (Nativo)pt(nativo-us)โ Portuguese (Nativo for US keyboards)pt(nativo-epo)โ Esperanto (Portugal, Nativo) โ plot twist: Esperanto showed up ๐ช๐ธโจ
๐ง๐ท br โ Portuguese (Brazil)
brโ Portuguese (Brazil)br(nodeadkeys)โ Portuguese (Brazil, no dead keys)br(dvorak)โ Portuguese (Brazil, Dvorak)br(nativo)โ Portuguese (Brazil, Nativo)br(nativo-us)โ Portuguese (Brazil, Nativo for US keyboards)br(thinkpad)โ Portuguese (Brazil, IBM/Lenovo ThinkPad)br(thinkpad_nodeadkeys)โ Portuguese (Brazil, IBM/Lenovo ThinkPad, no dead keys)br(nativo-epo)โ Esperanto (Brazil, Nativo)br(rus)โ Russian (Brazil, phonetic)
๐ท๐ด ro โ Romanian
roโ Romanian
okay that's where this part cuts off, but ro has more variants coming, hold the thought ๐
Still in the layout list, bestie โ we're deep in the alphabet now and there's so much here. Keep scrolling, it's all right here ๐
ro(std)โ Romanian (standard)ro(winkeys)โ Romanian (Windows)
Okay so Russia came to serve โ this is the biggest cluster on the whole list, no cap ๐ท๐บโจ
ruโ Russianru(phonetic)โ Russian (phonetic)ru(phonetic_winkeys)โ Russian (phonetic, Windows)ru(phonetic_YAZHERTY)โ Russian (phonetic, YAZHERTY)ru(phonetic_azerty)โ Russian (phonetic, AZERTY)ru(phonetic_dvorak)โ Russian (phonetic, Dvorak)ru(typewriter)โ Russian (typewriter)ru(ruchey_ru)โ Russian (engineering, RU)ru(ruchey_en)โ Russian (engineering, EN)ru(legacy)โ Russian (legacy)ru(typewriter-legacy)โ Russian (typewriter, legacy)ru(dos)โ Russian (DOS)ru(mac)โ Russian (Macintosh)ru(ab)โ Abkhazian (Russia)ru(bak)โ Bashkirianru(cv)โ Chuvashru(cv_latin)โ Chuvash (Latin)ru(xal)โ Kalmykru(kom)โ Komiru(chm)โ Mariru(os_legacy)โ Ossetian (legacy)ru(os_winkeys)โ Ossetian (Windows)ru(srp)โ Serbian (Russia)ru(tt)โ Tatarru(udm)โ Udmurtru(sah)โ Yakut
Notice how ru is doing double duty as a home base for a whole bunch of languages, not just Russian. That's the vibe โ one code, many friends ๐ซถ
rsโ Serbianrs(alternatequotes)โ Serbian (Cyrillic, with guillemets)rs(yz)โ Serbian (Cyrillic, ZE and ZHE swapped)rs(latin)โ Serbian (Latin)rs(latinalternatequotes)โ Serbian (Latin, with guillemets)rs(latinunicode)โ Serbian (Latin, Unicode)rs(latinyz)โ Serbian (Latin, QWERTY)rs(latinunicodeyz)โ Serbian (Latin, Unicode, QWERTY)rs(rue)โ Pannonian Rusyn
lkโ Sinhala (phonetic)lk(us)โ Sinhala (US)lk(tam_unicode)โ Tamil (Sri Lanka, TamilNet '99)lk(tam_TAB)โ Tamil (Sri Lanka, TamilNet '99, TAB encoding)
Slovak said "we have options" and honestly? Respect ๐
skโ Slovaksk(bksl)โ Slovak (extra backslash)sk(qwerty)โ Slovak (QWERTY)sk(qwerty_bksl)โ Slovak (QWERTY, extra backslash)
siโ Sloveniansi(alternatequotes)โ Slovenian (with guillemets)si(us)โ Slovenian (US)
esโ Spanishes(nodeadkeys)โ Spanish (no dead keys)es(deadtilde)โ Spanish (dead tilde)es(winkeys)โ Spanish (Windows)es(dvorak)โ Spanish (Dvorak)es(ast)โ Asturian (Spain, with bottom-dot H and L)es(cat)โ Catalan (Spain, with middle-dot L)
Latin American Spanish gets its own whole block, we love an independent queen ๐
latamโ Spanish (Latin American)latam(nodeadkeys)โ Spanish (Latin American, no dead keys)latam(deadtilde)โ Spanish (Latin American, dead tilde)latam(dvorak)โ Spanish (Latin American, Dvorak)latam(colemak)โ Spanish (Latin American, Colemak)
keโ Swahili (Kenya)ke(kik)โ Kikuyu
tzโ Swahili (Tanzania)
Sweden really said "one of everything, please" ๐ธ
seโ Swedishse(nodeadkeys)โ Swedish (no dead keys)se(dvorak)โ Swedish (Dvorak)se(us_dvorak)โ Swedish (Dvorak, intl.)se(svdvorak)โ Swedish (Svdvorak)se(colemak)โ Swedish (Colemak)se(mac)โ Swedish (Macintosh)se(us)โ Swedish (US)se(swl)โ Swedish Sign Languagese(smi)โ Northern Saami (Sweden)se(rus)โ Russian (Sweden, phonetic)
twโ Taiwanesetw(indigenous)โ Taiwanese (indigenous)tw(saisiyat)โ Saisiyat (Taiwan)
tjโ Tajiktj(legacy)โ Tajik (legacy)
thโ Thaith(tis)โ Thai (TIS-820.2538)
And we're still going, obviously โ the layout list is a journey, not a destination. Next chunk coming right up ๐
th(pat)โ Thai, but the Pattachote flavorth(mnc)โ Thai, Manoonchai edition
bwโ Tswana, periodt
tmโ Turkmentm(alt)โ Turkmen, the Alt-Q arrangement
trโ Turkish, the classictr(f)โ Turkish (F)tr(e)โ Turkish (E)tr(alt)โ Turkish (Alt-Q)tr(intl)โ Turkish, international-style, with dead keys โจtr(ku)โ Kurdish (Turkey, Latin Q)tr(ku_f)โ Kurdish (Turkey, F)tr(ku_alt)โ Kurdish (Turkey, Latin Alt-Q)
uaโ Ukrainian, standard issue ๐๐ua(phonetic)โ Ukrainian (phonetic)ua(typewriter)โ Ukrainian (typewriter), very vintage-girl of itua(winkeys)โ Ukrainian (Windows)ua(winkeysenhanced)โ Ukrainian (Windows Enhanced)ua(macOS)โ Ukrainian (macOS)ua(legacy)โ Ukrainian (legacy)ua(homophonic)โ Ukrainian (homophonic)ua(crh)โ Crimean Tatar (Turkish Q)ua(crh_f)โ Crimean Tatar (Turkish F)ua(crh_alt)โ Crimean Tatar (Turkish Alt-Q)
pkโ Urdu (Pakistan)pk(urd-crulp)โ Urdu (Pakistan, CRULP)pk(urd-nla)โ Urdu (Pakistan, NLA)pk(pak_urdu_phonetic)โ Urdu (Pak Urdu Phonetic)pk(ara)โ Arabic (Pakistan)pk(snd)โ Sindhi (M.B. Sindhi)pk(brahui)โ Brahui (Pakistan)
uzโ Uzbekuz(latin)โ Uzbek (Latin)
vnโ Vietnamesevn(us)โ Vietnamese (US)vn(fr)โ Vietnamese (France) ๐ฅ
snโ Wolof
customโ the user-defined custom Layout, aka you get to be the main character and build your own ๐
fr fr bestie, thatcustomone is the one you pick when the built-in layouts just aren't giving what you need โ and yeah, it's literally calledcustom, no cap ๐
โจ OPTIONS โจ
Okay bestie, this is the part where things get spicy โ the options list ๐
. Every one of these goes in as a value for XkbOptions (or the options field of your layout if you're doing the custom-layout thing), and they're how you tell your keyboard to do the little tricks you actually want. Not a summary of any of it, no skipping, we're going all the way through ๐ซถ.
๐ Switching to another layout
Your main character move: one key (or combo) and boom, you're in a whole different layout. Group switching, but make it fashion โจ.
grp:switchโ Right Alt, but only while it's pressed ๐grp:lswitchโ Left Alt, while pressedgrp:lwin_switchโ Left Win, while pressedgrp:rwin_switchโ Right Win, while pressedgrp:win_switchโ Any Win key, while pressedgrp:menu_switchโ Menu, while pressed โ and Shift+Menu for the actual Menugrp:caps_switchโ Caps Lock, while pressed โ with Alt+Caps Lock giving you the original Caps Lock action back ๐grp:rctrl_switchโ Right Ctrl, while pressedgrp:toggleโ Right Alt (toggle, bestie โ not hold)grp:lalt_toggleโ Left Altgrp:caps_toggleโ Caps Lockgrp:shift_caps_toggleโ Shift+Caps Lockgrp:caps_selectโ Caps Lock goes to the first layout; Shift+Caps Lock goes to the second layoutgrp:win_menu_selectโ Left Win โ first layout; Right Win/Menu โ second layoutgrp:ctrl_selectโ Left Ctrl โ first layout; Right Ctrl โ second layoutgrp:alt_caps_toggleโ Alt+Caps Lockgrp:shifts_toggleโ Both Shifts together, iconicgrp:alts_toggleโ Both Alts togethergrp:alt_altgr_toggleโ Both Alts together, and AltGr all by itself picks the third levelgrp:ctrls_toggleโ Both Ctrls togethergrp:ctrl_shift_toggleโ Ctrl+Shiftgrp:lctrl_lshift_toggleโ Left Ctrl+Left Shiftgrp:rctrl_rshift_toggleโ Right Ctrl+Right Shiftgrp:ctrl_shift_toggle_bidirโ Left Ctrl+Left Shift goes to the previous layout, Right Ctrl + Right Shift goes to the next one ๐ฅgrp:ctrl_alt_toggleโ Alt+Ctrlgrp:lctrl_lalt_toggleโ Left Alt+Left Ctrlgrp:rctrl_ralt_toggleโ Right Alt+Right Ctrlgrp:ctrl_alt_toggle_bidirโ Left Ctrl+Left Alt โ previous layout, Right Ctrl + Right Alt โ next layoutgrp:alt_shift_toggleโ Alt+Shiftgrp:lalt_lshift_toggleโ Left Alt+Left Shiftgrp:ralt_rshift_toggleโ Right Alt+Right Shiftgrp:alt_shift_toggle_bidirโ Left Alt+Left Shift โ previous layout, Right Alt + Right Shift โ next layoutgrp:menu_toggleโ Menugrp:lwin_toggleโ Left Wingrp:alt_space_toggleโ Alt+Spacegrp:win_space_toggleโ Win+Spacegrp:ctrl_space_toggleโ Ctrl+Spacegrp:rwin_toggleโ Right Wingrp:lshift_toggleโ Left Shiftgrp:rshift_toggleโ Right Shiftgrp:lctrl_toggleโ Left Ctrlgrp:rctrl_toggleโ Right Ctrlgrp:sclk_toggleโ Scroll Lockgrp:lctrl_lwin_rctrl_menuโ Ctrl+Left Win โ first layout; Ctrl+Menu โ second layoutgrp:lctrl_lwin_toggleโ Left Ctrl+Left Win
๐ธ Key to choose the 2nd level
Just the one legend here, and honestly? She ate ๐
lv2:lsgt_switchโ The"< >"key
๐ฆ Key to choose the 3rd level
This is the AltGr situation, basically. Third level, third vibe, third slay ๐
lv3:switchโ Right Ctrllv3:menu_switchโ Menulv3:win_switchโ Any Winlv3:lwin_switchโ Left Winlv3:rwin_switchโ Right Winlv3:alt_switchโ Any Altlv3:lalt_switchโ Left Altlv3:ralt_switchโ Right Altlv3:ralt_switch_multikeyโ Right Alt, and Shift+Right Alt acts as Composelv3:ralt_altโ Right Alt never chooses the 3rd level, periodtlv3:enter_switchโ Enter on the keypadlv3:caps_switchโ Caps Locklv3:caps_switch_capslock_with_ctrlโ Caps Lock, and Ctrl+Caps Lock gives you the original Caps Lock actionlv3:bksl_switchโ Backslashlv3:lsgt_switchโ The"< >"keylv3:caps_switch_latchโ Caps Lock; acts as a onetime lock when it's pressed together with another 3rd-level chooser ๐lv3:bksl_switch_latchโ Backslash; acts as a onetime lock when pressed together with another 3rd level chooserlv3:lsgt_switch_latchโ The"< >"key; acts as a onetime lock when pressed together with another 3rd level chooser
๐ Ctrl position
Where does Ctrl live in your heart? These options move it around, swap it, promote it, the whole glow-up ๐
ctrl:nocapsโ Caps Lock as Ctrlctrl:lctrl_metaโ Left Ctrl as Metactrl:swapcapsโ Swap Ctrl and Caps Lockctrl:grouptoggle_capscontrolโ Caps Lock as Ctrl, and Left Control switches to another layoutctrl:hyper_capscontrolโ Caps Lock as Ctrl, Ctrl as Hyperctrl:ac_ctrlโ To the left of"A"ctrl:aa_ctrlโ At the bottom leftctrl:rctrl_raltโ Right Ctrl as Right Altctrl:ralt_rctrlโ Right Alt as Right Controlctrl:menu_rctrlโ Menu as Right Ctrlctrl:swap_lalt_lctlโ Swap Left Alt with Left Ctrlctrl:swap_ralt_rctlโ Swap Right Alt with Right Ctrlctrl:swap_lwin_lctlโ Swap Left Win with Left Ctrlctrl:swap_rwin_rctlโ Swap Right Win with Right Ctrlctrl:swap_lalt_lctl_lwinโ Left Alt as Ctrl, Left Ctrl as Win, Left Win as Left Alt โ the full three-way trade, obsessed ๐
๐ก Use keyboard LED to show alternative layout
okay so your keyboard has lil lights on it and you can make them do double duty โ press the LED to peep which layout group you're on โจ
grp_led:numโ Num Lockgrp_led:capsโ Caps Lockgrp_led:scrollโ Scroll Lock
๐ Use keyboard LED to indicate modifiers
same vibe, but the LED is telling you a modifier is currently held down ๐ซถ
mod_led:composeโ Compose
๐ข Layout of numeric keypad
the numpad is having a whole identity crisis and honestly? valid. pick your fave ๐
keypad:legacyโ Legacykeypad:ossโ Unicode arrows and math operatorskeypad:futureโ Unicode arrows and math operators on default levelkeypad:legacy_wangโ Legacy Wang 724keypad:oss_wangโ Wang 724 keypad with Unicode arrows and math operatorskeypad:future_wangโ Wang 724 keypad with Unicode arrows and math operators on default levelkeypad:hexโ Hexadecimalkeypad:atmโ Phone and ATM style
๐๏ธ Numeric keypad Delete behavior
this one is about that one key on the numpad โ you know the one โ and what it actually spits out ๐ญ
kpdl:dotโ Legacy key with dotkpdl:commaโ Legacy key with commakpdl:dotossโ Four-level key with dotkpdl:dotoss_latin9โ Four-level key with dot, Latin-9 onlykpdl:commaossโ Four-level key with commakpdl:momayyezossโ Four-level key with momayyezkpdl:kpossโ Four-level key with abstract separatorskpdl:semiโ Semicolon on third level
๐ Caps Lock behavior
the main character of this entire page, no cap. Caps Lock can be literally anything you want โ a Shift, an Esc, a Super, a whole menu button. go wild bestie ๐ฅ
caps:internalโ Caps Lock uses internal capitalization; Shift "pauses" Caps Lockcaps:internal_nocancelโ Caps Lock uses internal capitalization; Shift does not affect Caps Lockcaps:shiftโ Caps Lock acts as Shift with locking; Shift "pauses" Caps Lockcaps:shift_nocancelโ Caps Lock acts as Shift with locking; Shift does not affect Caps Lockcaps:capslockโ Caps Lock toggles normal capitalization of alphabetic characterscaps:shiftlockโ Caps Lock toggles Shift Lock (affects all keys)caps:swapescapeโ Swap Esc and Caps Lockcaps:escapeโ Make Caps Lock an additional Esccaps:escape_shifted_capslockโ Make Caps Lock an additional Esc, but Shift + Caps Lock is the regular Caps Lockcaps:backspaceโ Make Caps Lock an additional Backspacecaps:returnโ Make Caps Lock an additional Return keycaps:superโ Make Caps Lock an additional Supercaps:hyperโ Make Caps Lock an additional Hypercaps:menuโ Make Caps Lock an additional Menu keycaps:numlockโ Make Caps Lock an additional Num Lockcaps:ctrl_shifted_capslockโ Make Caps Lock an additional Ctrl and Shift + Caps Lock the regular Caps Lockcaps:shift_shifted_capslockโ Make Caps Lock an additional Shift and Shift + Caps Lock the regular Caps Lockcaps:ctrl_modifierโ Make Caps Lock act as an additional Ctrl modifier, but keep identifying as Caps Lockcaps:digits_rowโ Caps Lock gives digits on the digits row (Azerty layouts)caps:digits_row_independent_lockโ Shift + Caps locks the digits on the digits row, Caps Lock alone behaves as usual (Azerty layouts)caps:noneโ Caps Lock is disabled
๐ธ Num Lock behavior
and finally, Num Lock gets to choose its own destiny too ๐ฆ
numpad:numlock_onlyโ NumLock enables digits; Shift does not interact with NumLocknumpad:pcโ Shift and NumLock each enable digits; both together cancel (as in Classic XKB)numpad:microsoftโ NumLock enables digits; Shift cancels NumLock but never enables digits (as in Windows)numpad:macโ Numeric keypad is independent of the NumLock state (as in macOS)numpad:shift3โ NumLock enables digits; NumLock+Shift enables auxiliary symbols when available, digits otherwise
โจ Alt and Win behavior
okay so this is the group of options for everyone who's ever looked at their keyboard and gone "why is Alt like that" ๐ญ these remap what Alt / Win / Meta / Menu / Super actually do, bestie:
altwin:menuโ gives the Menu key its standard behavior backaltwin:menu_winโ Menu is mapped to Winaltwin:meta_altโ Alt and Meta both live on Altaltwin:alt_winโ Alt is mapped to Win, plus the usual Alt stays putaltwin:ctrl_winโ Ctrl is mapped to Win, plus the usual Ctrl stays putaltwin:ctrl_rwinโ Ctrl is mapped to Right Win, plus the usual Ctrl stays putaltwin:ctrl_alt_winโ Ctrl is mapped to Alt, and Alt is mapped to Winaltwin:meta_winโ Meta is mapped to Winaltwin:left_meta_winโ Meta is mapped to Left Winaltwin:hyper_winโ Hyper is mapped to Winaltwin:alt_super_winโ Alt is mapped to Right Win, and Super is mapped to Menualtwin:swap_lalt_lwinโ Left Alt and Left Win swap places ๐altwin:swap_ralt_rwinโ Right Alt and Right Win swap places ๐altwin:swap_alt_winโ Alt swaps with Winaltwin:prtsc_rwinโ Win is mapped to PrtSc, and the usual Win stays put
โจ Position of Compose key
where do you want your Compose key to live, babe? pick a spot ๐
the -altgr versions mean it's on the 3rd level of that key:
compose:raltโ Right Altcompose:lwinโ Left Wincompose:lwin-altgrโ 3rd level of Left Wincompose:rwinโ Right Wincompose:rwin-altgrโ 3rd level of Right Wincompose:menuโ Menucompose:menu-altgrโ 3rd level of Menucompose:lctrlโ Left Ctrlcompose:lctrl-altgrโ 3rd level of Left Ctrlcompose:rctrlโ Right Ctrlcompose:rctrl-altgrโ 3rd level of Right Ctrlcompose:capsโ Caps Lockcompose:caps-altgrโ 3rd level of Caps Lockcompose:102โ the< >keycompose:102-altgrโ 3rd level of the< >keycompose:pausโ Pausecompose:insโ Insertcompose:prscโ PrtSccompose:sclkโ Scroll Lock
โจ Compatibility options
the nostalgia corner ๐ซถ these are the "make it work like the old days / like some other system" options โ and bestie, read the fine print, because a bunch of them conflict with other modifiers and that's not a vibe:
hyper:mod2โ maps Hyper to Mod2 (conflict with NumLock ๐ฌ)hyper:mod3โ maps Hyper to Mod3 (conflict with LevelFive ๐ฌ)hyper:mod4โ maps Hyper to Mod4 (conflict with Super ๐ฌ)hyper:mod5โ maps Hyper to Mod5 (conflict with LevelThree ๐ฌ)meta:mod2โ maps Meta to Mod2 (conflict with NumLock ๐ฌ)meta:mod3โ maps Meta to Mod3 (conflict with LevelFive ๐ฌ)meta:mod4โ maps Meta to Mod4 (conflict with Super ๐ฌ)meta:mod5โ maps Meta to Mod5 (conflict with LevelThree ๐ฌ)scrolllock:mod3โ maps Scroll Lock to Mod3srvrkeys:noneโ special keys (Ctrl+Alt+<key>) get handled in a serverapple:alupckeysโ Apple Aluminium keyboards emulate Pause, PrtSc and Scroll Lockapple:jp_oadg109aโ Japanese Apple keyboards emulate the OADG109A backslashapple:jp_pc106โ Japanese Apple keyboards emulate the PC106 backslashshift:breaks_capsโ Shift cancels Caps Lockmisc:typoโ enables extra typographic characters โจmisc:aplโ enables APL overlay charactersshift:both_capslockโ both Shifts together enable Caps Lockshift:both_capslock_cancelโ both Shifts together enable Caps Lock, and one Shift key disables itshift:both_shiftlockโ both Shifts together enable Shift Lockkeypad:pointerkeysโ Shift + Num Lock enables PointerKeysgrab:break_actionsโ allows breaking grabs with keyboard actions
โ ๏ธ okay real talk for a sec: grab:break_actions comes with a security risk warning attached. The manpage says it, i'm saying it, it's giving "do not casually ship this" ๐
grab:debugโ allows grab and window tree logging
โจ Currency signs
getting that bag ๐ธ literally โ here's where to stash your Euro and Rupee:
eurosign:eโ Euro on E, third leveleurosign:Eโ Euro on E, fourth leveleurosign:2โ Euro on 2eurosign:4โ Euro on 4eurosign:5โ Euro on 5rupeesign:4โ Rupee on 4
โจ Key to choose the 5th level
fifth level?? yes bestie, keyboards go deeper than you think ๐ these pick which key unlocks level 5, and the _lock ones also act as a one-time lock if you press them together with another 5th-level chooser:
lv5:caps_switchโ Caps Lock chooses the 5th levellv5:lsgt_switchโ the< >key chooses the 5th levellv5:ralt_switchโ Right Alt chooses the 5th levellv5:menu_switchโ Menu chooses the 5th levellv5:rctrl_switchโ Right Ctrl chooses the 5th levellv5:lsgt_switch_lockโ the< >key chooses the 5th level and acts as a one-time lock if pressed with another 5th level chooserlv5:ralt_switch_lockโ Right Alt chooses the 5th level and acts as a one-time lock if pressed with another 5th level chooserlv5:lwin_switch_lockโ Left Win chooses the 5th level and acts as a one-time lock if pressed with another 5th level chooserlv5:rwin_switch_lockโ Right Win chooses the 5th level and acts as a one-time lock if pressed with another 5th level chooser
โจ Non-breaking space input
okay so this one is all about the humble space bar and its โจfancyโจ cousins โ non-breaking space, thin non-breaking space, zero-width non-joiner, zero-width joiner. pick your flavor at whatever level you want, bestie:
nbsp:noneโ the usual space at any levelnbsp:level2โ non-breaking space at the 2nd levelnbsp:level3โ non-breaking space at the 3rd levelnbsp:level3nโ non-breaking space at the 3rd level, thin non-breaking space at the 4th levelnbsp:level4โ non-breaking space at the 4th levelnbsp:level4nโ non-breaking space at the 4th level, thin non-breaking space at the 6th levelnbsp:level4nlโ non-breaking space at the 4th level, thin non-breaking space at the 6th level (via Ctrl+Shift)nbsp:zwnj2โ zero-width non-joiner at the 2nd levelnbsp:zwnj2zwj3โ zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd levelnbsp:zwnj2zwj3nb4โ zero-width non-joiner at the 2nd level, zero-width joiner at the 3rd level, non-breaking space at the 4th levelnbsp:zwnj2nb3โ zero-width non-joiner at the 2nd level, non-breaking space at the 3rd levelnbsp:zwnj2nb3zwj4โ zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, zero-width joiner at the 4th levelnbsp:zwnj2nb3nnb4โ zero-width non-joiner at the 2nd level, non-breaking space at the 3rd level, thin non-breaking space at the 4th levelnbsp:zwnj3zwj4โ zero-width non-joiner at the 3rd level, zero-width joiner at the 4th level
that's a lot of invisible characters, i know ๐ญ but like. some languages literally need them. respect it ๐
๐ธ Japanese keyboard options
japan:kana_lockโ the Kana Lock key is lockingjapan:nicola_f_bsโ NICOLA-F style Backspacejapan:hztg_escapeโ make Zenkaku Hankaku an additional Esc
๐ Korean Hangul/Hanja keys
korean:ralt_hangulโ make right Alt a Hangul keykorean:rctrl_hangulโ make right Ctrl a Hangul keykorean:ralt_hanjaโ make right Alt a Hanja keykorean:rctrl_hanjaโ make right Ctrl a Hanja key
๐ฆ Esperanto letters with superscripts
okay this is so niche and i'm obsessed โ it puts those Esperanto letters with superscripts at the corresponding key depending on which layout you're running:
esperanto:qwertyโ at the corresponding key in a QWERTY layoutesperanto:dvorakโ at the corresponding key in a Dvorak layoutesperanto:colemakโ at the corresponding key in a Colemak layout
๐ Old Solaris keycodes compatibility
solaris:sun_compatโ Sun key compatibility
๐ Key sequence to kill the X server
terminate:ctrl_alt_bkspโ Ctrl+Alt+Backspace
bestie, lowkey be careful with this one โ this is the "oops i nuked my whole X session" combo. historic. iconic. dangerous. ๐ซถ
โญ Function keys
fkeys:basic_13-24โ use F13-F24 as usual function keys
๐ Miscellaneous options
custom:typesโ use user-defined custom XKB types
๐ง FILES
here's where all the goods live, one per bullet, no cap:
/usr/share/xkeyboard-config-2/compat/usr/share/xkeyboard-config-2/compiled/usr/share/xkeyboard-config-2/geometry/usr/share/xkeyboard-config-2/keycodes/usr/share/xkeyboard-config-2/keymap/usr/share/xkeyboard-config-2/rules/usr/share/xkeyboard-config-2/semantics/usr/share/xkeyboard-config-2/symbols/usr/share/xkeyboard-config-2/types
๐ SEE ALSO
setxkbmap(1)โ the actual tool that makes all of this happen, go read it next fr fr
and that's the whole page, bestie, we made it to the end ๐ go forth and have the most correct keyboard in the group chat ๐
ciao for now โ this was X Version 11, xkeyboard-config 2.49, page XKEYBOARD-CONFIG(7) โจ slay.
๐ฆ where this page comes from
- arch rolling: xkeyboard-config 2.49-1 ยท LicenseRef-xkeyboard-config
- ๐ girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms