test/data: sync from xkeyboard-config 2.30
authorRan Benita <ran@unusedvar.com>
Mon, 7 Sep 2020 08:35:22 +0000 (11:35 +0300)
committerRan Benita <ran@unusedvar.com>
Mon, 7 Sep 2020 08:36:49 +0000 (11:36 +0300)
Signed-off-by: Ran Benita <ran@unusedvar.com>
28 files changed:
test/data/keycodes/evdev
test/data/rules/base
test/data/rules/evdev
test/data/symbols/altwin
test/data/symbols/ca
test/data/symbols/capslock
test/data/symbols/ch
test/data/symbols/ctrl
test/data/symbols/cz
test/data/symbols/de
test/data/symbols/empty
test/data/symbols/il
test/data/symbols/in
test/data/symbols/inet
test/data/symbols/latin
test/data/symbols/level3
test/data/symbols/macintosh_vndr/apple
test/data/symbols/pc
test/data/symbols/ru
test/data/symbols/terminate
test/data/symbols/us
test/data/types/extra
test/data/types/iso9995
test/data/types/level5
test/data/types/mousekeys
test/data/types/numpad
test/data/types/pc
test/state.c

index 624ac68..d41799d 100644 (file)
@@ -281,6 +281,13 @@ default xkb_keycodes "evdev" {
        <I251> = 251;   // #define KEY_BRIGHTNESS_CYCLE    243
        <I252> = 252;   // #define KEY_BRIGHTNESS_ZERO     244
        <I253> = 253;   // #define KEY_DISPLAY_OFF         245
+       <I254> = 254;   // #define KEY_WWAN                246
+       <I255> = 255;   // #define KEY_RFKILL              247
+
+       <I372> = 372;   // #define KEY_FAVORITES           364
+       <I382> = 382;   // #define KEY_KEYBOARD            374
+       <I569> = 569;   // #define KEY_ROTATE_LOCK_TOGGLE  561
+       <I380> = 380;   // #define KEY_FULL_SCREEN         372
 
        // Fake keycodes for virtual keys
        <LVL3> =   92;
@@ -307,8 +314,3 @@ default xkb_keycodes "evdev" {
        // For Brazilian ABNT2
        alias <KPPT> = <I129>;
 };
-
-// PC98
-xkb_keycodes "pc98" {
-    include "evdev(evdev)"
-};
index 11e1b56..71aaa91 100644 (file)
@@ -1,4 +1,5 @@
-// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part
+// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.py FROM rules/*.part
+//
 //
 //  Rules for resolving XKB components for use with XFree86
 //  Copyright 1996 by Joseph Moss
 //              ori pk ru scc sy syr tel th tj tam ua uz
 
 // PC models
-! $pcmodels = pc101 pc102 pc104 pc105
+! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105
 
 // Jolla devices and keyboards
 ! $jollamodels = jollasbj
 
 // Microsoft models (using MS geometry)
-! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose
+! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose microsoftsurface
 
 // Nokia devices and keyboards
 ! $nokiamodels = nokiasu8w nokiarx44 nokiarx51
 
-// PC geometries - they have special geometry but symbols are mostly pc105
-! $pcgeometries = latitude
-
 // TypeMatrix geometries
 ! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106
 
@@ -85,7 +83,6 @@
 
 ! $sun_compat = sun_type6 sun_type6_suncompat sun_type7_suncompat suncompat
 
-! $htcdreamlayouts = us it de
 
 ! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \
               airkey \
               genius geniuscomfy2 \
               gyration honeywell_euroboard \
               hp250x hp5xx hp500fa hpdv5 \
-              hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx htcdream \
+              hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx \
               ibm_spacesaver ipaq inspiron intel \
               logiaccess logicda logicink \
               logiex110 logiclx300 \
               silvercrest \
               sk1300 sk2500 sk6200 sk7100 \
               sven sven303 symplon \
+              teck227 teck229 \
               toshiba_s3000 trust trustda \
               unitekkb1925 yahoo \
-              teck227 teck229 \
               apex300
 
 ! $inetmediakbds = acer_ferrari4k acer_laptop btc5090 btc9019u cherryblueb \
   omnikey101   =       northgate(omnikey101)
   sanwaskbkg3  =       sanwa(sanwaskbkg3)
  $pcmodels     =       pc(%m)
- $pcgeometries =       pc(%m)
   everex       =       everex(STEPnote)
   thinkpad     =       thinkpad(intl)
   thinkpad60   =       thinkpad(60)
   ws007sh      *                       =       pc+sharp_vndr/ws007sh(basic)
   ws011sh      *                       =       pc+sharp_vndr/ws011sh(basic)
   ws020sh      *                       =       pc+sharp_vndr/ws020sh(basic)
-  htcdream     $htcdreamlayouts        =       %l(htcdream)
   *            $nonlatin               =       pc+us+%l%(v):2
   *            *                       =       pc+%l%(v)
 
-! model                layout[1]                       =       symbols
-  *            ar                      =       pc+ara%(v[1])
-  *            ben                     =       pc+in(ben)
-  *            bs                      =       pc+ba%(v[1])
-  *            cs                      =       pc+rs%(v[1])
-  *            cz_qwerty                       =       pc+cz(qwerty)
-  *            dev                     =       pc+in(deva)
-  *            dvorak                  =       pc+us(dvorak)
-  *            dzdwi                   =       pc+bt%(v[1])
-  *            el                      =       pc+gr%(v[1])
-  *            en_US                   =       pc+latin%(v[1])
-  *            guj                     =       pc+in(guj)
-  *            gur                     =       pc+in(guru)
-  *            iu                      =       pc+ca(ike)
-  *            lo                      =       pc+la%(v[1])
-  *            kan                     =       pc+in(kan)
-  *            mi                      =       pc+mao%(v[1])
-  *            ogham                   =       pc+ie(ogam)
-  *            ori                     =       pc+ie(ori)
-  *            sapmi                   =       pc+no(smi)
-  *            sr                      =       pc+srp%(v[1])
-  *            syr                     =       pc+sy(syc)
-  *            tel                     =       pc+in(tel)
-  *            tml                     =       pc+in(tam)
-  *            yu                      =       pc+srp%(v[1])
-  *            fr-latin9                       =       pc+fr(latin9)
-  *            us_intl                 =       pc+us(alt-intl)
-  *            ben(basic)                      =       pc+in(ben)
-  *            ben(probhat)                    =       pc+in(ben_probhat)
-  *            dev(basic)                      =       pc+in(deva)
-  *            dvorak($dvoraklayouts)                  =       pc+%v(dvorak)
-  *            dvorak(basic)                   =       pc+us(dvorak)
-  *            dvorak(pl_basic)                        =       pc+pl(dvorak)
-  *            dvorak(pl)                      =       pc+pl(dvorak_quotes)
-  *            dvorak(pl_altquotes)                    =       pc+pl(dvorak_altquotes)
-  *            dzdwi(basic)                    =       pc+bt(basic)
-  *            fi(basic)                       =       pc+fi(classic)
-  *            ge(azerty_tskapo)                       =       pc+fr(geo)
-  *            guj(basic)                      =       pc+in(guj)
-  *            gur(basic)                      =       pc+in(guru)
-  *            ie(laptop)                      =       pc+ie(basic)
-  *            ie(CloGaelachLaptop)                    =       pc+ie(CloGaelach)
-  *            in(urd)                 =       pc+in(urd-phonetic)
-  *            iu(basic)                       =       pc+ca(ike)
-  *            lo(basic)                       =       pc+la(basic)
-  *            kan(basic)                      =       pc+in(kan)
-  *            mal(basic)                      =       pc+in(mal)
-  *            mal(mlplusnum)                  =       pc+in(mal)
-  *            ogham(basic)                    =       pc+ie(ogam)
-  *            ogham(laptop)                   =       pc+ie(ogam)
-  *            ogham(is434)                    =       pc+ie(ogam_is434)
-  *            ogham(is434laptop)                      =       pc+ie(ogam_is434)
-  *            ori(basic)                      =       pc+in(ori)
-  *            ro(de)                  =       pc+ro(winkeys)
-  *            ro(us)                  =       pc+ro(std)
-  *            ro(academic)                    =       pc+ro(std)
-  *            ro(std_comma)                   =       pc+ro(std)
-  *            ro(comma)                       =       pc+ro(basic)
-  *            ru(os)                  =       pc+ru(os_legacy)
-  *            pk(urd)                 =       pc+pk(urd-phonetic)
-  *            sapmi(basic)                    =       pc+no(smi)
-  *            sapmi(nodeadkeys)                       =       pc+no(smi_nodeadkeys)
-  *            sapmi(sefi)                     =       pc+fi(smi)
-  *            sin(phonetic-static)                    =       pc+in(sin_phonetic)
-  *            syr(basic)                      =       pc+sy(syc)
-  *            syr(phonetic)                   =       pc+sy(syc_phonetic)
-  *            tam(INSCRIPT)                   =       pc+in(tam)
-  *            tam(UNI)                        =       pc+in(tam_unicode)
-  *            tam(NUMERAL-KEYBOARD)                   =       pc+in(tam_keyboard_with_numerals)
-  *            tam(TAB)                        =       pc+in(tam_TAB)
-  *            tam(TSCII)                      =       pc+in(tam_TSCII)
-  *            tel(basic)                      =       pc+in(tel)
-  *            yu(basic)                       =       pc+srp(latin)
-  *            yu(unicode)                     =       pc+srp(latinunicode)
-  *            yu(yz)                  =       pc+srp(latinyz)
-  *            yu(unicodeyz)                   =       pc+srp(latinunicodeyz)
+! model                layout[1]       =       symbols
+  *            ar              =       pc+ara%(v[1])
+  *            ben             =       pc+in(ben)
+  *            bs              =       pc+ba%(v[1])
+  *            cs              =       pc+rs%(v[1])
+  *            cz_qwerty               =       pc+cz(qwerty)
+  *            dev             =       pc+in(deva)
+  *            dvorak          =       pc+us(dvorak)
+  *            dzdwi           =       pc+bt%(v[1])
+  *            el              =       pc+gr%(v[1])
+  *            en_US           =       pc+latin%(v[1])
+  *            guj             =       pc+in(guj)
+  *            gur             =       pc+in(guru)
+  *            iu              =       pc+ca(ike)
+  *            lo              =       pc+la%(v[1])
+  *            kan             =       pc+in(kan)
+  *            mi              =       pc+mao%(v[1])
+  *            ogham           =       pc+ie(ogam)
+  *            ori             =       pc+ie(ori)
+  *            sapmi           =       pc+no(smi)
+  *            sr              =       pc+srp%(v[1])
+  *            syr             =       pc+sy(syc)
+  *            tel             =       pc+in(tel)
+  *            tml             =       pc+in(tam)
+  *            yu              =       pc+srp%(v[1])
+  *            fr-latin9               =       pc+fr(latin9)
+  *            us_intl         =       pc+us(alt-intl)
+  *            ben(basic)              =       pc+in(ben)
+  *            ben(probhat)            =       pc+in(ben_probhat)
+  *            dev(basic)              =       pc+in(deva)
+  *            dvorak($dvoraklayouts)          =       pc+%v(dvorak)
+  *            dvorak(basic)           =       pc+us(dvorak)
+  *            dvorak(pl_basic)                =       pc+pl(dvorak)
+  *            dvorak(pl)              =       pc+pl(dvorak_quotes)
+  *            dvorak(pl_altquotes)            =       pc+pl(dvorak_altquotes)
+  *            dzdwi(basic)            =       pc+bt(basic)
+  *            fi(basic)               =       pc+fi(classic)
+  *            ge(azerty_tskapo)               =       pc+fr(geo)
+  *            guj(basic)              =       pc+in(guj)
+  *            gur(basic)              =       pc+in(guru)
+  *            ie(laptop)              =       pc+ie(basic)
+  *            ie(CloGaelachLaptop)            =       pc+ie(CloGaelach)
+  *            in(urd)         =       pc+in(urd-phonetic)
+  *            iu(basic)               =       pc+ca(ike)
+  *            lo(basic)               =       pc+la(basic)
+  *            kan(basic)              =       pc+in(kan)
+  *            mal(basic)              =       pc+in(mal)
+  *            mal(mlplusnum)          =       pc+in(mal)
+  *            ogham(basic)            =       pc+ie(ogam)
+  *            ogham(laptop)           =       pc+ie(ogam)
+  *            ogham(is434)            =       pc+ie(ogam_is434)
+  *            ogham(is434laptop)              =       pc+ie(ogam_is434)
+  *            ori(basic)              =       pc+in(ori)
+  *            ro(de)          =       pc+ro(winkeys)
+  *            ro(us)          =       pc+ro(std)
+  *            ro(academic)            =       pc+ro(std)
+  *            ro(std_comma)           =       pc+ro(std)
+  *            ro(comma)               =       pc+ro(basic)
+  *            ru(os)          =       pc+ru(os_legacy)
+  *            pk(urd)         =       pc+pk(urd-phonetic)
+  *            sapmi(basic)            =       pc+no(smi)
+  *            sapmi(nodeadkeys)               =       pc+no(smi_nodeadkeys)
+  *            sapmi(sefi)             =       pc+fi(smi)
+  *            sin(phonetic-static)            =       pc+in(sin_phonetic)
+  *            syr(basic)              =       pc+sy(syc)
+  *            syr(phonetic)           =       pc+sy(syc_phonetic)
+  *            tam(INSCRIPT)           =       pc+in(tam)
+  *            tam(UNI)                =       pc+in(tam_unicode)
+  *            tam(NUMERAL-KEYBOARD)           =       pc+in(tam_keyboard_with_numerals)
+  *            tam(TAB)                =       pc+in(tam_TAB)
+  *            tam(TSCII)              =       pc+in(tam_TSCII)
+  *            tel(basic)              =       pc+in(tel)
+  *            yu(basic)               =       pc+srp(latin)
+  *            yu(unicode)             =       pc+srp(latinunicode)
+  *            yu(yz)          =       pc+srp(latinyz)
+  *            yu(unicodeyz)           =       pc+srp(latinunicodeyz)
   ataritt      *                       =       xfree68_vndr/ataritt(us)+%l[1]%(v[1])
   amiga                *                       =       xfree68_vndr/amiga(usa1)+%l[1]%(v[1])
   jollasbj     *                       =       jolla_vndr/sbj(common)+%l[1]%(v[1])
   *            *                       =       pc+%l[1]%(v[1])
 
 ! model                layout[1]       variant[1]      =       symbols
-  *            ben             basic           =       pc+in(ben)
-  *            ben             probhat         =       pc+in(ben_probhat)
-  *            dev             basic           =       pc+in(deva)
-  *            dvorak          $dvoraklayouts          =       pc+%v(dvorak)
-  *            dvorak          basic           =       pc+us(dvorak)
-  *            dvorak          pl_basic                =       pc+pl(dvorak)
-  *            dvorak          pl              =       pc+pl(dvorak_quotes)
-  *            dvorak          pl_altquotes            =       pc+pl(dvorak_altquotes)
-  *            dzdwi           basic           =       pc+bt(basic)
-  *            fi              basic           =       pc+fi(classic)
-  *            ge              azerty_tskapo           =       pc+fr(geo)
-  *            guj             basic           =       pc+in(guj)
-  *            gur             basic           =       pc+in(guru)
-  *            ie              laptop          =       pc+ie(basic)
-  *            ie              CloGaelachLaptop                =       pc+ie(CloGaelach)
-  *            in              urd             =       pc+in(urd-phonetic)
-  *            iu              basic           =       pc+ca(ike)
-  *            lo              basic           =       pc+la(basic)
-  *            kan             basic           =       pc+in(kan)
-  *            mal             basic           =       pc+in(mal)
-  *            mal             mlplusnum               =       pc+in(mal)
-  *            ogham           basic           =       pc+ie(ogam)
-  *            ogham           laptop          =       pc+ie(ogam)
-  *            ogham           is434           =       pc+ie(ogam_is434)
-  *            ogham           is434laptop             =       pc+ie(ogam_is434)
-  *            ori             basic           =       pc+in(ori)
-  *            ro              de              =       pc+ro(winkeys)
-  *            ro              us              =       pc+ro(std)
-  *            ro              academic                =       pc+ro(std)
-  *            ro              std_comma               =       pc+ro(std)
-  *            ro              comma           =       pc+ro(basic)
-  *            ru              os              =       pc+ru(os_legacy)
-  *            pk              urd             =       pc+pk(urd-phonetic)
-  *            sapmi           basic           =       pc+no(smi)
-  *            sapmi           nodeadkeys              =       pc+no(smi_nodeadkeys)
-  *            sapmi           sefi            =       pc+fi(smi)
-  *            sin             phonetic-static         =       pc+in(sin_phonetic)
-  *            syr             basic           =       pc+sy(syc)
-  *            syr             phonetic                =       pc+sy(syc_phonetic)
-  *            tam             INSCRIPT                =       pc+in(tam)
-  *            tam             UNI             =       pc+in(tam_unicode)
-  *            tam             NUMERAL-KEYBOARD                =       pc+in(tam_keyboard_with_numerals)
-  *            tam             TAB             =       pc+in(tam_TAB)
-  *            tam             TSCII           =       pc+in(tam_TSCII)
-  *            tel             basic           =       pc+in(tel)
-  *            yu              basic           =       pc+srp(latin)
-  *            yu              unicode         =       pc+srp(latinunicode)
-  *            yu              yz              =       pc+srp(latinyz)
-  *            yu              unicodeyz               =       pc+srp(latinunicodeyz)
+  *            ben             basic   =       pc+in(ben)
+  *            ben             probhat =       pc+in(ben_probhat)
+  *            dev             basic   =       pc+in(deva)
+  *            dvorak          $dvoraklayouts  =       pc+%v(dvorak)
+  *            dvorak          basic   =       pc+us(dvorak)
+  *            dvorak          pl_basic        =       pc+pl(dvorak)
+  *            dvorak          pl      =       pc+pl(dvorak_quotes)
+  *            dvorak          pl_altquotes    =       pc+pl(dvorak_altquotes)
+  *            dzdwi           basic   =       pc+bt(basic)
+  *            fi              basic   =       pc+fi(classic)
+  *            ge              azerty_tskapo   =       pc+fr(geo)
+  *            guj             basic   =       pc+in(guj)
+  *            gur             basic   =       pc+in(guru)
+  *            ie              laptop  =       pc+ie(basic)
+  *            ie              CloGaelachLaptop        =       pc+ie(CloGaelach)
+  *            in              urd     =       pc+in(urd-phonetic)
+  *            iu              basic   =       pc+ca(ike)
+  *            lo              basic   =       pc+la(basic)
+  *            kan             basic   =       pc+in(kan)
+  *            mal             basic   =       pc+in(mal)
+  *            mal             mlplusnum       =       pc+in(mal)
+  *            ogham           basic   =       pc+ie(ogam)
+  *            ogham           laptop  =       pc+ie(ogam)
+  *            ogham           is434   =       pc+ie(ogam_is434)
+  *            ogham           is434laptop     =       pc+ie(ogam_is434)
+  *            ori             basic   =       pc+in(ori)
+  *            ro              de      =       pc+ro(winkeys)
+  *            ro              us      =       pc+ro(std)
+  *            ro              academic        =       pc+ro(std)
+  *            ro              std_comma       =       pc+ro(std)
+  *            ro              comma   =       pc+ro(basic)
+  *            ru              os      =       pc+ru(os_legacy)
+  *            pk              urd     =       pc+pk(urd-phonetic)
+  *            sapmi           basic   =       pc+no(smi)
+  *            sapmi           nodeadkeys      =       pc+no(smi_nodeadkeys)
+  *            sapmi           sefi    =       pc+fi(smi)
+  *            sin             phonetic-static =       pc+in(sin_phonetic)
+  *            syr             basic   =       pc+sy(syc)
+  *            syr             phonetic        =       pc+sy(syc_phonetic)
+  *            tam             INSCRIPT        =       pc+in(tam)
+  *            tam             UNI     =       pc+in(tam_unicode)
+  *            tam             NUMERAL-KEYBOARD        =       pc+in(tam_keyboard_with_numerals)
+  *            tam             TAB     =       pc+in(tam_TAB)
+  *            tam             TSCII   =       pc+in(tam_TSCII)
+  *            tel             basic   =       pc+in(tel)
+  *            yu              basic   =       pc+srp(latin)
+  *            yu              unicode =       pc+srp(latinunicode)
+  *            yu              yz      =       pc+srp(latinyz)
+  *            yu              unicodeyz       =       pc+srp(latinunicodeyz)
 
 ! model                layout[2]       =       symbols
   *            ar              =       +ara%(v[2]):2
   *            yu              =       +srp%(v[2]):2
   *            fr-latin9               =       +fr(latin9):2
   *            us_intl         =       +us(alt-intl):2
-  *            ben(basic)      =       +in(ben):2
-  *            ben(probhat)    =       +in(ben_probhat):2
-  *            dev(basic)      =       +in(deva):2
-  *            dvorak($dvoraklayouts)  =       +%v(dvorak):2
-  *            dvorak(basic)   =       +us(dvorak):2
-  *            dvorak(pl_basic)        =       +pl(dvorak):2
-  *            dvorak(pl)      =       +pl(dvorak_quotes):2
-  *            dvorak(pl_altquotes)    =       +pl(dvorak_altquotes):2
-  *            dzdwi(basic)    =       +bt(basic):2
-  *            fi(basic)       =       +fi(classic):2
-  *            ge(azerty_tskapo)       =       +fr(geo):2
-  *            guj(basic)      =       +in(guj):2
-  *            gur(basic)      =       +in(guru):2
-  *            ie(laptop)      =       +ie(basic):2
-  *            ie(CloGaelachLaptop)    =       +ie(CloGaelach):2
-  *            in(urd) =       +in(urd-phonetic):2
-  *            iu(basic)       =       +ca(ike):2
-  *            lo(basic)       =       +la(basic):2
-  *            kan(basic)      =       +in(kan):2
-  *            mal(basic)      =       +in(mal):2
-  *            mal(mlplusnum)  =       +in(mal):2
-  *            ogham(basic)    =       +ie(ogam):2
-  *            ogham(laptop)   =       +ie(ogam):2
-  *            ogham(is434)    =       +ie(ogam_is434):2
-  *            ogham(is434laptop)      =       +ie(ogam_is434):2
-  *            ori(basic)      =       +in(ori):2
-  *            ro(de)  =       +ro(winkeys):2
-  *            ro(us)  =       +ro(std):2
-  *            ro(academic)    =       +ro(std):2
-  *            ro(std_comma)   =       +ro(std):2
-  *            ro(comma)       =       +ro(basic):2
-  *            ru(os)  =       +ru(os_legacy):2
-  *            pk(urd) =       +pk(urd-phonetic):2
-  *            sapmi(basic)    =       +no(smi):2
-  *            sapmi(nodeadkeys)       =       +no(smi_nodeadkeys):2
-  *            sapmi(sefi)     =       +fi(smi):2
-  *            sin(phonetic-static)    =       +in(sin_phonetic):2
-  *            syr(basic)      =       +sy(syc):2
-  *            syr(phonetic)   =       +sy(syc_phonetic):2
-  *            tam(INSCRIPT)   =       +in(tam):2
-  *            tam(UNI)        =       +in(tam_unicode):2
-  *            tam(NUMERAL-KEYBOARD)   =       +in(tam_keyboard_with_numerals):2
-  *            tam(TAB)        =       +in(tam_TAB):2
-  *            tam(TSCII)      =       +in(tam_TSCII):2
-  *            tel(basic)      =       +in(tel):2
-  *            yu(basic)       =       +srp(latin):2
-  *            yu(unicode)     =       +srp(latinunicode):2
-  *            yu(yz)  =       +srp(latinyz):2
-  *            yu(unicodeyz)   =       +srp(latinunicodeyz):2
+  *            ben(basic)              =       +in(ben):2
+  *            ben(probhat)            =       +in(ben_probhat):2
+  *            dev(basic)              =       +in(deva):2
+  *            dvorak($dvoraklayouts)          =       +%v(dvorak):2
+  *            dvorak(basic)           =       +us(dvorak):2
+  *            dvorak(pl_basic)                =       +pl(dvorak):2
+  *            dvorak(pl)              =       +pl(dvorak_quotes):2
+  *            dvorak(pl_altquotes)            =       +pl(dvorak_altquotes):2
+  *            dzdwi(basic)            =       +bt(basic):2
+  *            fi(basic)               =       +fi(classic):2
+  *            ge(azerty_tskapo)               =       +fr(geo):2
+  *            guj(basic)              =       +in(guj):2
+  *            gur(basic)              =       +in(guru):2
+  *            ie(laptop)              =       +ie(basic):2
+  *            ie(CloGaelachLaptop)            =       +ie(CloGaelach):2
+  *            in(urd)         =       +in(urd-phonetic):2
+  *            iu(basic)               =       +ca(ike):2
+  *            lo(basic)               =       +la(basic):2
+  *            kan(basic)              =       +in(kan):2
+  *            mal(basic)              =       +in(mal):2
+  *            mal(mlplusnum)          =       +in(mal):2
+  *            ogham(basic)            =       +ie(ogam):2
+  *            ogham(laptop)           =       +ie(ogam):2
+  *            ogham(is434)            =       +ie(ogam_is434):2
+  *            ogham(is434laptop)              =       +ie(ogam_is434):2
+  *            ori(basic)              =       +in(ori):2
+  *            ro(de)          =       +ro(winkeys):2
+  *            ro(us)          =       +ro(std):2
+  *            ro(academic)            =       +ro(std):2
+  *            ro(std_comma)           =       +ro(std):2
+  *            ro(comma)               =       +ro(basic):2
+  *            ru(os)          =       +ru(os_legacy):2
+  *            pk(urd)         =       +pk(urd-phonetic):2
+  *            sapmi(basic)            =       +no(smi):2
+  *            sapmi(nodeadkeys)               =       +no(smi_nodeadkeys):2
+  *            sapmi(sefi)             =       +fi(smi):2
+  *            sin(phonetic-static)            =       +in(sin_phonetic):2
+  *            syr(basic)              =       +sy(syc):2
+  *            syr(phonetic)           =       +sy(syc_phonetic):2
+  *            tam(INSCRIPT)           =       +in(tam):2
+  *            tam(UNI)                =       +in(tam_unicode):2
+  *            tam(NUMERAL-KEYBOARD)           =       +in(tam_keyboard_with_numerals):2
+  *            tam(TAB)                =       +in(tam_TAB):2
+  *            tam(TSCII)              =       +in(tam_TSCII):2
+  *            tel(basic)              =       +in(tel):2
+  *            yu(basic)               =       +srp(latin):2
+  *            yu(unicode)             =       +srp(latinunicode):2
+  *            yu(yz)          =       +srp(latinyz):2
+  *            yu(unicodeyz)           =       +srp(latinunicodeyz):2
   nokiarx51    cz(qwerty)      =       +nokia_vndr/rx-51(cz_qwerty):2
   nokiarx51    *               =       +nokia_vndr/rx-51(%l[2]%_v[2]):2
  $sun  $sun_custom     =       +sun_vndr/%l[2]%(v[2]):2
   *            yu              =       +srp%(v[3]):3
   *            fr-latin9               =       +fr(latin9):3
   *            us_intl         =       +us(alt-intl):3
-  *            ben(basic)      =       +in(ben):3
-  *            ben(probhat)    =       +in(ben_probhat):3
-  *            dev(basic)      =       +in(deva):3
-  *            dvorak($dvoraklayouts)  =       +%v(dvorak):3
-  *            dvorak(basic)   =       +us(dvorak):3
-  *            dvorak(pl_basic)        =       +pl(dvorak):3
-  *            dvorak(pl)      =       +pl(dvorak_quotes):3
-  *            dvorak(pl_altquotes)    =       +pl(dvorak_altquotes):3
-  *            dzdwi(basic)    =       +bt(basic):3
-  *            fi(basic)       =       +fi(classic):3
-  *            ge(azerty_tskapo)       =       +fr(geo):3
-  *            guj(basic)      =       +in(guj):3
-  *            gur(basic)      =       +in(guru):3
-  *            ie(laptop)      =       +ie(basic):3
-  *            ie(CloGaelachLaptop)    =       +ie(CloGaelach):3
-  *            in(urd) =       +in(urd-phonetic):3
-  *            iu(basic)       =       +ca(ike):3
-  *            lo(basic)       =       +la(basic):3
-  *            kan(basic)      =       +in(kan):3
-  *            mal(basic)      =       +in(mal):3
-  *            mal(mlplusnum)  =       +in(mal):3
-  *            ogham(basic)    =       +ie(ogam):3
-  *            ogham(laptop)   =       +ie(ogam):3
-  *            ogham(is434)    =       +ie(ogam_is434):3
-  *            ogham(is434laptop)      =       +ie(ogam_is434):3
-  *            ori(basic)      =       +in(ori):3
-  *            ro(de)  =       +ro(winkeys):3
-  *            ro(us)  =       +ro(std):3
-  *            ro(academic)    =       +ro(std):3
-  *            ro(std_comma)   =       +ro(std):3
-  *            ro(comma)       =       +ro(basic):3
-  *            ru(os)  =       +ru(os_legacy):3
-  *            pk(urd) =       +pk(urd-phonetic):3
-  *            sapmi(basic)    =       +no(smi):3
-  *            sapmi(nodeadkeys)       =       +no(smi_nodeadkeys):3
-  *            sapmi(sefi)     =       +fi(smi):3
-  *            sin(phonetic-static)    =       +in(sin_phonetic):3
-  *            syr(basic)      =       +sy(syc):3
-  *            syr(phonetic)   =       +sy(syc_phonetic):3
-  *            tam(INSCRIPT)   =       +in(tam):3
-  *            tam(UNI)        =       +in(tam_unicode):3
-  *            tam(NUMERAL-KEYBOARD)   =       +in(tam_keyboard_with_numerals):3
-  *            tam(TAB)        =       +in(tam_TAB):3
-  *            tam(TSCII)      =       +in(tam_TSCII):3
-  *            tel(basic)      =       +in(tel):3
-  *            yu(basic)       =       +srp(latin):3
-  *            yu(unicode)     =       +srp(latinunicode):3
-  *            yu(yz)  =       +srp(latinyz):3
-  *            yu(unicodeyz)   =       +srp(latinunicodeyz):3
+  *            ben(basic)              =       +in(ben):3
+  *            ben(probhat)            =       +in(ben_probhat):3
+  *            dev(basic)              =       +in(deva):3
+  *            dvorak($dvoraklayouts)          =       +%v(dvorak):3
+  *            dvorak(basic)           =       +us(dvorak):3
+  *            dvorak(pl_basic)                =       +pl(dvorak):3
+  *            dvorak(pl)              =       +pl(dvorak_quotes):3
+  *            dvorak(pl_altquotes)            =       +pl(dvorak_altquotes):3
+  *            dzdwi(basic)            =       +bt(basic):3
+  *            fi(basic)               =       +fi(classic):3
+  *            ge(azerty_tskapo)               =       +fr(geo):3
+  *            guj(basic)              =       +in(guj):3
+  *            gur(basic)              =       +in(guru):3
+  *            ie(laptop)              =       +ie(basic):3
+  *            ie(CloGaelachLaptop)            =       +ie(CloGaelach):3
+  *            in(urd)         =       +in(urd-phonetic):3
+  *            iu(basic)               =       +ca(ike):3
+  *            lo(basic)               =       +la(basic):3
+  *            kan(basic)              =       +in(kan):3
+  *            mal(basic)              =       +in(mal):3
+  *            mal(mlplusnum)          =       +in(mal):3
+  *            ogham(basic)            =       +ie(ogam):3
+  *            ogham(laptop)           =       +ie(ogam):3
+  *            ogham(is434)            =       +ie(ogam_is434):3
+  *            ogham(is434laptop)              =       +ie(ogam_is434):3
+  *            ori(basic)              =       +in(ori):3
+  *            ro(de)          =       +ro(winkeys):3
+  *            ro(us)          =       +ro(std):3
+  *            ro(academic)            =       +ro(std):3
+  *            ro(std_comma)           =       +ro(std):3
+  *            ro(comma)               =       +ro(basic):3
+  *            ru(os)          =       +ru(os_legacy):3
+  *            pk(urd)         =       +pk(urd-phonetic):3
+  *            sapmi(basic)            =       +no(smi):3
+  *            sapmi(nodeadkeys)               =       +no(smi_nodeadkeys):3
+  *            sapmi(sefi)             =       +fi(smi):3
+  *            sin(phonetic-static)            =       +in(sin_phonetic):3
+  *            syr(basic)              =       +sy(syc):3
+  *            syr(phonetic)           =       +sy(syc_phonetic):3
+  *            tam(INSCRIPT)           =       +in(tam):3
+  *            tam(UNI)                =       +in(tam_unicode):3
+  *            tam(NUMERAL-KEYBOARD)           =       +in(tam_keyboard_with_numerals):3
+  *            tam(TAB)                =       +in(tam_TAB):3
+  *            tam(TSCII)              =       +in(tam_TSCII):3
+  *            tel(basic)              =       +in(tel):3
+  *            yu(basic)               =       +srp(latin):3
+  *            yu(unicode)             =       +srp(latinunicode):3
+  *            yu(yz)          =       +srp(latinyz):3
+  *            yu(unicodeyz)           =       +srp(latinunicodeyz):3
   nokiarx51    cz(qwerty)      =       +nokia_vndr/rx-51(cz_qwerty):3
   nokiarx51    *               =       +nokia_vndr/rx-51(%l[3]%_v[3]):3
  $sun  $sun_custom     =       +sun_vndr/%l[3]%(v[3]):3
   *            yu              =       +srp%(v[4]):4
   *            fr-latin9               =       +fr(latin9):4
   *            us_intl         =       +us(alt-intl):4
-  *            ben(basic)      =       +in(ben):4
-  *            ben(probhat)    =       +in(ben_probhat):4
-  *            dev(basic)      =       +in(deva):4
-  *            dvorak($dvoraklayouts)  =       +%v(dvorak):4
-  *            dvorak(basic)   =       +us(dvorak):4
-  *            dvorak(pl_basic)        =       +pl(dvorak):4
-  *            dvorak(pl)      =       +pl(dvorak_quotes):4
-  *            dvorak(pl_altquotes)    =       +pl(dvorak_altquotes):4
-  *            dzdwi(basic)    =       +bt(basic):4
-  *            fi(basic)       =       +fi(classic):4
-  *            ge(azerty_tskapo)       =       +fr(geo):4
-  *            guj(basic)      =       +in(guj):4
-  *            gur(basic)      =       +in(guru):4
-  *            ie(laptop)      =       +ie(basic):4
-  *            ie(CloGaelachLaptop)    =       +ie(CloGaelach):4
-  *            in(urd) =       +in(urd-phonetic):4
-  *            iu(basic)       =       +ca(ike):4
-  *            lo(basic)       =       +la(basic):4
-  *            kan(basic)      =       +in(kan):4
-  *            mal(basic)      =       +in(mal):4
-  *            mal(mlplusnum)  =       +in(mal):4
-  *            ogham(basic)    =       +ie(ogam):4
-  *            ogham(laptop)   =       +ie(ogam):4
-  *            ogham(is434)    =       +ie(ogam_is434):4
-  *            ogham(is434laptop)      =       +ie(ogam_is434):4
-  *            ori(basic)      =       +in(ori):4
-  *            ro(de)  =       +ro(winkeys):4
-  *            ro(us)  =       +ro(std):4
-  *            ro(academic)    =       +ro(std):4
-  *            ro(std_comma)   =       +ro(std):4
-  *            ro(comma)       =       +ro(basic):4
-  *            ru(os)  =       +ru(os_legacy):4
-  *            pk(urd) =       +pk(urd-phonetic):4
-  *            sapmi(basic)    =       +no(smi):4
-  *            sapmi(nodeadkeys)       =       +no(smi_nodeadkeys):4
-  *            sapmi(sefi)     =       +fi(smi):4
-  *            sin(phonetic-static)    =       +in(sin_phonetic):4
-  *            syr(basic)      =       +sy(syc):4
-  *            syr(phonetic)   =       +sy(syc_phonetic):4
-  *            tam(INSCRIPT)   =       +in(tam):4
-  *            tam(UNI)        =       +in(tam_unicode):4
-  *            tam(NUMERAL-KEYBOARD)   =       +in(tam_keyboard_with_numerals):4
-  *            tam(TAB)        =       +in(tam_TAB):4
-  *            tam(TSCII)      =       +in(tam_TSCII):4
-  *            tel(basic)      =       +in(tel):4
-  *            yu(basic)       =       +srp(latin):4
-  *            yu(unicode)     =       +srp(latinunicode):4
-  *            yu(yz)  =       +srp(latinyz):4
-  *            yu(unicodeyz)   =       +srp(latinunicodeyz):4
+  *            ben(basic)              =       +in(ben):4
+  *            ben(probhat)            =       +in(ben_probhat):4
+  *            dev(basic)              =       +in(deva):4
+  *            dvorak($dvoraklayouts)          =       +%v(dvorak):4
+  *            dvorak(basic)           =       +us(dvorak):4
+  *            dvorak(pl_basic)                =       +pl(dvorak):4
+  *            dvorak(pl)              =       +pl(dvorak_quotes):4
+  *            dvorak(pl_altquotes)            =       +pl(dvorak_altquotes):4
+  *            dzdwi(basic)            =       +bt(basic):4
+  *            fi(basic)               =       +fi(classic):4
+  *            ge(azerty_tskapo)               =       +fr(geo):4
+  *            guj(basic)              =       +in(guj):4
+  *            gur(basic)              =       +in(guru):4
+  *            ie(laptop)              =       +ie(basic):4
+  *            ie(CloGaelachLaptop)            =       +ie(CloGaelach):4
+  *            in(urd)         =       +in(urd-phonetic):4
+  *            iu(basic)               =       +ca(ike):4
+  *            lo(basic)               =       +la(basic):4
+  *            kan(basic)              =       +in(kan):4
+  *            mal(basic)              =       +in(mal):4
+  *            mal(mlplusnum)          =       +in(mal):4
+  *            ogham(basic)            =       +ie(ogam):4
+  *            ogham(laptop)           =       +ie(ogam):4
+  *            ogham(is434)            =       +ie(ogam_is434):4
+  *            ogham(is434laptop)              =       +ie(ogam_is434):4
+  *            ori(basic)              =       +in(ori):4
+  *            ro(de)          =       +ro(winkeys):4
+  *            ro(us)          =       +ro(std):4
+  *            ro(academic)            =       +ro(std):4
+  *            ro(std_comma)           =       +ro(std):4
+  *            ro(comma)               =       +ro(basic):4
+  *            ru(os)          =       +ru(os_legacy):4
+  *            pk(urd)         =       +pk(urd-phonetic):4
+  *            sapmi(basic)            =       +no(smi):4
+  *            sapmi(nodeadkeys)               =       +no(smi_nodeadkeys):4
+  *            sapmi(sefi)             =       +fi(smi):4
+  *            sin(phonetic-static)            =       +in(sin_phonetic):4
+  *            syr(basic)              =       +sy(syc):4
+  *            syr(phonetic)           =       +sy(syc_phonetic):4
+  *            tam(INSCRIPT)           =       +in(tam):4
+  *            tam(UNI)                =       +in(tam_unicode):4
+  *            tam(NUMERAL-KEYBOARD)           =       +in(tam_keyboard_with_numerals):4
+  *            tam(TAB)                =       +in(tam_TAB):4
+  *            tam(TSCII)              =       +in(tam_TSCII):4
+  *            tel(basic)              =       +in(tel):4
+  *            yu(basic)               =       +srp(latin):4
+  *            yu(unicode)             =       +srp(latinunicode):4
+  *            yu(yz)          =       +srp(latinyz):4
+  *            yu(unicodeyz)           =       +srp(latinunicodeyz):4
   nokiarx51    cz(qwerty)      =       +nokia_vndr/rx-51(cz_qwerty):4
   nokiarx51    *               =       +nokia_vndr/rx-51(%l[4]%_v[4]):4
  $sun  $sun_custom     =       +sun_vndr/%l[4]%(v[4]):4
 ! layout       option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
   *                    misc:typo       = +typo(base)
+  *                    misc:apl        = +apl(level3)
 
 ! layout[1]    option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
   *                    misc:typo       = +typo(base):1
+  *                    misc:apl        = +apl(level3):1
 
 ! layout[2]    option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
   *                    misc:typo       = +typo(base):2
+  *                    misc:apl        = +apl(level3):2
 
 ! layout[3]    option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
   *                    misc:typo       = +typo(base):3
+  *                    misc:apl        = +apl(level3):3
 
 ! layout[4]    option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
   *                    misc:typo       = +typo(base):4
+  *                    misc:apl        = +apl(level3):4
 
 ! option       =       symbols
   grp:shift_toggle     =       +group(shifts_toggle)
   altwin:menu          =       +altwin(menu)
+  altwin:menu_win      =       +altwin(menu_win)
   altwin:meta_alt      =       +altwin(meta_alt)
   altwin:alt_win       =       +altwin(alt_win)
   altwin:ctrl_win      =       +altwin(ctrl_win)
   lv3:lwin_switch      =       +level3(lwin_switch)
   lv3:rwin_switch      =       +level3(rwin_switch)
   lv3:enter_switch     =       +level3(enter_switch)
+  lv3:4_switch_isolated        =       +level3(4_switch_isolated)
+  lv3:9_switch_isolated        =       +level3(9_switch_isolated)
   caps:capslock                =       +capslock(capslock)
   caps:numlock         =       +capslock(numlock)
   caps:shiftlock       =       +capslock(shiftlock)
   caps:swapescape      =       +capslock(swapescape)
   caps:escape          =       +capslock(escape)
+  caps:escape_shifted_capslock =       +capslock(escape_shifted_capslock)
   caps:backspace       =       +capslock(backspace)
   caps:super           =       +capslock(super)
   caps:hyper           =       +capslock(hyper)
   ctrl:nocaps          =       +ctrl(nocaps)
   ctrl:lctrl_meta      =       +ctrl(lctrl_meta)
   ctrl:swapcaps                =       +ctrl(swapcaps)
+  ctrl:swapcaps_hyper  =       +ctrl(swapcaps_hyper)
+  ctrl:swapcaps_and_switch_layout      =       +ctrl(swapcaps_and_switch_layout)
   ctrl:ac_ctrl         =       +ctrl(ac_ctrl)
   ctrl:aa_ctrl         =       +ctrl(aa_ctrl)
   ctrl:rctrl_ralt      =       +ctrl(rctrl_ralt)
   nbsp:level4           =      +nbsp(level4)
   nbsp:level4n          =      +nbsp(level4n)
   nbsp:level4nl         =      +nbsp(level4nl)
+  nbsp:zwnj2            =      +nbsp(zwnj2)
+  nbsp:zwnj2zwj3        =      +nbsp(zwnj2zwj3)
+  nbsp:zwnj2zwj3nb4     =      +nbsp(zwnj2zwj3nb4)
+  nbsp:zwnj2nb3         =      +nbsp(zwnj2nb3)
+  nbsp:zwnj2nb3s        =      +nbsp(zwnj2nb3s)
+  nbsp:zwnj2nb3zwj4     =      +nbsp(zwnj2nb3zwj4)
+  nbsp:zwnj2nb3nnb4     =      +nbsp(zwnj2nb3nnb4)
+  nbsp:zwnj3zwj4        =      +nbsp(zwnj3zwj4)
   japan:nicola_f_bs     =      +jp(nicola_f_bs)
   japan:hztg_escape     =      +jp(hztg_escape)
-  korean:ralt_rctrl     =      +kr(ralt_hangul)+kr(rctrl_hanja)
-  korean:rctrl_ralt     =      +kr(rctrl_hangul)+kr(ralt_hanja)
+  korean:ralt_hangul   =       +kr(ralt_hangul)
+  korean:rctrl_hangul  =       +kr(rctrl_hangul)
+  korean:ralt_hanja    =       +kr(ralt_hanja)
+  korean:rctrl_hanja   =       +kr(rctrl_hanja)
   kpdl:dot              =      +kpdl(dot)
   kpdl:comma            =      +kpdl(comma)
   kpdl:dotoss           =      +kpdl(dotoss)
   lv3:caps_switch_latch              =       +level3(caps_switch_latch)
   lv3:bksl_switch_latch              =       +level3(bksl_switch_latch)
   lv3:lsgt_switch_latch              =       +level3(lsgt_switch_latch)
+  lv5:lsgt_switch                 =       +level5(lsgt_switch)
+  lv5:ralt_switch                 =       +level5(ralt_switch)
   lv5:lsgt_switch_lock            =       +level5(lsgt_switch_lock)
   lv5:ralt_switch_lock            =       +level5(ralt_switch_lock)
   lv5:lwin_switch_lock            =       +level5(lwin_switch_lock)
   grp_led:num          =       +lednum(group_lock)
   grp_led:caps         =       +ledcaps(group_lock)
   grp_led:scroll       =       +ledscroll(group_lock)
+  mod_led:compose      =       +ledcompose(compose)
   japan:kana_lock      =       +japan(kana_lock)
   caps:shiftlock       =       +ledcaps(shift_lock)
   grab:break_actions    =       +xfree86(grab_break)
index 872e1de..e949490 100644 (file)
@@ -1,4 +1,5 @@
-// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part
+// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.py FROM rules/*.part
+//
 //
 //  Rules for resolving XKB components for use with XFree86
 //  Copyright 1996 by Joseph Moss
 //              ori pk ru scc sy syr tel th tj tam ua uz
 
 // PC models
-! $pcmodels = pc101 pc102 pc104 pc105
+! $pcmodels = pc86 pc101 pc102 pc104 pc104alt pc105
 
 // Jolla devices and keyboards
 ! $jollamodels = jollasbj
 
 // Microsoft models (using MS geometry)
-! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose
+! $msmodels = microsoft microsoft4000 microsoft7000 microsoftpro microsoftprousb microsoftprose microsoftsurface
 
 // Nokia devices and keyboards
 ! $nokiamodels = nokiasu8w nokiarx44 nokiarx51
 
-// PC geometries - they have special geometry but symbols are mostly pc105
-! $pcgeometries = latitude
-
 // TypeMatrix geometries
 ! $tmgeometries = tm2020 tm2030PS2 tm2030USB tm2030USB-102 tm2030USB-106
 
 
 ! $sun_compat = sun_type6 sun_type6_suncompat sun_type7_suncompat suncompat
 
-! $htcdreamlayouts = us it de
 
 ! $evdevkbds = ibm_spacesaver
 
 ! $dvoraklayouts = br ca de ee es fr gb no pl se us
 
 ! model                =       keycodes
-  pc98         =       evdev(pc98)
   applealu_jis =       evdev+macintosh(jisevdev)
  $jollamodels   =       evdev+jolla(jolla)
   olpc          =       evdev+olpc(olpc)
   omnikey101   =       northgate(omnikey101)
   sanwaskbkg3  =       sanwa(sanwaskbkg3)
  $pcmodels     =       pc(%m)
- $pcgeometries =       pc(%m)
   everex       =       everex(STEPnote)
   thinkpad     =       thinkpad(intl)
   thinkpad60   =       thinkpad(60)
   ws007sh      *                       =       pc+sharp_vndr/ws007sh(basic)
   ws011sh      *                       =       pc+sharp_vndr/ws011sh(basic)
   ws020sh      *                       =       pc+sharp_vndr/ws020sh(basic)
-  htcdream     $htcdreamlayouts        =       %l(htcdream)
   *            $nonlatin               =       pc+us+%l%(v):2
   *            *                       =       pc+%l%(v)
 
-! model                layout[1]                       =       symbols
-  *            ar                      =       pc+ara%(v[1])
-  *            ben                     =       pc+in(ben)
-  *            bs                      =       pc+ba%(v[1])
-  *            cs                      =       pc+rs%(v[1])
-  *            cz_qwerty                       =       pc+cz(qwerty)
-  *            dev                     =       pc+in(deva)
-  *            dvorak                  =       pc+us(dvorak)
-  *            dzdwi                   =       pc+bt%(v[1])
-  *            el                      =       pc+gr%(v[1])
-  *            en_US                   =       pc+latin%(v[1])
-  *            guj                     =       pc+in(guj)
-  *            gur                     =       pc+in(guru)
-  *            iu                      =       pc+ca(ike)
-  *            lo                      =       pc+la%(v[1])
-  *            kan                     =       pc+in(kan)
-  *            mi                      =       pc+mao%(v[1])
-  *            ogham                   =       pc+ie(ogam)
-  *            ori                     =       pc+ie(ori)
-  *            sapmi                   =       pc+no(smi)
-  *            sr                      =       pc+srp%(v[1])
-  *            syr                     =       pc+sy(syc)
-  *            tel                     =       pc+in(tel)
-  *            tml                     =       pc+in(tam)
-  *            yu                      =       pc+srp%(v[1])
-  *            fr-latin9                       =       pc+fr(latin9)
-  *            us_intl                 =       pc+us(alt-intl)
-  *            ben(basic)                      =       pc+in(ben)
-  *            ben(probhat)                    =       pc+in(ben_probhat)
-  *            dev(basic)                      =       pc+in(deva)
-  *            dvorak($dvoraklayouts)                  =       pc+%v(dvorak)
-  *            dvorak(basic)                   =       pc+us(dvorak)
-  *            dvorak(pl_basic)                        =       pc+pl(dvorak)
-  *            dvorak(pl)                      =       pc+pl(dvorak_quotes)
-  *            dvorak(pl_altquotes)                    =       pc+pl(dvorak_altquotes)
-  *            dzdwi(basic)                    =       pc+bt(basic)
-  *            fi(basic)                       =       pc+fi(classic)
-  *            ge(azerty_tskapo)                       =       pc+fr(geo)
-  *            guj(basic)                      =       pc+in(guj)
-  *            gur(basic)                      =       pc+in(guru)
-  *            ie(laptop)                      =       pc+ie(basic)
-  *            ie(CloGaelachLaptop)                    =       pc+ie(CloGaelach)
-  *            in(urd)                 =       pc+in(urd-phonetic)
-  *            iu(basic)                       =       pc+ca(ike)
-  *            lo(basic)                       =       pc+la(basic)
-  *            kan(basic)                      =       pc+in(kan)
-  *            mal(basic)                      =       pc+in(mal)
-  *            mal(mlplusnum)                  =       pc+in(mal)
-  *            ogham(basic)                    =       pc+ie(ogam)
-  *            ogham(laptop)                   =       pc+ie(ogam)
-  *            ogham(is434)                    =       pc+ie(ogam_is434)
-  *            ogham(is434laptop)                      =       pc+ie(ogam_is434)
-  *            ori(basic)                      =       pc+in(ori)
-  *            ro(de)                  =       pc+ro(winkeys)
-  *            ro(us)                  =       pc+ro(std)
-  *            ro(academic)                    =       pc+ro(std)
-  *            ro(std_comma)                   =       pc+ro(std)
-  *            ro(comma)                       =       pc+ro(basic)
-  *            ru(os)                  =       pc+ru(os_legacy)
-  *            pk(urd)                 =       pc+pk(urd-phonetic)
-  *            sapmi(basic)                    =       pc+no(smi)
-  *            sapmi(nodeadkeys)                       =       pc+no(smi_nodeadkeys)
-  *            sapmi(sefi)                     =       pc+fi(smi)
-  *            sin(phonetic-static)                    =       pc+in(sin_phonetic)
-  *            syr(basic)                      =       pc+sy(syc)
-  *            syr(phonetic)                   =       pc+sy(syc_phonetic)
-  *            tam(INSCRIPT)                   =       pc+in(tam)
-  *            tam(UNI)                        =       pc+in(tam_unicode)
-  *            tam(NUMERAL-KEYBOARD)                   =       pc+in(tam_keyboard_with_numerals)
-  *            tam(TAB)                        =       pc+in(tam_TAB)
-  *            tam(TSCII)                      =       pc+in(tam_TSCII)
-  *            tel(basic)                      =       pc+in(tel)
-  *            yu(basic)                       =       pc+srp(latin)
-  *            yu(unicode)                     =       pc+srp(latinunicode)
-  *            yu(yz)                  =       pc+srp(latinyz)
-  *            yu(unicodeyz)                   =       pc+srp(latinunicodeyz)
+! model                layout[1]       =       symbols
+  *            ar              =       pc+ara%(v[1])
+  *            ben             =       pc+in(ben)
+  *            bs              =       pc+ba%(v[1])
+  *            cs              =       pc+rs%(v[1])
+  *            cz_qwerty               =       pc+cz(qwerty)
+  *            dev             =       pc+in(deva)
+  *            dvorak          =       pc+us(dvorak)
+  *            dzdwi           =       pc+bt%(v[1])
+  *            el              =       pc+gr%(v[1])
+  *            en_US           =       pc+latin%(v[1])
+  *            guj             =       pc+in(guj)
+  *            gur             =       pc+in(guru)
+  *            iu              =       pc+ca(ike)
+  *            lo              =       pc+la%(v[1])
+  *            kan             =       pc+in(kan)
+  *            mi              =       pc+mao%(v[1])
+  *            ogham           =       pc+ie(ogam)
+  *            ori             =       pc+ie(ori)
+  *            sapmi           =       pc+no(smi)
+  *            sr              =       pc+srp%(v[1])
+  *            syr             =       pc+sy(syc)
+  *            tel             =       pc+in(tel)
+  *            tml             =       pc+in(tam)
+  *            yu              =       pc+srp%(v[1])
+  *            fr-latin9               =       pc+fr(latin9)
+  *            us_intl         =       pc+us(alt-intl)
+  *            ben(basic)              =       pc+in(ben)
+  *            ben(probhat)            =       pc+in(ben_probhat)
+  *            dev(basic)              =       pc+in(deva)
+  *            dvorak($dvoraklayouts)          =       pc+%v(dvorak)
+  *            dvorak(basic)           =       pc+us(dvorak)
+  *            dvorak(pl_basic)                =       pc+pl(dvorak)
+  *            dvorak(pl)              =       pc+pl(dvorak_quotes)
+  *            dvorak(pl_altquotes)            =       pc+pl(dvorak_altquotes)
+  *            dzdwi(basic)            =       pc+bt(basic)
+  *            fi(basic)               =       pc+fi(classic)
+  *            ge(azerty_tskapo)               =       pc+fr(geo)
+  *            guj(basic)              =       pc+in(guj)
+  *            gur(basic)              =       pc+in(guru)
+  *            ie(laptop)              =       pc+ie(basic)
+  *            ie(CloGaelachLaptop)            =       pc+ie(CloGaelach)
+  *            in(urd)         =       pc+in(urd-phonetic)
+  *            iu(basic)               =       pc+ca(ike)
+  *            lo(basic)               =       pc+la(basic)
+  *            kan(basic)              =       pc+in(kan)
+  *            mal(basic)              =       pc+in(mal)
+  *            mal(mlplusnum)          =       pc+in(mal)
+  *            ogham(basic)            =       pc+ie(ogam)
+  *            ogham(laptop)           =       pc+ie(ogam)
+  *            ogham(is434)            =       pc+ie(ogam_is434)
+  *            ogham(is434laptop)              =       pc+ie(ogam_is434)
+  *            ori(basic)              =       pc+in(ori)
+  *            ro(de)          =       pc+ro(winkeys)
+  *            ro(us)          =       pc+ro(std)
+  *            ro(academic)            =       pc+ro(std)
+  *            ro(std_comma)           =       pc+ro(std)
+  *            ro(comma)               =       pc+ro(basic)
+  *            ru(os)          =       pc+ru(os_legacy)
+  *            pk(urd)         =       pc+pk(urd-phonetic)
+  *            sapmi(basic)            =       pc+no(smi)
+  *            sapmi(nodeadkeys)               =       pc+no(smi_nodeadkeys)
+  *            sapmi(sefi)             =       pc+fi(smi)
+  *            sin(phonetic-static)            =       pc+in(sin_phonetic)
+  *            syr(basic)              =       pc+sy(syc)
+  *            syr(phonetic)           =       pc+sy(syc_phonetic)
+  *            tam(INSCRIPT)           =       pc+in(tam)
+  *            tam(UNI)                =       pc+in(tam_unicode)
+  *            tam(NUMERAL-KEYBOARD)           =       pc+in(tam_keyboard_with_numerals)
+  *            tam(TAB)                =       pc+in(tam_TAB)
+  *            tam(TSCII)              =       pc+in(tam_TSCII)
+  *            tel(basic)              =       pc+in(tel)
+  *            yu(basic)               =       pc+srp(latin)
+  *            yu(unicode)             =       pc+srp(latinunicode)
+  *            yu(yz)          =       pc+srp(latinyz)
+  *            yu(unicodeyz)           =       pc+srp(latinunicodeyz)
   ataritt      *                       =       xfree68_vndr/ataritt(us)+%l[1]%(v[1])
   amiga                *                       =       xfree68_vndr/amiga(usa1)+%l[1]%(v[1])
   jollasbj     *                       =       jolla_vndr/sbj(common)+%l[1]%(v[1])
   *            *                       =       pc+%l[1]%(v[1])
 
 ! model                layout[1]       variant[1]      =       symbols
-  *            ben             basic           =       pc+in(ben)
-  *            ben             probhat         =       pc+in(ben_probhat)
-  *            dev             basic           =       pc+in(deva)
-  *            dvorak          $dvoraklayouts          =       pc+%v(dvorak)
-  *            dvorak          basic           =       pc+us(dvorak)
-  *            dvorak          pl_basic                =       pc+pl(dvorak)
-  *            dvorak          pl              =       pc+pl(dvorak_quotes)
-  *            dvorak          pl_altquotes            =       pc+pl(dvorak_altquotes)
-  *            dzdwi           basic           =       pc+bt(basic)
-  *            fi              basic           =       pc+fi(classic)
-  *            ge              azerty_tskapo           =       pc+fr(geo)
-  *            guj             basic           =       pc+in(guj)
-  *            gur             basic           =       pc+in(guru)
-  *            ie              laptop          =       pc+ie(basic)
-  *            ie              CloGaelachLaptop                =       pc+ie(CloGaelach)
-  *            in              urd             =       pc+in(urd-phonetic)
-  *            iu              basic           =       pc+ca(ike)
-  *            lo              basic           =       pc+la(basic)
-  *            kan             basic           =       pc+in(kan)
-  *            mal             basic           =       pc+in(mal)
-  *            mal             mlplusnum               =       pc+in(mal)
-  *            ogham           basic           =       pc+ie(ogam)
-  *            ogham           laptop          =       pc+ie(ogam)
-  *            ogham           is434           =       pc+ie(ogam_is434)
-  *            ogham           is434laptop             =       pc+ie(ogam_is434)
-  *            ori             basic           =       pc+in(ori)
-  *            ro              de              =       pc+ro(winkeys)
-  *            ro              us              =       pc+ro(std)
-  *            ro              academic                =       pc+ro(std)
-  *            ro              std_comma               =       pc+ro(std)
-  *            ro              comma           =       pc+ro(basic)
-  *            ru              os              =       pc+ru(os_legacy)
-  *            pk              urd             =       pc+pk(urd-phonetic)
-  *            sapmi           basic           =       pc+no(smi)
-  *            sapmi           nodeadkeys              =       pc+no(smi_nodeadkeys)
-  *            sapmi           sefi            =       pc+fi(smi)
-  *            sin             phonetic-static         =       pc+in(sin_phonetic)
-  *            syr             basic           =       pc+sy(syc)
-  *            syr             phonetic                =       pc+sy(syc_phonetic)
-  *            tam             INSCRIPT                =       pc+in(tam)
-  *            tam             UNI             =       pc+in(tam_unicode)
-  *            tam             NUMERAL-KEYBOARD                =       pc+in(tam_keyboard_with_numerals)
-  *            tam             TAB             =       pc+in(tam_TAB)
-  *            tam             TSCII           =       pc+in(tam_TSCII)
-  *            tel             basic           =       pc+in(tel)
-  *            yu              basic           =       pc+srp(latin)
-  *            yu              unicode         =       pc+srp(latinunicode)
-  *            yu              yz              =       pc+srp(latinyz)
-  *            yu              unicodeyz               =       pc+srp(latinunicodeyz)
+  *            ben             basic   =       pc+in(ben)
+  *            ben             probhat =       pc+in(ben_probhat)
+  *            dev             basic   =       pc+in(deva)
+  *            dvorak          $dvoraklayouts  =       pc+%v(dvorak)
+  *            dvorak          basic   =       pc+us(dvorak)
+  *            dvorak          pl_basic        =       pc+pl(dvorak)
+  *            dvorak          pl      =       pc+pl(dvorak_quotes)
+  *            dvorak          pl_altquotes    =       pc+pl(dvorak_altquotes)
+  *            dzdwi           basic   =       pc+bt(basic)
+  *            fi              basic   =       pc+fi(classic)
+  *            ge              azerty_tskapo   =       pc+fr(geo)
+  *            guj             basic   =       pc+in(guj)
+  *            gur             basic   =       pc+in(guru)
+  *            ie              laptop  =       pc+ie(basic)
+  *            ie              CloGaelachLaptop        =       pc+ie(CloGaelach)
+  *            in              urd     =       pc+in(urd-phonetic)
+  *            iu              basic   =       pc+ca(ike)
+  *            lo              basic   =       pc+la(basic)
+  *            kan             basic   =       pc+in(kan)
+  *            mal             basic   =       pc+in(mal)
+  *            mal             mlplusnum       =       pc+in(mal)
+  *            ogham           basic   =       pc+ie(ogam)
+  *            ogham           laptop  =       pc+ie(ogam)
+  *            ogham           is434   =       pc+ie(ogam_is434)
+  *            ogham           is434laptop     =       pc+ie(ogam_is434)
+  *            ori             basic   =       pc+in(ori)
+  *            ro              de      =       pc+ro(winkeys)
+  *            ro              us      =       pc+ro(std)
+  *            ro              academic        =       pc+ro(std)
+  *            ro              std_comma       =       pc+ro(std)
+  *            ro              comma   =       pc+ro(basic)
+  *            ru              os      =       pc+ru(os_legacy)
+  *            pk              urd     =       pc+pk(urd-phonetic)
+  *            sapmi           basic   =       pc+no(smi)
+  *            sapmi           nodeadkeys      =       pc+no(smi_nodeadkeys)
+  *            sapmi           sefi    =       pc+fi(smi)
+  *            sin             phonetic-static =       pc+in(sin_phonetic)
+  *            syr             basic   =       pc+sy(syc)
+  *            syr             phonetic        =       pc+sy(syc_phonetic)
+  *            tam             INSCRIPT        =       pc+in(tam)
+  *            tam             UNI     =       pc+in(tam_unicode)
+  *            tam             NUMERAL-KEYBOARD        =       pc+in(tam_keyboard_with_numerals)
+  *            tam             TAB     =       pc+in(tam_TAB)
+  *            tam             TSCII   =       pc+in(tam_TSCII)
+  *            tel             basic   =       pc+in(tel)
+  *            yu              basic   =       pc+srp(latin)
+  *            yu              unicode =       pc+srp(latinunicode)
+  *            yu              yz      =       pc+srp(latinyz)
+  *            yu              unicodeyz       =       pc+srp(latinunicodeyz)
 
 ! model                layout[2]       =       symbols
   *            ar              =       +ara%(v[2]):2
   *            yu              =       +srp%(v[2]):2
   *            fr-latin9               =       +fr(latin9):2
   *            us_intl         =       +us(alt-intl):2
-  *            ben(basic)      =       +in(ben):2
-  *            ben(probhat)    =       +in(ben_probhat):2
-  *            dev(basic)      =       +in(deva):2
-  *            dvorak($dvoraklayouts)  =       +%v(dvorak):2
-  *            dvorak(basic)   =       +us(dvorak):2
-  *            dvorak(pl_basic)        =       +pl(dvorak):2
-  *            dvorak(pl)      =       +pl(dvorak_quotes):2
-  *            dvorak(pl_altquotes)    =       +pl(dvorak_altquotes):2
-  *            dzdwi(basic)    =       +bt(basic):2
-  *            fi(basic)       =       +fi(classic):2
-  *            ge(azerty_tskapo)       =       +fr(geo):2
-  *            guj(basic)      =       +in(guj):2
-  *            gur(basic)      =       +in(guru):2
-  *            ie(laptop)      =       +ie(basic):2
-  *            ie(CloGaelachLaptop)    =       +ie(CloGaelach):2
-  *            in(urd) =       +in(urd-phonetic):2
-  *            iu(basic)       =       +ca(ike):2
-  *            lo(basic)       =       +la(basic):2
-  *            kan(basic)      =       +in(kan):2
-  *            mal(basic)      =       +in(mal):2
-  *            mal(mlplusnum)  =       +in(mal):2
-  *            ogham(basic)    =       +ie(ogam):2
-  *            ogham(laptop)   =       +ie(ogam):2
-  *            ogham(is434)    =       +ie(ogam_is434):2
-  *            ogham(is434laptop)      =       +ie(ogam_is434):2
-  *            ori(basic)      =       +in(ori):2
-  *            ro(de)  =       +ro(winkeys):2
-  *            ro(us)  =       +ro(std):2
-  *            ro(academic)    =       +ro(std):2
-  *            ro(std_comma)   =       +ro(std):2
-  *            ro(comma)       =       +ro(basic):2
-  *            ru(os)  =       +ru(os_legacy):2
-  *            pk(urd) =       +pk(urd-phonetic):2
-  *            sapmi(basic)    =       +no(smi):2
-  *            sapmi(nodeadkeys)       =       +no(smi_nodeadkeys):2
-  *            sapmi(sefi)     =       +fi(smi):2
-  *            sin(phonetic-static)    =       +in(sin_phonetic):2
-  *            syr(basic)      =       +sy(syc):2
-  *            syr(phonetic)   =       +sy(syc_phonetic):2
-  *            tam(INSCRIPT)   =       +in(tam):2
-  *            tam(UNI)        =       +in(tam_unicode):2
-  *            tam(NUMERAL-KEYBOARD)   =       +in(tam_keyboard_with_numerals):2
-  *            tam(TAB)        =       +in(tam_TAB):2
-  *            tam(TSCII)      =       +in(tam_TSCII):2
-  *            tel(basic)      =       +in(tel):2
-  *            yu(basic)       =       +srp(latin):2
-  *            yu(unicode)     =       +srp(latinunicode):2
-  *            yu(yz)  =       +srp(latinyz):2
-  *            yu(unicodeyz)   =       +srp(latinunicodeyz):2
+  *            ben(basic)              =       +in(ben):2
+  *            ben(probhat)            =       +in(ben_probhat):2
+  *            dev(basic)              =       +in(deva):2
+  *            dvorak($dvoraklayouts)          =       +%v(dvorak):2
+  *            dvorak(basic)           =       +us(dvorak):2
+  *            dvorak(pl_basic)                =       +pl(dvorak):2
+  *            dvorak(pl)              =       +pl(dvorak_quotes):2
+  *            dvorak(pl_altquotes)            =       +pl(dvorak_altquotes):2
+  *            dzdwi(basic)            =       +bt(basic):2
+  *            fi(basic)               =       +fi(classic):2
+  *            ge(azerty_tskapo)               =       +fr(geo):2
+  *            guj(basic)              =       +in(guj):2
+  *            gur(basic)              =       +in(guru):2
+  *            ie(laptop)              =       +ie(basic):2
+  *            ie(CloGaelachLaptop)            =       +ie(CloGaelach):2
+  *            in(urd)         =       +in(urd-phonetic):2
+  *            iu(basic)               =       +ca(ike):2
+  *            lo(basic)               =       +la(basic):2
+  *            kan(basic)              =       +in(kan):2
+  *            mal(basic)              =       +in(mal):2
+  *            mal(mlplusnum)          =       +in(mal):2
+  *            ogham(basic)            =       +ie(ogam):2
+  *            ogham(laptop)           =       +ie(ogam):2
+  *            ogham(is434)            =       +ie(ogam_is434):2
+  *            ogham(is434laptop)              =       +ie(ogam_is434):2
+  *            ori(basic)              =       +in(ori):2
+  *            ro(de)          =       +ro(winkeys):2
+  *            ro(us)          =       +ro(std):2
+  *            ro(academic)            =       +ro(std):2
+  *            ro(std_comma)           =       +ro(std):2
+  *            ro(comma)               =       +ro(basic):2
+  *            ru(os)          =       +ru(os_legacy):2
+  *            pk(urd)         =       +pk(urd-phonetic):2
+  *            sapmi(basic)            =       +no(smi):2
+  *            sapmi(nodeadkeys)               =       +no(smi_nodeadkeys):2
+  *            sapmi(sefi)             =       +fi(smi):2
+  *            sin(phonetic-static)            =       +in(sin_phonetic):2
+  *            syr(basic)              =       +sy(syc):2
+  *            syr(phonetic)           =       +sy(syc_phonetic):2
+  *            tam(INSCRIPT)           =       +in(tam):2
+  *            tam(UNI)                =       +in(tam_unicode):2
+  *            tam(NUMERAL-KEYBOARD)           =       +in(tam_keyboard_with_numerals):2
+  *            tam(TAB)                =       +in(tam_TAB):2
+  *            tam(TSCII)              =       +in(tam_TSCII):2
+  *            tel(basic)              =       +in(tel):2
+  *            yu(basic)               =       +srp(latin):2
+  *            yu(unicode)             =       +srp(latinunicode):2
+  *            yu(yz)          =       +srp(latinyz):2
+  *            yu(unicodeyz)           =       +srp(latinunicodeyz):2
   nokiarx51    cz(qwerty)      =       +nokia_vndr/rx-51(cz_qwerty):2
   nokiarx51    *               =       +nokia_vndr/rx-51(%l[2]%_v[2]):2
  $sun  $sun_custom     =       +sun_vndr/%l[2]%(v[2]):2
   *            yu              =       +srp%(v[3]):3
   *            fr-latin9               =       +fr(latin9):3
   *            us_intl         =       +us(alt-intl):3
-  *            ben(basic)      =       +in(ben):3
-  *            ben(probhat)    =       +in(ben_probhat):3
-  *            dev(basic)      =       +in(deva):3
-  *            dvorak($dvoraklayouts)  =       +%v(dvorak):3
-  *            dvorak(basic)   =       +us(dvorak):3
-  *            dvorak(pl_basic)        =       +pl(dvorak):3
-  *            dvorak(pl)      =       +pl(dvorak_quotes):3
-  *            dvorak(pl_altquotes)    =       +pl(dvorak_altquotes):3
-  *            dzdwi(basic)    =       +bt(basic):3
-  *            fi(basic)       =       +fi(classic):3
-  *            ge(azerty_tskapo)       =       +fr(geo):3
-  *            guj(basic)      =       +in(guj):3
-  *            gur(basic)      =       +in(guru):3
-  *            ie(laptop)      =       +ie(basic):3
-  *            ie(CloGaelachLaptop)    =       +ie(CloGaelach):3
-  *            in(urd) =       +in(urd-phonetic):3
-  *            iu(basic)       =       +ca(ike):3
-  *            lo(basic)       =       +la(basic):3
-  *            kan(basic)      =       +in(kan):3
-  *            mal(basic)      =       +in(mal):3
-  *            mal(mlplusnum)  =       +in(mal):3
-  *            ogham(basic)    =       +ie(ogam):3
-  *            ogham(laptop)   =       +ie(ogam):3
-  *            ogham(is434)    =       +ie(ogam_is434):3
-  *            ogham(is434laptop)      =       +ie(ogam_is434):3
-  *            ori(basic)      =       +in(ori):3
-  *            ro(de)  =       +ro(winkeys):3
-  *            ro(us)  =       +ro(std):3
-  *            ro(academic)    =       +ro(std):3
-  *            ro(std_comma)   =       +ro(std):3
-  *            ro(comma)       =       +ro(basic):3
-  *            ru(os)  =       +ru(os_legacy):3
-  *            pk(urd) =       +pk(urd-phonetic):3
-  *            sapmi(basic)    =       +no(smi):3
-  *            sapmi(nodeadkeys)       =       +no(smi_nodeadkeys):3
-  *            sapmi(sefi)     =       +fi(smi):3
-  *            sin(phonetic-static)    =       +in(sin_phonetic):3
-  *            syr(basic)      =       +sy(syc):3
-  *            syr(phonetic)   =       +sy(syc_phonetic):3
-  *            tam(INSCRIPT)   =       +in(tam):3
-  *            tam(UNI)        =       +in(tam_unicode):3
-  *            tam(NUMERAL-KEYBOARD)   =       +in(tam_keyboard_with_numerals):3
-  *            tam(TAB)        =       +in(tam_TAB):3
-  *            tam(TSCII)      =       +in(tam_TSCII):3
-  *            tel(basic)      =       +in(tel):3
-  *            yu(basic)       =       +srp(latin):3
-  *            yu(unicode)     =       +srp(latinunicode):3
-  *            yu(yz)  =       +srp(latinyz):3
-  *            yu(unicodeyz)   =       +srp(latinunicodeyz):3
+  *            ben(basic)              =       +in(ben):3
+  *            ben(probhat)            =       +in(ben_probhat):3
+  *            dev(basic)              =       +in(deva):3
+  *            dvorak($dvoraklayouts)          =       +%v(dvorak):3
+  *            dvorak(basic)           =       +us(dvorak):3
+  *            dvorak(pl_basic)                =       +pl(dvorak):3
+  *            dvorak(pl)              =       +pl(dvorak_quotes):3
+  *            dvorak(pl_altquotes)            =       +pl(dvorak_altquotes):3
+  *            dzdwi(basic)            =       +bt(basic):3
+  *            fi(basic)               =       +fi(classic):3
+  *            ge(azerty_tskapo)               =       +fr(geo):3
+  *            guj(basic)              =       +in(guj):3
+  *            gur(basic)              =       +in(guru):3
+  *            ie(laptop)              =       +ie(basic):3
+  *            ie(CloGaelachLaptop)            =       +ie(CloGaelach):3
+  *            in(urd)         =       +in(urd-phonetic):3
+  *            iu(basic)               =       +ca(ike):3
+  *            lo(basic)               =       +la(basic):3
+  *            kan(basic)              =       +in(kan):3
+  *            mal(basic)              =       +in(mal):3
+  *            mal(mlplusnum)          =       +in(mal):3
+  *            ogham(basic)            =       +ie(ogam):3
+  *            ogham(laptop)           =       +ie(ogam):3
+  *            ogham(is434)            =       +ie(ogam_is434):3
+  *            ogham(is434laptop)              =       +ie(ogam_is434):3
+  *            ori(basic)              =       +in(ori):3
+  *            ro(de)          =       +ro(winkeys):3
+  *            ro(us)          =       +ro(std):3
+  *            ro(academic)            =       +ro(std):3
+  *            ro(std_comma)           =       +ro(std):3
+  *            ro(comma)               =       +ro(basic):3
+  *            ru(os)          =       +ru(os_legacy):3
+  *            pk(urd)         =       +pk(urd-phonetic):3
+  *            sapmi(basic)            =       +no(smi):3
+  *            sapmi(nodeadkeys)               =       +no(smi_nodeadkeys):3
+  *            sapmi(sefi)             =       +fi(smi):3
+  *            sin(phonetic-static)            =       +in(sin_phonetic):3
+  *            syr(basic)              =       +sy(syc):3
+  *            syr(phonetic)           =       +sy(syc_phonetic):3
+  *            tam(INSCRIPT)           =       +in(tam):3
+  *            tam(UNI)                =       +in(tam_unicode):3
+  *            tam(NUMERAL-KEYBOARD)           =       +in(tam_keyboard_with_numerals):3
+  *            tam(TAB)                =       +in(tam_TAB):3
+  *            tam(TSCII)              =       +in(tam_TSCII):3
+  *            tel(basic)              =       +in(tel):3
+  *            yu(basic)               =       +srp(latin):3
+  *            yu(unicode)             =       +srp(latinunicode):3
+  *            yu(yz)          =       +srp(latinyz):3
+  *            yu(unicodeyz)           =       +srp(latinunicodeyz):3
   nokiarx51    cz(qwerty)      =       +nokia_vndr/rx-51(cz_qwerty):3
   nokiarx51    *               =       +nokia_vndr/rx-51(%l[3]%_v[3]):3
  $sun  $sun_custom     =       +sun_vndr/%l[3]%(v[3]):3
   *            yu              =       +srp%(v[4]):4
   *            fr-latin9               =       +fr(latin9):4
   *            us_intl         =       +us(alt-intl):4
-  *            ben(basic)      =       +in(ben):4
-  *            ben(probhat)    =       +in(ben_probhat):4
-  *            dev(basic)      =       +in(deva):4
-  *            dvorak($dvoraklayouts)  =       +%v(dvorak):4
-  *            dvorak(basic)   =       +us(dvorak):4
-  *            dvorak(pl_basic)        =       +pl(dvorak):4
-  *            dvorak(pl)      =       +pl(dvorak_quotes):4
-  *            dvorak(pl_altquotes)    =       +pl(dvorak_altquotes):4
-  *            dzdwi(basic)    =       +bt(basic):4
-  *            fi(basic)       =       +fi(classic):4
-  *            ge(azerty_tskapo)       =       +fr(geo):4
-  *            guj(basic)      =       +in(guj):4
-  *            gur(basic)      =       +in(guru):4
-  *            ie(laptop)      =       +ie(basic):4
-  *            ie(CloGaelachLaptop)    =       +ie(CloGaelach):4
-  *            in(urd) =       +in(urd-phonetic):4
-  *            iu(basic)       =       +ca(ike):4
-  *            lo(basic)       =       +la(basic):4
-  *            kan(basic)      =       +in(kan):4
-  *            mal(basic)      =       +in(mal):4
-  *            mal(mlplusnum)  =       +in(mal):4
-  *            ogham(basic)    =       +ie(ogam):4
-  *            ogham(laptop)   =       +ie(ogam):4
-  *            ogham(is434)    =       +ie(ogam_is434):4
-  *            ogham(is434laptop)      =       +ie(ogam_is434):4
-  *            ori(basic)      =       +in(ori):4
-  *            ro(de)  =       +ro(winkeys):4
-  *            ro(us)  =       +ro(std):4
-  *            ro(academic)    =       +ro(std):4
-  *            ro(std_comma)   =       +ro(std):4
-  *            ro(comma)       =       +ro(basic):4
-  *            ru(os)  =       +ru(os_legacy):4
-  *            pk(urd) =       +pk(urd-phonetic):4
-  *            sapmi(basic)    =       +no(smi):4
-  *            sapmi(nodeadkeys)       =       +no(smi_nodeadkeys):4
-  *            sapmi(sefi)     =       +fi(smi):4
-  *            sin(phonetic-static)    =       +in(sin_phonetic):4
-  *            syr(basic)      =       +sy(syc):4
-  *            syr(phonetic)   =       +sy(syc_phonetic):4
-  *            tam(INSCRIPT)   =       +in(tam):4
-  *            tam(UNI)        =       +in(tam_unicode):4
-  *            tam(NUMERAL-KEYBOARD)   =       +in(tam_keyboard_with_numerals):4
-  *            tam(TAB)        =       +in(tam_TAB):4
-  *            tam(TSCII)      =       +in(tam_TSCII):4
-  *            tel(basic)      =       +in(tel):4
-  *            yu(basic)       =       +srp(latin):4
-  *            yu(unicode)     =       +srp(latinunicode):4
-  *            yu(yz)  =       +srp(latinyz):4
-  *            yu(unicodeyz)   =       +srp(latinunicodeyz):4
+  *            ben(basic)              =       +in(ben):4
+  *            ben(probhat)            =       +in(ben_probhat):4
+  *            dev(basic)              =       +in(deva):4
+  *            dvorak($dvoraklayouts)          =       +%v(dvorak):4
+  *            dvorak(basic)           =       +us(dvorak):4
+  *            dvorak(pl_basic)                =       +pl(dvorak):4
+  *            dvorak(pl)              =       +pl(dvorak_quotes):4
+  *            dvorak(pl_altquotes)            =       +pl(dvorak_altquotes):4
+  *            dzdwi(basic)            =       +bt(basic):4
+  *            fi(basic)               =       +fi(classic):4
+  *            ge(azerty_tskapo)               =       +fr(geo):4
+  *            guj(basic)              =       +in(guj):4
+  *            gur(basic)              =       +in(guru):4
+  *            ie(laptop)              =       +ie(basic):4
+  *            ie(CloGaelachLaptop)            =       +ie(CloGaelach):4
+  *            in(urd)         =       +in(urd-phonetic):4
+  *            iu(basic)               =       +ca(ike):4
+  *            lo(basic)               =       +la(basic):4
+  *            kan(basic)              =       +in(kan):4
+  *            mal(basic)              =       +in(mal):4
+  *            mal(mlplusnum)          =       +in(mal):4
+  *            ogham(basic)            =       +ie(ogam):4
+  *            ogham(laptop)           =       +ie(ogam):4
+  *            ogham(is434)            =       +ie(ogam_is434):4
+  *            ogham(is434laptop)              =       +ie(ogam_is434):4
+  *            ori(basic)              =       +in(ori):4
+  *            ro(de)          =       +ro(winkeys):4
+  *            ro(us)          =       +ro(std):4
+  *            ro(academic)            =       +ro(std):4
+  *            ro(std_comma)           =       +ro(std):4
+  *            ro(comma)               =       +ro(basic):4
+  *            ru(os)          =       +ru(os_legacy):4
+  *            pk(urd)         =       +pk(urd-phonetic):4
+  *            sapmi(basic)            =       +no(smi):4
+  *            sapmi(nodeadkeys)               =       +no(smi_nodeadkeys):4
+  *            sapmi(sefi)             =       +fi(smi):4
+  *            sin(phonetic-static)            =       +in(sin_phonetic):4
+  *            syr(basic)              =       +sy(syc):4
+  *            syr(phonetic)           =       +sy(syc_phonetic):4
+  *            tam(INSCRIPT)           =       +in(tam):4
+  *            tam(UNI)                =       +in(tam_unicode):4
+  *            tam(NUMERAL-KEYBOARD)           =       +in(tam_keyboard_with_numerals):4
+  *            tam(TAB)                =       +in(tam_TAB):4
+  *            tam(TSCII)              =       +in(tam_TSCII):4
+  *            tel(basic)              =       +in(tel):4
+  *            yu(basic)               =       +srp(latin):4
+  *            yu(unicode)             =       +srp(latinunicode):4
+  *            yu(yz)          =       +srp(latinyz):4
+  *            yu(unicodeyz)           =       +srp(latinunicodeyz):4
   nokiarx51    cz(qwerty)      =       +nokia_vndr/rx-51(cz_qwerty):4
   nokiarx51    *               =       +nokia_vndr/rx-51(%l[4]%_v[4]):4
  $sun  $sun_custom     =       +sun_vndr/%l[4]%(v[4]):4
 ! layout       option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
   *                    misc:typo       = +typo(base)
+  *                    misc:apl        = +apl(level3)
 
 ! layout[1]    option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
   *                    misc:typo       = +typo(base):1
+  *                    misc:apl        = +apl(level3):1
 
 ! layout[2]    option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
   *                    misc:typo       = +typo(base):2
+  *                    misc:apl        = +apl(level3):2
 
 ! layout[3]    option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
   *                    misc:typo       = +typo(base):3
+  *                    misc:apl        = +apl(level3):3
 
 ! layout[4]    option  =       symbols
   $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
   *                    misc:typo       = +typo(base):4
+  *                    misc:apl        = +apl(level3):4
 
 ! option       =       symbols
   grp:shift_toggle     =       +group(shifts_toggle)
   altwin:menu          =       +altwin(menu)
+  altwin:menu_win      =       +altwin(menu_win)
   altwin:meta_alt      =       +altwin(meta_alt)
   altwin:alt_win       =       +altwin(alt_win)
   altwin:ctrl_win      =       +altwin(ctrl_win)
   lv3:lwin_switch      =       +level3(lwin_switch)
   lv3:rwin_switch      =       +level3(rwin_switch)
   lv3:enter_switch     =       +level3(enter_switch)
+  lv3:4_switch_isolated        =       +level3(4_switch_isolated)
+  lv3:9_switch_isolated        =       +level3(9_switch_isolated)
   caps:capslock                =       +capslock(capslock)
   caps:numlock         =       +capslock(numlock)
   caps:shiftlock       =       +capslock(shiftlock)
   caps:swapescape      =       +capslock(swapescape)
   caps:escape          =       +capslock(escape)
+  caps:escape_shifted_capslock =       +capslock(escape_shifted_capslock)
   caps:backspace       =       +capslock(backspace)
   caps:super           =       +capslock(super)
   caps:hyper           =       +capslock(hyper)
   ctrl:nocaps          =       +ctrl(nocaps)
   ctrl:lctrl_meta      =       +ctrl(lctrl_meta)
   ctrl:swapcaps                =       +ctrl(swapcaps)
+  ctrl:swapcaps_hyper  =       +ctrl(swapcaps_hyper)
+  ctrl:swapcaps_and_switch_layout      =       +ctrl(swapcaps_and_switch_layout)
   ctrl:ac_ctrl         =       +ctrl(ac_ctrl)
   ctrl:aa_ctrl         =       +ctrl(aa_ctrl)
   ctrl:rctrl_ralt      =       +ctrl(rctrl_ralt)
   nbsp:level4           =      +nbsp(level4)
   nbsp:level4n          =      +nbsp(level4n)
   nbsp:level4nl         =      +nbsp(level4nl)
+  nbsp:zwnj2            =      +nbsp(zwnj2)
+  nbsp:zwnj2zwj3        =      +nbsp(zwnj2zwj3)
+  nbsp:zwnj2zwj3nb4     =      +nbsp(zwnj2zwj3nb4)
+  nbsp:zwnj2nb3         =      +nbsp(zwnj2nb3)
+  nbsp:zwnj2nb3s        =      +nbsp(zwnj2nb3s)
+  nbsp:zwnj2nb3zwj4     =      +nbsp(zwnj2nb3zwj4)
+  nbsp:zwnj2nb3nnb4     =      +nbsp(zwnj2nb3nnb4)
+  nbsp:zwnj3zwj4        =      +nbsp(zwnj3zwj4)
   japan:nicola_f_bs     =      +jp(nicola_f_bs)
   japan:hztg_escape     =      +jp(hztg_escape)
-  korean:ralt_rctrl     =      +kr(ralt_hangul)+kr(rctrl_hanja)
-  korean:rctrl_ralt     =      +kr(rctrl_hangul)+kr(ralt_hanja)
+  korean:ralt_hangul   =       +kr(ralt_hangul)
+  korean:rctrl_hangul  =       +kr(rctrl_hangul)
+  korean:ralt_hanja    =       +kr(ralt_hanja)
+  korean:rctrl_hanja   =       +kr(rctrl_hanja)
   kpdl:dot              =      +kpdl(dot)
   kpdl:comma            =      +kpdl(comma)
   kpdl:dotoss           =      +kpdl(dotoss)
   lv3:caps_switch_latch              =       +level3(caps_switch_latch)
   lv3:bksl_switch_latch              =       +level3(bksl_switch_latch)
   lv3:lsgt_switch_latch              =       +level3(lsgt_switch_latch)
+  lv5:lsgt_switch                 =       +level5(lsgt_switch)
+  lv5:ralt_switch                 =       +level5(ralt_switch)
   lv5:lsgt_switch_lock            =       +level5(lsgt_switch_lock)
   lv5:ralt_switch_lock            =       +level5(ralt_switch_lock)
   lv5:lwin_switch_lock            =       +level5(lwin_switch_lock)
   grp_led:num          =       +lednum(group_lock)
   grp_led:caps         =       +ledcaps(group_lock)
   grp_led:scroll       =       +ledscroll(group_lock)
+  mod_led:compose      =       +ledcompose(compose)
   japan:kana_lock      =       +japan(kana_lock)
   caps:shiftlock       =       +ledcaps(shift_lock)
   grab:break_actions    =       +xfree86(grab_break)
index 7240ab8..038456b 100644 (file)
@@ -74,6 +74,12 @@ xkb_symbols "menu" {
     key <MENU> { [ Menu ] };
 };
 
+// Menu is mapped to the right Win key.
+partial modifier_keys
+xkb_symbols "menu_win" {
+    key <MENU> { [ Super_R ] };
+};
+
 // Layout for Tux key caps with additional right Alt key
 partial modifier_keys
 xkb_symbols "alt_super_win" {
index 84f153c..41a914f 100644 (file)
@@ -1,4 +1,4 @@
-default  partial
+default partial
 xkb_symbols "fr" {
     name[Group1] = "French (Canada)";
 
@@ -170,7 +170,7 @@ xkb_symbols "multi" {
 
     include "ca(fr)"
 
-    name[Group1] = "Canadian Multilingual (1st part)";
+    name[Group1] = "Canadian (intl., 1st part)";
 
     key <TLDE> { [     slash,  backslash,           bar ]      };
     key <AE01> { [         1,     exclam ]     };
@@ -206,7 +206,7 @@ xkb_symbols "multi" {
 partial
 xkb_symbols "multi-2gr" {
 
-    name[Group1] = "Canadian Multilingual (2nd part)";
+    name[Group1] = "Canadian (intl., 2nd part)";
 
     key <TLDE> { [    NoSymbol,      hyphen ]  };
     key <AE01> { [   onesuperior,  exclamdown ]        };
@@ -327,7 +327,7 @@ xkb_symbols "ike" {
 partial
 xkb_symbols "multix" {
 
-    name[Group1] = "Canadian Multilingual";
+    name[Group1] = "Canadian (intl.)";
 
     key.type[group1]="EIGHT_LEVEL_SEMIALPHABETIC";
     key <TLDE> { [     slash,  backslash,            bar, NoSymbol,
index 6b85c3d..a082b75 100644 (file)
@@ -35,6 +35,15 @@ xkb_symbols "escape" {
 };
 
 hidden partial modifier_keys
+xkb_symbols "escape_shifted_capslock" {
+    key <CAPS> {
+        type[Group1] = "TWO_LEVEL",
+        symbols[Group1] = [ Escape, Caps_Lock ],
+        actions[Group1] = [ NoAction(), LockMods(modifiers = Lock) ]
+    };
+};
+
+hidden partial modifier_keys
 xkb_symbols "backspace" {
     key <CAPS> { [ BackSpace ] };
 };
index a87f93a..626778c 100644 (file)
@@ -1,4 +1,4 @@
-default  partial alphanumeric_keys
+default partial alphanumeric_keys
 xkb_symbols "basic" {
 
     include "latin"
@@ -62,7 +62,7 @@ xkb_symbols "de_Sundeadkeys" {
 partial alphanumeric_keys
 xkb_symbols "de_sundeadkeys" {
     include "ch(de_Sundeadkeys)"
-    name[Group1]= "German (Switzerland, with Sun dead keys)";
+    name[Group1]= "German (Switzerland, Sun dead keys)";
 };
 
 partial alphanumeric_keys
@@ -104,7 +104,7 @@ xkb_symbols "fr_Sundeadkeys" {
 partial alphanumeric_keys
 xkb_symbols "fr_sundeadkeys" {
     include "ch(fr_Sundeadkeys)"
-    name[Group1]= "French (Switzerland, with Sun dead keys)";
+    name[Group1]= "French (Switzerland, Sun dead keys)";
 };
 
 partial alphanumeric_keys
@@ -153,7 +153,7 @@ xkb_symbols "de_mac" {
     key <AD11> { [     udiaeresis,     egrave,         section,        ydiaeresis              ]       };
     key <AD12> { [     dead_diaeresis, exclam,         grave,          apostrophe              ]       };
     key <AC01> { [     a,      A,      aring,          Aring                   ]       };
-    key <AC02> { [     s,      S,      ssharp,         NoSymbol                ]       };
+    key <AC02> { [     s,      S,      ssharp,         U1E9E                   ]       };
                                        // ligature fl
     key <AC03> { [     d,      D,      Greek_sigma,    NoSymbol                ]       };
                        // partialderivative is not available here att
index 8791b49..a9e97f5 100644 (file)
@@ -20,6 +20,25 @@ xkb_symbols "swapcaps" {
     modifier_map  Lock { <LCTL> };
 };
 
+// Swap the functions of the CapsLock key and the left Ctrl key,
+// but make the Ctrl key a 'Hyper' modifier
+partial modifier_keys
+xkb_symbols "swapcaps_hyper" {
+    replace key <CAPS> { [ Control_L ] };
+    replace key <LCTL> { [ Hyper_L ] };
+    modifier_map Control { <CAPS> };
+    modifier_map Mod3 { <LCTL> };
+};
+
+// Set CapsLock to left Ctrl and left Ctrl to switch layout.
+partial modifier_keys
+xkb_symbols "swapcaps_and_switch_layout" {
+    replace key <CAPS> { [ Control_L ] };
+    replace key <LCTL> { [ ISO_Next_Group ] };
+    modifier_map Control { <CAPS> };
+    modifier_map  Lock { <LCTL> };
+};
+
 // Move Ctrl to the leftmost key on the middle row and CapsLock to the
 // leftmost key on the bottom row.  Only works if the geometry or keycodes
 // file has defined appropriate aliases for the keys in question.
index 3407e92..8fbff0e 100644 (file)
@@ -1,4 +1,4 @@
-default  partial alphanumeric_keys
+default partial alphanumeric_keys
 xkb_symbols "basic" {
 
     // This layout conforms to a new Czech compromise standard
@@ -108,6 +108,74 @@ xkb_symbols "qwerty_bksl" {
     key <BKSL>  { [ backslash,        bar,        slash,     NoSymbol ] };
 };
 
+partial alphanumeric_keys
+xkb_symbols "qwerty-mac" {
+
+    // This layout corresponds to the Apple's Czech - QWERTY.
+    // 2018 by Jakub Jirutka <jakub@jirutka.cz>
+
+    include "latin"
+    name[Group1]= "Czech (QWERTY, Macintosh)";
+
+    key <TLDE>  { [      less,    greater, lessthanequal, greaterthanequal]};
+    key <AE01>  { [      plus,          1,        grave,      notsign ] };
+    key <AE02>  { [    ecaron,          2,           at, enfilledcircbullet]};
+    key <AE03>  { [    scaron,          3,   numbersign,     notequal ] };
+    key <AE04>  { [    ccaron,          4,       dollar,     sterling ] };
+    key <AE05>  { [    rcaron,          5,   asciitilde,        U25CA ] };
+    key <AE06>  { [    zcaron,          6,  asciicircum,       dagger ] };
+    key <AE07>  { [    yacute,          7,    ampersand,    paragraph ] };
+    key <AE08>  { [    aacute,          8,     asterisk,     division ] };
+    key <AE09>  { [    iacute,          9,    braceleft, guillemotleft] };
+    key <AE10>  { [    eacute,          0,   braceright, guillemotright]};
+    key <AE11>  { [     equal,    percent, dead_abovering, dead_cedilla]};
+    key <AE12>  { [dead_acute, dead_caron, dead_circumflex, dead_macron]};
+
+    key <AD01>  { [         q,          Q,     NoSymbol,     NoSymbol ] };
+    key <AD02>  { [         w,          W,    eabovedot,    Eabovedot ] };
+    key <AD03>  { [         e,          E,      eogonek,      Eogonek ] };
+    key <AD04>  { [         r,          R,     EuroSign,   registered ] };
+    key <AD05>  { [         t,          T,     NoSymbol,    trademark ] };
+    key <AD06>  { [         y,          Y,     NoSymbol,     NoSymbol ] };
+    key <AD07>  { [         u,          U,     NoSymbol,     NoSymbol ] };
+    key <AD08>  { [         i,          I,     NoSymbol,     NoSymbol ] };
+    key <AD09>  { [         o,          O,     NoSymbol,     NoSymbol ] };
+    key <AD10>  { [         p,          P,     NoSymbol,     NoSymbol ] };
+
+    key <AD11>  { [    uacute,      slash,  bracketleft,         less ] };
+    key <AD12>  { [parenright,  parenleft, bracketright,      greater ] };
+
+    key <AC01>  { [         a,          A,      aogonek,     Aogonekl ] };
+    key <AC02>  { [         s,          S,       ssharp,        U2211 ] };
+    key <AC03>  { [         d,          D, partialderivate,     U2206 ] };
+    key <AC04>  { [         f,          F,     NoSymbol,     NoSymbol ] };
+    key <AC05>  { [         g,          G,     NoSymbol,     NoSymbol ] };
+    key <AC06>  { [         h,          H, leftsinglequotemark, leftdoublequotemark]};
+    key <AC07>  { [         j,          J, rightsinglequotemark, rightdoublequotemark]};
+    key <AC08>  { [         k,          K,     NoSymbol,     NoSymbol ] };
+    key <AC09>  { [         l,          L,      lstroke,      Lstroke ] };
+
+    key <AC10>  { [     uring,   quotedbl,    semicolon,     ellipsis ] };
+    key <AC11>  { [   section,     exclam,   apostrophe,   dead_tilde ] };
+    key <BKSL>  { [dead_diaeresis, grave, dead_diaeresis, dead_doubleacute]};
+
+    key <LSGT>  { [ backslash,        bar,     NoSymbol,     NoSymbol ] };
+    key <AB01>  { [         z,          Z,    zabovedot,    Zabovedot ] };
+    key <AB02>  { [         x,          X,     NoSymbol,     NoSymbol ] };
+    key <AB03>  { [         c,          C,     NoSymbol,    copyright ] };
+    key <AB04>  { [         v,          V,     NoSymbol,   squareroot ] };
+    key <AB05>  { [         b,          B,     NoSymbol,     NoSymbol ] };
+    key <AB06>  { [         n,          N, singlelowquotemark, doublelowquotemark]};
+    key <AB07>  { [         m,          M,     NoSymbol,     NoSymbol ] };
+    key <AB08>  { [     comma,   question,         less, lessthanequal] };
+    key <AB09>  { [    period,      colon,      greater, greaterthanequal]};
+    key <AB10>  { [     minus, underscore,       endash,       emdash ] };
+
+    key <SPCE>  { [     space,      space, nobreakspace, nobreakspace ] };
+
+    include "level3(ralt_switch)"
+};
+
 partial alphanumeric_keys alternate_group
 xkb_symbols "ucw" {
 
@@ -118,7 +186,7 @@ xkb_symbols "ucw" {
     name[Group1]= "Czech (UCW, only accented letters)";
 
     key <AB01> { [zcaron,      Zcaron      ] };
-    key <AB02> { [ssharp                   ] };
+    key <AB02> { [ssharp,      U1E9E       ] };
     key <AB03> { [ccaron,      Ccaron      ] };
     key <AB04> { [ccedilla,    Ccedilla    ] };
     key <AB05> { [ntilde,      Ntilde      ] };
@@ -253,3 +321,163 @@ partial alphanumeric_keys
        xkb_symbols "sun_type6" {
        include "sun_vndr/cz(sun_type6)"
 };
+
+xkb_symbols "prog" {
+    // cz-prog 1.0 2019-05-15 by Viktor Grešák <vgresak@gmail.com> and Tomáš Hudec <Tommy.Hudec@gmail.com>
+    //
+    // Programmer keyboard. Based on the US layout with accented Czech letters and dead keys.
+    // Using AltGr and a key from the 1st row generates original level 2 US key as level 3 except TLDE and AE12.
+    // Using AltGr+Shift on accented letters generates its uppercase variant.
+    // Using AltGr or AltGr+Shift on letters which have accent in Czech but are not on the 1st row directly accessible generate accented letters, 
+    // i.e. [d, D], [t, T], [n, N], [o, O] generate with AltGr and AltGr+Shift: [dcaron, Dcaron], [tcaron, Tcaron], [ncaron, Ncaron], [oacute, Oacute].
+    // Other Czech letters besides alphanumeric keys (like uacute, uring) are generated using AltGr.
+
+    name[Group1]="Czech (programming)";
+
+    key <AB01> { [ z,  Z ] };
+    key <AB02> { [ x,  X ] };
+    key <AB03> { [ c,  C ] };
+    key <AB04> { [ v,  V ] };
+    key <AB05> { [ b,  B ] };
+    key <AB06> { [ n,  N,      ncaron, Ncaron ] };
+    key <AB07> { [ m,  M ] };
+    key <AB08> { [ comma,      less,   multiply ] };
+    key <AB09> { [ period,     greater,        division ] };
+    key <AB10> { [ slash,      question,       dead_abovedot ] };
+    key <AC01> { [ a,  A ] };
+    key <AC02> { [ s,  S ] };
+    key <AC03> { [ d,  D,      dcaron, Dcaron ] };
+    key <AC04> { [ f,  F ] };
+    key <AC05> { [ g,  G ] };
+    key <AC06> { [ h,  H ] };
+    key <AC07> { [ j,  J ] };
+    key <AC08> { [ k,  K ] };
+    key <AC09> { [ l,  L ] };
+    key <AC10> { [ semicolon,  colon,  uring,  Uring ] };
+    key <AC11> { [ apostrophe, quotedbl,       section ] };
+    key <AD01> { [ q,  Q ] };
+    key <AD02> { [ w,  W ] };
+    key <AD03> { [ e,  E ] };
+    key <AD04> { [ r,  R ] };
+    key <AD05> { [ t,  T,      tcaron, Tcaron ] };
+    key <AD06> { [ y,  Y ] };
+    key <AD07> { [ u,  U ] };
+    key <AD08> { [ i,  I ] };
+    key <AD09> { [ o,  O,      oacute, Oacute ] };
+    key <AD10> { [ p,  P ] };
+    key <AD11> { [ bracketleft,        braceleft,      uacute, Uacute ] };
+    key <AD12> { [ bracketright,       braceright ] };
+    key <AE01> { [ plus,       1,      exclam, NoSymbol ] };
+    key <AE02> { [ ecaron,     2,      at,     Ecaron ] };
+    key <AE03> { [ scaron,     3,      numbersign,     Scaron ] };
+    key <AE04> { [ ccaron,     4,      dollar, Ccaron ] };
+    key <AE05> { [ rcaron,     5,      percent,        Rcaron ] };
+    key <AE06> { [ zcaron,     6,      asciicircum,    Zcaron ] };
+    key <AE07> { [ yacute,     7,      ampersand,      Yacute ] };
+    key <AE08> { [ aacute,     8,      asterisk,       Aacute ] };
+    key <AE09> { [ iacute,     9,      parenleft,      Iacute ] };
+    key <AE10> { [ eacute,     0,      parenright,     Eacute ] };
+    key <AE11> { [ equal,      minus,  underscore,     U2212 ] };
+    key <AE12> { [ dead_acute, dead_caron,     plusminus,      notequal ] };
+    key <BKSL> { [ backslash,  bar,    dead_diaeresis ] };
+    key <BKSP> { [ BackSpace,  BackSpace ] };
+    key <CAPS> { [ Caps_Lock ] };
+    key <COMP> { [ Menu,       Multi_key ] };
+    key <LALT> { [ Alt_L,      Meta_L ] };
+    key <LCTL> { [ Control_L ] };
+    key <LFSH> { [ Shift_L ] };
+    key <LWIN> { [ Super_L ] };
+    key <RALT> { [ ISO_Level3_Shift ] };
+    key <RCTL> { [ Control_R ] };
+    key <RTRN> { [ Return ] };
+    key <RTSH> { [ Shift_R ] };
+    key <RWIN> { [ Super_R ] };
+    key <SPCE> { [ space ] };
+    key <TAB> { [ Tab, ISO_Left_Tab ] };
+    key <TLDE> { [ grave,      asciitilde ] };
+    
+    include "level3(ralt_switch)"
+};
+
+xkb_symbols "typo" {
+    // cz-typo 1.0 2019-05-15 by Viktor Grešák <vgresak@gmail.com> and Tomáš Hudec <Tommy.Hudec@gmail.com>
+    //
+    // Contains typographic symbols in third and fourth level. 
+    // It is intended to be used in conjuction with other existing layout, e.g. setxkbmap -symbols "pc+cz(basic)+cz(typo)+inet(evdev)"
+
+    name[Group1]="Czech (typographic)";
+
+    key <AB01> { [ NoSymbol,   NoSymbol,       degree, U2300 ] };
+    key <AB02> { [ NoSymbol,   NoSymbol,       multiply,       U22C5 ] };
+    key <AB03> { [ NoSymbol,   NoSymbol,       ampersand,      copyright ] };
+    key <AB04> { [ NoSymbol,   NoSymbol,       at,     ordfeminine ] };
+    key <AB05> { [ NoSymbol,   NoSymbol,       enfilledcircbullet,     enopencircbullet ] };
+    key <AB07> { [ NoSymbol,   NoSymbol,       U203A,  U2039 ] };
+    key <AB08> { [ NoSymbol,   NoSymbol,       doublelowquotemark,     leftdoublequotemark ] };
+    key <AB09> { [ NoSymbol,   NoSymbol,       ellipsis,       rightdoublequotemark ] };
+    key <AB10> { [ NoSymbol,   NoSymbol,       endash, emdash ] };
+    key <AC04> { [ NoSymbol,   NoSymbol,       UFB00,  UFB05 ] };
+    key <AC06> { [ NoSymbol,   NoSymbol,       U2010,  U2011 ] };
+    key <AC07> { [ NoSymbol,   NoSymbol,       guillemotright, guillemotleft ] };
+    key <AC08> { [ NoSymbol,   NoSymbol,       dagger, doubledagger ] };
+    key <AC09> { [ NoSymbol,   NoSymbol,       UFB02,  UFB04 ] };
+    key <AC11> { [ NoSymbol,   NoSymbol,       NoSymbol,       UFB03 ] };
+    key <AD04> { [ NoSymbol,   NoSymbol,       U2030,  registered ] };
+    key <AD06> { [ NoSymbol,   NoSymbol,       leftarrow ] };
+    key <AD07> { [ NoSymbol,   NoSymbol,       downarrow,      uparrow ] };
+    key <AD08> { [ NoSymbol,   NoSymbol,       rightarrow,     UFB01 ] };
+    key <AD10> { [ NoSymbol,   NoSymbol,       minutes,        seconds ] };
+    key <AE01> { [ NoSymbol,   NoSymbol,       NoSymbol,       rightsinglequotemark ] };
+    key <AE11> { [ NoSymbol,   NoSymbol,       underscore,     U2212 ] };
+    key <SPCE> { [ space,      space,  space,  nobreakspace ] };
+    key <TLDE> { [ NoSymbol,   NoSymbol,       singlelowquotemark,     leftsinglequotemark ] };
+};
+
+xkb_symbols "coder" {
+
+    // US layout with Czech chars under AltGr
+    // for touch-typing programmers who need to write Czech occasionally
+    // https://github.com/michalkahle/czech-coder-xkb
+
+    include "us"
+    name[Group1]= "Czech (coder)";
+
+    key <TLDE>{[     grave,  asciitilde,     semicolon, dead_abovering ]};
+    key <AE02>{[         2,          at,        ecaron,     Ecaron ]};
+    key <AE03>{[         3,  numbersign,        scaron,     Scaron ]};
+    key <AE04>{[         4,      dollar,        ccaron,     Ccaron ]};
+    key <AE05>{[         5,     percent,        rcaron,     Rcaron ]};
+    key <AE06>{[         6, asciicircum,        zcaron,     Zcaron ]};
+    key <AE07>{[         7,   ampersand,        yacute,     Yacute ]};
+    key <AE08>{[         8,    asterisk,        aacute,     Aacute ]};
+    key <AE09>{[         9,   parenleft,        iacute,     Iacute ]};
+    key <AE10>{[         0,  parenright,        eacute,     Eacute ]};
+    key <AE12>{[     equal,        plus,    dead_acute, dead_caron ]};
+
+    key <AD03>{[         e,           E,             e,   EuroSign ]};
+    key <AD11>{[ bracketleft, braceleft,        uacute,     Uacute ]};
+
+    key <AC10>{[ semicolon,      colon,          uring,      Uring ]};
+    key <AC11>{[ apostrophe,  quotedbl,        section,   quotedbl ]};
+    key <BKSL>{[ backslash,        bar, dead_diaeresis, apostrophe ]};
+
+    include "level3(ralt_switch)"
+};
+
+xkb_symbols "prog_typo" {
+    // cz-prog-typo 1.0 2019-06-17 by Viktor Grešák <vgresak@gmail.com> and Tomáš Hudec <Tommy.Hudec@gmail.com>
+    //
+    // Programmer + Typographic keyboard. Based on the US layout with accented Czech letters and dead keys.
+    // Using AltGr and a key from the 1st row generates original level 2 US key as level 3 except TLDE and AE12.
+    // Using AltGr+Shift on accented letters generates its uppercase variant.
+    // Using AltGr or AltGr+Shift on letters which have accent in Czech but are not on the 1st row directly accessible generate accented letters, 
+    // i.e. [d, D], [t, T], [n, N], [o, O] generate with AltGr and AltGr+Shift: [dcaron, Dcaron], [tcaron, Tcaron], [ncaron, Ncaron], [oacute, Oacute].
+    // Other Czech letters besides alphanumeric keys (like uacute, uring) are generated using AltGr.
+    //
+    // Contains typographic symbols in third and fourth level. 
+
+    name[Group1]="Czech (programming, typographic)";
+
+    include "cz(prog)"
+    include "cz(typo)"
+};
index c025a1c..8c1083f 100644 (file)
@@ -131,7 +131,7 @@ xkb_symbols "T3" {
     key <AD11> { [      udiaeresis,      Udiaeresis,       dead_horn,        NoSymbol,           U017F,  dead_abovering,      dead_grave,        NoSymbol ] };
     key.type[Group1] = "EIGHT_LEVEL";
     key <AD12> { [            plus,        asterisk,      asciitilde,        NoSymbol,      dead_tilde,     dead_macron,              at,        NoSymbol ] };
-
+    
     key.type[Group1] = "ONE_LEVEL";
     key <CAPS>  { [ Caps_Lock  ]       };
     key.type[Group1] = "EIGHT_LEVEL_ALPHABETIC";
@@ -157,7 +157,7 @@ xkb_symbols "T3" {
     key <AB04> { [               v,               V,   guillemotleft,        NoSymbol, leftdoublequotemark, leftsinglequotemark,   U2039,        NoSymbol ] };
     key <AB05> { [               b,               B,           U2039,        NoSymbol, rightdoublequotemark, rightsinglequotemark, U203A,        NoSymbol ] };
     key <AB06> { [               n,               N,          endash,        NoSymbol,           U019E,           U0220,          endash,        NoSymbol ] };
-    key <AB07> { [               m,               M,        Greek_mu,        NoSymbol,              mu,       masculine,          emdash,        NoSymbol ] };
+    key <AB07> { [               m,               M,              mu,        NoSymbol,              mu,       masculine,          emdash,        NoSymbol ] };
     key.type[Group1] = "EIGHT_LEVEL";
     key <AB08> { [           comma,       semicolon,           U02BB,        NoSymbol,        ellipsis,        multiply,          dollar,        NoSymbol ] };
     key <AB09> { [          period,           colon,           U200C,        NoSymbol,  periodcentered,        division,      numbersign,        NoSymbol ] };
@@ -284,7 +284,7 @@ xkb_symbols "sundeadkeys" {
 
     include "de(Sundeadkeys)"
 
-    name[Group1]="German (with Sun dead keys)";
+    name[Group1]="German (Sun dead keys)";
 };
 
 
@@ -764,51 +764,6 @@ xkb_symbols "pl" {
 };
 
 partial alphanumeric_keys
-xkb_symbols "htcdream" {
-        include "inet(htcdream)"
-
-        name[Group1]= "German";
-
-        //second row
-        key <AD01> { [ q, Q, Tab, Tab ] };
-        key <AD02> { [ w, W, grave, grave ] };
-        key <AD03> { [ e, E, EuroSign, EuroSign ] };
-        key <AD04> { [ r, R, underscore, underscore ] };
-        key <AD05> { [ t, T, sterling, sterling] };
-        key <AD06> { [ z, Z, division, division ] };
-        key <AD07> { [ u, U, udiaeresis, udiaeresis ] };
-        key <AD08> { [ i, I, minus, minus ] };
-        key <AD09> { [ o, O, odiaeresis, odiaeresis ] };
-        key <AD10> { [ p, P, equal, equal ] };
-
-        //third row
-        key <AC01> { [ a, A, adiaeresis, adiaeresis ] };
-        key <AC02> { [ s, S, ssharp, ssharp] };
-        key <AC03> { [ d ,D, backslash, backslash ] };
-        key <AC04> { [ f, F, braceleft, braceleft ] };
-        key <AC05> { [ g, G, braceright, braceright ] };
-        key <AC06> { [ h, H, multiply, multiply ] };
-        key <AC07> { [ j, J, colon, colon ] };
-        key <AC08> { [ k, K, plus, plus ] };
-        key <AC09> { [ l, L, apostrophe, apostrophe ] };
-
-        //forth row
-        key <AB01> { [ y, Y, bar, bar ] };
-        key <AB02> { [ x, X, bracketleft, bracketleft ] };
-        key <AB03> { [ c, C, bracketright, bracketright ] };
-        key <AB04> { [ v, V, less, less ] };
-        key <AB05> { [ b, B, greater, greater ] };
-        key <AB06> { [ n, N, semicolon, semicolon ] };
-        key <AB07> { [ m, M, quotedbl, quotedbl ] };
-        key <AB08> { [ comma, comma, question, question ] };
-
-        //fifth row
-        key <FK15> { [ at, at, asciitilde, asciitilde ] };
-
-        include "level3(alt_switch)"
-};
-
-partial alphanumeric_keys
 xkb_symbols "tr" {
 
     // add turkish-specific letters to the basic German layout.
@@ -832,10 +787,10 @@ partial alphanumeric_keys
 xkb_symbols "us" {
     include "us"
 
-    name[Group1]="German (US, with German letters)";
+    name[Group1]="German (US)";
 
     key <AC01> { [           a,          A, adiaeresis, Adiaeresis ] };
-    key <AC02> { [           s,          S,     ssharp,     ssharp ] };
+    key <AC02> { [           s,          S,     ssharp,      U1E9E ] };
     key <AC10> { [   semicolon,      colon, odiaeresis, Odiaeresis ] };
     key <AC11> { [  apostrophe,   quotedbl, adiaeresis, Adiaeresis ] };
     key <AD03> { [           e,          E,   EuroSign,   EuroSign ] };
@@ -854,7 +809,7 @@ xkb_symbols "hu" {
     // modify the basic German layout to not have any dead keys and add Hungarian letters
 
     include "de(basic)"
-    name[Group1]="German (with Hungarian letters and no dead keys)";
+    name[Group1]="German (with Hungarian letters, no dead keys)";
 
     key <AB01> { [         y,          Y,        guillemotleft,         less ] };
     key <AC10> { [odiaeresis, Odiaeresis,               eacute,       Eacute ] };
@@ -1055,7 +1010,7 @@ xkb_symbols "bone_eszett_home" {
 
     include "de(bone_eszett_home_base)"
 
-    name[Group1]= "German (Bone, eszett home row)";
+    name[Group1]= "German (Bone, eszett in the home row)";
 
     include "shift(both_capslock)"
     include "level3(caps_switch)"
@@ -1111,7 +1066,7 @@ xkb_symbols "neo_qwertz" {
 
     include "de(neo_qwertz_base)"
 
-    name[Group1]= "German (Neo qwertz)";
+    name[Group1]= "German (Neo, QWERTZ)";
 
     include "shift(both_capslock)"
     include "level3(caps_switch)"
@@ -1134,7 +1089,7 @@ xkb_symbols "neo_qwerty" {
 
     include "de(neo_qwerty_base)"
 
-    name[Group1]= "German (Neo qwerty)";
+    name[Group1]= "German (Neo, QWERTY)";
 
     include "shift(both_capslock)"
     include "level3(caps_switch)"
@@ -1146,7 +1101,7 @@ xkb_symbols "neo_qwerty" {
 partial alphanumeric_keys
     xkb_symbols "lld" {
     include "de(basic)"
-    name[Group1] = "German Ladin";
+    name[Group1] = "German (Ladin)";
 
     key <AD10> { [ p, P, ediaeresis, Ediaeresis ] };
 
index acdd677..cae3303 100644 (file)
@@ -1,4 +1,4 @@
-default  partial alphanumeric_keys modifier_keys
+default partial alphanumeric_keys modifier_keys
 xkb_symbols "basic" {
     name[Group1]= "Empty";
 };
index 67487c1..dcd640c 100644 (file)
@@ -7,7 +7,7 @@
 // This implementation extends the standard with Yiddish digraphs
 // (a common extension) and Nun Hafukha (a fun character).
 
-default  partial alphanumeric_keys
+default partial alphanumeric_keys
 xkb_symbols "basic" {
     // uses the kbd layout in use in Israel.
 
index 79d5099..b3a5ca9 100644 (file)
@@ -1,5 +1,7 @@
 // This layout includes all Indian layouts, including:
-//     - Devanagari (Hindi, Marathi, Sanskrit)
+//     - Hindi
+//     - Marathi
+//     - Sanskrit
 //     - Bangla
 //     - Gujarati
 //     - Kannada
@@ -28,7 +30,7 @@
 // based on a keyboard map from an 'xkb/symbols/dev' file
 
 // Devangari is the default. Kill me if I am wrong:)
-default  partial alphanumeric_keys
+default partial alphanumeric_keys
 xkb_symbols "deva" {
        // March 2004 -- David Holl <smyrph+dev_xkb@ece.wpi.edu>
        name[Group1]="Indian";
@@ -248,20 +250,22 @@ xkb_symbols "ben" {
 
 xkb_symbols "ben_probhat" {
  name[Group1]= "Bangla (India, Probhat)";
+   key.type="FOUR_LEVEL";
+
    key <ESC>  { [ Escape ] };
 
 // numbers
    key <TLDE> { [ U200D, asciitilde   ] };
-   key <AE01> { [ U09E7, exclam       ] };
-   key <AE02> { [ U09E8, at           ] };
-   key <AE03> { [ U09E9, numbersign   ] };
-   key <AE04> { [ U09EA, U09F3    ] };
+   key <AE01> { [ U09E7, exclam, U09F4 ] };
+   key <AE02> { [ U09E8, at, U09F5 ] };
+   key <AE03> { [ U09E9, numbersign, U09F6 ] };
+   key <AE04> { [ U09EA, U09F3, U09F7, U09F2 ] };
    key <AE05> { [ U09EB, percent      ] };
    key <AE06> { [ U09EC, asciicircum  ] };
-   key <AE07> { [ U09ED, U099E    ] };
+   key <AE07> { [ U09ED, U099E, U09FA ] };
    key <AE08> { [ U09EE, U09CE    ] };
    key <AE09> { [ U09EF, parenleft    ] };
-   key <AE10> { [ U09E6, parenright   ] };
+   key <AE10> { [ U09E6, parenright, U09F8, U09F9 ] };
    key <AE11> { [ minus,     underscore   ] };
    key <AE12> { [ equal,     plus         ] };
    key <BKSP> { [ BackSpace               ] };
@@ -279,17 +283,17 @@ xkb_symbols "ben_probhat" {
    key <AD09> { [   U0993,  U0994  ] };
    key <AD10> { [   U09AA,  U09AB  ] };
    key <AD11> { [   U09C7,  U09C8  ] };
-   key <AD12> { [   U09CB,  U09CC  ] };
+   key <AD12> { [   U09CB,  U09CC, U09D7 ] };
    key <RTRN> { [   Return                 ] };
 
 // caps, a to ' 
 //   key <CAPS> { [   Caps_Lock              ] };
-   key <AC01> { [   U09BE,  U0985  ] };
-   key <AC02> { [   U09B8,  U09B7  ] };
-   key <AC03> { [   U09A1,  U09A2  ] };
+   key <AC01> { [   U09BE,  U0985, U098C, U09E0 ] };
+   key <AC02> { [   U09B8,  U09B7, U09E1, U09E3 ] };
+   key <AC03> { [   U09A1,  U09A2, U09C4, U09E2 ] };
    key <AC04> { [   U09A4,  U09A5  ] };
    key <AC05> { [   U0997,  U0998  ] };
-   key <AC06> { [   U09B9,  U0983  ] };
+   key <AC06> { [   U09B9,  U0983, U09BD ] };
    key <AC07> { [   U099C,  U099D  ] };
    key <AC08> { [   U0995,  U0996  ] };
    key <AC09> { [   U09B2,  U0982  ] };
@@ -306,7 +310,7 @@ xkb_symbols "ben_probhat" {
    key <AB06> { [   U09A8,  U09A3  ] };
    key <AB07> { [   U09AE,  U0999  ] };
    key <AB08> { [   comma,      U09C3  ] };
-   key <AB09> { [   U0964,  U0981  ] };
+   key <AB09> { [   U0964,  U0981, U09BC ] };
    key <AB10> { [   U09CD,  question   ] };
    key <BKSL> { [   U200C,  U0965  ] };
 
@@ -465,7 +469,7 @@ xkb_symbols "ben_inscript" {
 };
 
 xkb_symbols "ben_gitanjali" {
- name[Group1]= "Bangla (India, Uni Gitanjali)";
+ name[Group1]= "Bangla (India, Gitanjali)";
    key <ESC>   { [ Escape                      ] };
 
 // numbers
@@ -1053,7 +1057,7 @@ xkb_symbols "ori" {
 // INSCRIPT
 partial alphanumeric_keys
 xkb_symbols "tam" {
-      name[Group1]= "Tamil";
+      name[Group1]= "Tamil (Inscript)";
 
       key <TLDE> { [      U0BCA, U0B92 ]       };
 
@@ -1118,7 +1122,7 @@ xkb_symbols "tam" {
 };
 
 partial alphanumeric_keys
-xkb_symbols "tam_unicode" {
+xkb_symbols "tam_tamilnet" {
 
 // Description: A keymap based on the TamilNet'99 typewriter keyboard 
 // Encoding: Unicode (http://www.unicode.org)
@@ -1128,7 +1132,7 @@ xkb_symbols "tam_unicode" {
 // Date  : Fri Sep 4 11:32:00 CST 2009
 // Mapping:
 
-    name[Group1]= "Tamil (Unicode)";
+    name[Group1]= "Tamil (TamilNet '99)";
 
     // granthas
     key <TLDE> {  [ apostrophe, asciitilde ] };
@@ -1184,7 +1188,7 @@ xkb_symbols "tam_unicode" {
 };
 
 partial alphanumeric_keys
-xkb_symbols "tam_keyboard_with_numerals" {
+xkb_symbols "tam_tamilnet_with_tam_nums" {
 
 // Description: A keymap based on the TamilNet'99 typewriter keyboard 
 // Encoding: Unicode (http://www.unicode.org)
@@ -1193,7 +1197,7 @@ xkb_symbols "tam_keyboard_with_numerals" {
 // Date  : Fri Sep 4 11:33:00 CST 2009
 // Mapping:
 
-      name[Group1]= "Tamil (keyboard with numerals)";
+      name[Group1]= "Tamil (TamilNet '99 with Tamil numerals)";
 
       // Mainly numbers.
       key <TLDE> { [ apostrophe, asciitilde ] };
@@ -1249,7 +1253,7 @@ xkb_symbols "tam_keyboard_with_numerals" {
 };
 
 partial alphanumeric_keys
-xkb_symbols "tam_TSCII" {
+xkb_symbols "tam_tamilnet_TSCII" {
 
 // Description : A Tamil typewrite-style keymap 
 //               loosely based on TamilNet'99 reommendations 
@@ -1257,7 +1261,7 @@ xkb_symbols "tam_TSCII" {
 // Author      : Thuraiappah Vaseeharan <vasee@ieee.org>
 // Last Modified: Sat Jan  5 17:11:26 CST 2002
 
-    name[Group1]= "Tamil (TSCII typewriter)";
+    name[Group1]= "Tamil (TamilNet '99, TSCII encoding)";
 
     key <AE01> {  [ 0x10000b7, 0x10000a4 ] }; // aytham
     key <AE02> {  [ 0x1000082, 0x10000a5 ] }; // shri
@@ -1305,14 +1309,14 @@ xkb_symbols "tam_TSCII" {
 };
 
 partial alphanumeric_keys
-xkb_symbols "tam_TAB" {
+xkb_symbols "tam_tamilnet_TAB" {
 
 // Description: A keymap based on the TamilNet'99 typewriter keyboard 
 // Encoding: TAB (http://www.tamilnet99.org)
 // Author: Thuraiappah Vaseeharan <t_vasee@yahoo.com>
 // Date  : Sun Aug 12 02:23:00 CDT 2001
 
-    name[Group1]= "Tamil (TAB typewriter)";
+    name[Group1]= "Tamil (TamilNet '99, TAB encoding)";
 
     // numeral row
     key <AE01> {  [ 0x10000e7, 0x10000a7 ] } ;
@@ -1517,7 +1521,7 @@ xkb_symbols "urd-phonetic3" {
 partial alphanumeric_keys
 xkb_symbols "urd-winkeys" {
     include "pk(urd-nla)"
-    name[Group1]= "Urdu (Win keys)";
+    name[Group1]= "Urdu (Windows)";
 };
 
 // based on a keyboard map from an 'xkb/symbols/gur' file
@@ -1910,7 +1914,7 @@ xkb_symbols "mal_enhanced" {
 //
 partial alphanumeric_keys
 xkb_symbols "hin-kagapa" {
-     name[Group1] = "Hindi (KaGaPa phonetic)";
+     name[Group1] = "Hindi (KaGaPa, phonetic)";
      key.type="FOUR_LEVEL";
 
     // Roman digits
@@ -1976,14 +1980,14 @@ xkb_symbols "hin-kagapa" {
 partial alphanumeric_keys
 xkb_symbols "san-kagapa" {
   include "in(hin-kagapa)"
-  name[Group1] = "Sanskrit (KaGaPa phonetic)";
+  name[Group1] = "Sanskrit (KaGaPa, phonetic)";
 };
 
 // Marathi uses Devanagari layout of Hindi
 partial alphanumeric_keys
 xkb_symbols "mar-kagapa" {
   include "in(hin-kagapa)"
-  name[Group1] = "Marathi (KaGaPa phonetic)";
+  name[Group1] = "Marathi (KaGaPa, phonetic)";
 };
 
 
@@ -2001,7 +2005,7 @@ xkb_symbols "mar-kagapa" {
 //
 partial alphanumeric_keys
 xkb_symbols "kan-kagapa" {
-    name[Group1] = "Kannada (KaGaPa phonetic)";
+    name[Group1] = "Kannada (KaGaPa, phonetic)";
     key.type="FOUR_LEVEL";
 
     // Roman digits
@@ -2078,7 +2082,7 @@ xkb_symbols "kan-kagapa" {
 //
 partial alphanumeric_keys
 xkb_symbols "tel-kagapa" {
-    name[Group1] = "Telugu (KaGaPa phonetic)";
+    name[Group1] = "Telugu (KaGaPa, phonetic)";
     key.type="FOUR_LEVEL";
 
     // Roman digits
@@ -2205,3 +2209,191 @@ xkb_symbols "eeyek" {
     
     include "level3(ralt_switch)"
 };
+
+// This layout is developed by Niranjan Tambe in July 2019
+// for typing Indic languages in International Phonetic Alphabet (IPA).
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "iipa" {
+
+    name[Group1]= "Indic IPA (IIPA)";
+    key <AE01> { [     1,              exclam] };
+    key <AE02> { [     2,              at]     };
+    key <AE03> { [     3,              numbersign]     };
+    key <AE04> { [     4,              U20B9]  };
+    key <AE05> { [     5,              percent]        };
+    key <AE06> { [     6,              asciicircum] };
+    key <AE07> { [     7,              ampersand]      };
+    key <AE08> { [     8,              asterisk]       };
+    key <AE09> { [     9,              parenleft]      };
+    key <AE10> { [     0,              parenright]     };
+    key <AE11> { [     minus,  underscore]     };
+    key <AE12> { [     equal,       plus]      };
+
+    key <AD01> { [     U02B0,          U02B1]  }; // [ʰ], [ʱ]
+    key <AD02> { [     U00E6,          q]      }; // [æ], [q] found in Urdu
+    key <AD03> { [     a,                      U028B]  }; // [a], [ʋ]
+    key <AD04> { [     i,                      U026A]  }; // [i] [ɪ]
+    key <AD05> { [     u,                      U026F]  }; // [u] [ɯ] found in Tamil
+    key <AD06> { [     b,                      Y]      }; // [b]
+    key <AD07> { [     h,                      U014B]  }; // [h], [ŋ]
+    key <AD08> { [     g,                      U0263]  }; // [g], [ɣ] found in Urdu
+    key <AD09> { [     d,                      U00F0]  }; // [d], [ð] found in Malayalam
+    key <AD10> { [     U02A4,          U02A3]  }; // [ʤ], [ʣ] found in Marathi
+    key <AD11> { [     U0256,          U027D]  }; // [ɖ], [ɽ]
+    key <AD12> { [     bracketleft,    bracketright]   }; // "[", "]" needed for denoting phonetic symbols
+
+    key <AC01> { [     o,              U0254]  }; // [o], [ɔ] found in Bangla
+    key <AC02> { [     e,              U025B]  }; // [e], [ɛ]
+    key <AC03> { [     U0259,  U0361]  }; // [ə], [   ͡  ]
+    key <AC04> { [     i,              U026A]  }; // [i], [ɪ]
+    key <AC05> { [     u,              U026F]  }; // [u], [ɯ]
+    key <AC06> { [     p,              f]      }; // [p], [f]
+    key <AC07> { [     U027E,  r]      }; // [ɾ], [r]
+    key <AC08> { [     k,              x]      }; // [k], [x] found in Urdu
+    key <AC09> { [     t,              U03B8]  }; // [t], [θ]
+    key <AC10> { [     U02A7,  U02A6]  }; // [ʧ], [ʦ] found in Marathi
+    key <AC11> { [     U0288,  quotedbl]       }; // [ʈ]
+    key <TLDE> { [     grave,  asciitilde]     };
+
+    key <BKSL> { [     backslash,      bar]    };
+    key <AB01> { [     U032A,          U0303]  }; // [ ̪], [ ̃] Dental mark, nasalisation mark
+    key <AB02> { [     U0306,          X]      }; // [  ̆] Short sound
+    key <AB03> { [     m,                      U0273]  }; // [m], [ɳ]
+    key <AB04> { [     n,                      v]      }; // [n], [v]
+    key <AB05> { [     w,                      z] }; // [w], [z]
+    key <AB06> { [     l,                      U026D]  }; // [l], [ɭ]
+    key <AB07> { [     s,                      U0283]  }; // [s], [ʃ]
+    key <AB08> { [     comma,          U0282]  }; // [ʂ]
+    key <AB09> { [     period,         U02D0]  }; // [ː] Long sound
+    key <AB10> { [     j,                      slash] }; // [j]
+
+};
+
+// This layout is developed by Niranjan Tambe in July 2019
+// for typing Marathi language with some necessary symbols.
+
+xkb_symbols "marathi" {
+       name[Group1]="मराठी इन्स्क्रिप्ट";
+       key <TLDE> { [ U0962, U090C,   grave, asciitilde  ] }; // Added  ॢ & ऌ
+       key <AE01> { [ U0967, exclam,       1, exclam      ] }; // Added exclamation mark
+       key <AE02> { [ U0968, U0945,       2, at          ] }; // Added ॅ
+       key <AE03> { [ U0969, U093D,  3, numbersign  ] }; // Added ऽ
+       key <AE04> { [ U096a, U20B9,      4               ] }; // Added ₹
+       key <AE05> { [ U096b, percent,     5, percent     ] }; 
+       key <AE06> { [ U096c, asciicircum, 6, asciicircum ] }; 
+       key <AE07> { [ U096d, U0970,   7, ampersand   ] }; // Added ॰
+       key <AE08> { [ U096e, U0950,    8, asterisk    ] };
+       key <AE09> { [ U096f, parenleft,   9, parenleft   ] };
+       key <AE10> { [ U0966, parenright,  0, parenright  ] };
+       key <AE11> { [ minus, U0903, minus, underscore    ] };
+       key <AE12> { [ U0943, U090b, U0944, U0960 ] };
+
+       key <AD01> { [ U094c, U0914 ] };
+       key <AD02> { [ U0948, U0910 ] };
+       key <AD03> { [ U093e, U0906 ] };
+       key <AD04> { [ U0940, U0908, U0963, U0961 ] };
+       key <AD05> { [ U0942, U090a ] };
+       key <AD06> { [ U092c, U092d ] };
+       key <AD07> { [ U0939, U0919 ] };
+       key <AD08> { [ U0917, U0918, U095a ] };
+       key <AD09> { [ U0926, U0927 ] };
+       key <AD10> { [ U091c, U091d, U095b ] };
+       key <AD11> { [ U0921, U0922, U095c, U095d ] };
+       key <AD12> { [ U093c, U091e ] };
+       key <BKSL> { [ U0949, U0911, U005C, U007C ] };
+
+       key <AC01> { [ U094b, U0913 ] };
+       key <AC02> { [ U0947, U090f ] };
+       key <AC03> { [ U094d, U0905 ] };
+       key <AC04> { [ U093f, U0907, U0962, U090c ] };
+       key <AC05> { [ U0941, U0909 ] };
+       key <AC06> { [ U092a, U092b, NoSymbol, U095e ] };
+       key <AC07> { [ U0930, U0931 ] };
+       key <AC08> { [ U0915, U0916, U0958, U0959 ] };
+       key <AC09> { [ U0924, U0925 ] };
+       key <AC10> { [ U091a, U091b, U0952 ] };
+       key <AC11> { [ U091f, U0920, NoSymbol, U0951 ] };
+
+       key <AB01> { [ apostrophe, U0972, U0953 ] }; // Added apostrophe & ॲ
+       key <AB02> { [ U0902, U0901, NoSymbol, U0950 ] }; 
+       key <AB03> { [ U092e, U0923, U0954 ] };
+       key <AB04> { [ U0928, quotedbl ] }; // Added "
+       key <AB05> { [ U0935, UA8FB ] }; // Added headstroke
+       key <AB06> { [ U0932, U0933 ] };
+       key <AB07> { [ U0938, U0936 ] };
+       key <AB08> { [ comma, U0937, U0970 ] };
+       key <AB09> { [ period, U0964, U0965, U093d ] };
+       key <AB10> { [ U092f, question, slash, question ] };
+};
+
+// EXTRAS:
+
+//           Modi is an ancient Indian script that is used to write texts in Marathi, Hindi and Sanskrit.
+//           This keyboard layout is Based on Marathi KaGaPa phonetic layout. Just the characters which are not applicable in modi, are ommited.
+//
+//           Author : D.Abhi     <abhishekdeshpande128@gmail.com>
+//
+// 
+partial alphanumeric_keys
+xkb_symbols "modi-kagapa" {
+     name[Group1] = "Modi (KaGaPa phonetic)";
+     key.type="FOUR_LEVEL";
+
+ // Roman digits
+    key <TLDE>  { [   apostrophe,   asciitilde,   U201C           ] };  // U201C: left double quotation mark
+    key <AE01>  { [   1,            exclam,       U11651          ] };
+    key <AE02>  { [   2,            at,           U11652,  U20A8  ] };  // U20A8: generic rupee sign (Rs)
+    key <AE03>  { [   3,            numbersign,   U11653          ] };
+    key <AE04>  { [   4,            dollar,       U11654,  U20B9  ] };  // U20B9: new Indian rupee sign
+    key <AE05>  { [   5,            percent,      U11655          ] };
+    key <AE06>  { [   6,            asciicircum,  U11656,  U200C  ] };  // ZWNJ
+    key <AE07>  { [   7,            ampersand,    U11657,  U200D  ] };  // ZWJ
+    key <AE08>  { [   8,            asterisk,     U11658          ] };  
+    key <AE09>  { [   9,            parenleft,    U11659          ] };
+    key <AE10>  { [   0,            parenright,   U11650,  U11643 ] };  // U11643: Modi abbreviation sign
+    key <AE11>  { [   minus,        underscore                    ] };  
+    key <AE12>  { [   equal,        plus                          ] };
+    key <BKSL>  { [   U005C,        U007C,        U11641,  U11642 ] };  // backslash, pipe, Modi danda, Modi double danda
+
+    //Q Row
+    key <AD01>  { [   U11618,         U11619                      ] };  // Q: retroflex Modi letter Ta, Tha
+    key <AD02>  { [   U1161A,         U1161B                      ] };  // W: retroflex Modi letter Da, Dha 
+    key <AD03>  { [   U11639,         U1160A,    U1160B           ] };  // E: Modi vovel sign E, Modi letter E, letter ai
+    key <AD04>  { [   U11628,         U11635,    U11606           ] };  // R: Modi ra, Modi vowel sign vocalic R, vocalic letter R 
+    key <AD05>  { [   U1161D,         U1161E                      ] };  // T: dental Modi letter ta, tha
+    key <AD06>  { [   U11627,         U1163A                      ] };  // Y: Modi letter ya, Modi vowel sign ai
+    key <AD07>  { [   U11633,         U11634,    U11604,  U11605  ] };  // U: Modi vowel sign u, uu, Modi letter u, uu
+    key <AD08>  { [   U11631,         U11632,    U11602,  U11603  ] };  // I: Modi vowel sign i, ii, Modi letter i, ii
+    key <AD09>  { [   U1163B,         U1160C                      ] };  // O: Modi vowel sign o, Modi letter o
+    key <AD10>  { [   U11622,         U11623                      ] };  // P: Modi letter pa, pha 
+    key <AD11>  { [   bracketleft,   braceleft                    ] };
+    key <AD12>  { [   bracketright,  braceright                   ] };
+
+    //A Row
+    key <AC01>  { [   U11630,       U11601,     U11600           ] };  // A: Modi vowel sign aa, Modi letter aa, Modi letter a
+    key <AC02>  { [   U1162D,       U1162B                       ] };  // S: Modi letter sa, sha
+    key <AC03>  { [   U1161F,       U11620                       ] };  // D: dental Modi letter da, dha
+    key <AC04>  { [   U1163F,       U11636,     U11607           ] };  // F: Modi sign virama, Modi vowel sign vocalic RR, letter vocalic RR
+    key <AC05>  { [   U11610,       U11611                       ] };  // G: Modi letter ga, gha
+    key <AC06>  { [   U1162E,       U1163E                       ] };  // H: Modi letter ha, Modi visarga
+    key <AC07>  { [   U11615,       U11616                       ] };  // J: Modi letter ja, jha
+    key <AC08>  { [   U1160E,       U1160F                       ] };  // K: Modi letter ka, kha
+    key <AC09>  { [   U11629,       U1162F,     U11637,  U11608  ] };  // L: Modi letter la, lla, Modi vowel sign vocalic L, letter vocalic L
+    key <AC10>  { [   semicolon,    colon                        ] };
+    key <AC11>  { [   apostrophe,   quotedbl                     ] }; 
+                                                                       
+    //Z Row
+    key <AB01>  { [   U11617,    U11612                     ] };  // Z: Modi letter nya, nga
+    key <AB02>  { [   U1162C,    U11609,   U11638           ] };  // X: Modi letter ssa, Modi letter vocalic ll, Modi vowel sign vocalic ll 
+    key <AB03>  { [   U11613,    U11614                     ] };  // C: Modi letter ca, cha
+    key <AB04>  { [   U1162A,    U1163C,   U1160D           ] };  // V: Modi letter va, Modi vowel sign au, Modi letter au
+    key <AB05>  { [   U11624,    U11625                     ] };  // B: Modi letter ba, bha
+    key <AB06>  { [   U11621,    U1161C                     ] };  // N: Modi letter na, nna
+    key <AB07>  { [   U11626,    U1163D,   U093D,    U0950  ] };  // M: Modi ma, Modi anusvara, avagraha, Devanagari OM
+    key <AB08>  { [   comma,     U003C,    U11640,   U11644 ] };  // comma: comma, less than, Modi chandrabindu, Modi sign huva
+    key <AB09>  { [   period,    U003E                      ] };  // period: period, greater than, matra, candra o
+    key <AB10>  { [   slash,     question                   ] };
+
+    include "level3(ralt_switch)"
+};
index 5403e77..049ac18 100644 (file)
@@ -184,7 +184,7 @@ xkb_symbols "evdev" {
     key <I218>   {      [ Print                 ]       };
 //  key <I219>   {      [ ]       }; // KEY_HP
     key <I220>   {      [ XF86WebCam            ]       };
-//  key <I221>   {      [ ]       }; // KEY_SOUND
+    key <I221>   {      [ XF86AudioPreset       ]       };
 //  key <I222>   {      [ ]       }; // KEY_QUESTION
     key <I223>   {      [ XF86Mail              ]       };
     key <I224>   {      [ XF86Messenger         ]       }; // KEY_CHAT
@@ -212,11 +212,16 @@ xkb_symbols "evdev" {
     key <I246>   {      [ XF86WLAN              ]       };
 //  key <I249>   {      [ ]       }; // KEY_VIDEO_NEXT  --  drive next video source
 //  key <I250>   {      [ ]       }; // KEY_VIDEO_PREV  --  drive previous video source
-//  key <I251>   {      [ ]       }; // KEY_BRIGHTNESS_CYCLE  --  bright up, max++ == min
+    key <I251>   {      [ XF86MonBrightnessCycle ]      }; // KEY_BRIGHTNESS_CYCLE  --  bright up, max++ == min
 //  key <I252>   {      [ ]       }; // KEY_BRIGHTNESS_ZERO  --  brightness off
 //  key <I253>   {      [ ]       }; // KEY_DISPLAY_OFF  --  turn off display
-//  key <I254>   {      [ ]       }; // KEY_WIMAX
-    key <I255>   {      [ XF86Hibernate         ]       }; // KEY_HIBERNATE
+    key <I254>   {      [ XF86WWAN              ]       }; // KEY_WWAN
+    key <I255>   {      [ XF86RFKill            ]       }; // KEY_RFKILL
+
+    key <I372>  {       [ XF86Favorites          ]       };
+    key <I382>  {       [ XF86Keyboard           ]       };
+    key <I569>  {       [ XF86RotationLockToggle ]       };
+    key <I380>  {       [ XF86FullScreen         ]       };
 
     key <FK13>   {      [ XF86Tools         ]       };
     key <FK14>   {      [ XF86Launch5       ]       };
@@ -1422,6 +1427,16 @@ xkb_symbols "microsoftmult" {
     key <I80>   {       [ XF86Documents ]       };
 };
 
+// Microsoft Surface
+partial alphanumeric_keys
+xkb_symbols "microsoftsurface" {
+    include "inet(evdev)"
+    key <I88>   {       [ XF86Search            ]         };
+    key <I163>  {       [ XF86AudioPrev         ]         };
+    key <I164>  {       [ XF86AudioPlay, XF86AudioPause ] };
+    key <I165>  {       [ XF86AudioNext         ]         };
+};
+
 
 // Oretec
 
@@ -1850,32 +1865,6 @@ xkb_symbols "pc105" {
     include "inet(media_nav_acpi_common)"
 };
 
-
-// HTC Dream
-partial alphanumeric_keys
-xkb_symbols "htcdream" {
-       key <BKSP> { [ BackSpace ] };
-       key <RTRN> { [ Return ] };
-
-        key <AE01> { [ 1, 1, exclam, exclam ] };
-        key <AE02> { [ 2, 2, at, at ] };
-        key <AE03> { [ 3, 3, numbersign, numbersign ] };
-        key <AE04> { [ 4, 4, dollar, dollar ] };
-        key <AE05> { [ 5, 5, percent, percent ] };
-        key <AE06> { [ 6, 6, dead_circumflex, dead_circumflex ] };
-        key <AE07> { [ 7, 7, ampersand, ampersand ] };
-        key <AE08> { [ 8, 8, asterisk, asterisk ] };
-        key <AE09> { [ 9, 9, parenleft, parenleft ] };
-        key <AE10> { [ 0, 0, parenright, parenright ] };
-
-       key <LFSH> { [ Shift_L ] };
-       key <SPCE> { [ space ] };
-       key <AB09> { [ period, period, slash, slash ] };
-       key <RTSH> { [ Shift_R ] };
-
-       modifier_map Shift { <LFSH>, <RTSH> };
-};
-
 partial alphanumeric_keys
 xkb_symbols "chromebook" {
        include "level3(ralt_switch)"
@@ -1907,3 +1896,4 @@ partial alphanumeric_keys
 xkb_symbols "teck229" {
     include "inet(teck227)"
 };
+
index d88e3c4..50ded1f 100644 (file)
@@ -1,6 +1,6 @@
 // Common Latin alphabet layout
 
-default  partial
+default partial
 xkb_symbols "basic" {
 
     key <AE01> { [         1,     exclam,  onesuperior,   exclamdown ] };
index 1aef970..0042743 100644 (file)
@@ -3,7 +3,7 @@
 
 // The default behaviour:
 // the right Alt key (AltGr) chooses the third symbol engraved on a key.
-default  partial modifier_keys
+default partial modifier_keys
 xkb_symbols "ralt_switch" {
   key <RALT> {
     type[Group1]="ONE_LEVEL",
@@ -209,3 +209,21 @@ xkb_symbols "lsgt_switch_latch" {
   };
   include "level3(modifier_mapping)"
 };
+
+// Number key 4 chooses third shift level when pressed in isolation.
+partial modifier_keys
+xkb_symbols "4_switch_isolated" {
+  override key <AE04> {
+    symbols[Group1] = [ ISO_Level3_Shift ]
+  };
+  include "level3(modifier_mapping)"
+};
+
+// Number key 9 chooses third shift level when pressed in isolation.
+partial modifier_keys
+xkb_symbols "9_switch_isolated" {
+  override key <AE09> {
+    symbols[Group1] = [ ISO_Level3_Shift ]
+  };
+  include "level3(modifier_mapping)"
+};
index 53d260c..342eb7d 100644 (file)
@@ -2,7 +2,7 @@
 // Keyboard modification for Apple keyboards
 //
 
-partial default modifier_keys
+default partial modifier_keys
 xkb_symbols "extended" {
 
     key <KPEQ> { [ KP_Equal ] }; 
index 0199713..dbe08bb 100644 (file)
@@ -1,4 +1,4 @@
-default  partial alphanumeric_keys modifier_keys
+default partial alphanumeric_keys modifier_keys
 xkb_symbols "pc105" {
 
     key <ESC>  {       [ Escape                ]       };
index 964705c..7fd8f45 100644 (file)
@@ -2,9 +2,10 @@
 // AEN <aen@logic.ru>
 // 2001/12/23 by Leon Kanter <leon@blackcatlinux.com>
 // 2005/12/09 Valery Inozemtsev <shrek@altlinux.ru>
+// 2018/07/15 @a13 (a.k.a. @dbvvmpg) and Stepanenko Andrey <ftvkyo2011@yandex.ru>
 
 // Windows layout
-default  partial alphanumeric_keys
+default partial alphanumeric_keys
 xkb_symbols "winkeys" {
 
     include "ru(common)"
@@ -215,7 +216,7 @@ partial alphanumeric_keys
 xkb_symbols "phonetic_winkeys" {
 
     include "ru(phonetic)"
-    name[Group1]= "Russian (phonetic, with Win keys)";
+    name[Group1]= "Russian (phonetic, Windows)";
 
     key <LatX> { [       Cyrillic_ha,       Cyrillic_HA  ] };
     key <LatH> { [      Cyrillic_che,      Cyrillic_CHE  ] };
@@ -223,6 +224,15 @@ xkb_symbols "phonetic_winkeys" {
 };
 
 partial alphanumeric_keys
+xkb_symbols "phonetic_YAZHERTY" {
+    include "ru(phonetic_winkeys)"
+    name[Group1]= "Russian (phonetic, YAZHERTY)";
+    key        <LatW> {        [     Cyrillic_zhe,     Cyrillic_ZHE    ]       };
+    key        <LatV> {        [    Cyrillic_ve,    Cyrillic_VE        ]       }; 
+};
+
+
+partial alphanumeric_keys
 xkb_symbols "tt" {
 
     include "ru(winkeys)"
@@ -230,12 +240,12 @@ xkb_symbols "tt" {
 
     key.type[group1]="FOUR_LEVEL";
 
-    key <TLDE> { [  0x010004bb,  0x010004ba,        Cyrillic_io,        Cyrillic_IO  ] };
-    key <AD02> { [  0x010004e9,  0x010004e8,       Cyrillic_tse,       Cyrillic_TSE  ] };
-    key <AD09> { [  0x010004d9,  0x010004d8,     Cyrillic_shcha,     Cyrillic_SHCHA  ] };
-    key <AD12> { [  0x010004af,  0x010004ae,  Cyrillic_hardsign,  Cyrillic_HARDSIGN  ] };
-    key <AC10> { [  0x010004a3,  0x010004a2,       Cyrillic_zhe,       Cyrillic_ZHE  ] };
-    key <AB07> { [  0x01000497,  0x01000496,  Cyrillic_softsign,  Cyrillic_SOFTSIGN  ] };
+    key <TLDE> { [           Cyrillic_shha,           Cyrillic_SHHA,        Cyrillic_io,        Cyrillic_IO  ] };
+    key <AD02> { [          Cyrillic_o_bar,          Cyrillic_O_bar,       Cyrillic_tse,       Cyrillic_TSE  ] };
+    key <AD09> { [          Cyrillic_schwa,          Cyrillic_SCHWA,     Cyrillic_shcha,     Cyrillic_SHCHA  ] };
+    key <AD12> { [     Cyrillic_u_straight,     Cyrillic_U_straight,  Cyrillic_hardsign,  Cyrillic_HARDSIGN  ] };
+    key <AC10> { [   Cyrillic_en_descender,   Cyrillic_EN_descender,       Cyrillic_zhe,       Cyrillic_ZHE  ] };
+    key <AB07> { [  Cyrillic_zhe_descender,  Cyrillic_ZHE_descender,  Cyrillic_softsign,  Cyrillic_SOFTSIGN  ] };
 
     include "level3(ralt_switch)"
 };
@@ -255,7 +265,7 @@ partial alphanumeric_keys
 xkb_symbols "os_winkeys" {
 
     include "ru(winkeys)"
-    name[Group1]= "Ossetian (Win keys)";
+    name[Group1]= "Ossetian (Windows)";
 
     key <TLDE> { [  Cyrillic_e,  Cyrillic_E                              ] };
     key <AC07> { [  Cyrillic_o,  Cyrillic_O,  Cyrillic_io,  Cyrillic_IO  ] };
@@ -434,20 +444,20 @@ xkb_symbols "bak" {
 
     key.type[group1]="FOUR_LEVEL";
 
-    key <TLDE> { [  0x010004d9,  0x010004d8,  Cyrillic_io,   Cyrillic_IO  ] };
-    key <AE01> { [      exclam,    quotedbl,            1,             1  ] };
-    key <AE02> { [  0x010004e9,  0x010004e8,            2,             2  ] };
-    key <AE03> { [  0x010004a1,  0x010004a0,            3,             3  ] };
-    key <AE04> { [  0x01000493,  0x01000492,            4,             4  ] };
-    key <AE05> { [  0x010004ab,  0x010004aa,            5,             5  ] };
-    key <AE06> { [       colon,   semicolon,            6,             6  ] };
-    key <AE07> { [  0x01000499,  0x01000498,            7,             7  ] };
-    key <AE08> { [  0x010004bb,  0x010004ba,            8,             8  ] };
-    key <AE09> { [    question,   parenleft,            9,             9  ] };
-    key <AE10> { [  numerosign,  parenright,            0,             0  ] };
-    key <AE11> { [       minus,     percent,        minus,    underscore  ] };
-    key <AE12> { [  0x010004af,  0x010004ae,        equal,          plus  ] };
-    key <BKSL> { [  0x010004a3,  0x010004a2,    backslash,         slash  ] };
+    key <TLDE> { [         Cyrillic_schwa,         Cyrillic_SCHWA,  Cyrillic_io,   Cyrillic_IO  ] };
+    key <AE01> { [                 exclam,               quotedbl,            1,             1  ] };
+    key <AE02> { [         Cyrillic_o_bar,         Cyrillic_O_bar,            2,             2  ] };
+    key <AE03> { [             0x010004a1,             0x010004a0,            3,             3  ] };
+    key <AE04> { [       Cyrillic_ghe_bar,       Cyrillic_GHE_bar,            4,             4  ] };
+    key <AE05> { [             0x010004ab,             0x010004aa,            5,             5  ] };
+    key <AE06> { [                  colon,              semicolon,            6,             6  ] };
+    key <AE07> { [             0x01000499,             0x01000498,            7,             7  ] };
+    key <AE08> { [          Cyrillic_shha,          Cyrillic_SHHA,            8,             8  ] };
+    key <AE09> { [               question,              parenleft,            9,             9  ] };
+    key <AE10> { [             numerosign,             parenright,            0,             0  ] };
+    key <AE11> { [                  minus,                percent,        minus,    underscore  ] };
+    key <AE12> { [    Cyrillic_u_straight,    Cyrillic_U_straight,        equal,          plus  ] };
+    key <BKSL> { [  Cyrillic_en_descender,  Cyrillic_EN_descender,    backslash,         slash  ] };
 
     include "level3(ralt_switch)"
 };
@@ -517,7 +527,7 @@ xkb_symbols "phonetic_azerty" {
      key <AE11>        { [parenright,     degree, bracketright, questiondown ] };
      key <AE12>        { [     equal,       plus,   braceright,  dead_ogonek ] };
 
-     key <AB07>  { [     comma,   question,        acute,  doubleacute ] };
+     key <AB07> { [     comma,   question,        acute,  doubleacute ] };
      key <AB08>        { [ semicolon,     period, horizconnector,   multiply ] };
      key <AB09>        { [     colon,      slash, periodcentered,   division ] };
      key <AB10>        { [    exclam,    section, dead_belowdot, dead_abovedot ] };
@@ -629,77 +639,92 @@ xkb_symbols "phonetic_fr" {
     name[Group1]= "Russian (phonetic, French)";
 };
 
+// EXTRAS:
+
 // Rulemak, Colemak based Russian phonetic layout
 // contact: Geert Hendrickx <geert@hendrickx.be>
 // http://forum.colemak.com/viewtopic.php?id=519
+//
+// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+// │ Ё ``│ ! ˝ │ @   │ №   │ $   │ %   │ ^ ¯ │ &   │ * ₴ │ (   │ )   │ _ — │ Ъ + ┃ ⌫       ┃
+// │ ё ` │ 1 ´ │ 2 ¨ │ 3 # │ 4 ¢ │ 5 € │ 6 ˘ │ 7   │ 8 ₽ │ 9 [ │ 0 ] │ - – │ ъ = ┃Backspace┃
+// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+// ┃       ┃ Я Ѣ │ Ж Ѵ │ Ф Ѳ │ П   │ Г Ґ │ й Ј │ Л Љ │ У Ў │ Ы Ї │ Ю : │ Ш { │ Щ } ┃ Enter ┃
+// ┃ Tab ↹ ┃ я ѣ │ ж ѵ │ ф ѳ │ п   │ г ґ │ й ј │ л љ │ у ў │ ы ї │ ю ; │ ш « │ щ » ┃   ⏎   ┃
+// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
+// ┃ ⌫ Back ┃ А   │ Р   │ С   │ Т Ћ │ Д Ђ │ Ч Џ │ Н Њ │ Е Є │ И І │ О   │ Ь " │ Э | ┃      ┃
+// ┃  space ┃ а   │ р   │ с   │ т ћ │ д ђ │ ч џ │ н њ │ е є │ и і │ о   │ ь ' │ э \ ┃      ┃
+// ┣━━━━━━━━┻━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┲━━━┷━━━━━┻━━━━━━┫
+// ┃          ┃ З Ѕ │ Х   │ Ц   │ В   │ Б Ѓ │ К Ќ │ М   │ ;   │ :   │ ? Ӏ ┃                ┃
+// ┃  Shift ⇧ ┃ з ѕ │ х   │ ц   │ в   │ б ѓ │ к ќ │ м   │ , < │ . > │ / ӏ ┃     Shift ⇧    ┃
+// ┣━━━━━━━┳━━┻━━━━┳┷━━━━━┷┱────┴─────┴─────┴─────┴─────┴─────┴┲━━━━┷━━┳━━┻━━━━┳━━━━━━━┳━━━┛
+// ┃       ┃       ┃       ┃                                   ┃       ┃       ┃       ┃
+// ┃ Ctrl  ┃ Meta  ┃  Alt  ┃                Space              ┃AltGr ⇮┃ Menu  ┃ Ctrl  ┃
+// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━━┻━━━━━━━┻━━━━━━━┛
 
 partial alphanumeric_keys
 xkb_symbols "rulemak" {
-    include "us(basic)"
 
     name[Group1]= "Russian (Rulemak, phonetic Colemak)";
 
-    key <TLDE> { [     Cyrillic_io,     Cyrillic_IO,           U0300,      asciitilde ] };
-    key <AE01> { [               1,          exclam,           U0301                  ] };
-    key <AE02> { [               2,              at,           U030B                  ] };
+    key <TLDE> { [     Cyrillic_io,     Cyrillic_IO,           U0300,           U030F ] }; // Combining grave, double grave
+    key <AE01> { [               1,          exclam,           U0301,           U030B ] }; // Combining acute, double acute
+    key <AE02> { [               2,              at,           U0308                  ] }; // Combining diaeresis
     key <AE03> { [               3,      numerosign,      numbersign                  ] };
     key <AE04> { [               4,          dollar,            cent                  ] };
     key <AE05> { [               5,         percent,        EuroSign                  ] };
-    key <AE06> { [               6,     asciicircum,           U0306                  ] };
-    key <AE07> { [               7,       ampersand,           U0307                  ] };
-    key <AE08> { [               8,        asterisk,           U20BD                  ] };
+    key <AE06> { [               6,     asciicircum,           U0306,           U0304 ] }; // Combining breve, macron
+    key <AE07> { [               7,       ampersand                                   ] };
+    key <AE08> { [               8,        asterisk,           U20BD,           U20B4 ] }; // ruble, hryvnia
     key <AE09> { [               9,       parenleft,     bracketleft                  ] };
     key <AE10> { [               0,      parenright,    bracketright                  ] };
     key <AE11> { [           minus,      underscore,          endash,          emdash ] };
     key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN,       equal,            plus ] };
 
-    key <AD01> { [     Cyrillic_ya,     Cyrillic_YA,               q,               Q ] };
-    key <AD02> { [    Cyrillic_zhe,    Cyrillic_ZHE,               w,               W ] };
-    key <AD03> { [     Cyrillic_ef,     Cyrillic_EF,               f,               F ] };
-    key <AD04> { [     Cyrillic_pe,     Cyrillic_PE,               p,               P ] };
-    key <AD05> { [    Cyrillic_ghe,    Cyrillic_GHE,               g,               G ] };
-    key <AD06> { [ Cyrillic_shorti, Cyrillic_SHORTI,               j,               J ] };
-    key <AD07> { [     Cyrillic_el,     Cyrillic_EL,               l,               L ] };
-    key <AD08> { [      Cyrillic_u,      Cyrillic_U,               u,               U ] };
-    key <AD09> { [   Cyrillic_yeru,   Cyrillic_YERU,               y,               Y ] };
+    key <AD01> { [     Cyrillic_ya,     Cyrillic_YA,           U0463,           U0462 ] }; // yat
+    key <AD02> { [    Cyrillic_zhe,    Cyrillic_ZHE,           U0475,           U0474 ] }; // izhitsa
+    key <AD03> { [     Cyrillic_ef,     Cyrillic_EF,           U0473,           U0472 ] }; // fita
+    key <AD04> { [     Cyrillic_pe,     Cyrillic_PE                                   ] };
+    key <AD05> { [    Cyrillic_ghe,    Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
+    key <AD06> { [ Cyrillic_shorti, Cyrillic_SHORTI,     Cyrillic_je,     Cyrillic_JE ] };
+    key <AD07> { [     Cyrillic_el,     Cyrillic_EL,    Cyrillic_lje,    Cyrillic_LJE ] };
+    key <AD08> { [      Cyrillic_u,      Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] };
+    key <AD09> { [   Cyrillic_yeru,   Cyrillic_YERU,    Ukrainian_yi,    Ukrainian_YI ] };
     key <AD10> { [     Cyrillic_yu,     Cyrillic_YU,       semicolon,           colon ] };
     key <AD11> { [    Cyrillic_sha,    Cyrillic_SHA,   guillemotleft,       braceleft ] };
     key <AD12> { [  Cyrillic_shcha,  Cyrillic_SHCHA,  guillemotright,      braceright ] };
     key <BKSL> { [      Cyrillic_e,      Cyrillic_E,       backslash,             bar ] };
 
-    key <AC01> { [      Cyrillic_a,      Cyrillic_A,               a,               A ] };
-    key <AC02> { [     Cyrillic_er,     Cyrillic_ER,               r,               R ] };
-    key <AC03> { [     Cyrillic_es,     Cyrillic_ES,               s,               S ] };
-    key <AC04> { [     Cyrillic_te,     Cyrillic_TE,               t,               T ] };
-    key <AC05> { [     Cyrillic_de,     Cyrillic_DE,               d,               D ] };
-    key <AC06> { [     Cyrillic_che,   Cyrillic_CHE,               h,               H ] };
-    key <AC07> { [     Cyrillic_en,     Cyrillic_EN,               n,               N ] };
-    key <AC08> { [     Cyrillic_ie,     Cyrillic_IE,               e,               E ] };
-    key <AC09> { [      Cyrillic_i,      Cyrillic_I,               i,               I ] };
-    key <AC10> { [      Cyrillic_o,      Cyrillic_O,               o,               O ] };
+    key <AC01> { [      Cyrillic_a,      Cyrillic_A                                   ] };
+    key <AC02> { [     Cyrillic_er,     Cyrillic_ER                                   ] };
+    key <AC03> { [     Cyrillic_es,     Cyrillic_ES                                   ] };
+    key <AC04> { [     Cyrillic_te,     Cyrillic_TE,    Serbian_tshe,    Serbian_TSHE ] };
+    key <AC05> { [     Cyrillic_de,     Cyrillic_DE,     Serbian_dje,     Serbian_DJE ] };
+    key <AC06> { [     Cyrillic_che,   Cyrillic_CHE,   Cyrillic_dzhe,   Cyrillic_DZHE ] };
+    key <AC07> { [     Cyrillic_en,     Cyrillic_EN,    Cyrillic_nje,    Cyrillic_NJE ] };
+    key <AC08> { [     Cyrillic_ie,     Cyrillic_IE,    Ukrainian_ie,    Ukrainian_IE ] };
+    key <AC09> { [      Cyrillic_i,      Cyrillic_I,     Ukrainian_i,     Ukrainian_I ] };
+    key <AC10> { [      Cyrillic_o,      Cyrillic_O                                   ] };
     key <AC11> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN,  apostrophe,        quotedbl ] };
 
-    key <AB01> { [     Cyrillic_ze,     Cyrillic_ZE,               z,               Z ] };
-    key <AB02> { [     Cyrillic_ha,     Cyrillic_HA,               x,               X ] };
-    key <AB03> { [    Cyrillic_tse,    Cyrillic_TSE,               c,               C ] };
-    key <AB04> { [     Cyrillic_ve,     Cyrillic_VE,               v,               V ] };
-    key <AB05> { [     Cyrillic_be,     Cyrillic_BE,               b,               B ] };
-    key <AB06> { [     Cyrillic_ka,     Cyrillic_KA,               k,               K ] };
-    key <AB07> { [     Cyrillic_em,     Cyrillic_EM,               m,               M ] };
+    key <AB01> { [     Cyrillic_ze,     Cyrillic_ZE,   Macedonia_dse,   Macedonia_DSE ] };
+    key <AB02> { [     Cyrillic_ha,     Cyrillic_HA                                   ] };
+    key <AB03> { [    Cyrillic_tse,    Cyrillic_TSE                                   ] };
+    key <AB04> { [     Cyrillic_ve,     Cyrillic_VE                                   ] };
+    key <AB05> { [     Cyrillic_be,     Cyrillic_BE,   Macedonia_gje,   Macedonia_GJE ] };
+    key <AB06> { [     Cyrillic_ka,     Cyrillic_KA,   Macedonia_kje,   Macedonia_KJE ] };
+    key <AB07> { [     Cyrillic_em,     Cyrillic_EM                                   ] };
     key <AB08> { [           comma,       semicolon,            less                  ] };
     key <AB09> { [          period,           colon,         greater                  ] };
-    key <AB10> { [           slash,        question                                   ] };
+    key <AB10> { [           slash,        question,           U04CF,           U04C0 ] }; // palochka
 
-    key <CAPS> { [       BackSpace,       BackSpace,       BackSpace,       BackSpace ] };
-    key <LSGT> { [           U0301,      asciitilde,           grave                  ] };
-    key <SPCE> { [           space,           space,           space,    nobreakspace ] };
-    key <MENU> { [     Mode_switch,       Multi_key                                   ] };
+    key <LSGT> { [           equal,            plus,        multiply,        division ] };
 
     include "level3(ralt_switch)"
+    include "capslock(backspace)"
+    include "nbsp(level4)"
 };
 
-// EXTRAS:
-
 // Church Slavonic language layout
 // based on the Russian standard keyboard
 // by Aleksandr Andreev and Yuri Shardt
@@ -709,21 +734,21 @@ xkb_symbols "chu" {
 
     name[Group1]= "Church Slavonic";
 
-    key <TLDE> { [  U0457,  U0407,  U0482,  U20DD  ] };  // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign
+    key <TLDE> { [  Ukrainian_yi,  Ukrainian_YI,  U0482,  U20DD  ] };  // ї Ї ҂ e.g: а⃝ where the last is a combining ten thousands sign
     key <AE01> { [  U0461,  U0460,  U047D,  U047C  ] };  // ѡ Ѡ ѽ Ѽ
-    key <AE02> { [  U0454,  U0404,  U0465,  U0464  ] };  // є Є ѥ Ѥ
+    key <AE02> { [  Ukrainian_ie,  Ukrainian_IE,  U0465,  U0464  ] };  // є Є ѥ Ѥ
     key <AE03> { [  U046F,  U046E,  U0469,  U0468  ] };  // ѯ Ѯ ѩ Ѩ
     key <AE04> { [  U0471,  U0470,  U046D,  U046C  ] };  // ѱ Ѱ ѭ Ѭ
     key <AE05> { [  U0473,  U0472,  UA657,  UA656  ] };  // ѳ Ѳ iotified A
     key <AE06> { [  U0475,  U0474,  U0477,  U0476  ] };  // ѵ Ѵ ѷ Ѷ
     key <AE07> { [  U047B,  U047A,  UA64D,  UA64C  ] };  // ѻ Ѻ ꙍ Ꙍ
     key <AE08> { [  U047F,  U047E,  U046B,  U046A  ] };  // ѿ Ѿ ѫ Ѫ
-    key <AE09> { [  U0455,  U0405,parenleft,U002A  ] };  // ѕ Ѕ ( *
-    key <AE10> { [Cyrillic_u,Cyrillic_U,parenright,U0488]};  // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u
+    key <AE09> { [  Macedonia_dse,  Macedonia_DSE,  parenleft, asterisk  ] };  // ѕ Ѕ ( *
+    key <AE10> { [  Cyrillic_u,     Cyrillic_U,  parenright,  U0488]};  // у У ) NB: for digraph Ouk, use Cyrillic_o + Cyrillic_u
     key <AE11> { [  U0483,  U0486,  U0487,  U005F  ] };  // а҃ а҆ а҇, _ (titlo, psili, pokrytie, underscore)
     key <AE12> { [  U0301,  U0300,  U0484,  UA67E  ] };  // а̀ а́ а҄ ꙾ (oxia, varia, kamora, kavyka)
 
-    key <AD01> { [  Cyrillic_shorti,  Cyrillic_SHORTI,  U0456  ] };
+    key <AD01> { [  Cyrillic_shorti,  Cyrillic_SHORTI,  Ukrainian_i  ] };
     key <AD02> { [     Cyrillic_tse,     Cyrillic_TSE,  U2DF0  ] };
     key <AD03> { [            UA64B,            UA64A,  U2DF9  ] };  // Cyrillic monograph Uk (not U)!
     key <AD04> { [      Cyrillic_ka,      Cyrillic_KA,  U2DE6  ] };
@@ -792,33 +817,33 @@ xkb_symbols "ruu" {
     name[Group1]= "Russian (with Ukrainian-Belorussian layout)";
 
     key <TLDE> { [  U2019,  apostrophe,         U0301,  asciitilde  ] };  // Apostrophe and Stress symbol
-    key <AE01> { [      1,      exclam,         U00F7,       U2248  ] };  // Division Sign and Almost Equal To
+    key <AE01> { [      1,      exclam,      division,       U2248  ] };  // Division Sign and Almost Equal To
     key <AE02> { [      2,    quotedbl,      currency,    infinity  ] };
-    key <AE03> { [      3,  numerosign,         U00A7,       U20B4  ] };  // Paragraph and Hryvnia sign
+    key <AE03> { [      3,  numerosign,       section,       U20B4  ] };  // Paragraph and Hryvnia sign
     key <AE04> { [      4,   semicolon,        dollar,    EuroSign  ] };
-    key <AE05> { [      5,     percent,        degree,       U2030  ] };  // Per Mille Sign
-    key <AE06> { [      6,       colon,          less,       U2264  ] };  // Less-Than Or Equal To
-    key <AE07> { [      7,    question,       greater,       U2265  ] };  // Greater-Than Or Equal To
-    key <AE08> { [      8,    asterisk, enfilledcircbullet,  U00D7  ] };  // Multiplication Sign
+    key <AE05> { [      5,     percent,        degree,    permille  ] };
+    key <AE06> { [      6,       colon,        less, lessthanequal  ] };
+    key <AE07> { [      7,    question,  greater, greaterthanequal  ] };
+    key <AE08> { [      8,    asterisk,enfilledcircbullet,multiply  ] };
     key <AE09> { [      9,   parenleft,   bracketleft,   braceleft  ] };
     key <AE10> { [      0,  parenright,  bracketright,  braceright  ] };
     key <AE11> { [  minus,  underscore,        emdash,      endash  ] };
     key <AE12> { [  equal,        plus,      notequal,   plusminus  ] };
 
     key <AD03> { [        Cyrillic_u,        Cyrillic_U, Byelorussian_shortu, Byelorussian_SHORTU ] };
-    key <AD04> { [       Cyrillic_ka,       Cyrillic_KA,    registered                        ] };  // Registered tm
+    key <AD04> { [       Cyrillic_ka,       Cyrillic_KA,    registered                        ] };
     key <AD05> { [       Cyrillic_ie,       Cyrillic_IE,   Cyrillic_io,          Cyrillic_IO  ] };
     key <AD07> { [      Cyrillic_ghe,      Cyrillic_GHE, Ukrainian_ghe_with_upturn, Ukrainian_GHE_WITH_UPTURN ] };
-    key <AD10> { [       Cyrillic_ze,       Cyrillic_ZE,         U00B6                        ] };  // Pilcrow Sign
+    key <AD10> { [       Cyrillic_ze,       Cyrillic_ZE,     paragraph                        ] };
     key <AD12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN,  Ukrainian_yi,         Ukrainian_YI  ] };
 
     key <AC02> { [     Cyrillic_yeru,     Cyrillic_YERU,   Ukrainian_i,          Ukrainian_I  ] };
     key <AC11> { [        Cyrillic_e,        Cyrillic_E,  Ukrainian_ie,         Ukrainian_IE  ] };
-    key <BKSL> { [             slash,               bar,     backslash,                U00A6  ] };  // Broken Bar
+    key <BKSL> { [             slash,               bar,     backslash,            brokenbar  ] };
 
     key <AB03> { [       Cyrillic_es,       Cyrillic_ES,      copyright                       ] };
     key <AB06> { [       Cyrillic_te,       Cyrillic_TE,      trademark                       ] };
-    key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN,          U00B5                       ] };  // Micro Sign
+    key <AB07> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN,             mu                       ] };
     key <AB08> { [       Cyrillic_be,       Cyrillic_BE,  guillemotleft,  doublelowquotemark  ] };
     key <AB09> { [       Cyrillic_yu,       Cyrillic_YU, guillemotright, leftdoublequotemark  ] };
     key <AB10> { [            period,             comma,          slash,            ellipsis  ] };
@@ -884,34 +909,34 @@ xkb_symbols "prxn" {
     key <TLDE> { [ U2019, apostrophe,  U0301,      U0300, U2053, U2015, U02BC, asciitilde ] }; // Typographic Apostrophe, Apostrophe, Combining Acute, Combining Grave, Swung Dash, Quotation Dash, Modifier Letter Apostrophe, Tilde
     key <AE01> { [      1,    exclam,  U0304,      U0306, U0308, U0311, U0307, U0313 ] };      // 1, !, Combining Macron, Combining Breve, Combining Diaresis, Combining Inverted Breve, Combining Dot Above, Combining Comma Above
     key <AE02> { [     2,quotedbl,numerosign,      U20BF, U20B8, U20AE, U00A3, U20B9 ] };      // 2 " № ₿ ₸ ₮ £ ₹
-    key <AE03> { [     3,      U00A7,  U20B4,   currency, U20BD, U20AA, U20BC, U20BE ] };      // 3 § ₴ ¤ ₽ ₪ ₼ ₾
+    key <AE03> { [     3,    section,  U20B4,   currency, U20BD, U20AA, U20BC, U20BE ] };      // 3 § ₴ ¤ ₽ ₪ ₼ ₾
     key <AE04> { [     4,  semicolon, dollar,   EuroSign, U0482, U20DD, U0488, U0489 ] };      // 4 ; $ € Thousands Sign, Combining Enclosing Circle, Combining Hundred Thousands, Combining Millions
-    key <AE05> { [      5,   percent, degree,      U2030, UA670, UA671, UA672, UA66F ] };      // 5, %, °, ‰, Combinining Ten Millions, Combining Hundred Millions, Combining Thousand Millions, Combining Vzmet
+    key <AE05> { [      5,   percent, degree,   permille, UA670, UA671, UA672, UA66F ] };      // 5, %, °, ‰, Combinining Ten Millions, Combining Hundred Millions, Combining Thousand Millions, Combining Vzmet
     key <AE06> { [      6,     colon,  U0335,      U0336, U0483, U0487, UFE2E, UFE2F ] };      // 6, :, Combining Short Stroke Overlay, Combining Long Stroke Overlay, Combining Titlo, Combining Pokrytie, Combining Titlo Left Half, Combining Titlo Right Half
     key <AE07> { [    7,    question,  U030B,      U030F, U030C, U0303, U032C, U0360 ] };      // 7, ?, Combining Double Acute, Combining Double Grave, Combining Caron/Háček, Combining Tilde, Combining Caron/Háček Below, Combining Double Tilde
     key <AE08> { [    8,    asterisk,  U0331,      U0332, U0333, U032F, U032D, U032E ] };      // 8, *, Combining Macron Below, Combining Low Line, Combining Double Low Line, Combining Inverted Breve Below, Combining Circumflex Accent, Combining Breve Below
     key <AE09> { [ 9,parenleft,  bracketleft,  braceleft, U035F, U035D, U035E, U035C ] };      // 9 ( [ { Combining Double Macron Below, Combining Double Breve, Combining Double Macron, Combining Double Breve Below
     key <AE10> { [ 0,parenright,bracketright, braceright, U27E8, U27E9, U04A7, U04A6 ] };      // 0 ) ] } ⟨⟩ ҧ Ҧ
-    key <AE11> { [ minus, underscore, emdash,     endash, U2011, U00AD, U2010, U2212 ] };      // Hyphen-Minus, Underscore, Em Dash, En Dash,  Non-Breaking-Hyphen, Soft Hyphen, Hyphen, Minus Sign
+    key <AE11> { [ minus, underscore, emdash,     endash, U2011,hyphen, U2010, U2212 ] };      // Hyphen-Minus, Underscore, Em Dash, En Dash,  Non-Breaking-Hyphen, Soft Hyphen, Hyphen, Minus Sign
     key <AE12> { [  equal,     plus,notequal,      U2248, U04FF, U04FE, U050D, U050C ] };      // = + ≠ ≈ ӿ Ӿ ԍ Ԍ
 
     key <AD01> { [ Cyrillic_shorti,   Cyrillic_SHORTI,                 Cyrillic_je,            Cyrillic_JE,     U04CF,    U04C0,                                  U030A,    U0325 ] };                              // й Й ј Ј ӏ Ӏ, Combining Ring Above and Below
     key <AD02> { [      Cyrillic_tse,    Cyrillic_TSE,                       U04B5,                  U04B4,     Cyrillic_u_straight, Cyrillic_U_straight,         U051B,    U051A ] };                               // ц Ц ҵ Ҵ ү Ү ԛ Ԛ
-    key <AD03> { [        Cyrillic_u,      Cyrillic_U,            Byelorussian_shortu, Byelorussian_SHORTU,     Cyrillic_u_straight_bar,Cyrillic_U_straight_bar,  Byelorussian_shortu, Byelorussian_SHORTU ] };      // у У ў Ў ұ Ұ ў Ў
-    key <AD04> { [       Cyrillic_ka,     Cyrillic_KA,         Cyrillic_ka_descender,Cyrillic_KA_descender,     U049F,    U049E,                                  U046F,    U046E ] };                               // к К Қ қ ҟ Ҟ ѯ Ѯ 
+    key <AD03> { [        Cyrillic_u,      Cyrillic_U,         Byelorussian_shortu,    Byelorussian_SHORTU,     Cyrillic_u_straight_bar,Cyrillic_U_straight_bar,  Byelorussian_shortu, Byelorussian_SHORTU ] };      // у У ў Ў ұ Ұ ў Ў
+    key <AD04> { [       Cyrillic_ka,     Cyrillic_KA,       Cyrillic_ka_descender,  Cyrillic_KA_descender,     U049F,    U049E,                                  U046F,    U046E ] };                               // к К Қ қ ҟ Ҟ ѯ Ѯ 
     key <AD05> { [     Cyrillic_ie,       Cyrillic_IE,                 Cyrillic_io,            Cyrillic_IO,     U0463,    U0462,                                  UA653,    UA652 ] };                              // е Е ё Ё ѣ Ѣ ꙓ Ꙓ
     key <AD06> { [     Cyrillic_en,       Cyrillic_EN,                Cyrillic_nje,           Cyrillic_NJE,     Cyrillic_en_descender, Cyrillic_EN_descender,     U04C8,    U04C7 ] };                              // н Н њ Њ ң Ң ӈ Ӈ
     key <AD07> { [      Cyrillic_ghe,    Cyrillic_GHE, Ukrainian_ghe_with_upturn,Ukrainian_GHE_WITH_UPTURN,     Cyrillic_ghe_bar, Cyrillic_GHE_bar,               U04F7,    U04F6 ] };                               // г Г Ґ ґ ғ Ғ ӷ Ӷ
     key <AD08> { [      Cyrillic_sha,    Cyrillic_SHA,                       U04A1,                  U04A0,     U04AB,    U04AA,                                  UA67D,    UA67F ] };                               // ш Ш ҡ Ҡ ҫ Ҫ Combining Payerok Payerok
     key <AD09> { [    Cyrillic_shcha,  Cyrillic_SHCHA,                       U0505,                  U0504,     UA68D,    UA68C,                                  U050F,    U050E ] };                               // щ Щ ԅ Ԅ ꚍ Ꚍ ԏ Ԏ
     key <AD10> { [       Cyrillic_ze,     Cyrillic_ZE,                       U04E1,                  U04E0,     U0499,    U0498,                                  U0507,    U0506 ] };                               // з З ӡ Ӡ ҙ Ҙ ԇ Ԇ
-    key <AD11> { [       Cyrillic_ha,     Cyrillic_HA,                  Cyrillic_shha,       Cyrillic_SHHA,     Cyrillic_ha_descender, Cyrillic_HA_descender,     U04FD,    U04FC ] };                               // х Х һ Һ ҳ Ҳ ӽ Ӽ
-    key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN,                   Ukrainian_yi,        Ukrainian_YI,     Macedonia_dse, Macedonia_DSE,                     U033E,    U2E2F ] };                              // ъ Ъ ї Ї ѕ Ѕ, Combining Yerok, Yerok
+    key <AD11> { [       Cyrillic_ha,     Cyrillic_HA,               Cyrillic_shha,          Cyrillic_SHHA,     Cyrillic_ha_descender, Cyrillic_HA_descender,     U04FD,    U04FC ] };                               // х Х һ Һ ҳ Ҳ ӽ Ӽ
+    key <AD12> { [Cyrillic_hardsign,Cyrillic_HARDSIGN,                Ukrainian_yi,           Ukrainian_YI,     Macedonia_dse, Macedonia_DSE,                     U033E,    U2E2F ] };                              // ъ Ъ ї Ї ѕ Ѕ, Combining Yerok, Yerok
 
     key <AC01> { [      Cyrillic_ef,      Cyrillic_EF,                       U0473,                  U0472,     U04C4,    U04C3,                                  U04FB,    U04FA ] };                              // ф Ф ѳ Ѳ ӄ Ӄ ӻ Ӻ
-    key <AC02> { [     Cyrillic_yeru,   Cyrillic_YERU,                    Ukrainian_i,         Ukrainian_I,     U04D5,    U04D4,                                  U04A9,    U04A8 ] };                              // ы Ы і І ӕ Ӕ ҩ Ҩ
+    key <AC02> { [     Cyrillic_yeru,   Cyrillic_YERU,                 Ukrainian_i,            Ukrainian_I,     U04D5,    U04D4,                                  U04A9,    U04A8 ] };                              // ы Ы і І ӕ Ӕ ҩ Ҩ
     key        <AC03> { [     Cyrillic_ve,       Cyrillic_VE,                       U051D,                  U051C,     U0529,    U0528,                                  U0527,    U0526 ] };                               // в В ԝ Ԝ ԩ Ԩ ԧ Ԧ
-    key <AC04> { [        Cyrillic_a,      Cyrillic_A,                       U04D9,                  U04D8,     UA657,    UA656,                                  UA655,    UA654 ] };                               // а А ә Ә ꙗ Ꙗ ꙕ Ꙕ
+    key <AC04> { [        Cyrillic_a,      Cyrillic_A,              Cyrillic_schwa,         Cyrillic_SCHWA,     UA657,    UA656,                                  UA655,    UA654 ] };                               // а А ә Ә ꙗ Ꙗ ꙕ Ꙕ
     key <AC05> { [       Cyrillic_pe,     Cyrillic_PE,                       U0525,                  U0524,     U0471,    U0470,                                  UA65F,    UA65E ] };                               // п П ԥ Ԥ ѱ Ѱ ꙟ Ꙟ
     key <AC06> { [       Cyrillic_er,     Cyrillic_ER,                       U0481,                  U0480,     U048F,    U048E,                                  U0521,    U0520 ] };                               // р Р ҁ Ҁ ҏ Ҏ ԡ Ԡ
     key <AC07> { [        Cyrillic_o,      Cyrillic_O,              Cyrillic_o_bar,         Cyrillic_O_bar,     U047B,    U047A,                                  U0461,    U0460 ] };                               // о О ө Ө ѻ Ѻ ѡ Ѡ
@@ -923,11 +948,11 @@ xkb_symbols "prxn" {
 
     key <LSGT> { [           U0495,             U0494,                       U0501,                  U0500,     U0503,    U0502,                                  U0509,    U0508 ] };                               // ҕ Ҕ ԁ Ԁ ԃ Ԃ ԉ Ԉ
     key <AB01> { [     Cyrillic_ya,       Cyrillic_YA,                       U0469,                  U0468,     U0467,    U0466,                                  UA657,    UA656 ] };                               // я Я ѩ Ѩ ѧ Ѧ ꙗ Ꙗ
-    key <AB02> { [    Cyrillic_che,      Cyrillic_CHE,                Serbian_tshe,           Serbian_TSHE,     U04B7,    U04B6,                                  U2016,    U00A6 ] };                              // ч Ч ћ Ћ ҷ Ҷ ‖ ¦
+    key <AB02> { [    Cyrillic_che,      Cyrillic_CHE,                Serbian_tshe,           Serbian_TSHE,     Cyrillic_che_descender,  Cyrillic_CHE_descender,  U2016,    U00A6 ] };                              // ч Ч ћ Ћ ҷ Ҷ ‖ ¦
     key <AB03> { [      Cyrillic_es,      Cyrillic_ES,                       U046D,                  U046C,     U046B,    U046A,                                  U04F7,    U04F6 ] };                               // с С ѭ Ѭ ѫ Ѫ ӷ Ӷ
-    key <AB04> { [       Cyrillic_em,     Cyrillic_EM,                    multiply,                  U00F7,     U22C5,    U2219,                                  U04CE,    U04CD ] };                               // м М × ÷ ⋅ ∙ ӎ Ӎ
-    key <AB05> { [      Cyrillic_i,        Cyrillic_I,                       U0475,                  U0474,     U048B,    U048A,                                  periodcentered, U261B ] };                        // и И ѵ Ѵ ҋ Ҋ · ☛
-    key <AB06> { [      Cyrillic_te,      Cyrillic_TE,                       U04AD,                  U04AC,     U051F,    U051E,                                  Cyrillic_che_vertstroke,Cyrillic_CHE_vertstroke]}; // т Т ҭ Ҭ ԟ Ԟ ҹ Ҹ
+    key <AB04> { [       Cyrillic_em,     Cyrillic_EM,                    multiply,               division,     U22C5,    U2219,                                  U04CE,    U04CD ] };                               // м М × ÷ ⋅ ∙ ӎ Ӎ
+    key <AB05> { [      Cyrillic_i,        Cyrillic_I,                       U0475,                  U0474,     U048B,    U048A,                         periodcentered,    U261B ] };                              // и И ѵ Ѵ ҋ Ҋ · ☛
+    key <AB06> { [      Cyrillic_te,      Cyrillic_TE,                       U04AD,                  U04AC,     U051F,    U051E, Cyrillic_che_vertstroke, Cyrillic_CHE_vertstroke ] };                               // т Т ҭ Ҭ ԟ Ԟ ҹ Ҹ
     key <AB07> { [Cyrillic_softsign,Cyrillic_SOFTSIGN,                       U04A5,                  U04A4,     UA64F,    UA64E,                                  U048D,    U048C ] };                               // ь Ь ҥ Ҥ ꙏ Ꙏ ҍ Ҍ
     key <AB08> { [       Cyrillic_be,     Cyrillic_BE,                  guillemotleft,  doublelowquotemark,     singlelowquotemark, U2039,                        U0523,    U0522 ] };                              // б Б « „ ‚ ‹ ԣ Ԣ
     key <AB09> { [       Cyrillic_yu,     Cyrillic_YU,                 guillemotright, leftdoublequotemark,     leftsinglequotemark, U203A,                       rightdoublequotemark, rightsinglequotemark]};      // ю Ю » “ ‘ › ” ’
@@ -959,3 +984,75 @@ xkb_symbols "prxn" {
 // srp: Потребно да се ставља lv5:rwin_switch_lock или једна из других брава петег ступња, да би шљакао пребацивач Caps!
 // https://bugs.freedesktop.org/show_bug.cgi?id=102189
 };
+
+
+partial alphanumeric_keys
+xkb_symbols "unipunct" {
+
+// Раскладка представляет собой обычную русскую раскладку, в которой некоторые редко используемые буквы
+// убрали на третий уровень, и поставили все пунктуационные знаки на то же место, где они стоят на
+// US раскладке (+ добавлен знак номера, который отсутствует в US раскладке, но часто нужен в RU).
+
+// ru(unipunct):
+// `~ 1! 2@ 3#3№ 4$ 5% 6^ 7& 8* 9( 0) -_ =+
+// хХ бБ уУюЮ кК еЕэЭ нН гГ шШщЩ жЖ зЗ [{ ]} \|
+// фФ ыЫ вВ аА пП рР оОёЁ лЛ дД ;: '"           //"
+// яЯ чЧцЦ сС мМ иИйЙ тТ ьЬъЪ ,< .> /?
+
+ include "us(basic)"
+ name[Group1]= "Russian (with US punctuation)";
+ // Единственный символ, который отсутствует на US раскладке - №
+ key <AE03> { [ 3,             numbersign, 3, numerosign  ] };
+
+ key <LatQ> { [ Cyrillic_ha,   Cyrillic_HA ] };
+ key <LatW> { [ Cyrillic_be,   Cyrillic_BE ] };
+ key <LatE> { [ Cyrillic_u,    Cyrillic_U, Cyrillic_yu, Cyrillic_YU ] };
+ key <LatR> { [ Cyrillic_ka,   Cyrillic_KA ] };
+ key <LatT> { [ Cyrillic_ie,   Cyrillic_IE, Cyrillic_e, Cyrillic_E ] };
+ key <LatY> { [ Cyrillic_en,   Cyrillic_EN ] };
+ key <LatU> { [ Cyrillic_ghe,  Cyrillic_GHE ] };
+ key <LatI> { [ Cyrillic_sha,  Cyrillic_SHA, Cyrillic_shcha, Cyrillic_SHCHA ] };
+ key <LatO> { [ Cyrillic_zhe,  Cyrillic_ZHE ] };
+ key <LatP> { [ Cyrillic_ze,   Cyrillic_ZE ] };
+
+ key <LatA> { [ Cyrillic_ef,   Cyrillic_EF ] };
+ key <LatS> { [ Cyrillic_yeru, Cyrillic_YERU ] };
+ key <LatD> { [ Cyrillic_ve,   Cyrillic_VE ] };
+ key <LatF> { [ Cyrillic_a,    Cyrillic_A ] };
+ key <LatG> { [ Cyrillic_pe,   Cyrillic_PE ] };
+ key <LatH> { [ Cyrillic_er,   Cyrillic_ER ] };
+ key <LatJ> { [ Cyrillic_o,    Cyrillic_O, Cyrillic_io, Cyrillic_IO ] };
+ key <LatK> { [ Cyrillic_el,   Cyrillic_EL ] };
+ key <LatL> { [ Cyrillic_de,   Cyrillic_DE ] };
+
+ key <LatZ> { [ Cyrillic_ya,   Cyrillic_YA ] };
+ key <LatX> { [ Cyrillic_che,  Cyrillic_CHE, Cyrillic_tse, Cyrillic_TSE ] };
+ key <LatC> { [ Cyrillic_es,   Cyrillic_ES ] };
+ key <LatV> { [ Cyrillic_em,   Cyrillic_EM ] };
+ key <LatB> { [ Cyrillic_i,    Cyrillic_I, Cyrillic_shorti, Cyrillic_SHORTI ] };
+ key <LatN> { [ Cyrillic_te,   Cyrillic_TE ] };
+ key <LatM> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, Cyrillic_hardsign, Cyrillic_HARDSIGN ] };
+};
+
+partial alphanumeric_keys
+xkb_symbols "phonetic_mac" {
+
+    include "ru(phonetic_winkeys)"
+    name[Group1]= "Russian (phonetic Macintosh)";
+
+    key <LatE> { [       Cyrillic_ie,       Cyrillic_IE, Cyrillic_io, Cyrillic_IO  ] };
+    key <LatW> { [      Cyrillic_sha,      Cyrillic_SHA  ] };
+    key <LatV> { [       Cyrillic_ve,       Cyrillic_VE  ] };
+    key <TLDE> { [    Cyrillic_shcha,    Cyrillic_SHCHA  ] };
+    key <AD11> { [       Cyrillic_yu,       Cyrillic_YU  ] };
+    key <AD12> { [      Cyrillic_zhe,      Cyrillic_ZHE  ] };
+    key <AE03> { [                 3,        numbersign, numerosign  ] };
+    key <AE04> { [                 4,            dollar, U20BD       ] }; // ruble
+    key <AE05> { [                 5,           percent  ] };
+    key <AE06> { [                 6,             caret  ] };
+    key <AE11> { [ Cyrillic_softsign, Cyrillic_SOFTSIGN, minus,       underscore  ] };
+    key <AE12> { [ Cyrillic_hardsign, Cyrillic_HARDSIGN, equal,       plus        ] };
+
+    include "level3(ralt_switch)"
+};
index a43f2b9..60c2479 100644 (file)
@@ -1,4 +1,4 @@
-default  partial modifier_keys
+default partial modifier_keys
 xkb_symbols "ctrl_alt_bksp" {
     key <BKSP> {
         type="CTRL+ALT",
index 9cc056d..b876978 100644 (file)
@@ -1,4 +1,4 @@
-default  partial alphanumeric_keys modifier_keys
+default partial alphanumeric_keys modifier_keys
 xkb_symbols "basic" {
 
     name[Group1]= "English (US)";
@@ -361,7 +361,7 @@ xkb_symbols "dvorak-alt-intl" {
     key <AC03> { [         e,       E,      eacute ] };
     key <AC04> { [         u,       U, ucircumflex ] };
     key <AC05> { [         i,       I, icircumflex ] };
-    key <AC10> { [         s,       S,      ssharp ] };
+    key <AC10> { [         s,       S,      ssharp,            U1E9E ] };
 
     key <AB01> { [ semicolon,   colon, acircumflex ] };
     key <AB02> { [         q,       Q,  odiaeresis,      dead_ogonek ] };
@@ -488,8 +488,8 @@ xkb_symbols "dvorak-r" {
 };
 
 // Classic dvorak layout
-// by Piter Punk <piterpk@terra.com.br> - 2006-07-06 
-// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net 
+// by Piter Punk <piterpk@terra.com.br> - 2006-07-06
+// Based on dvorak layout and e-mail from Russel L. Harris rlharris@oplink.net
 // on xorg list.
 partial alphanumeric_keys
 xkb_symbols "dvorak-classic" {
@@ -604,7 +604,7 @@ xkb_symbols "dvp" {
     key <AC07> { [ h,               H,              dead_acute                  ] };
     key <AC08> { [ t,               T,              thorn,           THORN      ] };
     key <AC09> { [ n,               N,              ntilde,          Ntilde     ] };
-    key <AC10> { [ s,               S,              ssharp                      ] };
+    key <AC10> { [ s,               S,              ssharp,          U1E9E      ] };
     key <AC11> { [ minus,           underscore,     hyphen,          endash     ], type[Group1] = "FOUR_LEVEL_ALPHABETIC" };
     key <BKSL> { [ backslash,       bar                                         ] };
 
@@ -774,7 +774,7 @@ xkb_symbols "colemak" {
 
     key <AC01> { [            a,            A,          aacute,           Aacute ] };
     key <AC02> { [            r,            R,      dead_grave,       asciitilde ] };
-    key <AC03> { [            s,            S,          ssharp,       asciitilde ] };
+    key <AC03> { [            s,            S,          ssharp,        0x1001e9e ] };
     key <AC04> { [            t,            T,      dead_acute, dead_doubleacute ] };
     key <AC05> { [            d,            D,  dead_diaeresis,       asciitilde ] };
     key <AC06> { [            h,            H,      dead_caron,       asciitilde ] };
@@ -878,7 +878,7 @@ xkb_symbols "classmate-intl" {
 
     key <LSGT> { [ backslash,  bar,            backslash,      bar ] };
 
-    key <KP7>  { [     KP_Home,                KP_7,   
+    key <KP7>  { [     KP_Home,                KP_7,
                        onehalf,                dead_horn       ] };
     key <KP8>  { [     KP_Up,                  KP_8,
                        threequarters,          dead_ogonek     ] };
@@ -957,7 +957,7 @@ xkb_symbols "classmate-altgr-intl" {
 
     key <LSGT> { [ backslash,  bar,            backslash,      bar ] };
 
-    key <KP7>  { [     KP_Home,                KP_7,   
+    key <KP7>  { [     KP_Home,                KP_7,
                        dead_horn,              dead_horn       ] };
     key <KP8>  { [     KP_Up,                  KP_8,
                        dead_ogonek,            dead_ogonek     ] };
@@ -1032,7 +1032,7 @@ xkb_symbols "olpc" {
    key <AD12> { [bracketright, braceright,  0x1000330,   0x1000330 ] }; // combining tilde below
 
    key <AC01>  { [         a,          A,          ae,               AE ] };
-   key <AC02>  { [         s,          S,      ssharp,        0x1001E9C ] }; // uppercase S sharp
+   key <AC02>  { [         s,          S,      ssharp,        0x1001E9E ] }; // uppercase S sharp
    key <AC03>  { [         d,          D,         eth,              ETH ] };
    key <AC04>  { [         f,          F,       thorn,            THORN ] };
    key <AC06>  { [         h,          H,    sterling,         sterling ] };
@@ -1056,7 +1056,7 @@ xkb_symbols "olpc" {
 partial alphanumeric_keys
 xkb_symbols "olpc2" {
    include "us(olpc)"
-   name[Group1]= "English (the divide/multiply keys toggle the layout)";
+   name[Group1]= "English (the divide/multiply toggle the layout)";
    include "group(olpc)"
 };
 
@@ -1095,7 +1095,7 @@ xkb_symbols "olpcm" {
    key <AD12> { [bracketright, braceright,  0x1000330,   0x1000330 ] }; // combining tilde below
 
    key <AC01>  { [         a,          A,          ae,               AE ] };
-   key <AC02>  { [         s,          S,      ssharp,        0x1001E9C ] }; // uppercase S sharp
+   key <AC02>  { [         s,          S,      ssharp,        0x1001E9E ] }; // uppercase S sharp
    key <AC03>  { [         d,          D,         eth,              ETH ] };
    key <AC04>  { [         f,          F,       thorn,            THORN ] };
    key <AC06>  { [         h,          H,    sterling,         sterling ] };
@@ -1178,6 +1178,31 @@ xkb_symbols "chr" {
     key <AB10> { [      U13C2,      U13C9 ] };
 };
 
+// Add Hawaiian `okina and kahako to US layout
+// Author: Greg Meyer <gregory.meyer@gmail.com>, 2020
+// this mapping follows the one for Windows here: http://www.olelo.hawaii.edu/enehana/winkbd.php
+// `okina replaces apostrophe (apostrophe moves to level 3)
+// vowels with kahako (macron) are level 3 symbols
+partial alphanumeric_keys
+xkb_symbols "haw"  {
+
+    include "us(basic)"
+    name[Group1] = "Hawaiian";
+
+    // `okina replaces single apostrophe
+    // alt gives the literal apostrophe
+    key <AC11> {[ U02BB, quotedbl, apostrophe ] };
+
+    // kahako
+    key <AC01> {[ a, A, amacron, Amacron ]};
+    key <AD03> {[ e, E, emacron, Emacron ]};
+    key <AD07> {[ u, U, umacron, Umacron ]};
+    key <AD08> {[ i, I, imacron, Imacron ]};
+    key <AD09> {[ o, O, omacron, Omacron ]};
+
+    include "level3(ralt_switch)"
+};
+
 // Serbian charecters added as third level symbols to US keyboard layout.
 
 partial alphanumeric_keys
@@ -1203,51 +1228,6 @@ xkb_symbols "hbs" {
   include "level3(ralt_switch)"
 };
 
-//based on http://upload.wikimedia.org/wikipedia/commons/1/18/T-Mobile_G1_launch_event_2.jpg
-partial alphanumeric_keys
-xkb_symbols "htcdream" {
-        include "inet(htcdream)"
-        name[Group1]= "English (US)";
-
-        //second row
-        key <AD01> { [ q, Q, Tab, Tab ] };
-        key <AD02> { [ w, W, grave, grave ] };
-        key <AD03> { [ e, E, underscore, underscore ] };
-        key <AD04> { [ r, R, sterling, sterling ] };
-        key <AD05> { [ t, T, EuroSign, EuroSign ] };
-        key <AD06> { [ y, Y, division, division ] };
-        key <AD07> { [ u, U, multiply, multiply ] };
-        key <AD08> { [ i, I, minus, minus ] };
-        key <AD09> { [ o, O, plus, plus ] };
-        key <AD10> { [ p, P, equal, equal ] };
-
-        //third row
-        key <AC01> { [ a, A, NoSymbol, NoSymbol ] };
-        key <AC02> { [ s, S, bar, bar ] };
-        key <AC03> { [ d ,D, backslash, backslash ] };
-        key <AC04> { [ f, F, braceleft, braceleft ] };
-        key <AC05> { [ g, G, braceright, braceright ] };
-        key <AC06> { [ h, H, colon, colon ] };
-        key <AC07> { [ j, J, semicolon, semicolon ] };
-        key <AC08> { [ k, K, quotedbl, quotedbl ] };
-        key <AC09> { [ l, L, apostrophe, apostrophe ] };
-
-        //forth row
-        key <AB01> { [ z, Z, NoSymbol, NoSymbol ] };
-        key <AB02> { [ x, X, NoSymbol, NoSymbol ] };
-        key <AB03> { [ c, C, NoSymbol, NoSymbol ] };
-        key <AB04> { [ v, V, bracketleft, bracketleft ] };
-        key <AB05> { [ b, B, bracketright, bracketright ] };
-        key <AB06> { [ n, N, less, less ] };
-        key <AB07> { [ m, M, greater, greater ] };
-        key <AB08> { [ comma, comma, question, question ] };
-
-        //fifth row
-        key <FK15> { [ at, at, asciitilde, asciitilde ] };
-
-        include "level3(alt_switch)"
-};
-
 // Workman Keyboard Layout symbols for xkb on X.Org Server 7.x
 // 09-06-2010 OJ Bucao. http://www.workmanlayout.com
 
@@ -1642,6 +1622,24 @@ xkb_symbols "cz_sk_de" {
     include "level3(ralt_switch)"
 };
 
+// 03 December 2017 - Added us(scn), please refer to
+//                    Cadèmia Siciliana <l10n@cademiasiciliana.org>
+partial alphanumeric_keys
+xkb_symbols "scn" {
+
+    include "us(intl)"
+    name[Group1]="Sicilian (US keyboard)";
+
+    key <AD03> { [      e,       E, U0259,       U018F ] };
+    key <AC03> { [      d,       D, U1E0D,       U1E0C ] };
+    key <AC04> { [      f,       F, U0111,       U0110 ] };
+    key <AC06> { [      h,       H, U1E25,       U1E24 ] };
+    key <AB02> { [      x,       X, U03C7,       U03A7 ] };
+    key <AB09> { [ period, greater, U1D58,  dead_caron ] };
+
+    include "level3(ralt_switch)"
+};
+
 // XCompose is out! Unicode combining is in!  For those of us who live
 // on the edge: A keymap using Unicode combining characters instead of
 // deadkeys.  This variation does not deviate from the lame MS-style
@@ -1665,7 +1663,7 @@ xkb_symbols "cz_sk_de" {
 partial alphanumeric_keys
 xkb_symbols "intl-unicode" {
 
- name[Group1]= "English (US, international AltGr Unicode combining)";
+ name[Group1]= "English (US, intl., AltGr Unicode combining)";
 
  include "us(intl)"
  include "level3(ralt_switch)"
@@ -1715,7 +1713,7 @@ xkb_symbols "intl-unicode" {
 partial alphanumeric_keys
 xkb_symbols "alt-intl-unicode" {
 
- name[Group1]= "English (US, international AltGr Unicode combining, alternative)";
+ name[Group1]= "English (US, intl., AltGr Unicode combining, alt.)";
 
  include "us(intl-unicode)"
 
@@ -1787,3 +1785,224 @@ partial alphanumeric_keys
        xkb_symbols "sun_type6" {
        include "sun_vndr/us(sun_type6)"
 };
+
+// Implementation of the 3l keyboard layout
+// See https://github.com/jackrosenthal/threelayout for specification
+partial alphanumeric_keys modifier_keys
+xkb_symbols "3l" {
+    name[Group1] = "English (3l)";
+
+    key.type[Group1] = "ONE_LEVEL";
+    key <TAB> { [ Escape ] };
+    key <CAPS> { [ Tab ] };
+    key <AC11> { [ ISO_Level3_Shift ] }; // Sym Modifier
+    key <AB10> { [ ISO_Level5_Shift ] }; // Cur/Num Modifier
+
+    // Top row numbers - not part of spec, but given for convenience
+    key <AE01> { [ 1 ] };
+    key <AE02> { [ 2 ] };
+    key <AE03> { [ 3 ] };
+    key <AE04> { [ 4 ] };
+    key <AE05> { [ 5 ] };
+    key <AE06> { [ 6 ] };
+    key <AE07> { [ 7 ] };
+    key <AE08> { [ 8 ] };
+    key <AE09> { [ 9 ] };
+    key <AE10> { [ 0 ] };
+
+    // Main keys
+    // Order of mods (defined by EIGHT_LEVEL_SEMIALPHABETIC) is:
+    //           [ None,      Shift,     Sym,          Shift+Sym,      Num,       Shift+Num,  Sym+Num,  Shift+Sym+Num ]
+    key.type[Group1] = "EIGHT_LEVEL_SEMIALPHABETIC";
+
+    // Second row
+    key <AD01> { [ q,         Q,         quotedbl,     Greek_omicron,  Prior,     Prior,      U21CD,    Greek_OMICRON ] };
+    key <AD02> { [ f,         F,         underscore,   Greek_phi,      BackSpace, BackSpace,  U21A4,    Greek_PHI ] };
+    key <AD03> { [ u,         U,         bracketleft,  Greek_upsilon,  Up,        Up,         U2191,    Greek_UPSILON ] };
+    key <AD04> { [ y,         Y,         bracketright, Greek_psi,      Delete,    Delete,     U21A6,    Greek_PSI ] };
+    key <AD05> { [ z,         Z,         asciicircum,  Greek_zeta,     Next,      Next,       U21CF,    Greek_ZETA ] };
+    key <AD06> { [ x,         X,         exclam,       Greek_xi,       NoSymbol,  NoSymbol,   U2260,    Greek_XI ] };
+    key <AD07> { [ k,         K,         less,         Greek_kappa,    1,         A,          U2A7D,    Greek_KAPPA ] };
+    key <AD08> { [ c,         C,         greater,      Greek_chi,      2,         B,          U2A7E,    Greek_CHI ] };
+    key <AD09> { [ w,         W,         equal,        Greek_omega,    3,         C,          U2261,    Greek_OMEGA ] };
+    key <AD10> { [ b,         B,         ampersand,    Greek_beta,     NoSymbol,  NoSymbol,   U2248,    Greek_BETA ] };
+
+    // Home row
+    key <AC01> { [ o,         O,         slash,        Greek_omega,    Home,      Home,       U21D0,    Greek_OMEGA ] };
+    key <AC02> { [ h,         H,         minus,        Greek_theta,    Left,      Left,       U2190,    Greek_THETA ] };
+    key <AC03> { [ e,         E,         braceleft,    Greek_epsilon,  Down,      Down,       U2193,    Greek_EPSILON ] };
+    key <AC04> { [ a,         A,         braceright,   Greek_alpha,    Right,     Right,      U2192,    Greek_ALPHA ] };
+    key <AC05> { [ i,         I,         asterisk,     Greek_iota,     End,       End,        U21D2,    Greek_IOTA ] };
+    key <AC06> { [ d,         D,         question,     Greek_delta,    period,    colon,      U2286,    Greek_DELTA ] };
+    key <AC07> { [ r,         R,         parenleft,    Greek_rho,      4,         D,          U2227,    Greek_RHO ] };
+    key <AC08> { [ t,         T,         parenright,   Greek_tau,      5,         E,          U2228,    Greek_TAU ] };
+    key <AC09> { [ n,         N,         apostrophe,   Greek_eta,      6,         F,          U2200,    Greek_ETA ] };
+    key <AC10> { [ s,         S,         colon,        Greek_sigma,    NoSymbol,  NoSymbol,   U2203,    Greek_SIGMA ] };
+
+    // Bottom row
+    key <AB01> { [ comma,     comma,     numbersign,   NoSymbol,       slash,     NoSymbol,   U21AE,    NoSymbol ] };
+    key <AB02> { [ m,         M,         dollar,       Greek_mu,       asterisk,  NoSymbol,   U2194,    Greek_MU ] };
+    key <AB03> { [ period,    period,    bar,          NoSymbol,       minus,     NoSymbol,   U21CE,    NoSymbol ] };
+    key <AB04> { [ j,         J,         asciitilde,   Greek_SIGMA,    plus,      NoSymbol,   U21D4,    NoSymbol ] };
+    key <AB05> { [ semicolon, semicolon, grave,        NoSymbol,       comma,     NoSymbol,   U2282,    NoSymbol ] };
+    key <AB06> { [ g,         G,         plus,         Greek_gamma,    0,         NoSymbol,   U2229,    Greek_GAMMA ] };
+    key <AB07> { [ l,         L,         percent,      Greek_lambda,   7,         parenleft,  U222A,    Greek_LAMBDA ] };
+    key <AB08> { [ p,         P,         backslash,    Greek_pi,       8,         parenright, U2208,    Greek_PI ] };
+    key <AB09> { [ v,         V,         at,           Greek_nu,       9,         NoSymbol,   U2209,    Greek_NU ] };
+
+    include "level5(modifier_mapping)"
+};
+
+// Chromebooks typically have the key which is normally in the caps
+// lock position mapped to keycode 133 (LWIN). For 3l, it is critical
+// that the key in this positon correspond to tab, so there is a
+// variant available for chromebook hardware.
+partial modifier_keys
+xkb_symbols "3l-cros" {
+    include "us(3l)"
+    name[Group1] = "English (3l, Chromebook)";
+    key <LWIN> {
+        type[Group1] = "ONE_LEVEL",
+        symbols[Group1] = [ Tab ]
+    };
+};
+
+// A 3l variant for emacs users, which maps control to caps lock and (re)maps 
+// tab back to tab.
+partial modifier_keys
+xkb_symbols "3l-emacs" {
+    include "us(3l)"
+    name[Group1] = "English (3l, emacs)";
+
+    key <TAB> { [ Tab ] };
+    key <CAPS> { [ Control_L ] };
+
+    modifier_map Control { <CAPS> };
+};
+
+// Drix EU Latin - version 3.1 (2019-10-07)
+// Author: Jerome Leclanche <jerome@leclan.ch>
+// Latin layout based on classic US qwerty, with azerty-style second-row m key.
+// Features:
+// - Programmer-centric punctuation keys (All common symbols on right hand except < and > on left)
+// - Most common dead accents on altgr-shift number row
+// - Unicode arrows on Altgr+shift+WASD
+// - Some commonly used special characters available:
+//   - Most common european special characters
+//   - Misc currency symbols, copyright/registered/trademark symbols
+//   - Common math symbols + some common greek letters
+// - Compose key replaces Mod5
+//
+// This layout is in the Public Domain.
+//
+// ┌─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┬─────┲━━━━━━━━━┓
+// │ ~ ~ │ " ´ │ ' ` │ ^ ^ │ ` ¨ │ ´ ° │ 6 ¯ │ 7 ¸ │ 8 ˛ │ 9 ˇ │ | ˝ │ _ ± │ = ≠ ┃Backspace┃
+// │ @ £ │ 1 ¹ │ 2 ² │ 3 ³ │ 4 ⁴ │ 5 ⁵ │ 6 ⁶ │ 7 ⁷ │ 8 ⁸ │ 9 ⁹ │ 0 ⁰ │ - " │ + ' ┃ ⌫       ┃
+// ┢━━━━━┷━┱───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┴─┬───┺━┳━━━━━━━┫
+// ┃Tab    ┃ Q Ø │ W ↑ │ E € │ R ₽ │ T τ │ Y ¥ │ U U │ I ’ │ O Ω │ P ₱ │ [ « │ ] » ┃ ⏎     ┃
+// ┃ ↹     ┃ q ø │ w w │ e € │ r ® │ t ™ │ y ¥ │ u u │ i ‘ │ o œ │ p π │ ( { │ ) } ┃ Enter ┃
+// ┣━━━━━━━┻┱────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┴┬────┺┓      ┃
+// ┃Caps    ┃ A ← │ S ↓ │ D → │ F Ƒ │ G G │ H H │ J ” │ K „ │ L λ │ M M │ % ‰ │ & × ┃      ┃
+// ┃Lock  ⇬ ┃ a æ │ s ß │ d Δ │ f ƒ │ g g │ h h │ j “ │ k ‚ │ l £ │ m µ │ # ~ │ * $ ┃      ┃
+// ┣━━━━━━┳━┹───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┬─┴───┲━┷━━━━━┻━━━━━━┫
+// ┃Shift ┃ > ≥ │ Z ¶ │ X ÷ │ C ¢ │ V V │ B ₿ │ N N │ ? ¿ │ , · │ ; ´ │ \ ¦ ┃Shift         ┃
+// ┃ ⇧    ┃ < ≤ │ z § │ x × │ c © │ v ♀ │ b ♂ │ n ⚥ │ ! ¡ │ . … │ : ` │ / | ┃ ⇧            ┃
+// ┣━━━━━━┻┳━━━━┷━━┳━━┷━━━━┱┴─────┴─────┴─────┴─────┴─────┴────┲┷━━━━━╈━━━━━┻┳━━━━━━┳━━━━━━┫
+// ┃Ctrl   ┃ Fn    ┃Alt    ┃ ␣ Space            Nobreakspace ⍽ ┃AltGr ┃Multi ┃ Ctxt ┃ Ctrl ┃
+// ┃       ┃       ┃       ┃ ␣ Space            Nobreakspace ⍽ ┃      ┃      ┃ Menu ┃      ┃
+// ┗━━━━━━━┻━━━━━━━┻━━━━━━━┹───────────────────────────────────┺━━━━━━┻━━━━━━┻━━━━━━┻━━━━━━┛
+
+partial alphanumeric_keys modifier_keys
+xkb_symbols "drix" {
+
+       name[Group1] = "English (Drix)";
+
+       // First row
+       key <TLDE> {[ at,          asciitilde,     sterling,             dead_tilde            ]}; // @ ~ £ ~
+       key <AE01> {[ 1,           quotedbl,       onesuperior,          dead_grave            ]}; // 1 " ¹ `
+       key <AE02> {[ 2,           apostrophe,     twosuperior,          dead_acute            ]}; // 2 ' ² ´
+       key <AE03> {[ 3,           asciicircum,    threesuperior,        dead_circumflex       ]}; // 3 ^ ³ ^
+       key <AE04> {[ 4,           grave,          foursuperior,         dead_diaeresis        ]}; // 4 4 ⁴ ¨
+       key <AE05> {[ 5,           degree,         fivesuperior,         dead_abovering        ]}; // 5 ° ⁵ °
+       key <AE06> {[ 6,           6,              sixsuperior,          dead_macron           ]}; // 6 6 ⁶ ¯
+       key <AE07> {[ 7,           7,              sevensuperior,        dead_cedilla          ]}; // 7 7 ⁷ ¸
+       key <AE08> {[ 8,           8,              eightsuperior,        dead_ogonek           ]}; // 8 8 ⁸ ˛
+       key <AE09> {[ 9,           9,              ninesuperior,         dead_caron            ]}; // 9 9 ⁹ ˇ
+       key <AE10> {[ 0,           bar,            zerosuperior,         dead_doubleacute      ]}; // 0 | ⁰ ˝
+       key <AE11> {[ minus,       underscore,     quotedbl,             plusminus             ]}; // - _ " ±
+       key <AE12> {[ plus,        equal,          apostrophe,           notequal              ]}; // + = ' ≠
+
+       // Second row
+       key <AD01> {[ q,           Q,              oslash,               Ooblique              ]}; // q Q ø Ø
+       key <AD02> {[ w,           W,              w,                    uparrow               ]}; // w W w ↑
+       key <AD03> {[ e,           E,              EuroSign,             EuroS                 ]}; // e E € €
+       key <AD04> {[ r,           R,              registered,           0x10020bd             ]}; // r R ® ₽
+       key <AD05> {[ t,           T,              trademark,            Greek_tau             ]}; // t T ™ τ
+       key <AD06> {[ y,           Y,              yen,                  yen                   ]}; // y Y ¥ ¥
+       key <AD07> {[ u,           U,              u,                    U                     ]}; // u U u U
+       key <AD08> {[ i,           I,              leftsinglequotemark,  rightsinglequotemark  ]}; // i I ‘ ’
+       key <AD09> {[ o,           O,              oe,                   Greek_OMEGA           ]}; // o O œ Ω
+       key <AD10> {[ p,           P,              Greek_pi,             0x10020b1             ]}; // p P π ₱
+       key <AD11> {[ parenleft,   bracketleft,    braceleft,            guillemotleft         ]}; // ( [ { «
+       key <AD12> {[ parenright,  bracketright,   braceright,           guillemotright        ]}; // ) ] } »
+
+       // Third row
+       key <AC01> {[ a,           A,              ae,                   leftarrow             ]}; // a A æ ←
+       key <AC02> {[ s,           S,              ssharp,               downarrow             ]}; // s S ß ↓
+       key <AC03> {[ d,           D,              Greek_DELTA,          rightarrow            ]}; // d D Δ →
+       key <AC04> {[ f,           F,              0x1000192,            0x1000191             ]}; // f F ƒ Ƒ
+       key <AC05> {[ g,           G,              g,                    G                     ]}; // g G g G
+       key <AC06> {[ h,           H,              h,                    H                     ]}; // h H h H
+       key <AC07> {[ j,           J,              leftdoublequotemark,  rightdoublequotemark  ]}; // j J “ ”
+       key <AC08> {[ k,           K,              singlelowquotemark,   doublelowquotemark    ]}; // k K ‚ „
+       key <AC09> {[ l,           L,              sterling,             Greek_lambda          ]}; // l L £ λ
+       key <AC10> {[ m,           M,              mu,                   M                     ]}; // m M µ M
+       key <AC11> {[ numbersign,  percent,        asciitilde,           0x1002030             ]}; // # % ~ ‰
+
+       // Fourth row
+       key <LSGT> {[ less,        greater,        lessthanequal,        greaterthanequal      ]}; // < > ≤ ≥
+       key <AB01> {[ z,           Z,              section,              paragraph             ]}; // z Z § ¶
+       key <AB02> {[ x,           X,              multiply,             division              ]}; // x X × ÷
+       key <AB03> {[ c,           C,              copyright,            cent                  ]}; // c C © ¢
+       key <AB04> {[ v,           V,              0x1002640,            V                     ]}; // v V ♀ V
+       key <AB05> {[ b,           B,              0x1002642,            0x10020bf             ]}; // b B ♂ ₿
+       key <AB06> {[ n,           N,              0x10026a5,            N                     ]}; // n N ⚥ N
+       key <AB07> {[ exclam,      question,       exclamdown,           questiondown          ]}; // ! ? ¡ ¿
+       key <AB08> {[ period,      comma,          0x1002026,            periodcentered        ]}; // . , … ·
+       key <AB09> {[ colon,       semicolon,      grave,                acute                 ]}; // : ; ` ´
+       key <AB10> {[ slash,       backslash,      bar,                  brokenbar             ]}; // / \ | ¦
+
+       // Next to the enter key
+       key <BKSL> {[ asterisk,    ampersand,      dollar,               multiply              ]}; // * & $ ×
+
+       // Rebind right Super (windows key) into a Compose key
+       key <RWIN> {[ Multi_key ]};
+
+       // Implement AltGr and AltGr+Shift
+       // For some reason, include "level3(ralt_switch)" doesn't do the trick.
+       key <RALT> {
+               type[Group1]="TWO_LEVEL",
+               [ ISO_Level3_Shift, Multi_key ]
+       };
+};
+
+// German and Swedish characters added as third level symbols to the US keyboard layout
+// Author: Stephan Lachnit <stephanlachnit@protonmail.com>, 2019
+// the german umlauts are placed over the characters without diaeresis, the sharp-s over the s
+// the swedish ao is placed over the p, since it's closed to the position on a swedish keyboard
+// the euro sign is placed over the e, as it is usual for german and swedish keyboards
+partial alphanumeric_keys
+xkb_symbols "de_se_fi"  {
+
+    include "us(basic)"
+    include "eurosign(e)"
+    name[Group1] = "German, Swedish and Finnish (US)";
+
+    key <AC01> {[ a,          A,          adiaeresis, Adiaeresis ]};
+    key <AD09> {[ o,          O,          odiaeresis, Odiaeresis ]};
+    key <AC02> {[ s,          S,          ssharp,     U1E9E      ]};
+    key <AD07> {[ u,          U,          udiaeresis, Udiaeresis ]};
+    key <AD10> {[ p,          P,          aring,      Aring      ]};
+
+    include "level3(ralt_switch)"
+};
index e7529f4..3f1e48d 100644 (file)
@@ -1,4 +1,4 @@
-partial default xkb_types "default" {
+default partial xkb_types "default" {
 
     // Defines a type with a four-level shift, similar to the three-level
     // type used for iso9995, but it lets the Shift key behave "normally".
index d3c4e0b..137a522 100644 (file)
@@ -1,4 +1,4 @@
-partial default xkb_types "default" {
+default partial xkb_types "default" {
 
     // A key type which can be used to implement
     // an ISO9995-style level-three shift.
index 0570725..19d1552 100644 (file)
@@ -1,4 +1,4 @@
-partial default xkb_types "default" {
+default partial xkb_types "default" {
 
     // Defines a type with an eight-level shift, similar to the three-level
     // type used for iso9995, but it lets the Shift key behave "normally".
index 901848a..0bf8384 100644 (file)
@@ -1,4 +1,4 @@
-partial default xkb_types "default" {
+default partial xkb_types "default" {
     virtual_modifiers Alt;
 
     type "SHIFT+ALT" {
index 5861f11..01723e9 100644 (file)
@@ -1,4 +1,4 @@
-partial default xkb_types "pc" {
+default partial xkb_types "pc" {
     type "KEYPAD" {
        modifiers = Shift+NumLock;
        map[None] = Level1;
index 404e3c9..a980664 100644 (file)
@@ -1,4 +1,4 @@
-partial default xkb_types "default" {
+default partial xkb_types "default" {
 
     // Some types that are necessary
     // for a full implementation of
index 3ec7c66..08832f9 100644 (file)
@@ -514,7 +514,7 @@ test_range(struct xkb_keymap *keymap)
     xkb_keycode_t counter;
 
     assert(xkb_keymap_min_keycode(keymap) == 9);
-    assert(xkb_keymap_max_keycode(keymap) == 253);
+    assert(xkb_keymap_max_keycode(keymap) == 569);
 
     counter = xkb_keymap_min_keycode(keymap);
     xkb_keymap_key_for_each(keymap, key_iter, &counter);