Hello,

Samuel Thibault, le Tue 27 Jan 2009 00:46:42 +0100, a écrit :
> BTW, I've roughly finished a patch that does "parse base.xml to generate
> locale/country -> layout/variant default choice",

Now that xkeyboard-config got uploaded with the fixes, here is the
diff I get with my patch.  As can be seen it's mostly additions and
a few bugfixes, there's just one thing that really changes: now
canadian keyboards are assumed to be 'ca' by default, unless speaking
english. That however also suits the needs of
https://bugs.launchpad.net/ubuntu/+bug/64418
which was the reason for the introduction of a special rule.

Samuel
--- config.proto.tinkered       2009-01-31 00:59:49.000000000 +0100
+++ console-setup.config        2009-02-03 02:35:42.000000000 +0100
@@ -1,94 +1,465 @@
 case "$locale" in
-    fr_CA*)
+    # Keyboards for full locales
+    uz_AF*)
+       default_layout=af
+       default_variant=uz
+       ;;
+    ps_AF*)
+       default_layout=af
+       default_variant=ps
+       ;;
+    eo_BR*)
+       default_layout=br
+       default_variant=nativo-epo
+       ;;
+    en_CA*)
        default_layout=ca
+       default_variant=eng
+       ;;
+    iu_CA*)
+       default_layout=ca
+       default_variant=ike
        ;;
     fr_CH*)
        default_layout=ch
        default_variant=fr
        ;;
+    bo_CN*)
+       default_layout=cn
+       default_variant=tib
+       ;;
+    dsb_DE*)
+       default_layout=de
+       default_variant=dsb
+       ;;
+    ca_ES*)
+       default_layout=es
+       default_variant=cat
+       ;;
+    ast_ES*)
+       default_layout=es
+       default_variant=ast
+       ;;
     se_FI*)
        default_layout=fi
        default_variant=smi
        ;;
+    smi_FI*)
+       default_layout=fi
+       default_variant=smi
+       ;;
+    ka_FR*)
+       default_layout=fr
+       default_variant=geo
+       ;;
+    ru_GE*)
+       default_layout=ge
+       default_variant=ru
+       ;;
+    os_GE*)
+       default_layout=ge
+       default_variant=os
+       ;;
+    gaa_GH*)
+       default_layout=gh
+       default_variant=ga
+       ;;
+    ak_GH*)
+       default_layout=gh
+       default_variant=akan
+       ;;
+    ff_GH*)
+       default_layout=gh
+       default_variant=fula
+       ;;
+    ha_GH*)
+       default_layout=gh
+       default_variant=hausa
+       ;;
+    ee_GH*)
+       default_layout=gh
+       default_variant=ewe
+       ;;
+    gd_IE*)
+       default_layout=ie
+       default_variant=CloGaelach
+       ;;
+    ur_IN*)
+       default_layout=in
+       default_variant=urd-phonetic
+       ;;
+    hi_IN*)
+       default_layout=in
+       default_variant=bolnagri
+       ;;
+    te_IN*)
+       default_layout=in
+       default_variant=tel
+       ;;
+    ml_IN*)
+       default_layout=in
+       default_variant=mal
+       ;;
+    kn_IN*)
+       default_layout=in
+       default_variant=kan
+       ;;
+    pa_IN*)
+       default_layout=in
+       default_variant=guru
+       ;;
+    or_IN*)
+       default_layout=in
+       default_variant=ori
+       ;;
+    bn_IN*)
+       default_layout=in
+       default_variant=ben
+       ;;
+    ta_IN*)
+       default_layout=in
+       default_variant=tam_unicode
+       ;;
+    gu_IN*)
+       default_layout=in
+       default_variant=guj
+       ;;
+    ku_IR*)
+       default_layout=ir
+       default_variant=ku
+       ;;
+    ka_IT*)
+       default_layout=it
+       default_variant=geo
+       ;;
+    ru_KZ*)
+       default_layout=kz
+       default_variant=ruskaz
+       ;;
+    ta_LK*)
+       default_layout=lk
+       default_variant=tam_unicode
+       ;;
+    fr_MA*)
+       default_layout=ma
+       default_variant=french
+       ;;
+    ber_MA*)
+       default_layout=ma
+       default_variant=tifinagh
+       ;;
+    yo_NG*)
+       default_layout=ng
+       default_variant=yoruba
+       ;;
+    ha_NG*)
+       default_layout=ng
+       default_variant=hausa
+       ;;
+    ig_NG*)
+       default_layout=ng
+       default_variant=igbo
+       ;;
     se_NO*)
        default_layout=no
        default_variant=smi
        ;;
