Skip to content

EFI NVRAM

probonopd edited this page Nov 6, 2022 · 1 revision

7c436110-ab2a-4bbb-a880-fe41995c9f82-prev-lang:kbd

macOS sets the EFI NVRAM variable 7c436110-ab2a-4bbb-a880-fe41995c9f82-prev-lang:kbd to persist the keyboard layout across different boot volumes. In the interest of interoperability, other operating sysems may want use this information for preselecting a "best guess" xkbmap layout and locale.

EFI value Nice Name Equivalent xkbmap layout xkbmap model country_LANG locale
cs:30778 Czech-QWERTY
cs:30776 Czech
et:30764 Estonian
hu:30767 Hungarian-QWERTY
hu:30763 Hungarian
lv:30765 Latvian
lt:30761 Lithuanian
pl:30788 Polish Pro
pl:30762 Polish
sk:30777 Slovak
sk:30779 Slovak-QWERTY
bg:19529 Bulgarian - Phonetic
bg:19528 Bulgarian
be:19517 Byelorussian
mk:19523 Macedonian
ru:19457 Russian - Phonetic
ru:19456 Russian
ru:19458 RussianWin
sr-Cyrl:19521 Serbian
uk:195138 Ukrainian-PC
uk:19518 Ukrainian
en:12825 Colemak
en:16302 Dvorak - Left
en:16303 Dvorak - Right
en:16300 Dvorak
en:16301 DVORAK - QWERTY CMD
ja:16384 KANA
fr:251 ABC-AZERTY
de:253 ABC-QWERTZ
en:252 ABC
en_AU:15 Australian
de_AT:92 Austrian
nl_BE:6 Belgian
pt_BR:128 Brazilian-ABNT2
pt_BR:72 Brazilian - Pro
pt_BR:71 Brazilian pt_BR
en_GB:250 British-PC
en_GB:2 British en_GB
fr_CA:80 Canadian - CSA
en_CA:29 Canadian
da:9 Danish
nl:26 Dutch
fi:17 Finnish fi
fr:60 French-PC
fr:1111 French - numerical
fr:1 French fr fr_FR
de:3 German de pc105 de_DE
en:50 Irish
it:223 Italian - Pro
it:4 Italian it it_IT
nb:12 Norwegian nb
pt_PT:10 Portuguese pt_PT
es:87 Spanish - ISO
es:8 Spanish es
sv:7 Swedish - Pro
sv:224 Swedish se
fr_CH:18 Swiss French fr_CH
de_CH:19 Swiss German de_CH
to:88 Tongan
en_US:0 U.S en_US
en_US:15000 USInternational-PC en_US
ko:-17409 2SetHangul
fa:-2902 Afghan Dari
ps:-2904 Afghan Pashto
uz-Arab:-2903 Afghan Uzbek
ta:-20000 Anjal
ar:-17940 Arabic-AZERTY
ar:-17923 Arabic-North_Africa
ar:-18000 Arabic-QWERTY
ar:-17920 Arabic
ar:-17921 Arabic PC
hy:-28161 Armenian-HM QWERTY
hy:-28164 Armenian-Western QWERTY
az-Latn:-49 Azeri
bn:-22529 Bangla-QWERTY
bn:-22528 Bangla
zh-Hant:-16899 CangjieKeyboard
chr:-26112 Cherokee-Nation
chr:-26113 Cherokee-QWERTY
hr:-68 Croatian
hr:-69 Croatian-PC
hi:-20481 Devanagari-QWERTY
hi:-20480 Devanagari
fo:-47 Faroese
fi:-17 Finnish Extended
fi:-18 FinnishSami-PC
ka:-27650 Georgian-QWERTY
el:-18944 Greek
el:-18945 Greek Polytonic
gu:-21505 Gujarati-QWERTY
gu:-21504 Gujarati
pa:-20993 Gurmukhi-QWERTY
pa:-20992 Gurmukhi
haw:-50 Hawaiian
he:-18500 Hebrew-QWERTY
he:-18432 Hebrew
he:-18433 Hebrew-PC
is:-21 Icelandic
iu:-30604 Inuktitut-Nunavut
iu:-30602 Inuktitut-Nutaaq
iu:-30600 Inuktitut-QWERTY
iu:-30603 Inuttitut Nunavik
ga:-500 Irish Extended
ms-Arab:-19000 Jawi-QWERTY
kn:-24065 Kannada-QWERTY
kn:-24064 Kannada
kk:-19501 Kazakh
km:-26114 Khmer
ckb:-17926 Kurdish-Sorani
ml:-24577 Malayalam-QWERTY
ml:-24576 Malayalam
mt:-501 Maltese
mi:-51 Maori
my:-25601 Myanmar-QWERTY
ne:-20484 Nepali
se:-1200 Northern Sami
nb:-12 Norwegian Extended
nb:-13 NorwegianSami-PC
or:-22017 Oriya-QWERTY
or:-22016 Oriya
fa:-1959 Persian-QWERTY
fa:-17960 Persian
fa:-2901 Persian-ISIRI 2901
ro:-38 Romanian-Standard
ro:-39 Romanian
se:-1201 Sami-PC
sr-Latn:-19521 Serbian-Latin
si:-25089 Sinhala-QWERTY
si:-25088 Sinhala
sl:-66 Slovenian
sv:-15 SwedishSami-PC
ta:-20001 Tamil99
te:-23553 Telugu-QWERTY
te:-23552 Telugu
th:-26626 Thai-PattaChote
th:-26624 Thai
bo:-26628 TibetanOtaniUS
bo:-26625 Tibetan-QWERTY
bo:-2398 Tibetan-Wylie
tr:-36 Turkish-QWERTY-PC
tr:-35 Turkish-QWERTY
tr:-23 Turkish-Standard
tr:-24 Turkish
en:-2 US Extended
<null>:-1 Unicode Hex Input
ur:-17925 Urdu
ug:-27000 Uyghur
vi:-31232 Vietnamese
cy:-790 Welsh
zh-Hant:-16900 Zhuyin Bopomofo

Source

The following script was used to construct the table above.

import urllib.request

def print_some_url():
    try:
        with urllib.request.urlopen('https://raw.githubusercontent.com/acidanthera/OpenCorePkg/master/Utilities/AppleKeyboardLayouts/AppleKeyboardLayouts.txt') as f:
           a_variable = f.read().decode('utf-8')
           print(a_variable)
    except urllib.error.URLError as e:
       print(e.reason)

    print("|EFI value|Nice Name|xkbmap layout|xkbmap model|")
    print("|---|---|---|---|")
    for line in a_variable.split("\n"):
        if line.startswith("["):
            parts = line.split(" ")
            number = "".join(parts[0].replace("[", "").replace("]", "")).strip()
            abbreviation = parts[1].strip()
            description = " ".join(parts[3:10]).strip()
            print("|`%s:%s`|%s||||" % (abbreviation, number, description))

# Press the green button in the gutter to run the script.
if __name__ == '__main__':
    print_some_url()
Clone this wiki locally