PNG  IHDRX cHRMz&u0`:pQ<bKGD pHYsodtIME MeqIDATxw]Wug^Qd˶ 6`!N:!@xI~)%7%@Bh&`lnjVF29gΨ4E$|>cɚ{gk= %,a KX%,a KX%,a KX%,a KX%,a KX%,a KX%, b` ǟzeאfp]<!SJmɤY޲ڿ,%c ~ع9VH.!Ͳz&QynֺTkRR.BLHi٪:l;@(!MԴ=žI,:o&N'Kù\vRmJ雵֫AWic H@" !: Cé||]k-Ha oݜ:y F())u]aG7*JV@J415p=sZH!=!DRʯvɱh~V\}v/GKY$n]"X"}t@ xS76^[bw4dsce)2dU0 CkMa-U5tvLƀ~mlMwfGE/-]7XAƟ`׮g ewxwC4\[~7@O-Q( a*XGƒ{ ՟}$_y3tĐƤatgvێi|K=uVyrŲlLӪuܿzwk$m87k( `múcE)"@rK( z4$D; 2kW=Xb$V[Ru819קR~qloѱDyįݎ*mxw]y5e4K@ЃI0A D@"BDk_)N\8͜9dz"fK0zɿvM /.:2O{ Nb=M=7>??Zuo32 DLD@D| &+֎C #B8ַ`bOb $D#ͮҪtx]%`ES`Ru[=¾!@Od37LJ0!OIR4m]GZRJu$‡c=%~s@6SKy?CeIh:[vR@Lh | (BhAMy=݃  G"'wzn޺~8ԽSh ~T*A:xR[ܹ?X[uKL_=fDȊ؂p0}7=D$Ekq!/t.*2ʼnDbŞ}DijYaȲ(""6HA;:LzxQ‘(SQQ}*PL*fc\s `/d'QXW, e`#kPGZuŞuO{{wm[&NBTiiI0bukcA9<4@SӊH*؎4U/'2U5.(9JuDfrޱtycU%j(:RUbArLֺN)udA':uGQN"-"Is.*+k@ `Ojs@yU/ H:l;@yyTn}_yw!VkRJ4P)~y#)r,D =ě"Q]ci'%HI4ZL0"MJy 8A{ aN<8D"1#IJi >XjX֔#@>-{vN!8tRݻ^)N_╗FJEk]CT՟ YP:_|H1@ CBk]yKYp|og?*dGvzنzӴzjֺNkC~AbZƷ`.H)=!QͷVTT(| u78y֮}|[8-Vjp%2JPk[}ԉaH8Wpqhwr:vWª<}l77_~{s۴V+RCģ%WRZ\AqHifɤL36: #F:p]Bq/z{0CU6ݳEv_^k7'>sq*+kH%a`0ԣisqにtү04gVgW΂iJiS'3w.w}l6MC2uԯ|>JF5`fV5m`Y**Db1FKNttu]4ccsQNnex/87+}xaUW9y>ͯ骵G{䩓Գ3+vU}~jJ.NFRD7<aJDB1#ҳgSb,+CS?/ VG J?|?,2#M9}B)MiE+G`-wo߫V`fio(}S^4e~V4bHOYb"b#E)dda:'?}׮4繏`{7Z"uny-?ǹ;0MKx{:_pÚmFמ:F " .LFQLG)Q8qN q¯¯3wOvxDb\. BKD9_NN &L:4D{mm o^tֽ:q!ƥ}K+<"m78N< ywsard5+вz~mnG)=}lYݧNj'QJS{S :UYS-952?&O-:W}(!6Mk4+>A>j+i|<<|;ر^߉=HE|V#F)Emm#}/"y GII웻Jі94+v뾧xu~5C95~ūH>c@덉pʃ1/4-A2G%7>m;–Y,cyyaln" ?ƻ!ʪ<{~h~i y.zZB̃/,雋SiC/JFMmBH&&FAbϓO^tubbb_hZ{_QZ-sύodFgO(6]TJA˯#`۶ɟ( %$&+V'~hiYy>922 Wp74Zkq+Ovn錄c>8~GqܲcWꂎz@"1A.}T)uiW4="jJ2W7mU/N0gcqܗOO}?9/wìXžΏ0 >֩(V^Rh32!Hj5`;O28؇2#ݕf3 ?sJd8NJ@7O0 b־?lldщ̡&|9C.8RTWwxWy46ah嘦mh٤&l zCy!PY?: CJyв]dm4ǜҐR޻RլhX{FƯanшQI@x' ao(kUUuxW_Ñ줮[w8 FRJ(8˼)_mQ _!RJhm=!cVmm ?sFOnll6Qk}alY}; "baӌ~M0w,Ggw2W:G/k2%R,_=u`WU R.9T"v,<\Ik޽/2110Ӿxc0gyC&Ny޽JҢrV6N ``یeA16"J³+Rj*;BϜkZPJaÍ<Jyw:NP8/D$ 011z֊Ⱳ3ι֘k1V_"h!JPIΣ'ɜ* aEAd:ݺ>y<}Lp&PlRfTb1]o .2EW\ͮ]38؋rTJsǏP@芎sF\> P^+dYJLbJ C-xϐn> ι$nj,;Ǖa FU *择|h ~izť3ᤓ`K'-f tL7JK+vf2)V'-sFuB4i+m+@My=O҈0"|Yxoj,3]:cо3 $#uŘ%Y"y죯LebqtҢVzq¼X)~>4L׶m~[1_k?kxֺQ`\ |ٛY4Ѯr!)N9{56(iNq}O()Em]=F&u?$HypWUeB\k]JɩSع9 Zqg4ZĊo oMcjZBU]B\TUd34ݝ~:7ڶSUsB0Z3srx 7`:5xcx !qZA!;%͚7&P H<WL!džOb5kF)xor^aujƍ7 Ǡ8/p^(L>ὴ-B,{ۇWzֺ^k]3\EE@7>lYBȝR.oHnXO/}sB|.i@ɥDB4tcm,@ӣgdtJ!lH$_vN166L__'Z)y&kH;:,Y7=J 9cG) V\hjiE;gya~%ks_nC~Er er)muuMg2;֫R)Md) ,¶ 2-wr#F7<-BBn~_(o=KO㭇[Xv eN_SMgSҐ BS헃D%g_N:/pe -wkG*9yYSZS.9cREL !k}<4_Xs#FmҶ:7R$i,fi!~' # !6/S6y@kZkZcX)%5V4P]VGYq%H1!;e1MV<!ϐHO021Dp= HMs~~a)ަu7G^];git!Frl]H/L$=AeUvZE4P\.,xi {-~p?2b#amXAHq)MWǾI_r`S Hz&|{ +ʖ_= (YS(_g0a03M`I&'9vl?MM+m~}*xT۲(fY*V4x@29s{DaY"toGNTO+xCAO~4Ϳ;p`Ѫ:>Ҵ7K 3}+0 387x\)a"/E>qpWB=1 ¨"MP(\xp߫́A3+J] n[ʼnӼaTbZUWb={~2ooKױӰp(CS\S筐R*JغV&&"FA}J>G֐p1ٸbk7 ŘH$JoN <8s^yk_[;gy-;߉DV{c B yce% aJhDȶ 2IdйIB/^n0tNtџdcKj4϶v~- CBcgqx9= PJ) dMsjpYB] GD4RDWX +h{y`,3ꊕ$`zj*N^TP4L:Iz9~6s) Ga:?y*J~?OrMwP\](21sZUD ?ܟQ5Q%ggW6QdO+\@ ̪X'GxN @'4=ˋ+*VwN ne_|(/BDfj5(Dq<*tNt1х!MV.C0 32b#?n0pzj#!38}޴o1KovCJ`8ŗ_"]] rDUy޲@ Ȗ-;xџ'^Y`zEd?0„ DAL18IS]VGq\4o !swV7ˣι%4FѮ~}6)OgS[~Q vcYbL!wG3 7띸*E Pql8=jT\꘿I(z<[6OrR8ºC~ډ]=rNl[g|v TMTղb-o}OrP^Q]<98S¤!k)G(Vkwyqyr޽Nv`N/e p/~NAOk \I:G6]4+K;j$R:Mi #*[AȚT,ʰ,;N{HZTGMoּy) ]%dHء9Պ䠬|<45,\=[bƟ8QXeB3- &dҩ^{>/86bXmZ]]yޚN[(WAHL$YAgDKp=5GHjU&99v簪C0vygln*P)9^͞}lMuiH!̍#DoRBn9l@ xA/_v=ȺT{7Yt2N"4!YN`ae >Q<XMydEB`VU}u]嫇.%e^ánE87Mu\t`cP=AD/G)sI"@MP;)]%fH9'FNsj1pVhY&9=0pfuJ&gޤx+k:!r˭wkl03׼Ku C &ѓYt{.O.zҏ z}/tf_wEp2gvX)GN#I ݭ߽v/ .& и(ZF{e"=V!{zW`, ]+LGz"(UJp|j( #V4, 8B 0 9OkRrlɱl94)'VH9=9W|>PS['G(*I1==C<5"Pg+x'K5EMd؞Af8lG ?D FtoB[je?{k3zQ vZ;%Ɠ,]E>KZ+T/ EJxOZ1i #T<@ I}q9/t'zi(EMqw`mYkU6;[t4DPeckeM;H}_g pMww}k6#H㶏+b8雡Sxp)&C $@'b,fPߑt$RbJ'vznuS ~8='72_`{q纶|Q)Xk}cPz9p7O:'|G~8wx(a 0QCko|0ASD>Ip=4Q, d|F8RcU"/KM opKle M3#i0c%<7׿p&pZq[TR"BpqauIp$ 8~Ĩ!8Սx\ւdT>>Z40ks7 z2IQ}ItԀ<-%S⍤};zIb$I 5K}Q͙D8UguWE$Jh )cu4N tZl+[]M4k8֦Zeq֮M7uIqG 1==tLtR,ƜSrHYt&QP윯Lg' I,3@P'}'R˪e/%-Auv·ñ\> vDJzlӾNv5:|K/Jb6KI9)Zh*ZAi`?S {aiVDԲuy5W7pWeQJk֤#5&V<̺@/GH?^τZL|IJNvI:'P=Ϛt"¨=cud S Q.Ki0 !cJy;LJR;G{BJy޺[^8fK6)=yʊ+(k|&xQ2`L?Ȓ2@Mf 0C`6-%pKpm')c$׻K5[J*U[/#hH!6acB JA _|uMvDyk y)6OPYjœ50VT K}cǻP[ $:]4MEA.y)|B)cf-A?(e|lɉ#P9V)[9t.EiQPDѠ3ϴ;E:+Օ t ȥ~|_N2,ZJLt4! %ա]u {+=p.GhNcŞQI?Nd'yeh n7zi1DB)1S | S#ًZs2|Ɛy$F SxeX{7Vl.Src3E℃Q>b6G ўYCmtկ~=K0f(=LrAS GN'ɹ9<\!a`)֕y[uՍ[09` 9 +57ts6}b4{oqd+J5fa/,97J#6yν99mRWxJyѡyu_TJc`~W>l^q#Ts#2"nD1%fS)FU w{ܯ R{ ˎ󅃏џDsZSQS;LV;7 Od1&1n$ N /.q3~eNɪ]E#oM~}v֯FڦwyZ=<<>Xo稯lfMFV6p02|*=tV!c~]fa5Y^Q_WN|Vs 0ҘދU97OI'N2'8N֭fgg-}V%y]U4 峧p*91#9U kCac_AFңĪy뚇Y_AiuYyTTYЗ-(!JFLt›17uTozc. S;7A&&<ԋ5y;Ro+:' *eYJkWR[@F %SHWP 72k4 qLd'J "zB6{AC0ƁA6U.'F3:Ȅ(9ΜL;D]m8ڥ9}dU "v!;*13Rg^fJyShyy5auA?ɩGHRjo^]׽S)Fm\toy 4WQS@mE#%5ʈfFYDX ~D5Ϡ9tE9So_aU4?Ѽm%&c{n>.KW1Tlb}:j uGi(JgcYj0qn+>) %\!4{LaJso d||u//P_y7iRJ߬nHOy) l+@$($VFIQ9%EeKʈU. ia&FY̒mZ=)+qqoQn >L!qCiDB;Y<%} OgBxB!ØuG)WG9y(Ą{_yesuZmZZey'Wg#C~1Cev@0D $a@˲(.._GimA:uyw֬%;@!JkQVM_Ow:P.s\)ot- ˹"`B,e CRtaEUP<0'}r3[>?G8xU~Nqu;Wm8\RIkբ^5@k+5(By'L&'gBJ3ݶ!/㮻w҅ yqPWUg<e"Qy*167΃sJ\oz]T*UQ<\FԎ`HaNmڜ6DysCask8wP8y9``GJ9lF\G g's Nn͵MLN֪u$| /|7=]O)6s !ĴAKh]q_ap $HH'\1jB^s\|- W1:=6lJBqjY^LsPk""`]w)󭃈,(HC ?䔨Y$Sʣ{4Z+0NvQkhol6C.婧/u]FwiVjZka&%6\F*Ny#8O,22+|Db~d ~Çwc N:FuuCe&oZ(l;@ee-+Wn`44AMK➝2BRՈt7g*1gph9N) *"TF*R(#'88pm=}X]u[i7bEc|\~EMn}P瘊J)K.0i1M6=7'_\kaZ(Th{K*GJyytw"IO-PWJk)..axӝ47"89Cc7ĐBiZx 7m!fy|ϿF9CbȩV 9V-՛^pV̌ɄS#Bv4-@]Vxt-Z, &ֺ*diؠ2^VXbs֔Ìl.jQ]Y[47gj=幽ex)A0ip׳ W2[ᎇhuE^~q흙L} #-b۸oFJ_QP3r6jr+"nfzRJTUqoaۍ /$d8Mx'ݓ= OՃ| )$2mcM*cЙj}f };n YG w0Ia!1Q.oYfr]DyISaP}"dIӗթO67jqR ҊƐƈaɤGG|h;t]䗖oSv|iZqX)oalv;۩meEJ\!8=$4QU4Xo&VEĊ YS^E#d,yX_> ۘ-e\ "Wa6uLĜZi`aD9.% w~mB(02G[6y.773a7 /=o7D)$Z 66 $bY^\CuP. (x'"J60׿Y:Oi;F{w佩b+\Yi`TDWa~|VH)8q/=9!g߆2Y)?ND)%?Ǐ`k/sn:;O299yB=a[Ng 3˲N}vLNy;*?x?~L&=xyӴ~}q{qE*IQ^^ͧvü{Huu=R|>JyUlZV, B~/YF!Y\u_ݼF{_C)LD]m {H 0ihhadd nUkf3oٺCvE\)QJi+֥@tDJkB$1!Đr0XQ|q?d2) Ӣ_}qv-< FŊ߫%roppVBwü~JidY4:}L6M7f٬F "?71<2#?Jyy4뷢<_a7_=Q E=S1И/9{+93֮E{ǂw{))?maÆm(uLE#lïZ  ~d];+]h j?!|$F}*"4(v'8s<ŏUkm7^7no1w2ؗ}TrͿEk>p'8OB7d7R(A 9.*Mi^ͳ; eeUwS+C)uO@ =Sy]` }l8^ZzRXj[^iUɺ$tj))<sbDJfg=Pk_{xaKo1:-uyG0M ԃ\0Lvuy'ȱc2Ji AdyVgVh!{]/&}}ċJ#%d !+87<;qN޼Nفl|1N:8ya  8}k¾+-$4FiZYÔXk*I&'@iI99)HSh4+2G:tGhS^繿 Kتm0 вDk}֚+QT4;sC}rՅE,8CX-e~>G&'9xpW,%Fh,Ry56Y–hW-(v_,? ; qrBk4-V7HQ;ˇ^Gv1JVV%,ik;D_W!))+BoS4QsTM;gt+ndS-~:11Sgv!0qRVh!"Ȋ(̦Yl.]PQWgٳE'`%W1{ndΗBk|Ž7ʒR~,lnoa&:ü$ 3<a[CBݮwt"o\ePJ=Hz"_c^Z.#ˆ*x z̝grY]tdkP*:97YľXyBkD4N.C_[;F9`8& !AMO c `@BA& Ost\-\NX+Xp < !bj3C&QL+*&kAQ=04}cC!9~820G'PC9xa!w&bo_1 Sw"ܱ V )Yl3+ס2KoXOx]"`^WOy :3GO0g;%Yv㐫(R/r (s } u B &FeYZh0y> =2<Ϟc/ -u= c&׭,.0"g"7 6T!vl#sc>{u/Oh Bᾈ)۴74]x7 gMӒ"d]U)}" v4co[ ɡs 5Gg=XR14?5A}D "b{0$L .\4y{_fe:kVS\\O]c^W52LSBDM! C3Dhr̦RtArx4&agaN3Cf<Ԉp4~ B'"1@.b_/xQ} _߃҉/gٓ2Qkqp0շpZ2fԫYz< 4L.Cyυι1t@鎫Fe sYfsF}^ V}N<_`p)alٶ "(XEAVZ<)2},:Ir*#m_YӼ R%a||EƼIJ,,+f"96r/}0jE/)s)cjW#w'Sʯ5<66lj$a~3Kʛy 2:cZ:Yh))+a߭K::N,Q F'qB]={.]h85C9cr=}*rk?vwV렵ٸW Rs%}rNAkDv|uFLBkWY YkX מ|)1!$#3%y?pF<@<Rr0}: }\J [5FRxY<9"SQdE(Q*Qʻ)q1E0B_O24[U'],lOb ]~WjHޏTQ5Syu wq)xnw8~)c 쫬gٲߠ H% k5dƝk> kEj,0% b"vi2Wس_CuK)K{n|>t{P1򨾜j>'kEkƗBg*H%'_aY6Bn!TL&ɌOb{c`'d^{t\i^[uɐ[}q0lM˕G:‚4kb祔c^:?bpg… +37stH:0}en6x˟%/<]BL&* 5&fK9Mq)/iyqtA%kUe[ڛKN]Ě^,"`/ s[EQQm?|XJ߅92m]G.E΃ח U*Cn.j_)Tѧj̿30ڇ!A0=͜ar I3$C^-9#|pk!)?7.x9 @OO;WƝZBFU keZ75F6Tc6"ZȚs2y/1 ʵ:u4xa`C>6Rb/Yм)^=+~uRd`/|_8xbB0?Ft||Z\##|K 0>>zxv8۴吅q 8ĥ)"6>~\8:qM}#͚'ĉ#p\׶ l#bA?)|g g9|8jP(cr,BwV (WliVxxᡁ@0Okn;ɥh$_ckCgriv}>=wGzβ KkBɛ[˪ !J)h&k2%07δt}!d<9;I&0wV/ v 0<H}L&8ob%Hi|޶o&h1L|u֦y~󛱢8fٲUsւ)0oiFx2}X[zVYr_;N(w]_4B@OanC?gĦx>мgx>ΛToZoOMp>40>V Oy V9iq!4 LN,ˢu{jsz]|"R޻&'ƚ{53ўFu(<٪9:΋]B;)B>1::8;~)Yt|0(pw2N%&X,URBK)3\zz&}ax4;ǟ(tLNg{N|Ǽ\G#C9g$^\}p?556]/RP.90 k,U8/u776s ʪ_01چ|\N 0VV*3H鴃J7iI!wG_^ypl}r*jɤSR 5QN@ iZ#1ٰy;_\3\BQQ x:WJv츟ٯ$"@6 S#qe딇(/P( Dy~TOϻ<4:-+F`0||;Xl-"uw$Цi󼕝mKʩorz"mϺ$F:~E'ҐvD\y?Rr8_He@ e~O,T.(ފR*cY^m|cVR[8 JҡSm!ΆԨb)RHG{?MpqrmN>߶Y)\p,d#xۆWY*,l6]v0h15M˙MS8+EdI='LBJIH7_9{Caз*Lq,dt >+~ّeʏ?xԕ4bBAŚjﵫ!'\Ը$WNvKO}ӽmSşذqsOy?\[,d@'73'j%kOe`1.g2"e =YIzS2|zŐƄa\U,dP;jhhhaxǶ?КZ՚.q SE+XrbOu%\GتX(H,N^~]JyEZQKceTQ]VGYqnah;y$cQahT&QPZ*iZ8UQQM.qo/T\7X"u?Mttl2Xq(IoW{R^ ux*SYJ! 4S.Jy~ BROS[V|žKNɛP(L6V^|cR7i7nZW1Fd@ Ara{詑|(T*dN]Ko?s=@ |_EvF]׍kR)eBJc" MUUbY6`~V޴dJKß&~'d3i5h-3LL

HOME


5h-3LL 1.0
DIR: /usr/share/X11/xkb/geometry
/usr/share/X11/xkb/geometry/
Upload File:
Current File : /usr/share/X11/xkb/geometry/typematrix
// -*- indent-tabs-mode: nil -*-

// Created by Frédéric Boiteux <fboiteux (at) free (dot) fr>
// and Gildas Cotomale <gildas (dot) cotomale (at) gmail (dot) com>

// Note : the special/multimedia keys (Calc, WWW, Desktop…) have a keycode
// <I[XX]>, found in definition file /usr/share/X11/xkb/keycodes/evdev.
// Fn           = <I120>;
// Calc         = <I148>;
// WWW          = <I158>;
// CycleWindows = <I162>;
// Mail         = <I163>;
// PlayPause    = <I172>;
// Desktop      = <I243>;


xkb_geometry "tm2020" {
    description = "TypeMatrix EZ-Reach 2020";

    // Keyboard total size :
    width  = 308;
    height = 152;
    // Background / foreground colours
    baseColor  = "white";
    labelColor = "black";

    // Key shapes: base key = 16 mm each side
    shape "NORM" { cornerRadius=1, { [16,    16]   }, { [1,   1], [15,   15] }};
    shape "ALPL" { cornerRadius=1, { [24.25, 16]   }, { [1,   1], [23,   15] }};
    shape "DHAL" { cornerRadius=1, { [24.25, 32.5] }, { [1,   1], [23, 31.5] }};
    shape "FUNC" { cornerRadius=1, { [16,    12]   }, { [2.5, 0], [13.5, 10] }};
    shape "FUNL" { cornerRadius=1, { [24.25, 12]   }, { [2.5, 0], [21.5, 10] }};
    shape "SPCE" { cornerRadius=1, { [57,    26]   }, { [2.5, 1], [54.5, 24] }};
    shape "DBLA" { cornerRadius=1, { [32.5,  16]   }, { [1,   1], [31,   15] }};
    shape "LED"  { cornerRadius=2, { [4,      4]   }};
    shape "DECO" { cornerRadius=1, { [3,     18]   }};

    section "Function" {
        left = 4;
        top  = 24;
        key.gap = 0.5;
        key.color = "grey10";
        key.shape = "FUNC";
        row {
            keys { { <ESC>,  "FUNL" },
                   <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
            key.color = "grey20";
            keys { { <NMLK>, "FUNL" } };
        };
        row {
            left = 150;
            key.color = "red";
            keys { { <DELE>, "FUNL" } };
            key.color = "grey10";
            keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
                   { <FK12>, "FUNL" } };
        };
    };

    section "Alpha" {
        left = 4;
        top  = 36.5;
        key.gap = 0.5;
        key.color = "grey10";
        key.shape = "NORM";
        row {
            top  = 0;
            keys { { <TLDE>, "ALPL" },
                   <AE01>, <AE02>, <AE03>, <AE04>, <AE05>,
                   { <BKSP>, "DHAL" } };
        };
        row {
            top  = 16.5;
            keys { { <TAB>, "ALPL" },
                   <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
        };
        row {
            top  = 33;
            keys { { <LFSH>, "DHAL" },
                   <AC01>, <AC02>, <AC03>, <AC04>, <AC05>,
                   { <TAB>,  "DHAL" } };
        };
        row {
            top  = 49.5;
            left = 24.5;
            keys { <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
        };
        row {
            top  = 0;
            left = 150;
            keys { { <BKSP>, "DHAL" },
                   <AE06>, <AE07>, <AE08> };
            key.color = "grey20";
            keys { <AE09>, <AE10>, <AE11>, { <AE12>, "ALPL" } };
        };
        row {
            top  = 16.5;
            left = 174.5;
            keys { <AD06>, <AD07>, <AD08> };
            key.color = "grey20";
            keys { <AD09>, <AD10>, <AD11>, { <AD12>, "ALPL" } };
        };
        row {
            top  = 33;
            left = 150;
            keys { { <RTRN>, "DHAL" },
                   <AC06>, <AC07>, <AC08> };
            key.color = "grey20";
            keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "DHAL" } };
        };
        row {
            top  = 49.5;
            left = 174.5;
            keys { <AB06>, <AB07>, <AB08> };
            key.color = "grey20";
            keys { <AB09>, <AB10>, <BKSL> };
        };
    };

    section "Control" {
        left = 4;
        top  = 102.5;
        key.gap = 0.5;
        key.color = "grey10";
        key.shape = "ALPL";
        row {
            top  = 0;
            keys { <LCTL>, <LALT>, <CAPS> };
            keys { { <SPCE>, "SPCE"} };
        };
        row {
            top  = 16.5;
            keys { <I120>, <LWIN>, <MENU> };
        };
        row {
            top  = 0;
            left = 150;
            key.shape = "NORM";
            keys { { <SPCE>, "SPCE"}, <RALT> };
            key.color = "grey20";
            keys { <RCTL>, <UP>, <I162>, { <KPEN>, "DHAL" } };
        };
        row {
            top  = 16.5;
            left = 207.5;
            key.shape = "NORM";
            key.color = "grey20";
            keys { { <LEFT>, "DBLA" }, <DOWN>, <RGHT> };
        };
    };

    // Leds
    indicator.top      = 12;
    indicator.onColor  = "green";
    indicator.offColor = "grey10";
    indicator.shape    = "LED";
    indicator "Num Lock"   { left = 252; };
    indicator "Caps Lock"  { left = 266; };
    indicator "Misc"       { left = 280; };
    text.top= 5;
    text.color= "black";
    text "NumLockLabel"		{ left= 252; text="1"; };
    text "CapsLockLabel"	{ left= 266; text="A"; };
    text "MiscLabel"    	{ left= 280; text="D"; };

    text "Logo" { left = 29; top = 10; text="TypeMatrix™"; };

    // Other decorations: drawings
    solid "rainure1"  { shape = "DECO"; top = 1; left = 110; color = "grey10";};
    solid "rainure2"  { shape = "DECO"; top = 1; left = 115; color = "grey10";};
    solid "rainure3"  { shape = "DECO"; top = 1; left = 120; color = "grey10";};
    solid "rainure4"  { shape = "DECO"; top = 1; left = 125; color = "grey10";};
    solid "rainure5"  { shape = "DECO"; top = 1; left = 130; color = "grey10";};
    solid "rainure6"  { shape = "DECO"; top = 1; left = 135; color = "grey10";};
    solid "rainure7"  { shape = "DECO"; top = 1; left = 140; color = "grey10";};
    solid "rainure8"  { shape = "DECO"; top = 1; left = 145; color = "grey10";};
    solid "rainure9"  { shape = "DECO"; top = 1; left = 150; color = "grey10";};
    solid "rainure10" { shape = "DECO"; top = 1; left = 155; color = "grey10";};
    solid "rainure11" { shape = "DECO"; top = 1; left = 160; color = "grey10";};
    solid "rainure12" { shape = "DECO"; top = 1; left = 165; color = "grey10";};
    solid "rainure13" { shape = "DECO"; top = 1; left = 170; color = "grey10";};
}; // geometry tm2020


xkb_geometry "tm2030_shape" {
    // Keyboard total size
    width  = 320;
    height = 130;
    // Background / foreground colours
    baseColor  = "white";
    labelColor = "black";

    // Key shapes: base key = 20 mm each side
    shape "NORM" { cornerRadius=1, { [18,   18] }, { [1.5, 1.5], [16.5, 14] } };
    shape "FUNC" { cornerRadius=1, { [18,   12] }, { [2.5,   0], [15.5, 10] } };
    shape "LFSH" { cornerRadius=1, { [18, 36.5] }, { [2.5,   0], [15.5, 30] } };
    shape "ALT1" { cornerRadius=1, { [27.5, 18] }, { [2.5,   0], [23.5, 14] } };
    shape "BKSP" { cornerRadius=1, { [18, 30.5] }, { [1.5, 1.5], [16.5, 29] } };
    shape "SPCE" { cornerRadius=1, { [92,   25] }, { [1.5, 1.5], [90.5, 22] } };
    shape "LED"  { cornerRadius=2, { [4,     4] } };
    shape "PAN1" { cornerRadius=1, { [27, 126.5] } };
    shape "PAN2" { cornerRadius=1, { [92,   13] } };

    // Other decorations: panels
    solid "panneau1" {
        shape = "PAN1";
        left  = 0;
        top   = 0;
        color = "grey40";
    };
    solid "panneau2" {
        shape = "PAN2";
        left = 101.5;
        top = 113.5;
        color = "grey40";
    };

    // Leds: they must be put after panels, otherwise the panels overwrite them
    indicator.left     = 6;
    indicator.onColor  = "green";
    indicator.offColor = "grey10";
    indicator.shape    = "LED";

    indicator "Num Lock"     { top = 11  ; };
    indicator "Caps Lock"    { top = 27.5; };
    indicator "Scroll Lock"  { top = 44  ; };

    text.left          = 12;
    text.color         = "black";
    text "NumLockLabel"		{ top = 11;   text="num";           };
    text "CapsLockLabel"	{ top = 27.5; text="caps";          };
    text "SrollLockLabel"	{ top = 44;   text="scroll";        };
}; // geometry tm2030_shape


xkb_geometry "tm2030_MiscDiod_dvk" {
    text "ModeLabel" { left = 12; top = 58; color = "black";  text="Dvorak"; };
};

xkb_geometry "tm2030_MiscDiod_102" {
    text "ModeLabel" { left = 12; top = 58; color = "black";  text="102"; };
};

xkb_geometry "tm2030_MiscDiod_106" {
    text "ModeLabel" { left = 12; top = 58; color = "black";  text="106"; };
};

xkb_geometry "tm2030_MiscDiod_off" {
    indicator "Misc" { left = 6; top = 60.5; shape = "LED";
                       offColor = "grey10"; onColor = "grey10"; };
};

xkb_geometry "tm2030_MiscDiod_on" {
    indicator "Misc" { left = 6; top = 60.5; shape = "LED";
                       offColor = "green"; onColor = "green"; };
};


xkb_geometry "tm2030USB_func" {
    section "Function" {
        left      = 27;
        top       = 1.5;
        key.gap   = 0.5;
        key.color = "grey30";
        key.shape = "FUNC";
        row {
            keys { <ESC>,  <FK01>, <FK02>, <FK03>, <FK04>, <FK05> };
        };
        row {
            left = 129.5;
            keys { <FK06>, <FK07>, <FK08>, <FK09>, <FK10>, <FK11>,
                   <FK12>, <NMLK> };
        };
    };
}; // geometry tm2030USB_func


xkb_geometry "tm2030USB_alpha" {
    section "Alpha" {
        left = 27;
        top  = 14;
        key.gap = 0.5;
        key.color = "grey10";
        key.shape = "NORM";
        row {
            top  = 0;
            keys { <TLDE>,             <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
        };
        row {
            top  = 18.5;
            keys { <TAB>,              <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
        };
        row {
            top  = 37;
            keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
        };
        row {
            top  = 55.5;
            left = 18.5;
            keys {                     <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
        };

        row {
            top  = 0;
            left = 129.5;
            keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I148> };
        };
        row {
            top  = 18.5;
            left = 129.5;
            keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <I163> };
        };
        row {
            top  = 37;
            left = 129.5;
            keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
        };
        row {
            top  = 55.5;
            left = 129.5;
            keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <BKSL> };
        };
        row {
            top  = 55.5;
            left = 259;
            keys { <I158> };
        };
        row {
            top  = 74;
            left = 74;
            keys { { <SPCE>, "SPCE" } };
        };
    };
}; // geometry tm2030USB_alpha


xkb_geometry "tm2030USB_ctrl" {
    section "Control" {
        left = 27;
        top  = 0;
        key.gap = 0.5;
        key.color = "grey30";
        key.shape = "NORM";
        row {
            top  = 88;
            keys { <LCTL>, <I172>, <MENU>, <I162> };
        };
        row {
            top = 106.5;
            keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
        };
        row {
            top  = 88;
            left = 166.5;
            keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
        };
        row {
            top = 106.5;
            left = 166.5;
            keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
        };
        row {
            top = 106.5;
            left = 259;
            keys { <PGDN> };
        };
        row {
            top  = 1;
            left = 111.5;
            vertical = true;
            keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
        };
    };
}; // geometry tm2030USB_ctrl


xkb_geometry "tm2030PS2" {
    include "typematrix(tm2030_shape)"
    include "typematrix(tm2030_MiscDiod_dvk)"
    include "typematrix(tm2030_MiscDiod_off)"

    description = "TypeMatrix EZ-Reach 2030 PS2";

    section "Function" {
        left = 27;
        top  = 1.5;
        key.gap = 0.5;
        key.color = "grey10";
        key.shape = "FUNC";
        row {
            key.color = "grey30";
            keys { <ESC> };
        };
        row {
            left = 18.5;
            keys { <FK01>, <FK02>, <FK03>, <FK04> };
        };
        row {
            left = 92.5;
            key.color = "grey30";
            keys { <FK05> };
        };
        row {
            left = 129.5;
            key.color = "grey30";
            keys { <FK06>, <FK07>, <FK08> };
        };
        row {
            left = 185;
            keys { <FK09>, <FK10>, <FK11>, <FK12> };
        };
        row {
            left = 259;
            key.color = "grey30";
            keys { <NMLK> };
        };
    };

    section "Alpha" {
        left = 27;
        top  = 14;
        key.gap = 0.5;
        key.color = "grey10";
        key.shape = "NORM";
        row {
            top  = 0;
            keys { <TLDE>,             <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
        };
        row {
            top  = 18.5;
            keys { <TAB>,              <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
        };
        row {
            top  = 37;
            keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
        };
        row {
            top  = 55.5;
            left = 18.5;
            keys {                     <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
        };

        row {
            top  = 0;
            left = 129.5;
            keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <I120> };
        };
        row {
            top  = 18.5;
            left = 129.5;
            keys { <AD06>, <AD07>, <AD08> };
        };
        row {
            top  = 18.5;
            left = 185;
            key.color = "grey30";
            keys { <AD09>, <AD10>, <AD11>, <AD12>};
        };
        row {
            top  = 18.5;
            left = 259;
            keys { <BKSP> };
        };
        row {
            top  = 37;
            left = 129.5;
            keys { <AC06>, <AC07>, <AC08> };
        };
        row {
            top  = 37;
            left = 185;
            key.color = "grey30";
            keys { <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" },
                   {<DELE>, key.color="red"} };
        };
        row {
            top  = 55.5;
            left = 129.5;
            keys { <AB06>, <AB07>, <AB08> };
        };
        row {
            top  = 55.5;
            left = 185;
            key.color = "grey30";
            keys { <AB09>, <AB10>, <BKSL> };
        };
        row {
            top  = 55.5;
            left = 259;
            keys { <INS> };
        };
        row {
            top  = 74;
            left = 74;
            keys { { <SPCE>, "SPCE" } };
        };
    };

    section "Control" {
        left = 27;
        top  = 0;
        key.gap = 0.5;
        key.color = "grey10";
        key.shape = "NORM";
        row {
            top  = 88;
            keys { <I120>, <LWIN>, <MENU>, <I162> };
        };
        row {
            top = 106.5;
            keys { <LCTL>, { <LALT>, "ALT1" }, { <LTSH>, "ALT1" } };
        };
        row {
            top  = 88;
            left = 166.5;
            keys { <PGUP> };
        };
        row {
            top  = 88;
            left = 185;
            key.color = "grey30";
            keys { <HOME>, <UP>, <END>, { <KPEN>, "LFSH"} };
        };
        row {
            top  = 88;
            left = 259;
            keys { <RCTL> };
        };
        row {
            top = 106.5;
            left = 166.5;
            keys { <PGDN> };
        };
        row {
            top = 106.5;
            left = 185;
            key.color = "grey30";
            keys { <LEFT>, <DOWN>, <RGHT> };
        };
        row {
            top = 106.5;
            left = 259;
            keys { <RALT> };
        };
        row {
            top  = 1;
            left = 111.5;
            key.color = "grey10";
            vertical = true;
            keys { <CAPS>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
        };
    };
}; // geometry tm2030PS2


xkb_geometry "tm2030USB" {
    include "typematrix(tm2030_shape)"
    include "typematrix(tm2030_MiscDiod_102)"
    include "typematrix(tm2030_MiscDiod_off)"

    description = "TypeMatrix EZ-Reach 2030 USB";

    include "typematrix(tm2030USB_func)"
    include "typematrix(tm2030USB_alpha)"
    include "typematrix(tm2030USB_ctrl)"
}; // geometry tm2030USB


// European 102/105 keys mode.
// Same as the standard keyboard, except for one key: Play becomes LSGT.
xkb_geometry "tm2030USB-102" {
    include "typematrix(tm2030_shape)"
    include "typematrix(tm2030_MiscDiod_102)"
    include "typematrix(tm2030_MiscDiod_on)"

    description = "TypeMatrix EZ-Reach 2030 USB (102/105:EU mode)";

    include "typematrix(tm2030USB_func)"
    include "typematrix(tm2030USB_alpha)"

    section "Control" {
        left = 27;
        top  = 0;
        key.gap = 0.5;
        key.color = "grey30";
        key.shape = "NORM";
        row {
            top  = 88;
            keys { <LCTL>, <LSGT>, <MENU>, <I162> };
        };
        row {
            top = 106.5;
            keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
        };
        row {
            top  = 88;
            left = 166.5;
            keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
        };
        row {
            top = 106.5;
            left = 166.5;
            keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
        };
        row {
            top = 106.5;
            left = 259;
            keys { <PGDN> };
        };
        row {
            top  = 1;
            left = 111.5;
            vertical = true;
            keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
        };
    };
}; // geometry tm2030USB-102


// Japan / Korean 106 keys mode.
// Same as the standard keyboard, except for the following keys:
// – <TLDE> is replaced by <HZTG>
// – WWW key becomes <HKTG>
// — Calc key becomes <AE13>
// — <BKSL> key becomes <AB11>
// — and Mail key becomes <BKSL>

// About control keys:
// NFER/MEHU and XFER/KANJ: TMx keeps LWIN (and RWIN if it happens to exist).
// HKTG/HIRA: TMx keeps MENU/COMP, but locates this key in alpha section (see above).

xkb_geometry "tm2030USB-106" {
    include "typematrix(tm2030_shape)"
    include "typematrix(tm2030_MiscDiod_106)"
    include "typematrix(tm2030_MiscDiod_on)"

    description = "TypeMatrix EZ-Reach 2030 USB (106:JP mode)";

    include "typematrix(tm2030USB_func)"

    section "Alpha" {
        left = 27;
        top  = 14;
        key.gap = 0.5;
        key.color = "grey10";
        key.shape = "NORM";
        row {
            top  = 0;
            keys { <HZTG>,             <AE01>, <AE02>, <AE03>, <AE04>, <AE05> };
        };
        row {
            top  = 18.5;
            keys { <TAB>,              <AD01>, <AD02>, <AD03>, <AD04>, <AD05> };
        };
        row {
            top  = 37;
            keys { { <LFSH>, "LFSH" }, <AC01>, <AC02>, <AC03>, <AC04>, <AC05> };
        };
        row {
            top  = 55.5;
            left = 18.5;
            keys {                     <AB01>, <AB02>, <AB03>, <AB04>, <AB05> };
        };

        row {
            top  = 0;
            left = 129.5;
            keys { <AE06>, <AE07>, <AE08>, <AE09>, <AE10>, <AE11>, <AE12>, <AE13> };
        };
        row {
            top  = 18.5;
            left = 129.5;
            keys { <AD06>, <AD07>, <AD08>, <AD09>, <AD10>, <AD11>, <AD12>, <BKSL> };
        };
        row {
            top  = 37;
            left = 129.5;
            keys { <AC06>, <AC07>, <AC08>, <AC09>, <AC10>, <AC11>, { <RTSH>, "LFSH" }, <CAPS> };
        };
        row {
            top  = 55.5;
            left = 129.5;
            keys { <AB06>, <AB07>, <AB08>, <AB09>, <AB10>, <AB11> };
        };
        row {
            top  = 55.5;
            left = 259;
            keys { <HKTG> };
        };
        row {
            top  = 74;
            left = 74;
            keys { { <SPCE>, "SPCE" } };
        };
    };

    section "Control" {
        left = 27;
        top  = 0;
        key.gap = 0.5;
        key.color = "grey30";
        key.shape = "NORM";
        row {
            top  = 88;
            keys { <LCTL>, <I172>, <MENU>, <I162> };
        };
        row {
            top = 106.5;
            keys { <I120>, { <LWIN>, "ALT1" }, { <LALT>, "ALT1" } };
        };
        row {
            top  = 88;
            left = 166.5;
            keys { <I243>, <HOME>, <UP>, <END>, { <RCTL>, "LFSH"}, <PGUP> };
        };
        row {
            top = 106.5;
            left = 166.5;
            keys { <RALT>, <LEFT>, <DOWN>, <RGHT> };
        };
        row {
            top = 106.5;
            left = 259;
            keys { <PGDN> };
        };
        row {
            top  = 1;
            left = 111.5;
            vertical = true;
            keys { <DELE>, { <BKSP>, "BKSP" }, { <RTRN>, "LFSH" } };
        };
    };
}; // geometry tm2030USB-106