+    ar_PK*)
+       default_layout=pk
+       default_variant=ara
+       ;;
+    ru_PL*)
+       default_layout=pl
+       default_variant=ru_phonetic_dvorak
+       ;;
+    csb_PL*)
+       default_layout=pl
+       default_variant=csb
+       ;;
+    eo_PT*)
+       default_layout=pt
+       default_variant=nativo-epo
+       ;;
+    cv_RU*)
+       default_layout=ru
+       default_variant=cv
+       ;;
+    xal_RU*)
+       default_layout=ru
+       default_variant=xal
+       ;;
+    tt_RU*)
+       default_layout=ru
+       default_variant=tt
+       ;;
+    os_RU*)
+       default_layout=ru
+       default_variant=os_legacy
+       ;;
+    udm_RU*)
+       default_layout=ru
+       default_variant=udm
+       ;;
+    sah_RU*)
+       default_layout=ru
+       default_variant=sah
+       ;;
+    kv_RU*)
+       default_layout=ru
+       default_variant=kom
+       ;;
     se_SE*)
        default_layout=se
        default_variant=smi
        ;;
+    ru_SE*)
+       default_layout=se
+       default_variant=rus
+       ;;
+    syr_SY*)
+       default_layout=sy
+       ;;
+    ku_SY*)
+       default_layout=sy
+       default_variant=ku
+       ;;
+    ku_TR*)
+       default_layout=tr
+       default_variant=ku
+       ;;
+    fr_US*)
+       default_layout=us
+       default_variant=altgr-intl
+       ;;
+    de_US*)
+       default_layout=us
+       default_variant=altgr-intl
+       ;;
+    chr_US*)
+       default_layout=us
+       default_variant=chr
+       ;;
+    es_US*)
+       default_layout=latam
+       ;;
+    # Keyboards for countries
+    *_AD*)
+       default_layout=ad
+       ;;
+    *_AE*)
+       default_layout=ara
+       ;;
+    *_AF*)
+       default_layout=af
+       layout_priority=critical
+       ;;
     *_AL*)
        default_layout=al
        ;;
+    *_AM*)
+       default_layout=am
+       ;;
+    *_AR*)
+       default_layout=latam
+       ;;
     *_AZ*)
        default_layout=az
        ;;
+    *_BA*)
+       default_layout=ba
+       ;;
     *_BD*)
        default_layout=bd
        ;;
     *_BE*)
        default_layout=be
+       layout_priority=critical
        ;;
     *_BG*)
        default_layout=bg
        layout_priority=critical
        ;;
+    *_BH*)
+       default_layout=ara
+       ;;
+    *_BO*)
+       default_layout=latam
+       ;;
     *_BR*)
        default_layout=br
+       layout_priority=critical
+       ;;
+    *_BT*)
+       default_layout=bt
        ;;
     *_BY*)
        default_layout=by
        ;;
     *_CA*)
-       default_layout=us
+       default_layout=ca
+       layout_priority=critical
+       ;;
+    *_CD*)
+       default_layout=cd
        ;;
     *_CH*)
        default_layout=ch
        layout_priority=critical
        ;;
+    *_CL*)
+       default_layout=latam
+       ;;
+    *_CN*)
+       default_layout=cn
+       layout_priority=critical
+       ;;
+    *_CO*)
+       default_layout=latam
+       ;;
+    *_CR*)
+       default_layout=latam
+       ;;
+    *_CU*)
+       default_layout=latam
+       ;;
     *_CZ*)
        default_layout=cz
        layout_priority=critical
        ;;
+    *_DE*)
+       default_layout=de
+       layout_priority=critical
+       ;;
     *_DK*)
        default_layout=dk
        ;;
+    *_DO*)
+       default_layout=latam
+       ;;
+    *_DZ*)
+       default_layout=ara
+       ;;
+    *_EC*)
+       default_layout=latam
+       ;;
     *_EE*)
        default_layout=ee
        ;;
+    *_EG*)
+       default_layout=ara
+       ;;
+    *_EH*)
+       default_layout=ara
+       ;;
     *_ES*)
        default_layout=es
+       layout_priority=critical
+       ;;
+    *_ET*)
+       default_layout=et
        ;;
     *_FI*)
        default_layout=fi
