[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Reducing the complication of choices in console-setup udeb config: first thought



Christian Perrier, le Sat 04 Jul 2009 11:31:07 +0200, a écrit :
> I went through all languages.

That approach misses things. For instance, Andorra (AD)'s official
language is catalan (cat), for which you only provide es' cat variant
layout. Xorg does have an ad layout which is quite different from es'
cat variant.  And that is only the first one in the xkb list.

Ok, that's no regression from what we had previously and we have no
AD locale for now, but should we really select keyboards by hand and
restrict ourselves from just automatically supporting such keyboard?

I have a script that can automatically generate the attached perl hash
(kbds), which I had meant to use to automatically determine the default
keyboard to use depending on the country/language pair, to replace the
handcrafted switch statement of console-setup's config.  That brings 137
keyboard layouts which we should ideally support (kbds2).

Samuel
%locales_keyboards = (
    'AD' => {
	'ca' => { 'layout' => 'ad' },
    },
    'AE' => {
	'ar' => { 'layout' => 'ara' },
    },
    'AF' => {
	'ps' => { 'layout' => 'af', 'variant' => 'ps' },
	'uz' => { 'layout' => 'af', 'variant' => 'uz' },
    },
    'AL' => {
	'sq' => { 'layout' => 'al' },
    },
    'AM' => {
	'hy' => { 'layout' => 'am' },
    },
    'AR' => {
	'es' => { 'layout' => 'latam' },
    },
    'AZ' => {
	'az' => { 'layout' => 'az' },
    },
    'BA' => {
	'bs' => { 'layout' => 'ba' },
    },
    'BD' => {
	'bn' => { 'layout' => 'bd' },
    },
    'BE' => {
	'de' => { 'layout' => 'be' },
	'fr' => { 'layout' => 'be' },
    },
    'BG' => {
	'bg' => { 'layout' => 'bg' },
    },
    'BH' => {
	'ar' => { 'layout' => 'ara' },
    },
    'BO' => {
	'es' => { 'layout' => 'latam' },
    },
    'BR' => {
	'eo' => { 'layout' => 'br', 'variant' => 'nativo-epo' },
	'pt' => { 'layout' => 'br' },
    },
    'BT' => {
	'dz' => { 'layout' => 'bt' },
    },
    'BY' => {
	'be' => { 'layout' => 'by' },
    },
    'CA' => {
	'en' => { 'layout' => 'ca', 'variant' => 'eng' },
	'fr' => { 'layout' => 'ca' },
	'iu' => { 'layout' => 'ca', 'variant' => 'ike' },
    },
    'CD' => {
	'fr' => { 'layout' => 'cd' },
    },
    'CH' => {
	'de' => { 'layout' => 'ch' },
	'fr' => { 'layout' => 'ch', 'variant' => 'fr' },
	'gsw' => { 'layout' => 'ch' },
    },
    'CL' => {
	'es' => { 'layout' => 'latam' },
    },
    'CN' => {
	'bo' => { 'layout' => 'cn', 'variant' => 'tib' },
	'zh' => { 'layout' => 'cn' },
    },
    'CO' => {
	'es' => { 'layout' => 'latam' },
    },
    'CR' => {
	'es' => { 'layout' => 'latam' },
    },
    'CU' => {
	'es' => { 'layout' => 'latam' },
    },
    'CZ' => {
	'cs' => { 'layout' => 'cz' },
    },
    'DE' => {
	'de' => { 'layout' => 'de' },
	'dsb' => { 'layout' => 'de', 'variant' => 'dsb' },
    },
    'DK' => {
	'da' => { 'layout' => 'dk' },
    },
    'DO' => {
	'es' => { 'layout' => 'latam' },
    },
    'DZ' => {
	'ar' => { 'layout' => 'ara' },
    },
    'EC' => {
	'es' => { 'layout' => 'latam' },
    },
    'EE' => {
	'et' => { 'layout' => 'ee' },
    },
    'EG' => {
	'ar' => { 'layout' => 'ara' },
    },
    'EH' => {
	'ar' => { 'layout' => 'ara' },
    },
    'ES' => {
	'ast' => { 'layout' => 'es', 'variant' => 'ast' },
	'ca' => { 'layout' => 'es', 'variant' => 'cat' },
	'es' => { 'layout' => 'es' },
    },
    'ET' => {
	'am' => { 'layout' => 'et' },
    },
    'FI' => {
	'fi' => { 'layout' => 'fi' },
	'se' => { 'layout' => 'fi', 'variant' => 'smi' },
	'smi' => { 'layout' => 'fi', 'variant' => 'smi' },
    },
    'FO' => {
	'fo' => { 'layout' => 'fo' },
    },
    'FR' => {
	'fr' => { 'layout' => 'fr' },
	'ka' => { 'layout' => 'fr', 'variant' => 'geo' },
    },
    'GB' => {
	'en' => { 'layout' => 'gb' },
    },
    'GE' => {
	'ka' => { 'layout' => 'ge' },
	'os' => { 'layout' => 'ge', 'variant' => 'os' },
	'ru' => { 'layout' => 'ge', 'variant' => 'ru' },
    },
    'GH' => {
	'ak' => { 'layout' => 'gh', 'variant' => 'akan' },
	'ee' => { 'layout' => 'gh', 'variant' => 'ewe' },
	'en' => { 'layout' => 'gh' },
	'ff' => { 'layout' => 'gh', 'variant' => 'fula' },
	'gaa' => { 'layout' => 'gh', 'variant' => 'ga' },
	'ha' => { 'layout' => 'gh', 'variant' => 'hausa' },
    },
    'GN' => {
	'fr' => { 'layout' => 'gn' },
    },
    'GR' => {
	'el' => { 'layout' => 'gr' },
    },
    'GT' => {
	'es' => { 'layout' => 'latam' },
    },
    'HN' => {
	'es' => { 'layout' => 'latam' },
    },
    'HR' => {
	'hr' => { 'layout' => 'hr' },
    },
    'HT' => {
	'es' => { 'layout' => 'latam' },
    },
    'HU' => {
	'hu' => { 'layout' => 'hu' },
    },
    'IE' => {
	'en' => { 'layout' => 'ie' },
	'gd' => { 'layout' => 'ie', 'variant' => 'CloGaelach' },
    },
    'IL' => {
	'he' => { 'layout' => 'il' },
    },
    'IN' => {
	'bn' => { 'layout' => 'in', 'variant' => 'ben' },
	'gu' => { 'layout' => 'in', 'variant' => 'guj' },
	'hi' => { 'layout' => 'in', 'variant' => 'bolnagri' },
	'kn' => { 'layout' => 'in', 'variant' => 'kan' },
	'ml' => { 'layout' => 'in', 'variant' => 'mal' },
	'or' => { 'layout' => 'in', 'variant' => 'ori' },
	'pa' => { 'layout' => 'in', 'variant' => 'guru' },
	'ta' => { 'layout' => 'in', 'variant' => 'tam_unicode' },
	'te' => { 'layout' => 'in', 'variant' => 'tel' },
	'ur' => { 'layout' => 'in', 'variant' => 'urd-phonetic' },
    },
    'IQ' => {
	'ar' => { 'layout' => 'iq' },
	'ku' => { 'layout' => 'iq' },
    },
    'IR' => {
	'fa' => { 'layout' => 'ir' },
	'ku' => { 'layout' => 'ir', 'variant' => 'ku' },
    },
    'IS' => {
	'is' => { 'layout' => 'is' },
    },
    'IT' => {
	'it' => { 'layout' => 'it' },
	'ka' => { 'layout' => 'it', 'variant' => 'geo' },
    },
    'JO' => {
	'ar' => { 'layout' => 'ara' },
    },
    'JP' => {
	'ja' => { 'layout' => 'jp' },
    },
    'KG' => {
	'ky' => { 'layout' => 'kg' },
    },
    'KH' => {
	'km' => { 'layout' => 'kh' },
    },
    'KR' => {
	'ko' => { 'layout' => 'kr' },
    },
    'KW' => {
	'ar' => { 'layout' => 'ara' },
    },
    'KZ' => {
	'kk' => { 'layout' => 'kz' },
	'ru' => { 'layout' => 'kz', 'variant' => 'ruskaz' },
    },
    'LA' => {
	'lo' => { 'layout' => 'la' },
    },
    'LB' => {
	'ar' => { 'layout' => 'ara' },
    },
    'LK' => {
	'si' => { 'layout' => 'lk' },
	'ta' => { 'layout' => 'lk', 'variant' => 'tam_unicode' },
    },
    'LT' => {
	'lt' => { 'layout' => 'lt' },
    },
    'LV' => {
	'lv' => { 'layout' => 'lv' },
    },
    'LY' => {
	'ar' => { 'layout' => 'ara' },
    },
    'MA' => {
	'ar' => { 'layout' => 'ara' },
	'ber' => { 'layout' => 'ma', 'variant' => 'tifinagh' },
	'fr' => { 'layout' => 'ma', 'variant' => 'french' },
    },
    'ME' => {
	'sr' => { 'layout' => 'me' },
    },
    'MK' => {
	'mk' => { 'layout' => 'mk' },
    },
    'MM' => {
	'my' => { 'layout' => 'mm' },
    },
    'MN' => {
	'mng' => { 'layout' => 'mn' },
    },
    'MR' => {
	'ar' => { 'layout' => 'ara' },
    },
    'MT' => {
	'mt' => { 'layout' => 'mt' },
    },
    'MV' => {
	'dv' => { 'layout' => 'mv' },
    },
    'MX' => {
	'es' => { 'layout' => 'latam' },
    },
    'NG' => {
	'en' => { 'layout' => 'ng' },
	'ha' => { 'layout' => 'ng', 'variant' => 'hausa' },
	'ig' => { 'layout' => 'ng', 'variant' => 'igbo' },
	'yo' => { 'layout' => 'ng', 'variant' => 'yoruba' },
    },
    'NI' => {
	'es' => { 'layout' => 'latam' },
    },
    'NL' => {
	'nl' => { 'layout' => 'nl' },
    },
    'NO' => {
	'no' => { 'layout' => 'no' },
	'se' => { 'layout' => 'no', 'variant' => 'smi' },
    },
    'NP' => {
	'ne' => { 'layout' => 'np' },
    },
    'OM' => {
	'ar' => { 'layout' => 'ara' },
    },
    'PA' => {
	'es' => { 'layout' => 'latam' },
    },
    'PE' => {
	'es' => { 'layout' => 'latam' },
    },
    'PK' => {
	'ar' => { 'layout' => 'pk', 'variant' => 'ara' },
	'ur' => { 'layout' => 'pk' },
    },
    'PL' => {
	'csb' => { 'layout' => 'pl', 'variant' => 'csb' },
	'pl' => { 'layout' => 'pl' },
	'ru' => { 'layout' => 'pl', 'variant' => 'ru_phonetic_dvorak' },
    },
    'PR' => {
	'es' => { 'layout' => 'latam' },
    },
    'PS' => {
	'ar' => { 'layout' => 'ara' },
    },
    'PT' => {
	'eo' => { 'layout' => 'pt', 'variant' => 'nativo-epo' },
	'pt' => { 'layout' => 'pt' },
    },
    'PY' => {
	'es' => { 'layout' => 'latam' },
    },
    'QA' => {
	'ar' => { 'layout' => 'ara' },
    },
    'RO' => {
	'ro' => { 'layout' => 'ro' },
    },
    'RS' => {
	'sr' => { 'layout' => 'rs' },
    },
    'RU' => {
	'cv' => { 'layout' => 'ru', 'variant' => 'cv' },
	'kv' => { 'layout' => 'ru', 'variant' => 'kom' },
	'os' => { 'layout' => 'ru', 'variant' => 'os_legacy' },
	'ru' => { 'layout' => 'ru' },
	'sah' => { 'layout' => 'ru', 'variant' => 'sah' },
	'tt' => { 'layout' => 'ru', 'variant' => 'tt' },
	'udm' => { 'layout' => 'ru', 'variant' => 'udm' },
	'xal' => { 'layout' => 'ru', 'variant' => 'xal' },
    },
    'SA' => {
	'ar' => { 'layout' => 'ara' },
    },
    'SD' => {
	'ar' => { 'layout' => 'ara' },
    },
    'SE' => {
	'ru' => { 'layout' => 'se', 'variant' => 'rus' },
	'se' => { 'layout' => 'se', 'variant' => 'smi' },
	'sv' => { 'layout' => 'se' },
    },
    'SI' => {
	'sl' => { 'layout' => 'si' },
    },
    'SK' => {
	'sk' => { 'layout' => 'sk' },
    },
    'SV' => {
	'es' => { 'layout' => 'latam' },
    },
    'SY' => {
	'ar' => { 'layout' => 'ara' },
	'ku' => { 'layout' => 'sy', 'variant' => 'ku' },
	'syr' => { 'layout' => 'sy' },
    },
    'TH' => {
	'th' => { 'layout' => 'th' },
    },
    'TJ' => {
	'tg' => { 'layout' => 'tj' },
    },
    'TN' => {
	'ar' => { 'layout' => 'ara' },
    },
    'TR' => {
	'ku' => { 'layout' => 'tr', 'variant' => 'ku' },
	'tr' => { 'layout' => 'tr' },
    },
    'UA' => {
	'uk' => { 'layout' => 'ua' },
    },
    'US' => {
	'chr' => { 'layout' => 'us', 'variant' => 'chr' },
	'de' => { 'layout' => 'us', 'variant' => 'altgr-intl' },
	'en' => { 'layout' => 'us' },
	'es' => { 'layout' => 'latam' },
	'fr' => { 'layout' => 'us', 'variant' => 'altgr-intl' },
    },
    'UY' => {
	'es' => { 'layout' => 'latam' },
    },
    'UZ' => {
	'uz' => { 'layout' => 'uz' },
    },
    'VE' => {
	'es' => { 'layout' => 'latam' },
    },
    'VN' => {
	'vi' => { 'layout' => 'vn' },
    },
    'YE' => {
	'ar' => { 'layout' => 'ara' },
    },
    'ZA' => {
	'en' => { 'layout' => 'za' },
    },
);

%countries_keyboards = (
    'AD' => { 'layout' => 'ad' },
    'AE' => { 'layout' => 'ara' },
    'AF' => { 'layout' => 'af' },
    'AL' => { 'layout' => 'al' },
    'AM' => { 'layout' => 'am' },
    'AR' => { 'layout' => 'latam' },
    'AZ' => { 'layout' => 'az' },
    'BA' => { 'layout' => 'ba' },
    'BD' => { 'layout' => 'bd' },
    'BE' => { 'layout' => 'be' },
    'BG' => { 'layout' => 'bg' },
    'BH' => { 'layout' => 'ara' },
    'BO' => { 'layout' => 'latam' },
    'BR' => { 'layout' => 'br' },
    'BT' => { 'layout' => 'bt' },
    'BY' => { 'layout' => 'by' },
    'CA' => { 'layout' => 'ca' },
    'CD' => { 'layout' => 'cd' },
    'CH' => { 'layout' => 'ch' },
    'CL' => { 'layout' => 'latam' },
    'CN' => { 'layout' => 'cn' },
    'CO' => { 'layout' => 'latam' },
    'CR' => { 'layout' => 'latam' },
    'CU' => { 'layout' => 'latam' },
    'CZ' => { 'layout' => 'cz' },
    'DE' => { 'layout' => 'de' },
    'DK' => { 'layout' => 'dk' },
    'DO' => { 'layout' => 'latam' },
    'DZ' => { 'layout' => 'ara' },
    'EC' => { 'layout' => 'latam' },
    'EE' => { 'layout' => 'ee' },
    'EG' => { 'layout' => 'ara' },
    'EH' => { 'layout' => 'ara' },
    'ES' => { 'layout' => 'es' },
    'ET' => { 'layout' => 'et' },
    'FI' => { 'layout' => 'fi' },
    'FO' => { 'layout' => 'fo' },
    'FR' => { 'layout' => 'fr' },
    'GB' => { 'layout' => 'gb' },
    'GE' => { 'layout' => 'ge' },
    'GH' => { 'layout' => 'gh' },
    'GN' => { 'layout' => 'gn' },
    'GR' => { 'layout' => 'gr' },
    'GT' => { 'layout' => 'latam' },
    'HN' => { 'layout' => 'latam' },
    'HR' => { 'layout' => 'hr' },
    'HT' => { 'layout' => 'latam' },
    'HU' => { 'layout' => 'hu' },
    'IE' => { 'layout' => 'ie' },
    'IL' => { 'layout' => 'il' },
    'IN' => { 'layout' => 'in' },
    'IQ' => { 'layout' => 'iq' },
    'IR' => { 'layout' => 'ir' },
    'IS' => { 'layout' => 'is' },
    'IT' => { 'layout' => 'it' },
    'JO' => { 'layout' => 'ara' },
    'JP' => { 'layout' => 'jp' },
    'KG' => { 'layout' => 'kg' },
    'KH' => { 'layout' => 'kh' },
    'KR' => { 'layout' => 'kr' },
    'KW' => { 'layout' => 'ara' },
    'KZ' => { 'layout' => 'kz' },
    'LA' => { 'layout' => 'la' },
    'LB' => { 'layout' => 'ara' },
    'LK' => { 'layout' => 'lk' },
    'LT' => { 'layout' => 'lt' },
    'LV' => { 'layout' => 'lv' },
    'LY' => { 'layout' => 'ara' },
    'MA' => { 'layout' => 'ara', 'ambiguous' => 1 },
    'ME' => { 'layout' => 'me' },
    'MK' => { 'layout' => 'mk' },
    'MM' => { 'layout' => 'mm' },
    'MN' => { 'layout' => 'mn' },
    'MR' => { 'layout' => 'ara' },
    'MT' => { 'layout' => 'mt' },
    'MV' => { 'layout' => 'mv' },
    'MX' => { 'layout' => 'latam' },
    'NG' => { 'layout' => 'ng' },
    'NI' => { 'layout' => 'latam' },
    'NL' => { 'layout' => 'nl' },
    'NO' => { 'layout' => 'no' },
    'NP' => { 'layout' => 'np' },
    'OM' => { 'layout' => 'ara' },
    'PA' => { 'layout' => 'latam' },
    'PE' => { 'layout' => 'latam' },
    'PK' => { 'layout' => 'pk' },
    'PL' => { 'layout' => 'pl' },
    'PR' => { 'layout' => 'latam' },
    'PS' => { 'layout' => 'ara' },
    'PT' => { 'layout' => 'pt' },
    'PY' => { 'layout' => 'latam' },
    'QA' => { 'layout' => 'ara' },
    'RO' => { 'layout' => 'ro' },
    'RS' => { 'layout' => 'rs' },
    'RU' => { 'layout' => 'ru' },
    'SA' => { 'layout' => 'ara' },
    'SD' => { 'layout' => 'ara' },
    'SE' => { 'layout' => 'se' },
    'SI' => { 'layout' => 'si' },
    'SK' => { 'layout' => 'sk' },
    'SV' => { 'layout' => 'latam' },
    'SY' => { 'layout' => 'ara', 'ambiguous' => 1 },
    'TH' => { 'layout' => 'th' },
    'TJ' => { 'layout' => 'tj' },
    'TN' => { 'layout' => 'ara' },
    'TR' => { 'layout' => 'tr' },
    'UA' => { 'layout' => 'ua' },
    'US' => { 'layout' => 'us', 'ambiguous' => 1 },
    'UY' => { 'layout' => 'latam' },
    'UZ' => { 'layout' => 'uz' },
    'VE' => { 'layout' => 'latam' },
    'VN' => { 'layout' => 'vn' },
    'YE' => { 'layout' => 'ara' },
    'ZA' => { 'layout' => 'za' },
);

%languages_keyboards = (
    'ak' => { 'layout' => 'gh', 'variant' => 'akan' },
    'am' => { 'layout' => 'et' },
    'ar' => { 'layout' => 'ara', 'ambiguous' => 1 },
    'ast' => { 'layout' => 'es', 'variant' => 'ast' },
    'az' => { 'layout' => 'az' },
    'be' => { 'layout' => 'by' },
    'ber' => { 'layout' => 'ma', 'variant' => 'tifinagh' },
    'bg' => { 'layout' => 'bg' },
    'bn' => { 'layout' => 'bd', 'ambiguous' => 1 },
    'bo' => { 'layout' => 'cn', 'variant' => 'tib' },
    'bs' => { 'layout' => 'ba' },
    'ca' => { 'layout' => 'ad', 'ambiguous' => 1 },
    'chr' => { 'layout' => 'us', 'variant' => 'chr' },
    'cs' => { 'layout' => 'cz' },
    'csb' => { 'layout' => 'pl', 'variant' => 'csb' },
    'cv' => { 'layout' => 'ru', 'variant' => 'cv' },
    'da' => { 'layout' => 'dk' },
    'de' => { 'layout' => 'be', 'ambiguous' => 1 },
    'dsb' => { 'layout' => 'de', 'variant' => 'dsb' },
    'dv' => { 'layout' => 'mv' },
    'dz' => { 'layout' => 'bt' },
    'ee' => { 'layout' => 'gh', 'variant' => 'ewe' },
    'el' => { 'layout' => 'gr' },
    'en' => { 'layout' => 'us', 'ambiguous' => 1 },
    'eo' => { 'layout' => 'epo' },
    'es' => { 'layout' => 'latam', 'ambiguous' => 1 },
    'et' => { 'layout' => 'ee' },
    'fa' => { 'layout' => 'ir' },
    'ff' => { 'layout' => 'gh', 'variant' => 'fula' },
    'fi' => { 'layout' => 'fi' },
    'fo' => { 'layout' => 'fo' },
    'fr' => { 'layout' => 'be', 'ambiguous' => 1 },
    'gaa' => { 'layout' => 'gh', 'variant' => 'ga' },
    'gd' => { 'layout' => 'ie', 'variant' => 'CloGaelach' },
    'gsw' => { 'layout' => 'ch' },
    'gu' => { 'layout' => 'in', 'variant' => 'guj' },
    'ha' => { 'layout' => 'gh', 'variant' => 'hausa', 'ambiguous' => 1 },
    'he' => { 'layout' => 'il' },
    'hi' => { 'layout' => 'in', 'variant' => 'bolnagri' },
    'hr' => { 'layout' => 'hr' },
    'hu' => { 'layout' => 'hu' },
    'hy' => { 'layout' => 'am' },
    'ig' => { 'layout' => 'ng', 'variant' => 'igbo' },
    'is' => { 'layout' => 'is' },
    'it' => { 'layout' => 'it' },
    'iu' => { 'layout' => 'ca', 'variant' => 'ike' },
    'ja' => { 'layout' => 'jp' },
    'ka' => { 'layout' => 'ge', 'ambiguous' => 1 },
    'kk' => { 'layout' => 'kz' },
    'km' => { 'layout' => 'kh' },
    'kn' => { 'layout' => 'in', 'variant' => 'kan' },
    'ko' => { 'layout' => 'kr' },
    'ku' => { 'layout' => 'iq', 'ambiguous' => 1 },
    'kv' => { 'layout' => 'ru', 'variant' => 'kom' },
    'ky' => { 'layout' => 'kg' },
    'lo' => { 'layout' => 'la' },
    'lt' => { 'layout' => 'lt' },
    'lv' => { 'layout' => 'lv' },
    'mi' => { 'layout' => 'mao' },
    'mk' => { 'layout' => 'mk' },
    'ml' => { 'layout' => 'in', 'variant' => 'mal' },
    'mng' => { 'layout' => 'mn' },
    'mt' => { 'layout' => 'mt' },
    'my' => { 'layout' => 'mm' },
    'ne' => { 'layout' => 'np' },
    'nl' => { 'layout' => 'nl' },
    'no' => { 'layout' => 'no' },
    'or' => { 'layout' => 'in', 'variant' => 'ori' },
    'os' => { 'layout' => 'ge', 'variant' => 'os', 'ambiguous' => 1 },
    'pa' => { 'layout' => 'in', 'variant' => 'guru' },
    'pl' => { 'layout' => 'pl' },
    'ps' => { 'layout' => 'af', 'variant' => 'ps' },
    'pt' => { 'layout' => 'br', 'ambiguous' => 1 },
    'ro' => { 'layout' => 'ro' },
    'ru' => { 'layout' => 'ru', 'ambiguous' => 1 },
    'sah' => { 'layout' => 'ru', 'variant' => 'sah' },
    'se' => { 'layout' => 'fi', 'variant' => 'smi', 'ambiguous' => 1 },
    'si' => { 'layout' => 'lk' },
    'sk' => { 'layout' => 'sk' },
    'sl' => { 'layout' => 'si' },
    'smi' => { 'layout' => 'fi', 'variant' => 'smi' },
    'sq' => { 'layout' => 'al' },
    'sr' => { 'layout' => 'me', 'ambiguous' => 1 },
    'sv' => { 'layout' => 'se' },
    'syr' => { 'layout' => 'sy' },
    'ta' => { 'layout' => 'in', 'variant' => 'tam_unicode', 'ambiguous' => 1 },
    'te' => { 'layout' => 'in', 'variant' => 'tel' },
    'tg' => { 'layout' => 'tj' },
    'th' => { 'layout' => 'th' },
    'tr' => { 'layout' => 'tr' },
    'tt' => { 'layout' => 'ru', 'variant' => 'tt' },
    'udm' => { 'layout' => 'ru', 'variant' => 'udm' },
    'uk' => { 'layout' => 'ua' },
    'ur' => { 'layout' => 'pk' },
    'uz' => { 'layout' => 'uz' },
    'vi' => { 'layout' => 'vn' },
    'xal' => { 'layout' => 'ru', 'variant' => 'xal' },
    'yo' => { 'layout' => 'ng', 'variant' => 'yoruba' },
    'zh' => { 'layout' => 'cn' },
);
{ 'layout' => 'ad' },
{ 'layout' => 'af' },
{ 'layout' => 'af', 'variant' => 'ps' },
{ 'layout' => 'af', 'variant' => 'uz' },
{ 'layout' => 'al' },
{ 'layout' => 'am' },
{ 'layout' => 'ara' },
{ 'layout' => 'az' },
{ 'layout' => 'ba' },
{ 'layout' => 'bd' },
{ 'layout' => 'be' },
{ 'layout' => 'bg' },
{ 'layout' => 'br' },
{ 'layout' => 'br', 'variant' => 'nativo-epo' },
{ 'layout' => 'bt' },
{ 'layout' => 'by' },
{ 'layout' => 'ca' },
{ 'layout' => 'ca', 'variant' => 'eng' },
{ 'layout' => 'ca', 'variant' => 'ike' },
{ 'layout' => 'cd' },
{ 'layout' => 'ch' },
{ 'layout' => 'ch', 'variant' => 'fr' },
{ 'layout' => 'cn' },
{ 'layout' => 'cn', 'variant' => 'tib' },
{ 'layout' => 'cz' },
{ 'layout' => 'de' },
{ 'layout' => 'de', 'variant' => 'dsb' },
{ 'layout' => 'dk' },
{ 'layout' => 'ee' },
{ 'layout' => 'epo' },
{ 'layout' => 'es' },
{ 'layout' => 'es', 'variant' => 'ast' },
{ 'layout' => 'es', 'variant' => 'cat' },
{ 'layout' => 'et' },
{ 'layout' => 'fi' },
{ 'layout' => 'fi', 'variant' => 'smi' },
{ 'layout' => 'fo' },
{ 'layout' => 'fr' },
{ 'layout' => 'fr', 'variant' => 'geo' },
{ 'layout' => 'gb' },
{ 'layout' => 'ge' },
{ 'layout' => 'ge', 'variant' => 'os' },
{ 'layout' => 'ge', 'variant' => 'ru' },
{ 'layout' => 'gh' },
{ 'layout' => 'gh', 'variant' => 'akan' },
{ 'layout' => 'gh', 'variant' => 'ewe' },
{ 'layout' => 'gh', 'variant' => 'fula' },
{ 'layout' => 'gh', 'variant' => 'ga' },
{ 'layout' => 'gh', 'variant' => 'hausa' },
{ 'layout' => 'gn' },
{ 'layout' => 'gr' },
{ 'layout' => 'hr' },
{ 'layout' => 'hu' },
{ 'layout' => 'ie' },
{ 'layout' => 'ie', 'variant' => 'CloGaelach' },
{ 'layout' => 'il' },
{ 'layout' => 'in' },
{ 'layout' => 'in', 'variant' => 'ben' },
{ 'layout' => 'in', 'variant' => 'bolnagri' },
{ 'layout' => 'in', 'variant' => 'guj' },
{ 'layout' => 'in', 'variant' => 'guru' },
{ 'layout' => 'in', 'variant' => 'kan' },
{ 'layout' => 'in', 'variant' => 'mal' },
{ 'layout' => 'in', 'variant' => 'ori' },
{ 'layout' => 'in', 'variant' => 'tam_unicode' },
{ 'layout' => 'in', 'variant' => 'tel' },
{ 'layout' => 'in', 'variant' => 'urd-phonetic' },
{ 'layout' => 'iq' },
{ 'layout' => 'ir' },
{ 'layout' => 'ir', 'variant' => 'ku' },
{ 'layout' => 'is' },
{ 'layout' => 'it' },
{ 'layout' => 'it', 'variant' => 'geo' },
{ 'layout' => 'jp' },
{ 'layout' => 'kg' },
{ 'layout' => 'kh' },
{ 'layout' => 'kr' },
{ 'layout' => 'kz' },
{ 'layout' => 'kz', 'variant' => 'ruskaz' },
{ 'layout' => 'la' },
{ 'layout' => 'latam' },
{ 'layout' => 'lk' },
{ 'layout' => 'lk', 'variant' => 'tam_unicode' },
{ 'layout' => 'lt' },
{ 'layout' => 'lv' },
{ 'layout' => 'mao' },
{ 'layout' => 'ma', 'variant' => 'french' },
{ 'layout' => 'ma', 'variant' => 'tifinagh' },
{ 'layout' => 'me' },
{ 'layout' => 'mk' },
{ 'layout' => 'mm' },
{ 'layout' => 'mn' },
{ 'layout' => 'mt' },
{ 'layout' => 'mv' },
{ 'layout' => 'ng' },
{ 'layout' => 'ng', 'variant' => 'hausa' },
{ 'layout' => 'ng', 'variant' => 'igbo' },
{ 'layout' => 'ng', 'variant' => 'yoruba' },
{ 'layout' => 'nl' },
{ 'layout' => 'no' },
{ 'layout' => 'no', 'variant' => 'smi' },
{ 'layout' => 'np' },
{ 'layout' => 'pk' },
{ 'layout' => 'pk', 'variant' => 'ara' },
{ 'layout' => 'pl' },
{ 'layout' => 'pl', 'variant' => 'csb' },
{ 'layout' => 'pl', 'variant' => 'ru_phonetic_dvorak' },
{ 'layout' => 'pt' },
{ 'layout' => 'pt', 'variant' => 'nativo-epo' },
{ 'layout' => 'ro' },
{ 'layout' => 'rs' },
{ 'layout' => 'ru' },
{ 'layout' => 'ru', 'variant' => 'cv' },
{ 'layout' => 'ru', 'variant' => 'kom' },
{ 'layout' => 'ru', 'variant' => 'os_legacy' },
{ 'layout' => 'ru', 'variant' => 'sah' },
{ 'layout' => 'ru', 'variant' => 'tt' },
{ 'layout' => 'ru', 'variant' => 'udm' },
{ 'layout' => 'ru', 'variant' => 'xal' },
{ 'layout' => 'se' },
{ 'layout' => 'se', 'variant' => 'rus' },
{ 'layout' => 'se', 'variant' => 'smi' },
{ 'layout' => 'si' },
{ 'layout' => 'sk' },
{ 'layout' => 'sy' },
{ 'layout' => 'sy', 'variant' => 'ku' },
{ 'layout' => 'th' },
{ 'layout' => 'tj' },
{ 'layout' => 'tr' },
{ 'layout' => 'tr', 'variant' => 'ku' },
{ 'layout' => 'ua' },
{ 'layout' => 'us' },
{ 'layout' => 'us', 'variant' => 'altgr-intl' },
{ 'layout' => 'us', 'variant' => 'chr' },
{ 'layout' => 'uz' },
{ 'layout' => 'vn' },
{ 'layout' => 'za' },

Reply to: