<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/perl -w

package KeyboardNames;

%models = (
    'A4Tech KB-21' =&gt; 'a4techKB21',
    'A4Tech KBS-8' =&gt; 'a4techKBS8',
    'A4Tech Wireless Desktop RFKB-23' =&gt; 'a4_rfkb23',
    'Acer AirKey V' =&gt; 'airkey',
    'Acer C300' =&gt; 'acer_c300',
    'Acer Ferrari 4000' =&gt; 'acer_ferrari4k',
    'Acer Laptop' =&gt; 'acer_laptop',
    'Advance Scorpius KI' =&gt; 'scorpius',
    'Amiga' =&gt; 'amiga',
    'Apple' =&gt; 'apple',
    'Apple Aluminium Keyboard (ANSI)' =&gt; 'applealu_ansi',
    'Apple Aluminium Keyboard (ISO)' =&gt; 'applealu_iso',
    'Apple Aluminium Keyboard (JIS)' =&gt; 'applealu_jis',
    'Apple Laptop' =&gt; 'apple_laptop',
    'Asus Laptop' =&gt; 'asus_laptop',
    'Atari TT' =&gt; 'ataritt',
    'Azona RF2300 wireless Internet Keyboard' =&gt; 'azonaRF2300',
    'BTC 5090' =&gt; 'btc5090',
    'BTC 5113RF Multimedia' =&gt; 'btc5113rf',
    'BTC 5126T' =&gt; 'btc5126t',
    'BTC 6301URF' =&gt; 'btc6301urf',
    'BTC 9000' =&gt; 'btc9000',
    'BTC 9000A' =&gt; 'btc9000a',
    'BTC 9001AH' =&gt; 'btc9001ah',
    'BTC 9019U' =&gt; 'btc9019u',
    'BTC 9116U Mini Wireless Internet and Gaming' =&gt; 'btc9116u',
    'BenQ X-Touch' =&gt; 'benqx',
    'BenQ X-Touch 730' =&gt; 'benqx730',
    'BenQ X-Touch 800' =&gt; 'benqx800',
    'Brother Internet Keyboard' =&gt; 'brother',
    'Cherry B.UNLIMITED' =&gt; 'cherrybunlim',
    'Cherry Blue Line CyBo@rd' =&gt; 'cherryblue',
    'Cherry Blue Line CyBo@rd (alternate option)' =&gt; 'cherrybluea',
    'Cherry CyBo@rd USB-Hub' =&gt; 'cherrycyboard',
    'Cherry CyMotion Expert' =&gt; 'cherrycmexpert',
    'Cherry CyMotion Master Linux' =&gt; 'cymotionlinux',
    'Cherry CyMotion Master XPress' =&gt; 'cherryblueb',
    'Chicony Internet Keyboard' =&gt; 'chicony',
    'Chicony KB-9885' =&gt; 'chicony9885',
    'Chicony KU-0108' =&gt; 'chicony0108',
    'Chicony KU-0420' =&gt; 'chicony0420',
    'Classmate PC' =&gt; 'classmate',
    'Compaq Easy Access Keyboard' =&gt; 'compaqeak8',
    'Compaq Internet Keyboard (13 keys)' =&gt; 'compaqik13',
    'Compaq Internet Keyboard (18 keys)' =&gt; 'compaqik18',
    'Compaq Internet Keyboard (7 keys)' =&gt; 'compaqik7',
    'Compaq iPaq Keyboard' =&gt; 'ipaq',
    'Creative Desktop Wireless 7000' =&gt; 'creativedw7000',
    'DTK2000' =&gt; 'dtk2000',
    'Dell' =&gt; 'dell',
    'Dell 101-key PC' =&gt; 'dell101',
    'Dell Laptop/notebook Inspiron 6xxx/8xxx' =&gt; 'inspiron',
    'Dell Laptop/notebook Precision M series' =&gt; 'precision_m',
    'Dell Latitude series laptop' =&gt; 'latitude',
    'Dell Precision M65' =&gt; 'dellm65',
    'Dell SK-8125' =&gt; 'dellsk8125',
    'Dell SK-8135' =&gt; 'dellsk8135',
    'Dell USB Multimedia Keyboard' =&gt; 'dellusbmm',
    'Dexxa Wireless Desktop Keyboard' =&gt; 'dexxa',
    'Diamond 9801 / 9802 series' =&gt; 'diamond',
    'Do not configure keyboard; keep kernel keymap' =&gt; 'SKIP',
    'Ennyah DKB-1008' =&gt; 'ennyah_dkb1008',
    'Everex STEPnote' =&gt; 'everex',
    'FL90' =&gt; 'compalfl90',
    'Fujitsu-Siemens Computers AMILO laptop' =&gt; 'fscaa1667g',
    'Generic 101-key PC' =&gt; 'pc101',
    'Generic 102-key (Intl) PC' =&gt; 'pc102',
    'Generic 104-key PC' =&gt; 'pc104',
    'Generic 105-key (Intl) PC' =&gt; 'pc105',
    'Genius Comfy KB-12e' =&gt; 'geniuscomfy',
    'Genius Comfy KB-16M / Genius MM Keyboard KWD-910' =&gt; 'genius',
    'Genius Comfy KB-21e-Scroll' =&gt; 'geniuscomfy2',
    'Genius KB-19e NB' =&gt; 'geniuskb19e',
    'Genius KKB-2050HS' =&gt; 'geniuskkb2050hs',
    'Gyration' =&gt; 'gyration',
    'HTC Dream' =&gt; 'htcdream',
    'Happy Hacking Keyboard' =&gt; 'hhk',
    'Happy Hacking Keyboard for Mac' =&gt; 'macintosh_hhk',
    'Hewlett-Packard Internet Keyboard' =&gt; 'hpi6',
    'Hewlett-Packard Mini 110 Notebook' =&gt; 'hpmini110',
    'Hewlett-Packard Omnibook 500 FA' =&gt; 'hp500fa',
    'Hewlett-Packard Omnibook 5xx' =&gt; 'hp5xx',
    'Hewlett-Packard Omnibook 6000/6100' =&gt; 'hp6000',
    'Hewlett-Packard Omnibook XE3 GC' =&gt; 'hpxe3gc',
    'Hewlett-Packard Omnibook XE3 GF' =&gt; 'hpxe3gf',
    'Hewlett-Packard Omnibook XT1000' =&gt; 'hpxt1000',
    'Hewlett-Packard Pavilion ZT11xx' =&gt; 'hpzt11xx',
    'Hewlett-Packard Pavilion dv5' =&gt; 'hpdv5',
    'Hewlett-Packard SK-250x Multimedia Keyboard' =&gt; 'hp250x',
    'Hewlett-Packard nx9020' =&gt; 'hpnx9020',
    'Honeywell Euroboard' =&gt; 'honeywell_euroboard',
    'Htc Dream phone' =&gt; 'htcdream',
    'IBM Rapid Access' =&gt; 'rapidaccess',
    'IBM Rapid Access II' =&gt; 'rapidaccess2',
    'IBM Space Saver' =&gt; 'ibm_spacesaver',
    'IBM ThinkPad 560Z/600/600E/A22E' =&gt; 'thinkpad',
    'IBM ThinkPad R60/T60/R61/T61' =&gt; 'thinkpad60',
    'IBM ThinkPad Z60m/Z60t/Z61m/Z61t' =&gt; 'thinkpadz60',
    'Intelligent Keyboard K04' =&gt; 'intelligent_keyboard_k04',
    'Keytronic FlexPro' =&gt; 'flexpro',
    'Kinesis' =&gt; 'kinesis',
    'Laptop/notebook Compaq (eg. Armada) Laptop Keyboard' =&gt; 'armada',
    'Laptop/notebook Compaq (eg. Presario) Internet Keyboard' =&gt; 'presario',
    'Laptop/notebook eMachines m68xx' =&gt; 'emachines',
    'Logitech Access Keyboard' =&gt; 'logiaccess',
    'Logitech Cordless Desktop' =&gt; 'logicd',
    'Logitech Cordless Desktop (alternate option)' =&gt; 'logicda',
    'Logitech Cordless Desktop EX110' =&gt; 'logiex110',
    'Logitech Cordless Desktop LX-300' =&gt; 'logiclx300',
    'Logitech Cordless Desktop Navigator' =&gt; 'logicdn',
    'Logitech Cordless Desktop Optical' =&gt; 'logicd_opt',
    'Logitech Cordless Desktop Pro (alternate option 2)' =&gt; 'logicdpa2',
    'Logitech Cordless Desktop iTouch' =&gt; 'logicd_it',
    'Logitech Cordless Freedom/Desktop Navigator' =&gt; 'logicfn',
    'Logitech G15 extra keys via G15daemon' =&gt; 'logitech_g15',
    'Logitech Generic Keyboard' =&gt; 'logitech_base',
    'Logitech Internet 350 Keyboard' =&gt; 'logii350',
    'Logitech Internet Keyboard' =&gt; 'logiik',
    'Logitech Internet Navigator Keyboard' =&gt; 'logicink',
    'Logitech Media Elite Keyboard' =&gt; 'logimel',
    'Logitech Ultra-X Cordless Media Desktop Keyboard' =&gt; 'logiultraxc',
    'Logitech Ultra-X Keyboard' =&gt; 'logiultrax',
    'Logitech diNovo Edge Keyboard' =&gt; 'logidinovoedge',
    'Logitech diNovo Keyboard' =&gt; 'logidinovo',
    'Logitech iTouch' =&gt; 'itouch',
    'Logitech iTouch Cordless Keyboard (model Y-RB6)' =&gt; 'logiitc',
    'Logitech iTouch Internet Navigator Keyboard SE' =&gt; 'logiinkse',
    'Logitech iTouch Internet Navigator Keyboard SE (USB)' =&gt; 'logiinkseusb',
    'MacBook/MacBook Pro' =&gt; 'macbook78',
    'MacBook/MacBook Pro (Intl)' =&gt; 'macbook79',
    'Macintosh' =&gt; 'macintosh',
    'Macintosh Old' =&gt; 'macintosh_old',
    'Memorex MX1998' =&gt; 'mx1998',
    'Memorex MX2500 EZ-Access Keyboard' =&gt; 'mx2500',
    'Memorex MX2750' =&gt; 'mx2750',
    'Microsoft Comfort Curve Keyboard 2000' =&gt; 'microsoftccurve2k',
    'Microsoft Internet Keyboard' =&gt; 'microsoftinet',
    'Microsoft Internet Keyboard Pro, Swedish' =&gt; 'microsoftprose',
    'Microsoft Natural' =&gt; 'microsoft',
    'Microsoft Natural Keyboard Elite' =&gt; 'microsoftelite',
    'Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro' =&gt; 'microsoftpro',
    'Microsoft Natural Keyboard Pro OEM' =&gt; 'microsoftprooem',
    'Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro' =&gt; 'microsoftprousb',
    'Microsoft Natural Wireless Ergonomic Keyboard 4000' =&gt; 'microsoft4000',
    'Microsoft Natural Wireless Ergonomic Keyboard 7000' =&gt; 'microsoft7000',
    'Microsoft Office Keyboard' =&gt; 'microsoftoffice',
    'Microsoft Wireless Multimedia Keyboard 1.0A' =&gt; 'microsoftmult',
    'Northgate OmniKey 101' =&gt; 'omnikey101',
    'OLPC' =&gt; 'olpc',
    'Ortek MCK-800 MM/Internet keyboard' =&gt; 'oretec',
    'PC-98xx Series' =&gt; 'pc98',
    'Propeller Voyager (KTEZ-1000)' =&gt; 'propeller',
    'QTronix Scorpius 98N+' =&gt; 'qtronix',
    'SILVERCREST Multimedia Wireless Keyboard' =&gt; 'silvercrest',
    'SK-1300' =&gt; 'sk1300',
    'SK-2500' =&gt; 'sk2500',
    'SK-6200' =&gt; 'sk6200',
    'SK-7100' =&gt; 'sk7100',
    'SVEN Ergonomic 2500' =&gt; 'sven',
    'SVEN Slim 303' =&gt; 'sven303',
    'Samsung SDM 4500P' =&gt; 'samsung4500',
    'Samsung SDM 4510P' =&gt; 'samsung4510',
    'Sanwa Supply SKB-KG3' =&gt; 'sanwaskbkg3',
    'Sun Type 4' =&gt; 'sun4',
    'Sun Type 5' =&gt; 'sun5',
    'Sun Type 6 (Japanese layout)' =&gt; 'sun_type6_jp',
    'Sun Type 6 USB (Japanese layout)' =&gt; 'sun_type6_jp_usb',
    'Sun Type 6 USB (Unix layout)' =&gt; 'sun_type6_unix_usb',
    'Sun Type 6/7 USB' =&gt; 'sun_type6_usb',
    'Sun Type 6/7 USB (European layout)' =&gt; 'sun_type6_euro_usb',
    'Sun Type 7 USB' =&gt; 'sun_type7_usb',
    'Sun Type 7 USB (European layout)' =&gt; 'sun_type7_euro_usb',
    'Sun Type 7 USB (Japanese layout) / Japanese 106-key' =&gt; 'sun_type7_jp_usb',
    'Sun Type 7 USB (Unix layout)' =&gt; 'sun_type7_unix_usb',
    'Super Power Multimedia Keyboard' =&gt; 'sp_inet',
    'Symplon PaceBook (tablet PC)' =&gt; 'symplon',
    'Targa Visionary 811' =&gt; 'targa_v811',
    'Toshiba Satellite S3000' =&gt; 'toshiba_s3000',
    'Trust Direct Access Keyboard' =&gt; 'trustda',
    'Trust Slimline' =&gt; 'trust_slimline',
    'Trust Wireless Keyboard Classic' =&gt; 'trust',
    'TypeMatrix EZ-Reach 2020' =&gt; 'tm2020',
    'TypeMatrix EZ-Reach 2030 PS2' =&gt; 'tm2030PS2',
    'TypeMatrix EZ-Reach 2030 USB' =&gt; 'tm2030USB',
    'TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)' =&gt; 'tm2030USB-102',
    'TypeMatrix EZ-Reach 2030 USB (106:JP mode)' =&gt; 'tm2030USB-106',
    'Unitek KB-1925' =&gt; 'unitekkb1925',
    'ViewSonic KU-306 Internet Keyboard' =&gt; 'vsonku306',
    'Winbook Model XP5' =&gt; 'winbook',
    'Yahoo! Internet Keyboard' =&gt; 'yahoo',
);