-       default_variant=fi
+       layout_priority=critical
+       ;;
+    *_FO*)
+       default_layout=fo
+       ;;
+    *_FR*)
+       default_layout=fr
+       layout_priority=critical
        ;;
     *_GB*)
        default_layout=gb
        ;;
+    *_GE*)
+       default_layout=ge
+       layout_priority=critical
+       ;;
+    *_GH*)
+       default_layout=gh
+       layout_priority=critical
+       ;;
+    *_GN*)
+       default_layout=gn
+       ;;
+    *_GR*)
+       default_layout=gr
+       ;;
+    *_GT*)
+       default_layout=latam
+       ;;
+    *_HN*)
+       default_layout=latam
+       ;;
+    *_HR*)
+       default_layout=hr
+       ;;
+    *_HT*)
+       default_layout=latam
+       ;;
     *_HU*)
        default_layout=hu
        ;;
     *_IE*)
        default_layout=ie
+       layout_priority=critical
        ;;
     *_IL*)
        default_layout=il
        layout_priority=critical
        ;;
+    *_IN*)
+       default_layout=in
+       layout_priority=critical
+       ;;
+    *_IQ*)
+       default_layout=iq
+       layout_priority=critical
+       ;;
     *_IR*)
        default_layout=ir
+       layout_priority=critical
        ;;
     *_IS*)
        default_layout=is
        ;;
     *_IT*)
        default_layout=it
+       layout_priority=critical
+       ;;
+    *_JO*)
+       default_layout=ara
        ;;
     *_JP*)
        default_layout=jp
        ;;
+    *_KG*)
+       default_layout=kg
+       ;;
+    *_KH*)
+       default_layout=kh
+       ;;
+    *_KR*)
+       default_layout=kr
+       ;;
+    *_KW*)
+       default_layout=ara
+       ;;
+    *_KZ*)
+       default_layout=kz
+       layout_priority=critical
+       ;;
+    *_LA*)
+       default_layout=la
+       ;;
+    *_LB*)
+       default_layout=ara
+       ;;
+    *_LK*)
+       default_layout=lk
+       layout_priority=critical
+       ;;
     *_LT*)
        default_layout=lt
        layout_priority=critical
@@ -96,41 +467,121 @@
     *_LV*)
        default_layout=lv
        ;;
+    *_LY*)
+       default_layout=ara
+       ;;
+    *_MA*)
+       default_layout=ara
+       layout_priority=critical
+       ;;
+    *_ME*)
+       default_layout=me
+       ;;
     *_MK*)
        default_layout=mk
        ;;
+    *_MM*)
+       default_layout=mm
+       ;;
     *_MN*)
        default_layout=mn
        ;;
+    *_MR*)
+       default_layout=ara
+       ;;
     *_MT*)
        default_layout=mt
        layout_priority=critical
        ;;
+    *_MV*)
+       default_layout=mv
+       ;;
+    *_MX*)
+       default_layout=latam
+       ;;
+    *_NG*)
+       default_layout=ng
+       layout_priority=critical
+       ;;
+    *_NI*)
+       default_layout=latam
+       ;;
     *_NL*)
        default_layout=nl
        ;;
     *_NO*)
        default_layout=no
+       layout_priority=critical
+       ;;
+    *_NP*)
+       default_layout=np
+       ;;
+    *_OM*)
+       default_layout=ara
+       ;;
+    *_PA*)
+       default_layout=latam
+       ;;
+    *_PE*)
+       default_layout=latam
+       ;;
+    *_PK*)
+       default_layout=pk
+       layout_priority=critical
        ;;
     *_PL*)
        default_layout=pl
+       layout_priority=critical
+       ;;
+    *_PR*)
+       default_layout=latam
+       ;;
+    *_PS*)
+       default_layout=ara
        ;;
     *_PT*)
        default_layout=pt
+       layout_priority=critical
+       ;;
+    *_PY*)
+       default_layout=latam
+       ;;
+    *_QA*)
+       default_layout=ara
        ;;
     *_RO*)
        default_layout=ro
        ;;
+    *_RS*)
+       default_layout=rs
+       ;;
     *_RU*)
        default_layout=ru
        layout_priority=critical
        ;;
+    *_SA*)
+       default_layout=ara
+       ;;
+    *_SD*)
+       default_layout=ara
+       ;;
+    *_SE*)
+       default_layout=se
+       layout_priority=critical
+       ;;
     *_SI*)
        default_layout=si
        ;;
     *_SK*)
        default_layout=sk
        ;;
