madduck's git repository

Every one of the projects in this repository is available at the canonical URL git://git.madduck.net/madduck/pub/<projectpath> — see each project's metadata for the exact URL.

All patches and comments are welcome. Please squash your changes to logical commits before using git-format-patch and git-send-email to patches@git.madduck.net. If you'd read over the Git project's submission guidelines and adhered to them, I'd be especially grateful.

SSH access, as well as push access can be individually arranged.

If you use my repositories frequently, consider adding the following snippet to ~/.gitconfig and using the third clone URL listed for each project:

[url "git://git.madduck.net/madduck/"]
  insteadOf = madduck:

load xkb modifications from xsession
authormartin f. krafft <madduck@madduck.net>
Sat, 18 Apr 2009 12:25:58 +0000 (14:25 +0200)
committermartin f. krafft <madduck@madduck.net>
Sat, 18 Apr 2009 12:36:24 +0000 (14:36 +0200)
.xkb/rules/evdev [new file with mode: 0644]
.xkb/rules/evdev.lst [new file with mode: 0644]
.xkb/symbols/madduck [new file with mode: 0644]
.xsession.d/01-xkb

diff --git a/.xkb/rules/evdev b/.xkb/rules/evdev
new file mode 100644 (file)
index 0000000..c920bda
--- /dev/null
@@ -0,0 +1,925 @@
+// DO NOT EDIT THIS FILE - IT WAS AUTOGENERATED BY merge.sh FROM rules/*.part
+// $Xorg: xfree86,v 1.3 2000/08/17 19:54:42 cpqbld Exp $
+
+//
+//  Rules for resolving XKB components for use with XFree86
+//  Copyright 1996 by Joseph Moss
+//
+//  2002 Modifier: Ivan Pascal      The XFree86 Project
+//  $XFree86: xc/programs/xkbcomp/rules/xfree86,v 3.79 2004/01/09 00:16:01 dawes Exp $
+//
+
+// If you want non-latin layouts implicitly include the en_US layout
+// uncomment lines below
+//! $nonlatin = am ara ben bd bg bt by cs deva ge gh gr guj guru il \
+//              in ir iku jp kan kh kr la lao lk mk mm mn mv mal ori pk \
+//              ru scc sy syr tel th tj tam ua uz
+
+// PC models
+! $pcmodels = pc101 pc102 pc104 pc105
+
+// Microsoft models (using MS geometry)
+! $msmodels = microsoft microsoft7000 microsoftpro microsoftprousb microsoftprose
+
+// PC geometries - they have special geometry but symbols are mostly pc105
+! $pcgeometries = abnt2 latitude jp106 kr106
+
+// Layouts that provide further specializations for the OLPC
+! $olpclayouts = af am ara br ca es et it kh kz in mn np ru th tr us 
+
+! $macbooks = macbook78 macbook79
+! $maclaptop = ibook powerbook macbook78 macbook79
+! $macs = macintosh macintosh_old ibook powerbook macbook78 macbook79
+
+! $macvendorlayouts = ch de dk es fi fr gb is it latam nl no pt se us
+
+! $azerty = be fr
+! $qwertz = al cz de hr hu ro si sk 
+
+! $inetkbds = acer_c300 acer_ferrari4k acer_laptop \
+              airkey \
+              apple armada azonaRF2300 \
+              benqx brother \
+              btc5113rf btc9000 btc9000a btc9001ah btc5090 btc9019u \
+              cherryblue cherrybluea cherryblueb \
+              cherrycyboard cherrycmexpert \
+              chicony chicony0108 chicony0420 chicony9885 \
+              compalfl90 \
+              compaqeak8 compaqik7 compaqik13 compaqik18 \
+              cymotionlinux \
+              dell dellm65 inspiron dellusbmm \
+              emachines ennyah_dkb1008 evdev \
+              genius geniuscomfy2 \
+              gyration honeywell_euroboard \
+              hp250x hp5xx hp500fa hpdv5 \
+              hpi6 hpxe3gc hpxe3gf hpxe4xxx hpxt1000 hpzt11xx \
+              ibm_spacesaver ipaq inspiron intel \
+              logiaccess logicda logicink \
+              logiex110 logiclx300 \
+              logiinkse logiinkseusb logiitc logiik \
+              logitech_base itouch logiultrax \
+              logitech_g15 \
+             logidinovo logidinovoedge \
+              microsoft7000 microsoftinet microsoftprousb microsoftprooem microsoftprose \
+              microsoftoffice microsoftmult \
+              mx1998 mx2500 mx2750 \
+              oretec \
+              presario propeller \
+              qtronix \
+              rapidaccess rapidaccess2 thinkpad60 \
+              samsung4500 samsung4510 \
+              silvercrest \
+              sk1300 sk2500 sk6200 sk7100 \
+              sven sven303 symplon \
+              toshiba_s3000 trust trustda \
+              unitekkb1925 yahoo
+
+// all layouts with 3rd and 4th groups
+! $threelevellayouts = al az \
+              be br bt \
+              ca ch cs cz \
+              de dk \
+              ee es \
+              fi fo fr \
+              gb gr \
+              hu \
+              ie ir is it \
+              kg \
+              latam \
+              lk lt \
+              mn mt \
+              nl no \
+              pl pt \
+              ro \
+              se sk \
+              tr \
+              us \
+              vn \
+              za
+
+
+! $dvoraklayouts = br ca de ee es fr gb no pl se us
+
+! model                =       keycodes
+  pc98         =       evdev(pc98)
+  abnt2                =       evdev(abnt2)
+  jp106                =       evdev(jp106)
+  *            =       evdev
+
+! layout[1]    =       keycodes
+  $azerty       =       +aliases(azerty)
+  $qwertz       =       +aliases(qwertz)
+  *             =       +aliases(qwerty)
+
+! layout       =       keycodes
+  $azerty       =       +aliases(azerty)
+  $qwertz       =       +aliases(qwertz)
+  *             =       +aliases(qwerty)
+
+! option       =       keycodes
+
+! model                layout  =       geometry
+  thinkpad     us              =       thinkpad(us)
+
+! model                =       geometry
+  microsoftelite       =       microsoft(elite)
+ $msmodels     =       microsoft(natural)
+  dell101      =       dell(dell101)
+  dellm65      =       dell(dellm65)
+  flexpro      =       keytronic(FlexPro)
+  hp6000       =       hp(omnibook)
+  omnikey101   =       northgate(omnikey101)
+ $pcmodels     =       pc(%m)
+ $pcgeometries =       pc(%m)
+  everex       =       everex(STEPnote)
+  thinkpad     =       thinkpad(intl)
+  thinkpad60   =       thinkpad(60)
+  thinkpadz60  =       thinkpad(60)
+  winbook      =       winbook(XP5)
+  pc98         =       nec(pc98)
+ $macbooks      =       macintosh(%m)
+ $macs         =       macintosh(macintosh)
+  hhk          =       hhk(basic)
+  kinesis      =       kinesis(model100)
+  *            =       pc(pc104)
+
+! model                layout          variant         =       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)
+  *            il              si1452          =       pc+ie(basic)
+  *            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             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)
+  classmate    us              intl            =       pc+us(classmate-intl)
+  classmate    us              alt-intl        =       pc+us(classmate-alt-intl)
+  classmate    us              altgr-intl      =       pc+us(classmate-altgr-intl)
+
+! model                layout                          =       symbols
+  *            ar                      =       pc+ara
+  *            ben                     =       pc+in(ben)
+  *            bs                      =       pc+ba
+  *            cs                      =       pc+rs
+  *            cz_qwerty                       =       pc+cz(qwerty)
+  *            dev                     =       pc+in(deva)
+  *            dvorak                  =       pc+us(dvorak)
+  *            dzdwi                   =       pc+bt
+  *            el                      =       pc+gr
+  *            en_US                   =       pc+latin
+  *            guj                     =       pc+in(guj)
+  *            gur                     =       pc+in(guru)
+  *            iu                      =       pc+ca(ike)
+  *            lo                      =       pc+la
+  *            kan                     =       pc+in(kan)
+  *            mi                      =       pc+mao
+  *            ml                      =       pc+in(mal)
+  *            ogham                   =       pc+ie(ogam)
+  *            ori                     =       pc+ie(ori)
+  *            sapmi                   =       pc+no(smi)
+  *            sr                      =       pc+srp
+  *            syr                     =       pc+sy(syc)
+  *            tel                     =       pc+in(tel)
+  *            tml                     =       pc+in(tam)
+  *            yu                      =       pc+srp
+  *            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)
+  *            il(si1452)                      =       pc+ie(basic)
+  *            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(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      $nonlatin               =       xfree68_vndr/ataritt(us)+%l%(v):2
+  ataritt      *                       =       xfree68_vndr/ataritt(us)+%l%(v)
+  amiga                $nonlatin               =       xfree68_vndr/amiga(usa1)+%l%(v):2
+  amiga                *                       =       xfree68_vndr/amiga(usa1)+%l%(v)
+  classmate    us                      =       pc+%l(classmate)
+  sun4         $nonlatin               =       latin+sun_vndr/us(sun4)+%l%(v):2
+  sun4         *                       =       latin+sun_vndr/us(sun4)+%l%(v)
+  sun5         $nonlatin               =       latin+sun_vndr/us(sun5)+%l%(v):2
+  sun5         *                       =       latin+sun_vndr/us(sun5)+%l%(v)
+  sun6         us                      =       sun_vndr/us(type6)
+  sun6         en_US                   =       sun_vndr/us(type6)+iso9995-3(basic)
+  sun6         *                       =       sun_vndr/us(type6)+%l%(v)
+  pc98         nec_vndr/jp             =       nec_vndr/jp(pc98)
+  macintosh_old        us                      =       macintosh_vndr/us(oldmac)
+  macintosh_old        en_US                   =       macintosh_vndr/us(oldmac)
+  macintosh_old        $macvendorlayouts       =       macintosh_vndr/us(oldmac)+macintosh_vndr/%l%(v)
+  macintosh_old        $nonlatin               =       macintosh_vndr/us(oldmac)+%l%(v):2
+  macintosh_old        *                       =       macintosh_vndr/us(oldmac)+%l%(v)
+ $macs         en_US                   =       pc+macintosh_vndr/us(extended)
+ $macs         $macvendorlayouts       =       pc+macintosh_vndr/%l%(v)
+  olpc         $olpclayouts            =       olpc+%l%(m)
+  olpc         *                       =       olpc+%l%(v)
+  thinkpad     br                      =       pc+br(thinkpad)
+  *            $nonlatin               =       pc+us+%l%(v):2
+  *            *                       =       pc+%l%(v)
+
+! model                layout[1]                       =       symbols
+  *            ar                      =       pc+ara%(v[1])
+  *            bs                      =       pc+ba%(v[1])
+  *            cs                      =       pc+rs%(v[1])
+  *            dzdwi                   =       pc+bt%(v[1])
+  *            el                      =       pc+gr%(v[1])
+  *            en_US                   =       pc+latin%(v[1])
+  *            lo                      =       pc+la%(v[1])
+  *            mi                      =       pc+mao%(v[1])
+  *            sr                      =       pc+srp%(v[1])
+  *            yu                      =       pc+srp%(v[1])
+  *            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)
+  *            il(si1452)                      =       pc+ie(basic)
+  *            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(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])
+  sun4         *                       =       latin+sun_vndr/us(sun4)+%l[1]%(v[1])
+  sun5         *                       =       latin+sun_vndr/us(sun5)+%l[1]%(v[1])
+  macintosh_old        us                      =       macintosh_vndr/us(oldmac)
+  macintosh_old        $macvendorlayouts       =       macintosh_vndr/us(oldmac)+macintosh_vndr/%l[1]%(v[1])
+  macintosh_old        *                       =       macintosh_vndr/us(oldmac)+%l[1]%(v[1])
+ $macs         $macvendorlayouts       =       pc+macintosh_vndr/%l[1]%(v[1])
+  thinkpad     br                      =       pc+%l[1](thinkpad)
+  *            *                       =       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)
+  *            il              si1452          =       pc+ie(basic)
+  *            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             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)
+
+! layout[2]    =       symbols
+  ar           =       +ara%(v[2]):2
+  bs           =       +ba%(v[2]):2
+  cs           =       +rs%(v[2]):2
+  dzdwi                =       +bt%(v[2]):2
+  el           =       +gr%(v[2]):2
+  en_US                =       +latin%(v[2]):2
+  lo           =       +la%(v[2]):2
+  mi           =       +mao%(v[2]):2
+  sr           =       +srp%(v[2]):2
+  yu           =       +srp%(v[2]):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
+  il(si1452)   =       +ie(basic):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(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
+  *            =       +%l[2]%(v[2]):2
+
+! layout[3]    =       symbols
+  ar           =       +ara%(v[3]):3
+  bs           =       +ba%(v[3]):3
+  cs           =       +rs%(v[3]):3
+  dzdwi                =       +bt%(v[3]):3
+  el           =       +gr%(v[3]):3
+  en_US                =       +latin%(v[3]):3
+  lo           =       +la%(v[3]):3
+  mi           =       +mao%(v[3]):3
+  sr           =       +srp%(v[3]):3
+  yu           =       +srp%(v[3]):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
+  il(si1452)   =       +ie(basic):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(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
+  *            =       +%l[3]%(v[3]):3
+
+! layout[4]    =       symbols
+  ar           =       +ara%(v[4]):4
+  bs           =       +ba%(v[4]):4
+  cs           =       +rs%(v[4]):4
+  dzdwi                =       +bt%(v[4]):4
+  el           =       +gr%(v[4]):4
+  en_US                =       +latin%(v[4]):4
+  lo           =       +la%(v[4]):4
+  mi           =       +mao%(v[4]):4
+  sr           =       +srp%(v[4]):4
+  yu           =       +srp%(v[4]):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
+  il(si1452)   =       +ie(basic):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(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
+  *            =       +%l[4]%(v[4]):4
+
+! layout[2]    variant[2]      =       symbols
+  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
+  il           si1452  =       +ie(basic):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          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
+
+! layout[3]    variant[3]      =       symbols
+  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
+  il           si1452  =       +ie(basic):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          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
+
+! layout[4]    variant[4]      =       symbols
+  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
+  il           si1452  =       +ie(basic):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          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
+
+! model                =       symbols
+  thinkpad     =       +inet(evdev)+madduck(thinkpad_switch)
+  *            =       +inet(evdev)+madduck(default_switch)
+
+! model                layout          =       compat
+  pc98         nec_vndr/jp     =       pc98(basic)
+  *            jp              =       complete+japan
+  olpc         *               =       olpc
+  *            *               =       complete
+
+! model                layout[1]       =       compat
+  *            *               =       complete
+
+! model                =       types
+  $macs                =       complete+numpad(mac)
+  *            =       complete
+
+! layout       option  =       symbols
+  $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle)
+  *                    misc:typo       = +typo(base)
+
+! layout[1]    option  =       symbols
+  $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):1
+  *                    misc:typo       = +typo(base):1
+
+! layout[2]    option  =       symbols
+  $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):2
+  *                    misc:typo       = +typo(base):2
+
+! layout[3]    option  =       symbols
+  $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):3
+  *                    misc:typo       = +typo(base):3
+
+! layout[4]    option  =       symbols
+  $threelevellayouts   grp:alts_toggle = +level3(ralt_switch_for_alts_toggle):4
+  *                    misc:typo       = +typo(base):4
+
+! option       =       symbols
+  grp:shift_toggle     =       +group(shifts_toggle)
+  altwin:menu          =       +altwin(menu)
+  altwin:meta_alt      =       +altwin(meta_alt)
+  altwin:ctrl_win      =       +altwin(ctrl_win)
+  altwin:ctrl_alt_win  =       +altwin(ctrl_alt_win)
+  altwin:meta_win      =       +altwin(meta_win)
+  altwin:left_meta_win =       +altwin(left_meta_win)
+  altwin:super_win     =       +altwin(super_win)
+  altwin:hyper_win     =       +altwin(hyper_win)
+  altwin:alt_super_win =       +altwin(alt_super_win)
+  altwin:swap_lalt_lwin        =       +altwin(swap_lalt_lwin)
+  grp:switch           =       +group(switch)
+  grp:lswitch          =       +group(lswitch)
+  grp:win_switch       =       +group(win_switch)
+  grp:lwin_switch      =       +group(lwin_switch)
+  grp:rwin_switch      =       +group(rwin_switch)
+  grp:toggle           =       +group(toggle)
+  grp:shifts_toggle    =       +group(shifts_toggle)
+  grp:ctrls_toggle     =       +group(ctrls_toggle)
+  grp:alts_toggle      =       +group(alts_toggle)
+  grp:ctrl_shift_toggle        =       +group(ctrl_shift_toggle)
+  grp:lctrl_lshift_toggle      =       +group(lctrl_lshift_toggle)
+  grp:caps_toggle      =       +capslock(grouplock)
+  grp:caps_switch       =       +capslock(groupshift)
+  grp:shift_caps_toggle        =       +group(shift_caps_toggle)
+  grp:shift_caps_switch        =       +group(shift_caps_switch)
+  grp:win_menu_switch  =       +group(win_menu_switch)
+  grp:alt_caps_toggle   =       +group(alt_caps_toggle)
+  grp:ctrl_alt_toggle  =       +group(ctrl_alt_toggle)
+  grp:alt_shift_toggle =       +group(alt_shift_toggle)
+  grp:alt_space_toggle =       +group(alt_space_toggle)
+  grp:menu_toggle      =       +group(menu_toggle)
+  grp:lwin_toggle      =       +group(lwin_toggle)
+  grp:rwin_toggle      =       +group(rwin_toggle)
+  grp:lshift_toggle    =       +group(lshift_toggle)
+  grp:rshift_toggle    =       +group(rshift_toggle)
+  grp:rctrl_switch     =       +group(rctrl_switch)
+  grp:lctrl_toggle     =       +group(lctrl_toggle)
+  grp:rctrl_toggle     =       +group(rctrl_toggle)
+  grp:lalt_toggle      =       +group(lalt_toggle)
+  grp:sclk_toggle      =       +group(sclk_toggle)
+  lv3:switch           =       +level3(switch)
+  lv3:ralt_switch      =       +level3(ralt_switch)
+  lv3:ralt_switch_multikey     =       +level3(ralt_switch_multikey)
+  lv3:ralt_alt         =       +level3(ralt_alt)
+  lv3:lalt_switch      =       +level3(lalt_switch)
+  lv3:alt_switch       =       +level3(alt_switch)
+  lv3:menu_switch      =       +level3(menu_switch)
+  lv3:win_switch       =       +level3(win_switch)
+  lv3:lwin_switch      =       +level3(lwin_switch)
+  lv3:rwin_switch      =       +level3(rwin_switch)
+  lv3:enter_switch     =       +level3(enter_switch)
+  caps:capslock                =       +capslock(capslock)
+  caps:shiftlock       =       +capslock(shiftlock)
+  caps:swapescape      =       +capslock(swapescape)
+  caps:escape          =       +capslock(escape)
+  caps:backspace       =       +capslock(backspace)
+  ctrl:nocaps          =       +ctrl(nocaps)
+  ctrl:swapcaps                =       +ctrl(swapcaps)
+  ctrl:ctrl_ac         =       +ctrl(ctrl_ac)
+  ctrl:ctrl_aa         =       +ctrl(ctrl_aa)
+  ctrl:ctrl_ra         =       +ctrl(ctrl_ra)
+  compose:ralt         =       +compose(ralt)
+  compose:lwin         =       +compose(lwin)
+  compose:rwin         =       +compose(rwin)
+  compose:menu         =       +compose(menu)
+  compose:rctrl                =       +compose(rctrl)
+  compose:caps         =       +compose(caps)
+  compose:102          =       +compose(102)
+  srvrkeys:none                =       +srvr_ctrl(no_srvr_keys)
+  eurosign:e           =       +eurosign(e)
+  eurosign:2           =       +eurosign(2)
+  eurosign:4           =       +eurosign(4)
+  eurosign:5           =       +eurosign(5)
+  keypad:oss            =       +keypad(oss)
+  keypad:legacy         =      +keypad(legacy)
+  keypad:legacy_wang    =      +keypad(legacy_wang)
+  keypad:oss_wang       =      +keypad(oss_wang)
+  keypad:future         =      +keypad(future)
+  keypad:future_wang    =      +keypad(future_wang)
+  keypad:hex            =      +keypad(ops)+keypad(hex)
+  keypad:atm            =      +keypad(ops)+keypad(hex)+keypad(atm)  
+  nbsp:none             =      +nbsp(none)
+  nbsp:level2           =      +nbsp(level2)
+  nbsp:level3           =      +nbsp(level3)
+  nbsp:level3s          =      +nbsp(level3s)
+  nbsp:level3n          =      +nbsp(level3n)
+  nbsp:level4           =      +nbsp(level4)
+  nbsp:level4n          =      +nbsp(level4n)
+  nbsp:level4nl         =      +nbsp(level4nl)
+  japan:nicola_f_bs     =      +jp(nicola_f_bs)
+  kpdl:dot              =      +kpdl(dot)
+  kpdl:comma            =      +kpdl(comma)
+  kpdl:dotoss           =      +kpdl(dotoss)
+  kpdl:dotoss_latin9    =      +kpdl(dotoss_latin9)
+  kpdl:commaoss         =      +kpdl(commaoss)
+  kpdl:momayyezoss      =      +kpdl(momayyezoss)
+  kpdl:kposs            =      +kpdl(kposs)
+  kpdl:semi             =      +kpdl(semi)
+  shift:breaks_caps     =      +shift(breaks_caps)
+  esperanto:qwerty      =      +epo(qwerty)
+  esperanto:dvorak      =      +epo(dvorak)
+  madduck:caps_mod4    =       +madduck(caps_mod4)
+  madduck:group2_intl  =       +madduck(group2_intl)
+
+
+! option       =       compat
+  grp_led:num          =       +lednum(group_lock)
+  grp_led:caps         =       +ledcaps(group_lock)
+  grp_led:scroll       =       +ledscroll(group_lock)
+  grp:caps_toggle      =       +ledcaps(group_lock)
+  japan:kana_lock      =       +japan(kana_lock)
+  caps:shiftlock       =       +ledcaps(shift_lock)
+
+
+! option       =       types
+  caps:internal                        =       +caps(internal)
+  caps:internal_nocancel       =       +caps(internal_nocancel)
+  caps:shift                   =       +caps(shift)
+  caps:shift_nocancel          =       +caps(shift_nocancel)
+  numpad:pc                    =       +numpad(pc)
+  numpad:mac                   =       +numpad(mac)
+  numpad:microsoft             =       +numpad(microsoft)
+  numpad:shift3                =       +numpad(shift3)
diff --git a/.xkb/rules/evdev.lst b/.xkb/rules/evdev.lst
new file mode 100644 (file)
index 0000000..9c1ef15
--- /dev/null
@@ -0,0 +1,717 @@
+! model
+  pc101           Generic 101-key PC
+  pc102           Generic 102-key (Intl) PC
+  pc104           Generic 104-key PC
+  pc105           Generic 105-key (Intl) PC
+  dell101         Dell 101-key PC
+  latitude        Dell Latitude series laptop
+  dellm65         Dell Precision M65
+  everex          Everex STEPnote
+  flexpro         Keytronic FlexPro
+  microsoft       Microsoft Natural
+  omnikey101      Northgate OmniKey 101
+  winbook         Winbook Model XP5
+  jp106           Japanese 106-key
+  pc98            PC-98xx Series
+  a4techKB21      A4Tech KB-21
+  a4techKBS8      A4Tech KBS-8
+  a4_rfkb23       A4Tech Wireless Desktop RFKB-23
+  abnt2           Brazilian ABNT2
+  airkey          Acer AirKey V
+  acpi            ACPI Standard
+  azonaRF2300     Azona RF2300 wireless Internet Keyboard
+  scorpius        Advance Scorpius KI
+  brother         Brother Internet Keyboard
+  btc5113rf       BTC 5113RF Multimedia
+  btc5126t        BTC 5126T
+  btc6301urf      BTC 6301URF
+  btc9000         BTC 9000
+  btc9000a        BTC 9000A
+  btc9001ah       BTC 9001AH
+  btc5090         BTC 5090
+  btc9019u        BTC 9019U
+  btc9116u        BTC 9116U Mini Wireless Internet and Gaming
+  cherryblue      Cherry Blue Line CyBo@rd
+  cherryblueb     Cherry CyMotion Master XPress
+  cherrybluea     Cherry Blue Line CyBo@rd (alternate option)
+  cherrycyboard   Cherry CyBo@rd USB-Hub
+  cherrycmexpert  Cherry CyMotion Expert
+  chicony         Chicony Internet Keyboard
+  chicony0108     Chicony KU-0108
+  chicony0420     Chicony KU-0420
+  chicony9885     Chicony KB-9885
+  compaqeak8      Compaq Easy Access Keyboard
+  compaqik7       Compaq Internet Keyboard (7 keys)
+  compaqik13      Compaq Internet Keyboard (13 keys)
+  compaqik18      Compaq Internet Keyboard (18 keys)
+  cymotionlinux   Cherry CyMotion Master Linux
+  armada          Laptop/notebook Compaq (eg. Armada) Laptop Keyboard
+  presario        Laptop/notebook Compaq (eg. Presario) Internet Keyboard
+  ipaq            Compaq iPaq Keyboard
+  dell            Dell
+  dellsk8125      Dell SK-8125
+  dellsk8135      Dell SK-8135
+  dellusbmm       Dell USB Multimedia Keyboard
+  inspiron        Dell Laptop/notebook Inspiron 6xxx/8xxx
+  precision_m     Dell Laptop/notebook Precision M series
+  dexxa           Dexxa Wireless Desktop Keyboard
+  diamond         Diamond 9801 / 9802 series
+  dtk2000         DTK2000
+  ennyah_dkb1008  Ennyah DKB-1008
+  fscaa1667g      Fujitsu-Siemens Computers AMILO laptop
+  genius          Genius Comfy KB-16M / Genius MM Keyboard KWD-910
+  geniuscomfy     Genius Comfy KB-12e
+  geniuscomfy2    Genius Comfy KB-21e-Scroll
+  geniuskb19e     Genius KB-19e NB
+  gyration        Gyration
+  logitech_base   Logitech Generic Keyboard
+  logitech_g15    Logitech G15 extra keys via G15daemon
+  hpi6            Hewlett-Packard Internet Keyboard
+  hp250x          Hewlett-Packard SK-250x Multimedia Keyboard
+  hpxe3gc         Hewlett-Packard Omnibook XE3 GC
+  hpxe3gf         Hewlett-Packard Omnibook XE3 GF
+  hpxt1000        Hewlett-Packard Omnibook XT1000
+  hpdv5           Hewlett-Packard Pavilion dv5
+  hpzt11xx        Hewlett-Packard Pavilion ZT11xx
+  hp500fa         Hewlett-Packard Omnibook 500 FA
+  hp5xx           Hewlett-Packard Omnibook 5xx
+  hpnx9020        Hewlett-Packard nx9020
+  hp6000          Hewlett-Packard Omnibook 6000/6100
+  honeywell_euroboard Honeywell Euroboard
+  rapidaccess     IBM Rapid Access
+  rapidaccess2    IBM Rapid Access II
+  thinkpad        IBM ThinkPad 560Z/600/600E/A22E
+  thinkpadintl    IBM ThinkPad 560Z/600/600E/A22E, Intl
+  thinkpad60      IBM ThinkPad R60/T60/R61/T61
+  thinkpadz60     IBM ThinkPad Z60m/Z60t/Z61m/Z61t
+  ibm_spacesaver  IBM Space Saver
+  logiaccess      Logitech Access Keyboard
+  logiclx300      Logitech Cordless Desktop LX-300
+  logii350        Logitech Internet 350 Keyboard
+  logimel         Logitech Media Elite Keyboard
+  logicd          Logitech Cordless Desktop
+  logicd_it       Logitech Cordless Desktop iTouch
+  logicd_nav      Logitech Cordless Desktop Navigator
+  logicd_opt      Logitech Cordless Desktop Optical
+  logicda         Logitech Cordless Desktop (alternate option)
+  logicdpa2       Logitech Cordless Desktop Pro (alternate option2)
+  logicfn         Logitech Cordless Freedom/Desktop Navigator
+  logicdn         Logitech Cordless Desktop Navigator
+  logiitc         Logitech iTouch Cordless Keyboard (model Y-RB6)
+  logiik          Logitech Internet Keyboard
+  itouch          Logitech iTouch
+  logicink        Logitech Internet Navigator Keyboard
+  logiex110       Logitech Cordless Desktop EX110
+  logiinkse       Logitech iTouch Internet Navigator Keyboard SE
+  logiinkseusb    Logitech iTouch Internet Navigator Keyboard SE (USB)
+  logiultrax      Logitech Ultra-X Keyboard
+  logiultraxc     Logitech Ultra-X Cordless Media Desktop Keyboard
+  logidinovo      Logitech diNovo Keyboard
+  logidinovoedge  Logitech diNovo Edge Keyboard
+  mx1998          Memorex MX1998
+  mx2500          Memorex MX2500 EZ-Access Keyboard
+  mx2750          Memorex MX2750
+  microsoft7000   Microsoft Natural Wireless Ergonomic Keyboard 7000
+  microsoftinet   Microsoft Internet Keyboard
+  microsoftpro    Microsoft Natural Keyboard Pro / Microsoft Internet Keyboard Pro
+  microsoftprousb Microsoft Natural Keyboard Pro USB / Microsoft Internet Keyboard Pro
+  microsoftprooem Microsoft Natural Keyboard Pro OEM
+  vsonku306       ViewSonic KU-306 Internet Keyboard
+  microsoftprose  Microsoft Internet Keyboard Pro, Swedish
+  microsoftoffice Microsoft Office Keyboard
+  microsoftmult   Microsoft Wireless Multimedia Keyboard 1.0A
+  microsoftelite  Microsoft Natural Keyboard Elite
+  microsoftccurve2k Microsoft Comfort Curve Keyboard 2000
+  oretec          Ortek MCK-800 MM/Internet keyboard
+  propeller       Propeller Voyager (KTEZ-1000)
+  qtronix         QTronix Scorpius 98N+
+  samsung4500     Samsung SDM 4500P
+  samsung4510     Samsung SDM 4510P
+  sk1300          SK-1300
+  sk2500          SK-2500
+  sk6200          SK-6200
+  sk7100          SK-7100
+  sp_inet         Super Power Multimedia Keyboard
+  sven            SVEN Ergonomic 2500
+  sven303         SVEN Slim 303
+  symplon         Symplon PaceBook (tablet PC)
+  toshiba_s3000   Toshiba Satellite S3000
+  trust           Trust Wireless Keyboard Classic
+  trustda         Trust Direct Access Keyboard
+  yahoo           Yahoo! Internet Keyboard
+  macbook78       MacBook/MacBook Pro
+  macbook79       MacBook/MacBook Pro (Intl)
+  macintosh       Macintosh
+  macintosh_old   Macintosh Old
+  macintosh_hhk   Happy Hacking Keyboard for Mac
+  acer_c300       Acer C300
+  acer_ferrari4k  Acer Ferrari 4000
+  acer_laptop     Acer Laptop
+  asus_laptop     Asus Laptop
+  apple           Apple
+  apple_laptop    Apple Laptop
+  silvercrest     SILVERCREST Multimedia Wireless Keyboard
+  emachines       Laptop/notebook eMachines m68xx
+  kr106           Korean 106-key
+  evdev           Evdev-managed keyboard
+  benqx           BenQ X-Touch
+  benqx730        BenQ X-Touch 730
+  benqx800        BenQ X-Touch 800
+  hhk             Happy Hacking Keyboard
+  classmate       Classmate PC
+  olpc            OLPC
+  sun6            Sun Type 5/6
+  targa_v811      Targa Visionary 811
+  unitekkb1925    Unitek KB-1925
+  compalfl90      FL90
+
+! layout
+  us              USA
+  ad              Andorra
+  af              Afghanistan
+  ara             Arabic
+  al              Albania
+  am              Armenia
+  az              Azerbaijan
+  by              Belarus
+  be              Belgium
+  bd              Bangladesh
+  in              India
+  ba              Bosnia and Herzegovina
+  br              Brazil
+  bg              Bulgaria
+  ma              Morocco
+  mm              Myanmar
+  ca              Canada
+  cd              Congo, Democratic Republic of the
+  cn              China
+  hr              Croatia
+  cz              Czechia
+  dk              Denmark
+  nl              Netherlands
+  bt              Bhutan
+  ee              Estonia
+  ir              Iran
+  iq              Iraq
+  fo              Faroe Islands
+  fi              Finland
+  fr              France
+  gh              Ghana
+  gn              Guinea
+  ge              Georgia
+  de              Germany
+  gr              Greece
+  hu              Hungary
+  is              Iceland
+  il              Israel
+  it              Italy
+  jp              Japan
+  kg              Kyrgyzstan
+  kh              Cambodia
+  kz              Kazakhstan
+  la              Laos
+  latam           Latin American
+  lt              Lithuania
+  lv              Latvia
+  mao             Maori
+  me              Montenegro
+  mk              Macedonia
+  mt              Malta
+  mn              Mongolia
+  no              Norway
+  pl              Poland
+  pt              Portugal
+  ro              Romania
+  ru              Russia
+  rs              Serbia
+  si              Slovenia
+  sk              Slovakia
+  es              Spain
+  se              Sweden
+  ch              Switzerland
+  sy              Syria
+  tj              Tajikistan
+  lk              Sri Lanka
+  th              Thailand
+  tr              Turkey
+  ua              Ukraine
+  gb              United Kingdom
+  uz              Uzbekistan
+  vn              Vietnam
+  kr              Korea, Republic of
+  nec_vndr/jp     Japan (PC-98xx Series)
+  ie              Ireland
+  pk              Pakistan
+  mv              Maldives
+  za              South Africa
+  epo             Esperanto
+  np              Nepal
+  ng              Nigeria
+  et              Ethiopia
+  braille         Braille
+
+! variant
+  chr             us: Cherokee
+  euro            us: With EuroSign on 5
+  intl            us: International (with dead keys)
+  alt-intl        us: Alternative international (former us_intl)
+  colemak         us: Colemak
+  dvorak          us: Dvorak
+  dvorak-intl     us: Dvorak international
+  dvorak-l        us: Left handed Dvorak
+  dvorak-r        us: Right handed Dvorak
+  dvorak-classic  us: Classic Dvorak
+  dvp             us: Programmer Dvorak
+  rus             us: Russian phonetic
+  mac             us: Macintosh
+  altgr-intl      us: International (AltGr dead keys)
+  olpc2           us: Group toggle on multiply/divide key
+  ps              af: Pashto
+  uz              af: Southern Uzbek
+  olpc-ps         af: OLPC Pashto
+  olpc-fa         af: OLPC Dari
+  olpc-uz         af: OLPC Southern Uzbek
+  azerty          ara: azerty
+  azerty_digits   ara: azerty/digits
+  digits          ara: digits
+  qwerty          ara: qwerty
+  qwerty_digits   ara: qwerty/digits
+  buckwalter      ara: Buckwalter
+  phonetic        am: Phonetic
+  phonetic-alt    am: Alternative Phonetic
+  eastern         am: Eastern
+  western         am: Western
+  eastern-alt     am: Alternative Eastern
+  cyrillic        az: Cyrillic
+  winkeys         by: Winkeys
+  latin           by: Latin
+  oss             be: Alternative
+  oss_latin9      be: Alternative, latin-9 only
+  oss_sundeadkeys be: Alternative, Sun dead keys
+  iso-alternate   be: ISO Alternate
+  nodeadkeys      be: Eliminate dead keys
+  sundeadkeys     be: Sun dead keys
+  wang            be: Wang model 724 azerty
+  probhat         bd: Probhat
+  ben             in: Bengali
+  ben_probhat     in: Bengali Probhat
+  guj             in: Gujarati
+  guru            in: Gurmukhi
+  jhelum          in: Gurmukhi Jhelum
+  kan             in: Kannada
+  mal             in: Malayalam
+  mal_lalitha     in: Malayalam Lalitha
+  ori             in: Oriya
+  tam_unicode     in: Tamil Unicode
+  tam_TAB         in: Tamil TAB Typewriter
+  tam_TSCII       in: Tamil TSCII Typewriter
+  tam             in: Tamil
+  tel             in: Telugu
+  urd-phonetic    in: Urdu, Phonetic
+  urd-phonetic3   in: Urdu, Alternative phonetic
+  urd-winkeys     in: Urdu, Winkeys
+  bolnagri        in: Hindi Bolnagri
+  alternatequotes ba: Use guillemets for quotes
+  unicode         ba: Use Bosnian digraphs
+  unicodeus       ba: US keyboard with Bosnian digraphs
+  us              ba: US keyboard with Bosnian letters
+  nodeadkeys      br: Eliminate dead keys
+  dvorak          br: Dvorak
+  nativo          br: Nativo
+  nativo-us       br: Nativo for USA keyboards
+  nativo-epo      br: Nativo for Esperanto
+  phonetic        bg: Phonetic
+  french          ma: French
+  tifinagh        ma: Tifinagh
+  tifinagh-alt    ma: Tifinagh Alternative
+  tifinagh-alt-phonetic ma: Tifinagh Alternative Phonetic
+  tifinagh-extended ma: Tifinagh Extended
+  tifinagh-phonetic ma: Tifinagh Phonetic
+  tifinagh-extended-phonetic ma: Tifinagh Extended Phonetic
+  fr-dvorak       ca: French Dvorak
+  fr-legacy       ca: French (legacy)
+  multix          ca: Multilingual
+  multi           ca: Multilingual, first part
+  multi-2gr       ca: Multilingual, second part
+  ike             ca: Inuktitut
+  shs             ca: Secwepemctsin
+  kut             ca: Ktunaxa
+  eng             ca: English
+  tib             cn: Tibetan
+  tib_asciinum    cn: Tibetan (with ASCII numerals)
+  alternatequotes hr: Use guillemets for quotes
+  unicode         hr: Use Croatian digraphs
+  unicodeus       hr: US keyboard with Croatian digraphs
+  us              hr: US keyboard with Croatian letters
+  bksl            cz: With &lt;\|&gt; key
+  qwerty          cz: qwerty
+  qwerty_bksl     cz: qwerty, extended Backslash
+  ucw             cz: UCW layout (accented letters only)
+  nodeadkeys      dk: Eliminate dead keys
+  mac             dk: Macintosh
+  mac_nodeadkeys  dk: Macintosh, eliminate dead keys
+  dvorak          dk: Dvorak
+  sundeadkeys     nl: Sun dead keys
+  mac             nl: Macintosh
+  std             nl: Standard
+  nodeadkeys      ee: Eliminate dead keys
+  dvorak          ee: Dvorak
+  us              ee: US keyboard with Estonian letters
+  pro             ir: Pro
+  keypad          ir: Keypad
+  pro_keypad      ir: Pro Keypad
+  ku              ir: Kurdish, Latin Q
+  ku_f            ir: Kurdish, (F)
+  ku_alt          ir: Kurdish, Latin Alt-Q
+  ku_ara          ir: Kurdish, Arabic-Latin
+  ku              iq: Kurdish, Latin Q
+  ku_f            iq: Kurdish, (F)
+  ku_alt          iq: Kurdish, Latin Alt-Q
+  ku_ara          iq: Kurdish, Arabic-Latin
+  nodeadkeys      fo: Eliminate dead keys
+  nodeadkeys      fi: Eliminate dead keys
+  smi             fi: Northern Saami
+  classic         fi: Classic
+  mac             fi: Macintosh
+  nodeadkeys      fr: Eliminate dead keys
+  sundeadkeys     fr: Sun dead keys
+  oss             fr: Alternative
+  oss_latin9      fr: Alternative, latin-9 only
+  oss_nodeadkeys  fr: Alternative, eliminate dead keys
+  oss_sundeadkeys fr: Alternative, Sun dead keys
+  latin9          fr: (Legacy) Alternative
+  latin9_nodeadkeys fr: (Legacy) Alternative, eliminate dead keys
+  latin9_sundeadkeys fr: (Legacy) Alternative, Sun dead keys
+  bepo            fr: Bepo, ergonomic, Dvorak way
+  bepo_latin9     fr: Bepo, ergonomic, Dvorak way, latin-9 only
+  dvorak          fr: Dvorak
+  mac             fr: Macintosh
+  bre             fr: Breton
+  geo             fr: Georgian AZERTY Tskapo
+  generic         gh: Multilingual
+  akan            gh: Akan
+  ewe             gh: Ewe
+  fula            gh: Fula
+  ga              gh: Ga
+  hausa           gh: Hausa
+  ergonomic       ge: Ergonomic
+  mess            ge: MESS
+  ru              ge: Russian
+  os              ge: Ossetian
+  deadacute       de: Dead acute
+  deadgraveacute  de: Dead grave acute
+  nodeadkeys      de: Eliminate dead keys
+  ro              de: Romanian keyboard with German letters
+  ro_nodeadkeys   de: Romanian keyboard with German letters, eliminate dead keys
+  dvorak          de: Dvorak
+  sundeadkeys     de: Sun dead keys
+  neo             de: Neo 2
+  mac             de: Macintosh
+  mac_nodeadkeys  de: Macintosh, eliminate dead keys
+  dsb             de: Lower Sorbian
+  dsb_qwertz      de: Lower Sorbian (qwertz)
+  qwerty          de: qwerty
+  simple          gr: Simple
+  extended        gr: Extended
+  nodeadkeys      gr: Eliminate dead keys
+  polytonic       gr: Polytonic
+  standard        hu: Standard
+  nodeadkeys      hu: Eliminate dead keys
+  qwerty          hu: qwerty
+  101_qwertz_comma_dead hu: 101/qwertz/comma/Dead keys
+  101_qwertz_comma_nodead hu: 101/qwertz/comma/Eliminate dead keys
+  101_qwertz_dot_dead hu: 101/qwertz/dot/Dead keys
+  101_qwertz_dot_nodead hu: 101/qwertz/dot/Eliminate dead keys
+  101_qwerty_comma_dead hu: 101/qwerty/comma/Dead keys
+  101_qwerty_comma_nodead hu: 101/qwerty/comma/Eliminate dead keys
+  101_qwerty_dot_dead hu: 101/qwerty/dot/Dead keys
+  101_qwerty_dot_nodead hu: 101/qwerty/dot/Eliminate dead keys
+  102_qwertz_comma_dead hu: 102/qwertz/comma/Dead keys
+  102_qwertz_comma_nodead hu: 102/qwertz/comma/Eliminate dead keys
+  102_qwertz_dot_dead hu: 102/qwertz/dot/Dead keys
+  102_qwertz_dot_nodead hu: 102/qwertz/dot/Eliminate dead keys
+  102_qwerty_comma_dead hu: 102/qwerty/comma/Dead keys
+  102_qwerty_comma_nodead hu: 102/qwerty/comma/Eliminate dead keys
+  102_qwerty_dot_dead hu: 102/qwerty/dot/Dead keys
+  102_qwerty_dot_nodead hu: 102/qwerty/dot/Eliminate dead keys
+  Sundeadkeys     is: Sun dead keys
+  nodeadkeys      is: Eliminate dead keys
+  mac             is: Macintosh
+  dvorak          is: Dvorak
+  lyx             il: lyx
+  phonetic        il: Phonetic
+  biblical        il: Biblical Hebrew (Tiro)
+  nodeadkeys      it: Eliminate dead keys
+  mac             it: Macintosh
+  geo             it: Georgian
+  kana            jp: Kana
+  OADG109A        jp: OADG 109A
+  ruskaz          kz: Russian with Kazakh
+  kazrus          kz: Kazakh with Russian
+  nodeadkeys      latam: Eliminate dead keys
+  deadtilde       latam: Include dead tilde
+  sundeadkeys     latam: Sun dead keys
+  std             lt: Standard
+  us              lt: US keyboard with Lithuanian letters
+  ibm             lt: IBM (LST 1205-92)
+  lekp            lt: LEKP
+  lekpa           lt: LEKPa
+  apostrophe      lv: Apostrophe (') variant
+  tilde           lv: Tilde (~) variant
+  fkey            lv: F-letter (F) variant
+  cyrillic        me: Cyrillic
+  cyrillicyz      me: Cyrillic, Z and ZHE swapped
+  latinunicode    me: Latin unicode
+  latinyz         me: Latin qwerty
+  latinunicodeyz  me: Latin unicode qwerty
+  cyrillicalternatequotes me: Cyrillic with guillemets
+  latinalternatequotes me: Latin with guillemets
+  nodeadkeys      mk: Eliminate dead keys
+  us              mt: Maltese keyboard with US layout
+  nodeadkeys      no: Eliminate dead keys
+  dvorak          no: Dvorak
+  smi             no: Northern Saami
+  smi_nodeadkeys  no: Northern Saami, eliminate dead keys
+  mac             no: Macintosh
+  mac_nodeadkeys  no: Macintosh, eliminate dead keys
+  qwertz          pl: qwertz
+  dvorak          pl: Dvorak
+  dvorak_quotes   pl: Dvorak, Polish quotes on quotemark key
+  dvorak_altquotes pl: Dvorak, Polish quotes on key "1/!"
+  csb             pl: Kashubian
+  ru_phonetic_dvorak pl: Russian phonetic Dvorak
+  nodeadkeys      pt: Eliminate dead keys
+  sundeadkeys     pt: Sun dead keys
+  mac             pt: Macintosh
+  mac_nodeadkeys  pt: Macintosh, eliminate dead keys
+  mac_sundeadkeys pt: Macintosh, Sun dead keys
+  nativo          pt: Nativo
+  nativo-us       pt: Nativo for USA keyboards
+  nativo-epo      pt: Nativo for Esperanto
+  cedilla         ro: Cedilla
+  std             ro: Standard
+  std_cedilla     ro: Standard (Cedilla)
+  winkeys         ro: Winkeys
+  phonetic        ru: Phonetic
+  typewriter      ru: Typewriter
+  legacy          ru: Legacy
+  tt              ru: Tatar
+  os_legacy       ru: Ossetian, legacy
+  os_winkeys      ru: Ossetian, Winkeys
+  cv              ru: Chuvash
+  cv_latin        ru: Chuvash Latin
+  udm             ru: Udmurt
+  kom             ru: Komi
+  sah             ru: Yakut
+  xal             ru: Kalmyk
+  yz              rs: Z and ZHE swapped
+  latin           rs: Latin
+  latinunicode    rs: Latin Unicode
+  latinyz         rs: Latin qwerty
+  latinunicodeyz  rs: Latin Unicode qwerty
+  alternatequotes rs: With guillemets
+  latinalternatequotes rs: Latin with guillemets
+  alternatequotes si: Use guillemets for quotes
+  unicode         si: Use Slovenian digraphs
+  unicodeus       si: US keyboard with Slovenian digraphs
+  us              si: US keyboard with Slovenian letters
+  bksl            sk: Extended Backslash
+  qwerty          sk: qwerty
+  qwerty_bksl     sk: qwerty, extended Backslash
+  nodeadkeys      es: Eliminate dead keys
+  deadtilde       es: Include dead tilde
+  sundeadkeys     es: Sun dead keys
+  dvorak          es: Dvorak
+  ast             es: Asturian variant with bottom-dot H and bottom-dot L
+  cat             es: Catalan variant with middle-dot L
+  mac             es: Macintosh
+  nodeadkeys      se: Eliminate dead keys
+  dvorak          se: Dvorak
+  rus             se: Russian phonetic
+  rus_nodeadkeys  se: Russian phonetic, eliminate dead keys
+  smi             se: Northern Saami
+  mac             se: Macintosh
+  svdvorak        se: Svdvorak
+  de_nodeadkeys   ch: German, eliminate dead keys
+  de_sundeadkeys  ch: German, Sun dead keys
+  fr              ch: French
+  fr_nodeadkeys   ch: French, eliminate dead keys
+  fr_sundeadkeys  ch: French, Sun dead keys
+  fr_mac          ch: French (Macintosh)
+  de_mac          ch: German (Macintosh)
+  syc             sy: Syriac
+  syc_phonetic    sy: Syriac phonetic
+  ku              sy: Kurdish, Latin Q
+  ku_f            sy: Kurdish, (F)
+  ku_alt          sy: Kurdish, Latin Alt-Q
+  legacy          tj: Legacy
+  tam_unicode     lk: Tamil Unicode
+  tam_TAB         lk: Tamil TAB Typewriter
+  tis             th: TIS-820.2538
+  pat             th: Pattachote
+  f               tr: (F)
+  alt             tr: Alt-Q
+  sundeadkeys     tr: Sun dead keys
+  ku              tr: Kurdish, Latin Q
+  ku_f            tr: Kurdish, (F)
+  ku_alt          tr: Kurdish, Latin Alt-Q
+  intl            tr: International (with dead keys)
+  phonetic        ua: Phonetic
+  typewriter      ua: Typewriter
+  winkeys         ua: Winkeys
+  unicode         ua: Unicode
+  rstu            ua: Standard RSTU
+  rstu_ru         ua: Standard RSTU on Russian layout
+  homophonic      ua: Homophonic
+  intl            gb: International (with dead keys)
+  dvorak          gb: Dvorak
+  dvorakukp       gb: Dvorak (UK Punctuation)
+  mac             gb: Macintosh
+  colemak         gb: Colemak
+  latin           uz: Latin
+  kr104           kr: 101/104 key Compatible
+  CloGaelach      ie: CloGaelach
+  UnicodeExpert   ie: UnicodeExpert
+  ogam            ie: Ogham
+  ogam_is434      ie: Ogham IS434
+  urd-crulp       pk: CRULP
+  urd-nla         pk: NLA
+  ara             pk: Arabic
+  legacy          epo: displaced semicolon and quote (obsolete)
+  igbo            ng: Igbo
+  yoruba          ng: Yoruba
+  hausa           ng: Hausa
+  left_hand       braille: Left hand
+  right_hand      braille: Right hand
+
+! option
+  grp                  Key(s) to change layout
+  grp:switch           Right Alt (while pressed)
+  grp:lswitch          Left Alt (while pressed)
+  grp:lwin_switch      Left Win (while pressed)
+  grp:rwin_switch      Right Win (while pressed)
+  grp:win_switch       Any Win key (while pressed)
+  grp:caps_switch      CapsLock (while pressed), Alt+CapsLock does the original capslock action
+  grp:rctrl_switch     Right Ctrl (while pressed)
+  grp:toggle           Right Alt
+  grp:lalt_toggle      Left Alt
+  grp:caps_toggle      CapsLock
+  grp:shift_caps_toggle Shift+CapsLock
+  grp:shift_caps_switch CapsLock (to first layout), Shift+CapsLock (to last layout)
+  grp:win_menu_switch  Left Win (to first layout), Right Win/Menu (to last layout)
+  grp:alt_caps_toggle  Alt+CapsLock
+  grp:shifts_toggle    Both Shift keys together
+  grp:alts_toggle      Both Alt keys together
+  grp:ctrls_toggle     Both Ctrl keys together
+  grp:ctrl_shift_toggle Ctrl+Shift
+  grp:lctrl_lshift_toggle Left Ctrl+Left Shift
+  grp:ctrl_alt_toggle  Alt+Ctrl
+  grp:alt_shift_toggle Alt+Shift
+  grp:alt_space_toggle Alt+Space
+  grp:menu_toggle      Menu
+  grp:lwin_toggle      Left Win
+  grp:rwin_toggle      Right Win
+  grp:lshift_toggle    Left Shift
+  grp:rshift_toggle    Right Shift
+  grp:lctrl_toggle     Left Ctrl
+  grp:rctrl_toggle     Right Ctrl
+  grp:sclk_toggle      Scroll Lock
+  lv3                  Key to choose 3rd level
+  lv3:switch           Right Ctrl
+  lv3:menu_switch      Menu
+  lv3:win_switch       Any Win key
+  lv3:lwin_switch      Left Win
+  lv3:rwin_switch      Right Win
+  lv3:alt_switch       Any Alt key
+  lv3:lalt_switch      Left Alt
+  lv3:ralt_switch      Right Alt
+  lv3:ralt_switch_multikey Right Alt, Shift+Right Alt key is Multi_Key
+  lv3:ralt_alt         Right Alt key never chooses 3rd level
+  lv3:enter_switch     Press Enter key on keypad to choose 3rd level.
+  ctrl                 Ctrl key position
+  ctrl:nocaps          Make CapsLock an additional Ctrl
+  ctrl:swapcaps        Swap Ctrl and CapsLock
+  ctrl:ctrl_ac         At left of 'A'
+  ctrl:ctrl_aa         At bottom left
+  ctrl:ctrl_ra         Right Ctrl as Right Alt
+  grp_led              Use keyboard LED to show alternative layout
+  grp_led:num          NumLock
+  grp_led:caps         CapsLock
+  grp_led:scroll       ScrollLock
+  keypad               Numeric keypad layout selection
+  keypad:legacy        Legacy
+  keypad:oss           Unicode additions (arrows and math operators)
+  keypad:future        Unicode additions (arrows and math operators). Math operators on default level
+  keypad:legacy_wang   Legacy Wang 724
+  keypad:oss_wang      Wang 724 keypad with unicode additions (arrows and math operators)
+  keypad:future_wang   Wang 724 keypad with unicode additions (arrows and math operators). Math operators on default level
+  keypad:hex           Hexadecimal
+  keypad:atm           ATM/phone-style
+  kpdl                 Numeric keypad delete key behaviour
+  kpdl:dot             Legacy key with dot
+  kpdl:comma           Legacy key with comma
+  kpdl:dotoss          Four-level key with dot
+  kpdl:dotoss_latin9   Four-level key with dot, latin-9 restriction
+  kpdl:commaoss        Four-level key with comma
+  kpdl:momayyezoss     Four-level key with momayyez
+  kpdl:kposs           Four-level key with abstract separators
+  kpdl:semi            Semi-colon on third level
+  caps                 CapsLock key behavior
+  caps:internal        CapsLock uses internal capitalization. Shift "pauses" CapsLock
+  caps:internal_nocancel CapsLock uses internal capitalization. Shift doesn't affect CapsLock
+  caps:shift           CapsLock acts as Shift with locking. Shift "pauses" CapsLock
+  caps:shift_nocancel  CapsLock acts as Shift with locking. Shift doesn't affect CapsLock
+  caps:capslock        CapsLock toggles normal capitalization of alphabetic characters
+  caps:swapescape      Swap ESC and CapsLock
+  caps:escape          Make CapsLock an additional ESC
+  caps:backspace       Make CapsLock an additional Backspace
+  caps:shiftlock       CapsLock toggles Shift so all keys are affected
+  altwin               Alt/Win key behavior
+  altwin:menu          Add the standard behavior to Menu key
+  altwin:meta_alt      Alt and Meta are on Alt keys
+  altwin:ctrl_win      Control is mapped to Win keys (and the usual Ctrl keys)
+  altwin:ctrl_alt_win  Control is mapped to Alt keys, Alt is mapped to Win keys
+  altwin:meta_win      Meta is mapped to Win keys
+  altwin:left_meta_win Meta is mapped to Left Win
+  altwin:super_win     Super is mapped to Win keys
+  altwin:hyper_win     Hyper is mapped to Win-keys
+  altwin:alt_super_win Alt is mapped to Right Win, Super to Menu
+  altwin:swap_lalt_lwin Left Alt is swapped with Left Win
+  Compose key          Compose key position
+  compose:ralt         Right Alt
+  compose:lwin         Left Win
+  compose:rwin         Right Win
+  compose:menu         Menu
+  compose:rctrl        Right Ctrl
+  compose:caps         Caps Lock
+  compose:102          Less-than/Greater-than
+  compat               Miscellaneous compatibility options
+  numpad:pc            Default numeric keypad keys
+  numpad:mac           Numeric keypad keys work as with Mac
+  numpad:microsoft     Shift with numeric keypad keys works as in MS Windows
+  numpad:shift3        Shift does not cancel NumLock, chooses 3d level instead
+  srvrkeys:none        Special keys (Ctrl+Alt+&lt;key&gt;) handled in a server
+  shift:breaks_caps    Shift cancels CapsLock
+  misc:typo            Enable extra typographic characters
+  eurosign             Adding EuroSign to certain keys
+  eurosign:e           E
+  eurosign:2           2
+  eurosign:4           4
+  eurosign:5           5
+  nbsp                 Using space key to input non-breakable space character
+  nbsp:none            Usual space at any level
+  nbsp:level2          Non-breakable space character at second level
+  nbsp:level3          Non-breakable space character at third level
+  nbsp:level3s         Non-breakable space character at third level, nothing at fourth level
+  nbsp:level3n         Non-breakable space character at third level, thin non-breakable space character at fourth level
+  nbsp:level4          Non-breakable space character at fourth level
+  nbsp:level4n         Non-breakable space character at fourth level, thin non-breakable space character at sixth level
+  nbsp:level4nl        Non-breakable space character at fourth level, thin non-breakable space character at sixth level (via Ctrl+Shift)
+  japan                Japanese keyboard options
+  japan:kana_lock      Kana Lock key is locking
+  japan:nicola_f_bs    NICOLA-F style Backspace
+  esperanto            Adding Esperanto circumflexes (supersigno)
+  esperanto:qwerty     To the corresponding key in a Qwerty keyboard.
+  esperanto:dvorak     To the corresponding key in a Dvorak keyboard.
+  madduck:caps_mod4    make caps lock key generate mod4
+  madduck:group2_intl  populate group2 with international and other symbols
diff --git a/.xkb/symbols/madduck b/.xkb/symbols/madduck
new file mode 100644 (file)
index 0000000..b18628f
--- /dev/null
@@ -0,0 +1,185 @@
+// default_switch: set up windows keys for mode switching and the menu keys
+// to generate mod3
+partial modifier_keys
+xkb_symbols "default_switch" {
+  include "group(win_switch)"
+  replace key <MENU> {
+    [ Super_L, Super_R ]
+  };
+  modifier_map Mod3 { <MENU> };
+};
+
+// thinkpad_switch: on thinkpads, use the right control and alt keys as
+// substitute for the missing menu and windows keys
+partial modifier_keys
+xkb_symbols "thinkpad_switch" {
+  include "group(switch)"
+  replace key <RCTL> {
+    [ Super_L, Super_R ]
+  };
+  modifier_map Mod3 { <RCTL> };
+};
+
+// caps_mod4: make capslock generate the mod4 modifier
+partial modifier_keys
+xkb_symbols "caps_mod4" {
+  replace key <CAPS> {
+    [ Hyper_L, Hyper_R ]
+  };
+  modifier_map Mod4 { <CAPS> };
+};
+
+// group2_intl: my group2 map of international and other symbols
+partial modifier_keys alphanumeric_keys
+xkb_symbols "group2_intl" {
+  key <TLDE> {
+    symbols[Group2] = [ degree, infinity ]
+  };
+  key <AE01> {
+    symbols[Group2] = [ onequarter, oneeighth ]
+  };
+  key <AE02> {
+    symbols[Group2] = [ twosuperior, onehalf ]
+  };
+  key <AE03> {
+    symbols[Group2] = [ threesuperior, threequarters ]
+  };
+  key <AE04> {
+    symbols[Group2] = [ eacute, Eacute ]
+  };
+  key <AE05> {
+    symbols[Group2] = [ EuroSign, cent ]
+  };
+  key <AE06> {
+    symbols[Group2] = [ copyright, trademark ]
+  };
+  key <AE07> {
+    symbols[Group2] = [ yacute, Yacute ]
+  };
+  key <AE08> {
+    symbols[Group2] = [ uacute, Uacute ]
+  };
+  key <AE09> {
+    symbols[Group2] = [ iacute, Iacute ]
+  };
+  key <AE10> {
+    symbols[Group2] = [ oacute, Oacute ]
+  };
+  key <AE11> {
+    symbols[Group2] = [ endash, emdash ]
+  };
+  key <AE12> {
+    symbols[Group2] = [ approximate, plusminus ]
+  };
+  key <BKSP> {
+    symbols[Group2] = [ BackSpace, BackSpace ]
+  };
+  key <TAB> {
+    symbols[Group2] = [ Tab, Tab ]
+  };
+  key <AD01> {
+    symbols[Group2] = [ acircumflex, Acircumflex ]
+  };
+  key <AD02> {
+    symbols[Group2] = [ aacute, Aacute ]
+  };
+  key <AD03> {
+    symbols[Group2] = [ ediaeresis, Ediaeresis ]
+  };
+  key <AD04> {
+    symbols[Group2] = [ ecircumflex, Ecircumflex ]
+  };
+  key <AD05> {
+    symbols[Group2] = [ icircumflex, Icircumflex ]
+  };
+  key <AD06> {
+    symbols[Group2] = [ ydiaeresis, Ydiaeresis ]
+  };
+  key <AD07> {
+    symbols[Group2] = [ udiaeresis, Udiaeresis ]
+  };
+  key <AD08> {
+    symbols[Group2] = [ idiaeresis, Idiaeresis ]
+  };
+  key <AD09> {
+    symbols[Group2] = [ odiaeresis, Odiaeresis ]
+  };
+  key <AD10> {
+    symbols[Group2] = [ ocircumflex, Ocircumflex ]
+  };
+  key <AD11> {
+    symbols[Group2] = [ ae, AE ]
+  };
+  key <AD12> {
+    symbols[Group2] = [ oslash, Oslash ]
+  };
+  key <BKSL> {
+    symbols[Group2] = [ aring, Aring ]
+  };
+  key <AC01> {
+    symbols[Group2] = [ adiaeresis, Adiaeresis ]
+  };
+  key <AC02> {
+    symbols[Group2] = [ ssharp, section ]
+  };
+  key <AC03> {
+    symbols[Group2] = [ egrave, Egrave ]
+  };
+  key <AC04> {
+    symbols[Group2] = [ eth, Eth ]
+  };
+  key <AC05> {
+    symbols[Group2] = [ thorn, Thorn ]
+  };
+  key <AC06> {
+    symbols[Group2] = [ ucircumflex, Ucircumflex ]
+  };
+  key <AC07> {
+    symbols[Group2] = [ ugrave, Ugrave ]
+  };
+  key <AC08> {
+    symbols[Group2] = [ igrave, Igrave ]
+  };
+  key <AC09> {
+    symbols[Group2] = [ ograve, Ograve ]
+  };
+  key <AC10> {
+    symbols[Group2] = [ leftdoublequotemark, leftarrow ]
+  };
+  key <AC11> {
+    symbols[Group2] = [ rightdoublequotemark, rightarrow ]
+  };
+  key <RTRN> {
+    symbols[Group2] = [ Return, Return ]
+  };
+  key <AB01> {
+    symbols[Group2] = [ agrave, Agrave ]
+  };
+  key <AB02> {
+    symbols[Group2] = [ multiply, division ]
+  };
+  key <AB03> {
+    symbols[Group2] = [ ccedilla, Ccedilla ]
+  };
+  key <AB04> {
+    symbols[Group2] = [ atilde, Atilde ]
+  };
+  key <AB05> {
+    symbols[Group2] = [ otilde, Otilde ]
+  };
+  key <AB06> {
+    symbols[Group2] = [ ntilde, Ntilde ]
+  };
+  key <AB07> {
+    symbols[Group2] = [ mu, heart ]
+  };
+  key <AB08> {
+    symbols[Group2] = [ notsign, guillemotleft ]
+  };
+  key <AB09> {
+    symbols[Group2] = [ ellipsis, guillemotright ]
+  };
+  key <AB10> {
+    symbols[Group2] = [ exclamdown, questiondown ]
+  };
+};
index 7ff8667..1569982 100644 (file)
@@ -1,5 +1,41 @@
 # load the keyboard definitions
-# DISABLED in favour of 01-xmodmap for now, until
-# http://lists.freedesktop.org/archives/xorg/2008-June/036340.html
-# is answered
-#xkbcomp $HOME/.xkb ${DISPLAY%%.*}
+
+LAYOUT=us
+OPTS=(madduck:group2_intl madduck:caps_mod4)
+
+is_thinkpad() {
+  case "${(%):-%m}" in
+    lapse) return 0;;
+    *) return 1;;
+  esac
+}
+
+load_keymap() {
+  local xkbdir; xkbdir=$HOME/.xkb
+  local model; model="$1"; shift
+  local layout; layout="$1"; shift
+
+  local args; args="-I -I$xkbdir -model $model -layout $layout -option"
+  args="$args -option ${(j: -option :)@}"
+
+  info "running setxkbmap with args: $args"
+  local tmpfile; tmpfile="$(tempfile -p kbmap)"
+  trap "rm -f $tmpfile" EXIT
+  eval setxkbmap $args -print >| "$tmpfile"
+  info keymap setting follows:
+  cat "$tmpfile" >&2
+  xkbcomp -I$HOME/.xkb "$tmpfile" ${DISPLAY%%.*}
+}
+
+if is_thinkpad; then
+  info "loading keymap for thinkpad…"
+  load_keymap thinkpad us ${(z)OPTS}
+else
+  info "loading pc104 keymap…"
+  load_keymap pc104 us ${(z)OPTS}
+fi
+
+unset OPTS
+unset LAYOUT
+
+# vim:ft=zsh