%layouts = (
    'Afghani' =&gt; 'af',
    'Albanian' =&gt; 'al',
    'Amharic' =&gt; 'et',
    'Arabic' =&gt; 'ara',
    'Arabic (Morocco)' =&gt; 'ma',
    'Arabic (Syria)' =&gt; 'sy',
    'Armenian' =&gt; 'am',
    'Azerbaijani' =&gt; 'az',
    'Bambara' =&gt; 'ml',
    'Bangla' =&gt; 'bd',
    'Belarusian' =&gt; 'by',
    'Belgian' =&gt; 'be',
    'Bosnian' =&gt; 'ba',
    'Braille' =&gt; 'brai',
    'Bulgarian' =&gt; 'bg',
    'Burmese' =&gt; 'mm',
    'Chinese' =&gt; 'cn',
    'Croatian' =&gt; 'hr',
    'Czech' =&gt; 'cz',
    'Danish' =&gt; 'dk',
    'Dhivehi' =&gt; 'mv',
    'Dutch' =&gt; 'nl',
    'Dzongkha' =&gt; 'bt',
    'English (Cameroon)' =&gt; 'cm',
    'English (Ghana)' =&gt; 'gh',
    'English (Nigeria)' =&gt; 'ng',
    'English (South Africa)' =&gt; 'za',
    'English (UK)' =&gt; 'gb',
    'English (US)' =&gt; 'us',
    'Esperanto' =&gt; 'epo',
    'Estonian' =&gt; 'ee',
    'Faroese' =&gt; 'fo',
    'Filipino' =&gt; 'ph',
    'Finnish' =&gt; 'fi',
    'French' =&gt; 'fr',
    'French (Canada)' =&gt; 'ca',
    'French (Democratic Republic of the Congo)' =&gt; 'cd',
    'French (Guinea)' =&gt; 'gn',
    'Georgian' =&gt; 'ge',
    'German' =&gt; 'de',
    'German (Austria)' =&gt; 'at',
    'Greek' =&gt; 'gr',
    'Hebrew' =&gt; 'il',
    'Hungarian' =&gt; 'hu',
    'Icelandic' =&gt; 'is',
    'Indian' =&gt; 'in',
    'Iraqi' =&gt; 'iq',
    'Irish' =&gt; 'ie',
    'Italian' =&gt; 'it',
    'Japanese' =&gt; 'jp',
    'Japanese (PC-98xx Series)' =&gt; 'nec_vndr/jp',
    'Kazakh' =&gt; 'kz',
    'Khmer (Cambodia)' =&gt; 'kh',
    'Korean' =&gt; 'kr',
    'Kyrgyz' =&gt; 'kg',
    'Lao' =&gt; 'la',
    'Latvian' =&gt; 'lv',
    'Lithuanian' =&gt; 'lt',
    'Macedonian' =&gt; 'mk',
    'Maltese' =&gt; 'mt',
    'Maori' =&gt; 'mao',
    'Moldavian' =&gt; 'md',
    'Mongolian' =&gt; 'mn',
    'Montenegrin' =&gt; 'me',
    'Nepali' =&gt; 'np',
    'Norwegian' =&gt; 'no',
    'Persian' =&gt; 'ir',
    'Polish' =&gt; 'pl',
    'Portuguese' =&gt; 'pt',
    'Portuguese (Brazil)' =&gt; 'br',
    'Romanian' =&gt; 'ro',
    'Russian' =&gt; 'ru',
    'Serbian' =&gt; 'rs',
    'Sinhala (phonetic)' =&gt; 'lk',
    'Slovak' =&gt; 'sk',
    'Slovenian' =&gt; 'si',
    'Spanish' =&gt; 'es',
    'Spanish (Latin American)' =&gt; 'latam',
    'Swahili (Kenya)' =&gt; 'ke',
    'Swahili (Tanzania)' =&gt; 'tz',
    'Swedish' =&gt; 'se',
    'Switzerland' =&gt; 'ch',
    'Taiwanese' =&gt; 'tw',
    'Tajik' =&gt; 'tj',
    'Thai' =&gt; 'th',
    'Tswana' =&gt; 'bw',
    'Turkish' =&gt; 'tr',
    'Turkmen' =&gt; 'tm',
    'Ukrainian' =&gt; 'ua',
    'Urdu (Pakistan)' =&gt; 'pk',
    'Uzbek' =&gt; 'uz',
    'Vietnamese' =&gt; 'vn',
    'Wolof' =&gt; 'sn',
);