+    *_SV*)
+       default_layout=latam
+       ;;
+    *_SY*)
+       default_layout=ara
+       layout_priority=critical
+       ;;
     *_TH*)
        default_layout=th
        layout_priority=critical
@@ -138,6 +589,9 @@
     *_TJ*)
        default_layout=tj
        ;;
+    *_TN*)
+       default_layout=ara
+       ;;
     *_TR*)
        default_layout=tr
        layout_priority=critical
@@ -145,86 +599,379 @@
     *_UA*)
        default_layout=ua
        ;;
-    en_US*)
+    *_US*)
        default_layout=us
+       layout_priority=critical
+       ;;
+    *_UY*)
+       default_layout=latam
+       ;;
+    *_UZ*)
+       default_layout=uz
+       ;;
+    *_VE*)
+       default_layout=latam
        ;;
     *_VN*)
        default_layout=vn
        ;;
-  
-  
-    
*_AR*|*_BO*|*_CL*|*_CO*|*_CR*|*_DO*|*_EC*|*_GT*|*_HN*|*_MX*|*_NI*|*_PA*|*_PE*|es_PR*|*_PY*|*_SV*|es_US*|*_UY*|*_VE*)
-       default_layout=latam
+    *_YE*)
+       default_layout=ara
+       ;;
+    *_ZA*)
+       default_layout=za
+       ;;
+    # Keyboards for specific languages
+    ak_*)
+       default_layout=gh
+       default_variant=akan
+       ;;
+    am_*)
+       default_layout=et
        ;;
     ar_*)
        default_layout=ara
+       layout_priority=critical
+       ;;
+    ast_*)
+       default_layout=es
+       default_variant=ast
+       ;;
+    az_*)
+       default_layout=az
+       ;;
+    be_*)
+       default_layout=by
+       ;;
+    ber_*)
+       default_layout=ma
+       default_variant=tifinagh
+       ;;
+    bg_*)
+       default_layout=bg
+       ;;
+    bn_*)
+       default_layout=bd
+       layout_priority=critical
+       ;;
+    bo_*)
+       default_layout=cn
+       default_variant=tib
        ;;
     bs_*)
        default_layout=ba
        ;;
+    ca_*)
+       default_layout=ad
+       layout_priority=critical
+       ;;
+    chr_*)
+       default_layout=us
+       default_variant=chr
+       ;;
+    cs_*)
+       default_layout=cz
+       ;;
+    csb_*)
+       default_layout=pl
+       default_variant=csb
+       ;;
+    cv_*)
+       default_layout=ru
+       default_variant=cv
+       ;;
+    da_*)
+       default_layout=dk
+       ;;
     de_*)
+       default_layout=be
+       layout_priority=critical
+       ;;
+    dsb_*)
        default_layout=de
+       default_variant=dsb
+       ;;
+    dv_*)
+       default_layout=mv
+       ;;
+    dz_*)
+       default_layout=bt
+       ;;
+    ee_*)
+       default_layout=gh
+       default_variant=ewe
        ;;
     el_*)
        default_layout=gr
        ;;
-    eo|eo.*|eo_*|e...@*)
+    en_*)
+       default_layout=us
+       layout_priority=critical
+       ;;
+    eo_*)
        default_layout=epo
+       layout_priority=critical
+       ;;
+    es_*)
+       default_layout=latam
+       layout_priority=critical
+       ;;
+    et_*)
+       default_layout=ee
+       ;;
+    fa_*)
+       default_layout=ir
+       ;;
+    ff_*)
+       default_layout=gh
+       default_variant=fula
+       ;;
+    fi_*)
+       default_layout=fi
+       ;;
+    fo_*)
+       default_layout=fo
        ;;
     fr_*)
-       default_layout=fr
+       default_layout=be
        layout_priority=critical
        ;;
+    gaa_*)
+       default_layout=gh
+       default_variant=ga
+       ;;
+    gd_*)
+       default_layout=ie
+       default_variant=CloGaelach
+       ;;
+    gsw_*)
+       default_layout=ch
+       ;;
     gu_*)
        default_layout=in
        default_variant=guj
        ;;
+    ha_*)
+       default_layout=gh
+       default_variant=hausa
+       layout_priority=critical
+       ;;
+    he_*)
+       default_layout=il
+       ;;
     hi_*)
        default_layout=in
-       default_variant=deva
+       default_variant=bolnagri
        ;;
     hr_*)
        default_layout=hr
        ;;
+    hu_*)
+       default_layout=hu
+       ;;
     hy_*)
        default_layout=am
        ;;
+    ig_*)
+       default_layout=ng
+       default_variant=igbo
+       ;;
+    is_*)
+       default_layout=is
+       ;;
+    it_*)
+       default_layout=it
+       ;;
+    iu_*)
+       default_layout=ca
+       default_variant=ike
+       ;;
+    ja_*)
+       default_layout=jp
+       ;;
     ka_*)
        default_layout=ge
        layout_priority=critical
        ;;
+    kk_*)
+       default_layout=kz
+       ;;
+    km_*)
+       default_layout=kh
+       ;;
     kn_*)
        default_layout=in
        default_variant=kan
        ;;
+    ko_*)
+       default_layout=kr
+       ;;
+    ku_*)
+       default_layout=iq
+       layout_priority=critical
+       ;;
+    kv_*)
+       default_layout=ru
+       default_variant=kom
+       ;;
+    ky_*)
+       default_layout=kg
+       ;;
     lo_*)
        default_layout=la
        ;;
+    lt_*)
+       default_layout=lt
+       ;;
+    lv_*)
+       default_layout=lv
+       ;;
+    mi_*)
+       default_layout=mao
+       ;;
+    mk_*)
+       default_layout=mk
+       ;;
     ml_*)
        default_layout=in
        default_variant=mal
        ;;
+    mng_*)
+       default_layout=mn
+       ;;
+    mt_*)
+       default_layout=mt
+       ;;
+    my_*)
+       default_layout=mm
+       ;;
+    ne_*)
+       default_layout=np
+       ;;
+    nl_*)
+       default_layout=nl
+       ;;
+    no_*)
+       default_layout=no
+       ;;
+    or_*)
+       default_layout=in
+       default_variant=ori
+       ;;
+    os_*)
+       default_layout=ge
+       default_variant=os
+       layout_priority=critical
+       ;;
     pa_*)
        default_layout=in
        default_variant=guru
        ;;
+    pl_*)
+       default_layout=pl
+       ;;
+    ps_*)
+       default_layout=af
+       default_variant=ps
+       ;;
+    pt_*)
+       default_layout=br
+       layout_priority=critical
+       ;;
+    ro_*)
+       default_layout=ro
+       ;;
+    ru_*)
+       default_layout=ru
+       layout_priority=critical
+       ;;
+    sah_*)
+       default_layout=ru
+       default_variant=sah
+       ;;
+    se_*)
+       default_layout=fi
+       default_variant=smi
+       layout_priority=critical
+       ;;
+    si_*)
+       default_layout=lk
+       ;;
+    sk_*)
+       default_layout=sk
+       ;;
+    sl_*)
+       default_layout=si
+       ;;
+    smi_*)
+       default_layout=fi
+       default_variant=smi
+       ;;
+    sq_*)
+       default_layout=al
+       ;;
     sr_*)
-       default_layout=cs
+       default_layout=me
        layout_priority=critical
        ;;
     sv_*)
        default_layout=se
-       default_variant=basic
+       ;;
+    syr_*)
+       default_layout=sy
        ;;
     ta_*)
        default_layout=in
-       default_variant=tam
+       default_variant=tam_unicode
+       layout_priority=critical
        ;;
     te_*)
        default_layout=in
        default_variant=tel
        ;;
-  
+    tg_*)
+       default_layout=tj
+       ;;
+    th_*)
+       default_layout=th
+       ;;
+    tr_*)
+       default_layout=tr
+       ;;
+    tt_*)
+       default_layout=ru
+       default_variant=tt
+       ;;
+    udm_*)
+       default_layout=ru
+       default_variant=udm
+       ;;
+    uk_*)
+       default_layout=ua
+       ;;
+    ur_*)
+       default_layout=pk
+       layout_priority=critical
+       ;;
+    uz_*)
+       default_layout=uz
+       layout_priority=critical
+       ;;
+    vi_*)
+       default_layout=vn
+       ;;
+    xal_*)
+       default_layout=ru
+       default_variant=xal
+       ;;
+    yo_*)
+       default_layout=ng
+       default_variant=yoruba
+       ;;
+    zh_*)
+       default_layout=cn
+       ;;
+    # Fallback
     *)
        default_layout=us
        ;;

Reply via email to