%variants = (
    'af' =&gt; {
	'Pashto' =&gt; 'ps',
	'Pashto (Afghanistan, OLPC)' =&gt; 'olpc-ps',
	'Persian (Afghanistan, Dari OLPC)' =&gt; 'fa-olpc',
	'Uzbek (Afghanistan)' =&gt; 'uz',
	'Uzbek (Afghanistan, OLPC)' =&gt; 'uz-olpc',
    },
    'am' =&gt; {
	'Armenian (alternative eastern)' =&gt; 'eastern-alt',
	'Armenian (alternative phonetic)' =&gt; 'phonetic-alt',
	'Armenian (eastern)' =&gt; 'eastern',
	'Armenian (phonetic)' =&gt; 'phonetic',
	'Armenian (western)' =&gt; 'western',
    },
    'ara' =&gt; {
	'Arabic (Buckwalter)' =&gt; 'buckwalter',
	'Arabic (azerty)' =&gt; 'azerty',
	'Arabic (azerty/digits)' =&gt; 'azerty_digits',
	'Arabic (digits)' =&gt; 'digits',
	'Arabic (qwerty)' =&gt; 'qwerty',
	'Arabic (qwerty/digits)' =&gt; 'qwerty_digits',
    },
    'at' =&gt; {
	'German (Austria, Macintosh)' =&gt; 'mac',
	'German (Austria, Sun dead keys)' =&gt; 'sundeadkeys',
	'German (Austria, eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'az' =&gt; {
	'Azerbaijani (Cyrillic)' =&gt; 'cyrillic',
    },
    'ba' =&gt; {
	'Bosnian (US keyboard with Bosnian digraphs)' =&gt; 'unicodeus',
	'Bosnian (US keyboard with Bosnian letters)' =&gt; 'us',
	'Bosnian (use Bosnian digraphs)' =&gt; 'unicode',
	'Bosnian (use guillemets for quotes)' =&gt; 'alternatequotes',
    },
    'bd' =&gt; {
	'Bangla (Probhat)' =&gt; 'probhat',
    },
    'be' =&gt; {
	'Belgian (ISO alternate)' =&gt; 'iso-alternate',
	'Belgian (Sun dead keys)' =&gt; 'sundeadkeys',
	'Belgian (Wang model 724 azerty)' =&gt; 'wang',
	'Belgian (alternative)' =&gt; 'oss',
	'Belgian (alternative, Latin-9 only)' =&gt; 'oss_latin9',
	'Belgian (alternative, Sun dead keys)' =&gt; 'oss_sundeadkeys',
	'Belgian (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'bg' =&gt; {
	'Bulgarian (new phonetic)' =&gt; 'bas_phonetic',
	'Bulgarian (traditional phonetic)' =&gt; 'phonetic',
    },
    'br' =&gt; {
	'Portuguese (Brazil, Dvorak)' =&gt; 'dvorak',
	'Portuguese (Brazil, eliminate dead keys)' =&gt; 'nodeadkeys',
	'Portuguese (Brazil, nativo for Esperanto)' =&gt; 'nativo-epo',
	'Portuguese (Brazil, nativo for US keyboards)' =&gt; 'nativo-us',
	'Portuguese (Brazil, nativo)' =&gt; 'nativo',
    },
    'brai' =&gt; {
	'Braille (left hand)' =&gt; 'left_hand',
	'Braille (right hand)' =&gt; 'right_hand',
    },
    'by' =&gt; {
	'Belarusian (Latin)' =&gt; 'latin',
	'Belarusian (legacy)' =&gt; 'legacy',
    },
    'ca' =&gt; {
	'Canadian Multilingual' =&gt; 'multix',
	'Canadian Multilingual (first part)' =&gt; 'multi',
	'Canadian Multilingual (second part)' =&gt; 'multi-2gr',
	'English (Canada)' =&gt; 'eng',
	'French (Canada, Dvorak)' =&gt; 'fr-dvorak',
	'French (Canada, legacy)' =&gt; 'fr-legacy',
	'Inuktitut' =&gt; 'ike',
    },
    'ch' =&gt; {
	'French (Switzerland)' =&gt; 'fr',
	'French (Switzerland, Macintosh)' =&gt; 'fr_mac',
	'French (Switzerland, Sun dead keys)' =&gt; 'fr_sundeadkeys',
	'French (Switzerland, eliminate dead keys)' =&gt; 'fr_nodeadkeys',
	'German (Switzerland, Macintosh)' =&gt; 'de_mac',
	'German (Switzerland, Sun dead keys)' =&gt; 'de_sundeadkeys',
	'German (Switzerland, eliminate dead keys)' =&gt; 'de_nodeadkeys',
	'German (Switzerland, legacy)' =&gt; 'legacy',
    },
    'cm' =&gt; {
	'Cameroon Multilingual (Dvorak)' =&gt; 'dvorak',
	'Cameroon Multilingual (azerty)' =&gt; 'azerty',
	'Cameroon Multilingual (qwerty)' =&gt; 'qwerty',
	'French (Cameroon)' =&gt; 'french',
    },
    'cn' =&gt; {
	'Tibetan' =&gt; 'tib',
	'Tibetan (with ASCII numerals)' =&gt; 'tib_asciinum',
	'Uyghur' =&gt; 'uig',
    },
    'cz' =&gt; {
	'Czech (UCW layout, accented letters only)' =&gt; 'ucw',
	'Czech (US Dvorak with CZ UCW support)' =&gt; 'dvorak-ucw',
	'Czech (qwerty)' =&gt; 'qwerty',
	'Czech (qwerty, extended Backslash)' =&gt; 'qwerty_bksl',
	'Czech (with &lt;\|&gt; key)' =&gt; 'bksl',
    },
    'de' =&gt; {
	'German (Dvorak)' =&gt; 'dvorak',
	'German (Macintosh)' =&gt; 'mac',
	'German (Macintosh, eliminate dead keys)' =&gt; 'mac_nodeadkeys',
	'German (Neo 2)' =&gt; 'neo',
	'German (Sun dead keys)' =&gt; 'sundeadkeys',
	'German (T3)' =&gt; 'T3',
	'German (dead acute)' =&gt; 'deadacute',
	'German (dead grave acute)' =&gt; 'deadgraveacute',
	'German (eliminate dead keys)' =&gt; 'nodeadkeys',
	'German (legacy)' =&gt; 'legacy',
	'German (qwerty)' =&gt; 'qwerty',
	'Lower Sorbian' =&gt; 'dsb',
	'Lower Sorbian (qwertz)' =&gt; 'dsb_qwertz',
	'Romanian (Germany)' =&gt; 'ro',
	'Romanian (Germany, eliminate dead keys)' =&gt; 'ro_nodeadkeys',
	'Russian (Germany, phonetic)' =&gt; 'ru',
    },
    'dk' =&gt; {
	'Danish (Dvorak)' =&gt; 'dvorak',
	'Danish (Macintosh)' =&gt; 'mac',
	'Danish (Macintosh, eliminate dead keys)' =&gt; 'mac_nodeadkeys',
	'Danish (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'ee' =&gt; {
	'Estonian (Dvorak)' =&gt; 'dvorak',
	'Estonian (US keyboard with Estonian letters)' =&gt; 'us',
	'Estonian (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'epo' =&gt; {
	'Esperanto (displaced semicolon and quote, obsolete)' =&gt; 'legacy',
    },
    'es' =&gt; {
	'Asturian (Spain, with bottom-dot H and bottom-dot L)' =&gt; 'ast',
	'Catalan (Spain, with middle-dot L)' =&gt; 'cat',
	'Spanish (Dvorak)' =&gt; 'dvorak',
	'Spanish (Macintosh)' =&gt; 'mac',
	'Spanish (Sun dead keys)' =&gt; 'sundeadkeys',
	'Spanish (eliminate dead keys)' =&gt; 'nodeadkeys',
	'Spanish (include dead tilde)' =&gt; 'deadtilde',
    },
    'fi' =&gt; {
	'Finnish (Macintosh)' =&gt; 'mac',
	'Finnish (classic)' =&gt; 'classic',
	'Finnish (classic, eliminate dead keys)' =&gt; 'nodeadkeys',
	'Northern Saami (Finland)' =&gt; 'smi',
    },
    'fo' =&gt; {
	'Faroese (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'fr' =&gt; {
	'French (Bepo, ergonomic, Dvorak way)' =&gt; 'bepo',
	'French (Bepo, ergonomic, Dvorak way, Latin-9 only)' =&gt; 'bepo_latin9',
	'French (Breton)' =&gt; 'bre',
	'French (Dvorak)' =&gt; 'dvorak',
	'French (Macintosh)' =&gt; 'mac',
	'French (Sun dead keys)' =&gt; 'sundeadkeys',
	'French (alternative)' =&gt; 'oss',
	'French (alternative, Latin-9 only)' =&gt; 'oss_latin9',
	'French (alternative, Sun dead keys)' =&gt; 'oss_sundeadkeys',
	'French (alternative, eliminate dead keys)' =&gt; 'oss_nodeadkeys',
	'French (eliminate dead keys)' =&gt; 'nodeadkeys',
	'French (legacy, alternative)' =&gt; 'latin9',
	'French (legacy, alternative, Sun dead keys)' =&gt; 'latin9_sundeadkeys',
	'French (legacy, alternative, eliminate dead keys)' =&gt; 'latin9_nodeadkeys',
	'Georgian (France, AZERTY Tskapo)' =&gt; 'geo',
	'Occitan' =&gt; 'oci',
    },
    'gb' =&gt; {
	'English (UK, Colemak)' =&gt; 'colemak',
	'English (UK, Dvorak with UK punctuation)' =&gt; 'dvorakukp',
	'English (UK, Dvorak)' =&gt; 'dvorak',
	'English (UK, Macintosh international)' =&gt; 'mac_intl',
	'English (UK, Macintosh)' =&gt; 'mac',
	'English (UK, extended WinKeys)' =&gt; 'extd',
	'English (UK, international with dead keys)' =&gt; 'intl',
    },
    'ge' =&gt; {
	'Georgian (MESS)' =&gt; 'mess',
	'Georgian (ergonomic)' =&gt; 'ergonomic',
	'Ossetian (Georgia)' =&gt; 'os',
	'Russian (Georgia)' =&gt; 'ru',
    },
    'gh' =&gt; {
	'Akan' =&gt; 'akan',
	'Avatime' =&gt; 'avn',
	'English (Ghana, GILLBT)' =&gt; 'gillbt',
	'English (Ghana, multilingual)' =&gt; 'generic',
	'Ewe' =&gt; 'ewe',
	'Fula' =&gt; 'fula',
	'Ga' =&gt; 'ga',
	'Hausa' =&gt; 'hausa',
    },
    'gr' =&gt; {
	'Greek (eliminate dead keys)' =&gt; 'nodeadkeys',
	'Greek (extended)' =&gt; 'extended',
	'Greek (polytonic)' =&gt; 'polytonic',
	'Greek (simple)' =&gt; 'simple',
    },
    'hr' =&gt; {
	'Croatian (US keyboard with Croatian digraphs)' =&gt; 'unicodeus',
	'Croatian (US keyboard with Croatian letters)' =&gt; 'us',
	'Croatian (use Croatian digraphs)' =&gt; 'unicode',
	'Croatian (use guillemets for quotes)' =&gt; 'alternatequotes',
    },
    'hu' =&gt; {
	'Hungarian (101/qwerty/comma/dead keys)' =&gt; '101_qwerty_comma_dead',
	'Hungarian (101/qwerty/comma/eliminate dead keys)' =&gt; '101_qwerty_comma_nodead',
	'Hungarian (101/qwerty/dot/dead keys)' =&gt; '101_qwerty_dot_dead',
	'Hungarian (101/qwerty/dot/eliminate dead keys)' =&gt; '101_qwerty_dot_nodead',
	'Hungarian (101/qwertz/comma/dead keys)' =&gt; '101_qwertz_comma_dead',
	'Hungarian (101/qwertz/comma/eliminate dead keys)' =&gt; '101_qwertz_comma_nodead',
	'Hungarian (101/qwertz/dot/dead keys)' =&gt; '101_qwertz_dot_dead',
	'Hungarian (101/qwertz/dot/eliminate dead keys)' =&gt; '101_qwertz_dot_nodead',
	'Hungarian (102/qwerty/comma/dead keys)' =&gt; '102_qwerty_comma_dead',
	'Hungarian (102/qwerty/comma/eliminate dead keys)' =&gt; '102_qwerty_comma_nodead',
	'Hungarian (102/qwerty/dot/dead keys)' =&gt; '102_qwerty_dot_dead',
	'Hungarian (102/qwerty/dot/eliminate dead keys)' =&gt; '102_qwerty_dot_nodead',
	'Hungarian (102/qwertz/comma/dead keys)' =&gt; '102_qwertz_comma_dead',
	'Hungarian (102/qwertz/comma/eliminate dead keys)' =&gt; '102_qwertz_comma_nodead',
	'Hungarian (102/qwertz/dot/dead keys)' =&gt; '102_qwertz_dot_dead',
	'Hungarian (102/qwertz/dot/eliminate dead keys)' =&gt; '102_qwertz_dot_nodead',
	'Hungarian (eliminate dead keys)' =&gt; 'nodeadkeys',
	'Hungarian (qwerty)' =&gt; 'qwerty',
	'Hungarian (standard)' =&gt; 'standard',
    },
    'ie' =&gt; {
	'CloGaelach' =&gt; 'CloGaelach',
	'Irish (UnicodeExpert)' =&gt; 'UnicodeExpert',
	'Ogham' =&gt; 'ogam',
	'Ogham (IS434)' =&gt; 'ogam_is434',
    },
    'il' =&gt; {
	'Hebrew (Biblical, Tiro)' =&gt; 'biblical',
	'Hebrew (lyx)' =&gt; 'lyx',
	'Hebrew (phonetic)' =&gt; 'phonetic',
    },
    'in' =&gt; {
	'Bangla (India)' =&gt; 'ben',
	'Bangla (India, Baishakhi Inscript)' =&gt; 'ben_inscript',
	'Bangla (India, Baishakhi)' =&gt; 'ben_baishakhi',
	'Bangla (India, Bornona)' =&gt; 'ben_bornona',
	'Bangla (India, Probhat)' =&gt; 'ben_probhat',
	'Bangla (India, Uni Gitanjali)' =&gt; 'ben_gitanjali',
	'English (India, with RupeeSign)' =&gt; 'eng',
	'Gujarati' =&gt; 'guj',
	'Hindi (Bolnagri)' =&gt; 'bolnagri',
	'Hindi (KaGaPa phonetic)' =&gt; 'hin-kagapa',
	'Hindi (Wx)' =&gt; 'hin-wx',
	'Kannada' =&gt; 'kan',
	'Kannada (KaGaPa phonetic)' =&gt; 'kan-kagapa',
	'Malayalam' =&gt; 'mal',
	'Malayalam (Lalitha)' =&gt; 'mal_lalitha',
	'Malayalam (enhanced Inscript with Rupee Sign)' =&gt; 'mal_enhanced',
	'Marathi (KaGaPa phonetic)' =&gt; 'mar-kagapa',
	'Oriya' =&gt; 'ori',
	'Punjabi (Gurmukhi Jhelum)' =&gt; 'jhelum',
	'Punjabi (Gurmukhi)' =&gt; 'guru',
	'Sanskrit (KaGaPa phonetic)' =&gt; 'san-kagapa',
	'Tamil' =&gt; 'tam',
	'Tamil (TAB typewriter)' =&gt; 'tam_TAB',
	'Tamil (TSCII typewriter)' =&gt; 'tam_TSCII',
	'Tamil (Unicode)' =&gt; 'tam_unicode',
	'Tamil (keyboard with numerals)' =&gt; 'tam_keyboard_with_numerals',
	'Telugu' =&gt; 'tel',
	'Telugu (KaGaPa phonetic)' =&gt; 'tel-kagapa',
	'Urdu (WinKeys)' =&gt; 'urd-winkeys',
	'Urdu (alternative phonetic)' =&gt; 'urd-phonetic3',
	'Urdu (phonetic)' =&gt; 'urd-phonetic',
    },
    'iq' =&gt; {
	'Kurdish (Iraq, Arabic-Latin)' =&gt; 'ku_ara',
	'Kurdish (Iraq, F)' =&gt; 'ku_f',
	'Kurdish (Iraq, Latin Alt-Q)' =&gt; 'ku_alt',
	'Kurdish (Iraq, Latin Q)' =&gt; 'ku',
    },
    'ir' =&gt; {
	'Kurdish (Iran, Arabic-Latin)' =&gt; 'ku_ara',
	'Kurdish (Iran, F)' =&gt; 'ku_f',
	'Kurdish (Iran, Latin Alt-Q)' =&gt; 'ku_alt',
	'Kurdish (Iran, Latin Q)' =&gt; 'ku',
	'Persian (with Persian Keypad)' =&gt; 'pes_keypad',
    },
    'is' =&gt; {
	'Icelandic (Dvorak)' =&gt; 'dvorak',
	'Icelandic (Macintosh)' =&gt; 'mac',
	'Icelandic (Sun dead keys)' =&gt; 'Sundeadkeys',
	'Icelandic (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'it' =&gt; {
	'Georgian (Italy)' =&gt; 'geo',
	'Italian (IBM 142)' =&gt; 'ibm',
	'Italian (Macintosh)' =&gt; 'mac',
	'Italian (US keyboard with Italian letters)' =&gt; 'us',
	'Italian (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'jp' =&gt; {
	'Japanese (Dvorak)' =&gt; 'dvorak',
	'Japanese (Kana 86)' =&gt; 'kana86',
	'Japanese (Kana)' =&gt; 'kana',
	'Japanese (Macintosh)' =&gt; 'mac',
	'Japanese (OADG 109A)' =&gt; 'OADG109A',
    },
    'ke' =&gt; {
	'Kikuyu' =&gt; 'kik',
    },
    'kg' =&gt; {
	'Kyrgyz (phonetic)' =&gt; 'phonetic',
    },
    'kr' =&gt; {
	'Korean (101/104 key compatible)' =&gt; 'kr104',
    },
    'kz' =&gt; {
	'Kazakh (with Russian)' =&gt; 'kazrus',
	'Russian (Kazakhstan, with Kazakh)' =&gt; 'ruskaz',
    },
    'la' =&gt; {
	'Lao (STEA proposed standard layout)' =&gt; 'stea',
    },
    'latam' =&gt; {
	'Spanish (Latin American, Sun dead keys)' =&gt; 'sundeadkeys',
	'Spanish (Latin American, eliminate dead keys)' =&gt; 'nodeadkeys',
	'Spanish (Latin American, include dead tilde)' =&gt; 'deadtilde',
    },
    'lk' =&gt; {
	'Tamil (Sri Lanka, TAB Typewriter)' =&gt; 'tam_TAB',
	'Tamil (Sri Lanka, Unicode)' =&gt; 'tam_unicode',
    },
    'lt' =&gt; {
	'Lithuanian (IBM LST 1205-92)' =&gt; 'ibm',
	'Lithuanian (LEKP)' =&gt; 'lekp',
	'Lithuanian (LEKPa)' =&gt; 'lekpa',
	'Lithuanian (US keyboard with Lithuanian letters)' =&gt; 'us',
	'Lithuanian (standard)' =&gt; 'std',
    },
    'lv' =&gt; {
	'Latvian (F variant)' =&gt; 'fkey',
	'Latvian (adapted)' =&gt; 'adapted',
	'Latvian (apostrophe variant)' =&gt; 'apostrophe',
	'Latvian (ergonomic, ÅªGJRMV)' =&gt; 'ergonomic',
	'Latvian (modern)' =&gt; 'modern',
	'Latvian (tilde variant)' =&gt; 'tilde',
    },
    'ma' =&gt; {
	'Berber (Morocco, Tifinagh alternative phonetic)' =&gt; 'tifinagh-alt-phonetic',
	'Berber (Morocco, Tifinagh alternative)' =&gt; 'tifinagh-alt',
	'Berber (Morocco, Tifinagh extended phonetic)' =&gt; 'tifinagh-extended-phonetic',
	'Berber (Morocco, Tifinagh extended)' =&gt; 'tifinagh-extended',
	'Berber (Morocco, Tifinagh phonetic)' =&gt; 'tifinagh-phonetic',
	'Berber (Morocco, Tifinagh)' =&gt; 'tifinagh',
	'French (Morocco)' =&gt; 'french',
    },
    'md' =&gt; {
	'Moldavian (Gagauz)' =&gt; 'gag',
    },
    'me' =&gt; {
	'Montenegrin (Cyrillic with guillemets)' =&gt; 'cyrillicalternatequotes',
	'Montenegrin (Cyrillic)' =&gt; 'cyrillic',
	'Montenegrin (Cyrillic, Z and ZHE swapped)' =&gt; 'cyrillicyz',
	'Montenegrin (Latin Unicode qwerty)' =&gt; 'latinunicodeyz',
	'Montenegrin (Latin Unicode)' =&gt; 'latinunicode',
	'Montenegrin (Latin qwerty)' =&gt; 'latinyz',
	'Montenegrin (Latin with guillemets)' =&gt; 'latinalternatequotes',
    },
    'mk' =&gt; {
	'Macedonian (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'ml' =&gt; {
	'English (Mali, US Macintosh)' =&gt; 'us-mac',
	'English (Mali, US international)' =&gt; 'us-intl',
	'French (Mali, alternative)' =&gt; 'fr-oss',
    },
    'mt' =&gt; {
	'Maltese (with US layout)' =&gt; 'us',
    },
    'ng' =&gt; {
	'Hausa' =&gt; 'hausa',
	'Igbo' =&gt; 'igbo',
	'Yoruba' =&gt; 'yoruba',
    },
    'nl' =&gt; {
	'Dutch (Macintosh)' =&gt; 'mac',
	'Dutch (Sun dead keys)' =&gt; 'sundeadkeys',
	'Dutch (standard)' =&gt; 'std',
    },
    'no' =&gt; {
	'Northern Saami (Norway)' =&gt; 'smi',
	'Northern Saami (Norway, eliminate dead keys)' =&gt; 'smi_nodeadkeys',
	'Norwegian (Colemak)' =&gt; 'colemak',
	'Norwegian (Dvorak)' =&gt; 'dvorak',
	'Norwegian (Macintosh)' =&gt; 'mac',
	'Norwegian (Macintosh, eliminate dead keys)' =&gt; 'mac_nodeadkeys',
	'Norwegian (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'ph' =&gt; {
	'Filipino (Capewell-Dvorak Baybayin)' =&gt; 'capewell-dvorak-bay',
	'Filipino (Capewell-Dvorak Latin)' =&gt; 'capewell-dvorak',
	'Filipino (Capewell-QWERF 2006 Baybayin)' =&gt; 'capewell-qwerf2k6-bay',
	'Filipino (Capewell-QWERF 2006 Latin)' =&gt; 'capewell-qwerf2k6',
	'Filipino (Colemak Baybayin)' =&gt; 'colemak-bay',
	'Filipino (Colemak Latin)' =&gt; 'colemak',
	'Filipino (Dvorak Baybayin)' =&gt; 'dvorak-bay',
	'Filipino (Dvorak Latin)' =&gt; 'dvorak',
	'Filipino (QWERTY Baybayin)' =&gt; 'qwerty-bay',
    },
    'pk' =&gt; {
	'Arabic (Pakistan)' =&gt; 'ara',
	'Sindhi' =&gt; 'snd',
	'Urdu (Pakistan, CRULP)' =&gt; 'urd-crulp',
	'Urdu (Pakistan, NLA)' =&gt; 'urd-nla',
    },
    'pl' =&gt; {
	'Kashubian' =&gt; 'csb',
	'Polish (Dvorak)' =&gt; 'dvorak',
	'Polish (Dvorak, Polish quotes on key 1)' =&gt; 'dvorak_altquotes',
	'Polish (Dvorak, Polish quotes on quotemark key)' =&gt; 'dvorak_quotes',
	'Polish (legacy)' =&gt; 'legacy',
	'Polish (programmer Dvorak)' =&gt; 'dvp',
	'Polish (qwertz)' =&gt; 'qwertz',
	'Russian (Poland, phonetic Dvorak)' =&gt; 'ru_phonetic_dvorak',
	'Silesian' =&gt; 'szl',
    },
    'pt' =&gt; {
	'Esperanto (Portugal, Nativo)' =&gt; 'nativo-epo',
	'Portuguese (Macintosh)' =&gt; 'mac',
	'Portuguese (Macintosh, Sun dead keys)' =&gt; 'mac_sundeadkeys',
	'Portuguese (Macintosh, eliminate dead keys)' =&gt; 'mac_nodeadkeys',
	'Portuguese (Nativo for US keyboards)' =&gt; 'nativo-us',
	'Portuguese (Nativo)' =&gt; 'nativo',
	'Portuguese (Sun dead keys)' =&gt; 'sundeadkeys',
	'Portuguese (eliminate dead keys)' =&gt; 'nodeadkeys',
    },
    'ro' =&gt; {
	'Romanian (WinKeys)' =&gt; 'winkeys',
	'Romanian (cedilla)' =&gt; 'cedilla',
	'Romanian (standard cedilla)' =&gt; 'std_cedilla',
	'Romanian (standard)' =&gt; 'std',
    },
    'rs' =&gt; {
	'Pannonian Rusyn (homophonic)' =&gt; 'rue',
	'Serbian (Cyrillic with guillemets)' =&gt; 'alternatequotes',
	'Serbian (Cyrillic, Z and ZHE swapped)' =&gt; 'yz',
	'Serbian (Latin Unicode qwerty)' =&gt; 'latinunicodeyz',
	'Serbian (Latin Unicode)' =&gt; 'latinunicode',
	'Serbian (Latin qwerty)' =&gt; 'latinyz',
	'Serbian (Latin with guillemets)' =&gt; 'latinalternatequotes',
	'Serbian (Latin)' =&gt; 'latin',
    },
    'ru' =&gt; {
	'Bashkirian' =&gt; 'bak',
	'Chuvash' =&gt; 'cv',
	'Chuvash (Latin)' =&gt; 'cv_latin',
	'Kalmyk' =&gt; 'xal',
	'Komi' =&gt; 'kom',
	'Mari' =&gt; 'chm',
	'Ossetian (WinKeys)' =&gt; 'os_winkeys',
	'Ossetian (legacy)' =&gt; 'os_legacy',
	'Russian (DOS)' =&gt; 'dos',
	'Russian (Macintosh)' =&gt; 'mac',
	'Russian (legacy)' =&gt; 'legacy',
	'Russian (phonetic WinKeys)' =&gt; 'phonetic_winkeys',
	'Russian (phonetic)' =&gt; 'phonetic',
	'Russian (typewriter)' =&gt; 'typewriter',
	'Russian (typewriter, legacy)' =&gt; 'typewriter-legacy',
	'Serbian (Russia)' =&gt; 'srp',
	'Tatar' =&gt; 'tt',
	'Udmurt' =&gt; 'udm',
	'Yakut' =&gt; 'sah',
    },
    'se' =&gt; {
	'Northern Saami (Sweden)' =&gt; 'smi',
	'Russian (Sweden, phonetic)' =&gt; 'rus',
	'Russian (Sweden, phonetic, eliminate dead keys)' =&gt; 'rus_nodeadkeys',
	'Swedish (Dvorak)' =&gt; 'dvorak',
	'Swedish (Macintosh)' =&gt; 'mac',
	'Swedish (Svdvorak)' =&gt; 'svdvorak',
	'Swedish (eliminate dead keys)' =&gt; 'nodeadkeys',
	'Swedish Sign Language' =&gt; 'swl',
    },
    'si' =&gt; {
	'Slovenian (US keyboard with Slovenian letters)' =&gt; 'us',
	'Slovenian (use guillemets for quotes)' =&gt; 'alternatequotes',
    },
    'sk' =&gt; {
	'Slovak (extended Backslash)' =&gt; 'bksl',
	'Slovak (qwerty)' =&gt; 'qwerty',
	'Slovak (qwerty, extended Backslash)' =&gt; 'qwerty_bksl',
    },
    'sy' =&gt; {
	'Kurdish (Syria, F)' =&gt; 'ku_f',
	'Kurdish (Syria, Latin Alt-Q)' =&gt; 'ku_alt',
	'Kurdish (Syria, Latin Q)' =&gt; 'ku',
	'Syriac' =&gt; 'syc',
	'Syriac (phonetic)' =&gt; 'syc_phonetic',
    },
    'th' =&gt; {
	'Thai (Pattachote)' =&gt; 'pat',
	'Thai (TIS-820.2538)' =&gt; 'tis',
    },
    'tj' =&gt; {
	'Tajik (legacy)' =&gt; 'legacy',
    },
    'tm' =&gt; {
	'Turkmen (Alt-Q)' =&gt; 'alt',
    },
    'tr' =&gt; {
	'Crimean Tatar (Turkish Alt-Q)' =&gt; 'crh_alt',
	'Crimean Tatar (Turkish F)' =&gt; 'crh_f',
	'Crimean Tatar (Turkish Q)' =&gt; 'crh',
	'Kurdish (Turkey, F)' =&gt; 'ku_f',
	'Kurdish (Turkey, Latin Alt-Q)' =&gt; 'ku_alt',
	'Kurdish (Turkey, Latin Q)' =&gt; 'ku',
	'Turkish (Alt-Q)' =&gt; 'alt',
	'Turkish (F)' =&gt; 'f',
	'Turkish (Sun dead keys)' =&gt; 'sundeadkeys',
	'Turkish (international with dead keys)' =&gt; 'intl',
    },
    'tw' =&gt; {
	'Saisiyat (Taiwan)' =&gt; 'saisiyat',
	'Taiwanese (indigenous)' =&gt; 'indigenous',
    },
    'ua' =&gt; {
	'Russian (Ukraine, standard RSTU)' =&gt; 'rstu_ru',
	'Ukrainian (WinKeys)' =&gt; 'winkeys',
	'Ukrainian (homophonic)' =&gt; 'homophonic',
	'Ukrainian (legacy)' =&gt; 'legacy',
	'Ukrainian (phonetic)' =&gt; 'phonetic',
	'Ukrainian (standard RSTU)' =&gt; 'rstu',
	'Ukrainian (typewriter)' =&gt; 'typewriter',
    },
    'us' =&gt; {
	'Cherokee' =&gt; 'chr',
	'English (Colemak)' =&gt; 'colemak',
	'English (Dvorak alternative international no dead keys)' =&gt; 'dvorak-alt-intl',
	'English (Dvorak)' =&gt; 'dvorak',
	'English (Dvorak, international with dead keys)' =&gt; 'dvorak-intl',
	'English (Macintosh)' =&gt; 'mac',
	'English (US, alternative international)' =&gt; 'alt-intl',
	'English (US, international with dead keys)' =&gt; 'intl',
	'English (US, with euro on 5)' =&gt; 'euro',
	'English (Workman)' =&gt; 'workman',
	'English (Workman, international with dead keys)' =&gt; 'workman-intl',
	'English (classic Dvorak)' =&gt; 'dvorak-classic',
	'English (international AltGr dead keys)' =&gt; 'altgr-intl',
	'English (left handed Dvorak)' =&gt; 'dvorak-l',
	'English (programmer Dvorak)' =&gt; 'dvp',
	'English (right handed Dvorak)' =&gt; 'dvorak-r',
	'English (the divide/multiply keys toggle the layout)' =&gt; 'olpc2',
	'Russian (US, phonetic)' =&gt; 'rus',
	'Serbo-Croatian (US)' =&gt; 'hbs',
    },
    'uz' =&gt; {
	'Uzbek (Latin)' =&gt; 'latin',
    },
);

1;
</pre></body></html>