From ba199282929fa4c25a0a4ce13b4f95150d925fc9 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 17:41:57 +0100 Subject: [PATCH 01/16] Delete UltimateKEYS (Linux) - Keyboard Layout Image.png --- ...mateKEYS (Linux) - Keyboard Layout Image.png | Bin 63590 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/UltimateKEYS (Linux) - Keyboard Layout Image.png diff --git a/images/UltimateKEYS (Linux) - Keyboard Layout Image.png b/images/UltimateKEYS (Linux) - Keyboard Layout Image.png deleted file mode 100644 index 1c82d76edab14f3a693eec1144d8b9535c5a13a3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63590 zcmZU51ymeM*KK3LC1`MW3l6~{xVyVUu;5Mz?(Po3-Q6{~ySqCCf0KK^@BiOhZ&t5a z-80oy)m5kD?0t5J$jgc$!r{OH0DveV{#6kGAe#UHtQZCy^b45Nr(^&i0wlf)D!VS9 zwtG3EEi_-eLmFx^fWr%sWq*Y$5U20U9aJVE&OqnHq|}u9-Mt_g8Iq8#YIAB*k1--i zpO~gzKeMCK9HW*ls@o*eP7xC}A=pxoaIO%lEdB)%Rxw+!V^Y0XVsKCF6FC^RbPQth z2H|zsOHUg4%Jt!6*~`bMz?8@HcC(AujP{4xi&nQA3IOQZ8%bi+>)`qP`7575xI zt4;Q2%k`j}pb0(ghNuR#x79kXF{Fw9lSnYSZZGTo#Y|N6L()iw%j30)W61v$I0Q)F>}0(Ey$w_o=no(E5s{D#Z*l%x z5DFx)KbFS9$r+6K@qaSGw!&h9{cnW@QCLI&HAAQ(Z1;!RIy6V|zcpQA-^B{8 zEIsCqV2`9E>B3if-Ou3?`W(GfwC;2+lxd*Fy`0ugyxkV^>r@-|$C67WQ$F?tz#oif zcpUvoN|&YlTT+Ta>`c{w=jq;4YB~?EO{r!tn zX(V2yR8?k;N>y3;#l%8G?S6ksm;*ZJ9d-3ED2-#^Zh4i1aNkUDo}|gvF`?ix^g=7< zotKmI&u*L?-}MkF=^!*TbftDP^FMaO>4Gtl#=*$K;?V5}b=8`a&f|6+SAt{Rb%$N_>TN~uVJL=F&6zclYj&eG9BM=TsjH{#`M}0q=e+Z6 zfsr9A>K@!`mMm*T-Q&;YRvL$`_l3ts7=LqRB_k!}ftB9#vL6)ue#I`WTE)wmt9H$>kq|X8vaie4ye4myw=v%)V*?y<9QayCyu0>fA+S$PO!>6 zL}kQdRVVm#nX;=uch zrnT5aDPyJ^ZEk3P%`%L6PaK=~!%(f(^{|EFIlCVh8LO_%;8 zC_iST&VY8d$>p_*9^T04lwHq1jZxmIuPsfN#ixruN(cG8PWXFzHoUBE+yk2mGC3ky zJ3TolD~g+1LZd{$1rUntjIXcsAwuf z(j+uei*ukZ;VFtkdOV!MCJOJ4{U3nQP%nR+sN<@ z^@C~F^WJl7R_=HN#aq2YCr^h5sS^ViecVP(z}UK?uqcs9$P;}OuWFpYm`L+&RP~Y; zYRQW!dS}2`=J?yt=|hvYNwxQ+Gk5C(lO>-`0jIl0iXTCLH{as72l1HGWtR$vK=!M$S^@0@PT&g4+UdcLx@a#so^MtEfD zRD7or@!rH6YZ#TrUGgd_y#=omyIZV9XRji~MonV-9OUMF+4xuz*2%-TA}*1<%EG>2 zQ}Y03I-L>TU4iVT35{A`?^R8E2_EB*zaQJ>hG_o{PAu96DE}XWin`$fIi9u0qx=tD|aVE5}3I^Q2 zLuJ4u%9~R+^DE>Kn#y_BW~~^2AJePKw6MvcBY5bTMaq|Q`K|Q#K77!_lXM}@TqV1Y zCvYQaE8@&O#Gr9WR)%uaz?O(rF_Oe`VZ;`TDSBmi2+q2TizK1T+5AX(QRbmN>l4`K z-uaXUB}cxAR{Px*05mj;tsBFgHPYZ2^BQkkAKjt+6f`%za{5ec*6mt#DH2qi$XJ4k5v zom{B+_K99g)pjmUuh_{ zTPt8*psVwuD_+h9VAQ{%;n~I4&Hn-5j%iGk&XJ~VtQ?YyteA(s^88S?t|$fcB6|7X zMDI-4CmWO}>SV$lo9RrhUj|ui044j5woyq6D>z}Y7u`9N27~^%z@UYmBp*H$iE=@a zr2-B#P{rQ0Q=b??A> zcQrZPLoWWBB*S~5@yTw7Vxy2G`>a>-mUc&Ce}+urN?+H#dlv$q`(m=XqPo(8-`I)C zX$aHGZ)L(tV42eC>a;zvIH{wtRkbApA`r|Y@-|wyz76&D;9X`;(AbBlKj#gb3sMkn zFiazRGA~(+ezgs!8AhtlZE{U( zer5a3#=-_GtnEHIlZ!KtcLwVuNI(nA8z4?4fQq_Rgq7nCo{e7E)kB=9d~n4|ZDjIU z(gPnU`jfE|p>SmEU4H>UrOWMoe;ad8K@UbG&rwIn<#k`w47e{le=;*FVUts_P83*F zondd-LtM5@?TuE`DwoVoR}$n9=ng(IgZ%{u1MPmuwBOuOf*qP#V#31xMbP6e0M{90 z7acXz-`LeqCg)7!D`m%}YaML8-0=vaeS9Pan9my#Q?lAU+2bwqEXzdFHrDQMN>{w! zT&|wT=8V;jXtTh|k|NIu5{O5)Aa3OmSV9-v@4Xk>j-&Pq`S{K|!R=ntPi8hMd!WO>2hg*E8+9)b4(3vocq3tC;xYzgU?+Oft;Xuz z3<^8e)1G>_6@@ppG>KeCwQmU=wY&gLksm@DV3QX1(lcM6mKAuoOEYr?OV1rwL&Q;!4VlJ8&En}?BYJ^&tL%OZM zMvtR_uWfAKn^%vqiZqvLZ#?(zDzI&PNW86NNX<_qV<$BZVOxm2Up_DIxI{5U)<$mh znARp$FyzmPaXZ3NAw8ZM_`+pq_F-Qh?w!3cv)+RKR_Da==RA+WJJAG+grcX=H6y7dOQ!ayVQMqvD2}&q z)UB4&ZI8VaW2+`@Xl5)@=A!4c zeNk^#YntnOE_4ULc(Wdy**C45RqiPM@=-%)OeLFAdIYF139LHcpKJ1Ibin+rRUhz@ zPsIboZ3N+@2T}qnJ|0y$f;TFP*r}tMkYn{Y+xjZlP;b|#f&-`yaf0q)>&RjyEDQT! zkkYD*vIk;$!TH59b;mMbB337p>6yVBBtFs|BXf)j7fYQ!QIgVHjhLD*U^Ovh4zA!p zqH-y%FZ)V3yFtw6`nHUgbkL(W{@TGpsi|B$Jx~iH{1d#(x*EAS?8%y~!4A~O7bShr<)TUg zQ}P_W>>tgu#xOrr$YNz};t7>1p+F9v$c<9#@?0Ky-1dz9k_tMF@qKo+*f&$*E&R06 z0IzNZCi}z)0d&=ab_$((yzg9EkoJ+KsPbJq$R_rjoVuKQvRE{)P`21QxUHzjSGb_kG5kp+93&weFE|vLzS1ehQK-CAyxoRHIO8#p3yCU@Z z=QWKYMT^0>0RXsAIiROsuwO6obN=ix4acD*icn^9MjR2emj->zxa$N?x#l=}idCV^ zxyJ|IKIe<34Q^k4Rs5CnOYq}ojdrDq>;OeJtS(jCn?mhp%ru{6ixL-kK%f;@CL?70 z3ly+<6#!(|e{|0S0J!c+lb`JE)bdq>JUjQCsAOwEc5I|o9MrLM)SyEZYs`=9!vJL6 zH`I9KN~QOL=rWJVKSZ7N6wetm9Lj!nK((~^l zsgoi1gh_7LKe#BXiOW%@@veR>?7*SLCN5Vw_czNxax)Tw-$aBILr7iVy^i@=v+xN5 z$|H5wPrarD1p`+u3Jjm0a^4qL-OTV$mvgKxEdQ4>diuRWt$0QMvO0avu^tA%E702ui`19 zm;PS~1Sqk4#vf1bB1E~x03squIKb079M)U%!5;v=pX1&C7(@dAe|J0aj}hB2I`4nx z@(5er9Xlt9++Schm7IEB#(Yn@5=yVe5`0i*Tn9o#Nn*tF8?gX)57HQMGE|8o7b)m= zJ|bm*q6$;GDVl+(`YLrUAUhgv=Ok|Y@K$azboPTYSp@*B^tKRZDrkQ z^0U9Qu4*?FmoZt?%5wQPs7_nVo}B5%I%=>!vD+xrOCkXAI(p}E$tSbmz;ez~w*9Vh z9UiZHT`^>A}5;1h$$wcQt5A*AU@9 z(fcB+b}qNMAzBd>!m~4ZivQypD@pdvEa~L&Vcp~CM}!<>d)CvS#2`ObXGf~N!~i&h z0A~QV;1xkFpn_<@1x9ic$(*&^nJO$e#}J z4}S?8_}b-(u5-G}|4lBryY3ha8DdlS78M|{S12AORd&LeZcl6HjrId2n~4dohc+(PuKIu(X1LD7mB9utj~YVeOq32sl_B*cS0Zz-H=d#Sw#!l#WQ8nt z+qc~=9|o2;!{N#0zMGi1$o0&-OV*!cW?_l6KJ3@34)8u>f4mXaK*qg!U`Mp}39gsm zFh?+y_c7%@B){EZTg?F}XIdz2Y@4Wl8}dQr_ZG-!R~v5~LV{XT`%AHvcX}LialQuyY=l$biCE^)}{1?dlG;6B|w$4em?ilr$;@nvMg> zbQz~tAhJIZNahKXNw;vrVB7|PDR0LRP|84q`LkSNhZb61D3Q0He1!84lidE^Ot}j! zA#rTXEvC8bSXF0%)8TLTRft%?b}hzPMK!5$ET5xAMr#Br#M3GnM<`&BWgCKY{RuyU zOre?IrWUT^^AziBJ>FD(pIIwtXG~wrTY^?=7|@P}{^9Bp5vm6qP^zMY^E-Od|6C_$ z6uGbDPUD#tyv=10#4ub zi`P&(Q|L+3t}JIFy=KMB>vwVrx}Tpk+1QjfL~NN-aU8WIe4Cn6r%;X{4WnEm=dkPY zT3&9$9g2Kq^U z>z?Lim=Wu4$MvLLJuCkM#?=lqpXbG+(u+&~2~?77`xUvkNKZtvGK}9UJZR}*LRhVa z@XW(-#=^F2@F<1dOMizUN4Em|mT^w>3vHtUS^%m&1IQ-#SLginL6o=M%(djcqXU~z zJ4L43Q)2al0}lZh;P}3X;TxZ~z6c8lb?Db&S_k@}3Vp_^ZLGX7r%%%IaAe&+YCN5LDBS~J zJTABYXin79gT|7{pg1yP7eHFJr6~?C)r4Y8I-t*tfrr zE?5OT*XtPIw}wiz>SEO)m(QMXtRlQUyx&xn0J8eCIY{`EJP+Ugkq^EEmeNJ3;Sr^o zuX7Na@5b*@e9+_&jf&E}6rqe@z~PZhXL|=}J1_9b(s&LbZ=;o z862yQg9pft1dI=CGlOucYOu+LKl-X4g1ATw(TiP;kB?v^R^Xs=jmO4KCmX_@40(uS zplvS1a~+|)(6*ms#TwP-XYDkoQFy#`P){U*%Tbg^oO@0;rir)mgTp8>BF6EXJ!AL#j*5cH+YTZ&K z4+L9osqav+eQu!N9~y-on|02s^^B`cXC!uI6{yoCZB#VQh6c!%kwiHF1s^XJ7WDqX zVQhxSIgvzs_jdnZXa~1VGI#m;_f>`;euIhSv(`}|{+%;Kr@ec8Pf!a#SV?sIlylWS zqCMnYWGFi!=g zQp(bfd_}e;3VFRr`S#h+;9GFh85$*Z+*b*(=ni8@e*8B)X7+}$(GG(WFR>cey(iPG zV!NLf#ugN7B7r>spq=}DkJb^xiHN>!~T1PMUDzv+PO3C zoE2!4kgr_n%{=!XVWGsKJ~pBaK<*5+A=Rt9T-Jp;s-IeeG4CS@lfl3Ss20*F6o10U zpN#99y7(~u+S%C)B zk*Skx-q%X*R%&XumNl1_TFC44xOXxXd;n9SisciE&=m>T z!$Fh7#|c(M52n!{Uxe0a6qo^CsNQeY5YQoaEysGwaTL}x=yc1>n$zjtSR7I zQoqaO+dp6m6Dz`nVe4c6j8NxXs613~}5GOBUkQ@6K4*x>41tZ_45V~YL%x^?=UE3>ZY?UOlEp~|Blwh6v=G9#lfmd zIl4^cUvVXl>M$TIe26T8RN;V&p<+qJB)*dUnj8*W5GKeA5}yPjKMNrM>`&jl|l^(myviGWUNZ4 zs*=L^Wh;C&t>wiWo<(HVp7;sk{_+ucOmu`l7Bd~wqZS0gL_X2G8-d22W}$Qtd5Sl@ zN9j?;cp2|%P)_HklqFACL2*gtF9FhBDeGEB*g|>1|FDNUC?GhaIJ3N9o4Gs2i)LVa zC|_H&otmhacQscsN~4gcdg)t7DN8_;91P2+$kH#;@g&0yz|#CEy`{-@YlP^(l%27= zzJx7SYACh0`qJ&&+E*omNc|L9%HEy~S@BY>L9v-I$g`)jJ=sE0#yGq_L|n6Iw`9ow zQhNCmc-1WxkpQ4agx1USsNmL={awwHG-hgB{U?Y~{24!y`EgQZvH9_uIjmQ1a4n$Buy*NN z7@;pkd9T_2zU{)ro!ocs)H<~YZ3gFhedEvxzI{#Mqv)n$(f_G{_-|Ci$5%j}=;Od( zZH~4{8vE(zWj_Jsc`MS~?7J6^ z@{P@T8@W@Qy|K%^_`+A!RD}Cyv^*2n- zY<-NMlWFUr(t{@&tWKI%L|!o;jjpfvw?^r8 zvM;G2JNYkSivV$Y?UvgD(npCvNSEjR;3)ErOp?cY$$gQ6m2%={R2wiW` zui?{V?vUn&3*A%RMTK^LlOM~lrOJB|ZcqFl!^#;($y1UfqX>u0#m z5nN|BnY`OS zr+;Q2qFFQz=TbR~*BL3fp++VyYqNj~_}?mgMj|jU zw}vZUoieR!k<^UG1AL1%6xF|x^mZ{$mN>#;2w=)lZ7VoGRy0icUR@F*bLxX^pLv}ef(DYTL*J_SN!805``jYZf?Nwu;w#hZV zHE$ONW^o-H6tH{Q4}Lj+VNP~&v}AO!i=k5TtI_VK(E98Qegw&XV1-c6tVc;-3`V3wX0M!8+G!Nh=s3;>gk z${Nd#m$z37Z~(aI;3pT!hx^EPXb^A!_zgk;!H}NTKz8|jq(d&N%-Tuq;5h8VWXzHH z_y6sNd}hZknMil~U{P)`fvyp356r#Vr2!o3>Tm!E;`lsot>Da+*6!TePJ8}|KL`rw ziak!XBuBAX*I;kaGRPmfaC$ttk|Re2xy0!B?_n#rcxEd_(a1m(ln@vo;KPUrM8~n% z%uZcYxvZbm-t^Ug165o@SF%i!^WT;wiE(A z<0YxYrJrC~v9QjmD!zxW$&%tAL<7;37=06nd+xZnJ6>A;bs7>tg(glK{%e?+$+#~&2!)57omFu@>ySf}mV@Z@gWMjjr0#})x*1~bq+1K`^K_0`>f=4t`mjQbH5=j3?o%P%tNG zMGk8yoHSid-4GpuBP%1AK0&$#8oO5W+xJ@dezX+NwTkS_n&gD%dS(aCl`%eP~@>wi`N(?Ef{n0*U{EAvxA}0v- z-Yfb+XImG;9H&|D1?b*P&5$7Z3V<98$u09b_SWT8383Svf`X1klS%p{acNPBm0b)@ zp@MCUD}v$=%Z(5o6)lIfG)K0U-s*!`l~V=W*}kTe-Ak3{^@FqWMpmsj30W^M>DCFC0F6U;61LljQ&Jx_ zyZn|!(w0P6B)NIJ%iE^4Q!a1~i@377qf8rm`7`dkWh|GEF^UWMvuks;SHaU1+ldbl z`XS1Q&?<;%NMTYB8B}X7j1zp0o$5UEWM&d1R_J+2e6GiT+5fUi(TZRCD<0QMR`)q; zOM`Eos1+Ic-glROFV?x7A@qbnZI8V>(5x19211^>pEEWHnnH(}B1fR#Hcsx{qB-8kZ8t>8W5 ze;frB;lt%d01z3ymSC-G#EqOdy$3&ewr{rjs8jCWb?D5^pvlZTOs?a&fubfDoF^^h z70v(B^b->%pbgUfGCgR+R7%UNg^YG|y<94qNx`9~Tefi`bHDSI>O$A+DzW~Qc(~vF zgiewm;k+h(I4FyT!{>?F?>jo^cJ`I+tk-EQ*hp%x{-<_hRNXI~0bWw3dUwg!Nok!r zoeNUrrPnRa=Us)+9XEx410~Gfho44|kl$wcy@V?8PmWxhvGT(l+#tFS`1vGcbd8Wd zwtv4K931;6=@AG28(q5o6yN(&8t8|O{Z2E!Rvzmf4_#hRBTlA4Q{+LN3lF4NnIgF0)aT7FKT(RVkZA31oMk*5N zVKk&{nM$hbb?)p@cB^!M*6ePJsz^Fd5I!4TyG*x{>qqZA2{@Lq8CaT87h1cHa5iKkT~Q+Ip)2e*Qm$W zx)q|**laN{ptA8Qy#K?8d+zFZ8%y`)xb|XvWO4q;-RKIQ@jEkWdFF5`J~!^LoqK%j zUy8vJ4&+Ti3I+p*3^ik48#E}tegA@%XkhDR?1rplvBVj#)A-onnd#IFK!@ z8)Px)XbfqxV6|GT@Divzn84R)owOoCQIb;d6X?P~&6P-`+O0BGyODp~feXpG#;QA` zsjH9JNO7UDz4^t@@6dCG4|vNm#2|ilopQR*ruEz(i)v_j`quYG_~!Gn;d6&sOIu0cv(GE%*dO>|O6c%?bZ+j?OZHVF1HX1W*yzveW43^XF7XKbU!Dy*9rIPZ z9J1{`C|6pn{S;XOtv+(&k=LRFNio3->fhjezqWSPOK`2eOs=PH_lOn_6p<~fw56Q# z;pVjL_`9EOYa`{Lex$KZ>Q&C{R7!HC#jdk-uDi2?ABEO(G8|VQ-gC#cm*=G&tJ+Z5 zLvR>$hH#uC$9zdR3XO7Q`tPP^oM3}HrfxvH<%=%iO7YGI60@S? ze7@&1moGmjvM?n$zKMVDKIgydeRq+4lv!hJ4g>S8t-ExY?w|0yT~Wj8xZE~&-rIFU ze!aXQ-N5UdF!4Fai=*spaeGz1==@fEJvlu*vo(jD_KLmn*bM<+NRRu-X!HCS=E7&a zHM319^0s_6+WPFF-a}Y6N4^@a>v?kPJqTze6na=aRt;hf>AjpbZX6+~zTPdO;dZtY zeEM+q8FLw&sQA`#_G5arZMcFbNr=kMEH2~ka-vjq0ASs_h(GEJ(VeVV2)9KxoVTYE zBE7dYE4hVgceH+1_!$o+@O+l|BpMX89bd=Jv`|r)v+GE~^-N_N=G}bt3)>-tNjo8sBr2IBfxA#bm~cZLY_Q?yhAM=>MGDGI zV#o)4Ob!9vzmZpc?M#6b4g{dU1C9i6-jhtAiLKPgf${k{$KJ|tW+gAbd;mJz+&s9F z9I~XK0M*yGU$8*nj)LtLzrw$a4%jSSZq>pd+Pd*|yNrKcCnRXtmzYC@mPJk`;x6Ws_F#nshIH}zsnmb3^DR}miVFuja0+m+1Y1e2N%W+HNXIj z^eV-O{w=#$RlGb<^a=V<>9$K*dp&6-8({NB@zg<%b<+|7Lb+&A z%O|pC@AhL9Wz1Dyn9mn1@J0DA>k)M86o2j?l5Ud5g6cLcFZbl$y0so}6) z$a7U=h1x3~p)A1y%!V&`O4UMQz@JsHQ2SJ2Z;wv`IXHx|S;9qifI%yNGAa_^CjPoV z56*Qf26#av$JFj(5v&QOSoBud-2fy~FjOef46(M@7eCRf%#Wpm;Veu9ksxmun<->p z7YO!ZNdF-@Y{ddsN^679l1?Tx0ZKUdHo47y~A01wbyfURND$~ov$^C3ALr24b zivCn{r@#H)I1>Mi9N6)&5xE45jE<<;cwjr797vv~;#RlOAl2b6g&5NP zEgAYeFIc*|fC%3iph~$Ead1DMKdQG-sjp_-&R4nERUxpc#Jy%#RMFwiGINwi4;BHr zS5zwB)e1F4$!wG9g`n{7Qg!&EXW1>xY_Ea@OpE644rRvn&P{{QZZ&h~N-z|474t=3 zRrCHrap_3xOv`c*!0o+rGhM`(wJtL{fuwwfDjWBP-%H|Zd4ak=U85cT=@~kmS|G3Hif~*<;3>tvBn6>hFUHJR1lj_$|gi5P7|DCrJO!wdcGBJnd+FK4=JV>W?i}1L`ff>FV&ul`iWITY6;vZ^oonQQt` zBrhY*M*?5i?0e!ig4Yx%9$kLOq8u7iE}PV}7%3kVunRO!8>u2{d`c83vEeL|pC8&A zIJ?{S&ovO5)vL5UjR%qTzlO{WG4%}C(NL~&toep$OOyvSZg*wg_AqD9t(d}1E$AA` zC)7<7@KTPdp74Ieqf9y?0lxCmD8ssNK5xed0N}InzGK48=WX~Z-zl2yc~raMUC8q1 zT8xjH*vD^b1U(On&-GDilef(Pw-)~@!U4KvgYT03l5p|Q?ex|eQ-|lpU`~IVSVwz| z+j2jg&X4LlC4@iVU@BTj$Hh*tg5OL&|+H~uVS@}PZ~^Hg@2#s*J@RsszVka#*B=j`AVfcX%0s| z%NQKX)*q39dZX}@Q{@R0uUL~3>QXF%oe(Dei%#rH<}mb{TTRP6Z@1GPpAv3y!uTaZ zYEyAxLHReORmR~I_b+{c3!T+`Z<>C40hK=3FHsH`1WiqkA-}>iVqop=CYxO>)Yq%% zlBVzv!)(27pQ1WEhc4-7CK3@23IyIHcQbq*S~;?s-nttD4SiW){)14kTI*QE#ZxJB zwcBJRg$Iu!&gGjXr4@7GH;u(F$A?Y#>*v;OoS8c`3Fj~{_ua15ThM&^0Bn)%Np)d? z=l4n5k`?QJ#vM@AnX!`rg+Q$u-wOVCG#^B0`3j(f!g64Tmd9eE9kB_{A!lb=d^k#0B{pY*jLakl^r-~pi4vkZ1Fkm^e)T+tjlMQ zB#xzl-d%TCy`kfn&(_bRPDu6Y$9{4n9{!-4KeV2{>x~b(ZNK{(RqHSMrg$;n zU?G=NBhKYPFtXc5-p)e{m~T=X0lb~joVXl71eNDV9=gHI7cC|997a~HrJUI5UOI3H zXMa=o0pt;{*KX`A=}CNUAOOvrn+MYO7#RGrpHcA?jK5h4HiKQCb6z?>tVJ<+q_nMK zCz?MrvQwM63q&MP&iuwVE|(q#L$OM;#McUg&vTm7)F5D77XD&+TTpafMMuGgW5-oj zb8KNw0p%YG5Tzd>2q2cg3JNKt5De2CIrE8P2U+0MxVElU!EUm4uaC`*~XyVOelEMf~ zL?K%Y3)3s)=L*fAz-c9|7JuMvkI6xF**@y8;J^_vj+{y<<_?oy?%q@0@b_pA9&QW)*4f6GYpMjZp3m zWaO4dyI3jp0nm8G-42>(E-TjT?bKR~F(BZ^T=^E3KR9rxPx+e+fnXlXE!Hv^$g%@XLCT=a`2dkmbvV zW&j6bnxmT&w&phbXMoc}2i4DQ^Mq}lCt11Cs$c#1C;_#^(XDFjGVXS}cR? z3A>Viq@M{$817spl`8z9{)6_OVD;m~e3j@gD&+Z*3_orce4e3?UYv;n_(n(F$b#Tj z3(;BIDf4uL;j-pFb(S1!#o-81+iwSqf(yyY&$Hb}lMUm`epeo$ zqs-weMQF0V6Yuq&a=g8*Yw2O~bVp<*xibCfHv>+s;W1enah_k~%)p4$hBn#$$}rWN zkTyTLU1{%@h7GFff#UvoAOM>Ez3=hY%WLZ>atohL?>P4wmVv(!v~E_4M)m$H=f9MV zFc}9eM|plq!wuceY)C->yWwd;*mvBg84{Pq)Yx~*R4NWRF^<(=5gVU8)Q1|J@QXf^v|MD9C2`4bl-4~yuV7%1e$glsWsrQkkz-jr z)>OvrK1Mx<7J%WHpY_;rp(|)-b2p+C5X?wSF5hNgD4zMAGgDL<;!zj8p*gdPc8H4V zrsPu*PDv0u0x}@(^_K6}v;6Y-j6Sf@wJF1`dUtvVU_jX>lUF^C+0_%FF?hPi!5qBN zJc%gDASl9{nS-w}*?wn$E_-cYf4?NP34ff_JFH+8dNr2I!i&)hx>xE$3MxbFf!77OvT3FC~s5ERhIPHnKfB3gui3h2qaoP0pJnqO!H z+nq~9X$k`oJRkc#{O?sQaDw~u3-5gXKVy%;SGYvutCk>lP^e@b7aZQE9w*^PPK<-!95+M}mXp?@Rq z^&a=*DEZx2t_{w9Fs&GQ%JvFZdMb7Il?y^1w=69CwWg;!8GF6JlNMXsDlj_|;K`Ys z6CDX@J$|UM4>z?A!gird=IYc{)2Df0!?ev+)-3i#a$952i~K#4ljojcqgUH6=_^h1 z@h17UTByu=ZD&LAeD>RsV{x4#7_isKm7en%L^Z_HJX;Z)qnkyo6U34Y;=u+DUD|o} z;nC0BBFU5oV{s*7CysthYRFP`a$946u5f3>hJye_X_RGuy;}~!RH(tj3o7ECF1K5> zX6KNI<^2o!k=JXMYqD7xWKoMf&g+2nXDXc;@k;yOwgA^K#4}GHrWW7Kc)@DSUgWe5 zel+B^G_ZE(7@3S5+1#zWm&V=38JCeID9;unS{gRY#DY+Y^`!Ii#s;@FGA`wpRGRwV zePK<$&$rcs3+J!5?TsCr!brdcZ8Hd{V+8TQhWGP+N04E)kCQt+8(Cf#5q3knb|a{sT)2a!BR1ijqJj)GDK^5oNG$eM!49jJzZeRf8Pz#p_^lB4u< zq; zvBDBg+6tcNfjnhd13NV$x}T{1ILqU{74?xhHeE7lY%#9!vBmiDR=qE^pSX2}6K2}) zh4T6YD&=ZU%Ib@xoT~f=owS!`QAJ_B4Z7p3n3Wq4p^(c;zOi}a!8-2e#K>23-d|VJ z%#~JYvyv|A&Z5dwe|%J^I(BQFhsC2;sOovic#^cX)n`Rn-1zqDdG51kyPn+r;^Kyr z)-#NCLdtTO`n4qRXGtJzQ2(!I+4%F`+#pc6h$7k-Oz+V1D2gh0?pV#UnAuIYtiQe5 zxUx78f$|(#xI7aNF02nC7kJg)9p7}G99(ZF3cX3ZpPs{*ZO$mY-q)cjQHCAyc(d;ml4zC)@vE<8#g48&Ue zOEpE;9SqD35p~_!EdZC8W*esUs8;LWeU&OEz7s#w&}!B3!OtKGqL7g{Kb$e0r@2^c zeu0SB!)Zc#SW9?$K5wn8th9|B-YH%N!8K3IJ9$}mcXw+p8(!fFJlG%wZ(;K;Ygx6z zHJv@5r~YHi^4{QTcYxfxjmo)oK~0(7EK5qOsULQPcT^7jjC7p%?K@9%dYcNyX4;+WeM^l@={%IPZoZ!Ew= zDw`EZ1YbG2c5T1+JK_BNd~{U$ujc&wlQ>9C%$-0EQiu$wfK*JOKVp;UK`za8YaEYH z|3iP^MHre*Qs;erCB1r;zU;$F)nA!+3RvvFvR>1@^eEjg??+g6Hv@RGRnPmqFLXni zjvNOyOQ%vv4DIi4&meKOgW6S_+YLx*58_<@3b(nu$O;W2B4TF>b>23ABL9;mNI5QX z&P8U7evt-EC)+}P4pOiGD~WeQa_*R^0Lj+>F#Ja-ADfQQLniP)g8RQ};D2~)(6{;j zgk}gvx9%WWp}X;{Cs<|Onb64v)#)Rr8!>7*gI+KIkHtWzQA37L=JU9hGy-a2(P4zx z^guRt$pL5VQpSJe_{{av&97WHckW)!&iCcsZ+~{8o@@T-nU+Zg-MardW-{E{0}0*j zo3$B|(vV_>b0$I0_)ks_8J(|Zwhy2_FHtF-{{IB`-ee zbCLR#9Nxrs77DxbR$b)q6MWa}^lq=Js>;hF#V6yxn^k(h;eY@6SF>*#{*V1IH;nwF zFb|K7DK>%2n&_N^1!dOO8~j(!|6ZNz(>jct8M?k zH2y2;*b$;Rt*y^J8JylPt`ZW%_=VNu3W@Yu1*)a|Plu%cwBg_0{@?c-n9{_V{?2!F zaoI>v;Bh`xx3_1C8tm$RR90H8sWeYXZ<(Tx=kqj!L942tp4+yBtZjx29@czt`CG>p1JhZD0<+S$nLJjK;fLy=lktEBG%L1EvMZM(3@; zwa4p*)zwwdfFlY|ugQ7qXIIE`?*ISz>#U4-lZCS2Sn1Yle}A!^gdb%(dVHea8{k0a zV`M!0V5KP0xa{{(X{aYacmy-MyZfUlvOeS$VSAu#$Ftu-OvXCs{!!(5_0~0P1Drno z%gkVBEXVRK4vUI2*=|+hz?QkXd%ObNzyz3e6W060e2$givf!`)rX_+hFJ^>by6=f| z-B9~8GgrG{Go**kO0H_)Ll@)Hpc|;%+c9LiwzAuem39Z?Rkk~C7#Yu(CbZ3|@|uSB z&?ic&-Tes1oy#=-zPDVqb>is?4l7R8hteh_pXeSFME3^Df+O-+Xl z==SW&Vm&sM>L`gNjgDxQ{hJ=#i{^|8DG7P;bJwXD<6lKpMI}-x(w;Rv4jp6r6;)yc zoQ4$nYZ_MR^LY=>>y()sji_m@3EzW35Q8LruQvJdOGb5*cf=rqmm%{2r~R@N=YU7r zkfV#EGDUN@v=(UKu-v+X-JhBW&$3AbX`fN|Q!PRU$W?(iDq$bbMKdZhr$D{ZMTqc; zpWVQxL50gzD|DManM^$6qkjuQix0}iHJuy=U1zVEAKnI)e(|>aRJdXq%OWm#G-GpF zH#k*J`VM^B=d!JIdfuP?0!hFc0R4Rs;g89Q^O)niPQDIWA!=wy4YD8PA1H@R8qG>R zRgN+JhEtqbEjDR1N}hJyj3j0l6aNAmL*p~ZC7ZkIp@Z)slxurRl~xF*S@1aXJhmn8 zFM{c6S(RWby1q*|iG?}-*>Lk@Yw~7iL|(HgG(8G@&G0T za@(o!5GF@PR?C$5m=yAw!h{lb)ont&dqb0)vkGSr*;r~GI`zEA1jF3CWzDbjw2($~ z@+NoL>ec=I@L^knQLSdl7CiN(xtbk`7m6aVJKGMG&aUE9#g;ygwVbuDj(oRkhpbqN z;G?OEU?&(PM=HKpu)KWU&whjlHS|e4(iINUl+RZ0$`#1d+wU-yCp9*pDq>O2h-BhE z5CH8T8+&Z|d`A;cx&{-hKP^Z!L)Ce9mW@iqf~kaZk6>GaIt5X8=AH};W{#lq93HXY z-Ax$zDZMn2vFf!kMca_$Km{Wcq3v9lwp?sx7bUz&X1~(Ab$UyVgkp^BnhN2c(~a`% z$TPxMW*0oq`IA7d)o0apJo}HRN6v{P(jK9%OE|?H`q@z-san#L`UOjvj!Sf6c3ypv za`&0i1Ijf971qcuVev9STK$&ibR^keV@(N5n(Ed{bZroRr*3`rf|$aADeqZ|YG*pd z*v72oSj`cqp0uE2ZO&jnSK2i4+GD#ap$;izeu?H%DoF_oT7b+z=dydfoGe%iBc(t$ za%mYb5@Waj#;~|o58>Ffd|J>EEJX>RAPihyaZ!UQl0r+1>4g()x+}u<3Yp8eAn?1S zUNUK#ofgv6qo0>J^m)Pf0=r=@LU9hYjGHm-IS;7!vI4KCl>K;m@VtOjDNPsOKB{GT zmuQia4g!oX_X7TTGm)iGs1)@>aSRR_(hjbiHk(<~b?L=vexcGfbc?#Gdh=50;Zf_a zWB=2KY*& zGGDU)cs(J%9_@!Jhm=*E%;Y^t<&Lg>D5?^=v=46sDV0$GqYHNlO0{`p|GfRTTjhR1 zd_nJiHD?Mp%)sTUqf;ef09lxD*gfmq@>S4-MW9+K)Hs3h%`AIL!$}dszvYX??@g6O zb=56cs`)?;RAa4{Vbp=(CG$zM%p!MgbplA>(eHYdqcQ4W_`-*5fdpNYB9UvQMpL+N z5<0V=xRsVZHtPCXt{+$s#`rfskR8K7LG6SKSTl44IOCr7w2dGUa&a)*ZX`*`P01;fKkGpItP8vcCK>i z%v5ib08GGy+VBu2*DNoT7^f($8ICF^M3WL8y&So+%_Zo5VN7sgLivi94vGM2lO+24 z;!wx;#Fs=46>tI-as<8-`H78Vxn*2Mi`;^LGPlqe7 zR^LAnJ|5QGL@;*Lomj3qJjUca%)N49wEW%iba0q#kHHqc6d4O20wH9{X}|4nrqf#i zxrx*GI2s%vCM7q>;#g!aA7dq)ZY1}NsI|GH}2IKj*#Wc zqRN{`dEx>ogLGrt^ueO_d$_bSk{Dg{i3+7Et{KQgsM~`JTH@uBZ+DhI+R4d%Pz=Vi zutE2)LaHk%B+~w^F)_6Q&uXtpr2o=wasH^pgijY5Rk=ftH>`2Vf>N6UPDrbcCT_>e zuDQFh>ur>f4HE~=FJQ93nhn!7D0F5&G+(pTp+?Y~6zV=o@OJPlSTbd`)aDlPs^Rjq z1jjj$}h_a#$WR$b+@x%J3H@ITe3%lFazX9XD3T2;9m1*>TeB`5A-!6d>xVgaMtX(O=GjpmPnh<` zNO&LO*Q_=+Bjp4ZW|`zN^#ZuwX00wMK?}9F;?Bf5FS&kk z5j8Jfu`ki1$FC+^c*sooRohA;C%Ed;qDEa_1xL@4B*UQ-v5;DF?Um2lyWDcej zuxD(%boC-mq5%Md#vMom;U5ry+LqUBvPGLRkm{7B)dXF+pbxXsBg%pqn1Lxe!{k9a z^O=2k#h;@`k=BDrf_a%*=yv*361LN4a^RhB*KC`%EzD~u9w5|(uQ%;=j=Gw4JpkyG zzg(#$xH$){z4Ar#wyLI=37ogUl8V?X&vLnZ(S?!5psX!*tH9 zmUrf%6$_(ON1QFH<2ZPX#hN7Yrj^~JlMAD-L$W`w&||TbyYS5;P&X{(^m6POOyiFq z!~Dz|F3lexuF4oM@#Ui*~*e$Iy;D@Jo-!7Y!GvMK8EItlGR z?-p*LB-PiX&Wkdm18WpKbSnG77Kh$7=xfc^2C8cJ))&n_&ye{PEpI!2iNwRRe=_ zLO4S~wPuZr>I_^#dxWw!})OgYUFp`A5!>Q5FC;x2KG6QRVCT@8P#lmV=+Wwm3V z$K(xer!T`-24PE5SV4NPInHtMGA?-t;jhc`U*y4bJd1o?_N;IyfK5dg?<_v?D=HAb zHw;_PnG+4pz8bXVByo`s=dh#;WCw}>3P-*K@vK-V#~Oyt&^Iev9;;y|d&yk);xcp{ zOUF(LaULZ6Ed(f?AKt}2c=HT$F|QWVaFDorYw?3e;mtGP*9m&=e<`5Oe?WLd}RoR`hyS|NA!soC|Q5A+yLkUMYOPo*N z+3gAH6d%5?J(fOgIK0CDA=unrh!8E|bT2vb_P#2Ff@sTL!1&swGn}D=h)fh&w3Zh} z%!Wy;VmG5llsVMC#fcXep*|S`h(@BcoK0gc05>50dxu#DLGMe ze^RA8*oZqOHa$C&!YL7_UH4Ps|*ZAK5_+j}p zV~FqZIK|oFw~*CikkM zxyogzmGj?TDjqa%C=22$IN|j{04OwzRxT`dk;=NgF3``L%x!_>EDKdV_xv$e^E4P8 zJ~AkdRA#jjc>si))pv~|`TBl2-x!ceOhh81y&xQNo6^N|-D1&Ws9k_*rctQ0^Dvp_ zQ1tt}kmY<86qzvdo=Z>lE=DaEUww(Pl4Zb(3MG_*BmZMKN4k!keq{TnOj21HLB0nI z%}o3kVvS^d=73PiC(xZJqp)nm4M{q=K$8ur=W^665vg{f(3wK5Zo-VtqeJf?EY_$U zOxu*Go>fxv9Et@=1?#6dg+>eK=2fG+4Gvnle8dcaiU}Sp%uIDuIhGB?;ocWBuNdiG zYO-{kT)KJ54Vu(o z+g%E|I%5A3LrdROMC(%cnufGKQh#W^p)Hg)D>Qw-;4Rr2D)e{$@Oo)xJ;>}K|L3G6 zcopt##KvT3VQ>{;DxRNRf(4920(%0n|B3?-B9=@8Kwn|ugj5%AM!Nh0VN>wtZqd1?E!N^Da&&R3Z-Zpoj5*>2QOzhl*#G714 zcrTya+@vC9y#PiiKCPmfk=NHqDr+cCx$fac5N~33HLesIuqX;sSsY@hEY0n_D()nu zE-aFbnZfvz8Cbw)s#wnd23;@EcD^qtO1L)};~DPl0EYk~xy2qx; z|MI(CD3OS>gj>;zwn9=cOv59nS~`O2O3-A?nGt4~eEmZMKWO8`>HD~iX0c?*;q`}~ z1GJh9^Pz5xpbYc(Gu*!@qqFQ~;E-z_zEnTA4_q~Y?hlGjOVZq#Zi6bsqLEvHViOwW zOcE*nCv_2?1UX-7Kg4886AM-YMueUqEiO>~I>y54?G|sM3>?7JwGsF6PnA7)7TnYR zQCVkUDTxIp+z~U2COP|B+5>YNWPLJfQlZ4x&;Wug;Xkh<1}zbnv(J=?VEI9*o`oYH z71&RDi?AM8?7f^G!7k%`rOQI+{7=DAn6Z0)PyZ-!#AJKGGF7k(+j;%**A>Iq=ne!r z?P_P+zio$aj3keghl|mSfvT&;I$BFu7~_@Kj4YkM_Zy%E5CAr5lZn5Y7%Xq-H>y=I z(GJ)@&>TUdSQsDnoO99R={Uz1NB{tl;!dQ0I|`dHg%`+(0z!Q0tt|m;g1Gxt=QN~% zzoX06pbE+Hg%i03GvUpR6Yx>Iv^QSzp9){_&#ISH9(lRDob@8-4ti|9E-^MtvKZ}3 z&bD)OOfoMFwK4~`O(WkxPwOpq%|&qxem-_aG9>Y9OQI-@y6yH6X z#2mW=?{Jd(JPtKw2zMmbt}BHy*b1iSWu~1v>WiC_smDz|bbHLX&opV(n!U~FY5sFt z=P;8j`kJTbg~n}=L-_wZ&rI~KyM*$Ao|a?9MSIx?>~yo>+17GO$qH6K0A@Ijm>CLN_*h`K9@cZAV)_X}T0YBOziQvI( zWNN}YwiKpCFM6GD+i~8ka6Z{$6`5AglgB8W zrrmQXzr`xz85R)UX<|c-kTl4!Q?Z})ld4-MpEuFGHn6un zx&|F2W0bWi_w~wDarg;h`ZlWf3RrS^KfenO4k8@w2r^xwKZCb`2v`oPfo8kj?qIPX5!V>xk1n$|@zer?QJrj_)DmCclt)If6ZcfuwATu6+b7E!>JnIZM_o)DstYNx zsb7!H3L-jQZQbFnC*SQ?8ZO?P%Z_z`PSQ6G&9bkf^16R6O!Y#r(STekR40D!JgHBEg zPZF&_b0qlw@Z(I|wDkK_31Vz6Q?AMBzAa^zfHH}%hBL@0o}3X$Fi|9647M1yJPvPn z)S#V*pU13W=}0txN|V8zQ-tORazW_q4;xL&5V%A479Xp_!I_AMbi5soSK%zTFk{Hg zO?VSHne8fxd`x_x2Z1*JCJ8@;Q}Dgiefg}E!W4dsv$<_QLzqf(t{Jp&_s_KWM`TSB z$$17)p=vN}cdj;sqF%H1;ERdxVdIhY%-B5dDlY!GMLY-wc-|-MLRMl-u2O(Qc}23m zXCq_qis;8gvG2(R;9xPCV}uB5`|m?>T`7`gs6NeDfa&%OQ#e-ukc<1q=rac4JY4gO z{yQyHfq~b5uS&FJoV)ZA{(4ktsK$FPW#HN6;HVG-joSQ$j0B1p*@$Mi+ZgaB#8bX- zBt^vLz#gg}2J!_2c|HjJm-3S&UP^Vnm+@bOL>Ny7Y zKJn!Y&-gzq03BwEm3#5?>eW+qAf5tW{(b(lbmDhjj7uS=c?47&Rj2$Ixr59%CvyeM zBU|%mB1eK>dPP~jLQ3!_@rlG|nQX+RP1B_eB>6IJ@DO{HKM9tU0Xk^`< zHy&E$s8;+~xaMNs-B3M|@=$Er<*?fNw$ow*b)#VsmUd3Q3MnOx}(0@RmrwFD;G7;QP zF$tDzl9K&_Zlmk?76M&or>S;g!%{C$*}_|vQeU8iA3hcg(>yn)+=q*->%!b>8xoEJ zM!T>CX#f~Bt7TPr{}`Wx!-p~2xza-*JMvYDQDeZ(4FIlqdhO!}@zVcPS^g<_> z%D;TBNdInH0j1lM4OY731r@_e90FQmq|~~F!~ojc_K)?*VPh5mpeBPxe&RZ7JC>hX zy=O!#Ru&vhjk-4Cy==^n!B7W_^>CUVm98sN{Z#eh$L|&gS-PsbtMg0*a14G>=lq0n z6$1c5RL$Fs{tFk|3CMnWt|K!e?;(I(-x;(Nk$9w$(E53G9YhGG*Xxru>4&jgvfAPC zl$#bH|a?Q*_I1TZJ%I%BJ_uiocwsi>P5#6-C4A(X)_Aas|nsgr(wei;v^Uw8i z>dC(`o^VhTVG+}e@ouEj zO7)B4ueMuWLh^hs8W*Rd&J>F6Ef&hHoY;0Kv-;HsXLV-xMS~TJ$HTJI zQs6r)2R*sj`b3Es|LcsZi;FlblkS6J;mVoM(#+DDOM&0b64;%$Z>t?M;*?dt6)#wE zCBeu)i8CkHkde#A_O!h3cBGrJFq=ltvB)>B(#KKCVJc8!sWFvZz~oD@-H+7Duqb+y zksMIyn>PMl;z$Qu1``zlT#t=&yLmaZdMmVh#jL_-M)zPW2XG6l4;Muif&_G*=w1lk z{rs)Frol(PDC6?5WBBA(sU2!L)8hAftS#Ah`LY42rgBWr+%Sjh_OUj3&F6X{9#UUOS7mCWs*g*s`qh z|30}9;ko%5%9)zlep`M*jc{gLx0BV-4-z@A_ANVPb|1$Ab0`rt{cevjDKMNQl-FbH zeAq13PP?v+oAp_I9HCg*240rG*If~CFZ7YCtHDTY_t9EoD3oCo9w-G*@EUww7>3xK zOrjg5Cl*en;ClN)!xj(^9N>N%ukuMonMK7naqaQfO$WVw*uDCi2L996=FKdA#fOr` zyW;(FANtY%1GtL%UReCs5iIobNAYjp573|I>a^<+&i02XMSo870cKout_67#PIDFd zh=_>JO?Vgf7~nT8?nm)z1pmeToTv@3qUO*-0=-106USr&Ue|~3Q3g0`l~ZVG!c>Cw zTLfF(?$6q|UVlx0<**X0|Ee|q^23wy$!eR6i_0^9#oQ-*x0@fcy}f;Xyh5AB_g`Sm zYFvE%Xb@U2wzH+Q@8yIfq1d^vMXOqcD($LDFuz;n)Ap|`Fs&>S=5Bv#t>bLuD%_FhpBlL{ee?b=G}8vix(Fg8sL647{`7vS|#7bo@!j)1#%}z4mZP$d9(0 zRo-`}KeBi|3KBy8gUtGaX=zHHOA>apo$e-B@en}Xl{aj{y|VWmAqeTJc35kV67YSv zntK685FlMHi2Kc0T0BmCf9(|){;v-b$vSV7%#oNnL-9WAExr7702^qWkBAV|S<%$g z1O)KOqGpD1YLqS2o#7P*ilkIifC-``FwAApwKCtFz)9hN^!|U|ukRL9lhPQh| z%7rRT6EK9{r{DQ4&|l$koq`ZsetrGbkm2KbevH7cv@vhk+Ncw6gszM}~BK_wWj)RJ`}kAS~ar2t%o2r9bfCe>Tb&r9oWm9aNe-# zVVM?;JP?9lmcaXmwthlMN?)Ql6$#zyfuui`7`cuM*3<8cF-a2C;aQ#B!a{Rr=kx2M zrAg}l@1e1_zZ#028Hc5X&tHFHd~DeDi&LYPoz<|dkw06Ns4gu%c=h<>)iZBO*Kq;X z_wxvAuwVIgIi<)PLECq{(gF^X`+3utqt!OAyAi{OeNDlKJw-uq3@KwG{3kN#JRh z`L%^9dz)RHWMyYRCJ5doOnP8qV(uRt`0aT3?o{^?ba_|e5&B$C2tIBIj*g89f^g@M z0|Afg?(? z9f6xBkJa~1< z#Eb8D$BF%FZfW)e)y`!K;>ooJm83j%hmRM6D_p+&;-9eAm2p;KrkJUK5$DCA3fR%b zx@t{y^BxAWwpmqUD_)PgNh;BSZaVFvuYDDIhjVB4E|OMXiPBV_e*q*~+>g%-&)n%>}_}vqJG%yyAgo&5J*x3OW3IBZrV!>uac~6{;PE%-3qVSo1DYU zI5R<$0gnAe?e`3ZP3ir}pahnTwf!4i$K-QxJC&M5w8%cEb|-6;G)_#jyh?4L`TiQ9DG?5 zjkwR)M>=z<1(ll5WoR?Svt$m}vOxt6((QM_<1BTfpR$ofrqWz{|yYjbqQI6-gJbv9|)p)BJu=Ng6JdB+=sBX=BGN~T|g{JwtlrmlC(bM`zRoc@2S6n(gT?>VSatRUimK1O@Nb&>S zhShU6N(jGIUWtEJtC6E9-s|8RRC=c<01tOV0Nbe100#i>P%nrMmkf0yzB+(bLOWPR z0)G2*PwNYTz{#fX?d9;yiFL=5ot{o~u5u!cHya9U6-=O;#zClH`q%lHJdo|c<=d0l z44rkU{@Jo*eF!L_tOssm8g|b7oRiZu`%x`zLJ>m0zXjV!M7AKTX-VX{{n7Z*q>Rsc z;u^Lu4WsK?L;xS(^(xY_J-PDi`(E|in=6b;XB%<{(j-MWVxLv-b2$Q(FA~ zZOaXitl&jGWnI(O~x<@W|iE%1VA52D^mt%{3e3F!a2d z`t%N{--FCV^#mF?6S1hs9;nFxMEmAR2YhA-?5yZ5Xa}=G3?}s&yzz4K>fFka`*@aU z+~b#qt!(y&>?@zF#(61=1IwW|Ni?u%jogWO7s-3^HEhTv>tF-BJioAbBn*vg2~7zK zFq>(+hpE^o>EUuvsqqi*g!{q4K3Ll}i|?A}JbZsvEDia*Pyhf~;7*dWJ!~or+(5l} z#lrpHq!*t$imAzV5FOwz)AT47vMBIy+}Sxp+>8Si=uLwP3-lIfU)l6@LDxX92pZg} zS0OadO|8MlI^S=+57XdA{R=$n^^Nh#zrzT}#(6tccf~66EmFeW-XZByM;DShuim+o z2=jzur72hSOM-cXHi(W@vKkN7;#+uxgMpAk2GzOh#=Tj(q!6td$(u?7uftw(FR-iy z?p~|YiHvX`#Vg|=`mK5w;JFQ{vayU!qzb{KDN4%(*5DUThJK59U|gzvnO;-xJP{I% zM~S&fP_vZxSVQ|eauG|_42BtNX?pJpEv1coc{vcN5R*)oFB+S*gN8J6j6UJXpwZ;x zBtn7*3*?J4E@XMgY8zQjA7H!LkQMI{64obnwl3MM*&+-@=JN-mY#6_$ibKmaopU7?y~0(z)}{ylLS#$7ne^0xKXCSD28& zw`A<@!Y%LD^p#>Y$7lA9^>fsUT7#Q8RvH|Kt~8OLfH3pGupygPL28lFfAmCMCFQs7zZ9|_poOV%uL!VDB(RugdfMK38- zCq|7Sx1Fc}0*FK>#~!%3pp`6Bwp|n7K*Q>q^DnxwH7Cq_u>hjFMfY7RBkEkc7WeZ+ zh%ywfQ;J-q<7p)4gh9O&{Ce{nLD-$G(O)MM-86jnO|w~~G`5{xEWD=Rt+hH@elDEJ z+@W+bQV67Km>dTNQb8UBA%Nnl>u@5(+h&)AQ33{dy?LJJRVyM4q?cbc$nmWCOVEvz zB6MQ<%W=IeUXH4JDAnv~qv|4m_Pek^;-F7T@)qn+;Tr@N?oK}_K=pl4kv3Dc#=r(OZo#TT+lFo$==g2O znS-7FwW)~|z3CjwwK3J^og7V4WM9{WV>n_Cb2q8_5`H7Bj6=ggM6sJc$_Z=3Er~{{ z2D`p>OZ%IR;tB<|!q&8)&%Yciz~KC}-Mi(h^?nOoJ!iM*zWGhfS&W!NF$*pQ(-suG zSwtWC5rKxLz%RE@b!r;Gk;IH9LZ4|_f56s&7#}NW;>#9}miNXBjmUdn>0MTgOM8hL zqdt9cBY#*NHC27K%0b#S@tAEt7%*|P*X-w7S*;o|7v1-QYZiqy9K=;znn`jChs=Qn zMC9X4Xw3IAH;RdppoJLHw~gz6Y$YsU$>QwH(`Yp)I~V5ir%)We#Rg`0m&e#!NHt1z zv_DyktCTM{CI2*LaHh$W8HPVXT3WprP|3`UdH!h{t;51Go}hf zn2X?z1sfh|((9gVDD{2{)yN#SkRc`7?cE zgY1g_KIwIW`b27T80uOiCyE2^Z2nLMgG~JkB0w+LV%VkZj-fmki;D92glAa3hXfZK2qxD$mV%yK_hV?ynR$>PF z_-?wWB1wgY%c{K@Qh)DsH!a@RK)P>)1ug+8mPTYF0^iaEDnO*;m4;xaG+ewuAez7) z50%HhTOtw~kp9KlB+!HpYcVl4LM!7X|EGc~=idfD63XVhFK@Ath4PhWOns9))K+k9 z$&Gp~IlP)MxN{V1kxRixbaE`V6;d*@q&smy4maYhnqPF*`uN}pV>ObN zg4gxao@}hHx)&QbmW$=`Qy9MRmRIabSzbu(IKw{`4nhOq#>jQvpzy-*3sFo7$1%#FjfHAyL(up31q)S4$11K4$D>4)$5~qee_u zk?cBgE8*y@9Qu;(JQ8^fqSJ03y7f$m0E#0vTFs!wA(BH*@9~e=_Vorw;yt$})?Bp` zgtWgHBE&CiZqG9TY6-{t=&LQj)$X#WjaHnMM~cjwZcbjaVyg13i5aMas#9Q_ciFOK zZF3=mh7A~Yb=r{<8On-wiXAB(+71N+Y<=cfQ&Y1Jwc2m&nqZ-uUZxBsw*Fyv%og9| zCnri*465hM+;za}b6e1(>)hX}Q}AQF67Qn6uXcY;lWuQgJHuM^Hpz{hd=5btN%ol; z+UEO|7geO8i_ z2KAIu>gjlhn3t!-q5)O&s3cPcPBrR1X;|n3}$%MsJa2&>jx>;(`Ci0{%<1 zh+u0KlQ*G07)|(2(%jvTsi?fX$};|Z)be2c;2zzVne>D&t=5DS*D4=IJVP-QJ3!(& zaPu4ES-t(TpD9JZG0l>cs4#id<$CW}u68^q+b&5B242}M$^u3(3mabU(XZPx&k_wM z9GNn=sN@$K-HrbY|EfLHuKvf;9&7;cA7842>J-^FWB}1Cc-Y#1h0BC#tkJJ} z4|ym8&yL0Q^5eSq2yDK=%b_iKjWf=K)h|zEe^WD|Ve7HK2#gL_=#|dR}-FmuLS@HS2epTr)IGj^V z$o>ttNNG3Wl9LJYZXIdOX~36hGYC4@RT3(SF@SWX#q9HjQ8F|Z^G2(ef1O0Z#Z`In8{F zT#g#}6XoT8@#=-)8Mio^&)0pPvOlSRR;k;k?0*eTZV!1c&!I}8mVe)44%U%@^J*Tz zsph#%zk1#I*HHusHcMx@Gwkn9mGt4rr6jXbUmveHaK+ly`$&z5rJqOMot>%iS}r06E;MJq`Ew8*Lf31)%)SDXIFNBZtz5vIRC zK;S>`H!9^+>e^e@$O1k*%vz!&28Apfm)OVjEY7{}ATY|}){&^xZX!}Gn#3_C8!W7a z$u$#Fmhj(|TFdoq)%4>`j+XmGHO4b47Y_q0e%8iUk^VG`ONeT54?kW8vAX_hhx;m>a<|%@DB@soh@t5`4rVW z6C9%k%JMaxeEu(`dS7SC=#aK2lM09wvSMT7iyq9VrG34B;mrdF&^R9n)2T7zr-70` z+Q*l0K;8bM$R%bMOxM0*A}nXIU4Tx@?Hl^LOP;;yvQ^oXcw9>dnjI_2ScjHsZi zJINxnFn>nWQwaabU2OcXQ@VoMg>pdtugKipu0g);P*gNw{w6FD{!43`GAs$3lNC6O$ zmgyS~VNHEfi3fm!a9DqA-$#My%_{ls;47qGAI^M{3YND8kjE7NsR10Y2FA>TTDw1{ ze5Zo!;c9^g8S)_v!?lF11OppOwteJ+aE;P8K#0!K`K=gH)$voGDy``YVd8{HNPp$h zcnBe3DHl~e&-y8q&-FTh)cJ+3`sYa(5G(hg{)+`K*0+LW(r9)8KP#+vz7ZCMeCmR<< z<)cXpYW;@RI`6(##y}BW*@%)u0R7XWKe(S6B_At{zpwi+TcW-qO`NbN1v&!*&r}-X zc3|(lOQc};#XZq}k#61Lq|I_Wm9$TJQ=~gK;CVn%v9pmw87B{cS8M#)yMA-d)lyko z6&I7p)98|po+y_xbxWOeF%Bcp%_F>R_FuDv$a}qfa$M4 zn!uxe_aYl>&wL#^9R;c6E?+*mC0~5e2W8!_XATWl=@5sTnz0(yH@@3aj)L{sgdKj zWYZT}1D`eHL?{TdWXzn&S&gmGIVC>X6Lt)uE4E5G>4gtLKBMt0&uF}C#i=oi=kB05 zsAPmdwL?>}OZa%$wq{X4*yih7_etf}k{>s@y6vfxT!i9ARLwUa-_D%Q_n>cA6ntNOyMW&C2!Y>RX!(L=ki}iR3)-91coqXR zrlZkWTU)c!eSk{zeYeg|dTMF++)}X0oq4zhi$h2mALH z@iW^Vql%^61tlVs?DHmPKxX8Z1`xI0i@lWl zyd%AFE14DGu_M&qNWBzI&l~e)nUCvBD6Jc8H55pZYSxRDdar5u{NFe2 z_SBF2zpSzl5l7w1*1_HF%M&f?eHIl&y~~)b2tR zQ(L~Bxp+=JHGlG0?SSAkyzk0s1AiLJ*{(3{eU9VV5n63s+<6;6Xp)eP^^NfkgJ|RP zU-G?8{ghAHEp3#lF6CK1OGU+wLoQaXK^^%;ddkYSvuHpZk6$H1s;8DeT1vq*BQz>q z%1Jh0cK38+>kipHTg#dU>BoED ztQ7&ccXv%GAPiaiwBum!-THgAv;&kTh8Q2V^qmNQpI#xVo(7#*KW#D!=-&Q3g!Vc> zJnA#}-4Xhrh5sDHa*yH2%L+lpKc|eSjDHj*uN0eyaLfF&w;P}AU`-wJ*U8@~_rY`Jt39*L&j$H`ZUdWXein60Un_nstbPd#DA{NylT z#Kncgy&}njyA{;j5Ssc>KQ)`GP@9R-fF4Uz^3gAk!bV1VewBQ_OC@b5ul)RO^V`?` zrnB=()3dhyr{6PJkB)2kxT_;iYu$t+gpb+RJr1Y(7tE;7hZWkN|T=avff#icq7LI)xj3?ruSUHPUM zqUFC0n#FFh8oRoZHh-VZG&7e{YZ%F0kFdAAR0BIS@2Z61D3!0mh;_d5c?+HdcJk1u zn~mpqnlsic(E3MbmB5b}`!)xS6JImkP4x51$Ga9Jzxx@i_IiicjPLKpR%0J1M+p6N z�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 Date: Mon, 15 Nov 2021 17:42:14 +0100 Subject: [PATCH 02/16] Delete UltimateKEYS SW (Linux) - Keyboard Layout Image.png --- ...eKEYS SW (Linux) - Keyboard Layout Image.png | Bin 63922 -> 0 bytes 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 images/UltimateKEYS SW (Linux) - Keyboard Layout Image.png diff --git a/images/UltimateKEYS SW (Linux) - Keyboard Layout Image.png b/images/UltimateKEYS SW (Linux) - Keyboard Layout Image.png deleted file mode 100644 index 2cfc24a7c66c231980f3632bf9b469eed370e49d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 63922 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

$q|@Hy;1> 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 KK`P!E2mTM9@d?BL -- 2.47.3 From fd95d219bfede1b108ab414d68ff7d0b5c1ca32c Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 17:48:34 +0100 Subject: [PATCH 03/16] Add files via upload The labels on the 'Win' keys have been changed to 'Super', making them more OS neutral. --- .../Layout Generator URLs - UltimateKEYS.txt | 14 ++------------ .../UltimateKEYS - Keyboard Layout Image.png | Bin 63030 -> 63451 bytes ...ltimateKEYS SW - Keyboard Layout Image.png | Bin 63140 -> 63573 bytes 3 files changed, 2 insertions(+), 12 deletions(-) diff --git a/images/Layout Generator URLs - UltimateKEYS.txt b/images/Layout Generator URLs - UltimateKEYS.txt index 2d51daa..798e790 100644 --- a/images/Layout Generator URLs - UltimateKEYS.txt +++ b/images/Layout Generator URLs - UltimateKEYS.txt @@ -1,18 +1,8 @@ UltimateKEYS : -http://www.keyboard-layout-editor.com/##@@_c=%230075ff&f:9&w:1.5&h:1.5%3B&=~%0A%60%0A%CB%9C%0A%CB%8B%7C%E2%80%AF%CC%8F%E2%80%AF&_c=%23cccccc&w:1.5&h:1.5%3B&=!%0A1%0A%C2%B9%0A%C2%A1&_w:1.5&h:1.5%3B&=%2F@%0A2%0A%C2%B2%0A%C2%A9&_w:1.5&h:1.5%3B&=%23%0A3%0A%C2%B3%0A%C2%A7&_w:1.5&h:1.5%3B&=$%0A4%0A%C2%A5%0A%C2%A3&_w:1.5&h:1.5%3B&=%25%0A5%0A%C2%A2%0A%E2%82%AC&_c=%230075ff&w:1.5&h:1.5%3B&=%5E%0A6%0A%CB%87%0A%CB%86%7C%E2%80%AF%CC%91%E2%80%AF&_w:1.5&h:1.5%3B&=%2F&%0A7%0A%C2%AF%0A%CB%99%7C%CB%9A&_w:1.5&h:1.5%3B&=*%0A8%0A%CB%98%0A%C2%B8%7C%CB%9B&_c=%23cccccc&w:1.5&h:1.5%3B&=(%0A9%0A%E2%80%98%0A%E2%80%9C&_w:1.5&h:1.5%3B&=)%0A0%0A%E2%80%99%0A%E2%80%9D&_w:1.5&h:1.5%3B&=%2F_%0A-%0A%C3%83%0A%C3%A3&_w:1.5&h:1.5%3B&=+%0A%2F=%0A%C3%95%0A%C3%B5&_a:7&w:2.5&h:1.5%3B&=Backspace%3B&@_y:0.5&w:2&h:1.5%3B&=Tab&_a:4&w:1.5&h:1.5%3B&=Q%0A%0A%C3%86%0A%C3%A6&_w:1.5&h:1.5%3B&=W%0A%0A%C3%85%0A%C3%A5&_w:1.5&h:1.5%3B&=E%0A%0A%C3%8B%0A%C3%AB&_w:1.5&h:1.5%3B&=R%0A%0A%C3%8A%0A%C3%AA&_w:1.5&h:1.5%3B&=T%0A%0A%C3%8E%0A%C3%AE&_w:1.5&h:1.5%3B&=Y%0A%0A%C3%9B%0A%C3%BB&_w:1.5&h:1.5%3B&=U%0A%0A%C3%9C%0A%C3%BC&_w:1.5&h:1.5%3B&=I%0A%0A%C3%8F%0A%C3%AF&_w:1.5&h:1.5%3B&=O%0A%0A%C3%96%0A%C3%B6&_w:1.5&h:1.5%3B&=P%0A%0A%C3%94%0A%C3%B4&_w:1.5&h:1.5%3B&=%7B%0A%5B%0A%E2%80%B9%0A%C2%AB&_w:1.5&h:1.5%3B&=%7D%0A%5D%0A%E2%80%BA%0A%C2%BB&_c=%230075ff&w:2&h:1.5%3B&=%7C%0A%5C%0A%C2%A4%0A%C3%97%3B&@_y:0.5&c=%23cccccc&a:7&w:2.5&h:1.5%3B&=Caps%20Lock&_a:4&w:1.5&h:1.5%3B&=A%0A%0A%C3%84%0A%C3%A4&_w:1.5&h:1.5%3B&=S%0A%0A%E1%BA%9E%0A%C3%9F&_w:1.5&h:1.5%3B&=D%0A%0A%C3%82%0A%C3%A2&_w:1.5&h:1.5%3B&=F%0A%0A%C3%88%0A%C3%A8&_w:1.5&h:1.5%3B&=G%0A%0A%C3%89%0A%C3%A9&_w:1.5&h:1.5%3B&=H%0A%0A%C3%99%0A%C3%B9&_w:1.5&h:1.5%3B&=J%0A%0A%C3%9A%0A%C3%BA&_w:1.5&h:1.5%3B&=K%0A%0A%C5%92%0A%C5%93&_w:1.5&h:1.5%3B&=L%0A%0A%C3%98%0A%C3%B8&_w:1.5&h:1.5%3B&=%2F:%0A%2F%3B%0A%C2%B7%0A%C2%B0&_c=%230075ff&w:1.5&h:1.5%3B&=%22%0A'%0A%C2%A8%0A%CB%8A%7C%CB%9D&_c=%23cccccc&a:7&w:3&h:1.5%3B&=Enter%3B&@_y:0.5&c=%2356db50&w:1.75&h:1.5%3B&=Shift&_c=%23cccccc&a:4&w:1.5&h:1.5%3B&=%7C%0A%5C&_w:1.5&h:1.5%3B&=Z%0A%0A%C3%80%0A%C3%A0&_w:1.5&h:1.5%3B&=X%0A%0A%C3%81%0A%C3%A1&_w:1.5&h:1.5%3B&=C%0A%0A%C3%87%0A%C3%A7&_w:1.5&h:1.5%3B&=V%0A%0A%C3%8C%0A%C3%AC&_w:1.5&h:1.5%3B&=B%0A%0A%C3%8D%0A%C3%AD&_w:1.5&h:1.5%3B&=N%0A%0A%C3%91%0A%C3%B1&_c=%230075ff&w:1.5&h:1.5%3B&=M%0A%0A%E2%88%9A%0A%CE%BC&_c=%23cccccc&w:1.5&h:1.5%3B&=%3C%0A,%0A%C3%92%0A%C3%B2&_w:1.5&h:1.5%3B&=%3E%0A.%0A%C3%93%0A%C3%B3&_w:1.5&h:1.5%3B&=%3F%0A%2F%2F%0A%E2%80%A6%0A%C2%BF&_c=%2356db50&a:7&w:3.75&h:1.5%3B&=Shift%3B&@_y:0.5&c=%23cccccc&w:1.75&h:1.5%3B&=Ctrl&_w:1.75&h:1.5%3B&=Win&_w:1.75&h:1.5%3B&=Alt&_a:4&w:9.75&h:1.5%3B&=Space%0A%0ANon-Breaking%20Space%0A(AltGr%20+%20Space)&_c=%2356db50&a:7&w:1.75&h:1.5%3B&=AltGr&_c=%23cccccc&w:1.75&h:1.5%3B&=Win&_w:1.75&h:1.5%3B&=Menu&_w:1.75&h:1.5%3B&=Ctrl +http://www.keyboard-layout-editor.com/##@@_c=%230075ff&f:9&w:1.5&h:1.5%3B&=~%0A%60%0A%CB%9C%0A%CB%8B%7C%E2%80%AF%CC%8F%E2%80%AF&_c=%23cccccc&w:1.5&h:1.5%3B&=!%0A1%0A%C2%B9%0A%C2%A1&_w:1.5&h:1.5%3B&=%2F@%0A2%0A%C2%B2%0A%C2%A9&_w:1.5&h:1.5%3B&=%23%0A3%0A%C2%B3%0A%C2%A7&_w:1.5&h:1.5%3B&=$%0A4%0A%C2%A5%0A%C2%A3&_w:1.5&h:1.5%3B&=%25%0A5%0A%C2%A2%0A%E2%82%AC&_c=%230075ff&w:1.5&h:1.5%3B&=%5E%0A6%0A%CB%87%0A%CB%86%7C%E2%80%AF%CC%91%E2%80%AF&_w:1.5&h:1.5%3B&=%2F&%0A7%0A%C2%AF%0A%CB%99%7C%CB%9A&_w:1.5&h:1.5%3B&=*%0A8%0A%CB%98%0A%C2%B8%7C%CB%9B&_c=%23cccccc&w:1.5&h:1.5%3B&=(%0A9%0A%E2%80%98%0A%E2%80%9C&_w:1.5&h:1.5%3B&=)%0A0%0A%E2%80%99%0A%E2%80%9D&_w:1.5&h:1.5%3B&=%2F_%0A-%0A%C3%83%0A%C3%A3&_w:1.5&h:1.5%3B&=+%0A%2F=%0A%C3%95%0A%C3%B5&_a:7&w:2.5&h:1.5%3B&=Backspace%3B&@_y:0.5&w:2&h:1.5%3B&=Tab&_a:4&w:1.5&h:1.5%3B&=Q%0A%0A%C3%86%0A%C3%A6&_w:1.5&h:1.5%3B&=W%0A%0A%C3%85%0A%C3%A5&_w:1.5&h:1.5%3B&=E%0A%0A%C3%8B%0A%C3%AB&_w:1.5&h:1.5%3B&=R%0A%0A%C3%8A%0A%C3%AA&_w:1.5&h:1.5%3B&=T%0A%0A%C3%8E%0A%C3%AE&_w:1.5&h:1.5%3B&=Y%0A%0A%C3%9B%0A%C3%BB&_w:1.5&h:1.5%3B&=U%0A%0A%C3%9C%0A%C3%BC&_w:1.5&h:1.5%3B&=I%0A%0A%C3%8F%0A%C3%AF&_w:1.5&h:1.5%3B&=O%0A%0A%C3%96%0A%C3%B6&_w:1.5&h:1.5%3B&=P%0A%0A%C3%94%0A%C3%B4&_w:1.5&h:1.5%3B&=%7B%0A%5B%0A%E2%80%B9%0A%C2%AB&_w:1.5&h:1.5%3B&=%7D%0A%5D%0A%E2%80%BA%0A%C2%BB&_c=%230075ff&w:2&h:1.5%3B&=%7C%0A%5C%0A%C2%A4%0A%C3%97%3B&@_y:0.5&c=%23cccccc&a:7&w:2.5&h:1.5%3B&=Caps%20Lock&_a:4&w:1.5&h:1.5%3B&=A%0A%0A%C3%84%0A%C3%A4&_w:1.5&h:1.5%3B&=S%0A%0A%E1%BA%9E%0A%C3%9F&_w:1.5&h:1.5%3B&=D%0A%0A%C3%82%0A%C3%A2&_w:1.5&h:1.5%3B&=F%0A%0A%C3%88%0A%C3%A8&_w:1.5&h:1.5%3B&=G%0A%0A%C3%89%0A%C3%A9&_w:1.5&h:1.5%3B&=H%0A%0A%C3%99%0A%C3%B9&_w:1.5&h:1.5%3B&=J%0A%0A%C3%9A%0A%C3%BA&_w:1.5&h:1.5%3B&=K%0A%0A%C5%92%0A%C5%93&_w:1.5&h:1.5%3B&=L%0A%0A%C3%98%0A%C3%B8&_w:1.5&h:1.5%3B&=%2F:%0A%2F%3B%0A%C2%B7%0A%C2%B0&_c=%230075ff&w:1.5&h:1.5%3B&=%22%0A'%0A%C2%A8%0A%CB%8A%7C%CB%9D&_c=%23cccccc&a:7&w:3&h:1.5%3B&=Enter%3B&@_y:0.5&c=%2356db50&w:1.75&h:1.5%3B&=Shift&_c=%23cccccc&a:4&w:1.5&h:1.5%3B&=%7C%0A%5C&_w:1.5&h:1.5%3B&=Z%0A%0A%C3%80%0A%C3%A0&_w:1.5&h:1.5%3B&=X%0A%0A%C3%81%0A%C3%A1&_w:1.5&h:1.5%3B&=C%0A%0A%C3%87%0A%C3%A7&_w:1.5&h:1.5%3B&=V%0A%0A%C3%8C%0A%C3%AC&_w:1.5&h:1.5%3B&=B%0A%0A%C3%8D%0A%C3%AD&_w:1.5&h:1.5%3B&=N%0A%0A%C3%91%0A%C3%B1&_c=%230075ff&w:1.5&h:1.5%3B&=M%0A%0A%E2%88%9A%0A%CE%BC&_c=%23cccccc&w:1.5&h:1.5%3B&=%3C%0A,%0A%C3%92%0A%C3%B2&_w:1.5&h:1.5%3B&=%3E%0A.%0A%C3%93%0A%C3%B3&_w:1.5&h:1.5%3B&=%3F%0A%2F%2F%0A%E2%80%A6%0A%C2%BF&_c=%2356db50&a:7&w:3.75&h:1.5%3B&=Shift%3B&@_y:0.5&c=%23cccccc&w:1.75&h:1.5%3B&=Ctrl&_w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Alt&_a:4&w:9.75&h:1.5%3B&=Space%0A%0ANon-Breaking%20Space%0A(AltGr%20+%20Space)&_c=%2356db50&a:7&w:1.75&h:1.5%3B&=AltGr&_c=%23cccccc&w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Menu&_w:1.75&h:1.5%3B&=Ctrl UltimateKEYS SW (with Scroll Lock in AutoHotkey) : -http://www.keyboard-layout-editor.com/##@@_c=%230075ff&f:9&w:1.5&h:1.5%3B&=~%0A%60%0A%CB%9C%0A%CB%8B%7C%E2%80%AF%CC%8F%E2%80%AF&_c=%23cccccc&w:1.5&h:1.5%3B&=1%0A!%0A%C2%B9%0A%C2%A1&_w:1.5&h:1.5%3B&=2%0A%2F@%0A%C2%B2%0A%C2%A9&_w:1.5&h:1.5%3B&=3%0A%23%0A%C2%B3%0A%C2%A7&_w:1.5&h:1.5%3B&=4%0A$%0A%C2%A5%0A%C2%A3&_w:1.5&h:1.5%3B&=5%0A%25%0A%C2%A2%0A%E2%82%AC&_c=%230075ff&w:1.5&h:1.5%3B&=6%0A%5E%0A%CB%87%0A%CB%86%7C%E2%80%AF%CC%91%E2%80%AF&_w:1.5&h:1.5%3B&=7%0A%2F&%0A%C2%AF%0A%CB%99%7C%CB%9A&_w:1.5&h:1.5%3B&=8%0A*%0A%CB%98%0A%C2%B8%7C%CB%9B&_c=%23cccccc&w:1.5&h:1.5%3B&=9%0A(%0A%E2%80%98%0A%E2%80%9C&_w:1.5&h:1.5%3B&=0%0A)%0A%E2%80%99%0A%E2%80%9D&_w:1.5&h:1.5%3B&=%2F_%0A-%0A%C3%83%0A%C3%A3&_w:1.5&h:1.5%3B&=+%0A%2F=%0A%C3%95%0A%C3%B5&_a:7&w:2.5&h:1.5%3B&=Backspace%3B&@_y:0.5&w:2&h:1.5%3B&=Tab&_a:4&w:1.5&h:1.5%3B&=Q%0A%0A%C3%86%0A%C3%A6&_w:1.5&h:1.5%3B&=W%0A%0A%C3%85%0A%C3%A5&_w:1.5&h:1.5%3B&=E%0A%0A%C3%8B%0A%C3%AB&_w:1.5&h:1.5%3B&=R%0A%0A%C3%8A%0A%C3%AA&_w:1.5&h:1.5%3B&=T%0A%0A%C3%8E%0A%C3%AE&_w:1.5&h:1.5%3B&=Y%0A%0A%C3%9B%0A%C3%BB&_w:1.5&h:1.5%3B&=U%0A%0A%C3%9C%0A%C3%BC&_w:1.5&h:1.5%3B&=I%0A%0A%C3%8F%0A%C3%AF&_w:1.5&h:1.5%3B&=O%0A%0A%C3%96%0A%C3%B6&_w:1.5&h:1.5%3B&=P%0A%0A%C3%94%0A%C3%B4&_w:1.5&h:1.5%3B&=%7B%0A%5B%0A%E2%80%B9%0A%C2%AB&_w:1.5&h:1.5%3B&=%7D%0A%5D%0A%E2%80%BA%0A%C2%BB&_c=%230075ff&w:2&h:1.5%3B&=%7C%0A%5C%0A%C2%A4%0A%C3%97%3B&@_y:0.5&c=%23cccccc&a:7&w:2.5&h:1.5%3B&=Caps%20Lock&_a:4&w:1.5&h:1.5%3B&=A%0A%0A%C3%84%0A%C3%A4&_w:1.5&h:1.5%3B&=S%0A%0A%E1%BA%9E%0A%C3%9F&_w:1.5&h:1.5%3B&=D%0A%0A%C3%82%0A%C3%A2&_w:1.5&h:1.5%3B&=F%0A%0A%C3%88%0A%C3%A8&_w:1.5&h:1.5%3B&=G%0A%0A%C3%89%0A%C3%A9&_w:1.5&h:1.5%3B&=H%0A%0A%C3%99%0A%C3%B9&_w:1.5&h:1.5%3B&=J%0A%0A%C3%9A%0A%C3%BA&_w:1.5&h:1.5%3B&=K%0A%0A%C5%92%0A%C5%93&_w:1.5&h:1.5%3B&=L%0A%0A%C3%98%0A%C3%B8&_w:1.5&h:1.5%3B&=%2F:%0A%2F%3B%0A%C2%B7%0A%C2%B0&_c=%230075ff&w:1.5&h:1.5%3B&=%22%0A'%0A%C2%A8%0A%CB%8A%7C%CB%9D&_c=%23cccccc&a:7&w:3&h:1.5%3B&=Enter%3B&@_y:0.5&c=%2356db50&w:1.75&h:1.5%3B&=Shift&_c=%23cccccc&a:4&w:1.5&h:1.5%3B&=%7C%0A%5C&_w:1.5&h:1.5%3B&=Z%0A%0A%C3%80%0A%C3%A0&_w:1.5&h:1.5%3B&=X%0A%0A%C3%81%0A%C3%A1&_w:1.5&h:1.5%3B&=C%0A%0A%C3%87%0A%C3%A7&_w:1.5&h:1.5%3B&=V%0A%0A%C3%8C%0A%C3%AC&_w:1.5&h:1.5%3B&=B%0A%0A%C3%8D%0A%C3%AD&_w:1.5&h:1.5%3B&=N%0A%0A%C3%91%0A%C3%B1&_c=%230075ff&w:1.5&h:1.5%3B&=M%0A%0A%E2%88%9A%0A%CE%BC&_c=%23cccccc&w:1.5&h:1.5%3B&=%3C%0A,%0A%C3%92%0A%C3%B2&_w:1.5&h:1.5%3B&=%3E%0A.%0A%C3%93%0A%C3%B3&_w:1.5&h:1.5%3B&=%3F%0A%2F%2F%0A%E2%80%A6%0A%C2%BF&_c=%2356db50&a:7&w:3.75&h:1.5%3B&=Shift%3B&@_y:0.5&c=%23cccccc&w:1.75&h:1.5%3B&=Ctrl&_w:1.75&h:1.5%3B&=Win&_w:1.75&h:1.5%3B&=Alt&_a:4&w:9.75&h:1.5%3B&=Space%0A%0ANon-Breaking%20Space%0A(AltGr%20+%20Space)&_c=%2356db50&a:7&w:1.75&h:1.5%3B&=AltGr&_c=%23cccccc&w:1.75&h:1.5%3B&=Win&_w:1.75&h:1.5%3B&=Menu&_w:1.75&h:1.5%3B&=Ctrl - - -UltimateKEYS (Linux) : - -http://www.keyboard-layout-editor.com/##@@_c=%230075ff&f:9&w:1.5&h:1.5%3B&=~%0A%60%0A%CB%9C%0A%CB%8B%7C%E2%80%AF%CC%8F%E2%80%AF&_c=%23cccccc&w:1.5&h:1.5%3B&=!%0A1%0A%C2%B9%0A%C2%A1&_w:1.5&h:1.5%3B&=%2F@%0A2%0A%C2%B2%0A%C2%A9&_w:1.5&h:1.5%3B&=%23%0A3%0A%C2%B3%0A%C2%A7&_w:1.5&h:1.5%3B&=$%0A4%0A%C2%A5%0A%C2%A3&_w:1.5&h:1.5%3B&=%25%0A5%0A%C2%A2%0A%E2%82%AC&_c=%230075ff&w:1.5&h:1.5%3B&=%5E%0A6%0A%CB%87%0A%CB%86%7C%E2%80%AF%CC%91%E2%80%AF&_w:1.5&h:1.5%3B&=%2F&%0A7%0A%C2%AF%0A%CB%99%7C%CB%9A&_w:1.5&h:1.5%3B&=*%0A8%0A%CB%98%0A%C2%B8%7C%CB%9B&_c=%23cccccc&w:1.5&h:1.5%3B&=(%0A9%0A%E2%80%98%0A%E2%80%9C&_w:1.5&h:1.5%3B&=)%0A0%0A%E2%80%99%0A%E2%80%9D&_w:1.5&h:1.5%3B&=%2F_%0A-%0A%C3%83%0A%C3%A3&_w:1.5&h:1.5%3B&=+%0A%2F=%0A%C3%95%0A%C3%B5&_a:7&w:2.5&h:1.5%3B&=Backspace%3B&@_y:0.5&w:2&h:1.5%3B&=Tab&_a:4&w:1.5&h:1.5%3B&=Q%0A%0A%C3%86%0A%C3%A6&_w:1.5&h:1.5%3B&=W%0A%0A%C3%85%0A%C3%A5&_w:1.5&h:1.5%3B&=E%0A%0A%C3%8B%0A%C3%AB&_w:1.5&h:1.5%3B&=R%0A%0A%C3%8A%0A%C3%AA&_w:1.5&h:1.5%3B&=T%0A%0A%C3%8E%0A%C3%AE&_w:1.5&h:1.5%3B&=Y%0A%0A%C3%9B%0A%C3%BB&_w:1.5&h:1.5%3B&=U%0A%0A%C3%9C%0A%C3%BC&_w:1.5&h:1.5%3B&=I%0A%0A%C3%8F%0A%C3%AF&_w:1.5&h:1.5%3B&=O%0A%0A%C3%96%0A%C3%B6&_w:1.5&h:1.5%3B&=P%0A%0A%C3%94%0A%C3%B4&_w:1.5&h:1.5%3B&=%7B%0A%5B%0A%E2%80%B9%0A%C2%AB&_w:1.5&h:1.5%3B&=%7D%0A%5D%0A%E2%80%BA%0A%C2%BB&_c=%230075ff&w:2&h:1.5%3B&=%7C%0A%5C%0A%C2%A4%0A%C2%B5%3B&@_y:0.5&c=%23cccccc&a:7&w:2.5&h:1.5%3B&=Caps%20Lock&_a:4&w:1.5&h:1.5%3B&=A%0A%0A%C3%84%0A%C3%A4&_w:1.5&h:1.5%3B&=S%0A%0A%E1%BA%9E%0A%C3%9F&_w:1.5&h:1.5%3B&=D%0A%0A%C3%82%0A%C3%A2&_w:1.5&h:1.5%3B&=F%0A%0A%C3%88%0A%C3%A8&_w:1.5&h:1.5%3B&=G%0A%0A%C3%89%0A%C3%A9&_w:1.5&h:1.5%3B&=H%0A%0A%C3%99%0A%C3%B9&_w:1.5&h:1.5%3B&=J%0A%0A%C3%9A%0A%C3%BA&_w:1.5&h:1.5%3B&=K%0A%0A%C5%92%0A%C5%93&_w:1.5&h:1.5%3B&=L%0A%0A%C3%98%0A%C3%B8&_w:1.5&h:1.5%3B&=%2F:%0A%2F%3B%0A%C2%B7%0A%C2%B0&_c=%230075ff&w:1.5&h:1.5%3B&=%22%0A'%0A%C2%A8%0A%CB%8A%7C%CB%9D&_c=%23cccccc&a:7&w:3&h:1.5%3B&=Enter%3B&@_y:0.5&c=%2356db50&w:1.75&h:1.5%3B&=Shift&_c=%23cccccc&a:4&w:1.5&h:1.5%3B&=%7C%0A%5C&_w:1.5&h:1.5%3B&=Z%0A%0A%C3%80%0A%C3%A0&_w:1.5&h:1.5%3B&=X%0A%0A%C3%81%0A%C3%A1&_w:1.5&h:1.5%3B&=C%0A%0A%C3%87%0A%C3%A7&_w:1.5&h:1.5%3B&=V%0A%0A%C3%8C%0A%C3%AC&_w:1.5&h:1.5%3B&=B%0A%0A%C3%8D%0A%C3%AD&_w:1.5&h:1.5%3B&=N%0A%0A%C3%91%0A%C3%B1&_c=%230075ff&w:1.5&h:1.5%3B&=M%0A%0A%0AMk&_c=%23cccccc&w:1.5&h:1.5%3B&=%3C%0A,%0A%C3%92%0A%C3%B2&_w:1.5&h:1.5%3B&=%3E%0A.%0A%C3%93%0A%C3%B3&_w:1.5&h:1.5%3B&=%3F%0A%2F%2F%0A%E2%80%A6%0A%C2%BF&_c=%2356db50&a:7&w:3.75&h:1.5%3B&=Shift%3B&@_y:0.5&c=%23cccccc&w:1.75&h:1.5%3B&=Ctrl&_w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Alt&_a:4&w:9.75&h:1.5%3B&=Space%0A%0ANon-Breaking%20Space%0A(AltGr%20+%20Space)&_c=%2356db50&a:7&w:1.75&h:1.5%3B&=AltGr&_c=%23cccccc&w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Menu&_w:1.75&h:1.5%3B&=Ctrl - - -UltimateKEYS SW (Linux) : - -http://www.keyboard-layout-editor.com/##@@_c=%230075ff&f:9&w:1.5&h:1.5%3B&=~%0A%60%0A%CB%9C%0A%CB%8B%7C%E2%80%AF%CC%8F%E2%80%AF&_c=%23cccccc&w:1.5&h:1.5%3B&=1%0A!%0A%C2%B9%0A%C2%A1&_w:1.5&h:1.5%3B&=2%0A%2F@%0A%C2%B2%0A%C2%A9&_w:1.5&h:1.5%3B&=3%0A%23%0A%C2%B3%0A%C2%A7&_w:1.5&h:1.5%3B&=4%0A$%0A%C2%A5%0A%C2%A3&_w:1.5&h:1.5%3B&=5%0A%25%0A%C2%A2%0A%E2%82%AC&_c=%230075ff&w:1.5&h:1.5%3B&=6%0A%5E%0A%CB%87%0A%CB%86%7C%E2%80%AF%CC%91%E2%80%AF&_w:1.5&h:1.5%3B&=7%0A%2F&%0A%C2%AF%0A%CB%99%7C%CB%9A&_w:1.5&h:1.5%3B&=8%0A*%0A%CB%98%0A%C2%B8%7C%CB%9B&_c=%23cccccc&w:1.5&h:1.5%3B&=9%0A(%0A%E2%80%98%0A%E2%80%9C&_w:1.5&h:1.5%3B&=0%0A)%0A%E2%80%99%0A%E2%80%9D&_w:1.5&h:1.5%3B&=%2F_%0A-%0A%C3%83%0A%C3%A3&_w:1.5&h:1.5%3B&=+%0A%2F=%0A%C3%95%0A%C3%B5&_a:7&w:2.5&h:1.5%3B&=Backspace%3B&@_y:0.5&w:2&h:1.5%3B&=Tab&_a:4&w:1.5&h:1.5%3B&=Q%0A%0A%C3%86%0A%C3%A6&_w:1.5&h:1.5%3B&=W%0A%0A%C3%85%0A%C3%A5&_w:1.5&h:1.5%3B&=E%0A%0A%C3%8B%0A%C3%AB&_w:1.5&h:1.5%3B&=R%0A%0A%C3%8A%0A%C3%AA&_w:1.5&h:1.5%3B&=T%0A%0A%C3%8E%0A%C3%AE&_w:1.5&h:1.5%3B&=Y%0A%0A%C3%9B%0A%C3%BB&_w:1.5&h:1.5%3B&=U%0A%0A%C3%9C%0A%C3%BC&_w:1.5&h:1.5%3B&=I%0A%0A%C3%8F%0A%C3%AF&_w:1.5&h:1.5%3B&=O%0A%0A%C3%96%0A%C3%B6&_w:1.5&h:1.5%3B&=P%0A%0A%C3%94%0A%C3%B4&_w:1.5&h:1.5%3B&=%7B%0A%5B%0A%E2%80%B9%0A%C2%AB&_w:1.5&h:1.5%3B&=%7D%0A%5D%0A%E2%80%BA%0A%C2%BB&_c=%230075ff&w:2&h:1.5%3B&=%7C%0A%5C%0A%C2%A4%0A%C2%B5%3B&@_y:0.5&c=%23cccccc&a:7&w:2.5&h:1.5%3B&=Caps%20Lock&_a:4&w:1.5&h:1.5%3B&=A%0A%0A%C3%84%0A%C3%A4&_w:1.5&h:1.5%3B&=S%0A%0A%E1%BA%9E%0A%C3%9F&_w:1.5&h:1.5%3B&=D%0A%0A%C3%82%0A%C3%A2&_w:1.5&h:1.5%3B&=F%0A%0A%C3%88%0A%C3%A8&_w:1.5&h:1.5%3B&=G%0A%0A%C3%89%0A%C3%A9&_w:1.5&h:1.5%3B&=H%0A%0A%C3%99%0A%C3%B9&_w:1.5&h:1.5%3B&=J%0A%0A%C3%9A%0A%C3%BA&_w:1.5&h:1.5%3B&=K%0A%0A%C5%92%0A%C5%93&_w:1.5&h:1.5%3B&=L%0A%0A%C3%98%0A%C3%B8&_w:1.5&h:1.5%3B&=%2F:%0A%2F%3B%0A%C2%B7%0A%C2%B0&_c=%230075ff&w:1.5&h:1.5%3B&=%22%0A'%0A%C2%A8%0A%CB%8A%7C%CB%9D&_c=%23cccccc&a:7&w:3&h:1.5%3B&=Enter%3B&@_y:0.5&c=%2356db50&w:1.75&h:1.5%3B&=Shift&_c=%23cccccc&a:4&w:1.5&h:1.5%3B&=%7C%0A%5C&_w:1.5&h:1.5%3B&=Z%0A%0A%C3%80%0A%C3%A0&_w:1.5&h:1.5%3B&=X%0A%0A%C3%81%0A%C3%A1&_w:1.5&h:1.5%3B&=C%0A%0A%C3%87%0A%C3%A7&_w:1.5&h:1.5%3B&=V%0A%0A%C3%8C%0A%C3%AC&_w:1.5&h:1.5%3B&=B%0A%0A%C3%8D%0A%C3%AD&_w:1.5&h:1.5%3B&=N%0A%0A%C3%91%0A%C3%B1&_c=%230075ff&w:1.5&h:1.5%3B&=M%0A%0A%0AMk&_c=%23cccccc&w:1.5&h:1.5%3B&=%3C%0A,%0A%C3%92%0A%C3%B2&_w:1.5&h:1.5%3B&=%3E%0A.%0A%C3%93%0A%C3%B3&_w:1.5&h:1.5%3B&=%3F%0A%2F%2F%0A%E2%80%A6%0A%C2%BF&_c=%2356db50&a:7&w:3.75&h:1.5%3B&=Shift%3B&@_y:0.5&c=%23cccccc&w:1.75&h:1.5%3B&=Ctrl&_w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Alt&_a:4&w:9.75&h:1.5%3B&=Space%0A%0ANon-Breaking%20Space%0A(AltGr%20+%20Space)&_c=%2356db50&a:7&w:1.75&h:1.5%3B&=AltGr&_c=%23cccccc&w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Menu&_w:1.75&h:1.5%3B&=Ctrl +http://www.keyboard-layout-editor.com/##@@_c=%230075ff&f:9&w:1.5&h:1.5%3B&=~%0A%60%0A%CB%9C%0A%CB%8B%7C%E2%80%AF%CC%8F%E2%80%AF&_c=%23cccccc&w:1.5&h:1.5%3B&=1%0A!%0A%C2%B9%0A%C2%A1&_w:1.5&h:1.5%3B&=2%0A%2F@%0A%C2%B2%0A%C2%A9&_w:1.5&h:1.5%3B&=3%0A%23%0A%C2%B3%0A%C2%A7&_w:1.5&h:1.5%3B&=4%0A$%0A%C2%A5%0A%C2%A3&_w:1.5&h:1.5%3B&=5%0A%25%0A%C2%A2%0A%E2%82%AC&_c=%230075ff&w:1.5&h:1.5%3B&=6%0A%5E%0A%CB%87%0A%CB%86%7C%E2%80%AF%CC%91%E2%80%AF&_w:1.5&h:1.5%3B&=7%0A%2F&%0A%C2%AF%0A%CB%99%7C%CB%9A&_w:1.5&h:1.5%3B&=8%0A*%0A%CB%98%0A%C2%B8%7C%CB%9B&_c=%23cccccc&w:1.5&h:1.5%3B&=9%0A(%0A%E2%80%98%0A%E2%80%9C&_w:1.5&h:1.5%3B&=0%0A)%0A%E2%80%99%0A%E2%80%9D&_w:1.5&h:1.5%3B&=%2F_%0A-%0A%C3%83%0A%C3%A3&_w:1.5&h:1.5%3B&=+%0A%2F=%0A%C3%95%0A%C3%B5&_a:7&w:2.5&h:1.5%3B&=Backspace%3B&@_y:0.5&w:2&h:1.5%3B&=Tab&_a:4&w:1.5&h:1.5%3B&=Q%0A%0A%C3%86%0A%C3%A6&_w:1.5&h:1.5%3B&=W%0A%0A%C3%85%0A%C3%A5&_w:1.5&h:1.5%3B&=E%0A%0A%C3%8B%0A%C3%AB&_w:1.5&h:1.5%3B&=R%0A%0A%C3%8A%0A%C3%AA&_w:1.5&h:1.5%3B&=T%0A%0A%C3%8E%0A%C3%AE&_w:1.5&h:1.5%3B&=Y%0A%0A%C3%9B%0A%C3%BB&_w:1.5&h:1.5%3B&=U%0A%0A%C3%9C%0A%C3%BC&_w:1.5&h:1.5%3B&=I%0A%0A%C3%8F%0A%C3%AF&_w:1.5&h:1.5%3B&=O%0A%0A%C3%96%0A%C3%B6&_w:1.5&h:1.5%3B&=P%0A%0A%C3%94%0A%C3%B4&_w:1.5&h:1.5%3B&=%7B%0A%5B%0A%E2%80%B9%0A%C2%AB&_w:1.5&h:1.5%3B&=%7D%0A%5D%0A%E2%80%BA%0A%C2%BB&_c=%230075ff&w:2&h:1.5%3B&=%7C%0A%5C%0A%C2%A4%0A%C3%97%3B&@_y:0.5&c=%23cccccc&a:7&w:2.5&h:1.5%3B&=Caps%20Lock&_a:4&w:1.5&h:1.5%3B&=A%0A%0A%C3%84%0A%C3%A4&_w:1.5&h:1.5%3B&=S%0A%0A%E1%BA%9E%0A%C3%9F&_w:1.5&h:1.5%3B&=D%0A%0A%C3%82%0A%C3%A2&_w:1.5&h:1.5%3B&=F%0A%0A%C3%88%0A%C3%A8&_w:1.5&h:1.5%3B&=G%0A%0A%C3%89%0A%C3%A9&_w:1.5&h:1.5%3B&=H%0A%0A%C3%99%0A%C3%B9&_w:1.5&h:1.5%3B&=J%0A%0A%C3%9A%0A%C3%BA&_w:1.5&h:1.5%3B&=K%0A%0A%C5%92%0A%C5%93&_w:1.5&h:1.5%3B&=L%0A%0A%C3%98%0A%C3%B8&_w:1.5&h:1.5%3B&=%2F:%0A%2F%3B%0A%C2%B7%0A%C2%B0&_c=%230075ff&w:1.5&h:1.5%3B&=%22%0A'%0A%C2%A8%0A%CB%8A%7C%CB%9D&_c=%23cccccc&a:7&w:3&h:1.5%3B&=Enter%3B&@_y:0.5&c=%2356db50&w:1.75&h:1.5%3B&=Shift&_c=%23cccccc&a:4&w:1.5&h:1.5%3B&=%7C%0A%5C&_w:1.5&h:1.5%3B&=Z%0A%0A%C3%80%0A%C3%A0&_w:1.5&h:1.5%3B&=X%0A%0A%C3%81%0A%C3%A1&_w:1.5&h:1.5%3B&=C%0A%0A%C3%87%0A%C3%A7&_w:1.5&h:1.5%3B&=V%0A%0A%C3%8C%0A%C3%AC&_w:1.5&h:1.5%3B&=B%0A%0A%C3%8D%0A%C3%AD&_w:1.5&h:1.5%3B&=N%0A%0A%C3%91%0A%C3%B1&_c=%230075ff&w:1.5&h:1.5%3B&=M%0A%0A%E2%88%9A%0A%CE%BC&_c=%23cccccc&w:1.5&h:1.5%3B&=%3C%0A,%0A%C3%92%0A%C3%B2&_w:1.5&h:1.5%3B&=%3E%0A.%0A%C3%93%0A%C3%B3&_w:1.5&h:1.5%3B&=%3F%0A%2F%2F%0A%E2%80%A6%0A%C2%BF&_c=%2356db50&a:7&w:3.75&h:1.5%3B&=Shift%3B&@_y:0.5&c=%23cccccc&w:1.75&h:1.5%3B&=Ctrl&_w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Alt&_a:4&w:9.75&h:1.5%3B&=Space%0A%0ANon-Breaking%20Space%0A(AltGr%20+%20Space)&_c=%2356db50&a:7&w:1.75&h:1.5%3B&=AltGr&_c=%23cccccc&w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Menu&_w:1.75&h:1.5%3B&=Ctrl diff --git a/images/UltimateKEYS - Keyboard Layout Image.png b/images/UltimateKEYS - Keyboard Layout Image.png index d0caac0e6f456c92e7c08c656a8be328bd86155e..78a6b4918f3385583529f749d0e9d90bed0411d7 100644 GIT binary patch delta 25485 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�>E5#I8$Ux zP&8jni0nm^jJ?R9&2o%Y@BzN;A0{Rlv-V5o!G_eQ_lq=nw4m?WW-M1X?6W%)-*cn| zA@c(LX=qfUhxmRqSL$iMc}n$=3I-}Sba;!$%Wx^ArBXcw$?42b%n)-oVW;XDN))0S zkkb3cG9YL(4*dBXdgO8f#=jZ82a=wtZzMgAeL&G(Xzl&!q+yjGFV!k8%+$YTIAwYg zk;4;}8kOq5YL=3&rXIcOoxYll8HBD$BTo%C5Ea`OFaL2tr}`O@7NvwgrTjuBVTG(; zJ$_)s-(_>=@PkyvbJloukF`G46z0wCs>#&tXz^K?*Rk6eObKHN_?%w35x?vyY!B0R zQbCJ4uf%04w0_0`y#NYNTd6QHkCU@O5Swo>IHRT~#a=3E`CLrYl{IhX$CpVBuXd_@ zCi!tPZ3lZoM#8Mb#0b@>vlk9#rr7n?PN&3yOvrJ8A`?jI8y@L2U3=RjpSNl-jn6VU z>x#MOuYfOoPON~r&bfrSa&ECVi}t}Uw*yt=T}2Xi9NDxt?3}7?kvS76eqDpjtlIQ0 zxz8)2d39bRaMpv?IB#R!hy0NmtJG(!>SeDU+fwVSpTT*QT{H5$3J?jn&g&c7_y@r++NE6UyVVXyvDi$-gF^2vvkekAUQ ziHXrsXr;w|lpzw$aj`JNO0QD)Hntc5qXntkmd@n`HZN_39m$g9_M`zN{h~;Y~ zV0L|eWdFG4Y-7BDBoW<)6;3Ve@r;MuPbBB(+gx~Aaq)AakiNk|$Jo+aB@I$8r?~jx zcL}pcRFKp9dzxbfntvA`h2h!T=9TBE7sP2*{T{lmZ{{r+*@u4Js8`=)W{c?b_Z4Y+ zz4Cb#Wfaxv-;iym+&*G2cs^C<$^;Dr(Bo2}O4aV#B9C!D0;laX1F1q4rKP3RP<=f; zy;rY5Asykru0R50U2-RM%XpLOVOQT#J2TA{)bBOQvvVr#x&}h|bET%84v&^&5zzl@ zdu3&1Ru<;`&OLl+-~u=d<8gxV32`D-u~tly?|PZRi*Nk^HOX7>d0YOiYT)soy}@HZ zm9BYI793jV@~3Bewt=v~E(5qen``pjnW+n0c*b)N9|C!~%hr+BtGUm&h&27p+h$IJ z_3+N>cNvR6rXD)a6S`=C#)(-n4ueNw9VTVu=sr^XPl}3)CtK5>{`dC)SV3eH!-M(S zhyXJ-k&}rU(&gH4lYn;%FI#_FRZW@P%^6;gk)toS9WODFHE8rI%glUZXZH}@cRah} ze=_Sif3@Gs`M)N*>!17UDtEi;=1SuZ{q%^Z|L+S&8jfso<7a{dTs-Opl@l1+D8tw0 zGS1^AuTd@6KBj=_63Eu5bzL1`O7}7mzIzC&t!{SP3Fdt^zGYl4GhG~SNjW{DxN{c* zdDqP`oSE(8+%_jW=c1}xzIEBK;LVj@|Xi9(9Y4@quE0s^Uy z2YDV@A~^q@E&t~sfG7Wa9q?%U5nfhV>GtLg#=HM+3HbQ&;}BTN%gd*0&}a~(+?F*^ zRs<^2avwi_T;nh+Dfr*j1@Qk15F$sK*3#0_fUfT3<>gB#xU_+#G_8MdFfl&<{>Qc$ zP|F2IOp&$T2NvKxk<`KpifX_AYmjk+j*d>P-^Fo%ia>8~@5$z*6g(^hO8C0LV{59) wR={x%ZV!6zU@~ delta 25060 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 delta 40294 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

%JDE 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 -- 2.47.3 From fa8c282f9f8be8d93fcae4bce85253bd198789f2 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 17:50:50 +0100 Subject: [PATCH 04/16] Add files via upload --- images/Layout Generator URLs - UltimateKEYS.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/images/Layout Generator URLs - UltimateKEYS.txt b/images/Layout Generator URLs - UltimateKEYS.txt index 798e790..c6354e0 100644 --- a/images/Layout Generator URLs - UltimateKEYS.txt +++ b/images/Layout Generator URLs - UltimateKEYS.txt @@ -3,6 +3,6 @@ UltimateKEYS : http://www.keyboard-layout-editor.com/##@@_c=%230075ff&f:9&w:1.5&h:1.5%3B&=~%0A%60%0A%CB%9C%0A%CB%8B%7C%E2%80%AF%CC%8F%E2%80%AF&_c=%23cccccc&w:1.5&h:1.5%3B&=!%0A1%0A%C2%B9%0A%C2%A1&_w:1.5&h:1.5%3B&=%2F@%0A2%0A%C2%B2%0A%C2%A9&_w:1.5&h:1.5%3B&=%23%0A3%0A%C2%B3%0A%C2%A7&_w:1.5&h:1.5%3B&=$%0A4%0A%C2%A5%0A%C2%A3&_w:1.5&h:1.5%3B&=%25%0A5%0A%C2%A2%0A%E2%82%AC&_c=%230075ff&w:1.5&h:1.5%3B&=%5E%0A6%0A%CB%87%0A%CB%86%7C%E2%80%AF%CC%91%E2%80%AF&_w:1.5&h:1.5%3B&=%2F&%0A7%0A%C2%AF%0A%CB%99%7C%CB%9A&_w:1.5&h:1.5%3B&=*%0A8%0A%CB%98%0A%C2%B8%7C%CB%9B&_c=%23cccccc&w:1.5&h:1.5%3B&=(%0A9%0A%E2%80%98%0A%E2%80%9C&_w:1.5&h:1.5%3B&=)%0A0%0A%E2%80%99%0A%E2%80%9D&_w:1.5&h:1.5%3B&=%2F_%0A-%0A%C3%83%0A%C3%A3&_w:1.5&h:1.5%3B&=+%0A%2F=%0A%C3%95%0A%C3%B5&_a:7&w:2.5&h:1.5%3B&=Backspace%3B&@_y:0.5&w:2&h:1.5%3B&=Tab&_a:4&w:1.5&h:1.5%3B&=Q%0A%0A%C3%86%0A%C3%A6&_w:1.5&h:1.5%3B&=W%0A%0A%C3%85%0A%C3%A5&_w:1.5&h:1.5%3B&=E%0A%0A%C3%8B%0A%C3%AB&_w:1.5&h:1.5%3B&=R%0A%0A%C3%8A%0A%C3%AA&_w:1.5&h:1.5%3B&=T%0A%0A%C3%8E%0A%C3%AE&_w:1.5&h:1.5%3B&=Y%0A%0A%C3%9B%0A%C3%BB&_w:1.5&h:1.5%3B&=U%0A%0A%C3%9C%0A%C3%BC&_w:1.5&h:1.5%3B&=I%0A%0A%C3%8F%0A%C3%AF&_w:1.5&h:1.5%3B&=O%0A%0A%C3%96%0A%C3%B6&_w:1.5&h:1.5%3B&=P%0A%0A%C3%94%0A%C3%B4&_w:1.5&h:1.5%3B&=%7B%0A%5B%0A%E2%80%B9%0A%C2%AB&_w:1.5&h:1.5%3B&=%7D%0A%5D%0A%E2%80%BA%0A%C2%BB&_c=%230075ff&w:2&h:1.5%3B&=%7C%0A%5C%0A%C2%A4%0A%C3%97%3B&@_y:0.5&c=%23cccccc&a:7&w:2.5&h:1.5%3B&=Caps%20Lock&_a:4&w:1.5&h:1.5%3B&=A%0A%0A%C3%84%0A%C3%A4&_w:1.5&h:1.5%3B&=S%0A%0A%E1%BA%9E%0A%C3%9F&_w:1.5&h:1.5%3B&=D%0A%0A%C3%82%0A%C3%A2&_w:1.5&h:1.5%3B&=F%0A%0A%C3%88%0A%C3%A8&_w:1.5&h:1.5%3B&=G%0A%0A%C3%89%0A%C3%A9&_w:1.5&h:1.5%3B&=H%0A%0A%C3%99%0A%C3%B9&_w:1.5&h:1.5%3B&=J%0A%0A%C3%9A%0A%C3%BA&_w:1.5&h:1.5%3B&=K%0A%0A%C5%92%0A%C5%93&_w:1.5&h:1.5%3B&=L%0A%0A%C3%98%0A%C3%B8&_w:1.5&h:1.5%3B&=%2F:%0A%2F%3B%0A%C2%B7%0A%C2%B0&_c=%230075ff&w:1.5&h:1.5%3B&=%22%0A'%0A%C2%A8%0A%CB%8A%7C%CB%9D&_c=%23cccccc&a:7&w:3&h:1.5%3B&=Enter%3B&@_y:0.5&c=%2356db50&w:1.75&h:1.5%3B&=Shift&_c=%23cccccc&a:4&w:1.5&h:1.5%3B&=%7C%0A%5C&_w:1.5&h:1.5%3B&=Z%0A%0A%C3%80%0A%C3%A0&_w:1.5&h:1.5%3B&=X%0A%0A%C3%81%0A%C3%A1&_w:1.5&h:1.5%3B&=C%0A%0A%C3%87%0A%C3%A7&_w:1.5&h:1.5%3B&=V%0A%0A%C3%8C%0A%C3%AC&_w:1.5&h:1.5%3B&=B%0A%0A%C3%8D%0A%C3%AD&_w:1.5&h:1.5%3B&=N%0A%0A%C3%91%0A%C3%B1&_c=%230075ff&w:1.5&h:1.5%3B&=M%0A%0A%E2%88%9A%0A%CE%BC&_c=%23cccccc&w:1.5&h:1.5%3B&=%3C%0A,%0A%C3%92%0A%C3%B2&_w:1.5&h:1.5%3B&=%3E%0A.%0A%C3%93%0A%C3%B3&_w:1.5&h:1.5%3B&=%3F%0A%2F%2F%0A%E2%80%A6%0A%C2%BF&_c=%2356db50&a:7&w:3.75&h:1.5%3B&=Shift%3B&@_y:0.5&c=%23cccccc&w:1.75&h:1.5%3B&=Ctrl&_w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Alt&_a:4&w:9.75&h:1.5%3B&=Space%0A%0ANon-Breaking%20Space%0A(AltGr%20+%20Space)&_c=%2356db50&a:7&w:1.75&h:1.5%3B&=AltGr&_c=%23cccccc&w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Menu&_w:1.75&h:1.5%3B&=Ctrl -UltimateKEYS SW (with Scroll Lock in AutoHotkey) : +UltimateKEYS SW : http://www.keyboard-layout-editor.com/##@@_c=%230075ff&f:9&w:1.5&h:1.5%3B&=~%0A%60%0A%CB%9C%0A%CB%8B%7C%E2%80%AF%CC%8F%E2%80%AF&_c=%23cccccc&w:1.5&h:1.5%3B&=1%0A!%0A%C2%B9%0A%C2%A1&_w:1.5&h:1.5%3B&=2%0A%2F@%0A%C2%B2%0A%C2%A9&_w:1.5&h:1.5%3B&=3%0A%23%0A%C2%B3%0A%C2%A7&_w:1.5&h:1.5%3B&=4%0A$%0A%C2%A5%0A%C2%A3&_w:1.5&h:1.5%3B&=5%0A%25%0A%C2%A2%0A%E2%82%AC&_c=%230075ff&w:1.5&h:1.5%3B&=6%0A%5E%0A%CB%87%0A%CB%86%7C%E2%80%AF%CC%91%E2%80%AF&_w:1.5&h:1.5%3B&=7%0A%2F&%0A%C2%AF%0A%CB%99%7C%CB%9A&_w:1.5&h:1.5%3B&=8%0A*%0A%CB%98%0A%C2%B8%7C%CB%9B&_c=%23cccccc&w:1.5&h:1.5%3B&=9%0A(%0A%E2%80%98%0A%E2%80%9C&_w:1.5&h:1.5%3B&=0%0A)%0A%E2%80%99%0A%E2%80%9D&_w:1.5&h:1.5%3B&=%2F_%0A-%0A%C3%83%0A%C3%A3&_w:1.5&h:1.5%3B&=+%0A%2F=%0A%C3%95%0A%C3%B5&_a:7&w:2.5&h:1.5%3B&=Backspace%3B&@_y:0.5&w:2&h:1.5%3B&=Tab&_a:4&w:1.5&h:1.5%3B&=Q%0A%0A%C3%86%0A%C3%A6&_w:1.5&h:1.5%3B&=W%0A%0A%C3%85%0A%C3%A5&_w:1.5&h:1.5%3B&=E%0A%0A%C3%8B%0A%C3%AB&_w:1.5&h:1.5%3B&=R%0A%0A%C3%8A%0A%C3%AA&_w:1.5&h:1.5%3B&=T%0A%0A%C3%8E%0A%C3%AE&_w:1.5&h:1.5%3B&=Y%0A%0A%C3%9B%0A%C3%BB&_w:1.5&h:1.5%3B&=U%0A%0A%C3%9C%0A%C3%BC&_w:1.5&h:1.5%3B&=I%0A%0A%C3%8F%0A%C3%AF&_w:1.5&h:1.5%3B&=O%0A%0A%C3%96%0A%C3%B6&_w:1.5&h:1.5%3B&=P%0A%0A%C3%94%0A%C3%B4&_w:1.5&h:1.5%3B&=%7B%0A%5B%0A%E2%80%B9%0A%C2%AB&_w:1.5&h:1.5%3B&=%7D%0A%5D%0A%E2%80%BA%0A%C2%BB&_c=%230075ff&w:2&h:1.5%3B&=%7C%0A%5C%0A%C2%A4%0A%C3%97%3B&@_y:0.5&c=%23cccccc&a:7&w:2.5&h:1.5%3B&=Caps%20Lock&_a:4&w:1.5&h:1.5%3B&=A%0A%0A%C3%84%0A%C3%A4&_w:1.5&h:1.5%3B&=S%0A%0A%E1%BA%9E%0A%C3%9F&_w:1.5&h:1.5%3B&=D%0A%0A%C3%82%0A%C3%A2&_w:1.5&h:1.5%3B&=F%0A%0A%C3%88%0A%C3%A8&_w:1.5&h:1.5%3B&=G%0A%0A%C3%89%0A%C3%A9&_w:1.5&h:1.5%3B&=H%0A%0A%C3%99%0A%C3%B9&_w:1.5&h:1.5%3B&=J%0A%0A%C3%9A%0A%C3%BA&_w:1.5&h:1.5%3B&=K%0A%0A%C5%92%0A%C5%93&_w:1.5&h:1.5%3B&=L%0A%0A%C3%98%0A%C3%B8&_w:1.5&h:1.5%3B&=%2F:%0A%2F%3B%0A%C2%B7%0A%C2%B0&_c=%230075ff&w:1.5&h:1.5%3B&=%22%0A'%0A%C2%A8%0A%CB%8A%7C%CB%9D&_c=%23cccccc&a:7&w:3&h:1.5%3B&=Enter%3B&@_y:0.5&c=%2356db50&w:1.75&h:1.5%3B&=Shift&_c=%23cccccc&a:4&w:1.5&h:1.5%3B&=%7C%0A%5C&_w:1.5&h:1.5%3B&=Z%0A%0A%C3%80%0A%C3%A0&_w:1.5&h:1.5%3B&=X%0A%0A%C3%81%0A%C3%A1&_w:1.5&h:1.5%3B&=C%0A%0A%C3%87%0A%C3%A7&_w:1.5&h:1.5%3B&=V%0A%0A%C3%8C%0A%C3%AC&_w:1.5&h:1.5%3B&=B%0A%0A%C3%8D%0A%C3%AD&_w:1.5&h:1.5%3B&=N%0A%0A%C3%91%0A%C3%B1&_c=%230075ff&w:1.5&h:1.5%3B&=M%0A%0A%E2%88%9A%0A%CE%BC&_c=%23cccccc&w:1.5&h:1.5%3B&=%3C%0A,%0A%C3%92%0A%C3%B2&_w:1.5&h:1.5%3B&=%3E%0A.%0A%C3%93%0A%C3%B3&_w:1.5&h:1.5%3B&=%3F%0A%2F%2F%0A%E2%80%A6%0A%C2%BF&_c=%2356db50&a:7&w:3.75&h:1.5%3B&=Shift%3B&@_y:0.5&c=%23cccccc&w:1.75&h:1.5%3B&=Ctrl&_w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Alt&_a:4&w:9.75&h:1.5%3B&=Space%0A%0ANon-Breaking%20Space%0A(AltGr%20+%20Space)&_c=%2356db50&a:7&w:1.75&h:1.5%3B&=AltGr&_c=%23cccccc&w:1.75&h:1.5%3B&=Super&_w:1.75&h:1.5%3B&=Menu&_w:1.75&h:1.5%3B&=Ctrl -- 2.47.3 From 1a318c23e751a2082642facd3306fb202afab843 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:15:31 +0100 Subject: [PATCH 05/16] Add files via upload Some minor changes have been made, mostly concerning the dead key 'currency'. --- .../UltimateKEYS SW (Scroll Lock).ahk | 16 +++++++++------- autohotkey-v1.1/UltimateKEYS.ahk | 16 +++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk b/autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk index c6ee0e2..3bd0e71 100644 --- a/autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk +++ b/autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk @@ -1,4 +1,4 @@ -; UltimateKEYS SW (Scroll Lock).ahk - 2021-10-28 +; UltimateKEYS SW (Scroll Lock).ahk - 2021-11-14 ; Created by : Pieter Degroote @@ -685,10 +685,10 @@ dkSymbols.item[" "] := "{u+00d7}" ; (×) multiplication sign ; Dead Key : Currency dkCurrency := ComObjCreate("Scripting.Dictionary") -dkCurrency.item["a"] := "{u+20b3}" ; (₳) Argentine austral +dkCurrency.item["a"] := "{u+058f}" ; (֏) Armenian dram dkCurrency.item["A"] := "{u+20b3}" ; (₳) Argentine austral dkCurrency.item["b"] := "{u+20bf}" ; (₿) bitcoin -dkCurrency.item["B"] := "{u+20bf}" ; (₿) bitcoin +dkCurrency.item["B"] := "{u+0e3f}" ; (฿) Thai baht dkCurrency.item["c"] := "{u+20a1}" ; (₡) Costa Rican colón dkCurrency.item["C"] := "{u+20b5}" ; (₵) Ghanaian cedi dkCurrency.item["d"] := "{u+20ab}" ; (₫) Vietnamese dong @@ -706,9 +706,9 @@ dkCurrency.item["L"] := "{u+20be}" ; (₾) Georgian lari dkCurrency.item["m"] := "{u+20bc}" ; (₼) Azerbaijani manat dkCurrency.item["M"] := "{u+20a5}" ; (₥) mill sign dkCurrency.item["n"] := "{u+20a6}" ; (₦) Nigerian naira -dkCurrency.item["N"] := "{u+20a6}" ; (₦) Nigerian naira +dkCurrency.item["N"] := "{u+20bb}" ; (₻) nordic mark dkCurrency.item["p"] := "{u+20b1}" ; (₱) Philippine peso -dkCurrency.item["P"] := "{u+20b1}" ; (₱) Philippine peso +dkCurrency.item["P"] := "{u+20a7}" ; (₧) Spanish pesetas dkCurrency.item["r"] := "{u+20b9}" ; (₹) Indian rupee dkCurrency.item["R"] := "{u+20bd}" ; (₽) Russian ruble dkCurrency.item["s"] := "{u+20aa}" ; (₪) Israeli new shekel @@ -720,9 +720,11 @@ dkCurrency.item["W"] := "{u+20a9}" ; (₩) South Korean won dkCurrency.item["x"] := "{u+00a4}" ; (¤) currency sign dkCurrency.item["X"] := "{u+00a4}" ; (¤) currency sign dkCurrency.item[chr(0x00e7)] := "{u+20a2}" ; (ç -> ₢) Brazilian cruzeiro -dkCurrency.item[chr(0x00c7)] := "{u+20a2}" ; (Ç -> ₢) Brazilian cruzeiro +dkCurrency.item[chr(0x00c7)] := "{u+20a0}" ; (Ç -> ₠) euro-currency sign dkCurrency.item[chr(0x00f8)] := "{u+20a4}" ; (ø -> ₤) lira dkCurrency.item[chr(0x00d8)] := "{u+20b6}" ; (Ø -> ₶) livre tournois +dkCurrency.item[chr(0x00ea)] := "{u+20a8}" ; (ê -> ₨) rupee sign +dkCurrency.item[chr(0x00ca)] := "{u+20a8}" ; (Ê -> ₨) rupee sign dkCurrency.item[" "] := "{u+00a4}" ; (¤) currency sign @@ -877,7 +879,7 @@ dkMathSymbols.item["^"] := "{u+2220}" ; (∠) angle symbol dkMathSymbols.item["7"] := "{u+2227}" ; (∧) logical and dkMathSymbols.item["&"] := "{u+2227}" ; (∧) logical and dkMathSymbols.item["8"] := "{u+2297}" ; (⊗) circled times -dkMathSymbols.item["*"] := "{u+2297}" ; (⊗) circled times +dkMathSymbols.item["*"] := "{u+2299}" ; (⊙) circled dot operator dkMathSymbols.item["9"] := "{u+221f}" ; (∟) right angle dkMathSymbols.item["("] := "{u+221f}" ; (∟) right angle dkMathSymbols.item["0"] := "{u+2221}" ; (∡) measured angle diff --git a/autohotkey-v1.1/UltimateKEYS.ahk b/autohotkey-v1.1/UltimateKEYS.ahk index 8987870..26ed2b9 100644 --- a/autohotkey-v1.1/UltimateKEYS.ahk +++ b/autohotkey-v1.1/UltimateKEYS.ahk @@ -1,4 +1,4 @@ -; UltimateKEYS.ahk - 2021-10-28 +; UltimateKEYS.ahk - 2021-11-14 ; Created by : Pieter Degroote @@ -685,10 +685,10 @@ dkSymbols.item[" "] := "{u+00d7}" ; (×) multiplication sign ; Dead Key : Currency dkCurrency := ComObjCreate("Scripting.Dictionary") -dkCurrency.item["a"] := "{u+20b3}" ; (₳) Argentine austral +dkCurrency.item["a"] := "{u+058f}" ; (֏) Armenian dram dkCurrency.item["A"] := "{u+20b3}" ; (₳) Argentine austral dkCurrency.item["b"] := "{u+20bf}" ; (₿) bitcoin -dkCurrency.item["B"] := "{u+20bf}" ; (₿) bitcoin +dkCurrency.item["B"] := "{u+0e3f}" ; (฿) Thai baht dkCurrency.item["c"] := "{u+20a1}" ; (₡) Costa Rican colón dkCurrency.item["C"] := "{u+20b5}" ; (₵) Ghanaian cedi dkCurrency.item["d"] := "{u+20ab}" ; (₫) Vietnamese dong @@ -706,9 +706,9 @@ dkCurrency.item["L"] := "{u+20be}" ; (₾) Georgian lari dkCurrency.item["m"] := "{u+20bc}" ; (₼) Azerbaijani manat dkCurrency.item["M"] := "{u+20a5}" ; (₥) mill sign dkCurrency.item["n"] := "{u+20a6}" ; (₦) Nigerian naira -dkCurrency.item["N"] := "{u+20a6}" ; (₦) Nigerian naira +dkCurrency.item["N"] := "{u+20bb}" ; (₻) nordic mark dkCurrency.item["p"] := "{u+20b1}" ; (₱) Philippine peso -dkCurrency.item["P"] := "{u+20b1}" ; (₱) Philippine peso +dkCurrency.item["P"] := "{u+20a7}" ; (₧) Spanish pesetas dkCurrency.item["r"] := "{u+20b9}" ; (₹) Indian rupee dkCurrency.item["R"] := "{u+20bd}" ; (₽) Russian ruble dkCurrency.item["s"] := "{u+20aa}" ; (₪) Israeli new shekel @@ -720,9 +720,11 @@ dkCurrency.item["W"] := "{u+20a9}" ; (₩) South Korean won dkCurrency.item["x"] := "{u+00a4}" ; (¤) currency sign dkCurrency.item["X"] := "{u+00a4}" ; (¤) currency sign dkCurrency.item[chr(0x00e7)] := "{u+20a2}" ; (ç -> ₢) Brazilian cruzeiro -dkCurrency.item[chr(0x00c7)] := "{u+20a2}" ; (Ç -> ₢) Brazilian cruzeiro +dkCurrency.item[chr(0x00c7)] := "{u+20a0}" ; (Ç -> ₠) euro-currency sign dkCurrency.item[chr(0x00f8)] := "{u+20a4}" ; (ø -> ₤) lira dkCurrency.item[chr(0x00d8)] := "{u+20b6}" ; (Ø -> ₶) livre tournois +dkCurrency.item[chr(0x00ea)] := "{u+20a8}" ; (ê -> ₨) rupee sign +dkCurrency.item[chr(0x00ca)] := "{u+20a8}" ; (Ê -> ₨) rupee sign dkCurrency.item[" "] := "{u+00a4}" ; (¤) currency sign @@ -877,7 +879,7 @@ dkMathSymbols.item["^"] := "{u+2220}" ; (∠) angle symbol dkMathSymbols.item["7"] := "{u+2227}" ; (∧) logical and dkMathSymbols.item["&"] := "{u+2227}" ; (∧) logical and dkMathSymbols.item["8"] := "{u+2297}" ; (⊗) circled times -dkMathSymbols.item["*"] := "{u+2297}" ; (⊗) circled times +dkMathSymbols.item["*"] := "{u+2299}" ; (⊙) circled dot operator dkMathSymbols.item["9"] := "{u+221f}" ; (∟) right angle dkMathSymbols.item["("] := "{u+221f}" ; (∟) right angle dkMathSymbols.item["0"] := "{u+2221}" ; (∡) measured angle -- 2.47.3 From f30b73b8200381bc4cf0c31fc3343cbe700534b4 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:16:21 +0100 Subject: [PATCH 06/16] Add files via upload Some minor changes have been made, mostly concerning the dead key 'currency'. --- .../UltimateKEYS (for AutoHotkey v2.0).ahk | 1531 +++++++++++++++ ...SW (Scroll Lock) (for AutoHotkey v2.0).ahk | 1716 +++++++++++++++++ 2 files changed, 3247 insertions(+) create mode 100644 autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk create mode 100644 autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk diff --git a/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk b/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk new file mode 100644 index 0000000..cd98dce --- /dev/null +++ b/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk @@ -0,0 +1,1531 @@ +; UltimateKEYS (for AutoHotkey v2.0).ahk - 2021-11-14 + +; Created by : Pieter Degroote + +; License : GNU General Public License Version 3 + +; GitHub : https://github.com/pieter-degroote/UltimateKEYS + + +; Requirements : + +; Keyboard layout (on Windows OS) : US QWERTY + +; AutoHotkey v2.0 (https://www.autohotkey.com/) + + + +ListLines False ; omits recently executed lines from history (for privacy and security) +KeyHistory 0 ; disables the key history (for privacy and security) + +SendMode "Event" ; allows chaining of customized key combinations + +global dkEndKeys := "{bs}{del}{esc}{home}{end}" ; ends dead key input on specific keys + + +; Dead Key : Circumflex Accent + +global dkCircumflex := Map() +dkCircumflex["a"] := "{u+0203}" ; (ȃ) a with inverted breve +dkCircumflex["A"] := "{u+0202}" ; (Ȃ) A with inverted breve +dkCircumflex["c"] := "{u+0109}" ; (ĉ) c with circumflex +dkCircumflex["C"] := "{u+0108}" ; (Ĉ) C with circumflex +dkCircumflex["e"] := "{u+0207}" ; (ȇ) e with inverted breve +dkCircumflex["E"] := "{u+0206}" ; (Ȇ) E with inverted breve +dkCircumflex["g"] := "{u+011d}" ; (ĝ) g with circumflex +dkCircumflex["G"] := "{u+011c}" ; (Ĝ) G with circumflex +dkCircumflex["h"] := "{u+0125}" ; (ĥ) h with circumflex +dkCircumflex["H"] := "{u+0124}" ; (Ĥ) H with circumflex +dkCircumflex["i"] := "{u+020b}" ; (ȋ) i with inverted breve +dkCircumflex["I"] := "{u+020a}" ; (Ȋ) I with inverted breve +dkCircumflex["j"] := "{u+0135}" ; (ĵ) j with circumflex +dkCircumflex["J"] := "{u+0134}" ; (Ĵ) J with circumflex +dkCircumflex["o"] := "{u+020f}" ; (ȏ) o with inverted breve +dkCircumflex["O"] := "{u+020e}" ; (Ȏ) O with inverted breve +dkCircumflex["r"] := "{u+0213}" ; (ȓ) r with inverted breve +dkCircumflex["R"] := "{u+0212}" ; (Ȓ) R with inverted breve +dkCircumflex["s"] := "{u+015d}" ; (ŝ) s with circumflex +dkCircumflex["S"] := "{u+015c}" ; (Ŝ) S with circumflex +dkCircumflex["u"] := "{u+0217}" ; (ȗ) u with inverted breve +dkCircumflex["U"] := "{u+0216}" ; (Ȗ) U with inverted breve +dkCircumflex["w"] := "{u+0175}" ; (ŵ) w with circumflex +dkCircumflex["W"] := "{u+0174}" ; (Ŵ) W with circumflex +dkCircumflex["y"] := "{u+0177}" ; (ŷ) y with circumflex +dkCircumflex["Y"] := "{u+0176}" ; (Ŷ) Y with circumflex +dkCircumflex["z"] := "{u+1e91}" ; (ẑ) z with circumflex +dkCircumflex["Z"] := "{u+1e90}" ; (Ẑ) Z with circumflex +dkCircumflex["1"] := "{u+21d9}" ; (⇙) south west double arrow +dkCircumflex["2"] := "{u+21d3}" ; (⇓) downwards double arrow +dkCircumflex["3"] := "{u+21d8}" ; (⇘) south east double arrow +dkCircumflex["4"] := "{u+21d0}" ; (⇐) leftwards double arrow +dkCircumflex["5"] := "{u+21d5}" ; (⇕) up down double arrow +dkCircumflex["6"] := "{u+21d2}" ; (⇒) rightwards double arrow +dkCircumflex["7"] := "{u+21d6}" ; (⇖) north west double arrow +dkCircumflex["8"] := "{u+21d1}" ; (⇑) upwards double arrow +dkCircumflex["9"] := "{u+21d7}" ; (⇗) north east double arrow +dkCircumflex["0"] := "{u+21d4}" ; (⇔) left right double arrow +dkCircumflex["!"] := "{u+21d9}" ; (⇙) south west double arrow +dkCircumflex["@"] := "{u+21d3}" ; (⇓) downwards double arrow +dkCircumflex["#"] := "{u+21d8}" ; (⇘) south east double arrow +dkCircumflex["$"] := "{u+21d0}" ; (⇐) leftwards double arrow +dkCircumflex["%"] := "{u+21d5}" ; (⇕) up down double arrow +dkCircumflex["^"] := "{u+21d2}" ; (⇒) rightwards double arrow +dkCircumflex["&"] := "{u+21d6}" ; (⇖) north west double arrow +dkCircumflex["*"] := "{u+21d1}" ; (⇑) upwards double arrow +dkCircumflex["("] := "{u+21d7}" ; (⇗) north east double arrow +dkCircumflex[")"] := "{u+21d4}" ; (⇔) left right double arrow +dkCircumflex[" "] := "{^}" ; circumflex accent + + +; Dead Key : Caron + +global dkCaron := Map() +dkCaron["a"] := "{u+01ce}" ; (ǎ) a with caron +dkCaron["A"] := "{u+01cd}" ; (Ǎ) A with caron +dkCaron["c"] := "{u+010d}" ; (č) c with caron +dkCaron["C"] := "{u+010c}" ; (Č) C with caron +dkCaron["d"] := "{u+010f}" ; (ď) d with caron +dkCaron["D"] := "{u+010e}" ; (Ď) D with caron +dkCaron["e"] := "{u+011b}" ; (ě) e with caron +dkCaron["E"] := "{u+011a}" ; (Ě) E with caron +dkCaron["g"] := "{u+01e7}" ; (ǧ) g with caron +dkCaron["G"] := "{u+01e6}" ; (Ǧ) G with caron +dkCaron["h"] := "{u+021f}" ; (ȟ) h with caron +dkCaron["H"] := "{u+021e}" ; (Ȟ) H with caron +dkCaron["i"] := "{u+01d0}" ; (ǐ) i with caron +dkCaron["I"] := "{u+01cf}" ; (Ǐ) I with caron +dkCaron["j"] := "{u+01f0}" ; (ǰ) j with caron +dkCaron["k"] := "{u+01e9}" ; (ǩ) k with caron +dkCaron["K"] := "{u+01e8}" ; (Ǩ) K with caron +dkCaron["l"] := "{u+013e}" ; (ľ) l with caron +dkCaron["L"] := "{u+013d}" ; (Ľ) L with caron +dkCaron["n"] := "{u+0148}" ; (ň) n with caron +dkCaron["N"] := "{u+0147}" ; (Ň) N with caron +dkCaron["o"] := "{u+01d2}" ; (ǒ) o with caron +dkCaron["O"] := "{u+01d1}" ; (Ǒ) O with caron +dkCaron["r"] := "{u+0159}" ; (ř) r with caron +dkCaron["R"] := "{u+0158}" ; (Ř) R with caron +dkCaron["s"] := "{u+0161}" ; (š) s with caron +dkCaron["S"] := "{u+0160}" ; (Š) S with caron +dkCaron["t"] := "{u+0165}" ; (ť) t with caron +dkCaron["T"] := "{u+0164}" ; (Ť) T with caron +dkCaron["u"] := "{u+01d4}" ; (ǔ) u with caron +dkCaron["U"] := "{u+01d3}" ; (Ǔ) U with caron +dkCaron["v"] := "{u+01da}" ; (ǚ) u with diaeresis and caron +dkCaron["V"] := "{u+01d9}" ; (Ǚ) U with diaeresis and caron +dkCaron["z"] := "{u+017e}" ; (ž) z with caron +dkCaron["Z"] := "{u+017d}" ; (Ž) Z with caron +dkCaron["3"] := "{u+01ef}" ; (ǯ) small letter ezh with caron +dkCaron["#"] := "{u+01ee}" ; (Ǯ) capital letter ezh with caron +dkCaron["2"] := "{u+25bc}" ; (▼) black down-pointing triangle +dkCaron["@"] := "{u+25bd}" ; (▽) white down-pointing triangle +dkCaron["4"] := "{u+25c0}" ; (◀) black left-pointing triangle +dkCaron["$"] := "{u+25c1}" ; (◁) white left-pointing triangle +dkCaron["6"] := "{u+25b6}" ; (▶) black right-pointing triangle +dkCaron["^"] := "{u+25b7}" ; (▷) white right-pointing triangle +dkCaron["8"] := "{u+25b2}" ; (▲) black up-pointing triangle +dkCaron["*"] := "{u+25b3}" ; (△) white up-pointing triangle +dkCaron[" "] := "{u+02c7}" ; (ˇ) caron + + +; Dead Key : Dot Above + +global dkDotAbove := Map() +dkDotAbove["a"] := "{u+0227}" ; (ȧ) a with dot above +dkDotAbove["A"] := "{u+0226}" ; (Ȧ) A with dot above +dkDotAbove["b"] := "{u+1e03}" ; (ḃ) b with dot above +dkDotAbove["B"] := "{u+1e02}" ; (Ḃ) B with dot above +dkDotAbove["c"] := "{u+010b}" ; (ċ) c with dot above +dkDotAbove["C"] := "{u+010a}" ; (Ċ) C with dot above +dkDotAbove["d"] := "{u+1e0b}" ; (ḋ) d with dot above +dkDotAbove["D"] := "{u+1e0a}" ; (Ḋ) D with dot above +dkDotAbove["e"] := "{u+0117}" ; (ė) e with dot above +dkDotAbove["E"] := "{u+0116}" ; (Ė) E with dot above +dkDotAbove["f"] := "{u+1e1f}" ; (ḟ) f with dot above +dkDotAbove["F"] := "{u+1e1e}" ; (Ḟ) F with dot above +dkDotAbove["g"] := "{u+0121}" ; (ġ) g with dot above +dkDotAbove["G"] := "{u+0120}" ; (Ġ) G with dot above +dkDotAbove["h"] := "{u+1e23}" ; (ḣ) h with dot above +dkDotAbove["H"] := "{u+1e22}" ; (Ḣ) H with dot above +dkDotAbove["i"] := "{u+0131}" ; (ı) dotless i (Turkish, Azerbaijani) +dkDotAbove["I"] := "{u+0130}" ; (İ) I with dot above (Turkish, Azerbaijani) +dkDotAbove["j"] := "{u+0237}" ; (ȷ) dotless j +dkDotAbove["l"] := "{u+0140}" ; (ŀ) l with middle dot +dkDotAbove["L"] := "{u+013f}" ; (Ŀ) L with middle dot +dkDotAbove["m"] := "{u+1e41}" ; (ṁ) m with dot above +dkDotAbove["M"] := "{u+1e40}" ; (Ṁ) M with dot above +dkDotAbove["n"] := "{u+1e45}" ; (ṅ) n with dot above +dkDotAbove["N"] := "{u+1e44}" ; (Ṅ) N with dot above +dkDotAbove["o"] := "{u+022f}" ; (ȯ) o with dot above +dkDotAbove["O"] := "{u+022e}" ; (Ȯ) O with dot above +dkDotAbove["p"] := "{u+1e57}" ; (ṗ) p with dot above +dkDotAbove["P"] := "{u+1e56}" ; (Ṗ) P with dot above +dkDotAbove["r"] := "{u+1e59}" ; (ṙ) r with dot above +dkDotAbove["R"] := "{u+1e58}" ; (Ṙ) R with dot above +dkDotAbove["s"] := "{u+1e61}" ; (ṡ) s with dot above +dkDotAbove["S"] := "{u+1e60}" ; (Ṡ) S with dot above +dkDotAbove["t"] := "{u+1e6b}" ; (ṫ) t with dot above +dkDotAbove["T"] := "{u+1e6a}" ; (Ṫ) T with dot above +dkDotAbove["u"] := "{u+016f}" ; (ů) u with ring above +dkDotAbove["U"] := "{u+016e}" ; (Ů) U with ring above +dkDotAbove["w"] := "{u+1e87}" ; (ẇ) w with dot above +dkDotAbove["W"] := "{u+1e86}" ; (Ẇ) W with dot above +dkDotAbove["x"] := "{u+1e8b}" ; (ẋ) x with dot above +dkDotAbove["X"] := "{u+1e8a}" ; (Ẋ) X with dot above +dkDotAbove["y"] := "{u+1e8f}" ; (ẏ) y with dot above +dkDotAbove["Y"] := "{u+1e8e}" ; (Ẏ) Y with dot above +dkDotAbove["z"] := "{u+017c}" ; (ż) z with dot above +dkDotAbove["Z"] := "{u+017b}" ; (Ż) Z with dot above +dkDotAbove["1"] := "{u+2199}" ; (↙) south west arrow +dkDotAbove["2"] := "{u+2193}" ; (↓) downwards arrow +dkDotAbove["3"] := "{u+2198}" ; (↘) south east arrow +dkDotAbove["4"] := "{u+2190}" ; (←) leftwards arrow +dkDotAbove["5"] := "{u+2195}" ; (↕) up down arrow +dkDotAbove["6"] := "{u+2192}" ; (→) rightwards arrow +dkDotAbove["7"] := "{u+2196}" ; (↖) north west arrow +dkDotAbove["8"] := "{u+2191}" ; (↑) upwards arrow +dkDotAbove["9"] := "{u+2197}" ; (↗) north east arrow +dkDotAbove["0"] := "{u+2194}" ; (↔) left right arrow +dkDotAbove["!"] := "{u+2199}" ; (↙) south west arrow +dkDotAbove["@"] := "{u+2193}" ; (↓) downwards arrow +dkDotAbove["#"] := "{u+2198}" ; (↘) south east arrow +dkDotAbove["$"] := "{u+2190}" ; (←) leftwards arrow +dkDotAbove["%"] := "{u+2195}" ; (↕) up down arrow +dkDotAbove["^"] := "{u+2192}" ; (→) rightwards arrow +dkDotAbove["&"] := "{u+2196}" ; (↖) north west arrow +dkDotAbove["*"] := "{u+2191}" ; (↑) upwards arrow +dkDotAbove["("] := "{u+2197}" ; (↗) north east arrow +dkDotAbove[")"] := "{u+2194}" ; (↔) left right arrow +dkDotAbove[chr(0x00e5)] := "{u+1e98}" ; (å -> ẘ) w with ring above +dkDotAbove[chr(0x00fb)] := "{u+1e99}" ; (û -> ẙ) y with ring above +dkDotAbove[" "] := "{u+02d9}" ; (˙) dot above + + +; Dead Key : Macron/Stroke + +global dkMacronStroke := Map() +dkMacronStroke["a"] := "{u+0101}" ; (ā) a with macron +dkMacronStroke["A"] := "{u+0100}" ; (Ā) A with macron +dkMacronStroke["b"] := "{u+0180}" ; (ƀ) b with stroke +dkMacronStroke["B"] := "{u+0243}" ; (Ƀ) B with stroke +dkMacronStroke["d"] := "{u+0111}" ; (đ) d with stroke +dkMacronStroke["D"] := "{u+0110}" ; (Đ) D with stroke +dkMacronStroke["e"] := "{u+0113}" ; (ē) e with macron +dkMacronStroke["E"] := "{u+0112}" ; (Ē) E with macron +dkMacronStroke["g"] := "{u+01e5}" ; (ǥ) g with stroke (Skolt Sami) +dkMacronStroke["G"] := "{u+01e4}" ; (Ǥ) G with stroke (Skolt Sami) +dkMacronStroke["h"] := "{u+0127}" ; (ħ) h with stroke (Maltese) +dkMacronStroke["H"] := "{u+0126}" ; (Ħ) H with stroke (Maltese) +dkMacronStroke["i"] := "{u+012b}" ; (ī) i with macron +dkMacronStroke["I"] := "{u+012a}" ; (Ī) I with macron +dkMacronStroke["j"] := "{u+0249}" ; (ɉ) j with stroke +dkMacronStroke["J"] := "{u+0248}" ; (Ɉ) J with stroke +dkMacronStroke["l"] := "{u+0142}" ; (ł) l with stroke +dkMacronStroke["L"] := "{u+0141}" ; (Ł) L with stroke +dkMacronStroke["o"] := "{u+014d}" ; (ō) o with macron +dkMacronStroke["O"] := "{u+014c}" ; (Ō) O with macron +dkMacronStroke["p"] := "{u+1d7d}" ; (ᵽ) p with stroke +dkMacronStroke["P"] := "{u+2c63}" ; (Ᵽ) P with stroke +dkMacronStroke["r"] := "{u+024d}" ; (ɍ) r with stroke +dkMacronStroke["R"] := "{u+024c}" ; (Ɍ) R with stroke +dkMacronStroke["t"] := "{u+0167}" ; (ŧ) t with stroke +dkMacronStroke["T"] := "{u+0166}" ; (Ŧ) T with stroke +dkMacronStroke["u"] := "{u+016b}" ; (ū) u with macron +dkMacronStroke["U"] := "{u+016a}" ; (Ū) U with macron +dkMacronStroke["y"] := "{u+0233}" ; (ȳ) y with macron +dkMacronStroke["Y"] := "{u+0232}" ; (Ȳ) Y with macron +dkMacronStroke["z"] := "{u+01b6}" ; (ƶ) z with stroke +dkMacronStroke["Z"] := "{u+01b5}" ; (Ƶ) Z with stroke +dkMacronStroke["1"] := "{u+21b2}" ; (↲) downwards arrow with tip leftwards +dkMacronStroke["2"] := "{u+21f5}" ; (⇵) downwards arrow leftwards of upwards arrow +dkMacronStroke["3"] := "{u+21b3}" ; (↳) downwards arrow with tip rightwards +dkMacronStroke["4"] := "{u+21c6}" ; (⇆) leftwards arrow over rightwards arrow +dkMacronStroke["5"] := "{u+21a8}" ; (↨) up down arrow with base +dkMacronStroke["6"] := "{u+21c4}" ; (⇄) rightwards arrow over leftwards arrow +dkMacronStroke["7"] := "{u+21b0}" ; (↰) upwards arrow with tip leftwards +dkMacronStroke["8"] := "{u+21c5}" ; (⇅) upwards arrow leftwards of downwards arrow +dkMacronStroke["9"] := "{u+21b1}" ; (↱) upwards arrow with tip rightwards +dkMacronStroke["0"] := "{u+21b9}" ; (↹) leftwards arrow to bar over rightwards arrow to bar +dkMacronStroke["!"] := "{u+21b2}" ; (↲) downwards arrow with tip leftwards +dkMacronStroke["@"] := "{u+21f5}" ; (⇵) downwards arrow leftwards of upwards arrow +dkMacronStroke["#"] := "{u+21b3}" ; (↳) downwards arrow with tip rightwards +dkMacronStroke["$"] := "{u+21c6}" ; (⇆) leftwards arrow over rightwards arrow +dkMacronStroke["%"] := "{u+21a8}" ; (↨) up down arrow with base +dkMacronStroke["^"] := "{u+21c4}" ; (⇄) rightwards arrow over leftwards arrow +dkMacronStroke["&"] := "{u+21b0}" ; (↰) upwards arrow with tip leftwards +dkMacronStroke["*"] := "{u+21c5}" ; (⇅) upwards arrow leftwards of downwards arrow +dkMacronStroke["("] := "{u+21b1}" ; (↱) upwards arrow with tip rightwards +dkMacronStroke[")"] := "{u+21b9}" ; (↹) leftwards arrow to bar over rightwards arrow to bar +dkMacronStroke[chr(0x00e6)] := "{u+01e3}" ; (æ -> ǣ) ae with macron +dkMacronStroke[chr(0x00c6)] := "{u+01e2}" ; (Æ -> Ǣ) AE with macron +dkMacronStroke[chr(0x00e9)] := "{u+1e21}" ; (é -> ḡ) g with macron +dkMacronStroke[chr(0x00c9)] := "{u+1e20}" ; (É -> Ḡ) G with macron +dkMacronStroke[chr(0x00ef)] := "{u+0268}" ; (ï -> ɨ) i with stroke +dkMacronStroke[chr(0x00cf)] := "{u+0197}" ; (Ï -> Ɨ) I with stroke +dkMacronStroke[chr(0x00f8)] := "{u+019a}" ; (ø -> ƚ) l with bar +dkMacronStroke[chr(0x00d8)] := "{u+023d}" ; (Ø -> Ƚ) L with bar +dkMacronStroke[chr(0x00f6)] := "{u+01ed}" ; (ö -> ǭ) o with ogonek and macron +dkMacronStroke[chr(0x00d6)] := "{u+01ec}" ; (Ö -> Ǭ) O with ogonek and macron +dkMacronStroke[chr(0x00fc)] := "{u+0289}" ; (ü -> ʉ) u with bar +dkMacronStroke[chr(0x00dc)] := "{u+0244}" ; (Ü -> Ʉ) U with bar +dkMacronStroke[chr(0x00fb)] := "{u+024f}" ; (û -> ɏ) y with stroke +dkMacronStroke[chr(0x00db)] := "{u+024e}" ; (Û -> Ɏ) Y with stroke +dkMacronStroke[" "] := "{u+00af}" ; (¯) macron + + +; Dead Key : Cedilla/Ogonek + +global dkCedillaOgonek := Map() +dkCedillaOgonek["a"] := "{u+0105}" ; (ą) a with ogonek +dkCedillaOgonek["A"] := "{u+0104}" ; (Ą) A with ogonek +dkCedillaOgonek["c"] := "{u+00e7}" ; (ç) c with cedilla +dkCedillaOgonek["C"] := "{u+00c7}" ; (Ç) C with cedilla +dkCedillaOgonek["d"] := "{u+1e11}" ; (ḑ) d with cedilla +dkCedillaOgonek["D"] := "{u+1e10}" ; (Ḑ) D with cedilla +dkCedillaOgonek["e"] := "{u+0119}" ; (ę) e with ogonek +dkCedillaOgonek["E"] := "{u+0118}" ; (Ę) E with ogonek +dkCedillaOgonek["g"] := "{u+0123}" ; (ģ) g with cedilla +dkCedillaOgonek["G"] := "{u+0122}" ; (Ģ) G with cedilla +dkCedillaOgonek["h"] := "{u+1e29}" ; (ḩ) h with cedilla +dkCedillaOgonek["H"] := "{u+1e28}" ; (Ḩ) H with cedilla +dkCedillaOgonek["i"] := "{u+012f}" ; (į) i with ogonek +dkCedillaOgonek["I"] := "{u+012e}" ; (Į) I with ogonek +dkCedillaOgonek["k"] := "{u+0137}" ; (ķ) k with cedilla +dkCedillaOgonek["K"] := "{u+0136}" ; (Ķ) K with cedilla +dkCedillaOgonek["l"] := "{u+013c}" ; (ļ) l with cedilla +dkCedillaOgonek["L"] := "{u+013b}" ; (Ļ) L with cedilla +dkCedillaOgonek["n"] := "{u+0146}" ; (ņ) n with cedilla +dkCedillaOgonek["N"] := "{u+0145}" ; (Ņ) N with cedilla +dkCedillaOgonek["o"] := "{u+01eb}" ; (ǫ) o with ogonek +dkCedillaOgonek["O"] := "{u+01ea}" ; (Ǫ) O with ogonek +dkCedillaOgonek["r"] := "{u+0157}" ; (ŗ) r with cedilla +dkCedillaOgonek["R"] := "{u+0156}" ; (Ŗ) R with cedilla +dkCedillaOgonek["s"] := "{u+015f}" ; (ş) s with cedilla +dkCedillaOgonek["S"] := "{u+015e}" ; (Ş) S with cedilla +dkCedillaOgonek["t"] := "{u+0163}" ; (ţ) t with cedilla +dkCedillaOgonek["T"] := "{u+0162}" ; (Ţ) T with cedilla +dkCedillaOgonek["u"] := "{u+0173}" ; (ų) u with ogonek +dkCedillaOgonek["U"] := "{u+0172}" ; (Ų) U with ogonek +dkCedillaOgonek["1"] := "{u+2013}" ; (–) en dash +dkCedillaOgonek["2"] := "{u+2014}" ; (—) em dash +dkCedillaOgonek["3"] := "{u+2015}" ; (―) horizontal bar +dkCedillaOgonek["4"] := "{u+2010}" ; (‐) hyphen +dkCedillaOgonek["9"] := "{u+2012}" ; (‒) figure dash +dkCedillaOgonek["0"] := "{u+00ad}" ; (­) soft hyphen +dkCedillaOgonek["!"] := "{u+2013}" ; (–) en dash +dkCedillaOgonek["@"] := "{u+2014}" ; (—) em dash +dkCedillaOgonek["#"] := "{u+2015}" ; (―) horizontal bar +dkCedillaOgonek["$"] := "{u+2010}" ; (‐) hyphen +dkCedillaOgonek["("] := "{u+2012}" ; (‒) figure dash +dkCedillaOgonek[")"] := "{u+00ad}" ; (­) soft hyphen +dkCedillaOgonek["-"] := "{u+2011}" ; (‑) non-breaking hyphen +dkCedillaOgonek["."] := "{u+02db}" ; (˛) ogonek +dkCedillaOgonek[chr(0x00eb)] := "{u+0229}" ; (ë -> ȩ) e with cedilla +dkCedillaOgonek[chr(0x00cb)] := "{u+0228}" ; (Ë -> Ȩ) E with cedilla +dkCedillaOgonek[chr(0x00f6)] := "{u+01ed}" ; (ö -> ǭ) o with ogonek and macron +dkCedillaOgonek[chr(0x00d6)] := "{u+01ec}" ; (Ö -> Ǭ) O with ogonek and macron +dkCedillaOgonek[" "] := "{u+00b8}" ; (¸) cedilla + + +; Dead Key : Breve/Special + +global dkBreveSpecial := Map() +dkBreveSpecial["a"] := "{u+0103}" ; (ă) a with breve +dkBreveSpecial["A"] := "{u+0102}" ; (Ă) A with breve +dkBreveSpecial["c"] := "{u+0188}" ; (ƈ) c with hook +dkBreveSpecial["C"] := "{u+0187}" ; (Ƈ) C with hook +dkBreveSpecial["d"] := "{u+0256}" ; (ɖ) small letter d with tail +dkBreveSpecial["D"] := "{u+0189}" ; (Ɖ) capital letter African D +dkBreveSpecial["e"] := "{u+0115}" ; (ĕ) e with breve +dkBreveSpecial["E"] := "{u+0114}" ; (Ĕ) E with breve +dkBreveSpecial["f"] := "{u+0259}" ; (ə) small letter schwa (Azerbaijani) +dkBreveSpecial["F"] := "{u+018f}" ; (Ə) capital letter schwa (Azerbaijani) +dkBreveSpecial["g"] := "{u+011f}" ; (ğ) g with breve +dkBreveSpecial["G"] := "{u+011e}" ; (Ğ) G with breve +dkBreveSpecial["h"] := "{u+a727}" ; (ꜧ) small letter heng +dkBreveSpecial["H"] := "{u+a726}" ; (Ꜧ) capital letter heng +dkBreveSpecial["i"] := "{u+012d}" ; (ĭ) i with breve +dkBreveSpecial["I"] := "{u+012c}" ; (Ĭ) I with breve +dkBreveSpecial["j"] := "{u+0133}" ; (ij) ligature ij +dkBreveSpecial["J"] := "{u+0132}" ; (IJ) ligature IJ +dkBreveSpecial["k"] := "{u+0199}" ; (ƙ) k with hook +dkBreveSpecial["K"] := "{u+0198}" ; (Ƙ) K with hook +dkBreveSpecial["m"] := "{u+0271}" ; (ɱ) m with hook +dkBreveSpecial["M"] := "{u+2c6e}" ; (Ɱ) M with hook +dkBreveSpecial["n"] := "{u+014b}" ; (ŋ) small letter eng(ma) +dkBreveSpecial["N"] := "{u+014a}" ; (Ŋ) capital letter eng(ma) +dkBreveSpecial["o"] := "{u+014f}" ; (ŏ) o with breve +dkBreveSpecial["O"] := "{u+014e}" ; (Ŏ) O with breve +dkBreveSpecial["p"] := "{u+01a5}" ; (ƥ) p with hook +dkBreveSpecial["P"] := "{u+01a4}" ; (Ƥ) P with hook +dkBreveSpecial["r"] := "{u+027d}" ; (ɽ) r with tail +dkBreveSpecial["R"] := "{u+2c64}" ; (Ɽ) R with tail +dkBreveSpecial["s"] := "{u+0219}" ; (ș) s with comma below (Romanian) +dkBreveSpecial["S"] := "{u+0218}" ; (Ș) S with comma below (Romanian) +dkBreveSpecial["t"] := "{u+021b}" ; (ț) t with comma below (Romanian) +dkBreveSpecial["T"] := "{u+021a}" ; (Ț) T with comma below (Romanian) +dkBreveSpecial["u"] := "{u+016d}" ; (ŭ) u with breve +dkBreveSpecial["U"] := "{u+016c}" ; (Ŭ) U with breve +dkBreveSpecial["v"] := "{u+028a}" ; (ʊ) latin small letter upsilon +dkBreveSpecial["V"] := "{u+01b1}" ; (Ʊ) latin capital letter upsilon +dkBreveSpecial["w"] := "{u+01bf}" ; (ƿ) small letter wynn +dkBreveSpecial["W"] := "{u+01f7}" ; (Ƿ) capital letter wynn +dkBreveSpecial["y"] := "{u+021d}" ; (ȝ) small letter yogh +dkBreveSpecial["Y"] := "{u+021c}" ; (Ȝ) capital letter yogh +dkBreveSpecial["z"] := "{u+0225}" ; (ȥ) z with hook +dkBreveSpecial["Z"] := "{u+0224}" ; (Ȥ) Z with hook +dkBreveSpecial["3"] := "{u+0292}" ; (ʒ) small letter ezh +dkBreveSpecial["#"] := "{u+01b7}" ; (Ʒ) capital letter ezh +dkBreveSpecial[chr(0x00e4)] := "{u+0252}" ; (ä -> ɒ) latin small letter turned alpha +dkBreveSpecial[chr(0x00c4)] := "{u+2c70}" ; (Ä -> Ɒ) latin capital letter turned alpha +dkBreveSpecial[chr(0x00eb)] := "{u+01dd}" ; (ë -> ǝ) small turned e +dkBreveSpecial[chr(0x00cb)] := "{u+018e}" ; (Ë -> Ǝ) capital reversed E +dkBreveSpecial[chr(0x00e9)] := "{u+0263}" ; (é -> ɣ) latin small gamma +dkBreveSpecial[chr(0x00c9)] := "{u+0194}" ; (É -> Ɣ) latin capital gamma +dkBreveSpecial[chr(0x00f1)] := "{u+0272}" ; (ñ -> ɲ) n with left hook +dkBreveSpecial[chr(0x00d1)] := "{u+019d}" ; (Ñ -> Ɲ) N with left hook +dkBreveSpecial[chr(0x00f6)] := "{u+0254}" ; (ö -> ɔ) small open o +dkBreveSpecial[chr(0x00d6)] := "{u+0186}" ; (Ö -> Ɔ) capital open O +dkBreveSpecial[chr(0x00e5)] := "{u+2c73}" ; (å -> ⱳ) w with hook +dkBreveSpecial[chr(0x00c5)] := "{u+2c72}" ; (Å -> Ⱳ) W with hook +dkBreveSpecial[" "] := "{u+02d8}" ; (˘) breve + + +; Dead Key : Acute Accent + +global dkAcuteAccent := Map() +dkAcuteAccent["a"] := "{u+0251}" ; (ɑ) latin small letter alpha +dkAcuteAccent["A"] := "{u+2c6d}" ; (Ɑ) latin capital letter alpha +dkAcuteAccent["b"] := "{u+0253}" ; (ɓ) b with hook +dkAcuteAccent["B"] := "{u+0181}" ; (Ɓ) B with hook +dkAcuteAccent["c"] := "{u+0107}" ; (ć) c with acute +dkAcuteAccent["C"] := "{u+0106}" ; (Ć) C with acute +dkAcuteAccent["d"] := "{u+0257}" ; (ɗ) d with hook +dkAcuteAccent["D"] := "{u+018a}" ; (Ɗ) D with hook +dkAcuteAccent["e"] := "{u+025b}" ; (ɛ) small letter open e (latin small epsilon) +dkAcuteAccent["E"] := "{u+0190}" ; (Ɛ) capital letter open E (latin capital epsilon) +dkAcuteAccent["f"] := "{u+0192}" ; (ƒ) f with hook +dkAcuteAccent["F"] := "{u+0191}" ; (Ƒ) F with hook +dkAcuteAccent["g"] := "{u+01f5}" ; (ǵ) g with acute +dkAcuteAccent["G"] := "{u+01f4}" ; (Ǵ) G with acute +dkAcuteAccent["h"] := "{u+0266}" ; (ɦ) h with hook +dkAcuteAccent["H"] := "{u+a7aa}" ; (Ɦ) H with hook +dkAcuteAccent["i"] := "{u+0269}" ; (ɩ) latin small letter iota +dkAcuteAccent["I"] := "{u+0196}" ; (Ɩ) latin capital letter iota +dkAcuteAccent["j"] := "{u+0133}" ; (ij) ligature ij +dkAcuteAccent["J"] := "{u+0132}" ; (IJ) ligature IJ +dkAcuteAccent["k"] := "{u+1e31}" ; (ḱ) k with acute +dkAcuteAccent["K"] := "{u+1e30}" ; (Ḱ) K with acute +dkAcuteAccent["l"] := "{u+013a}" ; (ĺ) l with acute +dkAcuteAccent["L"] := "{u+0139}" ; (Ĺ) L with acute +dkAcuteAccent["m"] := "{u+1e3f}" ; (ḿ) m with acute +dkAcuteAccent["M"] := "{u+1e3e}" ; (Ḿ) M with acute +dkAcuteAccent["n"] := "{u+0144}" ; (ń) n with acute +dkAcuteAccent["N"] := "{u+0143}" ; (Ń) N with acute +dkAcuteAccent["o"] := "{u+0151}" ; (ő) o with double acute +dkAcuteAccent["O"] := "{u+0150}" ; (Ő) O with double acute +dkAcuteAccent["p"] := "{u+1e55}" ; (ṕ) p with acute +dkAcuteAccent["P"] := "{u+1e54}" ; (Ṕ) P with acute +dkAcuteAccent["q"] := "{u+024b}" ; (ɋ) q with hook tail +dkAcuteAccent["Q"] := "{u+024a}" ; (Ɋ) Q with hook tail +dkAcuteAccent["r"] := "{u+0155}" ; (ŕ) r with acute +dkAcuteAccent["R"] := "{u+0154}" ; (Ŕ) R with acute +dkAcuteAccent["s"] := "{u+015b}" ; (ś) s with acute +dkAcuteAccent["S"] := "{u+015a}" ; (Ś) S with acute +dkAcuteAccent["t"] := "{u+01ad}" ; (ƭ) t with hook +dkAcuteAccent["T"] := "{u+01ac}" ; (Ƭ) T with hook +dkAcuteAccent["u"] := "{u+0171}" ; (ű) u with double acute +dkAcuteAccent["U"] := "{u+0170}" ; (Ű) U with double acute +dkAcuteAccent["v"] := "{u+028b}" ; (ʋ) v with hook +dkAcuteAccent["V"] := "{u+01b2}" ; (Ʋ) V with hook +dkAcuteAccent["w"] := "{u+1e83}" ; (ẃ) w with acute +dkAcuteAccent["W"] := "{u+1e82}" ; (Ẃ) W with acute +dkAcuteAccent["y"] := "{u+00fd}" ; (ý) y with acute +dkAcuteAccent["Y"] := "{u+00dd}" ; (Ý) Y with acute +dkAcuteAccent["z"] := "{u+017a}" ; (ź) z with acute +dkAcuteAccent["Z"] := "{u+0179}" ; (Ź) Z with acute +dkAcuteAccent["2"] := "{u+266b}" ; (♫) beamed eighth notes +dkAcuteAccent["3"] := "{u+2042}" ; (⁂) asterism +dkAcuteAccent["4"] := "{u+2605}" ; (★) black star +dkAcuteAccent["5"] := "{u+2606}" ; (☆) white star +dkAcuteAccent["6"] := "{u+273d}" ; (✽) heavy teardrop-spoked asterisk +dkAcuteAccent["7"] := "{u+273b}" ; (✻) teardrop-spoked asterisk +dkAcuteAccent["8"] := "{u+266a}" ; (♪) eighth note +dkAcuteAccent["9"] := "{u+2706}" ; (✆) telephone location sign +dkAcuteAccent["0"] := "{u+2709}" ; (✉) envelope +dkAcuteAccent["@"] := "{u+266b}" ; (♫) beamed eighth notes +dkAcuteAccent["#"] := "{u+2042}" ; (⁂) asterism +dkAcuteAccent["$"] := "{u+2605}" ; (★) black star +dkAcuteAccent["%"] := "{u+2606}" ; (☆) white star +dkAcuteAccent["^"] := "{u+273d}" ; (✽) heavy teardrop-spoked asterisk +dkAcuteAccent["&"] := "{u+273b}" ; (✻) teardrop-spoked asterisk +dkAcuteAccent["*"] := "{u+266a}" ; (♪) eighth note +dkAcuteAccent["("] := "{u+2706}" ; (✆) telephone location sign +dkAcuteAccent[")"] := "{u+2709}" ; (✉) envelope +dkAcuteAccent[chr(0x00e5)] := "{u+01fb}" ; (å -> ǻ) a with ring above and acute +dkAcuteAccent[chr(0x00c5)] := "{u+01fa}" ; (Å -> Ǻ) A with ring above and acute +dkAcuteAccent[chr(0x00e6)] := "{u+01fd}" ; (æ -> ǽ) ae with acute +dkAcuteAccent[chr(0x00c6)] := "{u+01fc}" ; (Æ -> Ǽ) AE with acute +dkAcuteAccent[chr(0x00f8)] := "{u+01ff}" ; (ø -> ǿ) o with stroke and acute +dkAcuteAccent[chr(0x00d8)] := "{u+01fe}" ; (Ø -> Ǿ) O with stroke and acute +dkAcuteAccent[chr(0x00e7)] := "{u+1e09}" ; (ç -> ḉ) c with cedilla and acute +dkAcuteAccent[chr(0x00c7)] := "{u+1e08}" ; (Ç -> Ḉ) C with cedilla and acute +dkAcuteAccent[chr(0x00e9)] := "{u+0260}" ; (é -> ɠ) g with hook +dkAcuteAccent[chr(0x00c9)] := "{u+0193}" ; (É -> Ɠ) G with hook +dkAcuteAccent[chr(0x00ec)] := "{u+028c}" ; (ì -> ʌ) latin small letter turned v +dkAcuteAccent[chr(0x00cc)] := "{u+0245}" ; (Ì -> Ʌ) latin capital letter turned V +dkAcuteAccent[chr(0x00fb)] := "{u+01b4}" ; (û -> ƴ) y with hook +dkAcuteAccent[chr(0x00db)] := "{u+01b3}" ; (Û -> Ƴ) Y with hook +dkAcuteAccent[chr(0x00f6)] := "{u+01a1}" ; (ö -> ơ) o with horn +dkAcuteAccent[chr(0x00d6)] := "{u+01a0}" ; (Ö -> Ơ) O with horn +dkAcuteAccent[chr(0x00fc)] := "{u+01b0}" ; (ü -> ư) u with horn +dkAcuteAccent[chr(0x00dc)] := "{u+01af}" ; (Ü -> Ư) U with horn +dkAcuteAccent[" "] := "{u+00b4}" ; (´) acute accent + + +; Dead Key : Diaeresis + +global dkDiaeresis := Map() +dkDiaeresis["a"] := "{u+00e4}" ; (ä) a with diaeresis +dkDiaeresis["A"] := "{u+00c4}" ; (Ä) A with diaeresis +dkDiaeresis["e"] := "{u+00eb}" ; (ë) e with diaeresis +dkDiaeresis["E"] := "{u+00cb}" ; (Ë) E with diaeresis +dkDiaeresis["h"] := "{u+1e27}" ; (ḧ) h with diaeresis +dkDiaeresis["H"] := "{u+1e26}" ; (Ḧ) H with diaeresis +dkDiaeresis["i"] := "{u+00ef}" ; (ï) i with diaeresis +dkDiaeresis["I"] := "{u+00cf}" ; (Ï) I with diaeresis +dkDiaeresis["o"] := "{u+00f6}" ; (ö) o with diaeresis +dkDiaeresis["O"] := "{u+00d6}" ; (Ö) O with diaeresis +dkDiaeresis["s"] := "{u+0283}" ; (ʃ) small letter esh +dkDiaeresis["S"] := "{u+01a9}" ; (Ʃ) capital letter esh +dkDiaeresis["t"] := "{u+1e97}" ; (ẗ) t with diaeresis +dkDiaeresis["u"] := "{u+00fc}" ; (ü) u with diaeresis +dkDiaeresis["U"] := "{u+00dc}" ; (Ü) U with diaeresis +dkDiaeresis["w"] := "{u+1e85}" ; (ẅ) w with diaeresis +dkDiaeresis["W"] := "{u+1e84}" ; (Ẅ) W with diaeresis +dkDiaeresis["x"] := "{u+1e8d}" ; (ẍ) x with diaeresis +dkDiaeresis["X"] := "{u+1e8c}" ; (Ẍ) X with diaeresis +dkDiaeresis["y"] := "{u+00ff}" ; (ÿ) y with diaeresis +dkDiaeresis["Y"] := "{u+0178}" ; (Ÿ) Y with diaeresis +dkDiaeresis[" "] := "{u+00a8}" ; (¨) diaeresis + + +; Dead Key : Grave Accent + +global dkGraveAccent := Map() +dkGraveAccent["a"] := "{u+0201}" ; (ȁ) a with double grave +dkGraveAccent["A"] := "{u+0200}" ; (Ȁ) A with double grave +dkGraveAccent["d"] := "{u+00f0}" ; (ð) small letter eth +dkGraveAccent["D"] := "{u+00d0}" ; (Ð) capital letter eth +dkGraveAccent["e"] := "{u+0205}" ; (ȅ) e with double grave +dkGraveAccent["E"] := "{u+0204}" ; (Ȅ) E with double grave +dkGraveAccent["i"] := "{u+0209}" ; (ȉ) i with double grave +dkGraveAccent["I"] := "{u+0208}" ; (Ȉ) I with double grave +dkGraveAccent["n"] := "{u+01f9}" ; (ǹ) n with grave +dkGraveAccent["N"] := "{u+01f8}" ; (Ǹ) N with grave +dkGraveAccent["o"] := "{u+020d}" ; (ȍ) o with double grave +dkGraveAccent["O"] := "{u+020c}" ; (Ȍ) O with double grave +dkGraveAccent["r"] := "{u+0211}" ; (ȑ) r with double grave +dkGraveAccent["R"] := "{u+0210}" ; (Ȑ) R with double grave +dkGraveAccent["t"] := "{u+00fe}" ; (þ) small letter thorn +dkGraveAccent["T"] := "{u+00de}" ; (Þ) capital letter thorn +dkGraveAccent["u"] := "{u+0215}" ; (ȕ) u with double grave +dkGraveAccent["U"] := "{u+0214}" ; (Ȕ) U with double grave +dkGraveAccent["w"] := "{u+1e81}" ; (ẁ) w with grave +dkGraveAccent["W"] := "{u+1e80}" ; (Ẁ) W with grave +dkGraveAccent["y"] := "{u+1ef3}" ; (ỳ) y with grave +dkGraveAccent["Y"] := "{u+1ef2}" ; (Ỳ) Y with grave +dkGraveAccent["c"] := "{u+2663}" ; (♣) black club suit +dkGraveAccent["C"] := "{u+2667}" ; (♧) white club suit +dkGraveAccent["h"] := "{u+2665}" ; (♥) black heart suit +dkGraveAccent["H"] := "{u+2661}" ; (♡) white heart suit +dkGraveAccent["m"] := "{u+2666}" ; (♦) black diamond suit +dkGraveAccent["M"] := "{u+2662}" ; (♢) white diamond suit +dkGraveAccent["s"] := "{u+2660}" ; (♠) black spade suit +dkGraveAccent["S"] := "{u+2664}" ; (♤) white spade suit +dkGraveAccent["1"] := "{u+2002}" ; en space +dkGraveAccent["2"] := "{u+2003}" ; em space +dkGraveAccent["3"] := "{u+2004}" ; three-per-em space +dkGraveAccent["4"] := "{u+2005}" ; four-per-em space +dkGraveAccent["5"] := "{u+2008}" ; punctuation space +dkGraveAccent["6"] := "{u+2006}" ; six-per-em space +dkGraveAccent["7"] := "{u+2009}" ; thin space +dkGraveAccent["8"] := "{u+200a}" ; hair space +dkGraveAccent["9"] := "{u+2007}" ; figure space +dkGraveAccent["0"] := "{u+200b}" ; zero-width space +dkGraveAccent["!"] := "{u+2002}" ; en space +dkGraveAccent["@"] := "{u+2003}" ; em space +dkGraveAccent["#"] := "{u+2004}" ; three-per-em space +dkGraveAccent["$"] := "{u+2005}" ; four-per-em space +dkGraveAccent["%"] := "{u+2008}" ; punctuation space +dkGraveAccent["^"] := "{u+2006}" ; six-per-em space +dkGraveAccent["&"] := "{u+2009}" ; thin space +dkGraveAccent["*"] := "{u+200a}" ; hair space +dkGraveAccent["("] := "{u+2007}" ; figure space +dkGraveAccent[")"] := "{u+200b}" ; zero-width space +dkGraveAccent["-"] := "{u+00a0}" ; non-breaking space +dkGraveAccent["="] := "{u+202f}" ; narrow no-break space +dkGraveAccent[" "] := "``" ; grave accent + + +; Dead Key : Tilde + +global dkTilde := Map() +dkTilde["a"] := "{u+00e3}" ; (ã) a with tilde +dkTilde["A"] := "{u+00c3}" ; (Ã) A with tilde +dkTilde["e"] := "{u+1ebd}" ; (ẽ) e with tilde +dkTilde["E"] := "{u+1ebc}" ; (Ẽ) E with tilde +dkTilde["i"] := "{u+0129}" ; (ĩ) i with tilde +dkTilde["I"] := "{u+0128}" ; (Ĩ) I with tilde +dkTilde["l"] := "{u+026b}" ; (ɫ) l with middle tilde +dkTilde["L"] := "{u+2c62}" ; (Ɫ) L with middle tilde +dkTilde["n"] := "{u+00f1}" ; (ñ) n with tilde +dkTilde["N"] := "{u+00d1}" ; (Ñ) N with tilde +dkTilde["o"] := "{u+00f5}" ; (õ) o with tilde +dkTilde["O"] := "{u+00d5}" ; (Õ) O with tilde +dkTilde["u"] := "{u+0169}" ; (ũ) u with tilde +dkTilde["U"] := "{u+0168}" ; (Ũ) U with tilde +dkTilde["v"] := "{u+1e7d}" ; (ṽ) v with tilde +dkTilde["V"] := "{u+1e7c}" ; (Ṽ) V with tilde +dkTilde["y"] := "{u+1ef9}" ; (ỹ) y with tilde +dkTilde["Y"] := "{u+1ef8}" ; (Ỹ) Y with tilde +dkTilde["g"] := "{u+ab36}" ; (ꬶ) cross-tailed g +dkTilde["h"] := "{u+0267}" ; (ɧ) small letter heng with hook +dkTilde["k"] := "{u+0138}" ; (ĸ) small letter kra +dkTilde["s"] := "{u+017f}" ; (ſ) small long s +dkTilde["1"] := "{u+2000}" ; en quad +dkTilde["2"] := "{u+2001}" ; em quad +dkTilde["!"] := "{u+2000}" ; en quad +dkTilde["@"] := "{u+2001}" ; em quad +dkTilde[" "] := "~" ; tilde + + +; Dead Key : General Symbols + +global dkSymbols := Map() +dkSymbols["a"] := "{u+00aa}" ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols["A"] := "{u+00aa}" ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols["b"] := "{u+2022}" ; (•) bullet +dkSymbols["B"] := "{u+25e6}" ; (◦) white bullet +dkSymbols["c"] := "{u+2105}" ; (℅) care of +dkSymbols["C"] := "{u+2105}" ; (℅) care of +dkSymbols["d"] := "{u+2020}" ; (†) dagger +dkSymbols["D"] := "{u+2021}" ; (‡) double dagger +dkSymbols["e"] := "{u+212e}" ; (℮) estimated symbol +dkSymbols["E"] := "{u+2709}" ; (✉) envelope +dkSymbols["f"] := "{u+2640}" ; (♀) Venus symbol (female) +dkSymbols["F"] := "{u+2640}" ; (♀) Venus symbol (female) +dkSymbols["h"] := "{u+2766}" ; (❦) floral heart +dkSymbols["H"] := "{u+2767}" ; (❧) rotated floral heart bullet +dkSymbols["i"] := "{u+22c4}" ; (⋄) diamond operator +dkSymbols["I"] := "{u+22c4}" ; (⋄) diamond operator +dkSymbols["l"] := "{u+2113}" ; (ℓ) script small l +dkSymbols["L"] := "{u+2112}" ; (ℒ) Laplace transform +dkSymbols["m"] := "{u+2642}" ; (♂) Mars symbol (male) +dkSymbols["M"] := "{u+2642}" ; (♂) Mars symbol (male) +dkSymbols["n"] := "{u+00ac}" ; (¬) not sign +dkSymbols["N"] := "{u+00ac}" ; (¬) not sign +dkSymbols["o"] := "{u+00ba}" ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols["O"] := "{u+00ba}" ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols["p"] := "{u+00b6}" ; (¶) pilcrow sign +dkSymbols["P"] := "{u+2117}" ; (℗) sound recording copyright +dkSymbols["q"] := "{u+201e}" ; („) double low-9 quotation mark +dkSymbols["Q"] := "{u+201a}" ; (‚) single low-9 quotation mark +dkSymbols["r"] := "{u+00ae}" ; (®) registered sign +dkSymbols["R"] := "{u+2619}" ; (☙) reversed rotated floral heart bullet +dkSymbols["s"] := "{u+2120}" ; (℠) service mark +dkSymbols["S"] := "{u+2120}" ; (℠) service mark +dkSymbols["t"] := "{u+2122}" ; (™) trademark symbol +dkSymbols["T"] := "{u+2706}" ; (✆) telephone location sign +dkSymbols["u"] := "{u+2610}" ; (☐) ballot box +dkSymbols["U"] := "{u+2610}" ; (☐) ballot box +dkSymbols["v"] := "{u+2713}" ; (✓) check mark +dkSymbols["V"] := "{u+2714}" ; (✔) heavy check mark +dkSymbols["x"] := "{u+2717}" ; (✗) ballot x +dkSymbols["X"] := "{u+2718}" ; (✘) heavy ballot x +dkSymbols["y"] := "{u+2611}" ; (☑) ballot box with check +dkSymbols["Y"] := "{u+2612}" ; (☒) ballot box with x +dkSymbols["1"] := "{u+2116}" ; (№) numero sign +dkSymbols["2"] := "{u+00bd}" ; (½) vulgar fraction 1/2 +dkSymbols["3"] := "{u+2153}" ; (⅓) vulgar fraction 1/3 +dkSymbols["4"] := "{u+00bc}" ; (¼) vulgar fraction 1/4 +dkSymbols["5"] := "{u+2154}" ; (⅔) vulgar fraction 2/3 +dkSymbols["6"] := "{u+00be}" ; (¾) vulgar fraction 3/4 +dkSymbols["7"] := "{u+215b}" ; (⅛) vulgar fraction 1/8 +dkSymbols["8"] := "{u+215c}" ; (⅜) vulgar fraction 3/8 +dkSymbols["9"] := "{u+215d}" ; (⅝) vulgar fraction 5/8 +dkSymbols["0"] := "{u+215e}" ; (⅞) vulgar fraction 7/8 +dkSymbols["!"] := "{u+2116}" ; (№) numero sign +dkSymbols["@"] := "{u+00bd}" ; (½) vulgar fraction 1/2 +dkSymbols["#"] := "{u+2153}" ; (⅓) vulgar fraction 1/3 +dkSymbols["$"] := "{u+00bc}" ; (¼) vulgar fraction 1/4 +dkSymbols["%"] := "{u+2154}" ; (⅔) vulgar fraction 2/3 +dkSymbols["^"] := "{u+00be}" ; (¾) vulgar fraction 3/4 +dkSymbols["&"] := "{u+215b}" ; (⅛) vulgar fraction 1/8 +dkSymbols["*"] := "{u+215c}" ; (⅜) vulgar fraction 3/8 +dkSymbols["("] := "{u+215d}" ; (⅝) vulgar fraction 5/8 +dkSymbols[")"] := "{u+215e}" ; (⅞) vulgar fraction 7/8 +dkSymbols["-"] := "{u+2043}" ; (⁃) hyphen bullet +dkSymbols["_"] := "{u+2023}" ; (‣) triangular bullet +dkSymbols["="] := "{u+00d7}" ; (×) multiplication sign +dkSymbols["+"] := "{u+00f7}" ; (÷) division sign +dkSymbols[";"] := "{u+263a}" ; (☺) white smiling face +dkSymbols[":"] := "{u+263b}" ; (☻) black smiling face +dkSymbols["/"] := "{u+203c}" ; (‼) double exclamation mark +dkSymbols["?"] := "{u+203d}" ; (‽) interrobang +dkSymbols["\"] := "{u+205e}" ; (⁞) vertical four dots +dkSymbols["|"] := "{u+00a6}" ; (¦) broken bar +dkSymbols[chr(0x00e4)] := "{u+214d}" ; (ä -> ⅍) aktieselskab +dkSymbols[chr(0x00c4)] := "{u+214d}" ; (Ä -> ⅍) aktieselskab +dkSymbols[chr(0x00f6)] := "{u+2126}" ; (ö -> Ω) ohm sign (backwards compatibility) +dkSymbols[chr(0x00d6)] := "{u+2126}" ; (Ö -> Ω) ohm sign (backwards compatibility) +dkSymbols[chr(0x00bf)] := "{u+2e18}" ; (¿ -> ⸘) inverted interrobang +dkSymbols[chr(0x2026)] := "{u+2e2e}" ; (… -> ⸮) reversed question mark +dkSymbols[" "] := "{u+00d7}" ; (×) multiplication sign + + +; Dead Key : Currency + +global dkCurrency := Map() +dkCurrency["a"] := "{u+058f}" ; (֏) Armenian dram +dkCurrency["A"] := "{u+20b3}" ; (₳) Argentine austral +dkCurrency["b"] := "{u+20bf}" ; (₿) bitcoin +dkCurrency["B"] := "{u+0e3f}" ; (฿) Thai baht +dkCurrency["c"] := "{u+20a1}" ; (₡) Costa Rican colón +dkCurrency["C"] := "{u+20b5}" ; (₵) Ghanaian cedi +dkCurrency["d"] := "{u+20ab}" ; (₫) Vietnamese dong +dkCurrency["D"] := "{u+20af}" ; (₯) Greek drachma +dkCurrency["f"] := "{u+20a3}" ; (₣) French franc +dkCurrency["F"] := "{u+20a3}" ; (₣) French franc +dkCurrency["g"] := "{u+20b2}" ; (₲) Paraguayan guaraní +dkCurrency["G"] := "{u+20b2}" ; (₲) Paraguayan guaraní +dkCurrency["h"] := "{u+20b4}" ; (₴) Ukrainian hryvnia +dkCurrency["H"] := "{u+20b4}" ; (₴) Ukrainian hryvnia +dkCurrency["k"] := "{u+20ad}" ; (₭) Laotian kip +dkCurrency["K"] := "{u+20ad}" ; (₭) Laotian kip +dkCurrency["l"] := "{u+20ba}" ; (₺) Turkish lira +dkCurrency["L"] := "{u+20be}" ; (₾) Georgian lari +dkCurrency["m"] := "{u+20bc}" ; (₼) Azerbaijani manat +dkCurrency["M"] := "{u+20a5}" ; (₥) mill sign +dkCurrency["n"] := "{u+20a6}" ; (₦) Nigerian naira +dkCurrency["N"] := "{u+20bb}" ; (₻) nordic mark +dkCurrency["p"] := "{u+20b1}" ; (₱) Philippine peso +dkCurrency["P"] := "{u+20a7}" ; (₧) Spanish pesetas +dkCurrency["r"] := "{u+20b9}" ; (₹) Indian rupee +dkCurrency["R"] := "{u+20bd}" ; (₽) Russian ruble +dkCurrency["s"] := "{u+20aa}" ; (₪) Israeli new shekel +dkCurrency["S"] := "{u+20b7}" ; (₷) spesmilo +dkCurrency["t"] := "{u+20ae}" ; (₮) Mongolian tögrög (tugrik) +dkCurrency["T"] := "{u+20b8}" ; (₸) Kazakh tenge +dkCurrency["w"] := "{u+20a9}" ; (₩) South Korean won +dkCurrency["W"] := "{u+20a9}" ; (₩) South Korean won +dkCurrency["x"] := "{u+00a4}" ; (¤) currency sign +dkCurrency["X"] := "{u+00a4}" ; (¤) currency sign +dkCurrency[chr(0x00e7)] := "{u+20a2}" ; (ç -> ₢) Brazilian cruzeiro +dkCurrency[chr(0x00c7)] := "{u+20a0}" ; (Ç -> ₠) euro-currency sign +dkCurrency[chr(0x00f8)] := "{u+20a4}" ; (ø -> ₤) lira +dkCurrency[chr(0x00d8)] := "{u+20b6}" ; (Ø -> ₶) livre tournois +dkCurrency[chr(0x00ea)] := "{u+20a8}" ; (ê -> ₨) rupee sign +dkCurrency[chr(0x00ca)] := "{u+20a8}" ; (Ê -> ₨) rupee sign +dkCurrency[" "] := "{u+00a4}" ; (¤) currency sign + + +; Dead Key : Greek Alphabet + +global dkGreekAlphabet := Map() +dkGreekAlphabet["a"] := "{u+03b1}" ; (α) small alpha +dkGreekAlphabet["A"] := "{u+0391}" ; (Α) capital alpha +dkGreekAlphabet["b"] := "{u+03b2}" ; (β) small beta +dkGreekAlphabet["B"] := "{u+0392}" ; (Β) capital beta +dkGreekAlphabet["v"] := "{u+03b2}" ; (β) small beta +dkGreekAlphabet["V"] := "{u+0392}" ; (Β) capital beta +dkGreekAlphabet["g"] := "{u+03b3}" ; (γ) small gamma +dkGreekAlphabet["G"] := "{u+0393}" ; (Γ) capital gamma +dkGreekAlphabet["d"] := "{u+03b4}" ; (δ) small delta +dkGreekAlphabet["D"] := "{u+0394}" ; (Δ) capital delta +dkGreekAlphabet["e"] := "{u+03b5}" ; (ε) small epsilon +dkGreekAlphabet["E"] := "{u+0395}" ; (Ε) capital epsilon +dkGreekAlphabet["z"] := "{u+03b6}" ; (ζ) small zeta +dkGreekAlphabet["Z"] := "{u+0396}" ; (Ζ) capital zeta +dkGreekAlphabet["h"] := "{u+03b7}" ; (η) small eta +dkGreekAlphabet["H"] := "{u+0397}" ; (Η) capital eta +dkGreekAlphabet["j"] := "{u+03b8}" ; (θ) small theta +dkGreekAlphabet["J"] := "{u+0398}" ; (Θ) capital theta +dkGreekAlphabet["i"] := "{u+03b9}" ; (ι) small iota +dkGreekAlphabet["I"] := "{u+0399}" ; (Ι) capital iota +dkGreekAlphabet["k"] := "{u+03ba}" ; (κ) small kappa +dkGreekAlphabet["K"] := "{u+039a}" ; (Κ) capital kappa +dkGreekAlphabet["l"] := "{u+03bb}" ; (λ) small lambda +dkGreekAlphabet["L"] := "{u+039b}" ; (Λ) capital lambda +dkGreekAlphabet["m"] := "{u+03bc}" ; (μ) small mu +dkGreekAlphabet["M"] := "{u+039c}" ; (Μ) capital mu +dkGreekAlphabet["n"] := "{u+03bd}" ; (ν) small nu +dkGreekAlphabet["N"] := "{u+039d}" ; (Ν) capital nu +dkGreekAlphabet["x"] := "{u+03be}" ; (ξ) small xi +dkGreekAlphabet["X"] := "{u+039e}" ; (Ξ) capital xi +dkGreekAlphabet["o"] := "{u+03bf}" ; (ο) small omicron +dkGreekAlphabet["O"] := "{u+039f}" ; (Ο) capital omicron +dkGreekAlphabet["p"] := "{u+03c0}" ; (π) small pi +dkGreekAlphabet["P"] := "{u+03a0}" ; (Π) capital pi +dkGreekAlphabet["r"] := "{u+03c1}" ; (ρ) small rho +dkGreekAlphabet["R"] := "{u+03a1}" ; (Ρ) capital rho +dkGreekAlphabet["s"] := "{u+03c3}" ; (σ) small sigma +dkGreekAlphabet["S"] := "{u+03a3}" ; (Σ) capital sigma +dkGreekAlphabet[","] := "{u+03c2}" ; (ς) small final sigma +dkGreekAlphabet["t"] := "{u+03c4}" ; (τ) small tau +dkGreekAlphabet["T"] := "{u+03a4}" ; (Τ) capital tau +dkGreekAlphabet["u"] := "{u+03c5}" ; (υ) small upsilon +dkGreekAlphabet["U"] := "{u+03a5}" ; (Υ) capital upsilon +dkGreekAlphabet["y"] := "{u+03c5}" ; (υ) small upsilon +dkGreekAlphabet["Y"] := "{u+03a5}" ; (Υ) capital upsilon +dkGreekAlphabet["f"] := "{u+03c6}" ; (φ) small phi +dkGreekAlphabet["F"] := "{u+03a6}" ; (Φ) capital phi +dkGreekAlphabet["c"] := "{u+03c7}" ; (χ) small chi +dkGreekAlphabet["C"] := "{u+03a7}" ; (Χ) capital chi +dkGreekAlphabet["w"] := "{u+03c8}" ; (ψ) small psi +dkGreekAlphabet["W"] := "{u+03a8}" ; (Ψ) capital psi +dkGreekAlphabet["q"] := "{u+03c9}" ; (ω) small omega +dkGreekAlphabet["Q"] := "{u+03a9}" ; (Ω) capital omega +dkGreekAlphabet["1"] := "{u+00b9}" ; (¹) superscript 1 +dkGreekAlphabet["2"] := "{u+00b2}" ; (²) superscript 2 +dkGreekAlphabet["3"] := "{u+00b3}" ; (³) superscript 3 +dkGreekAlphabet["4"] := "{u+2074}" ; (⁴) superscript 4 +dkGreekAlphabet["5"] := "{u+2075}" ; (⁵) superscript 5 +dkGreekAlphabet["6"] := "{u+2076}" ; (⁶) superscript 6 +dkGreekAlphabet["7"] := "{u+2077}" ; (⁷) superscript 7 +dkGreekAlphabet["8"] := "{u+2078}" ; (⁸) superscript 8 +dkGreekAlphabet["9"] := "{u+2079}" ; (⁹) superscript 9 +dkGreekAlphabet["0"] := "{u+2070}" ; (⁰) superscript 0 +dkGreekAlphabet["-"] := "{u+207b}" ; (⁻) superscript - +dkGreekAlphabet["="] := "{u+207c}" ; (⁼) superscript = +dkGreekAlphabet["+"] := "{u+207a}" ; (⁺) superscript + +dkGreekAlphabet["["] := "{u+207d}" ; (⁽) superscript ( +dkGreekAlphabet["]"] := "{u+207e}" ; (⁾) superscript ) +dkGreekAlphabet["!"] := "{u+2081}" ; (₁) subscript 1 +dkGreekAlphabet["@"] := "{u+2082}" ; (₂) subscript 2 +dkGreekAlphabet["#"] := "{u+2083}" ; (₃) subscript 3 +dkGreekAlphabet["$"] := "{u+2084}" ; (₄) subscript 4 +dkGreekAlphabet["%"] := "{u+2085}" ; (₅) subscript 5 +dkGreekAlphabet["^"] := "{u+2086}" ; (₆) subscript 6 +dkGreekAlphabet["&"] := "{u+2087}" ; (₇) subscript 7 +dkGreekAlphabet["*"] := "{u+2088}" ; (₈) subscript 8 +dkGreekAlphabet["("] := "{u+2089}" ; (₉) subscript 9 +dkGreekAlphabet[")"] := "{u+2080}" ; (₀) subscript 0 +dkGreekAlphabet[";"] := "{u+208b}" ; (₋) subscript - +dkGreekAlphabet["'"] := "{u+208c}" ; (₌) subscript = +dkGreekAlphabet[chr(34)] := "{u+208a}" ; (₊) subscript + +dkGreekAlphabet["{"] := "{u+208d}" ; (₍) subscript ( +dkGreekAlphabet["}"] := "{u+208e}" ; (₎) subscript ) +dkGreekAlphabet["."] := "{u+00b5}" ; (µ) micro sign +dkGreekAlphabet[chr(0x00df)] := "{u+03c2}" ; (ß -> ς) small final sigma +dkGreekAlphabet[" "] := "{u+03bc}" ; (μ) small mu + + +; Dead Key : Math Symbols + +global dkMathSymbols := Map() +dkMathSymbols["a"] := "{u+2200}" ; (∀) for all +dkMathSymbols["A"] := "{u+2200}" ; (∀) for all +dkMathSymbols["b"] := "{u+2286}" ; (⊆) subset of or equal to +dkMathSymbols["B"] := "{u+2287}" ; (⊇) superset of or equal to +dkMathSymbols["c"] := "{u+221d}" ; (∝) proportional to +dkMathSymbols["C"] := "{u+2102}" ; (ℂ) complex numbers +dkMathSymbols["d"] := "{u+2206}" ; (∆) increment operator +dkMathSymbols["D"] := "{u+2207}" ; (∇) nabla/del operator +dkMathSymbols["e"] := "{u+2203}" ; (∃) there exists +dkMathSymbols["E"] := "{u+2204}" ; (∄) there does not exist +dkMathSymbols["f"] := "{u+0192}" ; (ƒ) f with hook +dkMathSymbols["F"] := "{u+220e}" ; (∎) end of proof +dkMathSymbols["g"] := "{u+2282}" ; (⊂) subset of +dkMathSymbols["G"] := "{u+2284}" ; (⊄) not a subset of +dkMathSymbols["h"] := "{u+2283}" ; (⊃) superset of +dkMathSymbols["H"] := "{u+2285}" ; (⊅) not a superset of +dkMathSymbols["i"] := "{u+221e}" ; (∞) infinity symbol +dkMathSymbols["I"] := "{u+2111}" ; (ℑ) imaginary numbers +dkMathSymbols["k"] := "{u+220b}" ; (∋) contains as member +dkMathSymbols["K"] := "{u+220c}" ; (∌) does not contain as member +dkMathSymbols["l"] := "{u+2225}" ; (∥) parallel to +dkMathSymbols["L"] := "{u+2226}" ; (∦) not parallel to +dkMathSymbols["m"] := "{u+2208}" ; (∈) element of +dkMathSymbols["M"] := "{u+2209}" ; (∉) not an element of +dkMathSymbols["n"] := "{u+207f}" ; (ⁿ) superscript n +dkMathSymbols["N"] := "{u+2115}" ; (ℕ) natural numbers +dkMathSymbols["o"] := "{u+2218}" ; (∘) ring operator +dkMathSymbols["O"] := "{u+2205}" ; (∅) empty set +dkMathSymbols["p"] := "{u+2202}" ; (∂) partial differential +dkMathSymbols["P"] := "{u+2119}" ; (ℙ) prime numbers +dkMathSymbols["q"] := "{u+211a}" ; (ℚ) rational numbers +dkMathSymbols["Q"] := "{u+211a}" ; (ℚ) rational numbers +dkMathSymbols["r"] := "{u+221a}" ; (√) square root +dkMathSymbols["R"] := "{u+211d}" ; (ℝ) real numbers +dkMathSymbols["s"] := "{u+2229}" ; (∩) set intersection +dkMathSymbols["S"] := "{u+222b}" ; (∫) integral symbol +dkMathSymbols["u"] := "{u+222a}" ; (∪) set union +dkMathSymbols["U"] := "{u+2216}" ; (∖) set minus +dkMathSymbols["w"] := "{u+2118}" ; (℘) Weierstrass elliptic function +dkMathSymbols["W"] := "{u+2118}" ; (℘) Weierstrass elliptic function +dkMathSymbols["z"] := "{u+21af}" ; (↯) downwards zigzag arrow +dkMathSymbols["Z"] := "{u+2124}" ; (ℤ) whole numbers +dkMathSymbols["1"] := "{u+2260}" ; (≠) not equal to +dkMathSymbols["!"] := "{u+2260}" ; (≠) not equal to +dkMathSymbols["2"] := "{u+221a}" ; (√) square root +dkMathSymbols["@"] := "{u+221a}" ; (√) square root +dkMathSymbols["3"] := "{u+221b}" ; (∛) cube root +dkMathSymbols["#"] := "{u+221b}" ; (∛) cube root +dkMathSymbols["4"] := "{u+221c}" ; (∜) fourth root +dkMathSymbols["$"] := "{u+221c}" ; (∜) fourth root +dkMathSymbols["5"] := "{u+2030}" ; (‰) per mille sign +dkMathSymbols["%"] := "{u+2031}" ; (‱) per ten thousand sign +dkMathSymbols["6"] := "{u+2220}" ; (∠) angle symbol +dkMathSymbols["^"] := "{u+2220}" ; (∠) angle symbol +dkMathSymbols["7"] := "{u+2227}" ; (∧) logical and +dkMathSymbols["&"] := "{u+2227}" ; (∧) logical and +dkMathSymbols["8"] := "{u+2297}" ; (⊗) circled times +dkMathSymbols["*"] := "{u+2299}" ; (⊙) circled dot operator +dkMathSymbols["9"] := "{u+221f}" ; (∟) right angle +dkMathSymbols["("] := "{u+221f}" ; (∟) right angle +dkMathSymbols["0"] := "{u+2221}" ; (∡) measured angle +dkMathSymbols[")"] := "{u+2221}" ; (∡) measured angle +dkMathSymbols["``"] := "{u+2248}" ; (≈) almost equal to +dkMathSymbols["~"] := "{u+2248}" ; (≈) almost equal to +dkMathSymbols[","] := "{u+2264}" ; (≤) less-than or equal to +dkMathSymbols["<"] := "{u+2264}" ; (≤) less-than or equal to +dkMathSymbols["."] := "{u+2265}" ; (≥) greater-than or equal to +dkMathSymbols[">"] := "{u+2265}" ; (≥) greater-than or equal to +dkMathSymbols["-"] := "{u+00b1}" ; (±) plus-minus sign +dkMathSymbols["_"] := "{u+2296}" ; (⊖) circled minus +dkMathSymbols["/"] := "{u+2298}" ; (⊘) circled division slash +dkMathSymbols["="] := "{u+225d}" ; (≝) equal to by definition +dkMathSymbols["+"] := "{u+2295}" ; (⊕) circled plus +dkMathSymbols[";"] := "{u+2235}" ; (∵) because sign +dkMathSymbols[":"] := "{u+2234}" ; (∴) therefore sign +dkMathSymbols["'"] := "{u+2032}" ; (′) prime +dkMathSymbols[chr(34)] := "{u+2033}" ; (″) double prime +dkMathSymbols["["] := "{u+2034}" ; (‴) triple prime +dkMathSymbols["]"] := "{u+2057}" ; (⁗) quadruple prime +dkMathSymbols["\"] := "{u+2228}" ; (∨) logical or +dkMathSymbols["|"] := "{u+2228}" ; (∨) logical or +dkMathSymbols[chr(0x00e7)] := "{u+2245}" ; (ç -> ≅) congruent to +dkMathSymbols[chr(0x00c7)] := "{u+2247}" ; (Ç -> ≇) not congruent to +dkMathSymbols[chr(0x00f6)] := "{u+2300}" ; (ö -> ⌀) diameter sign +dkMathSymbols[chr(0x00d6)] := "{u+2300}" ; (Ö -> ⌀) diameter sign +dkMathSymbols[chr(0x00f5)] := "{u+2261}" ; (õ -> ≡) identical to +dkMathSymbols[chr(0x00d5)] := "{u+2262}" ; (Õ -> ≢) not identical to +dkMathSymbols[" "] := "{u+221a}" ; (√) square root + + +; Configuration : 'Right Alt' and 'Right Alt + Shift' on US QWERTY + +>!a:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c4}" ; (Ä) A with diaeresis + else + Send "{u+00e4}" ; (ä) a with diaeresis +} +>!+a:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e4}" ; (ä) a with diaeresis + else + Send "{u+00c4}" ; (Ä) A with diaeresis + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey +} + +>!q:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c6}" ; (Æ) letter AE + else + Send "{u+00e6}" ; (æ) letter ae +} +>!+q:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e6}" ; (æ) letter ae + else + Send "{u+00c6}" ; (Æ) letter AE + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey +} + +>!w:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c5}" ; (Å) A with ring above + else + Send "{u+00e5}" ; (å) a with ring above +} +>!+w:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e5}" ; (å) a with ring above + else + Send "{u+00c5}" ; (Å) A with ring above + Send "{blind}{vkE8}" +} + +>!z:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c0}" ; (À) A with grave + else + Send "{u+00e0}" ; (à) a with grave +} +>!+z:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e0}" ; (à) a with grave + else + Send "{u+00c0}" ; (À) A with grave + Send "{blind}{vkE8}" +} + +>!x:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c1}" ; (Á) A with acute + else + Send "{u+00e1}" ; (á) a with acute +} +>!+x:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e1}" ; (á) a with acute + else + Send "{u+00c1}" ; (Á) A with acute + Send "{blind}{vkE8}" +} + +>!d:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c2}" ; (Â) A with circumflex + else + Send "{u+00e2}" ; (â) a with circumflex +} +>!+d:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e2}" ; (â) a with circumflex + else + Send "{u+00c2}" ; (Â) A with circumflex + Send "{blind}{vkE8}" +} + +>!c:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c7}" ; (Ç) C with cedilla + else + Send "{u+00e7}" ; (ç) c with cedilla +} +>!+c:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e7}" ; (ç) c with cedilla + else + Send "{u+00c7}" ; (Ç) C with cedilla + Send "{blind}{vkE8}" +} + +>!e:: { + if GetKeyState("CapsLock", "T") + Send "{u+00cb}" ; (Ë) E with diaeresis + else + Send "{u+00eb}" ; (ë) e with diaeresis +} +>!+e:: { + if GetKeyState("CapsLock", "T") + Send "{u+00eb}" ; (ë) e with diaeresis + else + Send "{u+00cb}" ; (Ë) E with diaeresis + Send "{blind}{vkE8}" +} + +>!f:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c8}" ; (È) E with grave + else + Send "{u+00e8}" ; (è) e with grave +} +>!+f:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e8}" ; (è) e with grave + else + Send "{u+00c8}" ; (È) E with grave + Send "{blind}{vkE8}" +} + +>!g:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c9}" ; (É) E with acute + else + Send "{u+00e9}" ; (é) e with acute +} +>!+g:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e9}" ; (é) e with acute + else + Send "{u+00c9}" ; (É) E with acute + Send "{blind}{vkE8}" +} + +>!r:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ca}" ; (Ê) E with circumflex + else + Send "{u+00ea}" ; (ê) e with circumflex +} +>!+r:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ea}" ; (ê) e with circumflex + else + Send "{u+00ca}" ; (Ê) E with circumflex + Send "{blind}{vkE8}" +} + +>!i:: { + if GetKeyState("CapsLock", "T") + Send "{u+00cf}" ; (Ï) I with diaeresis + else + Send "{u+00ef}" ; (ï) i with diaeresis +} +>!+i:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ef}" ; (ï) i with diaeresis + else + Send "{u+00cf}" ; (Ï) I with diaeresis + Send "{blind}{vkE8}" +} + +>!v:: { + if GetKeyState("CapsLock", "T") + Send "{u+00cc}" ; (Ì) I with grave + else + Send "{u+00ec}" ; (ì) i with grave +} +>!+v:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ec}" ; (ì) i with grave + else + Send "{u+00cc}" ; (Ì) I with grave + Send "{blind}{vkE8}" +} + +>!b:: { + if GetKeyState("CapsLock", "T") + Send "{u+00cd}" ; (Í) I with acute + else + Send "{u+00ed}" ; (í) i with acute +} +>!+b:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ed}" ; (í) i with acute + else + Send "{u+00cd}" ; (Í) I with acute + Send "{blind}{vkE8}" +} + +>!t:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ce}" ; (Î) I with circumflex + else + Send "{u+00ee}" ; (î) i with circumflex +} +>!+t:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ee}" ; (î) i with circumflex + else + Send "{u+00ce}" ; (Î) I with circumflex + Send "{blind}{vkE8}" +} + +>!n:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d1}" ; (Ñ) N with tilde + else + Send "{u+00f1}" ; (ñ) n with tilde +} +>!+n:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f1}" ; (ñ) n with tilde + else + Send "{u+00d1}" ; (Ñ) N with tilde + Send "{blind}{vkE8}" +} + +>!o:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d6}" ; (Ö) O with diaeresis + else + Send "{u+00f6}" ; (ö) o with diaeresis +} +>!+o:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f6}" ; (ö) o with diaeresis + else + Send "{u+00d6}" ; (Ö) O with diaeresis + Send "{blind}{vkE8}" +} + +>!k:: { + if GetKeyState("CapsLock", "T") + Send "{u+0152}" ; (Œ) ligature OE + else + Send "{u+0153}" ; (œ) ligature oe +} +>!+k:: { + if GetKeyState("CapsLock", "T") + Send "{u+0153}" ; (œ) ligature oe + else + Send "{u+0152}" ; (Œ) ligature OE + Send "{blind}{vkE8}" +} + +>!l:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d8}" ; (Ø) O with stroke + else + Send "{u+00f8}" ; (ø) o with stroke +} +>!+l:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f8}" ; (ø) o with stroke + else + Send "{u+00d8}" ; (Ø) O with stroke + Send "{blind}{vkE8}" +} + +>!,:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d2}" ; (Ò) O with grave + else + Send "{u+00f2}" ; (ò) o with grave +} +>!<:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f2}" ; (ò) o with grave + else + Send "{u+00d2}" ; (Ò) O with grave + Send "{blind}{vkE8}" +} + +>!.:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d3}" ; (Ó) O with acute + else + Send "{u+00f3}" ; (ó) o with acute +} +>!>:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f3}" ; (ó) o with acute + else + Send "{u+00d3}" ; (Ó) O with acute + Send "{blind}{vkE8}" +} + +>!p:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d4}" ; (Ô) O with circumflex + else + Send "{u+00f4}" ; (ô) o with circumflex +} +>!+p:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f4}" ; (ô) o with circumflex + else + Send "{u+00d4}" ; (Ô) O with circumflex + Send "{blind}{vkE8}" +} + +>!s:: { + if GetKeyState("CapsLock", "T") + Send "{u+1e9e}" ; (ẞ) capital sharp S (capital Eszett) + else + Send "{u+00df}" ; (ß) small sharp s (Eszett) +} +>!+s:: { + if GetKeyState("CapsLock", "T") + Send "{u+00df}" ; (ß) small sharp s (Eszett) + else + Send "{u+1e9e}" ; (ẞ) capital sharp S (capital Eszett) + Send "{blind}{vkE8}" +} + +>!u:: { + if GetKeyState("CapsLock", "T") + Send "{u+00dc}" ; (Ü) U with diaeresis + else + Send "{u+00fc}" ; (ü) u with diaeresis +} +>!+u:: { + if GetKeyState("CapsLock", "T") + Send "{u+00fc}" ; (ü) u with diaeresis + else + Send "{u+00dc}" ; (Ü) U with diaeresis + Send "{blind}{vkE8}" +} + +>!h:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d9}" ; (Ù) U with grave + else + Send "{u+00f9}" ; (ù) u with grave +} +>!+h:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f9}" ; (ù) u with grave + else + Send "{u+00d9}" ; (Ù) U with grave + Send "{blind}{vkE8}" +} + +>!j:: { + if GetKeyState("CapsLock", "T") + Send "{u+00da}" ; (Ú) U with acute + else + Send "{u+00fa}" ; (ú) u with acute +} +>!+j:: { + if GetKeyState("CapsLock", "T") + Send "{u+00fa}" ; (ú) u with acute + else + Send "{u+00da}" ; (Ú) U with acute + Send "{blind}{vkE8}" +} + +>!y:: { + if GetKeyState("CapsLock", "T") + Send "{u+00db}" ; (Û) U with circumflex + else + Send "{u+00fb}" ; (û) u with circumflex +} +>!+y:: { + if GetKeyState("CapsLock", "T") + Send "{u+00fb}" ; (û) u with circumflex + else + Send "{u+00db}" ; (Û) U with circumflex + Send "{blind}{vkE8}" +} + +>!-:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c3}" ; (Ã) A with tilde + else + Send "{u+00e3}" ; (ã) a with tilde +} +>!_:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e3}" ; (ã) a with tilde + else + Send "{u+00c3}" ; (Ã) A with tilde + Send "{blind}{vkE8}" +} + +>!=:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d5}" ; (Õ) O with tilde + else + Send "{u+00f5}" ; (õ) o with tilde +} +>!+=:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f5}" ; (õ) o with tilde + else + Send "{u+00d5}" ; (Õ) O with tilde + Send "{blind}{vkE8}" +} + +>!1::Send "{u+00a1}" ; (¡) inverted exclamation mark +>!+1:: { + Send "{u+00b9}" ; (¹) superscript 1 + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey +} + +>!2::Send "{u+00a9}" ; (©) copyright sign +>!+2:: { + Send "{u+00b2}" ; (²) superscript 2 + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey +} + +>!3::Send "{u+00a7}" ; (§) section sign +>!+3:: { + Send "{u+00b3}" ; (³) superscript 3 + Send "{blind}{vkE8}" +} + +>!4::Send "{u+00a3}" ; (£) pound sign +>!+4:: { + Send "{u+00a5}" ; (¥) yen sign + Send "{blind}{vkE8}" +} + +>!5::Send "{u+20ac}" ; (€) euro sign +>!+5:: { + Send "{u+00a2}" ; (¢) cent sign (dollar) + Send "{blind}{vkE8}" +} + +>!9::Send "{u+201c}" ; (“) left double quotation mark +>!+9:: { + Send "{u+2018}" ; (‘) left single quotation mark + Send "{blind}{vkE8}" +} + +>!0::Send "{u+201d}" ; (”) right double quotation mark +>!+0:: { + Send "{u+2019}" ; (’) right single quotation mark + Send "{blind}{vkE8}" +} + +>![::Send "{u+00ab}" ; («) left-pointing double angle quotation mark +>!{:: { + Send "{u+2039}" ; (‹) left-pointing single angle quotation mark + Send "{blind}{vkE8}" +} + +>!]::Send "{u+00bb}" ; (») right-pointing double angle quotation mark +>!}:: { + Send "{u+203a}" ; (›) right-pointing single angle quotation mark + Send "{blind}{vkE8}" +} + +>!;::Send "{u+00b0}" ; (°) degree sign +>!+;:: { + Send "{u+00b7}" ; (·) middle dot + Send "{blind}{vkE8}" +} + +>!/::Send "{u+00bf}" ; (¿) inverted question mark +>!?:: { + Send "{u+2026}" ; (…) horizontal ellipsis + Send "{blind}{vkE8}" +} + +>!space::Send "{u+00a0}" ; non-breaking space +>!+space:: { + Send "{u+00a0}" ; non-breaking space + Send "{blind}{vkE8}" +} + + +; Configuration : Dead Keys on 'Right Alt' and 'Right Alt + Shift' + +>!6:: { + Send "{blind}{vkE8}" ; suppresses circles around mouse pointer + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkCircumflex.Has(ih.Input) + Send dkCircumflex[ih.Input] + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey (for second character with 'Right Alt + Shift') +} +>!+6:: { + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkCaron.Has(ih.Input) + Send dkCaron[ih.Input] + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey (for second character with 'Right Alt + Shift') +} + +>!7:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkDotAbove.Has(ih.Input) + Send dkDotAbove[ih.Input] + Send "{blind}{vkE8}" +} +>!+7:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkMacronStroke.Has(ih.Input) + Send dkMacronStroke[ih.Input] + Send "{blind}{vkE8}" +} + +>!8:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkCedillaOgonek.Has(ih.Input) + Send dkCedillaOgonek[ih.Input] + Send "{blind}{vkE8}" +} +>!+8:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkBreveSpecial.Has(ih.Input) + Send dkBreveSpecial[ih.Input] + Send "{blind}{vkE8}" +} + +>!':: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkAcuteAccent.Has(ih.Input) + Send dkAcuteAccent[ih.Input] + Send "{blind}{vkE8}" +} +>!":: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkDiaeresis.Has(ih.Input) + Send dkDiaeresis[ih.Input] + Send "{blind}{vkE8}" +} + +>!`:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkGraveAccent.Has(ih.Input) + Send dkGraveAccent[ih.Input] + Send "{blind}{vkE8}" +} +>!~:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkTilde.Has(ih.Input) + Send dkTilde[ih.Input] + Send "{blind}{vkE8}" +} + +>!\:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkSymbols.Has(ih.Input) + Send dkSymbols[ih.Input] + Send "{blind}{vkE8}" +} +>!|:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkCurrency.Has(ih.Input) + Send dkCurrency[ih.Input] + Send "{blind}{vkE8}" +} + +>!m:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkGreekAlphabet.Has(ih.Input) + Send dkGreekAlphabet[ih.Input] + Send "{blind}{vkE8}" +} +>!+m:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkMathSymbols.Has(ih.Input) + Send dkMathSymbols[ih.Input] + Send "{blind}{vkE8}" +} diff --git a/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk b/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk new file mode 100644 index 0000000..4da5cd9 --- /dev/null +++ b/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk @@ -0,0 +1,1716 @@ +; UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk - 2021-11-14 + +; Created by : Pieter Degroote + +; License : GNU General Public License Version 3 + +; GitHub : https://github.com/pieter-degroote/UltimateKEYS + + +; Requirements : + +; Keyboard layout (on Windows OS) : US QWERTY + +; AutoHotkey v2.0 (https://www.autohotkey.com/) + + + +ListLines False ; omits recently executed lines from history (for privacy and security) +KeyHistory 0 ; disables the key history (for privacy and security) + +SendMode "Event" ; allows chaining of customized key combinations + +global dkEndKeys := "{bs}{del}{esc}{home}{end}" ; ends dead key input on specific keys + + +; Dead Key : Circumflex Accent + +global dkCircumflex := Map() +dkCircumflex["a"] := "{u+0203}" ; (ȃ) a with inverted breve +dkCircumflex["A"] := "{u+0202}" ; (Ȃ) A with inverted breve +dkCircumflex["c"] := "{u+0109}" ; (ĉ) c with circumflex +dkCircumflex["C"] := "{u+0108}" ; (Ĉ) C with circumflex +dkCircumflex["e"] := "{u+0207}" ; (ȇ) e with inverted breve +dkCircumflex["E"] := "{u+0206}" ; (Ȇ) E with inverted breve +dkCircumflex["g"] := "{u+011d}" ; (ĝ) g with circumflex +dkCircumflex["G"] := "{u+011c}" ; (Ĝ) G with circumflex +dkCircumflex["h"] := "{u+0125}" ; (ĥ) h with circumflex +dkCircumflex["H"] := "{u+0124}" ; (Ĥ) H with circumflex +dkCircumflex["i"] := "{u+020b}" ; (ȋ) i with inverted breve +dkCircumflex["I"] := "{u+020a}" ; (Ȋ) I with inverted breve +dkCircumflex["j"] := "{u+0135}" ; (ĵ) j with circumflex +dkCircumflex["J"] := "{u+0134}" ; (Ĵ) J with circumflex +dkCircumflex["o"] := "{u+020f}" ; (ȏ) o with inverted breve +dkCircumflex["O"] := "{u+020e}" ; (Ȏ) O with inverted breve +dkCircumflex["r"] := "{u+0213}" ; (ȓ) r with inverted breve +dkCircumflex["R"] := "{u+0212}" ; (Ȓ) R with inverted breve +dkCircumflex["s"] := "{u+015d}" ; (ŝ) s with circumflex +dkCircumflex["S"] := "{u+015c}" ; (Ŝ) S with circumflex +dkCircumflex["u"] := "{u+0217}" ; (ȗ) u with inverted breve +dkCircumflex["U"] := "{u+0216}" ; (Ȗ) U with inverted breve +dkCircumflex["w"] := "{u+0175}" ; (ŵ) w with circumflex +dkCircumflex["W"] := "{u+0174}" ; (Ŵ) W with circumflex +dkCircumflex["y"] := "{u+0177}" ; (ŷ) y with circumflex +dkCircumflex["Y"] := "{u+0176}" ; (Ŷ) Y with circumflex +dkCircumflex["z"] := "{u+1e91}" ; (ẑ) z with circumflex +dkCircumflex["Z"] := "{u+1e90}" ; (Ẑ) Z with circumflex +dkCircumflex["1"] := "{u+21d9}" ; (⇙) south west double arrow +dkCircumflex["2"] := "{u+21d3}" ; (⇓) downwards double arrow +dkCircumflex["3"] := "{u+21d8}" ; (⇘) south east double arrow +dkCircumflex["4"] := "{u+21d0}" ; (⇐) leftwards double arrow +dkCircumflex["5"] := "{u+21d5}" ; (⇕) up down double arrow +dkCircumflex["6"] := "{u+21d2}" ; (⇒) rightwards double arrow +dkCircumflex["7"] := "{u+21d6}" ; (⇖) north west double arrow +dkCircumflex["8"] := "{u+21d1}" ; (⇑) upwards double arrow +dkCircumflex["9"] := "{u+21d7}" ; (⇗) north east double arrow +dkCircumflex["0"] := "{u+21d4}" ; (⇔) left right double arrow +dkCircumflex["!"] := "{u+21d9}" ; (⇙) south west double arrow +dkCircumflex["@"] := "{u+21d3}" ; (⇓) downwards double arrow +dkCircumflex["#"] := "{u+21d8}" ; (⇘) south east double arrow +dkCircumflex["$"] := "{u+21d0}" ; (⇐) leftwards double arrow +dkCircumflex["%"] := "{u+21d5}" ; (⇕) up down double arrow +dkCircumflex["^"] := "{u+21d2}" ; (⇒) rightwards double arrow +dkCircumflex["&"] := "{u+21d6}" ; (⇖) north west double arrow +dkCircumflex["*"] := "{u+21d1}" ; (⇑) upwards double arrow +dkCircumflex["("] := "{u+21d7}" ; (⇗) north east double arrow +dkCircumflex[")"] := "{u+21d4}" ; (⇔) left right double arrow +dkCircumflex[" "] := "{^}" ; circumflex accent + + +; Dead Key : Caron + +global dkCaron := Map() +dkCaron["a"] := "{u+01ce}" ; (ǎ) a with caron +dkCaron["A"] := "{u+01cd}" ; (Ǎ) A with caron +dkCaron["c"] := "{u+010d}" ; (č) c with caron +dkCaron["C"] := "{u+010c}" ; (Č) C with caron +dkCaron["d"] := "{u+010f}" ; (ď) d with caron +dkCaron["D"] := "{u+010e}" ; (Ď) D with caron +dkCaron["e"] := "{u+011b}" ; (ě) e with caron +dkCaron["E"] := "{u+011a}" ; (Ě) E with caron +dkCaron["g"] := "{u+01e7}" ; (ǧ) g with caron +dkCaron["G"] := "{u+01e6}" ; (Ǧ) G with caron +dkCaron["h"] := "{u+021f}" ; (ȟ) h with caron +dkCaron["H"] := "{u+021e}" ; (Ȟ) H with caron +dkCaron["i"] := "{u+01d0}" ; (ǐ) i with caron +dkCaron["I"] := "{u+01cf}" ; (Ǐ) I with caron +dkCaron["j"] := "{u+01f0}" ; (ǰ) j with caron +dkCaron["k"] := "{u+01e9}" ; (ǩ) k with caron +dkCaron["K"] := "{u+01e8}" ; (Ǩ) K with caron +dkCaron["l"] := "{u+013e}" ; (ľ) l with caron +dkCaron["L"] := "{u+013d}" ; (Ľ) L with caron +dkCaron["n"] := "{u+0148}" ; (ň) n with caron +dkCaron["N"] := "{u+0147}" ; (Ň) N with caron +dkCaron["o"] := "{u+01d2}" ; (ǒ) o with caron +dkCaron["O"] := "{u+01d1}" ; (Ǒ) O with caron +dkCaron["r"] := "{u+0159}" ; (ř) r with caron +dkCaron["R"] := "{u+0158}" ; (Ř) R with caron +dkCaron["s"] := "{u+0161}" ; (š) s with caron +dkCaron["S"] := "{u+0160}" ; (Š) S with caron +dkCaron["t"] := "{u+0165}" ; (ť) t with caron +dkCaron["T"] := "{u+0164}" ; (Ť) T with caron +dkCaron["u"] := "{u+01d4}" ; (ǔ) u with caron +dkCaron["U"] := "{u+01d3}" ; (Ǔ) U with caron +dkCaron["v"] := "{u+01da}" ; (ǚ) u with diaeresis and caron +dkCaron["V"] := "{u+01d9}" ; (Ǚ) U with diaeresis and caron +dkCaron["z"] := "{u+017e}" ; (ž) z with caron +dkCaron["Z"] := "{u+017d}" ; (Ž) Z with caron +dkCaron["3"] := "{u+01ef}" ; (ǯ) small letter ezh with caron +dkCaron["#"] := "{u+01ee}" ; (Ǯ) capital letter ezh with caron +dkCaron["2"] := "{u+25bc}" ; (▼) black down-pointing triangle +dkCaron["@"] := "{u+25bd}" ; (▽) white down-pointing triangle +dkCaron["4"] := "{u+25c0}" ; (◀) black left-pointing triangle +dkCaron["$"] := "{u+25c1}" ; (◁) white left-pointing triangle +dkCaron["6"] := "{u+25b6}" ; (▶) black right-pointing triangle +dkCaron["^"] := "{u+25b7}" ; (▷) white right-pointing triangle +dkCaron["8"] := "{u+25b2}" ; (▲) black up-pointing triangle +dkCaron["*"] := "{u+25b3}" ; (△) white up-pointing triangle +dkCaron[" "] := "{u+02c7}" ; (ˇ) caron + + +; Dead Key : Dot Above + +global dkDotAbove := Map() +dkDotAbove["a"] := "{u+0227}" ; (ȧ) a with dot above +dkDotAbove["A"] := "{u+0226}" ; (Ȧ) A with dot above +dkDotAbove["b"] := "{u+1e03}" ; (ḃ) b with dot above +dkDotAbove["B"] := "{u+1e02}" ; (Ḃ) B with dot above +dkDotAbove["c"] := "{u+010b}" ; (ċ) c with dot above +dkDotAbove["C"] := "{u+010a}" ; (Ċ) C with dot above +dkDotAbove["d"] := "{u+1e0b}" ; (ḋ) d with dot above +dkDotAbove["D"] := "{u+1e0a}" ; (Ḋ) D with dot above +dkDotAbove["e"] := "{u+0117}" ; (ė) e with dot above +dkDotAbove["E"] := "{u+0116}" ; (Ė) E with dot above +dkDotAbove["f"] := "{u+1e1f}" ; (ḟ) f with dot above +dkDotAbove["F"] := "{u+1e1e}" ; (Ḟ) F with dot above +dkDotAbove["g"] := "{u+0121}" ; (ġ) g with dot above +dkDotAbove["G"] := "{u+0120}" ; (Ġ) G with dot above +dkDotAbove["h"] := "{u+1e23}" ; (ḣ) h with dot above +dkDotAbove["H"] := "{u+1e22}" ; (Ḣ) H with dot above +dkDotAbove["i"] := "{u+0131}" ; (ı) dotless i (Turkish, Azerbaijani) +dkDotAbove["I"] := "{u+0130}" ; (İ) I with dot above (Turkish, Azerbaijani) +dkDotAbove["j"] := "{u+0237}" ; (ȷ) dotless j +dkDotAbove["l"] := "{u+0140}" ; (ŀ) l with middle dot +dkDotAbove["L"] := "{u+013f}" ; (Ŀ) L with middle dot +dkDotAbove["m"] := "{u+1e41}" ; (ṁ) m with dot above +dkDotAbove["M"] := "{u+1e40}" ; (Ṁ) M with dot above +dkDotAbove["n"] := "{u+1e45}" ; (ṅ) n with dot above +dkDotAbove["N"] := "{u+1e44}" ; (Ṅ) N with dot above +dkDotAbove["o"] := "{u+022f}" ; (ȯ) o with dot above +dkDotAbove["O"] := "{u+022e}" ; (Ȯ) O with dot above +dkDotAbove["p"] := "{u+1e57}" ; (ṗ) p with dot above +dkDotAbove["P"] := "{u+1e56}" ; (Ṗ) P with dot above +dkDotAbove["r"] := "{u+1e59}" ; (ṙ) r with dot above +dkDotAbove["R"] := "{u+1e58}" ; (Ṙ) R with dot above +dkDotAbove["s"] := "{u+1e61}" ; (ṡ) s with dot above +dkDotAbove["S"] := "{u+1e60}" ; (Ṡ) S with dot above +dkDotAbove["t"] := "{u+1e6b}" ; (ṫ) t with dot above +dkDotAbove["T"] := "{u+1e6a}" ; (Ṫ) T with dot above +dkDotAbove["u"] := "{u+016f}" ; (ů) u with ring above +dkDotAbove["U"] := "{u+016e}" ; (Ů) U with ring above +dkDotAbove["w"] := "{u+1e87}" ; (ẇ) w with dot above +dkDotAbove["W"] := "{u+1e86}" ; (Ẇ) W with dot above +dkDotAbove["x"] := "{u+1e8b}" ; (ẋ) x with dot above +dkDotAbove["X"] := "{u+1e8a}" ; (Ẋ) X with dot above +dkDotAbove["y"] := "{u+1e8f}" ; (ẏ) y with dot above +dkDotAbove["Y"] := "{u+1e8e}" ; (Ẏ) Y with dot above +dkDotAbove["z"] := "{u+017c}" ; (ż) z with dot above +dkDotAbove["Z"] := "{u+017b}" ; (Ż) Z with dot above +dkDotAbove["1"] := "{u+2199}" ; (↙) south west arrow +dkDotAbove["2"] := "{u+2193}" ; (↓) downwards arrow +dkDotAbove["3"] := "{u+2198}" ; (↘) south east arrow +dkDotAbove["4"] := "{u+2190}" ; (←) leftwards arrow +dkDotAbove["5"] := "{u+2195}" ; (↕) up down arrow +dkDotAbove["6"] := "{u+2192}" ; (→) rightwards arrow +dkDotAbove["7"] := "{u+2196}" ; (↖) north west arrow +dkDotAbove["8"] := "{u+2191}" ; (↑) upwards arrow +dkDotAbove["9"] := "{u+2197}" ; (↗) north east arrow +dkDotAbove["0"] := "{u+2194}" ; (↔) left right arrow +dkDotAbove["!"] := "{u+2199}" ; (↙) south west arrow +dkDotAbove["@"] := "{u+2193}" ; (↓) downwards arrow +dkDotAbove["#"] := "{u+2198}" ; (↘) south east arrow +dkDotAbove["$"] := "{u+2190}" ; (←) leftwards arrow +dkDotAbove["%"] := "{u+2195}" ; (↕) up down arrow +dkDotAbove["^"] := "{u+2192}" ; (→) rightwards arrow +dkDotAbove["&"] := "{u+2196}" ; (↖) north west arrow +dkDotAbove["*"] := "{u+2191}" ; (↑) upwards arrow +dkDotAbove["("] := "{u+2197}" ; (↗) north east arrow +dkDotAbove[")"] := "{u+2194}" ; (↔) left right arrow +dkDotAbove[chr(0x00e5)] := "{u+1e98}" ; (å -> ẘ) w with ring above +dkDotAbove[chr(0x00fb)] := "{u+1e99}" ; (û -> ẙ) y with ring above +dkDotAbove[" "] := "{u+02d9}" ; (˙) dot above + + +; Dead Key : Macron/Stroke + +global dkMacronStroke := Map() +dkMacronStroke["a"] := "{u+0101}" ; (ā) a with macron +dkMacronStroke["A"] := "{u+0100}" ; (Ā) A with macron +dkMacronStroke["b"] := "{u+0180}" ; (ƀ) b with stroke +dkMacronStroke["B"] := "{u+0243}" ; (Ƀ) B with stroke +dkMacronStroke["d"] := "{u+0111}" ; (đ) d with stroke +dkMacronStroke["D"] := "{u+0110}" ; (Đ) D with stroke +dkMacronStroke["e"] := "{u+0113}" ; (ē) e with macron +dkMacronStroke["E"] := "{u+0112}" ; (Ē) E with macron +dkMacronStroke["g"] := "{u+01e5}" ; (ǥ) g with stroke (Skolt Sami) +dkMacronStroke["G"] := "{u+01e4}" ; (Ǥ) G with stroke (Skolt Sami) +dkMacronStroke["h"] := "{u+0127}" ; (ħ) h with stroke (Maltese) +dkMacronStroke["H"] := "{u+0126}" ; (Ħ) H with stroke (Maltese) +dkMacronStroke["i"] := "{u+012b}" ; (ī) i with macron +dkMacronStroke["I"] := "{u+012a}" ; (Ī) I with macron +dkMacronStroke["j"] := "{u+0249}" ; (ɉ) j with stroke +dkMacronStroke["J"] := "{u+0248}" ; (Ɉ) J with stroke +dkMacronStroke["l"] := "{u+0142}" ; (ł) l with stroke +dkMacronStroke["L"] := "{u+0141}" ; (Ł) L with stroke +dkMacronStroke["o"] := "{u+014d}" ; (ō) o with macron +dkMacronStroke["O"] := "{u+014c}" ; (Ō) O with macron +dkMacronStroke["p"] := "{u+1d7d}" ; (ᵽ) p with stroke +dkMacronStroke["P"] := "{u+2c63}" ; (Ᵽ) P with stroke +dkMacronStroke["r"] := "{u+024d}" ; (ɍ) r with stroke +dkMacronStroke["R"] := "{u+024c}" ; (Ɍ) R with stroke +dkMacronStroke["t"] := "{u+0167}" ; (ŧ) t with stroke +dkMacronStroke["T"] := "{u+0166}" ; (Ŧ) T with stroke +dkMacronStroke["u"] := "{u+016b}" ; (ū) u with macron +dkMacronStroke["U"] := "{u+016a}" ; (Ū) U with macron +dkMacronStroke["y"] := "{u+0233}" ; (ȳ) y with macron +dkMacronStroke["Y"] := "{u+0232}" ; (Ȳ) Y with macron +dkMacronStroke["z"] := "{u+01b6}" ; (ƶ) z with stroke +dkMacronStroke["Z"] := "{u+01b5}" ; (Ƶ) Z with stroke +dkMacronStroke["1"] := "{u+21b2}" ; (↲) downwards arrow with tip leftwards +dkMacronStroke["2"] := "{u+21f5}" ; (⇵) downwards arrow leftwards of upwards arrow +dkMacronStroke["3"] := "{u+21b3}" ; (↳) downwards arrow with tip rightwards +dkMacronStroke["4"] := "{u+21c6}" ; (⇆) leftwards arrow over rightwards arrow +dkMacronStroke["5"] := "{u+21a8}" ; (↨) up down arrow with base +dkMacronStroke["6"] := "{u+21c4}" ; (⇄) rightwards arrow over leftwards arrow +dkMacronStroke["7"] := "{u+21b0}" ; (↰) upwards arrow with tip leftwards +dkMacronStroke["8"] := "{u+21c5}" ; (⇅) upwards arrow leftwards of downwards arrow +dkMacronStroke["9"] := "{u+21b1}" ; (↱) upwards arrow with tip rightwards +dkMacronStroke["0"] := "{u+21b9}" ; (↹) leftwards arrow to bar over rightwards arrow to bar +dkMacronStroke["!"] := "{u+21b2}" ; (↲) downwards arrow with tip leftwards +dkMacronStroke["@"] := "{u+21f5}" ; (⇵) downwards arrow leftwards of upwards arrow +dkMacronStroke["#"] := "{u+21b3}" ; (↳) downwards arrow with tip rightwards +dkMacronStroke["$"] := "{u+21c6}" ; (⇆) leftwards arrow over rightwards arrow +dkMacronStroke["%"] := "{u+21a8}" ; (↨) up down arrow with base +dkMacronStroke["^"] := "{u+21c4}" ; (⇄) rightwards arrow over leftwards arrow +dkMacronStroke["&"] := "{u+21b0}" ; (↰) upwards arrow with tip leftwards +dkMacronStroke["*"] := "{u+21c5}" ; (⇅) upwards arrow leftwards of downwards arrow +dkMacronStroke["("] := "{u+21b1}" ; (↱) upwards arrow with tip rightwards +dkMacronStroke[")"] := "{u+21b9}" ; (↹) leftwards arrow to bar over rightwards arrow to bar +dkMacronStroke[chr(0x00e6)] := "{u+01e3}" ; (æ -> ǣ) ae with macron +dkMacronStroke[chr(0x00c6)] := "{u+01e2}" ; (Æ -> Ǣ) AE with macron +dkMacronStroke[chr(0x00e9)] := "{u+1e21}" ; (é -> ḡ) g with macron +dkMacronStroke[chr(0x00c9)] := "{u+1e20}" ; (É -> Ḡ) G with macron +dkMacronStroke[chr(0x00ef)] := "{u+0268}" ; (ï -> ɨ) i with stroke +dkMacronStroke[chr(0x00cf)] := "{u+0197}" ; (Ï -> Ɨ) I with stroke +dkMacronStroke[chr(0x00f8)] := "{u+019a}" ; (ø -> ƚ) l with bar +dkMacronStroke[chr(0x00d8)] := "{u+023d}" ; (Ø -> Ƚ) L with bar +dkMacronStroke[chr(0x00f6)] := "{u+01ed}" ; (ö -> ǭ) o with ogonek and macron +dkMacronStroke[chr(0x00d6)] := "{u+01ec}" ; (Ö -> Ǭ) O with ogonek and macron +dkMacronStroke[chr(0x00fc)] := "{u+0289}" ; (ü -> ʉ) u with bar +dkMacronStroke[chr(0x00dc)] := "{u+0244}" ; (Ü -> Ʉ) U with bar +dkMacronStroke[chr(0x00fb)] := "{u+024f}" ; (û -> ɏ) y with stroke +dkMacronStroke[chr(0x00db)] := "{u+024e}" ; (Û -> Ɏ) Y with stroke +dkMacronStroke[" "] := "{u+00af}" ; (¯) macron + + +; Dead Key : Cedilla/Ogonek + +global dkCedillaOgonek := Map() +dkCedillaOgonek["a"] := "{u+0105}" ; (ą) a with ogonek +dkCedillaOgonek["A"] := "{u+0104}" ; (Ą) A with ogonek +dkCedillaOgonek["c"] := "{u+00e7}" ; (ç) c with cedilla +dkCedillaOgonek["C"] := "{u+00c7}" ; (Ç) C with cedilla +dkCedillaOgonek["d"] := "{u+1e11}" ; (ḑ) d with cedilla +dkCedillaOgonek["D"] := "{u+1e10}" ; (Ḑ) D with cedilla +dkCedillaOgonek["e"] := "{u+0119}" ; (ę) e with ogonek +dkCedillaOgonek["E"] := "{u+0118}" ; (Ę) E with ogonek +dkCedillaOgonek["g"] := "{u+0123}" ; (ģ) g with cedilla +dkCedillaOgonek["G"] := "{u+0122}" ; (Ģ) G with cedilla +dkCedillaOgonek["h"] := "{u+1e29}" ; (ḩ) h with cedilla +dkCedillaOgonek["H"] := "{u+1e28}" ; (Ḩ) H with cedilla +dkCedillaOgonek["i"] := "{u+012f}" ; (į) i with ogonek +dkCedillaOgonek["I"] := "{u+012e}" ; (Į) I with ogonek +dkCedillaOgonek["k"] := "{u+0137}" ; (ķ) k with cedilla +dkCedillaOgonek["K"] := "{u+0136}" ; (Ķ) K with cedilla +dkCedillaOgonek["l"] := "{u+013c}" ; (ļ) l with cedilla +dkCedillaOgonek["L"] := "{u+013b}" ; (Ļ) L with cedilla +dkCedillaOgonek["n"] := "{u+0146}" ; (ņ) n with cedilla +dkCedillaOgonek["N"] := "{u+0145}" ; (Ņ) N with cedilla +dkCedillaOgonek["o"] := "{u+01eb}" ; (ǫ) o with ogonek +dkCedillaOgonek["O"] := "{u+01ea}" ; (Ǫ) O with ogonek +dkCedillaOgonek["r"] := "{u+0157}" ; (ŗ) r with cedilla +dkCedillaOgonek["R"] := "{u+0156}" ; (Ŗ) R with cedilla +dkCedillaOgonek["s"] := "{u+015f}" ; (ş) s with cedilla +dkCedillaOgonek["S"] := "{u+015e}" ; (Ş) S with cedilla +dkCedillaOgonek["t"] := "{u+0163}" ; (ţ) t with cedilla +dkCedillaOgonek["T"] := "{u+0162}" ; (Ţ) T with cedilla +dkCedillaOgonek["u"] := "{u+0173}" ; (ų) u with ogonek +dkCedillaOgonek["U"] := "{u+0172}" ; (Ų) U with ogonek +dkCedillaOgonek["1"] := "{u+2013}" ; (–) en dash +dkCedillaOgonek["2"] := "{u+2014}" ; (—) em dash +dkCedillaOgonek["3"] := "{u+2015}" ; (―) horizontal bar +dkCedillaOgonek["4"] := "{u+2010}" ; (‐) hyphen +dkCedillaOgonek["9"] := "{u+2012}" ; (‒) figure dash +dkCedillaOgonek["0"] := "{u+00ad}" ; (­) soft hyphen +dkCedillaOgonek["!"] := "{u+2013}" ; (–) en dash +dkCedillaOgonek["@"] := "{u+2014}" ; (—) em dash +dkCedillaOgonek["#"] := "{u+2015}" ; (―) horizontal bar +dkCedillaOgonek["$"] := "{u+2010}" ; (‐) hyphen +dkCedillaOgonek["("] := "{u+2012}" ; (‒) figure dash +dkCedillaOgonek[")"] := "{u+00ad}" ; (­) soft hyphen +dkCedillaOgonek["-"] := "{u+2011}" ; (‑) non-breaking hyphen +dkCedillaOgonek["."] := "{u+02db}" ; (˛) ogonek +dkCedillaOgonek[chr(0x00eb)] := "{u+0229}" ; (ë -> ȩ) e with cedilla +dkCedillaOgonek[chr(0x00cb)] := "{u+0228}" ; (Ë -> Ȩ) E with cedilla +dkCedillaOgonek[chr(0x00f6)] := "{u+01ed}" ; (ö -> ǭ) o with ogonek and macron +dkCedillaOgonek[chr(0x00d6)] := "{u+01ec}" ; (Ö -> Ǭ) O with ogonek and macron +dkCedillaOgonek[" "] := "{u+00b8}" ; (¸) cedilla + + +; Dead Key : Breve/Special + +global dkBreveSpecial := Map() +dkBreveSpecial["a"] := "{u+0103}" ; (ă) a with breve +dkBreveSpecial["A"] := "{u+0102}" ; (Ă) A with breve +dkBreveSpecial["c"] := "{u+0188}" ; (ƈ) c with hook +dkBreveSpecial["C"] := "{u+0187}" ; (Ƈ) C with hook +dkBreveSpecial["d"] := "{u+0256}" ; (ɖ) small letter d with tail +dkBreveSpecial["D"] := "{u+0189}" ; (Ɖ) capital letter African D +dkBreveSpecial["e"] := "{u+0115}" ; (ĕ) e with breve +dkBreveSpecial["E"] := "{u+0114}" ; (Ĕ) E with breve +dkBreveSpecial["f"] := "{u+0259}" ; (ə) small letter schwa (Azerbaijani) +dkBreveSpecial["F"] := "{u+018f}" ; (Ə) capital letter schwa (Azerbaijani) +dkBreveSpecial["g"] := "{u+011f}" ; (ğ) g with breve +dkBreveSpecial["G"] := "{u+011e}" ; (Ğ) G with breve +dkBreveSpecial["h"] := "{u+a727}" ; (ꜧ) small letter heng +dkBreveSpecial["H"] := "{u+a726}" ; (Ꜧ) capital letter heng +dkBreveSpecial["i"] := "{u+012d}" ; (ĭ) i with breve +dkBreveSpecial["I"] := "{u+012c}" ; (Ĭ) I with breve +dkBreveSpecial["j"] := "{u+0133}" ; (ij) ligature ij +dkBreveSpecial["J"] := "{u+0132}" ; (IJ) ligature IJ +dkBreveSpecial["k"] := "{u+0199}" ; (ƙ) k with hook +dkBreveSpecial["K"] := "{u+0198}" ; (Ƙ) K with hook +dkBreveSpecial["m"] := "{u+0271}" ; (ɱ) m with hook +dkBreveSpecial["M"] := "{u+2c6e}" ; (Ɱ) M with hook +dkBreveSpecial["n"] := "{u+014b}" ; (ŋ) small letter eng(ma) +dkBreveSpecial["N"] := "{u+014a}" ; (Ŋ) capital letter eng(ma) +dkBreveSpecial["o"] := "{u+014f}" ; (ŏ) o with breve +dkBreveSpecial["O"] := "{u+014e}" ; (Ŏ) O with breve +dkBreveSpecial["p"] := "{u+01a5}" ; (ƥ) p with hook +dkBreveSpecial["P"] := "{u+01a4}" ; (Ƥ) P with hook +dkBreveSpecial["r"] := "{u+027d}" ; (ɽ) r with tail +dkBreveSpecial["R"] := "{u+2c64}" ; (Ɽ) R with tail +dkBreveSpecial["s"] := "{u+0219}" ; (ș) s with comma below (Romanian) +dkBreveSpecial["S"] := "{u+0218}" ; (Ș) S with comma below (Romanian) +dkBreveSpecial["t"] := "{u+021b}" ; (ț) t with comma below (Romanian) +dkBreveSpecial["T"] := "{u+021a}" ; (Ț) T with comma below (Romanian) +dkBreveSpecial["u"] := "{u+016d}" ; (ŭ) u with breve +dkBreveSpecial["U"] := "{u+016c}" ; (Ŭ) U with breve +dkBreveSpecial["v"] := "{u+028a}" ; (ʊ) latin small letter upsilon +dkBreveSpecial["V"] := "{u+01b1}" ; (Ʊ) latin capital letter upsilon +dkBreveSpecial["w"] := "{u+01bf}" ; (ƿ) small letter wynn +dkBreveSpecial["W"] := "{u+01f7}" ; (Ƿ) capital letter wynn +dkBreveSpecial["y"] := "{u+021d}" ; (ȝ) small letter yogh +dkBreveSpecial["Y"] := "{u+021c}" ; (Ȝ) capital letter yogh +dkBreveSpecial["z"] := "{u+0225}" ; (ȥ) z with hook +dkBreveSpecial["Z"] := "{u+0224}" ; (Ȥ) Z with hook +dkBreveSpecial["3"] := "{u+0292}" ; (ʒ) small letter ezh +dkBreveSpecial["#"] := "{u+01b7}" ; (Ʒ) capital letter ezh +dkBreveSpecial[chr(0x00e4)] := "{u+0252}" ; (ä -> ɒ) latin small letter turned alpha +dkBreveSpecial[chr(0x00c4)] := "{u+2c70}" ; (Ä -> Ɒ) latin capital letter turned alpha +dkBreveSpecial[chr(0x00eb)] := "{u+01dd}" ; (ë -> ǝ) small turned e +dkBreveSpecial[chr(0x00cb)] := "{u+018e}" ; (Ë -> Ǝ) capital reversed E +dkBreveSpecial[chr(0x00e9)] := "{u+0263}" ; (é -> ɣ) latin small gamma +dkBreveSpecial[chr(0x00c9)] := "{u+0194}" ; (É -> Ɣ) latin capital gamma +dkBreveSpecial[chr(0x00f1)] := "{u+0272}" ; (ñ -> ɲ) n with left hook +dkBreveSpecial[chr(0x00d1)] := "{u+019d}" ; (Ñ -> Ɲ) N with left hook +dkBreveSpecial[chr(0x00f6)] := "{u+0254}" ; (ö -> ɔ) small open o +dkBreveSpecial[chr(0x00d6)] := "{u+0186}" ; (Ö -> Ɔ) capital open O +dkBreveSpecial[chr(0x00e5)] := "{u+2c73}" ; (å -> ⱳ) w with hook +dkBreveSpecial[chr(0x00c5)] := "{u+2c72}" ; (Å -> Ⱳ) W with hook +dkBreveSpecial[" "] := "{u+02d8}" ; (˘) breve + + +; Dead Key : Acute Accent + +global dkAcuteAccent := Map() +dkAcuteAccent["a"] := "{u+0251}" ; (ɑ) latin small letter alpha +dkAcuteAccent["A"] := "{u+2c6d}" ; (Ɑ) latin capital letter alpha +dkAcuteAccent["b"] := "{u+0253}" ; (ɓ) b with hook +dkAcuteAccent["B"] := "{u+0181}" ; (Ɓ) B with hook +dkAcuteAccent["c"] := "{u+0107}" ; (ć) c with acute +dkAcuteAccent["C"] := "{u+0106}" ; (Ć) C with acute +dkAcuteAccent["d"] := "{u+0257}" ; (ɗ) d with hook +dkAcuteAccent["D"] := "{u+018a}" ; (Ɗ) D with hook +dkAcuteAccent["e"] := "{u+025b}" ; (ɛ) small letter open e (latin small epsilon) +dkAcuteAccent["E"] := "{u+0190}" ; (Ɛ) capital letter open E (latin capital epsilon) +dkAcuteAccent["f"] := "{u+0192}" ; (ƒ) f with hook +dkAcuteAccent["F"] := "{u+0191}" ; (Ƒ) F with hook +dkAcuteAccent["g"] := "{u+01f5}" ; (ǵ) g with acute +dkAcuteAccent["G"] := "{u+01f4}" ; (Ǵ) G with acute +dkAcuteAccent["h"] := "{u+0266}" ; (ɦ) h with hook +dkAcuteAccent["H"] := "{u+a7aa}" ; (Ɦ) H with hook +dkAcuteAccent["i"] := "{u+0269}" ; (ɩ) latin small letter iota +dkAcuteAccent["I"] := "{u+0196}" ; (Ɩ) latin capital letter iota +dkAcuteAccent["j"] := "{u+0133}" ; (ij) ligature ij +dkAcuteAccent["J"] := "{u+0132}" ; (IJ) ligature IJ +dkAcuteAccent["k"] := "{u+1e31}" ; (ḱ) k with acute +dkAcuteAccent["K"] := "{u+1e30}" ; (Ḱ) K with acute +dkAcuteAccent["l"] := "{u+013a}" ; (ĺ) l with acute +dkAcuteAccent["L"] := "{u+0139}" ; (Ĺ) L with acute +dkAcuteAccent["m"] := "{u+1e3f}" ; (ḿ) m with acute +dkAcuteAccent["M"] := "{u+1e3e}" ; (Ḿ) M with acute +dkAcuteAccent["n"] := "{u+0144}" ; (ń) n with acute +dkAcuteAccent["N"] := "{u+0143}" ; (Ń) N with acute +dkAcuteAccent["o"] := "{u+0151}" ; (ő) o with double acute +dkAcuteAccent["O"] := "{u+0150}" ; (Ő) O with double acute +dkAcuteAccent["p"] := "{u+1e55}" ; (ṕ) p with acute +dkAcuteAccent["P"] := "{u+1e54}" ; (Ṕ) P with acute +dkAcuteAccent["q"] := "{u+024b}" ; (ɋ) q with hook tail +dkAcuteAccent["Q"] := "{u+024a}" ; (Ɋ) Q with hook tail +dkAcuteAccent["r"] := "{u+0155}" ; (ŕ) r with acute +dkAcuteAccent["R"] := "{u+0154}" ; (Ŕ) R with acute +dkAcuteAccent["s"] := "{u+015b}" ; (ś) s with acute +dkAcuteAccent["S"] := "{u+015a}" ; (Ś) S with acute +dkAcuteAccent["t"] := "{u+01ad}" ; (ƭ) t with hook +dkAcuteAccent["T"] := "{u+01ac}" ; (Ƭ) T with hook +dkAcuteAccent["u"] := "{u+0171}" ; (ű) u with double acute +dkAcuteAccent["U"] := "{u+0170}" ; (Ű) U with double acute +dkAcuteAccent["v"] := "{u+028b}" ; (ʋ) v with hook +dkAcuteAccent["V"] := "{u+01b2}" ; (Ʋ) V with hook +dkAcuteAccent["w"] := "{u+1e83}" ; (ẃ) w with acute +dkAcuteAccent["W"] := "{u+1e82}" ; (Ẃ) W with acute +dkAcuteAccent["y"] := "{u+00fd}" ; (ý) y with acute +dkAcuteAccent["Y"] := "{u+00dd}" ; (Ý) Y with acute +dkAcuteAccent["z"] := "{u+017a}" ; (ź) z with acute +dkAcuteAccent["Z"] := "{u+0179}" ; (Ź) Z with acute +dkAcuteAccent["2"] := "{u+266b}" ; (♫) beamed eighth notes +dkAcuteAccent["3"] := "{u+2042}" ; (⁂) asterism +dkAcuteAccent["4"] := "{u+2605}" ; (★) black star +dkAcuteAccent["5"] := "{u+2606}" ; (☆) white star +dkAcuteAccent["6"] := "{u+273d}" ; (✽) heavy teardrop-spoked asterisk +dkAcuteAccent["7"] := "{u+273b}" ; (✻) teardrop-spoked asterisk +dkAcuteAccent["8"] := "{u+266a}" ; (♪) eighth note +dkAcuteAccent["9"] := "{u+2706}" ; (✆) telephone location sign +dkAcuteAccent["0"] := "{u+2709}" ; (✉) envelope +dkAcuteAccent["@"] := "{u+266b}" ; (♫) beamed eighth notes +dkAcuteAccent["#"] := "{u+2042}" ; (⁂) asterism +dkAcuteAccent["$"] := "{u+2605}" ; (★) black star +dkAcuteAccent["%"] := "{u+2606}" ; (☆) white star +dkAcuteAccent["^"] := "{u+273d}" ; (✽) heavy teardrop-spoked asterisk +dkAcuteAccent["&"] := "{u+273b}" ; (✻) teardrop-spoked asterisk +dkAcuteAccent["*"] := "{u+266a}" ; (♪) eighth note +dkAcuteAccent["("] := "{u+2706}" ; (✆) telephone location sign +dkAcuteAccent[")"] := "{u+2709}" ; (✉) envelope +dkAcuteAccent[chr(0x00e5)] := "{u+01fb}" ; (å -> ǻ) a with ring above and acute +dkAcuteAccent[chr(0x00c5)] := "{u+01fa}" ; (Å -> Ǻ) A with ring above and acute +dkAcuteAccent[chr(0x00e6)] := "{u+01fd}" ; (æ -> ǽ) ae with acute +dkAcuteAccent[chr(0x00c6)] := "{u+01fc}" ; (Æ -> Ǽ) AE with acute +dkAcuteAccent[chr(0x00f8)] := "{u+01ff}" ; (ø -> ǿ) o with stroke and acute +dkAcuteAccent[chr(0x00d8)] := "{u+01fe}" ; (Ø -> Ǿ) O with stroke and acute +dkAcuteAccent[chr(0x00e7)] := "{u+1e09}" ; (ç -> ḉ) c with cedilla and acute +dkAcuteAccent[chr(0x00c7)] := "{u+1e08}" ; (Ç -> Ḉ) C with cedilla and acute +dkAcuteAccent[chr(0x00e9)] := "{u+0260}" ; (é -> ɠ) g with hook +dkAcuteAccent[chr(0x00c9)] := "{u+0193}" ; (É -> Ɠ) G with hook +dkAcuteAccent[chr(0x00ec)] := "{u+028c}" ; (ì -> ʌ) latin small letter turned v +dkAcuteAccent[chr(0x00cc)] := "{u+0245}" ; (Ì -> Ʌ) latin capital letter turned V +dkAcuteAccent[chr(0x00fb)] := "{u+01b4}" ; (û -> ƴ) y with hook +dkAcuteAccent[chr(0x00db)] := "{u+01b3}" ; (Û -> Ƴ) Y with hook +dkAcuteAccent[chr(0x00f6)] := "{u+01a1}" ; (ö -> ơ) o with horn +dkAcuteAccent[chr(0x00d6)] := "{u+01a0}" ; (Ö -> Ơ) O with horn +dkAcuteAccent[chr(0x00fc)] := "{u+01b0}" ; (ü -> ư) u with horn +dkAcuteAccent[chr(0x00dc)] := "{u+01af}" ; (Ü -> Ư) U with horn +dkAcuteAccent[" "] := "{u+00b4}" ; (´) acute accent + + +; Dead Key : Diaeresis + +global dkDiaeresis := Map() +dkDiaeresis["a"] := "{u+00e4}" ; (ä) a with diaeresis +dkDiaeresis["A"] := "{u+00c4}" ; (Ä) A with diaeresis +dkDiaeresis["e"] := "{u+00eb}" ; (ë) e with diaeresis +dkDiaeresis["E"] := "{u+00cb}" ; (Ë) E with diaeresis +dkDiaeresis["h"] := "{u+1e27}" ; (ḧ) h with diaeresis +dkDiaeresis["H"] := "{u+1e26}" ; (Ḧ) H with diaeresis +dkDiaeresis["i"] := "{u+00ef}" ; (ï) i with diaeresis +dkDiaeresis["I"] := "{u+00cf}" ; (Ï) I with diaeresis +dkDiaeresis["o"] := "{u+00f6}" ; (ö) o with diaeresis +dkDiaeresis["O"] := "{u+00d6}" ; (Ö) O with diaeresis +dkDiaeresis["s"] := "{u+0283}" ; (ʃ) small letter esh +dkDiaeresis["S"] := "{u+01a9}" ; (Ʃ) capital letter esh +dkDiaeresis["t"] := "{u+1e97}" ; (ẗ) t with diaeresis +dkDiaeresis["u"] := "{u+00fc}" ; (ü) u with diaeresis +dkDiaeresis["U"] := "{u+00dc}" ; (Ü) U with diaeresis +dkDiaeresis["w"] := "{u+1e85}" ; (ẅ) w with diaeresis +dkDiaeresis["W"] := "{u+1e84}" ; (Ẅ) W with diaeresis +dkDiaeresis["x"] := "{u+1e8d}" ; (ẍ) x with diaeresis +dkDiaeresis["X"] := "{u+1e8c}" ; (Ẍ) X with diaeresis +dkDiaeresis["y"] := "{u+00ff}" ; (ÿ) y with diaeresis +dkDiaeresis["Y"] := "{u+0178}" ; (Ÿ) Y with diaeresis +dkDiaeresis[" "] := "{u+00a8}" ; (¨) diaeresis + + +; Dead Key : Grave Accent + +global dkGraveAccent := Map() +dkGraveAccent["a"] := "{u+0201}" ; (ȁ) a with double grave +dkGraveAccent["A"] := "{u+0200}" ; (Ȁ) A with double grave +dkGraveAccent["d"] := "{u+00f0}" ; (ð) small letter eth +dkGraveAccent["D"] := "{u+00d0}" ; (Ð) capital letter eth +dkGraveAccent["e"] := "{u+0205}" ; (ȅ) e with double grave +dkGraveAccent["E"] := "{u+0204}" ; (Ȅ) E with double grave +dkGraveAccent["i"] := "{u+0209}" ; (ȉ) i with double grave +dkGraveAccent["I"] := "{u+0208}" ; (Ȉ) I with double grave +dkGraveAccent["n"] := "{u+01f9}" ; (ǹ) n with grave +dkGraveAccent["N"] := "{u+01f8}" ; (Ǹ) N with grave +dkGraveAccent["o"] := "{u+020d}" ; (ȍ) o with double grave +dkGraveAccent["O"] := "{u+020c}" ; (Ȍ) O with double grave +dkGraveAccent["r"] := "{u+0211}" ; (ȑ) r with double grave +dkGraveAccent["R"] := "{u+0210}" ; (Ȑ) R with double grave +dkGraveAccent["t"] := "{u+00fe}" ; (þ) small letter thorn +dkGraveAccent["T"] := "{u+00de}" ; (Þ) capital letter thorn +dkGraveAccent["u"] := "{u+0215}" ; (ȕ) u with double grave +dkGraveAccent["U"] := "{u+0214}" ; (Ȕ) U with double grave +dkGraveAccent["w"] := "{u+1e81}" ; (ẁ) w with grave +dkGraveAccent["W"] := "{u+1e80}" ; (Ẁ) W with grave +dkGraveAccent["y"] := "{u+1ef3}" ; (ỳ) y with grave +dkGraveAccent["Y"] := "{u+1ef2}" ; (Ỳ) Y with grave +dkGraveAccent["c"] := "{u+2663}" ; (♣) black club suit +dkGraveAccent["C"] := "{u+2667}" ; (♧) white club suit +dkGraveAccent["h"] := "{u+2665}" ; (♥) black heart suit +dkGraveAccent["H"] := "{u+2661}" ; (♡) white heart suit +dkGraveAccent["m"] := "{u+2666}" ; (♦) black diamond suit +dkGraveAccent["M"] := "{u+2662}" ; (♢) white diamond suit +dkGraveAccent["s"] := "{u+2660}" ; (♠) black spade suit +dkGraveAccent["S"] := "{u+2664}" ; (♤) white spade suit +dkGraveAccent["1"] := "{u+2002}" ; en space +dkGraveAccent["2"] := "{u+2003}" ; em space +dkGraveAccent["3"] := "{u+2004}" ; three-per-em space +dkGraveAccent["4"] := "{u+2005}" ; four-per-em space +dkGraveAccent["5"] := "{u+2008}" ; punctuation space +dkGraveAccent["6"] := "{u+2006}" ; six-per-em space +dkGraveAccent["7"] := "{u+2009}" ; thin space +dkGraveAccent["8"] := "{u+200a}" ; hair space +dkGraveAccent["9"] := "{u+2007}" ; figure space +dkGraveAccent["0"] := "{u+200b}" ; zero-width space +dkGraveAccent["!"] := "{u+2002}" ; en space +dkGraveAccent["@"] := "{u+2003}" ; em space +dkGraveAccent["#"] := "{u+2004}" ; three-per-em space +dkGraveAccent["$"] := "{u+2005}" ; four-per-em space +dkGraveAccent["%"] := "{u+2008}" ; punctuation space +dkGraveAccent["^"] := "{u+2006}" ; six-per-em space +dkGraveAccent["&"] := "{u+2009}" ; thin space +dkGraveAccent["*"] := "{u+200a}" ; hair space +dkGraveAccent["("] := "{u+2007}" ; figure space +dkGraveAccent[")"] := "{u+200b}" ; zero-width space +dkGraveAccent["-"] := "{u+00a0}" ; non-breaking space +dkGraveAccent["="] := "{u+202f}" ; narrow no-break space +dkGraveAccent[" "] := "``" ; grave accent + + +; Dead Key : Tilde + +global dkTilde := Map() +dkTilde["a"] := "{u+00e3}" ; (ã) a with tilde +dkTilde["A"] := "{u+00c3}" ; (Ã) A with tilde +dkTilde["e"] := "{u+1ebd}" ; (ẽ) e with tilde +dkTilde["E"] := "{u+1ebc}" ; (Ẽ) E with tilde +dkTilde["i"] := "{u+0129}" ; (ĩ) i with tilde +dkTilde["I"] := "{u+0128}" ; (Ĩ) I with tilde +dkTilde["l"] := "{u+026b}" ; (ɫ) l with middle tilde +dkTilde["L"] := "{u+2c62}" ; (Ɫ) L with middle tilde +dkTilde["n"] := "{u+00f1}" ; (ñ) n with tilde +dkTilde["N"] := "{u+00d1}" ; (Ñ) N with tilde +dkTilde["o"] := "{u+00f5}" ; (õ) o with tilde +dkTilde["O"] := "{u+00d5}" ; (Õ) O with tilde +dkTilde["u"] := "{u+0169}" ; (ũ) u with tilde +dkTilde["U"] := "{u+0168}" ; (Ũ) U with tilde +dkTilde["v"] := "{u+1e7d}" ; (ṽ) v with tilde +dkTilde["V"] := "{u+1e7c}" ; (Ṽ) V with tilde +dkTilde["y"] := "{u+1ef9}" ; (ỹ) y with tilde +dkTilde["Y"] := "{u+1ef8}" ; (Ỹ) Y with tilde +dkTilde["g"] := "{u+ab36}" ; (ꬶ) cross-tailed g +dkTilde["h"] := "{u+0267}" ; (ɧ) small letter heng with hook +dkTilde["k"] := "{u+0138}" ; (ĸ) small letter kra +dkTilde["s"] := "{u+017f}" ; (ſ) small long s +dkTilde["1"] := "{u+2000}" ; en quad +dkTilde["2"] := "{u+2001}" ; em quad +dkTilde["!"] := "{u+2000}" ; en quad +dkTilde["@"] := "{u+2001}" ; em quad +dkTilde[" "] := "~" ; tilde + + +; Dead Key : General Symbols + +global dkSymbols := Map() +dkSymbols["a"] := "{u+00aa}" ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols["A"] := "{u+00aa}" ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols["b"] := "{u+2022}" ; (•) bullet +dkSymbols["B"] := "{u+25e6}" ; (◦) white bullet +dkSymbols["c"] := "{u+2105}" ; (℅) care of +dkSymbols["C"] := "{u+2105}" ; (℅) care of +dkSymbols["d"] := "{u+2020}" ; (†) dagger +dkSymbols["D"] := "{u+2021}" ; (‡) double dagger +dkSymbols["e"] := "{u+212e}" ; (℮) estimated symbol +dkSymbols["E"] := "{u+2709}" ; (✉) envelope +dkSymbols["f"] := "{u+2640}" ; (♀) Venus symbol (female) +dkSymbols["F"] := "{u+2640}" ; (♀) Venus symbol (female) +dkSymbols["h"] := "{u+2766}" ; (❦) floral heart +dkSymbols["H"] := "{u+2767}" ; (❧) rotated floral heart bullet +dkSymbols["i"] := "{u+22c4}" ; (⋄) diamond operator +dkSymbols["I"] := "{u+22c4}" ; (⋄) diamond operator +dkSymbols["l"] := "{u+2113}" ; (ℓ) script small l +dkSymbols["L"] := "{u+2112}" ; (ℒ) Laplace transform +dkSymbols["m"] := "{u+2642}" ; (♂) Mars symbol (male) +dkSymbols["M"] := "{u+2642}" ; (♂) Mars symbol (male) +dkSymbols["n"] := "{u+00ac}" ; (¬) not sign +dkSymbols["N"] := "{u+00ac}" ; (¬) not sign +dkSymbols["o"] := "{u+00ba}" ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols["O"] := "{u+00ba}" ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) +dkSymbols["p"] := "{u+00b6}" ; (¶) pilcrow sign +dkSymbols["P"] := "{u+2117}" ; (℗) sound recording copyright +dkSymbols["q"] := "{u+201e}" ; („) double low-9 quotation mark +dkSymbols["Q"] := "{u+201a}" ; (‚) single low-9 quotation mark +dkSymbols["r"] := "{u+00ae}" ; (®) registered sign +dkSymbols["R"] := "{u+2619}" ; (☙) reversed rotated floral heart bullet +dkSymbols["s"] := "{u+2120}" ; (℠) service mark +dkSymbols["S"] := "{u+2120}" ; (℠) service mark +dkSymbols["t"] := "{u+2122}" ; (™) trademark symbol +dkSymbols["T"] := "{u+2706}" ; (✆) telephone location sign +dkSymbols["u"] := "{u+2610}" ; (☐) ballot box +dkSymbols["U"] := "{u+2610}" ; (☐) ballot box +dkSymbols["v"] := "{u+2713}" ; (✓) check mark +dkSymbols["V"] := "{u+2714}" ; (✔) heavy check mark +dkSymbols["x"] := "{u+2717}" ; (✗) ballot x +dkSymbols["X"] := "{u+2718}" ; (✘) heavy ballot x +dkSymbols["y"] := "{u+2611}" ; (☑) ballot box with check +dkSymbols["Y"] := "{u+2612}" ; (☒) ballot box with x +dkSymbols["1"] := "{u+2116}" ; (№) numero sign +dkSymbols["2"] := "{u+00bd}" ; (½) vulgar fraction 1/2 +dkSymbols["3"] := "{u+2153}" ; (⅓) vulgar fraction 1/3 +dkSymbols["4"] := "{u+00bc}" ; (¼) vulgar fraction 1/4 +dkSymbols["5"] := "{u+2154}" ; (⅔) vulgar fraction 2/3 +dkSymbols["6"] := "{u+00be}" ; (¾) vulgar fraction 3/4 +dkSymbols["7"] := "{u+215b}" ; (⅛) vulgar fraction 1/8 +dkSymbols["8"] := "{u+215c}" ; (⅜) vulgar fraction 3/8 +dkSymbols["9"] := "{u+215d}" ; (⅝) vulgar fraction 5/8 +dkSymbols["0"] := "{u+215e}" ; (⅞) vulgar fraction 7/8 +dkSymbols["!"] := "{u+2116}" ; (№) numero sign +dkSymbols["@"] := "{u+00bd}" ; (½) vulgar fraction 1/2 +dkSymbols["#"] := "{u+2153}" ; (⅓) vulgar fraction 1/3 +dkSymbols["$"] := "{u+00bc}" ; (¼) vulgar fraction 1/4 +dkSymbols["%"] := "{u+2154}" ; (⅔) vulgar fraction 2/3 +dkSymbols["^"] := "{u+00be}" ; (¾) vulgar fraction 3/4 +dkSymbols["&"] := "{u+215b}" ; (⅛) vulgar fraction 1/8 +dkSymbols["*"] := "{u+215c}" ; (⅜) vulgar fraction 3/8 +dkSymbols["("] := "{u+215d}" ; (⅝) vulgar fraction 5/8 +dkSymbols[")"] := "{u+215e}" ; (⅞) vulgar fraction 7/8 +dkSymbols["-"] := "{u+2043}" ; (⁃) hyphen bullet +dkSymbols["_"] := "{u+2023}" ; (‣) triangular bullet +dkSymbols["="] := "{u+00d7}" ; (×) multiplication sign +dkSymbols["+"] := "{u+00f7}" ; (÷) division sign +dkSymbols[";"] := "{u+263a}" ; (☺) white smiling face +dkSymbols[":"] := "{u+263b}" ; (☻) black smiling face +dkSymbols["/"] := "{u+203c}" ; (‼) double exclamation mark +dkSymbols["?"] := "{u+203d}" ; (‽) interrobang +dkSymbols["\"] := "{u+205e}" ; (⁞) vertical four dots +dkSymbols["|"] := "{u+00a6}" ; (¦) broken bar +dkSymbols[chr(0x00e4)] := "{u+214d}" ; (ä -> ⅍) aktieselskab +dkSymbols[chr(0x00c4)] := "{u+214d}" ; (Ä -> ⅍) aktieselskab +dkSymbols[chr(0x00f6)] := "{u+2126}" ; (ö -> Ω) ohm sign (backwards compatibility) +dkSymbols[chr(0x00d6)] := "{u+2126}" ; (Ö -> Ω) ohm sign (backwards compatibility) +dkSymbols[chr(0x00bf)] := "{u+2e18}" ; (¿ -> ⸘) inverted interrobang +dkSymbols[chr(0x2026)] := "{u+2e2e}" ; (… -> ⸮) reversed question mark +dkSymbols[" "] := "{u+00d7}" ; (×) multiplication sign + + +; Dead Key : Currency + +global dkCurrency := Map() +dkCurrency["a"] := "{u+058f}" ; (֏) Armenian dram +dkCurrency["A"] := "{u+20b3}" ; (₳) Argentine austral +dkCurrency["b"] := "{u+20bf}" ; (₿) bitcoin +dkCurrency["B"] := "{u+0e3f}" ; (฿) Thai baht +dkCurrency["c"] := "{u+20a1}" ; (₡) Costa Rican colón +dkCurrency["C"] := "{u+20b5}" ; (₵) Ghanaian cedi +dkCurrency["d"] := "{u+20ab}" ; (₫) Vietnamese dong +dkCurrency["D"] := "{u+20af}" ; (₯) Greek drachma +dkCurrency["f"] := "{u+20a3}" ; (₣) French franc +dkCurrency["F"] := "{u+20a3}" ; (₣) French franc +dkCurrency["g"] := "{u+20b2}" ; (₲) Paraguayan guaraní +dkCurrency["G"] := "{u+20b2}" ; (₲) Paraguayan guaraní +dkCurrency["h"] := "{u+20b4}" ; (₴) Ukrainian hryvnia +dkCurrency["H"] := "{u+20b4}" ; (₴) Ukrainian hryvnia +dkCurrency["k"] := "{u+20ad}" ; (₭) Laotian kip +dkCurrency["K"] := "{u+20ad}" ; (₭) Laotian kip +dkCurrency["l"] := "{u+20ba}" ; (₺) Turkish lira +dkCurrency["L"] := "{u+20be}" ; (₾) Georgian lari +dkCurrency["m"] := "{u+20bc}" ; (₼) Azerbaijani manat +dkCurrency["M"] := "{u+20a5}" ; (₥) mill sign +dkCurrency["n"] := "{u+20a6}" ; (₦) Nigerian naira +dkCurrency["N"] := "{u+20bb}" ; (₻) nordic mark +dkCurrency["p"] := "{u+20b1}" ; (₱) Philippine peso +dkCurrency["P"] := "{u+20a7}" ; (₧) Spanish pesetas +dkCurrency["r"] := "{u+20b9}" ; (₹) Indian rupee +dkCurrency["R"] := "{u+20bd}" ; (₽) Russian ruble +dkCurrency["s"] := "{u+20aa}" ; (₪) Israeli new shekel +dkCurrency["S"] := "{u+20b7}" ; (₷) spesmilo +dkCurrency["t"] := "{u+20ae}" ; (₮) Mongolian tögrög (tugrik) +dkCurrency["T"] := "{u+20b8}" ; (₸) Kazakh tenge +dkCurrency["w"] := "{u+20a9}" ; (₩) South Korean won +dkCurrency["W"] := "{u+20a9}" ; (₩) South Korean won +dkCurrency["x"] := "{u+00a4}" ; (¤) currency sign +dkCurrency["X"] := "{u+00a4}" ; (¤) currency sign +dkCurrency[chr(0x00e7)] := "{u+20a2}" ; (ç -> ₢) Brazilian cruzeiro +dkCurrency[chr(0x00c7)] := "{u+20a0}" ; (Ç -> ₠) euro-currency sign +dkCurrency[chr(0x00f8)] := "{u+20a4}" ; (ø -> ₤) lira +dkCurrency[chr(0x00d8)] := "{u+20b6}" ; (Ø -> ₶) livre tournois +dkCurrency[chr(0x00ea)] := "{u+20a8}" ; (ê -> ₨) rupee sign +dkCurrency[chr(0x00ca)] := "{u+20a8}" ; (Ê -> ₨) rupee sign +dkCurrency[" "] := "{u+00a4}" ; (¤) currency sign + + +; Dead Key : Greek Alphabet + +global dkGreekAlphabet := Map() +dkGreekAlphabet["a"] := "{u+03b1}" ; (α) small alpha +dkGreekAlphabet["A"] := "{u+0391}" ; (Α) capital alpha +dkGreekAlphabet["b"] := "{u+03b2}" ; (β) small beta +dkGreekAlphabet["B"] := "{u+0392}" ; (Β) capital beta +dkGreekAlphabet["v"] := "{u+03b2}" ; (β) small beta +dkGreekAlphabet["V"] := "{u+0392}" ; (Β) capital beta +dkGreekAlphabet["g"] := "{u+03b3}" ; (γ) small gamma +dkGreekAlphabet["G"] := "{u+0393}" ; (Γ) capital gamma +dkGreekAlphabet["d"] := "{u+03b4}" ; (δ) small delta +dkGreekAlphabet["D"] := "{u+0394}" ; (Δ) capital delta +dkGreekAlphabet["e"] := "{u+03b5}" ; (ε) small epsilon +dkGreekAlphabet["E"] := "{u+0395}" ; (Ε) capital epsilon +dkGreekAlphabet["z"] := "{u+03b6}" ; (ζ) small zeta +dkGreekAlphabet["Z"] := "{u+0396}" ; (Ζ) capital zeta +dkGreekAlphabet["h"] := "{u+03b7}" ; (η) small eta +dkGreekAlphabet["H"] := "{u+0397}" ; (Η) capital eta +dkGreekAlphabet["j"] := "{u+03b8}" ; (θ) small theta +dkGreekAlphabet["J"] := "{u+0398}" ; (Θ) capital theta +dkGreekAlphabet["i"] := "{u+03b9}" ; (ι) small iota +dkGreekAlphabet["I"] := "{u+0399}" ; (Ι) capital iota +dkGreekAlphabet["k"] := "{u+03ba}" ; (κ) small kappa +dkGreekAlphabet["K"] := "{u+039a}" ; (Κ) capital kappa +dkGreekAlphabet["l"] := "{u+03bb}" ; (λ) small lambda +dkGreekAlphabet["L"] := "{u+039b}" ; (Λ) capital lambda +dkGreekAlphabet["m"] := "{u+03bc}" ; (μ) small mu +dkGreekAlphabet["M"] := "{u+039c}" ; (Μ) capital mu +dkGreekAlphabet["n"] := "{u+03bd}" ; (ν) small nu +dkGreekAlphabet["N"] := "{u+039d}" ; (Ν) capital nu +dkGreekAlphabet["x"] := "{u+03be}" ; (ξ) small xi +dkGreekAlphabet["X"] := "{u+039e}" ; (Ξ) capital xi +dkGreekAlphabet["o"] := "{u+03bf}" ; (ο) small omicron +dkGreekAlphabet["O"] := "{u+039f}" ; (Ο) capital omicron +dkGreekAlphabet["p"] := "{u+03c0}" ; (π) small pi +dkGreekAlphabet["P"] := "{u+03a0}" ; (Π) capital pi +dkGreekAlphabet["r"] := "{u+03c1}" ; (ρ) small rho +dkGreekAlphabet["R"] := "{u+03a1}" ; (Ρ) capital rho +dkGreekAlphabet["s"] := "{u+03c3}" ; (σ) small sigma +dkGreekAlphabet["S"] := "{u+03a3}" ; (Σ) capital sigma +dkGreekAlphabet[","] := "{u+03c2}" ; (ς) small final sigma +dkGreekAlphabet["t"] := "{u+03c4}" ; (τ) small tau +dkGreekAlphabet["T"] := "{u+03a4}" ; (Τ) capital tau +dkGreekAlphabet["u"] := "{u+03c5}" ; (υ) small upsilon +dkGreekAlphabet["U"] := "{u+03a5}" ; (Υ) capital upsilon +dkGreekAlphabet["y"] := "{u+03c5}" ; (υ) small upsilon +dkGreekAlphabet["Y"] := "{u+03a5}" ; (Υ) capital upsilon +dkGreekAlphabet["f"] := "{u+03c6}" ; (φ) small phi +dkGreekAlphabet["F"] := "{u+03a6}" ; (Φ) capital phi +dkGreekAlphabet["c"] := "{u+03c7}" ; (χ) small chi +dkGreekAlphabet["C"] := "{u+03a7}" ; (Χ) capital chi +dkGreekAlphabet["w"] := "{u+03c8}" ; (ψ) small psi +dkGreekAlphabet["W"] := "{u+03a8}" ; (Ψ) capital psi +dkGreekAlphabet["q"] := "{u+03c9}" ; (ω) small omega +dkGreekAlphabet["Q"] := "{u+03a9}" ; (Ω) capital omega +dkGreekAlphabet["1"] := "{u+00b9}" ; (¹) superscript 1 +dkGreekAlphabet["2"] := "{u+00b2}" ; (²) superscript 2 +dkGreekAlphabet["3"] := "{u+00b3}" ; (³) superscript 3 +dkGreekAlphabet["4"] := "{u+2074}" ; (⁴) superscript 4 +dkGreekAlphabet["5"] := "{u+2075}" ; (⁵) superscript 5 +dkGreekAlphabet["6"] := "{u+2076}" ; (⁶) superscript 6 +dkGreekAlphabet["7"] := "{u+2077}" ; (⁷) superscript 7 +dkGreekAlphabet["8"] := "{u+2078}" ; (⁸) superscript 8 +dkGreekAlphabet["9"] := "{u+2079}" ; (⁹) superscript 9 +dkGreekAlphabet["0"] := "{u+2070}" ; (⁰) superscript 0 +dkGreekAlphabet["-"] := "{u+207b}" ; (⁻) superscript - +dkGreekAlphabet["="] := "{u+207c}" ; (⁼) superscript = +dkGreekAlphabet["+"] := "{u+207a}" ; (⁺) superscript + +dkGreekAlphabet["["] := "{u+207d}" ; (⁽) superscript ( +dkGreekAlphabet["]"] := "{u+207e}" ; (⁾) superscript ) +dkGreekAlphabet["!"] := "{u+2081}" ; (₁) subscript 1 +dkGreekAlphabet["@"] := "{u+2082}" ; (₂) subscript 2 +dkGreekAlphabet["#"] := "{u+2083}" ; (₃) subscript 3 +dkGreekAlphabet["$"] := "{u+2084}" ; (₄) subscript 4 +dkGreekAlphabet["%"] := "{u+2085}" ; (₅) subscript 5 +dkGreekAlphabet["^"] := "{u+2086}" ; (₆) subscript 6 +dkGreekAlphabet["&"] := "{u+2087}" ; (₇) subscript 7 +dkGreekAlphabet["*"] := "{u+2088}" ; (₈) subscript 8 +dkGreekAlphabet["("] := "{u+2089}" ; (₉) subscript 9 +dkGreekAlphabet[")"] := "{u+2080}" ; (₀) subscript 0 +dkGreekAlphabet[";"] := "{u+208b}" ; (₋) subscript - +dkGreekAlphabet["'"] := "{u+208c}" ; (₌) subscript = +dkGreekAlphabet[chr(34)] := "{u+208a}" ; (₊) subscript + +dkGreekAlphabet["{"] := "{u+208d}" ; (₍) subscript ( +dkGreekAlphabet["}"] := "{u+208e}" ; (₎) subscript ) +dkGreekAlphabet["."] := "{u+00b5}" ; (µ) micro sign +dkGreekAlphabet[chr(0x00df)] := "{u+03c2}" ; (ß -> ς) small final sigma +dkGreekAlphabet[" "] := "{u+03bc}" ; (μ) small mu + + +; Dead Key : Math Symbols + +global dkMathSymbols := Map() +dkMathSymbols["a"] := "{u+2200}" ; (∀) for all +dkMathSymbols["A"] := "{u+2200}" ; (∀) for all +dkMathSymbols["b"] := "{u+2286}" ; (⊆) subset of or equal to +dkMathSymbols["B"] := "{u+2287}" ; (⊇) superset of or equal to +dkMathSymbols["c"] := "{u+221d}" ; (∝) proportional to +dkMathSymbols["C"] := "{u+2102}" ; (ℂ) complex numbers +dkMathSymbols["d"] := "{u+2206}" ; (∆) increment operator +dkMathSymbols["D"] := "{u+2207}" ; (∇) nabla/del operator +dkMathSymbols["e"] := "{u+2203}" ; (∃) there exists +dkMathSymbols["E"] := "{u+2204}" ; (∄) there does not exist +dkMathSymbols["f"] := "{u+0192}" ; (ƒ) f with hook +dkMathSymbols["F"] := "{u+220e}" ; (∎) end of proof +dkMathSymbols["g"] := "{u+2282}" ; (⊂) subset of +dkMathSymbols["G"] := "{u+2284}" ; (⊄) not a subset of +dkMathSymbols["h"] := "{u+2283}" ; (⊃) superset of +dkMathSymbols["H"] := "{u+2285}" ; (⊅) not a superset of +dkMathSymbols["i"] := "{u+221e}" ; (∞) infinity symbol +dkMathSymbols["I"] := "{u+2111}" ; (ℑ) imaginary numbers +dkMathSymbols["k"] := "{u+220b}" ; (∋) contains as member +dkMathSymbols["K"] := "{u+220c}" ; (∌) does not contain as member +dkMathSymbols["l"] := "{u+2225}" ; (∥) parallel to +dkMathSymbols["L"] := "{u+2226}" ; (∦) not parallel to +dkMathSymbols["m"] := "{u+2208}" ; (∈) element of +dkMathSymbols["M"] := "{u+2209}" ; (∉) not an element of +dkMathSymbols["n"] := "{u+207f}" ; (ⁿ) superscript n +dkMathSymbols["N"] := "{u+2115}" ; (ℕ) natural numbers +dkMathSymbols["o"] := "{u+2218}" ; (∘) ring operator +dkMathSymbols["O"] := "{u+2205}" ; (∅) empty set +dkMathSymbols["p"] := "{u+2202}" ; (∂) partial differential +dkMathSymbols["P"] := "{u+2119}" ; (ℙ) prime numbers +dkMathSymbols["q"] := "{u+211a}" ; (ℚ) rational numbers +dkMathSymbols["Q"] := "{u+211a}" ; (ℚ) rational numbers +dkMathSymbols["r"] := "{u+221a}" ; (√) square root +dkMathSymbols["R"] := "{u+211d}" ; (ℝ) real numbers +dkMathSymbols["s"] := "{u+2229}" ; (∩) set intersection +dkMathSymbols["S"] := "{u+222b}" ; (∫) integral symbol +dkMathSymbols["u"] := "{u+222a}" ; (∪) set union +dkMathSymbols["U"] := "{u+2216}" ; (∖) set minus +dkMathSymbols["w"] := "{u+2118}" ; (℘) Weierstrass elliptic function +dkMathSymbols["W"] := "{u+2118}" ; (℘) Weierstrass elliptic function +dkMathSymbols["z"] := "{u+21af}" ; (↯) downwards zigzag arrow +dkMathSymbols["Z"] := "{u+2124}" ; (ℤ) whole numbers +dkMathSymbols["1"] := "{u+2260}" ; (≠) not equal to +dkMathSymbols["!"] := "{u+2260}" ; (≠) not equal to +dkMathSymbols["2"] := "{u+221a}" ; (√) square root +dkMathSymbols["@"] := "{u+221a}" ; (√) square root +dkMathSymbols["3"] := "{u+221b}" ; (∛) cube root +dkMathSymbols["#"] := "{u+221b}" ; (∛) cube root +dkMathSymbols["4"] := "{u+221c}" ; (∜) fourth root +dkMathSymbols["$"] := "{u+221c}" ; (∜) fourth root +dkMathSymbols["5"] := "{u+2030}" ; (‰) per mille sign +dkMathSymbols["%"] := "{u+2031}" ; (‱) per ten thousand sign +dkMathSymbols["6"] := "{u+2220}" ; (∠) angle symbol +dkMathSymbols["^"] := "{u+2220}" ; (∠) angle symbol +dkMathSymbols["7"] := "{u+2227}" ; (∧) logical and +dkMathSymbols["&"] := "{u+2227}" ; (∧) logical and +dkMathSymbols["8"] := "{u+2297}" ; (⊗) circled times +dkMathSymbols["*"] := "{u+2299}" ; (⊙) circled dot operator +dkMathSymbols["9"] := "{u+221f}" ; (∟) right angle +dkMathSymbols["("] := "{u+221f}" ; (∟) right angle +dkMathSymbols["0"] := "{u+2221}" ; (∡) measured angle +dkMathSymbols[")"] := "{u+2221}" ; (∡) measured angle +dkMathSymbols["``"] := "{u+2248}" ; (≈) almost equal to +dkMathSymbols["~"] := "{u+2248}" ; (≈) almost equal to +dkMathSymbols[","] := "{u+2264}" ; (≤) less-than or equal to +dkMathSymbols["<"] := "{u+2264}" ; (≤) less-than or equal to +dkMathSymbols["."] := "{u+2265}" ; (≥) greater-than or equal to +dkMathSymbols[">"] := "{u+2265}" ; (≥) greater-than or equal to +dkMathSymbols["-"] := "{u+00b1}" ; (±) plus-minus sign +dkMathSymbols["_"] := "{u+2296}" ; (⊖) circled minus +dkMathSymbols["/"] := "{u+2298}" ; (⊘) circled division slash +dkMathSymbols["="] := "{u+225d}" ; (≝) equal to by definition +dkMathSymbols["+"] := "{u+2295}" ; (⊕) circled plus +dkMathSymbols[";"] := "{u+2235}" ; (∵) because sign +dkMathSymbols[":"] := "{u+2234}" ; (∴) therefore sign +dkMathSymbols["'"] := "{u+2032}" ; (′) prime +dkMathSymbols[chr(34)] := "{u+2033}" ; (″) double prime +dkMathSymbols["["] := "{u+2034}" ; (‴) triple prime +dkMathSymbols["]"] := "{u+2057}" ; (⁗) quadruple prime +dkMathSymbols["\"] := "{u+2228}" ; (∨) logical or +dkMathSymbols["|"] := "{u+2228}" ; (∨) logical or +dkMathSymbols[chr(0x00e7)] := "{u+2245}" ; (ç -> ≅) congruent to +dkMathSymbols[chr(0x00c7)] := "{u+2247}" ; (Ç -> ≇) not congruent to +dkMathSymbols[chr(0x00f6)] := "{u+2300}" ; (ö -> ⌀) diameter sign +dkMathSymbols[chr(0x00d6)] := "{u+2300}" ; (Ö -> ⌀) diameter sign +dkMathSymbols[chr(0x00f5)] := "{u+2261}" ; (õ -> ≡) identical to +dkMathSymbols[chr(0x00d5)] := "{u+2262}" ; (Õ -> ≢) not identical to +dkMathSymbols[" "] := "{u+221a}" ; (√) square root + + +fSendSecondChar(char) { +; function for keeping correct operation after dead key press when Scroll Lock is enabled + + if GetKeyState("ScrollLock", "T") { + if (char == "1") + return "!" + else if (char == "2") + return "@" + else if (char == "3") + return "#" + else if (char == "4") + return "$" + else if (char == "5") + return "%" + else if (char == "6") + return "^" + else if (char == "7") + return "&" + else if (char == "8") + return "*" + else if (char == "9") + return "(" + else if (char == "0") + return ")" + else if (char == "!") + return "1" + else if (char == "@") + return "2" + else if (char == "#") + return "3" + else if (char == "$") + return "4" + else if (char == "%") + return "5" + else if (char == "^") + return "6" + else if (char == "&") + return "7" + else if (char == "*") + return "8" + else if (char == "(") + return "9" + else if (char == ")") + return "0" + else + return char + } + else + return char +} + + +; Configuration : Switch positions of symbols and digits with Scroll Lock + +$1:: { + if GetKeyState("ScrollLock", "T") + Send "{!}" ; exclamation mark + else + Send "1" ; digit 1 +} +$+1:: { + if GetKeyState("ScrollLock", "T") + Send "1" ; digit 1 + else + Send "{!}" ; exclamation mark +} + +$2:: { + if GetKeyState("ScrollLock", "T") + Send "@" ; at sign + else + Send "2" ; digit 2 +} +$+2:: { + if GetKeyState("ScrollLock", "T") + Send "2" ; digit 2 + else + Send "@" ; at sign +} + +$3:: { + if GetKeyState("ScrollLock", "T") + Send "{#}" ; number sign + else + Send "3" ; digit 3 +} +$+3:: { + if GetKeyState("ScrollLock", "T") + Send "3" ; digit 3 + else + Send "{#}" ; number sign +} + +$4:: { + if GetKeyState("ScrollLock", "T") + Send "$" ; dollar sign + else + Send "4" ; digit 4 +} +$+4:: { + if GetKeyState("ScrollLock", "T") + Send "4" ; digit 4 + else + Send "$" ; dollar sign +} + +$5:: { + if GetKeyState("ScrollLock", "T") + Send "`%" ; percent sign + else + Send "5" ; digit 5 +} +$+5:: { + if GetKeyState("ScrollLock", "T") + Send "5" ; digit 5 + else + Send "`%" ; percent sign +} + +$6:: { + if GetKeyState("ScrollLock", "T") + Send "{^}" ; circumflex accent + else + Send "6" ; digit 6 +} +$+6:: { + if GetKeyState("ScrollLock", "T") + Send "6" ; digit 6 + else + Send "{^}" ; circumflex accent +} + +$7:: { + if GetKeyState("ScrollLock", "T") + Send "&" ; ampersand + else + Send "7" ; digit 7 +} +$+7:: { + if GetKeyState("ScrollLock", "T") + Send "7" ; digit 7 + else + Send "&" ; ampersand +} + +$8:: { + if GetKeyState("ScrollLock", "T") + Send "*" ; asterisk + else + Send "8" ; digit 8 +} +$+8:: { + if GetKeyState("ScrollLock", "T") + Send "8" ; digit 8 + else + Send "*" ; asterisk +} + +$9:: { + if GetKeyState("ScrollLock", "T") + Send "(" ; left parenthesis + else + Send "9" ; digit 9 +} +$+9:: { + if GetKeyState("ScrollLock", "T") + Send "9" ; digit 9 + else + Send "(" ; left parenthesis +} + +$0:: { + if GetKeyState("ScrollLock", "T") + Send ")" ; right parenthesis + else + Send "0" ; digit 0 +} +$+0:: { + if GetKeyState("ScrollLock", "T") + Send "0" ; digit 0 + else + Send ")" ; right parenthesis +} + + +; Configuration : 'Right Alt' and 'Right Alt + Shift' on US QWERTY + +>!a:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c4}" ; (Ä) A with diaeresis + else + Send "{u+00e4}" ; (ä) a with diaeresis +} +>!+a:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e4}" ; (ä) a with diaeresis + else + Send "{u+00c4}" ; (Ä) A with diaeresis + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey +} + +>!q:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c6}" ; (Æ) letter AE + else + Send "{u+00e6}" ; (æ) letter ae +} +>!+q:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e6}" ; (æ) letter ae + else + Send "{u+00c6}" ; (Æ) letter AE + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey +} + +>!w:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c5}" ; (Å) A with ring above + else + Send "{u+00e5}" ; (å) a with ring above +} +>!+w:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e5}" ; (å) a with ring above + else + Send "{u+00c5}" ; (Å) A with ring above + Send "{blind}{vkE8}" +} + +>!z:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c0}" ; (À) A with grave + else + Send "{u+00e0}" ; (à) a with grave +} +>!+z:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e0}" ; (à) a with grave + else + Send "{u+00c0}" ; (À) A with grave + Send "{blind}{vkE8}" +} + +>!x:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c1}" ; (Á) A with acute + else + Send "{u+00e1}" ; (á) a with acute +} +>!+x:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e1}" ; (á) a with acute + else + Send "{u+00c1}" ; (Á) A with acute + Send "{blind}{vkE8}" +} + +>!d:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c2}" ; (Â) A with circumflex + else + Send "{u+00e2}" ; (â) a with circumflex +} +>!+d:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e2}" ; (â) a with circumflex + else + Send "{u+00c2}" ; (Â) A with circumflex + Send "{blind}{vkE8}" +} + +>!c:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c7}" ; (Ç) C with cedilla + else + Send "{u+00e7}" ; (ç) c with cedilla +} +>!+c:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e7}" ; (ç) c with cedilla + else + Send "{u+00c7}" ; (Ç) C with cedilla + Send "{blind}{vkE8}" +} + +>!e:: { + if GetKeyState("CapsLock", "T") + Send "{u+00cb}" ; (Ë) E with diaeresis + else + Send "{u+00eb}" ; (ë) e with diaeresis +} +>!+e:: { + if GetKeyState("CapsLock", "T") + Send "{u+00eb}" ; (ë) e with diaeresis + else + Send "{u+00cb}" ; (Ë) E with diaeresis + Send "{blind}{vkE8}" +} + +>!f:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c8}" ; (È) E with grave + else + Send "{u+00e8}" ; (è) e with grave +} +>!+f:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e8}" ; (è) e with grave + else + Send "{u+00c8}" ; (È) E with grave + Send "{blind}{vkE8}" +} + +>!g:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c9}" ; (É) E with acute + else + Send "{u+00e9}" ; (é) e with acute +} +>!+g:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e9}" ; (é) e with acute + else + Send "{u+00c9}" ; (É) E with acute + Send "{blind}{vkE8}" +} + +>!r:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ca}" ; (Ê) E with circumflex + else + Send "{u+00ea}" ; (ê) e with circumflex +} +>!+r:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ea}" ; (ê) e with circumflex + else + Send "{u+00ca}" ; (Ê) E with circumflex + Send "{blind}{vkE8}" +} + +>!i:: { + if GetKeyState("CapsLock", "T") + Send "{u+00cf}" ; (Ï) I with diaeresis + else + Send "{u+00ef}" ; (ï) i with diaeresis +} +>!+i:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ef}" ; (ï) i with diaeresis + else + Send "{u+00cf}" ; (Ï) I with diaeresis + Send "{blind}{vkE8}" +} + +>!v:: { + if GetKeyState("CapsLock", "T") + Send "{u+00cc}" ; (Ì) I with grave + else + Send "{u+00ec}" ; (ì) i with grave +} +>!+v:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ec}" ; (ì) i with grave + else + Send "{u+00cc}" ; (Ì) I with grave + Send "{blind}{vkE8}" +} + +>!b:: { + if GetKeyState("CapsLock", "T") + Send "{u+00cd}" ; (Í) I with acute + else + Send "{u+00ed}" ; (í) i with acute +} +>!+b:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ed}" ; (í) i with acute + else + Send "{u+00cd}" ; (Í) I with acute + Send "{blind}{vkE8}" +} + +>!t:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ce}" ; (Î) I with circumflex + else + Send "{u+00ee}" ; (î) i with circumflex +} +>!+t:: { + if GetKeyState("CapsLock", "T") + Send "{u+00ee}" ; (î) i with circumflex + else + Send "{u+00ce}" ; (Î) I with circumflex + Send "{blind}{vkE8}" +} + +>!n:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d1}" ; (Ñ) N with tilde + else + Send "{u+00f1}" ; (ñ) n with tilde +} +>!+n:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f1}" ; (ñ) n with tilde + else + Send "{u+00d1}" ; (Ñ) N with tilde + Send "{blind}{vkE8}" +} + +>!o:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d6}" ; (Ö) O with diaeresis + else + Send "{u+00f6}" ; (ö) o with diaeresis +} +>!+o:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f6}" ; (ö) o with diaeresis + else + Send "{u+00d6}" ; (Ö) O with diaeresis + Send "{blind}{vkE8}" +} + +>!k:: { + if GetKeyState("CapsLock", "T") + Send "{u+0152}" ; (Œ) ligature OE + else + Send "{u+0153}" ; (œ) ligature oe +} +>!+k:: { + if GetKeyState("CapsLock", "T") + Send "{u+0153}" ; (œ) ligature oe + else + Send "{u+0152}" ; (Œ) ligature OE + Send "{blind}{vkE8}" +} + +>!l:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d8}" ; (Ø) O with stroke + else + Send "{u+00f8}" ; (ø) o with stroke +} +>!+l:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f8}" ; (ø) o with stroke + else + Send "{u+00d8}" ; (Ø) O with stroke + Send "{blind}{vkE8}" +} + +>!,:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d2}" ; (Ò) O with grave + else + Send "{u+00f2}" ; (ò) o with grave +} +>!<:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f2}" ; (ò) o with grave + else + Send "{u+00d2}" ; (Ò) O with grave + Send "{blind}{vkE8}" +} + +>!.:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d3}" ; (Ó) O with acute + else + Send "{u+00f3}" ; (ó) o with acute +} +>!>:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f3}" ; (ó) o with acute + else + Send "{u+00d3}" ; (Ó) O with acute + Send "{blind}{vkE8}" +} + +>!p:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d4}" ; (Ô) O with circumflex + else + Send "{u+00f4}" ; (ô) o with circumflex +} +>!+p:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f4}" ; (ô) o with circumflex + else + Send "{u+00d4}" ; (Ô) O with circumflex + Send "{blind}{vkE8}" +} + +>!s:: { + if GetKeyState("CapsLock", "T") + Send "{u+1e9e}" ; (ẞ) capital sharp S (capital Eszett) + else + Send "{u+00df}" ; (ß) small sharp s (Eszett) +} +>!+s:: { + if GetKeyState("CapsLock", "T") + Send "{u+00df}" ; (ß) small sharp s (Eszett) + else + Send "{u+1e9e}" ; (ẞ) capital sharp S (capital Eszett) + Send "{blind}{vkE8}" +} + +>!u:: { + if GetKeyState("CapsLock", "T") + Send "{u+00dc}" ; (Ü) U with diaeresis + else + Send "{u+00fc}" ; (ü) u with diaeresis +} +>!+u:: { + if GetKeyState("CapsLock", "T") + Send "{u+00fc}" ; (ü) u with diaeresis + else + Send "{u+00dc}" ; (Ü) U with diaeresis + Send "{blind}{vkE8}" +} + +>!h:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d9}" ; (Ù) U with grave + else + Send "{u+00f9}" ; (ù) u with grave +} +>!+h:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f9}" ; (ù) u with grave + else + Send "{u+00d9}" ; (Ù) U with grave + Send "{blind}{vkE8}" +} + +>!j:: { + if GetKeyState("CapsLock", "T") + Send "{u+00da}" ; (Ú) U with acute + else + Send "{u+00fa}" ; (ú) u with acute +} +>!+j:: { + if GetKeyState("CapsLock", "T") + Send "{u+00fa}" ; (ú) u with acute + else + Send "{u+00da}" ; (Ú) U with acute + Send "{blind}{vkE8}" +} + +>!y:: { + if GetKeyState("CapsLock", "T") + Send "{u+00db}" ; (Û) U with circumflex + else + Send "{u+00fb}" ; (û) u with circumflex +} +>!+y:: { + if GetKeyState("CapsLock", "T") + Send "{u+00fb}" ; (û) u with circumflex + else + Send "{u+00db}" ; (Û) U with circumflex + Send "{blind}{vkE8}" +} + +>!-:: { + if GetKeyState("CapsLock", "T") + Send "{u+00c3}" ; (Ã) A with tilde + else + Send "{u+00e3}" ; (ã) a with tilde +} +>!_:: { + if GetKeyState("CapsLock", "T") + Send "{u+00e3}" ; (ã) a with tilde + else + Send "{u+00c3}" ; (Ã) A with tilde + Send "{blind}{vkE8}" +} + +>!=:: { + if GetKeyState("CapsLock", "T") + Send "{u+00d5}" ; (Õ) O with tilde + else + Send "{u+00f5}" ; (õ) o with tilde +} +>!+=:: { + if GetKeyState("CapsLock", "T") + Send "{u+00f5}" ; (õ) o with tilde + else + Send "{u+00d5}" ; (Õ) O with tilde + Send "{blind}{vkE8}" +} + +>!1::Send "{u+00a1}" ; (¡) inverted exclamation mark +>!+1:: { + Send "{u+00b9}" ; (¹) superscript 1 + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey +} + +>!2::Send "{u+00a9}" ; (©) copyright sign +>!+2:: { + Send "{u+00b2}" ; (²) superscript 2 + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey +} + +>!3::Send "{u+00a7}" ; (§) section sign +>!+3:: { + Send "{u+00b3}" ; (³) superscript 3 + Send "{blind}{vkE8}" +} + +>!4::Send "{u+00a3}" ; (£) pound sign +>!+4:: { + Send "{u+00a5}" ; (¥) yen sign + Send "{blind}{vkE8}" +} + +>!5::Send "{u+20ac}" ; (€) euro sign +>!+5:: { + Send "{u+00a2}" ; (¢) cent sign (dollar) + Send "{blind}{vkE8}" +} + +>!9::Send "{u+201c}" ; (“) left double quotation mark +>!+9:: { + Send "{u+2018}" ; (‘) left single quotation mark + Send "{blind}{vkE8}" +} + +>!0::Send "{u+201d}" ; (”) right double quotation mark +>!+0:: { + Send "{u+2019}" ; (’) right single quotation mark + Send "{blind}{vkE8}" +} + +>![::Send "{u+00ab}" ; («) left-pointing double angle quotation mark +>!{:: { + Send "{u+2039}" ; (‹) left-pointing single angle quotation mark + Send "{blind}{vkE8}" +} + +>!]::Send "{u+00bb}" ; (») right-pointing double angle quotation mark +>!}:: { + Send "{u+203a}" ; (›) right-pointing single angle quotation mark + Send "{blind}{vkE8}" +} + +>!;::Send "{u+00b0}" ; (°) degree sign +>!+;:: { + Send "{u+00b7}" ; (·) middle dot + Send "{blind}{vkE8}" +} + +>!/::Send "{u+00bf}" ; (¿) inverted question mark +>!?:: { + Send "{u+2026}" ; (…) horizontal ellipsis + Send "{blind}{vkE8}" +} + +>!space::Send "{u+00a0}" ; non-breaking space +>!+space:: { + Send "{u+00a0}" ; non-breaking space + Send "{blind}{vkE8}" +} + + +; Configuration : Dead Keys on 'Right Alt' and 'Right Alt + Shift' + +>!6:: { + Send "{blind}{vkE8}" ; suppresses circles around mouse pointer + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkCircumflex.Has(fSendSecondChar(ih.Input)) + Send dkCircumflex[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey (for second character with 'Right Alt + Shift') +} +>!+6:: { + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkCaron.Has(fSendSecondChar(ih.Input)) + Send dkCaron[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey (for second character with 'Right Alt + Shift') +} + +>!7:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkDotAbove.Has(fSendSecondChar(ih.Input)) + Send dkDotAbove[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} +>!+7:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkMacronStroke.Has(fSendSecondChar(ih.Input)) + Send dkMacronStroke[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} + +>!8:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkCedillaOgonek.Has(fSendSecondChar(ih.Input)) + Send dkCedillaOgonek[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} +>!+8:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkBreveSpecial.Has(fSendSecondChar(ih.Input)) + Send dkBreveSpecial[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} + +>!':: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkAcuteAccent.Has(fSendSecondChar(ih.Input)) + Send dkAcuteAccent[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} +>!":: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkDiaeresis.Has(fSendSecondChar(ih.Input)) + Send dkDiaeresis[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} + +>!`:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkGraveAccent.Has(fSendSecondChar(ih.Input)) + Send dkGraveAccent[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} +>!~:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkTilde.Has(fSendSecondChar(ih.Input)) + Send dkTilde[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} + +>!\:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkSymbols.Has(fSendSecondChar(ih.Input)) + Send dkSymbols[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} +>!|:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkCurrency.Has(fSendSecondChar(ih.Input)) + Send dkCurrency[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} + +>!m:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkGreekAlphabet.Has(fSendSecondChar(ih.Input)) + Send dkGreekAlphabet[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} +>!+m:: { + Send "{blind}{vkE8}" + ih := InputHook("L1", dkEndKeys) + ih.Start() + ih.Wait() + if dkMathSymbols.Has(fSendSecondChar(ih.Input)) + Send dkMathSymbols[fSendSecondChar(ih.Input)] + Send "{blind}{vkE8}" +} -- 2.47.3 From 03a914e7bbd385b073862c4ac42390d202170efb Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:16:31 +0100 Subject: [PATCH 07/16] Delete UltimateKEYS (for AutoHotkey v2.0-beta.3).ahk --- ...imateKEYS (for AutoHotkey v2.0-beta.3).ahk | 1529 ----------------- 1 file changed, 1529 deletions(-) delete mode 100644 autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0-beta.3).ahk diff --git a/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0-beta.3).ahk b/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0-beta.3).ahk deleted file mode 100644 index 00bac84..0000000 --- a/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0-beta.3).ahk +++ /dev/null @@ -1,1529 +0,0 @@ -; UltimateKEYS (for AutoHotkey v2.0-beta.3).ahk - 2021-10-28 - -; Created by : Pieter Degroote - -; License : GNU General Public License Version 3 - -; GitHub : https://github.com/pieter-degroote/UltimateKEYS - - -; Requirements : - -; Keyboard layout (on Windows OS) : US QWERTY - -; Tested with : AutoHotkey v2.0-beta.3 (https://www.autohotkey.com/) - - - -ListLines False ; omits recently executed lines from history (for privacy and security) -KeyHistory 0 ; disables the key history (for privacy and security) - -SendMode "Event" ; allows chaining of customized key combinations - -global dkEndKeys := "{bs}{del}{esc}{home}{end}" ; ends dead key input on specific keys - - -; Dead Key : Circumflex Accent - -global dkCircumflex := Map() -dkCircumflex["a"] := "{u+0203}" ; (ȃ) a with inverted breve -dkCircumflex["A"] := "{u+0202}" ; (Ȃ) A with inverted breve -dkCircumflex["c"] := "{u+0109}" ; (ĉ) c with circumflex -dkCircumflex["C"] := "{u+0108}" ; (Ĉ) C with circumflex -dkCircumflex["e"] := "{u+0207}" ; (ȇ) e with inverted breve -dkCircumflex["E"] := "{u+0206}" ; (Ȇ) E with inverted breve -dkCircumflex["g"] := "{u+011d}" ; (ĝ) g with circumflex -dkCircumflex["G"] := "{u+011c}" ; (Ĝ) G with circumflex -dkCircumflex["h"] := "{u+0125}" ; (ĥ) h with circumflex -dkCircumflex["H"] := "{u+0124}" ; (Ĥ) H with circumflex -dkCircumflex["i"] := "{u+020b}" ; (ȋ) i with inverted breve -dkCircumflex["I"] := "{u+020a}" ; (Ȋ) I with inverted breve -dkCircumflex["j"] := "{u+0135}" ; (ĵ) j with circumflex -dkCircumflex["J"] := "{u+0134}" ; (Ĵ) J with circumflex -dkCircumflex["o"] := "{u+020f}" ; (ȏ) o with inverted breve -dkCircumflex["O"] := "{u+020e}" ; (Ȏ) O with inverted breve -dkCircumflex["r"] := "{u+0213}" ; (ȓ) r with inverted breve -dkCircumflex["R"] := "{u+0212}" ; (Ȓ) R with inverted breve -dkCircumflex["s"] := "{u+015d}" ; (ŝ) s with circumflex -dkCircumflex["S"] := "{u+015c}" ; (Ŝ) S with circumflex -dkCircumflex["u"] := "{u+0217}" ; (ȗ) u with inverted breve -dkCircumflex["U"] := "{u+0216}" ; (Ȗ) U with inverted breve -dkCircumflex["w"] := "{u+0175}" ; (ŵ) w with circumflex -dkCircumflex["W"] := "{u+0174}" ; (Ŵ) W with circumflex -dkCircumflex["y"] := "{u+0177}" ; (ŷ) y with circumflex -dkCircumflex["Y"] := "{u+0176}" ; (Ŷ) Y with circumflex -dkCircumflex["z"] := "{u+1e91}" ; (ẑ) z with circumflex -dkCircumflex["Z"] := "{u+1e90}" ; (Ẑ) Z with circumflex -dkCircumflex["1"] := "{u+21d9}" ; (⇙) south west double arrow -dkCircumflex["2"] := "{u+21d3}" ; (⇓) downwards double arrow -dkCircumflex["3"] := "{u+21d8}" ; (⇘) south east double arrow -dkCircumflex["4"] := "{u+21d0}" ; (⇐) leftwards double arrow -dkCircumflex["5"] := "{u+21d5}" ; (⇕) up down double arrow -dkCircumflex["6"] := "{u+21d2}" ; (⇒) rightwards double arrow -dkCircumflex["7"] := "{u+21d6}" ; (⇖) north west double arrow -dkCircumflex["8"] := "{u+21d1}" ; (⇑) upwards double arrow -dkCircumflex["9"] := "{u+21d7}" ; (⇗) north east double arrow -dkCircumflex["0"] := "{u+21d4}" ; (⇔) left right double arrow -dkCircumflex["!"] := "{u+21d9}" ; (⇙) south west double arrow -dkCircumflex["@"] := "{u+21d3}" ; (⇓) downwards double arrow -dkCircumflex["#"] := "{u+21d8}" ; (⇘) south east double arrow -dkCircumflex["$"] := "{u+21d0}" ; (⇐) leftwards double arrow -dkCircumflex["%"] := "{u+21d5}" ; (⇕) up down double arrow -dkCircumflex["^"] := "{u+21d2}" ; (⇒) rightwards double arrow -dkCircumflex["&"] := "{u+21d6}" ; (⇖) north west double arrow -dkCircumflex["*"] := "{u+21d1}" ; (⇑) upwards double arrow -dkCircumflex["("] := "{u+21d7}" ; (⇗) north east double arrow -dkCircumflex[")"] := "{u+21d4}" ; (⇔) left right double arrow -dkCircumflex[" "] := "{^}" ; circumflex accent - - -; Dead Key : Caron - -global dkCaron := Map() -dkCaron["a"] := "{u+01ce}" ; (ǎ) a with caron -dkCaron["A"] := "{u+01cd}" ; (Ǎ) A with caron -dkCaron["c"] := "{u+010d}" ; (č) c with caron -dkCaron["C"] := "{u+010c}" ; (Č) C with caron -dkCaron["d"] := "{u+010f}" ; (ď) d with caron -dkCaron["D"] := "{u+010e}" ; (Ď) D with caron -dkCaron["e"] := "{u+011b}" ; (ě) e with caron -dkCaron["E"] := "{u+011a}" ; (Ě) E with caron -dkCaron["g"] := "{u+01e7}" ; (ǧ) g with caron -dkCaron["G"] := "{u+01e6}" ; (Ǧ) G with caron -dkCaron["h"] := "{u+021f}" ; (ȟ) h with caron -dkCaron["H"] := "{u+021e}" ; (Ȟ) H with caron -dkCaron["i"] := "{u+01d0}" ; (ǐ) i with caron -dkCaron["I"] := "{u+01cf}" ; (Ǐ) I with caron -dkCaron["j"] := "{u+01f0}" ; (ǰ) j with caron -dkCaron["k"] := "{u+01e9}" ; (ǩ) k with caron -dkCaron["K"] := "{u+01e8}" ; (Ǩ) K with caron -dkCaron["l"] := "{u+013e}" ; (ľ) l with caron -dkCaron["L"] := "{u+013d}" ; (Ľ) L with caron -dkCaron["n"] := "{u+0148}" ; (ň) n with caron -dkCaron["N"] := "{u+0147}" ; (Ň) N with caron -dkCaron["o"] := "{u+01d2}" ; (ǒ) o with caron -dkCaron["O"] := "{u+01d1}" ; (Ǒ) O with caron -dkCaron["r"] := "{u+0159}" ; (ř) r with caron -dkCaron["R"] := "{u+0158}" ; (Ř) R with caron -dkCaron["s"] := "{u+0161}" ; (š) s with caron -dkCaron["S"] := "{u+0160}" ; (Š) S with caron -dkCaron["t"] := "{u+0165}" ; (ť) t with caron -dkCaron["T"] := "{u+0164}" ; (Ť) T with caron -dkCaron["u"] := "{u+01d4}" ; (ǔ) u with caron -dkCaron["U"] := "{u+01d3}" ; (Ǔ) U with caron -dkCaron["v"] := "{u+01da}" ; (ǚ) u with diaeresis and caron -dkCaron["V"] := "{u+01d9}" ; (Ǚ) U with diaeresis and caron -dkCaron["z"] := "{u+017e}" ; (ž) z with caron -dkCaron["Z"] := "{u+017d}" ; (Ž) Z with caron -dkCaron["3"] := "{u+01ef}" ; (ǯ) small letter ezh with caron -dkCaron["#"] := "{u+01ee}" ; (Ǯ) capital letter ezh with caron -dkCaron["2"] := "{u+25bc}" ; (▼) black down-pointing triangle -dkCaron["@"] := "{u+25bd}" ; (▽) white down-pointing triangle -dkCaron["4"] := "{u+25c0}" ; (◀) black left-pointing triangle -dkCaron["$"] := "{u+25c1}" ; (◁) white left-pointing triangle -dkCaron["6"] := "{u+25b6}" ; (▶) black right-pointing triangle -dkCaron["^"] := "{u+25b7}" ; (▷) white right-pointing triangle -dkCaron["8"] := "{u+25b2}" ; (▲) black up-pointing triangle -dkCaron["*"] := "{u+25b3}" ; (△) white up-pointing triangle -dkCaron[" "] := "{u+02c7}" ; (ˇ) caron - - -; Dead Key : Dot Above - -global dkDotAbove := Map() -dkDotAbove["a"] := "{u+0227}" ; (ȧ) a with dot above -dkDotAbove["A"] := "{u+0226}" ; (Ȧ) A with dot above -dkDotAbove["b"] := "{u+1e03}" ; (ḃ) b with dot above -dkDotAbove["B"] := "{u+1e02}" ; (Ḃ) B with dot above -dkDotAbove["c"] := "{u+010b}" ; (ċ) c with dot above -dkDotAbove["C"] := "{u+010a}" ; (Ċ) C with dot above -dkDotAbove["d"] := "{u+1e0b}" ; (ḋ) d with dot above -dkDotAbove["D"] := "{u+1e0a}" ; (Ḋ) D with dot above -dkDotAbove["e"] := "{u+0117}" ; (ė) e with dot above -dkDotAbove["E"] := "{u+0116}" ; (Ė) E with dot above -dkDotAbove["f"] := "{u+1e1f}" ; (ḟ) f with dot above -dkDotAbove["F"] := "{u+1e1e}" ; (Ḟ) F with dot above -dkDotAbove["g"] := "{u+0121}" ; (ġ) g with dot above -dkDotAbove["G"] := "{u+0120}" ; (Ġ) G with dot above -dkDotAbove["h"] := "{u+1e23}" ; (ḣ) h with dot above -dkDotAbove["H"] := "{u+1e22}" ; (Ḣ) H with dot above -dkDotAbove["i"] := "{u+0131}" ; (ı) dotless i (Turkish, Azerbaijani) -dkDotAbove["I"] := "{u+0130}" ; (İ) I with dot above (Turkish, Azerbaijani) -dkDotAbove["j"] := "{u+0237}" ; (ȷ) dotless j -dkDotAbove["l"] := "{u+0140}" ; (ŀ) l with middle dot -dkDotAbove["L"] := "{u+013f}" ; (Ŀ) L with middle dot -dkDotAbove["m"] := "{u+1e41}" ; (ṁ) m with dot above -dkDotAbove["M"] := "{u+1e40}" ; (Ṁ) M with dot above -dkDotAbove["n"] := "{u+1e45}" ; (ṅ) n with dot above -dkDotAbove["N"] := "{u+1e44}" ; (Ṅ) N with dot above -dkDotAbove["o"] := "{u+022f}" ; (ȯ) o with dot above -dkDotAbove["O"] := "{u+022e}" ; (Ȯ) O with dot above -dkDotAbove["p"] := "{u+1e57}" ; (ṗ) p with dot above -dkDotAbove["P"] := "{u+1e56}" ; (Ṗ) P with dot above -dkDotAbove["r"] := "{u+1e59}" ; (ṙ) r with dot above -dkDotAbove["R"] := "{u+1e58}" ; (Ṙ) R with dot above -dkDotAbove["s"] := "{u+1e61}" ; (ṡ) s with dot above -dkDotAbove["S"] := "{u+1e60}" ; (Ṡ) S with dot above -dkDotAbove["t"] := "{u+1e6b}" ; (ṫ) t with dot above -dkDotAbove["T"] := "{u+1e6a}" ; (Ṫ) T with dot above -dkDotAbove["u"] := "{u+016f}" ; (ů) u with ring above -dkDotAbove["U"] := "{u+016e}" ; (Ů) U with ring above -dkDotAbove["w"] := "{u+1e87}" ; (ẇ) w with dot above -dkDotAbove["W"] := "{u+1e86}" ; (Ẇ) W with dot above -dkDotAbove["x"] := "{u+1e8b}" ; (ẋ) x with dot above -dkDotAbove["X"] := "{u+1e8a}" ; (Ẋ) X with dot above -dkDotAbove["y"] := "{u+1e8f}" ; (ẏ) y with dot above -dkDotAbove["Y"] := "{u+1e8e}" ; (Ẏ) Y with dot above -dkDotAbove["z"] := "{u+017c}" ; (ż) z with dot above -dkDotAbove["Z"] := "{u+017b}" ; (Ż) Z with dot above -dkDotAbove["1"] := "{u+2199}" ; (↙) south west arrow -dkDotAbove["2"] := "{u+2193}" ; (↓) downwards arrow -dkDotAbove["3"] := "{u+2198}" ; (↘) south east arrow -dkDotAbove["4"] := "{u+2190}" ; (←) leftwards arrow -dkDotAbove["5"] := "{u+2195}" ; (↕) up down arrow -dkDotAbove["6"] := "{u+2192}" ; (→) rightwards arrow -dkDotAbove["7"] := "{u+2196}" ; (↖) north west arrow -dkDotAbove["8"] := "{u+2191}" ; (↑) upwards arrow -dkDotAbove["9"] := "{u+2197}" ; (↗) north east arrow -dkDotAbove["0"] := "{u+2194}" ; (↔) left right arrow -dkDotAbove["!"] := "{u+2199}" ; (↙) south west arrow -dkDotAbove["@"] := "{u+2193}" ; (↓) downwards arrow -dkDotAbove["#"] := "{u+2198}" ; (↘) south east arrow -dkDotAbove["$"] := "{u+2190}" ; (←) leftwards arrow -dkDotAbove["%"] := "{u+2195}" ; (↕) up down arrow -dkDotAbove["^"] := "{u+2192}" ; (→) rightwards arrow -dkDotAbove["&"] := "{u+2196}" ; (↖) north west arrow -dkDotAbove["*"] := "{u+2191}" ; (↑) upwards arrow -dkDotAbove["("] := "{u+2197}" ; (↗) north east arrow -dkDotAbove[")"] := "{u+2194}" ; (↔) left right arrow -dkDotAbove[chr(0x00e5)] := "{u+1e98}" ; (å -> ẘ) w with ring above -dkDotAbove[chr(0x00fb)] := "{u+1e99}" ; (û -> ẙ) y with ring above -dkDotAbove[" "] := "{u+02d9}" ; (˙) dot above - - -; Dead Key : Macron/Stroke - -global dkMacronStroke := Map() -dkMacronStroke["a"] := "{u+0101}" ; (ā) a with macron -dkMacronStroke["A"] := "{u+0100}" ; (Ā) A with macron -dkMacronStroke["b"] := "{u+0180}" ; (ƀ) b with stroke -dkMacronStroke["B"] := "{u+0243}" ; (Ƀ) B with stroke -dkMacronStroke["d"] := "{u+0111}" ; (đ) d with stroke -dkMacronStroke["D"] := "{u+0110}" ; (Đ) D with stroke -dkMacronStroke["e"] := "{u+0113}" ; (ē) e with macron -dkMacronStroke["E"] := "{u+0112}" ; (Ē) E with macron -dkMacronStroke["g"] := "{u+01e5}" ; (ǥ) g with stroke (Skolt Sami) -dkMacronStroke["G"] := "{u+01e4}" ; (Ǥ) G with stroke (Skolt Sami) -dkMacronStroke["h"] := "{u+0127}" ; (ħ) h with stroke (Maltese) -dkMacronStroke["H"] := "{u+0126}" ; (Ħ) H with stroke (Maltese) -dkMacronStroke["i"] := "{u+012b}" ; (ī) i with macron -dkMacronStroke["I"] := "{u+012a}" ; (Ī) I with macron -dkMacronStroke["j"] := "{u+0249}" ; (ɉ) j with stroke -dkMacronStroke["J"] := "{u+0248}" ; (Ɉ) J with stroke -dkMacronStroke["l"] := "{u+0142}" ; (ł) l with stroke -dkMacronStroke["L"] := "{u+0141}" ; (Ł) L with stroke -dkMacronStroke["o"] := "{u+014d}" ; (ō) o with macron -dkMacronStroke["O"] := "{u+014c}" ; (Ō) O with macron -dkMacronStroke["p"] := "{u+1d7d}" ; (ᵽ) p with stroke -dkMacronStroke["P"] := "{u+2c63}" ; (Ᵽ) P with stroke -dkMacronStroke["r"] := "{u+024d}" ; (ɍ) r with stroke -dkMacronStroke["R"] := "{u+024c}" ; (Ɍ) R with stroke -dkMacronStroke["t"] := "{u+0167}" ; (ŧ) t with stroke -dkMacronStroke["T"] := "{u+0166}" ; (Ŧ) T with stroke -dkMacronStroke["u"] := "{u+016b}" ; (ū) u with macron -dkMacronStroke["U"] := "{u+016a}" ; (Ū) U with macron -dkMacronStroke["y"] := "{u+0233}" ; (ȳ) y with macron -dkMacronStroke["Y"] := "{u+0232}" ; (Ȳ) Y with macron -dkMacronStroke["z"] := "{u+01b6}" ; (ƶ) z with stroke -dkMacronStroke["Z"] := "{u+01b5}" ; (Ƶ) Z with stroke -dkMacronStroke["1"] := "{u+21b2}" ; (↲) downwards arrow with tip leftwards -dkMacronStroke["2"] := "{u+21f5}" ; (⇵) downwards arrow leftwards of upwards arrow -dkMacronStroke["3"] := "{u+21b3}" ; (↳) downwards arrow with tip rightwards -dkMacronStroke["4"] := "{u+21c6}" ; (⇆) leftwards arrow over rightwards arrow -dkMacronStroke["5"] := "{u+21a8}" ; (↨) up down arrow with base -dkMacronStroke["6"] := "{u+21c4}" ; (⇄) rightwards arrow over leftwards arrow -dkMacronStroke["7"] := "{u+21b0}" ; (↰) upwards arrow with tip leftwards -dkMacronStroke["8"] := "{u+21c5}" ; (⇅) upwards arrow leftwards of downwards arrow -dkMacronStroke["9"] := "{u+21b1}" ; (↱) upwards arrow with tip rightwards -dkMacronStroke["0"] := "{u+21b9}" ; (↹) leftwards arrow to bar over rightwards arrow to bar -dkMacronStroke["!"] := "{u+21b2}" ; (↲) downwards arrow with tip leftwards -dkMacronStroke["@"] := "{u+21f5}" ; (⇵) downwards arrow leftwards of upwards arrow -dkMacronStroke["#"] := "{u+21b3}" ; (↳) downwards arrow with tip rightwards -dkMacronStroke["$"] := "{u+21c6}" ; (⇆) leftwards arrow over rightwards arrow -dkMacronStroke["%"] := "{u+21a8}" ; (↨) up down arrow with base -dkMacronStroke["^"] := "{u+21c4}" ; (⇄) rightwards arrow over leftwards arrow -dkMacronStroke["&"] := "{u+21b0}" ; (↰) upwards arrow with tip leftwards -dkMacronStroke["*"] := "{u+21c5}" ; (⇅) upwards arrow leftwards of downwards arrow -dkMacronStroke["("] := "{u+21b1}" ; (↱) upwards arrow with tip rightwards -dkMacronStroke[")"] := "{u+21b9}" ; (↹) leftwards arrow to bar over rightwards arrow to bar -dkMacronStroke[chr(0x00e6)] := "{u+01e3}" ; (æ -> ǣ) ae with macron -dkMacronStroke[chr(0x00c6)] := "{u+01e2}" ; (Æ -> Ǣ) AE with macron -dkMacronStroke[chr(0x00e9)] := "{u+1e21}" ; (é -> ḡ) g with macron -dkMacronStroke[chr(0x00c9)] := "{u+1e20}" ; (É -> Ḡ) G with macron -dkMacronStroke[chr(0x00ef)] := "{u+0268}" ; (ï -> ɨ) i with stroke -dkMacronStroke[chr(0x00cf)] := "{u+0197}" ; (Ï -> Ɨ) I with stroke -dkMacronStroke[chr(0x00f8)] := "{u+019a}" ; (ø -> ƚ) l with bar -dkMacronStroke[chr(0x00d8)] := "{u+023d}" ; (Ø -> Ƚ) L with bar -dkMacronStroke[chr(0x00f6)] := "{u+01ed}" ; (ö -> ǭ) o with ogonek and macron -dkMacronStroke[chr(0x00d6)] := "{u+01ec}" ; (Ö -> Ǭ) O with ogonek and macron -dkMacronStroke[chr(0x00fc)] := "{u+0289}" ; (ü -> ʉ) u with bar -dkMacronStroke[chr(0x00dc)] := "{u+0244}" ; (Ü -> Ʉ) U with bar -dkMacronStroke[chr(0x00fb)] := "{u+024f}" ; (û -> ɏ) y with stroke -dkMacronStroke[chr(0x00db)] := "{u+024e}" ; (Û -> Ɏ) Y with stroke -dkMacronStroke[" "] := "{u+00af}" ; (¯) macron - - -; Dead Key : Cedilla/Ogonek - -global dkCedillaOgonek := Map() -dkCedillaOgonek["a"] := "{u+0105}" ; (ą) a with ogonek -dkCedillaOgonek["A"] := "{u+0104}" ; (Ą) A with ogonek -dkCedillaOgonek["c"] := "{u+00e7}" ; (ç) c with cedilla -dkCedillaOgonek["C"] := "{u+00c7}" ; (Ç) C with cedilla -dkCedillaOgonek["d"] := "{u+1e11}" ; (ḑ) d with cedilla -dkCedillaOgonek["D"] := "{u+1e10}" ; (Ḑ) D with cedilla -dkCedillaOgonek["e"] := "{u+0119}" ; (ę) e with ogonek -dkCedillaOgonek["E"] := "{u+0118}" ; (Ę) E with ogonek -dkCedillaOgonek["g"] := "{u+0123}" ; (ģ) g with cedilla -dkCedillaOgonek["G"] := "{u+0122}" ; (Ģ) G with cedilla -dkCedillaOgonek["h"] := "{u+1e29}" ; (ḩ) h with cedilla -dkCedillaOgonek["H"] := "{u+1e28}" ; (Ḩ) H with cedilla -dkCedillaOgonek["i"] := "{u+012f}" ; (į) i with ogonek -dkCedillaOgonek["I"] := "{u+012e}" ; (Į) I with ogonek -dkCedillaOgonek["k"] := "{u+0137}" ; (ķ) k with cedilla -dkCedillaOgonek["K"] := "{u+0136}" ; (Ķ) K with cedilla -dkCedillaOgonek["l"] := "{u+013c}" ; (ļ) l with cedilla -dkCedillaOgonek["L"] := "{u+013b}" ; (Ļ) L with cedilla -dkCedillaOgonek["n"] := "{u+0146}" ; (ņ) n with cedilla -dkCedillaOgonek["N"] := "{u+0145}" ; (Ņ) N with cedilla -dkCedillaOgonek["o"] := "{u+01eb}" ; (ǫ) o with ogonek -dkCedillaOgonek["O"] := "{u+01ea}" ; (Ǫ) O with ogonek -dkCedillaOgonek["r"] := "{u+0157}" ; (ŗ) r with cedilla -dkCedillaOgonek["R"] := "{u+0156}" ; (Ŗ) R with cedilla -dkCedillaOgonek["s"] := "{u+015f}" ; (ş) s with cedilla -dkCedillaOgonek["S"] := "{u+015e}" ; (Ş) S with cedilla -dkCedillaOgonek["t"] := "{u+0163}" ; (ţ) t with cedilla -dkCedillaOgonek["T"] := "{u+0162}" ; (Ţ) T with cedilla -dkCedillaOgonek["u"] := "{u+0173}" ; (ų) u with ogonek -dkCedillaOgonek["U"] := "{u+0172}" ; (Ų) U with ogonek -dkCedillaOgonek["1"] := "{u+2013}" ; (–) en dash -dkCedillaOgonek["2"] := "{u+2014}" ; (—) em dash -dkCedillaOgonek["3"] := "{u+2015}" ; (―) horizontal bar -dkCedillaOgonek["4"] := "{u+2010}" ; (‐) hyphen -dkCedillaOgonek["9"] := "{u+2012}" ; (‒) figure dash -dkCedillaOgonek["0"] := "{u+00ad}" ; (­) soft hyphen -dkCedillaOgonek["!"] := "{u+2013}" ; (–) en dash -dkCedillaOgonek["@"] := "{u+2014}" ; (—) em dash -dkCedillaOgonek["#"] := "{u+2015}" ; (―) horizontal bar -dkCedillaOgonek["$"] := "{u+2010}" ; (‐) hyphen -dkCedillaOgonek["("] := "{u+2012}" ; (‒) figure dash -dkCedillaOgonek[")"] := "{u+00ad}" ; (­) soft hyphen -dkCedillaOgonek["-"] := "{u+2011}" ; (‑) non-breaking hyphen -dkCedillaOgonek["."] := "{u+02db}" ; (˛) ogonek -dkCedillaOgonek[chr(0x00eb)] := "{u+0229}" ; (ë -> ȩ) e with cedilla -dkCedillaOgonek[chr(0x00cb)] := "{u+0228}" ; (Ë -> Ȩ) E with cedilla -dkCedillaOgonek[chr(0x00f6)] := "{u+01ed}" ; (ö -> ǭ) o with ogonek and macron -dkCedillaOgonek[chr(0x00d6)] := "{u+01ec}" ; (Ö -> Ǭ) O with ogonek and macron -dkCedillaOgonek[" "] := "{u+00b8}" ; (¸) cedilla - - -; Dead Key : Breve/Special - -global dkBreveSpecial := Map() -dkBreveSpecial["a"] := "{u+0103}" ; (ă) a with breve -dkBreveSpecial["A"] := "{u+0102}" ; (Ă) A with breve -dkBreveSpecial["c"] := "{u+0188}" ; (ƈ) c with hook -dkBreveSpecial["C"] := "{u+0187}" ; (Ƈ) C with hook -dkBreveSpecial["d"] := "{u+0256}" ; (ɖ) small letter d with tail -dkBreveSpecial["D"] := "{u+0189}" ; (Ɖ) capital letter African D -dkBreveSpecial["e"] := "{u+0115}" ; (ĕ) e with breve -dkBreveSpecial["E"] := "{u+0114}" ; (Ĕ) E with breve -dkBreveSpecial["f"] := "{u+0259}" ; (ə) small letter schwa (Azerbaijani) -dkBreveSpecial["F"] := "{u+018f}" ; (Ə) capital letter schwa (Azerbaijani) -dkBreveSpecial["g"] := "{u+011f}" ; (ğ) g with breve -dkBreveSpecial["G"] := "{u+011e}" ; (Ğ) G with breve -dkBreveSpecial["h"] := "{u+a727}" ; (ꜧ) small letter heng -dkBreveSpecial["H"] := "{u+a726}" ; (Ꜧ) capital letter heng -dkBreveSpecial["i"] := "{u+012d}" ; (ĭ) i with breve -dkBreveSpecial["I"] := "{u+012c}" ; (Ĭ) I with breve -dkBreveSpecial["j"] := "{u+0133}" ; (ij) ligature ij -dkBreveSpecial["J"] := "{u+0132}" ; (IJ) ligature IJ -dkBreveSpecial["k"] := "{u+0199}" ; (ƙ) k with hook -dkBreveSpecial["K"] := "{u+0198}" ; (Ƙ) K with hook -dkBreveSpecial["m"] := "{u+0271}" ; (ɱ) m with hook -dkBreveSpecial["M"] := "{u+2c6e}" ; (Ɱ) M with hook -dkBreveSpecial["n"] := "{u+014b}" ; (ŋ) small letter eng(ma) -dkBreveSpecial["N"] := "{u+014a}" ; (Ŋ) capital letter eng(ma) -dkBreveSpecial["o"] := "{u+014f}" ; (ŏ) o with breve -dkBreveSpecial["O"] := "{u+014e}" ; (Ŏ) O with breve -dkBreveSpecial["p"] := "{u+01a5}" ; (ƥ) p with hook -dkBreveSpecial["P"] := "{u+01a4}" ; (Ƥ) P with hook -dkBreveSpecial["r"] := "{u+027d}" ; (ɽ) r with tail -dkBreveSpecial["R"] := "{u+2c64}" ; (Ɽ) R with tail -dkBreveSpecial["s"] := "{u+0219}" ; (ș) s with comma below (Romanian) -dkBreveSpecial["S"] := "{u+0218}" ; (Ș) S with comma below (Romanian) -dkBreveSpecial["t"] := "{u+021b}" ; (ț) t with comma below (Romanian) -dkBreveSpecial["T"] := "{u+021a}" ; (Ț) T with comma below (Romanian) -dkBreveSpecial["u"] := "{u+016d}" ; (ŭ) u with breve -dkBreveSpecial["U"] := "{u+016c}" ; (Ŭ) U with breve -dkBreveSpecial["v"] := "{u+028a}" ; (ʊ) latin small letter upsilon -dkBreveSpecial["V"] := "{u+01b1}" ; (Ʊ) latin capital letter upsilon -dkBreveSpecial["w"] := "{u+01bf}" ; (ƿ) small letter wynn -dkBreveSpecial["W"] := "{u+01f7}" ; (Ƿ) capital letter wynn -dkBreveSpecial["y"] := "{u+021d}" ; (ȝ) small letter yogh -dkBreveSpecial["Y"] := "{u+021c}" ; (Ȝ) capital letter yogh -dkBreveSpecial["z"] := "{u+0225}" ; (ȥ) z with hook -dkBreveSpecial["Z"] := "{u+0224}" ; (Ȥ) Z with hook -dkBreveSpecial["3"] := "{u+0292}" ; (ʒ) small letter ezh -dkBreveSpecial["#"] := "{u+01b7}" ; (Ʒ) capital letter ezh -dkBreveSpecial[chr(0x00e4)] := "{u+0252}" ; (ä -> ɒ) latin small letter turned alpha -dkBreveSpecial[chr(0x00c4)] := "{u+2c70}" ; (Ä -> Ɒ) latin capital letter turned alpha -dkBreveSpecial[chr(0x00eb)] := "{u+01dd}" ; (ë -> ǝ) small turned e -dkBreveSpecial[chr(0x00cb)] := "{u+018e}" ; (Ë -> Ǝ) capital reversed E -dkBreveSpecial[chr(0x00e9)] := "{u+0263}" ; (é -> ɣ) latin small gamma -dkBreveSpecial[chr(0x00c9)] := "{u+0194}" ; (É -> Ɣ) latin capital gamma -dkBreveSpecial[chr(0x00f1)] := "{u+0272}" ; (ñ -> ɲ) n with left hook -dkBreveSpecial[chr(0x00d1)] := "{u+019d}" ; (Ñ -> Ɲ) N with left hook -dkBreveSpecial[chr(0x00f6)] := "{u+0254}" ; (ö -> ɔ) small open o -dkBreveSpecial[chr(0x00d6)] := "{u+0186}" ; (Ö -> Ɔ) capital open O -dkBreveSpecial[chr(0x00e5)] := "{u+2c73}" ; (å -> ⱳ) w with hook -dkBreveSpecial[chr(0x00c5)] := "{u+2c72}" ; (Å -> Ⱳ) W with hook -dkBreveSpecial[" "] := "{u+02d8}" ; (˘) breve - - -; Dead Key : Acute Accent - -global dkAcuteAccent := Map() -dkAcuteAccent["a"] := "{u+0251}" ; (ɑ) latin small letter alpha -dkAcuteAccent["A"] := "{u+2c6d}" ; (Ɑ) latin capital letter alpha -dkAcuteAccent["b"] := "{u+0253}" ; (ɓ) b with hook -dkAcuteAccent["B"] := "{u+0181}" ; (Ɓ) B with hook -dkAcuteAccent["c"] := "{u+0107}" ; (ć) c with acute -dkAcuteAccent["C"] := "{u+0106}" ; (Ć) C with acute -dkAcuteAccent["d"] := "{u+0257}" ; (ɗ) d with hook -dkAcuteAccent["D"] := "{u+018a}" ; (Ɗ) D with hook -dkAcuteAccent["e"] := "{u+025b}" ; (ɛ) small letter open e (latin small epsilon) -dkAcuteAccent["E"] := "{u+0190}" ; (Ɛ) capital letter open E (latin capital epsilon) -dkAcuteAccent["f"] := "{u+0192}" ; (ƒ) f with hook -dkAcuteAccent["F"] := "{u+0191}" ; (Ƒ) F with hook -dkAcuteAccent["g"] := "{u+01f5}" ; (ǵ) g with acute -dkAcuteAccent["G"] := "{u+01f4}" ; (Ǵ) G with acute -dkAcuteAccent["h"] := "{u+0266}" ; (ɦ) h with hook -dkAcuteAccent["H"] := "{u+a7aa}" ; (Ɦ) H with hook -dkAcuteAccent["i"] := "{u+0269}" ; (ɩ) latin small letter iota -dkAcuteAccent["I"] := "{u+0196}" ; (Ɩ) latin capital letter iota -dkAcuteAccent["j"] := "{u+0133}" ; (ij) ligature ij -dkAcuteAccent["J"] := "{u+0132}" ; (IJ) ligature IJ -dkAcuteAccent["k"] := "{u+1e31}" ; (ḱ) k with acute -dkAcuteAccent["K"] := "{u+1e30}" ; (Ḱ) K with acute -dkAcuteAccent["l"] := "{u+013a}" ; (ĺ) l with acute -dkAcuteAccent["L"] := "{u+0139}" ; (Ĺ) L with acute -dkAcuteAccent["m"] := "{u+1e3f}" ; (ḿ) m with acute -dkAcuteAccent["M"] := "{u+1e3e}" ; (Ḿ) M with acute -dkAcuteAccent["n"] := "{u+0144}" ; (ń) n with acute -dkAcuteAccent["N"] := "{u+0143}" ; (Ń) N with acute -dkAcuteAccent["o"] := "{u+0151}" ; (ő) o with double acute -dkAcuteAccent["O"] := "{u+0150}" ; (Ő) O with double acute -dkAcuteAccent["p"] := "{u+1e55}" ; (ṕ) p with acute -dkAcuteAccent["P"] := "{u+1e54}" ; (Ṕ) P with acute -dkAcuteAccent["q"] := "{u+024b}" ; (ɋ) q with hook tail -dkAcuteAccent["Q"] := "{u+024a}" ; (Ɋ) Q with hook tail -dkAcuteAccent["r"] := "{u+0155}" ; (ŕ) r with acute -dkAcuteAccent["R"] := "{u+0154}" ; (Ŕ) R with acute -dkAcuteAccent["s"] := "{u+015b}" ; (ś) s with acute -dkAcuteAccent["S"] := "{u+015a}" ; (Ś) S with acute -dkAcuteAccent["t"] := "{u+01ad}" ; (ƭ) t with hook -dkAcuteAccent["T"] := "{u+01ac}" ; (Ƭ) T with hook -dkAcuteAccent["u"] := "{u+0171}" ; (ű) u with double acute -dkAcuteAccent["U"] := "{u+0170}" ; (Ű) U with double acute -dkAcuteAccent["v"] := "{u+028b}" ; (ʋ) v with hook -dkAcuteAccent["V"] := "{u+01b2}" ; (Ʋ) V with hook -dkAcuteAccent["w"] := "{u+1e83}" ; (ẃ) w with acute -dkAcuteAccent["W"] := "{u+1e82}" ; (Ẃ) W with acute -dkAcuteAccent["y"] := "{u+00fd}" ; (ý) y with acute -dkAcuteAccent["Y"] := "{u+00dd}" ; (Ý) Y with acute -dkAcuteAccent["z"] := "{u+017a}" ; (ź) z with acute -dkAcuteAccent["Z"] := "{u+0179}" ; (Ź) Z with acute -dkAcuteAccent["2"] := "{u+266b}" ; (♫) beamed eighth notes -dkAcuteAccent["3"] := "{u+2042}" ; (⁂) asterism -dkAcuteAccent["4"] := "{u+2605}" ; (★) black star -dkAcuteAccent["5"] := "{u+2606}" ; (☆) white star -dkAcuteAccent["6"] := "{u+273d}" ; (✽) heavy teardrop-spoked asterisk -dkAcuteAccent["7"] := "{u+273b}" ; (✻) teardrop-spoked asterisk -dkAcuteAccent["8"] := "{u+266a}" ; (♪) eighth note -dkAcuteAccent["9"] := "{u+2706}" ; (✆) telephone location sign -dkAcuteAccent["0"] := "{u+2709}" ; (✉) envelope -dkAcuteAccent["@"] := "{u+266b}" ; (♫) beamed eighth notes -dkAcuteAccent["#"] := "{u+2042}" ; (⁂) asterism -dkAcuteAccent["$"] := "{u+2605}" ; (★) black star -dkAcuteAccent["%"] := "{u+2606}" ; (☆) white star -dkAcuteAccent["^"] := "{u+273d}" ; (✽) heavy teardrop-spoked asterisk -dkAcuteAccent["&"] := "{u+273b}" ; (✻) teardrop-spoked asterisk -dkAcuteAccent["*"] := "{u+266a}" ; (♪) eighth note -dkAcuteAccent["("] := "{u+2706}" ; (✆) telephone location sign -dkAcuteAccent[")"] := "{u+2709}" ; (✉) envelope -dkAcuteAccent[chr(0x00e5)] := "{u+01fb}" ; (å -> ǻ) a with ring above and acute -dkAcuteAccent[chr(0x00c5)] := "{u+01fa}" ; (Å -> Ǻ) A with ring above and acute -dkAcuteAccent[chr(0x00e6)] := "{u+01fd}" ; (æ -> ǽ) ae with acute -dkAcuteAccent[chr(0x00c6)] := "{u+01fc}" ; (Æ -> Ǽ) AE with acute -dkAcuteAccent[chr(0x00f8)] := "{u+01ff}" ; (ø -> ǿ) o with stroke and acute -dkAcuteAccent[chr(0x00d8)] := "{u+01fe}" ; (Ø -> Ǿ) O with stroke and acute -dkAcuteAccent[chr(0x00e7)] := "{u+1e09}" ; (ç -> ḉ) c with cedilla and acute -dkAcuteAccent[chr(0x00c7)] := "{u+1e08}" ; (Ç -> Ḉ) C with cedilla and acute -dkAcuteAccent[chr(0x00e9)] := "{u+0260}" ; (é -> ɠ) g with hook -dkAcuteAccent[chr(0x00c9)] := "{u+0193}" ; (É -> Ɠ) G with hook -dkAcuteAccent[chr(0x00ec)] := "{u+028c}" ; (ì -> ʌ) latin small letter turned v -dkAcuteAccent[chr(0x00cc)] := "{u+0245}" ; (Ì -> Ʌ) latin capital letter turned V -dkAcuteAccent[chr(0x00fb)] := "{u+01b4}" ; (û -> ƴ) y with hook -dkAcuteAccent[chr(0x00db)] := "{u+01b3}" ; (Û -> Ƴ) Y with hook -dkAcuteAccent[chr(0x00f6)] := "{u+01a1}" ; (ö -> ơ) o with horn -dkAcuteAccent[chr(0x00d6)] := "{u+01a0}" ; (Ö -> Ơ) O with horn -dkAcuteAccent[chr(0x00fc)] := "{u+01b0}" ; (ü -> ư) u with horn -dkAcuteAccent[chr(0x00dc)] := "{u+01af}" ; (Ü -> Ư) U with horn -dkAcuteAccent[" "] := "{u+00b4}" ; (´) acute accent - - -; Dead Key : Diaeresis - -global dkDiaeresis := Map() -dkDiaeresis["a"] := "{u+00e4}" ; (ä) a with diaeresis -dkDiaeresis["A"] := "{u+00c4}" ; (Ä) A with diaeresis -dkDiaeresis["e"] := "{u+00eb}" ; (ë) e with diaeresis -dkDiaeresis["E"] := "{u+00cb}" ; (Ë) E with diaeresis -dkDiaeresis["h"] := "{u+1e27}" ; (ḧ) h with diaeresis -dkDiaeresis["H"] := "{u+1e26}" ; (Ḧ) H with diaeresis -dkDiaeresis["i"] := "{u+00ef}" ; (ï) i with diaeresis -dkDiaeresis["I"] := "{u+00cf}" ; (Ï) I with diaeresis -dkDiaeresis["o"] := "{u+00f6}" ; (ö) o with diaeresis -dkDiaeresis["O"] := "{u+00d6}" ; (Ö) O with diaeresis -dkDiaeresis["s"] := "{u+0283}" ; (ʃ) small letter esh -dkDiaeresis["S"] := "{u+01a9}" ; (Ʃ) capital letter esh -dkDiaeresis["t"] := "{u+1e97}" ; (ẗ) t with diaeresis -dkDiaeresis["u"] := "{u+00fc}" ; (ü) u with diaeresis -dkDiaeresis["U"] := "{u+00dc}" ; (Ü) U with diaeresis -dkDiaeresis["w"] := "{u+1e85}" ; (ẅ) w with diaeresis -dkDiaeresis["W"] := "{u+1e84}" ; (Ẅ) W with diaeresis -dkDiaeresis["x"] := "{u+1e8d}" ; (ẍ) x with diaeresis -dkDiaeresis["X"] := "{u+1e8c}" ; (Ẍ) X with diaeresis -dkDiaeresis["y"] := "{u+00ff}" ; (ÿ) y with diaeresis -dkDiaeresis["Y"] := "{u+0178}" ; (Ÿ) Y with diaeresis -dkDiaeresis[" "] := "{u+00a8}" ; (¨) diaeresis - - -; Dead Key : Grave Accent - -global dkGraveAccent := Map() -dkGraveAccent["a"] := "{u+0201}" ; (ȁ) a with double grave -dkGraveAccent["A"] := "{u+0200}" ; (Ȁ) A with double grave -dkGraveAccent["d"] := "{u+00f0}" ; (ð) small letter eth -dkGraveAccent["D"] := "{u+00d0}" ; (Ð) capital letter eth -dkGraveAccent["e"] := "{u+0205}" ; (ȅ) e with double grave -dkGraveAccent["E"] := "{u+0204}" ; (Ȅ) E with double grave -dkGraveAccent["i"] := "{u+0209}" ; (ȉ) i with double grave -dkGraveAccent["I"] := "{u+0208}" ; (Ȉ) I with double grave -dkGraveAccent["n"] := "{u+01f9}" ; (ǹ) n with grave -dkGraveAccent["N"] := "{u+01f8}" ; (Ǹ) N with grave -dkGraveAccent["o"] := "{u+020d}" ; (ȍ) o with double grave -dkGraveAccent["O"] := "{u+020c}" ; (Ȍ) O with double grave -dkGraveAccent["r"] := "{u+0211}" ; (ȑ) r with double grave -dkGraveAccent["R"] := "{u+0210}" ; (Ȑ) R with double grave -dkGraveAccent["t"] := "{u+00fe}" ; (þ) small letter thorn -dkGraveAccent["T"] := "{u+00de}" ; (Þ) capital letter thorn -dkGraveAccent["u"] := "{u+0215}" ; (ȕ) u with double grave -dkGraveAccent["U"] := "{u+0214}" ; (Ȕ) U with double grave -dkGraveAccent["w"] := "{u+1e81}" ; (ẁ) w with grave -dkGraveAccent["W"] := "{u+1e80}" ; (Ẁ) W with grave -dkGraveAccent["y"] := "{u+1ef3}" ; (ỳ) y with grave -dkGraveAccent["Y"] := "{u+1ef2}" ; (Ỳ) Y with grave -dkGraveAccent["c"] := "{u+2663}" ; (♣) black club suit -dkGraveAccent["C"] := "{u+2667}" ; (♧) white club suit -dkGraveAccent["h"] := "{u+2665}" ; (♥) black heart suit -dkGraveAccent["H"] := "{u+2661}" ; (♡) white heart suit -dkGraveAccent["m"] := "{u+2666}" ; (♦) black diamond suit -dkGraveAccent["M"] := "{u+2662}" ; (♢) white diamond suit -dkGraveAccent["s"] := "{u+2660}" ; (♠) black spade suit -dkGraveAccent["S"] := "{u+2664}" ; (♤) white spade suit -dkGraveAccent["1"] := "{u+2002}" ; en space -dkGraveAccent["2"] := "{u+2003}" ; em space -dkGraveAccent["3"] := "{u+2004}" ; three-per-em space -dkGraveAccent["4"] := "{u+2005}" ; four-per-em space -dkGraveAccent["5"] := "{u+2008}" ; punctuation space -dkGraveAccent["6"] := "{u+2006}" ; six-per-em space -dkGraveAccent["7"] := "{u+2009}" ; thin space -dkGraveAccent["8"] := "{u+200a}" ; hair space -dkGraveAccent["9"] := "{u+2007}" ; figure space -dkGraveAccent["0"] := "{u+200b}" ; zero-width space -dkGraveAccent["!"] := "{u+2002}" ; en space -dkGraveAccent["@"] := "{u+2003}" ; em space -dkGraveAccent["#"] := "{u+2004}" ; three-per-em space -dkGraveAccent["$"] := "{u+2005}" ; four-per-em space -dkGraveAccent["%"] := "{u+2008}" ; punctuation space -dkGraveAccent["^"] := "{u+2006}" ; six-per-em space -dkGraveAccent["&"] := "{u+2009}" ; thin space -dkGraveAccent["*"] := "{u+200a}" ; hair space -dkGraveAccent["("] := "{u+2007}" ; figure space -dkGraveAccent[")"] := "{u+200b}" ; zero-width space -dkGraveAccent["-"] := "{u+00a0}" ; non-breaking space -dkGraveAccent["="] := "{u+202f}" ; narrow no-break space -dkGraveAccent[" "] := "``" ; grave accent - - -; Dead Key : Tilde - -global dkTilde := Map() -dkTilde["a"] := "{u+00e3}" ; (ã) a with tilde -dkTilde["A"] := "{u+00c3}" ; (Ã) A with tilde -dkTilde["e"] := "{u+1ebd}" ; (ẽ) e with tilde -dkTilde["E"] := "{u+1ebc}" ; (Ẽ) E with tilde -dkTilde["i"] := "{u+0129}" ; (ĩ) i with tilde -dkTilde["I"] := "{u+0128}" ; (Ĩ) I with tilde -dkTilde["l"] := "{u+026b}" ; (ɫ) l with middle tilde -dkTilde["L"] := "{u+2c62}" ; (Ɫ) L with middle tilde -dkTilde["n"] := "{u+00f1}" ; (ñ) n with tilde -dkTilde["N"] := "{u+00d1}" ; (Ñ) N with tilde -dkTilde["o"] := "{u+00f5}" ; (õ) o with tilde -dkTilde["O"] := "{u+00d5}" ; (Õ) O with tilde -dkTilde["u"] := "{u+0169}" ; (ũ) u with tilde -dkTilde["U"] := "{u+0168}" ; (Ũ) U with tilde -dkTilde["v"] := "{u+1e7d}" ; (ṽ) v with tilde -dkTilde["V"] := "{u+1e7c}" ; (Ṽ) V with tilde -dkTilde["y"] := "{u+1ef9}" ; (ỹ) y with tilde -dkTilde["Y"] := "{u+1ef8}" ; (Ỹ) Y with tilde -dkTilde["g"] := "{u+ab36}" ; (ꬶ) cross-tailed g -dkTilde["h"] := "{u+0267}" ; (ɧ) small letter heng with hook -dkTilde["k"] := "{u+0138}" ; (ĸ) small letter kra -dkTilde["s"] := "{u+017f}" ; (ſ) small long s -dkTilde["1"] := "{u+2000}" ; en quad -dkTilde["2"] := "{u+2001}" ; em quad -dkTilde["!"] := "{u+2000}" ; en quad -dkTilde["@"] := "{u+2001}" ; em quad -dkTilde[" "] := "~" ; tilde - - -; Dead Key : General Symbols - -global dkSymbols := Map() -dkSymbols["a"] := "{u+00aa}" ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) -dkSymbols["A"] := "{u+00aa}" ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) -dkSymbols["b"] := "{u+2022}" ; (•) bullet -dkSymbols["B"] := "{u+25e6}" ; (◦) white bullet -dkSymbols["c"] := "{u+2105}" ; (℅) care of -dkSymbols["C"] := "{u+2105}" ; (℅) care of -dkSymbols["d"] := "{u+2020}" ; (†) dagger -dkSymbols["D"] := "{u+2021}" ; (‡) double dagger -dkSymbols["e"] := "{u+212e}" ; (℮) estimated symbol -dkSymbols["E"] := "{u+2709}" ; (✉) envelope -dkSymbols["f"] := "{u+2640}" ; (♀) Venus symbol (female) -dkSymbols["F"] := "{u+2640}" ; (♀) Venus symbol (female) -dkSymbols["h"] := "{u+2766}" ; (❦) floral heart -dkSymbols["H"] := "{u+2767}" ; (❧) rotated floral heart bullet -dkSymbols["i"] := "{u+22c4}" ; (⋄) diamond operator -dkSymbols["I"] := "{u+22c4}" ; (⋄) diamond operator -dkSymbols["l"] := "{u+2113}" ; (ℓ) script small l -dkSymbols["L"] := "{u+2112}" ; (ℒ) Laplace transform -dkSymbols["m"] := "{u+2642}" ; (♂) Mars symbol (male) -dkSymbols["M"] := "{u+2642}" ; (♂) Mars symbol (male) -dkSymbols["n"] := "{u+00ac}" ; (¬) not sign -dkSymbols["N"] := "{u+00ac}" ; (¬) not sign -dkSymbols["o"] := "{u+00ba}" ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) -dkSymbols["O"] := "{u+00ba}" ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) -dkSymbols["p"] := "{u+00b6}" ; (¶) pilcrow sign -dkSymbols["P"] := "{u+2117}" ; (℗) sound recording copyright -dkSymbols["q"] := "{u+201e}" ; („) double low-9 quotation mark -dkSymbols["Q"] := "{u+201a}" ; (‚) single low-9 quotation mark -dkSymbols["r"] := "{u+00ae}" ; (®) registered sign -dkSymbols["R"] := "{u+2619}" ; (☙) reversed rotated floral heart bullet -dkSymbols["s"] := "{u+2120}" ; (℠) service mark -dkSymbols["S"] := "{u+2120}" ; (℠) service mark -dkSymbols["t"] := "{u+2122}" ; (™) trademark symbol -dkSymbols["T"] := "{u+2706}" ; (✆) telephone location sign -dkSymbols["u"] := "{u+2610}" ; (☐) ballot box -dkSymbols["U"] := "{u+2610}" ; (☐) ballot box -dkSymbols["v"] := "{u+2713}" ; (✓) check mark -dkSymbols["V"] := "{u+2714}" ; (✔) heavy check mark -dkSymbols["x"] := "{u+2717}" ; (✗) ballot x -dkSymbols["X"] := "{u+2718}" ; (✘) heavy ballot x -dkSymbols["y"] := "{u+2611}" ; (☑) ballot box with check -dkSymbols["Y"] := "{u+2612}" ; (☒) ballot box with x -dkSymbols["1"] := "{u+2116}" ; (№) numero sign -dkSymbols["2"] := "{u+00bd}" ; (½) vulgar fraction 1/2 -dkSymbols["3"] := "{u+2153}" ; (⅓) vulgar fraction 1/3 -dkSymbols["4"] := "{u+00bc}" ; (¼) vulgar fraction 1/4 -dkSymbols["5"] := "{u+2154}" ; (⅔) vulgar fraction 2/3 -dkSymbols["6"] := "{u+00be}" ; (¾) vulgar fraction 3/4 -dkSymbols["7"] := "{u+215b}" ; (⅛) vulgar fraction 1/8 -dkSymbols["8"] := "{u+215c}" ; (⅜) vulgar fraction 3/8 -dkSymbols["9"] := "{u+215d}" ; (⅝) vulgar fraction 5/8 -dkSymbols["0"] := "{u+215e}" ; (⅞) vulgar fraction 7/8 -dkSymbols["!"] := "{u+2116}" ; (№) numero sign -dkSymbols["@"] := "{u+00bd}" ; (½) vulgar fraction 1/2 -dkSymbols["#"] := "{u+2153}" ; (⅓) vulgar fraction 1/3 -dkSymbols["$"] := "{u+00bc}" ; (¼) vulgar fraction 1/4 -dkSymbols["%"] := "{u+2154}" ; (⅔) vulgar fraction 2/3 -dkSymbols["^"] := "{u+00be}" ; (¾) vulgar fraction 3/4 -dkSymbols["&"] := "{u+215b}" ; (⅛) vulgar fraction 1/8 -dkSymbols["*"] := "{u+215c}" ; (⅜) vulgar fraction 3/8 -dkSymbols["("] := "{u+215d}" ; (⅝) vulgar fraction 5/8 -dkSymbols[")"] := "{u+215e}" ; (⅞) vulgar fraction 7/8 -dkSymbols["-"] := "{u+2043}" ; (⁃) hyphen bullet -dkSymbols["_"] := "{u+2023}" ; (‣) triangular bullet -dkSymbols["="] := "{u+00d7}" ; (×) multiplication sign -dkSymbols["+"] := "{u+00f7}" ; (÷) division sign -dkSymbols[";"] := "{u+263a}" ; (☺) white smiling face -dkSymbols[":"] := "{u+263b}" ; (☻) black smiling face -dkSymbols["/"] := "{u+203c}" ; (‼) double exclamation mark -dkSymbols["?"] := "{u+203d}" ; (‽) interrobang -dkSymbols["\"] := "{u+205e}" ; (⁞) vertical four dots -dkSymbols["|"] := "{u+00a6}" ; (¦) broken bar -dkSymbols[chr(0x00e4)] := "{u+214d}" ; (ä -> ⅍) aktieselskab -dkSymbols[chr(0x00c4)] := "{u+214d}" ; (Ä -> ⅍) aktieselskab -dkSymbols[chr(0x00f6)] := "{u+2126}" ; (ö -> Ω) ohm sign (backwards compatibility) -dkSymbols[chr(0x00d6)] := "{u+2126}" ; (Ö -> Ω) ohm sign (backwards compatibility) -dkSymbols[chr(0x00bf)] := "{u+2e18}" ; (¿ -> ⸘) inverted interrobang -dkSymbols[chr(0x2026)] := "{u+2e2e}" ; (… -> ⸮) reversed question mark -dkSymbols[" "] := "{u+00d7}" ; (×) multiplication sign - - -; Dead Key : Currency - -global dkCurrency := Map() -dkCurrency["a"] := "{u+20b3}" ; (₳) Argentine austral -dkCurrency["A"] := "{u+20b3}" ; (₳) Argentine austral -dkCurrency["b"] := "{u+20bf}" ; (₿) bitcoin -dkCurrency["B"] := "{u+20bf}" ; (₿) bitcoin -dkCurrency["c"] := "{u+20a1}" ; (₡) Costa Rican colón -dkCurrency["C"] := "{u+20b5}" ; (₵) Ghanaian cedi -dkCurrency["d"] := "{u+20ab}" ; (₫) Vietnamese dong -dkCurrency["D"] := "{u+20af}" ; (₯) Greek drachma -dkCurrency["f"] := "{u+20a3}" ; (₣) French franc -dkCurrency["F"] := "{u+20a3}" ; (₣) French franc -dkCurrency["g"] := "{u+20b2}" ; (₲) Paraguayan guaraní -dkCurrency["G"] := "{u+20b2}" ; (₲) Paraguayan guaraní -dkCurrency["h"] := "{u+20b4}" ; (₴) Ukrainian hryvnia -dkCurrency["H"] := "{u+20b4}" ; (₴) Ukrainian hryvnia -dkCurrency["k"] := "{u+20ad}" ; (₭) Laotian kip -dkCurrency["K"] := "{u+20ad}" ; (₭) Laotian kip -dkCurrency["l"] := "{u+20ba}" ; (₺) Turkish lira -dkCurrency["L"] := "{u+20be}" ; (₾) Georgian lari -dkCurrency["m"] := "{u+20bc}" ; (₼) Azerbaijani manat -dkCurrency["M"] := "{u+20a5}" ; (₥) mill sign -dkCurrency["n"] := "{u+20a6}" ; (₦) Nigerian naira -dkCurrency["N"] := "{u+20a6}" ; (₦) Nigerian naira -dkCurrency["p"] := "{u+20b1}" ; (₱) Philippine peso -dkCurrency["P"] := "{u+20b1}" ; (₱) Philippine peso -dkCurrency["r"] := "{u+20b9}" ; (₹) Indian rupee -dkCurrency["R"] := "{u+20bd}" ; (₽) Russian ruble -dkCurrency["s"] := "{u+20aa}" ; (₪) Israeli new shekel -dkCurrency["S"] := "{u+20b7}" ; (₷) spesmilo -dkCurrency["t"] := "{u+20ae}" ; (₮) Mongolian tögrög (tugrik) -dkCurrency["T"] := "{u+20b8}" ; (₸) Kazakh tenge -dkCurrency["w"] := "{u+20a9}" ; (₩) South Korean won -dkCurrency["W"] := "{u+20a9}" ; (₩) South Korean won -dkCurrency["x"] := "{u+00a4}" ; (¤) currency sign -dkCurrency["X"] := "{u+00a4}" ; (¤) currency sign -dkCurrency[chr(0x00e7)] := "{u+20a2}" ; (ç -> ₢) Brazilian cruzeiro -dkCurrency[chr(0x00c7)] := "{u+20a2}" ; (Ç -> ₢) Brazilian cruzeiro -dkCurrency[chr(0x00f8)] := "{u+20a4}" ; (ø -> ₤) lira -dkCurrency[chr(0x00d8)] := "{u+20b6}" ; (Ø -> ₶) livre tournois -dkCurrency[" "] := "{u+00a4}" ; (¤) currency sign - - -; Dead Key : Greek Alphabet - -global dkGreekAlphabet := Map() -dkGreekAlphabet["a"] := "{u+03b1}" ; (α) small alpha -dkGreekAlphabet["A"] := "{u+0391}" ; (Α) capital alpha -dkGreekAlphabet["b"] := "{u+03b2}" ; (β) small beta -dkGreekAlphabet["B"] := "{u+0392}" ; (Β) capital beta -dkGreekAlphabet["v"] := "{u+03b2}" ; (β) small beta -dkGreekAlphabet["V"] := "{u+0392}" ; (Β) capital beta -dkGreekAlphabet["g"] := "{u+03b3}" ; (γ) small gamma -dkGreekAlphabet["G"] := "{u+0393}" ; (Γ) capital gamma -dkGreekAlphabet["d"] := "{u+03b4}" ; (δ) small delta -dkGreekAlphabet["D"] := "{u+0394}" ; (Δ) capital delta -dkGreekAlphabet["e"] := "{u+03b5}" ; (ε) small epsilon -dkGreekAlphabet["E"] := "{u+0395}" ; (Ε) capital epsilon -dkGreekAlphabet["z"] := "{u+03b6}" ; (ζ) small zeta -dkGreekAlphabet["Z"] := "{u+0396}" ; (Ζ) capital zeta -dkGreekAlphabet["h"] := "{u+03b7}" ; (η) small eta -dkGreekAlphabet["H"] := "{u+0397}" ; (Η) capital eta -dkGreekAlphabet["j"] := "{u+03b8}" ; (θ) small theta -dkGreekAlphabet["J"] := "{u+0398}" ; (Θ) capital theta -dkGreekAlphabet["i"] := "{u+03b9}" ; (ι) small iota -dkGreekAlphabet["I"] := "{u+0399}" ; (Ι) capital iota -dkGreekAlphabet["k"] := "{u+03ba}" ; (κ) small kappa -dkGreekAlphabet["K"] := "{u+039a}" ; (Κ) capital kappa -dkGreekAlphabet["l"] := "{u+03bb}" ; (λ) small lambda -dkGreekAlphabet["L"] := "{u+039b}" ; (Λ) capital lambda -dkGreekAlphabet["m"] := "{u+03bc}" ; (μ) small mu -dkGreekAlphabet["M"] := "{u+039c}" ; (Μ) capital mu -dkGreekAlphabet["n"] := "{u+03bd}" ; (ν) small nu -dkGreekAlphabet["N"] := "{u+039d}" ; (Ν) capital nu -dkGreekAlphabet["x"] := "{u+03be}" ; (ξ) small xi -dkGreekAlphabet["X"] := "{u+039e}" ; (Ξ) capital xi -dkGreekAlphabet["o"] := "{u+03bf}" ; (ο) small omicron -dkGreekAlphabet["O"] := "{u+039f}" ; (Ο) capital omicron -dkGreekAlphabet["p"] := "{u+03c0}" ; (π) small pi -dkGreekAlphabet["P"] := "{u+03a0}" ; (Π) capital pi -dkGreekAlphabet["r"] := "{u+03c1}" ; (ρ) small rho -dkGreekAlphabet["R"] := "{u+03a1}" ; (Ρ) capital rho -dkGreekAlphabet["s"] := "{u+03c3}" ; (σ) small sigma -dkGreekAlphabet["S"] := "{u+03a3}" ; (Σ) capital sigma -dkGreekAlphabet[","] := "{u+03c2}" ; (ς) small final sigma -dkGreekAlphabet["t"] := "{u+03c4}" ; (τ) small tau -dkGreekAlphabet["T"] := "{u+03a4}" ; (Τ) capital tau -dkGreekAlphabet["u"] := "{u+03c5}" ; (υ) small upsilon -dkGreekAlphabet["U"] := "{u+03a5}" ; (Υ) capital upsilon -dkGreekAlphabet["y"] := "{u+03c5}" ; (υ) small upsilon -dkGreekAlphabet["Y"] := "{u+03a5}" ; (Υ) capital upsilon -dkGreekAlphabet["f"] := "{u+03c6}" ; (φ) small phi -dkGreekAlphabet["F"] := "{u+03a6}" ; (Φ) capital phi -dkGreekAlphabet["c"] := "{u+03c7}" ; (χ) small chi -dkGreekAlphabet["C"] := "{u+03a7}" ; (Χ) capital chi -dkGreekAlphabet["w"] := "{u+03c8}" ; (ψ) small psi -dkGreekAlphabet["W"] := "{u+03a8}" ; (Ψ) capital psi -dkGreekAlphabet["q"] := "{u+03c9}" ; (ω) small omega -dkGreekAlphabet["Q"] := "{u+03a9}" ; (Ω) capital omega -dkGreekAlphabet["1"] := "{u+00b9}" ; (¹) superscript 1 -dkGreekAlphabet["2"] := "{u+00b2}" ; (²) superscript 2 -dkGreekAlphabet["3"] := "{u+00b3}" ; (³) superscript 3 -dkGreekAlphabet["4"] := "{u+2074}" ; (⁴) superscript 4 -dkGreekAlphabet["5"] := "{u+2075}" ; (⁵) superscript 5 -dkGreekAlphabet["6"] := "{u+2076}" ; (⁶) superscript 6 -dkGreekAlphabet["7"] := "{u+2077}" ; (⁷) superscript 7 -dkGreekAlphabet["8"] := "{u+2078}" ; (⁸) superscript 8 -dkGreekAlphabet["9"] := "{u+2079}" ; (⁹) superscript 9 -dkGreekAlphabet["0"] := "{u+2070}" ; (⁰) superscript 0 -dkGreekAlphabet["-"] := "{u+207b}" ; (⁻) superscript - -dkGreekAlphabet["="] := "{u+207c}" ; (⁼) superscript = -dkGreekAlphabet["+"] := "{u+207a}" ; (⁺) superscript + -dkGreekAlphabet["["] := "{u+207d}" ; (⁽) superscript ( -dkGreekAlphabet["]"] := "{u+207e}" ; (⁾) superscript ) -dkGreekAlphabet["!"] := "{u+2081}" ; (₁) subscript 1 -dkGreekAlphabet["@"] := "{u+2082}" ; (₂) subscript 2 -dkGreekAlphabet["#"] := "{u+2083}" ; (₃) subscript 3 -dkGreekAlphabet["$"] := "{u+2084}" ; (₄) subscript 4 -dkGreekAlphabet["%"] := "{u+2085}" ; (₅) subscript 5 -dkGreekAlphabet["^"] := "{u+2086}" ; (₆) subscript 6 -dkGreekAlphabet["&"] := "{u+2087}" ; (₇) subscript 7 -dkGreekAlphabet["*"] := "{u+2088}" ; (₈) subscript 8 -dkGreekAlphabet["("] := "{u+2089}" ; (₉) subscript 9 -dkGreekAlphabet[")"] := "{u+2080}" ; (₀) subscript 0 -dkGreekAlphabet[";"] := "{u+208b}" ; (₋) subscript - -dkGreekAlphabet["'"] := "{u+208c}" ; (₌) subscript = -dkGreekAlphabet[chr(34)] := "{u+208a}" ; (₊) subscript + -dkGreekAlphabet["{"] := "{u+208d}" ; (₍) subscript ( -dkGreekAlphabet["}"] := "{u+208e}" ; (₎) subscript ) -dkGreekAlphabet["."] := "{u+00b5}" ; (µ) micro sign -dkGreekAlphabet[chr(0x00df)] := "{u+03c2}" ; (ß -> ς) small final sigma -dkGreekAlphabet[" "] := "{u+03bc}" ; (μ) small mu - - -; Dead Key : Math Symbols - -global dkMathSymbols := Map() -dkMathSymbols["a"] := "{u+2200}" ; (∀) for all -dkMathSymbols["A"] := "{u+2200}" ; (∀) for all -dkMathSymbols["b"] := "{u+2286}" ; (⊆) subset of or equal to -dkMathSymbols["B"] := "{u+2287}" ; (⊇) superset of or equal to -dkMathSymbols["c"] := "{u+221d}" ; (∝) proportional to -dkMathSymbols["C"] := "{u+2102}" ; (ℂ) complex numbers -dkMathSymbols["d"] := "{u+2206}" ; (∆) increment operator -dkMathSymbols["D"] := "{u+2207}" ; (∇) nabla/del operator -dkMathSymbols["e"] := "{u+2203}" ; (∃) there exists -dkMathSymbols["E"] := "{u+2204}" ; (∄) there does not exist -dkMathSymbols["f"] := "{u+0192}" ; (ƒ) f with hook -dkMathSymbols["F"] := "{u+220e}" ; (∎) end of proof -dkMathSymbols["g"] := "{u+2282}" ; (⊂) subset of -dkMathSymbols["G"] := "{u+2284}" ; (⊄) not a subset of -dkMathSymbols["h"] := "{u+2283}" ; (⊃) superset of -dkMathSymbols["H"] := "{u+2285}" ; (⊅) not a superset of -dkMathSymbols["i"] := "{u+221e}" ; (∞) infinity symbol -dkMathSymbols["I"] := "{u+2111}" ; (ℑ) imaginary numbers -dkMathSymbols["k"] := "{u+220b}" ; (∋) contains as member -dkMathSymbols["K"] := "{u+220c}" ; (∌) does not contain as member -dkMathSymbols["l"] := "{u+2225}" ; (∥) parallel to -dkMathSymbols["L"] := "{u+2226}" ; (∦) not parallel to -dkMathSymbols["m"] := "{u+2208}" ; (∈) element of -dkMathSymbols["M"] := "{u+2209}" ; (∉) not an element of -dkMathSymbols["n"] := "{u+207f}" ; (ⁿ) superscript n -dkMathSymbols["N"] := "{u+2115}" ; (ℕ) natural numbers -dkMathSymbols["o"] := "{u+2218}" ; (∘) ring operator -dkMathSymbols["O"] := "{u+2205}" ; (∅) empty set -dkMathSymbols["p"] := "{u+2202}" ; (∂) partial differential -dkMathSymbols["P"] := "{u+2119}" ; (ℙ) prime numbers -dkMathSymbols["q"] := "{u+211a}" ; (ℚ) rational numbers -dkMathSymbols["Q"] := "{u+211a}" ; (ℚ) rational numbers -dkMathSymbols["r"] := "{u+221a}" ; (√) square root -dkMathSymbols["R"] := "{u+211d}" ; (ℝ) real numbers -dkMathSymbols["s"] := "{u+2229}" ; (∩) set intersection -dkMathSymbols["S"] := "{u+222b}" ; (∫) integral symbol -dkMathSymbols["u"] := "{u+222a}" ; (∪) set union -dkMathSymbols["U"] := "{u+2216}" ; (∖) set minus -dkMathSymbols["w"] := "{u+2118}" ; (℘) Weierstrass elliptic function -dkMathSymbols["W"] := "{u+2118}" ; (℘) Weierstrass elliptic function -dkMathSymbols["z"] := "{u+21af}" ; (↯) downwards zigzag arrow -dkMathSymbols["Z"] := "{u+2124}" ; (ℤ) whole numbers -dkMathSymbols["1"] := "{u+2260}" ; (≠) not equal to -dkMathSymbols["!"] := "{u+2260}" ; (≠) not equal to -dkMathSymbols["2"] := "{u+221a}" ; (√) square root -dkMathSymbols["@"] := "{u+221a}" ; (√) square root -dkMathSymbols["3"] := "{u+221b}" ; (∛) cube root -dkMathSymbols["#"] := "{u+221b}" ; (∛) cube root -dkMathSymbols["4"] := "{u+221c}" ; (∜) fourth root -dkMathSymbols["$"] := "{u+221c}" ; (∜) fourth root -dkMathSymbols["5"] := "{u+2030}" ; (‰) per mille sign -dkMathSymbols["%"] := "{u+2031}" ; (‱) per ten thousand sign -dkMathSymbols["6"] := "{u+2220}" ; (∠) angle symbol -dkMathSymbols["^"] := "{u+2220}" ; (∠) angle symbol -dkMathSymbols["7"] := "{u+2227}" ; (∧) logical and -dkMathSymbols["&"] := "{u+2227}" ; (∧) logical and -dkMathSymbols["8"] := "{u+2297}" ; (⊗) circled times -dkMathSymbols["*"] := "{u+2297}" ; (⊗) circled times -dkMathSymbols["9"] := "{u+221f}" ; (∟) right angle -dkMathSymbols["("] := "{u+221f}" ; (∟) right angle -dkMathSymbols["0"] := "{u+2221}" ; (∡) measured angle -dkMathSymbols[")"] := "{u+2221}" ; (∡) measured angle -dkMathSymbols["``"] := "{u+2248}" ; (≈) almost equal to -dkMathSymbols["~"] := "{u+2248}" ; (≈) almost equal to -dkMathSymbols[","] := "{u+2264}" ; (≤) less-than or equal to -dkMathSymbols["<"] := "{u+2264}" ; (≤) less-than or equal to -dkMathSymbols["."] := "{u+2265}" ; (≥) greater-than or equal to -dkMathSymbols[">"] := "{u+2265}" ; (≥) greater-than or equal to -dkMathSymbols["-"] := "{u+00b1}" ; (±) plus-minus sign -dkMathSymbols["_"] := "{u+2296}" ; (⊖) circled minus -dkMathSymbols["/"] := "{u+2298}" ; (⊘) circled division slash -dkMathSymbols["="] := "{u+225d}" ; (≝) equal to by definition -dkMathSymbols["+"] := "{u+2295}" ; (⊕) circled plus -dkMathSymbols[";"] := "{u+2235}" ; (∵) because sign -dkMathSymbols[":"] := "{u+2234}" ; (∴) therefore sign -dkMathSymbols["'"] := "{u+2032}" ; (′) prime -dkMathSymbols[chr(34)] := "{u+2033}" ; (″) double prime -dkMathSymbols["["] := "{u+2034}" ; (‴) triple prime -dkMathSymbols["]"] := "{u+2057}" ; (⁗) quadruple prime -dkMathSymbols["\"] := "{u+2228}" ; (∨) logical or -dkMathSymbols["|"] := "{u+2228}" ; (∨) logical or -dkMathSymbols[chr(0x00e7)] := "{u+2245}" ; (ç -> ≅) congruent to -dkMathSymbols[chr(0x00c7)] := "{u+2247}" ; (Ç -> ≇) not congruent to -dkMathSymbols[chr(0x00f6)] := "{u+2300}" ; (ö -> ⌀) diameter sign -dkMathSymbols[chr(0x00d6)] := "{u+2300}" ; (Ö -> ⌀) diameter sign -dkMathSymbols[chr(0x00f5)] := "{u+2261}" ; (õ -> ≡) identical to -dkMathSymbols[chr(0x00d5)] := "{u+2262}" ; (Õ -> ≢) not identical to -dkMathSymbols[" "] := "{u+221a}" ; (√) square root - - -; Configuration : 'Right Alt' and 'Right Alt + Shift' on US QWERTY - ->!a:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c4}" ; (Ä) A with diaeresis - else - Send "{u+00e4}" ; (ä) a with diaeresis -} ->!+a:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e4}" ; (ä) a with diaeresis - else - Send "{u+00c4}" ; (Ä) A with diaeresis - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey -} - ->!q:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c6}" ; (Æ) letter AE - else - Send "{u+00e6}" ; (æ) letter ae -} ->!+q:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e6}" ; (æ) letter ae - else - Send "{u+00c6}" ; (Æ) letter AE - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey -} - ->!w:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c5}" ; (Å) A with ring above - else - Send "{u+00e5}" ; (å) a with ring above -} ->!+w:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e5}" ; (å) a with ring above - else - Send "{u+00c5}" ; (Å) A with ring above - Send "{blind}{vkE8}" -} - ->!z:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c0}" ; (À) A with grave - else - Send "{u+00e0}" ; (à) a with grave -} ->!+z:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e0}" ; (à) a with grave - else - Send "{u+00c0}" ; (À) A with grave - Send "{blind}{vkE8}" -} - ->!x:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c1}" ; (Á) A with acute - else - Send "{u+00e1}" ; (á) a with acute -} ->!+x:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e1}" ; (á) a with acute - else - Send "{u+00c1}" ; (Á) A with acute - Send "{blind}{vkE8}" -} - ->!d:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c2}" ; (Â) A with circumflex - else - Send "{u+00e2}" ; (â) a with circumflex -} ->!+d:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e2}" ; (â) a with circumflex - else - Send "{u+00c2}" ; (Â) A with circumflex - Send "{blind}{vkE8}" -} - ->!c:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c7}" ; (Ç) C with cedilla - else - Send "{u+00e7}" ; (ç) c with cedilla -} ->!+c:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e7}" ; (ç) c with cedilla - else - Send "{u+00c7}" ; (Ç) C with cedilla - Send "{blind}{vkE8}" -} - ->!e:: { - if GetKeyState("CapsLock", "T") - Send "{u+00cb}" ; (Ë) E with diaeresis - else - Send "{u+00eb}" ; (ë) e with diaeresis -} ->!+e:: { - if GetKeyState("CapsLock", "T") - Send "{u+00eb}" ; (ë) e with diaeresis - else - Send "{u+00cb}" ; (Ë) E with diaeresis - Send "{blind}{vkE8}" -} - ->!f:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c8}" ; (È) E with grave - else - Send "{u+00e8}" ; (è) e with grave -} ->!+f:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e8}" ; (è) e with grave - else - Send "{u+00c8}" ; (È) E with grave - Send "{blind}{vkE8}" -} - ->!g:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c9}" ; (É) E with acute - else - Send "{u+00e9}" ; (é) e with acute -} ->!+g:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e9}" ; (é) e with acute - else - Send "{u+00c9}" ; (É) E with acute - Send "{blind}{vkE8}" -} - ->!r:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ca}" ; (Ê) E with circumflex - else - Send "{u+00ea}" ; (ê) e with circumflex -} ->!+r:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ea}" ; (ê) e with circumflex - else - Send "{u+00ca}" ; (Ê) E with circumflex - Send "{blind}{vkE8}" -} - ->!i:: { - if GetKeyState("CapsLock", "T") - Send "{u+00cf}" ; (Ï) I with diaeresis - else - Send "{u+00ef}" ; (ï) i with diaeresis -} ->!+i:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ef}" ; (ï) i with diaeresis - else - Send "{u+00cf}" ; (Ï) I with diaeresis - Send "{blind}{vkE8}" -} - ->!v:: { - if GetKeyState("CapsLock", "T") - Send "{u+00cc}" ; (Ì) I with grave - else - Send "{u+00ec}" ; (ì) i with grave -} ->!+v:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ec}" ; (ì) i with grave - else - Send "{u+00cc}" ; (Ì) I with grave - Send "{blind}{vkE8}" -} - ->!b:: { - if GetKeyState("CapsLock", "T") - Send "{u+00cd}" ; (Í) I with acute - else - Send "{u+00ed}" ; (í) i with acute -} ->!+b:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ed}" ; (í) i with acute - else - Send "{u+00cd}" ; (Í) I with acute - Send "{blind}{vkE8}" -} - ->!t:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ce}" ; (Î) I with circumflex - else - Send "{u+00ee}" ; (î) i with circumflex -} ->!+t:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ee}" ; (î) i with circumflex - else - Send "{u+00ce}" ; (Î) I with circumflex - Send "{blind}{vkE8}" -} - ->!n:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d1}" ; (Ñ) N with tilde - else - Send "{u+00f1}" ; (ñ) n with tilde -} ->!+n:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f1}" ; (ñ) n with tilde - else - Send "{u+00d1}" ; (Ñ) N with tilde - Send "{blind}{vkE8}" -} - ->!o:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d6}" ; (Ö) O with diaeresis - else - Send "{u+00f6}" ; (ö) o with diaeresis -} ->!+o:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f6}" ; (ö) o with diaeresis - else - Send "{u+00d6}" ; (Ö) O with diaeresis - Send "{blind}{vkE8}" -} - ->!k:: { - if GetKeyState("CapsLock", "T") - Send "{u+0152}" ; (Œ) ligature OE - else - Send "{u+0153}" ; (œ) ligature oe -} ->!+k:: { - if GetKeyState("CapsLock", "T") - Send "{u+0153}" ; (œ) ligature oe - else - Send "{u+0152}" ; (Œ) ligature OE - Send "{blind}{vkE8}" -} - ->!l:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d8}" ; (Ø) O with stroke - else - Send "{u+00f8}" ; (ø) o with stroke -} ->!+l:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f8}" ; (ø) o with stroke - else - Send "{u+00d8}" ; (Ø) O with stroke - Send "{blind}{vkE8}" -} - ->!,:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d2}" ; (Ò) O with grave - else - Send "{u+00f2}" ; (ò) o with grave -} ->!<:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f2}" ; (ò) o with grave - else - Send "{u+00d2}" ; (Ò) O with grave - Send "{blind}{vkE8}" -} - ->!.:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d3}" ; (Ó) O with acute - else - Send "{u+00f3}" ; (ó) o with acute -} ->!>:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f3}" ; (ó) o with acute - else - Send "{u+00d3}" ; (Ó) O with acute - Send "{blind}{vkE8}" -} - ->!p:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d4}" ; (Ô) O with circumflex - else - Send "{u+00f4}" ; (ô) o with circumflex -} ->!+p:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f4}" ; (ô) o with circumflex - else - Send "{u+00d4}" ; (Ô) O with circumflex - Send "{blind}{vkE8}" -} - ->!s:: { - if GetKeyState("CapsLock", "T") - Send "{u+1e9e}" ; (ẞ) capital sharp S (capital Eszett) - else - Send "{u+00df}" ; (ß) small sharp s (Eszett) -} ->!+s:: { - if GetKeyState("CapsLock", "T") - Send "{u+00df}" ; (ß) small sharp s (Eszett) - else - Send "{u+1e9e}" ; (ẞ) capital sharp S (capital Eszett) - Send "{blind}{vkE8}" -} - ->!u:: { - if GetKeyState("CapsLock", "T") - Send "{u+00dc}" ; (Ü) U with diaeresis - else - Send "{u+00fc}" ; (ü) u with diaeresis -} ->!+u:: { - if GetKeyState("CapsLock", "T") - Send "{u+00fc}" ; (ü) u with diaeresis - else - Send "{u+00dc}" ; (Ü) U with diaeresis - Send "{blind}{vkE8}" -} - ->!h:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d9}" ; (Ù) U with grave - else - Send "{u+00f9}" ; (ù) u with grave -} ->!+h:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f9}" ; (ù) u with grave - else - Send "{u+00d9}" ; (Ù) U with grave - Send "{blind}{vkE8}" -} - ->!j:: { - if GetKeyState("CapsLock", "T") - Send "{u+00da}" ; (Ú) U with acute - else - Send "{u+00fa}" ; (ú) u with acute -} ->!+j:: { - if GetKeyState("CapsLock", "T") - Send "{u+00fa}" ; (ú) u with acute - else - Send "{u+00da}" ; (Ú) U with acute - Send "{blind}{vkE8}" -} - ->!y:: { - if GetKeyState("CapsLock", "T") - Send "{u+00db}" ; (Û) U with circumflex - else - Send "{u+00fb}" ; (û) u with circumflex -} ->!+y:: { - if GetKeyState("CapsLock", "T") - Send "{u+00fb}" ; (û) u with circumflex - else - Send "{u+00db}" ; (Û) U with circumflex - Send "{blind}{vkE8}" -} - ->!-:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c3}" ; (Ã) A with tilde - else - Send "{u+00e3}" ; (ã) a with tilde -} ->!_:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e3}" ; (ã) a with tilde - else - Send "{u+00c3}" ; (Ã) A with tilde - Send "{blind}{vkE8}" -} - ->!=:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d5}" ; (Õ) O with tilde - else - Send "{u+00f5}" ; (õ) o with tilde -} ->!+=:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f5}" ; (õ) o with tilde - else - Send "{u+00d5}" ; (Õ) O with tilde - Send "{blind}{vkE8}" -} - ->!1::Send "{u+00a1}" ; (¡) inverted exclamation mark ->!+1:: { - Send "{u+00b9}" ; (¹) superscript 1 - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey -} - ->!2::Send "{u+00a9}" ; (©) copyright sign ->!+2:: { - Send "{u+00b2}" ; (²) superscript 2 - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey -} - ->!3::Send "{u+00a7}" ; (§) section sign ->!+3:: { - Send "{u+00b3}" ; (³) superscript 3 - Send "{blind}{vkE8}" -} - ->!4::Send "{u+00a3}" ; (£) pound sign ->!+4:: { - Send "{u+00a5}" ; (¥) yen sign - Send "{blind}{vkE8}" -} - ->!5::Send "{u+20ac}" ; (€) euro sign ->!+5:: { - Send "{u+00a2}" ; (¢) cent sign (dollar) - Send "{blind}{vkE8}" -} - ->!9::Send "{u+201c}" ; (“) left double quotation mark ->!+9:: { - Send "{u+2018}" ; (‘) left single quotation mark - Send "{blind}{vkE8}" -} - ->!0::Send "{u+201d}" ; (”) right double quotation mark ->!+0:: { - Send "{u+2019}" ; (’) right single quotation mark - Send "{blind}{vkE8}" -} - ->![::Send "{u+00ab}" ; («) left-pointing double angle quotation mark ->!{:: { - Send "{u+2039}" ; (‹) left-pointing single angle quotation mark - Send "{blind}{vkE8}" -} - ->!]::Send "{u+00bb}" ; (») right-pointing double angle quotation mark ->!}:: { - Send "{u+203a}" ; (›) right-pointing single angle quotation mark - Send "{blind}{vkE8}" -} - ->!;::Send "{u+00b0}" ; (°) degree sign ->!+;:: { - Send "{u+00b7}" ; (·) middle dot - Send "{blind}{vkE8}" -} - ->!/::Send "{u+00bf}" ; (¿) inverted question mark ->!?:: { - Send "{u+2026}" ; (…) horizontal ellipsis - Send "{blind}{vkE8}" -} - ->!space::Send "{u+00a0}" ; non-breaking space ->!+space:: { - Send "{u+00a0}" ; non-breaking space - Send "{blind}{vkE8}" -} - - -; Configuration : Dead Keys on 'Right Alt' and 'Right Alt + Shift' - ->!6:: { - Send "{blind}{vkE8}" ; suppresses circles around mouse pointer - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkCircumflex.Has(ih.Input) - Send dkCircumflex[ih.Input] - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey (for second character with 'Right Alt + Shift') -} ->!+6:: { - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkCaron.Has(ih.Input) - Send dkCaron[ih.Input] - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey (for second character with 'Right Alt + Shift') -} - ->!7:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkDotAbove.Has(ih.Input) - Send dkDotAbove[ih.Input] - Send "{blind}{vkE8}" -} ->!+7:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkMacronStroke.Has(ih.Input) - Send dkMacronStroke[ih.Input] - Send "{blind}{vkE8}" -} - ->!8:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkCedillaOgonek.Has(ih.Input) - Send dkCedillaOgonek[ih.Input] - Send "{blind}{vkE8}" -} ->!+8:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkBreveSpecial.Has(ih.Input) - Send dkBreveSpecial[ih.Input] - Send "{blind}{vkE8}" -} - ->!':: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkAcuteAccent.Has(ih.Input) - Send dkAcuteAccent[ih.Input] - Send "{blind}{vkE8}" -} ->!":: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkDiaeresis.Has(ih.Input) - Send dkDiaeresis[ih.Input] - Send "{blind}{vkE8}" -} - ->!`:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkGraveAccent.Has(ih.Input) - Send dkGraveAccent[ih.Input] - Send "{blind}{vkE8}" -} ->!~:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkTilde.Has(ih.Input) - Send dkTilde[ih.Input] - Send "{blind}{vkE8}" -} - ->!\:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkSymbols.Has(ih.Input) - Send dkSymbols[ih.Input] - Send "{blind}{vkE8}" -} ->!|:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkCurrency.Has(ih.Input) - Send dkCurrency[ih.Input] - Send "{blind}{vkE8}" -} - ->!m:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkGreekAlphabet.Has(ih.Input) - Send dkGreekAlphabet[ih.Input] - Send "{blind}{vkE8}" -} ->!+m:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkMathSymbols.Has(ih.Input) - Send dkMathSymbols[ih.Input] - Send "{blind}{vkE8}" -} -- 2.47.3 From bf897feeb921fd7eaa2bab44b32b565dcefc4592 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:16:40 +0100 Subject: [PATCH 08/16] Delete UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0-beta.3).ahk --- ...oll Lock) (for AutoHotkey v2.0-beta.3).ahk | 1714 ----------------- 1 file changed, 1714 deletions(-) delete mode 100644 autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0-beta.3).ahk diff --git a/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0-beta.3).ahk b/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0-beta.3).ahk deleted file mode 100644 index 23ae302..0000000 --- a/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0-beta.3).ahk +++ /dev/null @@ -1,1714 +0,0 @@ -; UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0-beta.3).ahk - 2021-10-28 - -; Created by : Pieter Degroote - -; License : GNU General Public License Version 3 - -; GitHub : https://github.com/pieter-degroote/UltimateKEYS - - -; Requirements : - -; Keyboard layout (on Windows OS) : US QWERTY - -; Tested with : AutoHotkey v2.0-beta.3 (https://www.autohotkey.com/) - - - -ListLines False ; omits recently executed lines from history (for privacy and security) -KeyHistory 0 ; disables the key history (for privacy and security) - -SendMode "Event" ; allows chaining of customized key combinations - -global dkEndKeys := "{bs}{del}{esc}{home}{end}" ; ends dead key input on specific keys - - -; Dead Key : Circumflex Accent - -global dkCircumflex := Map() -dkCircumflex["a"] := "{u+0203}" ; (ȃ) a with inverted breve -dkCircumflex["A"] := "{u+0202}" ; (Ȃ) A with inverted breve -dkCircumflex["c"] := "{u+0109}" ; (ĉ) c with circumflex -dkCircumflex["C"] := "{u+0108}" ; (Ĉ) C with circumflex -dkCircumflex["e"] := "{u+0207}" ; (ȇ) e with inverted breve -dkCircumflex["E"] := "{u+0206}" ; (Ȇ) E with inverted breve -dkCircumflex["g"] := "{u+011d}" ; (ĝ) g with circumflex -dkCircumflex["G"] := "{u+011c}" ; (Ĝ) G with circumflex -dkCircumflex["h"] := "{u+0125}" ; (ĥ) h with circumflex -dkCircumflex["H"] := "{u+0124}" ; (Ĥ) H with circumflex -dkCircumflex["i"] := "{u+020b}" ; (ȋ) i with inverted breve -dkCircumflex["I"] := "{u+020a}" ; (Ȋ) I with inverted breve -dkCircumflex["j"] := "{u+0135}" ; (ĵ) j with circumflex -dkCircumflex["J"] := "{u+0134}" ; (Ĵ) J with circumflex -dkCircumflex["o"] := "{u+020f}" ; (ȏ) o with inverted breve -dkCircumflex["O"] := "{u+020e}" ; (Ȏ) O with inverted breve -dkCircumflex["r"] := "{u+0213}" ; (ȓ) r with inverted breve -dkCircumflex["R"] := "{u+0212}" ; (Ȓ) R with inverted breve -dkCircumflex["s"] := "{u+015d}" ; (ŝ) s with circumflex -dkCircumflex["S"] := "{u+015c}" ; (Ŝ) S with circumflex -dkCircumflex["u"] := "{u+0217}" ; (ȗ) u with inverted breve -dkCircumflex["U"] := "{u+0216}" ; (Ȗ) U with inverted breve -dkCircumflex["w"] := "{u+0175}" ; (ŵ) w with circumflex -dkCircumflex["W"] := "{u+0174}" ; (Ŵ) W with circumflex -dkCircumflex["y"] := "{u+0177}" ; (ŷ) y with circumflex -dkCircumflex["Y"] := "{u+0176}" ; (Ŷ) Y with circumflex -dkCircumflex["z"] := "{u+1e91}" ; (ẑ) z with circumflex -dkCircumflex["Z"] := "{u+1e90}" ; (Ẑ) Z with circumflex -dkCircumflex["1"] := "{u+21d9}" ; (⇙) south west double arrow -dkCircumflex["2"] := "{u+21d3}" ; (⇓) downwards double arrow -dkCircumflex["3"] := "{u+21d8}" ; (⇘) south east double arrow -dkCircumflex["4"] := "{u+21d0}" ; (⇐) leftwards double arrow -dkCircumflex["5"] := "{u+21d5}" ; (⇕) up down double arrow -dkCircumflex["6"] := "{u+21d2}" ; (⇒) rightwards double arrow -dkCircumflex["7"] := "{u+21d6}" ; (⇖) north west double arrow -dkCircumflex["8"] := "{u+21d1}" ; (⇑) upwards double arrow -dkCircumflex["9"] := "{u+21d7}" ; (⇗) north east double arrow -dkCircumflex["0"] := "{u+21d4}" ; (⇔) left right double arrow -dkCircumflex["!"] := "{u+21d9}" ; (⇙) south west double arrow -dkCircumflex["@"] := "{u+21d3}" ; (⇓) downwards double arrow -dkCircumflex["#"] := "{u+21d8}" ; (⇘) south east double arrow -dkCircumflex["$"] := "{u+21d0}" ; (⇐) leftwards double arrow -dkCircumflex["%"] := "{u+21d5}" ; (⇕) up down double arrow -dkCircumflex["^"] := "{u+21d2}" ; (⇒) rightwards double arrow -dkCircumflex["&"] := "{u+21d6}" ; (⇖) north west double arrow -dkCircumflex["*"] := "{u+21d1}" ; (⇑) upwards double arrow -dkCircumflex["("] := "{u+21d7}" ; (⇗) north east double arrow -dkCircumflex[")"] := "{u+21d4}" ; (⇔) left right double arrow -dkCircumflex[" "] := "{^}" ; circumflex accent - - -; Dead Key : Caron - -global dkCaron := Map() -dkCaron["a"] := "{u+01ce}" ; (ǎ) a with caron -dkCaron["A"] := "{u+01cd}" ; (Ǎ) A with caron -dkCaron["c"] := "{u+010d}" ; (č) c with caron -dkCaron["C"] := "{u+010c}" ; (Č) C with caron -dkCaron["d"] := "{u+010f}" ; (ď) d with caron -dkCaron["D"] := "{u+010e}" ; (Ď) D with caron -dkCaron["e"] := "{u+011b}" ; (ě) e with caron -dkCaron["E"] := "{u+011a}" ; (Ě) E with caron -dkCaron["g"] := "{u+01e7}" ; (ǧ) g with caron -dkCaron["G"] := "{u+01e6}" ; (Ǧ) G with caron -dkCaron["h"] := "{u+021f}" ; (ȟ) h with caron -dkCaron["H"] := "{u+021e}" ; (Ȟ) H with caron -dkCaron["i"] := "{u+01d0}" ; (ǐ) i with caron -dkCaron["I"] := "{u+01cf}" ; (Ǐ) I with caron -dkCaron["j"] := "{u+01f0}" ; (ǰ) j with caron -dkCaron["k"] := "{u+01e9}" ; (ǩ) k with caron -dkCaron["K"] := "{u+01e8}" ; (Ǩ) K with caron -dkCaron["l"] := "{u+013e}" ; (ľ) l with caron -dkCaron["L"] := "{u+013d}" ; (Ľ) L with caron -dkCaron["n"] := "{u+0148}" ; (ň) n with caron -dkCaron["N"] := "{u+0147}" ; (Ň) N with caron -dkCaron["o"] := "{u+01d2}" ; (ǒ) o with caron -dkCaron["O"] := "{u+01d1}" ; (Ǒ) O with caron -dkCaron["r"] := "{u+0159}" ; (ř) r with caron -dkCaron["R"] := "{u+0158}" ; (Ř) R with caron -dkCaron["s"] := "{u+0161}" ; (š) s with caron -dkCaron["S"] := "{u+0160}" ; (Š) S with caron -dkCaron["t"] := "{u+0165}" ; (ť) t with caron -dkCaron["T"] := "{u+0164}" ; (Ť) T with caron -dkCaron["u"] := "{u+01d4}" ; (ǔ) u with caron -dkCaron["U"] := "{u+01d3}" ; (Ǔ) U with caron -dkCaron["v"] := "{u+01da}" ; (ǚ) u with diaeresis and caron -dkCaron["V"] := "{u+01d9}" ; (Ǚ) U with diaeresis and caron -dkCaron["z"] := "{u+017e}" ; (ž) z with caron -dkCaron["Z"] := "{u+017d}" ; (Ž) Z with caron -dkCaron["3"] := "{u+01ef}" ; (ǯ) small letter ezh with caron -dkCaron["#"] := "{u+01ee}" ; (Ǯ) capital letter ezh with caron -dkCaron["2"] := "{u+25bc}" ; (▼) black down-pointing triangle -dkCaron["@"] := "{u+25bd}" ; (▽) white down-pointing triangle -dkCaron["4"] := "{u+25c0}" ; (◀) black left-pointing triangle -dkCaron["$"] := "{u+25c1}" ; (◁) white left-pointing triangle -dkCaron["6"] := "{u+25b6}" ; (▶) black right-pointing triangle -dkCaron["^"] := "{u+25b7}" ; (▷) white right-pointing triangle -dkCaron["8"] := "{u+25b2}" ; (▲) black up-pointing triangle -dkCaron["*"] := "{u+25b3}" ; (△) white up-pointing triangle -dkCaron[" "] := "{u+02c7}" ; (ˇ) caron - - -; Dead Key : Dot Above - -global dkDotAbove := Map() -dkDotAbove["a"] := "{u+0227}" ; (ȧ) a with dot above -dkDotAbove["A"] := "{u+0226}" ; (Ȧ) A with dot above -dkDotAbove["b"] := "{u+1e03}" ; (ḃ) b with dot above -dkDotAbove["B"] := "{u+1e02}" ; (Ḃ) B with dot above -dkDotAbove["c"] := "{u+010b}" ; (ċ) c with dot above -dkDotAbove["C"] := "{u+010a}" ; (Ċ) C with dot above -dkDotAbove["d"] := "{u+1e0b}" ; (ḋ) d with dot above -dkDotAbove["D"] := "{u+1e0a}" ; (Ḋ) D with dot above -dkDotAbove["e"] := "{u+0117}" ; (ė) e with dot above -dkDotAbove["E"] := "{u+0116}" ; (Ė) E with dot above -dkDotAbove["f"] := "{u+1e1f}" ; (ḟ) f with dot above -dkDotAbove["F"] := "{u+1e1e}" ; (Ḟ) F with dot above -dkDotAbove["g"] := "{u+0121}" ; (ġ) g with dot above -dkDotAbove["G"] := "{u+0120}" ; (Ġ) G with dot above -dkDotAbove["h"] := "{u+1e23}" ; (ḣ) h with dot above -dkDotAbove["H"] := "{u+1e22}" ; (Ḣ) H with dot above -dkDotAbove["i"] := "{u+0131}" ; (ı) dotless i (Turkish, Azerbaijani) -dkDotAbove["I"] := "{u+0130}" ; (İ) I with dot above (Turkish, Azerbaijani) -dkDotAbove["j"] := "{u+0237}" ; (ȷ) dotless j -dkDotAbove["l"] := "{u+0140}" ; (ŀ) l with middle dot -dkDotAbove["L"] := "{u+013f}" ; (Ŀ) L with middle dot -dkDotAbove["m"] := "{u+1e41}" ; (ṁ) m with dot above -dkDotAbove["M"] := "{u+1e40}" ; (Ṁ) M with dot above -dkDotAbove["n"] := "{u+1e45}" ; (ṅ) n with dot above -dkDotAbove["N"] := "{u+1e44}" ; (Ṅ) N with dot above -dkDotAbove["o"] := "{u+022f}" ; (ȯ) o with dot above -dkDotAbove["O"] := "{u+022e}" ; (Ȯ) O with dot above -dkDotAbove["p"] := "{u+1e57}" ; (ṗ) p with dot above -dkDotAbove["P"] := "{u+1e56}" ; (Ṗ) P with dot above -dkDotAbove["r"] := "{u+1e59}" ; (ṙ) r with dot above -dkDotAbove["R"] := "{u+1e58}" ; (Ṙ) R with dot above -dkDotAbove["s"] := "{u+1e61}" ; (ṡ) s with dot above -dkDotAbove["S"] := "{u+1e60}" ; (Ṡ) S with dot above -dkDotAbove["t"] := "{u+1e6b}" ; (ṫ) t with dot above -dkDotAbove["T"] := "{u+1e6a}" ; (Ṫ) T with dot above -dkDotAbove["u"] := "{u+016f}" ; (ů) u with ring above -dkDotAbove["U"] := "{u+016e}" ; (Ů) U with ring above -dkDotAbove["w"] := "{u+1e87}" ; (ẇ) w with dot above -dkDotAbove["W"] := "{u+1e86}" ; (Ẇ) W with dot above -dkDotAbove["x"] := "{u+1e8b}" ; (ẋ) x with dot above -dkDotAbove["X"] := "{u+1e8a}" ; (Ẋ) X with dot above -dkDotAbove["y"] := "{u+1e8f}" ; (ẏ) y with dot above -dkDotAbove["Y"] := "{u+1e8e}" ; (Ẏ) Y with dot above -dkDotAbove["z"] := "{u+017c}" ; (ż) z with dot above -dkDotAbove["Z"] := "{u+017b}" ; (Ż) Z with dot above -dkDotAbove["1"] := "{u+2199}" ; (↙) south west arrow -dkDotAbove["2"] := "{u+2193}" ; (↓) downwards arrow -dkDotAbove["3"] := "{u+2198}" ; (↘) south east arrow -dkDotAbove["4"] := "{u+2190}" ; (←) leftwards arrow -dkDotAbove["5"] := "{u+2195}" ; (↕) up down arrow -dkDotAbove["6"] := "{u+2192}" ; (→) rightwards arrow -dkDotAbove["7"] := "{u+2196}" ; (↖) north west arrow -dkDotAbove["8"] := "{u+2191}" ; (↑) upwards arrow -dkDotAbove["9"] := "{u+2197}" ; (↗) north east arrow -dkDotAbove["0"] := "{u+2194}" ; (↔) left right arrow -dkDotAbove["!"] := "{u+2199}" ; (↙) south west arrow -dkDotAbove["@"] := "{u+2193}" ; (↓) downwards arrow -dkDotAbove["#"] := "{u+2198}" ; (↘) south east arrow -dkDotAbove["$"] := "{u+2190}" ; (←) leftwards arrow -dkDotAbove["%"] := "{u+2195}" ; (↕) up down arrow -dkDotAbove["^"] := "{u+2192}" ; (→) rightwards arrow -dkDotAbove["&"] := "{u+2196}" ; (↖) north west arrow -dkDotAbove["*"] := "{u+2191}" ; (↑) upwards arrow -dkDotAbove["("] := "{u+2197}" ; (↗) north east arrow -dkDotAbove[")"] := "{u+2194}" ; (↔) left right arrow -dkDotAbove[chr(0x00e5)] := "{u+1e98}" ; (å -> ẘ) w with ring above -dkDotAbove[chr(0x00fb)] := "{u+1e99}" ; (û -> ẙ) y with ring above -dkDotAbove[" "] := "{u+02d9}" ; (˙) dot above - - -; Dead Key : Macron/Stroke - -global dkMacronStroke := Map() -dkMacronStroke["a"] := "{u+0101}" ; (ā) a with macron -dkMacronStroke["A"] := "{u+0100}" ; (Ā) A with macron -dkMacronStroke["b"] := "{u+0180}" ; (ƀ) b with stroke -dkMacronStroke["B"] := "{u+0243}" ; (Ƀ) B with stroke -dkMacronStroke["d"] := "{u+0111}" ; (đ) d with stroke -dkMacronStroke["D"] := "{u+0110}" ; (Đ) D with stroke -dkMacronStroke["e"] := "{u+0113}" ; (ē) e with macron -dkMacronStroke["E"] := "{u+0112}" ; (Ē) E with macron -dkMacronStroke["g"] := "{u+01e5}" ; (ǥ) g with stroke (Skolt Sami) -dkMacronStroke["G"] := "{u+01e4}" ; (Ǥ) G with stroke (Skolt Sami) -dkMacronStroke["h"] := "{u+0127}" ; (ħ) h with stroke (Maltese) -dkMacronStroke["H"] := "{u+0126}" ; (Ħ) H with stroke (Maltese) -dkMacronStroke["i"] := "{u+012b}" ; (ī) i with macron -dkMacronStroke["I"] := "{u+012a}" ; (Ī) I with macron -dkMacronStroke["j"] := "{u+0249}" ; (ɉ) j with stroke -dkMacronStroke["J"] := "{u+0248}" ; (Ɉ) J with stroke -dkMacronStroke["l"] := "{u+0142}" ; (ł) l with stroke -dkMacronStroke["L"] := "{u+0141}" ; (Ł) L with stroke -dkMacronStroke["o"] := "{u+014d}" ; (ō) o with macron -dkMacronStroke["O"] := "{u+014c}" ; (Ō) O with macron -dkMacronStroke["p"] := "{u+1d7d}" ; (ᵽ) p with stroke -dkMacronStroke["P"] := "{u+2c63}" ; (Ᵽ) P with stroke -dkMacronStroke["r"] := "{u+024d}" ; (ɍ) r with stroke -dkMacronStroke["R"] := "{u+024c}" ; (Ɍ) R with stroke -dkMacronStroke["t"] := "{u+0167}" ; (ŧ) t with stroke -dkMacronStroke["T"] := "{u+0166}" ; (Ŧ) T with stroke -dkMacronStroke["u"] := "{u+016b}" ; (ū) u with macron -dkMacronStroke["U"] := "{u+016a}" ; (Ū) U with macron -dkMacronStroke["y"] := "{u+0233}" ; (ȳ) y with macron -dkMacronStroke["Y"] := "{u+0232}" ; (Ȳ) Y with macron -dkMacronStroke["z"] := "{u+01b6}" ; (ƶ) z with stroke -dkMacronStroke["Z"] := "{u+01b5}" ; (Ƶ) Z with stroke -dkMacronStroke["1"] := "{u+21b2}" ; (↲) downwards arrow with tip leftwards -dkMacronStroke["2"] := "{u+21f5}" ; (⇵) downwards arrow leftwards of upwards arrow -dkMacronStroke["3"] := "{u+21b3}" ; (↳) downwards arrow with tip rightwards -dkMacronStroke["4"] := "{u+21c6}" ; (⇆) leftwards arrow over rightwards arrow -dkMacronStroke["5"] := "{u+21a8}" ; (↨) up down arrow with base -dkMacronStroke["6"] := "{u+21c4}" ; (⇄) rightwards arrow over leftwards arrow -dkMacronStroke["7"] := "{u+21b0}" ; (↰) upwards arrow with tip leftwards -dkMacronStroke["8"] := "{u+21c5}" ; (⇅) upwards arrow leftwards of downwards arrow -dkMacronStroke["9"] := "{u+21b1}" ; (↱) upwards arrow with tip rightwards -dkMacronStroke["0"] := "{u+21b9}" ; (↹) leftwards arrow to bar over rightwards arrow to bar -dkMacronStroke["!"] := "{u+21b2}" ; (↲) downwards arrow with tip leftwards -dkMacronStroke["@"] := "{u+21f5}" ; (⇵) downwards arrow leftwards of upwards arrow -dkMacronStroke["#"] := "{u+21b3}" ; (↳) downwards arrow with tip rightwards -dkMacronStroke["$"] := "{u+21c6}" ; (⇆) leftwards arrow over rightwards arrow -dkMacronStroke["%"] := "{u+21a8}" ; (↨) up down arrow with base -dkMacronStroke["^"] := "{u+21c4}" ; (⇄) rightwards arrow over leftwards arrow -dkMacronStroke["&"] := "{u+21b0}" ; (↰) upwards arrow with tip leftwards -dkMacronStroke["*"] := "{u+21c5}" ; (⇅) upwards arrow leftwards of downwards arrow -dkMacronStroke["("] := "{u+21b1}" ; (↱) upwards arrow with tip rightwards -dkMacronStroke[")"] := "{u+21b9}" ; (↹) leftwards arrow to bar over rightwards arrow to bar -dkMacronStroke[chr(0x00e6)] := "{u+01e3}" ; (æ -> ǣ) ae with macron -dkMacronStroke[chr(0x00c6)] := "{u+01e2}" ; (Æ -> Ǣ) AE with macron -dkMacronStroke[chr(0x00e9)] := "{u+1e21}" ; (é -> ḡ) g with macron -dkMacronStroke[chr(0x00c9)] := "{u+1e20}" ; (É -> Ḡ) G with macron -dkMacronStroke[chr(0x00ef)] := "{u+0268}" ; (ï -> ɨ) i with stroke -dkMacronStroke[chr(0x00cf)] := "{u+0197}" ; (Ï -> Ɨ) I with stroke -dkMacronStroke[chr(0x00f8)] := "{u+019a}" ; (ø -> ƚ) l with bar -dkMacronStroke[chr(0x00d8)] := "{u+023d}" ; (Ø -> Ƚ) L with bar -dkMacronStroke[chr(0x00f6)] := "{u+01ed}" ; (ö -> ǭ) o with ogonek and macron -dkMacronStroke[chr(0x00d6)] := "{u+01ec}" ; (Ö -> Ǭ) O with ogonek and macron -dkMacronStroke[chr(0x00fc)] := "{u+0289}" ; (ü -> ʉ) u with bar -dkMacronStroke[chr(0x00dc)] := "{u+0244}" ; (Ü -> Ʉ) U with bar -dkMacronStroke[chr(0x00fb)] := "{u+024f}" ; (û -> ɏ) y with stroke -dkMacronStroke[chr(0x00db)] := "{u+024e}" ; (Û -> Ɏ) Y with stroke -dkMacronStroke[" "] := "{u+00af}" ; (¯) macron - - -; Dead Key : Cedilla/Ogonek - -global dkCedillaOgonek := Map() -dkCedillaOgonek["a"] := "{u+0105}" ; (ą) a with ogonek -dkCedillaOgonek["A"] := "{u+0104}" ; (Ą) A with ogonek -dkCedillaOgonek["c"] := "{u+00e7}" ; (ç) c with cedilla -dkCedillaOgonek["C"] := "{u+00c7}" ; (Ç) C with cedilla -dkCedillaOgonek["d"] := "{u+1e11}" ; (ḑ) d with cedilla -dkCedillaOgonek["D"] := "{u+1e10}" ; (Ḑ) D with cedilla -dkCedillaOgonek["e"] := "{u+0119}" ; (ę) e with ogonek -dkCedillaOgonek["E"] := "{u+0118}" ; (Ę) E with ogonek -dkCedillaOgonek["g"] := "{u+0123}" ; (ģ) g with cedilla -dkCedillaOgonek["G"] := "{u+0122}" ; (Ģ) G with cedilla -dkCedillaOgonek["h"] := "{u+1e29}" ; (ḩ) h with cedilla -dkCedillaOgonek["H"] := "{u+1e28}" ; (Ḩ) H with cedilla -dkCedillaOgonek["i"] := "{u+012f}" ; (į) i with ogonek -dkCedillaOgonek["I"] := "{u+012e}" ; (Į) I with ogonek -dkCedillaOgonek["k"] := "{u+0137}" ; (ķ) k with cedilla -dkCedillaOgonek["K"] := "{u+0136}" ; (Ķ) K with cedilla -dkCedillaOgonek["l"] := "{u+013c}" ; (ļ) l with cedilla -dkCedillaOgonek["L"] := "{u+013b}" ; (Ļ) L with cedilla -dkCedillaOgonek["n"] := "{u+0146}" ; (ņ) n with cedilla -dkCedillaOgonek["N"] := "{u+0145}" ; (Ņ) N with cedilla -dkCedillaOgonek["o"] := "{u+01eb}" ; (ǫ) o with ogonek -dkCedillaOgonek["O"] := "{u+01ea}" ; (Ǫ) O with ogonek -dkCedillaOgonek["r"] := "{u+0157}" ; (ŗ) r with cedilla -dkCedillaOgonek["R"] := "{u+0156}" ; (Ŗ) R with cedilla -dkCedillaOgonek["s"] := "{u+015f}" ; (ş) s with cedilla -dkCedillaOgonek["S"] := "{u+015e}" ; (Ş) S with cedilla -dkCedillaOgonek["t"] := "{u+0163}" ; (ţ) t with cedilla -dkCedillaOgonek["T"] := "{u+0162}" ; (Ţ) T with cedilla -dkCedillaOgonek["u"] := "{u+0173}" ; (ų) u with ogonek -dkCedillaOgonek["U"] := "{u+0172}" ; (Ų) U with ogonek -dkCedillaOgonek["1"] := "{u+2013}" ; (–) en dash -dkCedillaOgonek["2"] := "{u+2014}" ; (—) em dash -dkCedillaOgonek["3"] := "{u+2015}" ; (―) horizontal bar -dkCedillaOgonek["4"] := "{u+2010}" ; (‐) hyphen -dkCedillaOgonek["9"] := "{u+2012}" ; (‒) figure dash -dkCedillaOgonek["0"] := "{u+00ad}" ; (­) soft hyphen -dkCedillaOgonek["!"] := "{u+2013}" ; (–) en dash -dkCedillaOgonek["@"] := "{u+2014}" ; (—) em dash -dkCedillaOgonek["#"] := "{u+2015}" ; (―) horizontal bar -dkCedillaOgonek["$"] := "{u+2010}" ; (‐) hyphen -dkCedillaOgonek["("] := "{u+2012}" ; (‒) figure dash -dkCedillaOgonek[")"] := "{u+00ad}" ; (­) soft hyphen -dkCedillaOgonek["-"] := "{u+2011}" ; (‑) non-breaking hyphen -dkCedillaOgonek["."] := "{u+02db}" ; (˛) ogonek -dkCedillaOgonek[chr(0x00eb)] := "{u+0229}" ; (ë -> ȩ) e with cedilla -dkCedillaOgonek[chr(0x00cb)] := "{u+0228}" ; (Ë -> Ȩ) E with cedilla -dkCedillaOgonek[chr(0x00f6)] := "{u+01ed}" ; (ö -> ǭ) o with ogonek and macron -dkCedillaOgonek[chr(0x00d6)] := "{u+01ec}" ; (Ö -> Ǭ) O with ogonek and macron -dkCedillaOgonek[" "] := "{u+00b8}" ; (¸) cedilla - - -; Dead Key : Breve/Special - -global dkBreveSpecial := Map() -dkBreveSpecial["a"] := "{u+0103}" ; (ă) a with breve -dkBreveSpecial["A"] := "{u+0102}" ; (Ă) A with breve -dkBreveSpecial["c"] := "{u+0188}" ; (ƈ) c with hook -dkBreveSpecial["C"] := "{u+0187}" ; (Ƈ) C with hook -dkBreveSpecial["d"] := "{u+0256}" ; (ɖ) small letter d with tail -dkBreveSpecial["D"] := "{u+0189}" ; (Ɖ) capital letter African D -dkBreveSpecial["e"] := "{u+0115}" ; (ĕ) e with breve -dkBreveSpecial["E"] := "{u+0114}" ; (Ĕ) E with breve -dkBreveSpecial["f"] := "{u+0259}" ; (ə) small letter schwa (Azerbaijani) -dkBreveSpecial["F"] := "{u+018f}" ; (Ə) capital letter schwa (Azerbaijani) -dkBreveSpecial["g"] := "{u+011f}" ; (ğ) g with breve -dkBreveSpecial["G"] := "{u+011e}" ; (Ğ) G with breve -dkBreveSpecial["h"] := "{u+a727}" ; (ꜧ) small letter heng -dkBreveSpecial["H"] := "{u+a726}" ; (Ꜧ) capital letter heng -dkBreveSpecial["i"] := "{u+012d}" ; (ĭ) i with breve -dkBreveSpecial["I"] := "{u+012c}" ; (Ĭ) I with breve -dkBreveSpecial["j"] := "{u+0133}" ; (ij) ligature ij -dkBreveSpecial["J"] := "{u+0132}" ; (IJ) ligature IJ -dkBreveSpecial["k"] := "{u+0199}" ; (ƙ) k with hook -dkBreveSpecial["K"] := "{u+0198}" ; (Ƙ) K with hook -dkBreveSpecial["m"] := "{u+0271}" ; (ɱ) m with hook -dkBreveSpecial["M"] := "{u+2c6e}" ; (Ɱ) M with hook -dkBreveSpecial["n"] := "{u+014b}" ; (ŋ) small letter eng(ma) -dkBreveSpecial["N"] := "{u+014a}" ; (Ŋ) capital letter eng(ma) -dkBreveSpecial["o"] := "{u+014f}" ; (ŏ) o with breve -dkBreveSpecial["O"] := "{u+014e}" ; (Ŏ) O with breve -dkBreveSpecial["p"] := "{u+01a5}" ; (ƥ) p with hook -dkBreveSpecial["P"] := "{u+01a4}" ; (Ƥ) P with hook -dkBreveSpecial["r"] := "{u+027d}" ; (ɽ) r with tail -dkBreveSpecial["R"] := "{u+2c64}" ; (Ɽ) R with tail -dkBreveSpecial["s"] := "{u+0219}" ; (ș) s with comma below (Romanian) -dkBreveSpecial["S"] := "{u+0218}" ; (Ș) S with comma below (Romanian) -dkBreveSpecial["t"] := "{u+021b}" ; (ț) t with comma below (Romanian) -dkBreveSpecial["T"] := "{u+021a}" ; (Ț) T with comma below (Romanian) -dkBreveSpecial["u"] := "{u+016d}" ; (ŭ) u with breve -dkBreveSpecial["U"] := "{u+016c}" ; (Ŭ) U with breve -dkBreveSpecial["v"] := "{u+028a}" ; (ʊ) latin small letter upsilon -dkBreveSpecial["V"] := "{u+01b1}" ; (Ʊ) latin capital letter upsilon -dkBreveSpecial["w"] := "{u+01bf}" ; (ƿ) small letter wynn -dkBreveSpecial["W"] := "{u+01f7}" ; (Ƿ) capital letter wynn -dkBreveSpecial["y"] := "{u+021d}" ; (ȝ) small letter yogh -dkBreveSpecial["Y"] := "{u+021c}" ; (Ȝ) capital letter yogh -dkBreveSpecial["z"] := "{u+0225}" ; (ȥ) z with hook -dkBreveSpecial["Z"] := "{u+0224}" ; (Ȥ) Z with hook -dkBreveSpecial["3"] := "{u+0292}" ; (ʒ) small letter ezh -dkBreveSpecial["#"] := "{u+01b7}" ; (Ʒ) capital letter ezh -dkBreveSpecial[chr(0x00e4)] := "{u+0252}" ; (ä -> ɒ) latin small letter turned alpha -dkBreveSpecial[chr(0x00c4)] := "{u+2c70}" ; (Ä -> Ɒ) latin capital letter turned alpha -dkBreveSpecial[chr(0x00eb)] := "{u+01dd}" ; (ë -> ǝ) small turned e -dkBreveSpecial[chr(0x00cb)] := "{u+018e}" ; (Ë -> Ǝ) capital reversed E -dkBreveSpecial[chr(0x00e9)] := "{u+0263}" ; (é -> ɣ) latin small gamma -dkBreveSpecial[chr(0x00c9)] := "{u+0194}" ; (É -> Ɣ) latin capital gamma -dkBreveSpecial[chr(0x00f1)] := "{u+0272}" ; (ñ -> ɲ) n with left hook -dkBreveSpecial[chr(0x00d1)] := "{u+019d}" ; (Ñ -> Ɲ) N with left hook -dkBreveSpecial[chr(0x00f6)] := "{u+0254}" ; (ö -> ɔ) small open o -dkBreveSpecial[chr(0x00d6)] := "{u+0186}" ; (Ö -> Ɔ) capital open O -dkBreveSpecial[chr(0x00e5)] := "{u+2c73}" ; (å -> ⱳ) w with hook -dkBreveSpecial[chr(0x00c5)] := "{u+2c72}" ; (Å -> Ⱳ) W with hook -dkBreveSpecial[" "] := "{u+02d8}" ; (˘) breve - - -; Dead Key : Acute Accent - -global dkAcuteAccent := Map() -dkAcuteAccent["a"] := "{u+0251}" ; (ɑ) latin small letter alpha -dkAcuteAccent["A"] := "{u+2c6d}" ; (Ɑ) latin capital letter alpha -dkAcuteAccent["b"] := "{u+0253}" ; (ɓ) b with hook -dkAcuteAccent["B"] := "{u+0181}" ; (Ɓ) B with hook -dkAcuteAccent["c"] := "{u+0107}" ; (ć) c with acute -dkAcuteAccent["C"] := "{u+0106}" ; (Ć) C with acute -dkAcuteAccent["d"] := "{u+0257}" ; (ɗ) d with hook -dkAcuteAccent["D"] := "{u+018a}" ; (Ɗ) D with hook -dkAcuteAccent["e"] := "{u+025b}" ; (ɛ) small letter open e (latin small epsilon) -dkAcuteAccent["E"] := "{u+0190}" ; (Ɛ) capital letter open E (latin capital epsilon) -dkAcuteAccent["f"] := "{u+0192}" ; (ƒ) f with hook -dkAcuteAccent["F"] := "{u+0191}" ; (Ƒ) F with hook -dkAcuteAccent["g"] := "{u+01f5}" ; (ǵ) g with acute -dkAcuteAccent["G"] := "{u+01f4}" ; (Ǵ) G with acute -dkAcuteAccent["h"] := "{u+0266}" ; (ɦ) h with hook -dkAcuteAccent["H"] := "{u+a7aa}" ; (Ɦ) H with hook -dkAcuteAccent["i"] := "{u+0269}" ; (ɩ) latin small letter iota -dkAcuteAccent["I"] := "{u+0196}" ; (Ɩ) latin capital letter iota -dkAcuteAccent["j"] := "{u+0133}" ; (ij) ligature ij -dkAcuteAccent["J"] := "{u+0132}" ; (IJ) ligature IJ -dkAcuteAccent["k"] := "{u+1e31}" ; (ḱ) k with acute -dkAcuteAccent["K"] := "{u+1e30}" ; (Ḱ) K with acute -dkAcuteAccent["l"] := "{u+013a}" ; (ĺ) l with acute -dkAcuteAccent["L"] := "{u+0139}" ; (Ĺ) L with acute -dkAcuteAccent["m"] := "{u+1e3f}" ; (ḿ) m with acute -dkAcuteAccent["M"] := "{u+1e3e}" ; (Ḿ) M with acute -dkAcuteAccent["n"] := "{u+0144}" ; (ń) n with acute -dkAcuteAccent["N"] := "{u+0143}" ; (Ń) N with acute -dkAcuteAccent["o"] := "{u+0151}" ; (ő) o with double acute -dkAcuteAccent["O"] := "{u+0150}" ; (Ő) O with double acute -dkAcuteAccent["p"] := "{u+1e55}" ; (ṕ) p with acute -dkAcuteAccent["P"] := "{u+1e54}" ; (Ṕ) P with acute -dkAcuteAccent["q"] := "{u+024b}" ; (ɋ) q with hook tail -dkAcuteAccent["Q"] := "{u+024a}" ; (Ɋ) Q with hook tail -dkAcuteAccent["r"] := "{u+0155}" ; (ŕ) r with acute -dkAcuteAccent["R"] := "{u+0154}" ; (Ŕ) R with acute -dkAcuteAccent["s"] := "{u+015b}" ; (ś) s with acute -dkAcuteAccent["S"] := "{u+015a}" ; (Ś) S with acute -dkAcuteAccent["t"] := "{u+01ad}" ; (ƭ) t with hook -dkAcuteAccent["T"] := "{u+01ac}" ; (Ƭ) T with hook -dkAcuteAccent["u"] := "{u+0171}" ; (ű) u with double acute -dkAcuteAccent["U"] := "{u+0170}" ; (Ű) U with double acute -dkAcuteAccent["v"] := "{u+028b}" ; (ʋ) v with hook -dkAcuteAccent["V"] := "{u+01b2}" ; (Ʋ) V with hook -dkAcuteAccent["w"] := "{u+1e83}" ; (ẃ) w with acute -dkAcuteAccent["W"] := "{u+1e82}" ; (Ẃ) W with acute -dkAcuteAccent["y"] := "{u+00fd}" ; (ý) y with acute -dkAcuteAccent["Y"] := "{u+00dd}" ; (Ý) Y with acute -dkAcuteAccent["z"] := "{u+017a}" ; (ź) z with acute -dkAcuteAccent["Z"] := "{u+0179}" ; (Ź) Z with acute -dkAcuteAccent["2"] := "{u+266b}" ; (♫) beamed eighth notes -dkAcuteAccent["3"] := "{u+2042}" ; (⁂) asterism -dkAcuteAccent["4"] := "{u+2605}" ; (★) black star -dkAcuteAccent["5"] := "{u+2606}" ; (☆) white star -dkAcuteAccent["6"] := "{u+273d}" ; (✽) heavy teardrop-spoked asterisk -dkAcuteAccent["7"] := "{u+273b}" ; (✻) teardrop-spoked asterisk -dkAcuteAccent["8"] := "{u+266a}" ; (♪) eighth note -dkAcuteAccent["9"] := "{u+2706}" ; (✆) telephone location sign -dkAcuteAccent["0"] := "{u+2709}" ; (✉) envelope -dkAcuteAccent["@"] := "{u+266b}" ; (♫) beamed eighth notes -dkAcuteAccent["#"] := "{u+2042}" ; (⁂) asterism -dkAcuteAccent["$"] := "{u+2605}" ; (★) black star -dkAcuteAccent["%"] := "{u+2606}" ; (☆) white star -dkAcuteAccent["^"] := "{u+273d}" ; (✽) heavy teardrop-spoked asterisk -dkAcuteAccent["&"] := "{u+273b}" ; (✻) teardrop-spoked asterisk -dkAcuteAccent["*"] := "{u+266a}" ; (♪) eighth note -dkAcuteAccent["("] := "{u+2706}" ; (✆) telephone location sign -dkAcuteAccent[")"] := "{u+2709}" ; (✉) envelope -dkAcuteAccent[chr(0x00e5)] := "{u+01fb}" ; (å -> ǻ) a with ring above and acute -dkAcuteAccent[chr(0x00c5)] := "{u+01fa}" ; (Å -> Ǻ) A with ring above and acute -dkAcuteAccent[chr(0x00e6)] := "{u+01fd}" ; (æ -> ǽ) ae with acute -dkAcuteAccent[chr(0x00c6)] := "{u+01fc}" ; (Æ -> Ǽ) AE with acute -dkAcuteAccent[chr(0x00f8)] := "{u+01ff}" ; (ø -> ǿ) o with stroke and acute -dkAcuteAccent[chr(0x00d8)] := "{u+01fe}" ; (Ø -> Ǿ) O with stroke and acute -dkAcuteAccent[chr(0x00e7)] := "{u+1e09}" ; (ç -> ḉ) c with cedilla and acute -dkAcuteAccent[chr(0x00c7)] := "{u+1e08}" ; (Ç -> Ḉ) C with cedilla and acute -dkAcuteAccent[chr(0x00e9)] := "{u+0260}" ; (é -> ɠ) g with hook -dkAcuteAccent[chr(0x00c9)] := "{u+0193}" ; (É -> Ɠ) G with hook -dkAcuteAccent[chr(0x00ec)] := "{u+028c}" ; (ì -> ʌ) latin small letter turned v -dkAcuteAccent[chr(0x00cc)] := "{u+0245}" ; (Ì -> Ʌ) latin capital letter turned V -dkAcuteAccent[chr(0x00fb)] := "{u+01b4}" ; (û -> ƴ) y with hook -dkAcuteAccent[chr(0x00db)] := "{u+01b3}" ; (Û -> Ƴ) Y with hook -dkAcuteAccent[chr(0x00f6)] := "{u+01a1}" ; (ö -> ơ) o with horn -dkAcuteAccent[chr(0x00d6)] := "{u+01a0}" ; (Ö -> Ơ) O with horn -dkAcuteAccent[chr(0x00fc)] := "{u+01b0}" ; (ü -> ư) u with horn -dkAcuteAccent[chr(0x00dc)] := "{u+01af}" ; (Ü -> Ư) U with horn -dkAcuteAccent[" "] := "{u+00b4}" ; (´) acute accent - - -; Dead Key : Diaeresis - -global dkDiaeresis := Map() -dkDiaeresis["a"] := "{u+00e4}" ; (ä) a with diaeresis -dkDiaeresis["A"] := "{u+00c4}" ; (Ä) A with diaeresis -dkDiaeresis["e"] := "{u+00eb}" ; (ë) e with diaeresis -dkDiaeresis["E"] := "{u+00cb}" ; (Ë) E with diaeresis -dkDiaeresis["h"] := "{u+1e27}" ; (ḧ) h with diaeresis -dkDiaeresis["H"] := "{u+1e26}" ; (Ḧ) H with diaeresis -dkDiaeresis["i"] := "{u+00ef}" ; (ï) i with diaeresis -dkDiaeresis["I"] := "{u+00cf}" ; (Ï) I with diaeresis -dkDiaeresis["o"] := "{u+00f6}" ; (ö) o with diaeresis -dkDiaeresis["O"] := "{u+00d6}" ; (Ö) O with diaeresis -dkDiaeresis["s"] := "{u+0283}" ; (ʃ) small letter esh -dkDiaeresis["S"] := "{u+01a9}" ; (Ʃ) capital letter esh -dkDiaeresis["t"] := "{u+1e97}" ; (ẗ) t with diaeresis -dkDiaeresis["u"] := "{u+00fc}" ; (ü) u with diaeresis -dkDiaeresis["U"] := "{u+00dc}" ; (Ü) U with diaeresis -dkDiaeresis["w"] := "{u+1e85}" ; (ẅ) w with diaeresis -dkDiaeresis["W"] := "{u+1e84}" ; (Ẅ) W with diaeresis -dkDiaeresis["x"] := "{u+1e8d}" ; (ẍ) x with diaeresis -dkDiaeresis["X"] := "{u+1e8c}" ; (Ẍ) X with diaeresis -dkDiaeresis["y"] := "{u+00ff}" ; (ÿ) y with diaeresis -dkDiaeresis["Y"] := "{u+0178}" ; (Ÿ) Y with diaeresis -dkDiaeresis[" "] := "{u+00a8}" ; (¨) diaeresis - - -; Dead Key : Grave Accent - -global dkGraveAccent := Map() -dkGraveAccent["a"] := "{u+0201}" ; (ȁ) a with double grave -dkGraveAccent["A"] := "{u+0200}" ; (Ȁ) A with double grave -dkGraveAccent["d"] := "{u+00f0}" ; (ð) small letter eth -dkGraveAccent["D"] := "{u+00d0}" ; (Ð) capital letter eth -dkGraveAccent["e"] := "{u+0205}" ; (ȅ) e with double grave -dkGraveAccent["E"] := "{u+0204}" ; (Ȅ) E with double grave -dkGraveAccent["i"] := "{u+0209}" ; (ȉ) i with double grave -dkGraveAccent["I"] := "{u+0208}" ; (Ȉ) I with double grave -dkGraveAccent["n"] := "{u+01f9}" ; (ǹ) n with grave -dkGraveAccent["N"] := "{u+01f8}" ; (Ǹ) N with grave -dkGraveAccent["o"] := "{u+020d}" ; (ȍ) o with double grave -dkGraveAccent["O"] := "{u+020c}" ; (Ȍ) O with double grave -dkGraveAccent["r"] := "{u+0211}" ; (ȑ) r with double grave -dkGraveAccent["R"] := "{u+0210}" ; (Ȑ) R with double grave -dkGraveAccent["t"] := "{u+00fe}" ; (þ) small letter thorn -dkGraveAccent["T"] := "{u+00de}" ; (Þ) capital letter thorn -dkGraveAccent["u"] := "{u+0215}" ; (ȕ) u with double grave -dkGraveAccent["U"] := "{u+0214}" ; (Ȕ) U with double grave -dkGraveAccent["w"] := "{u+1e81}" ; (ẁ) w with grave -dkGraveAccent["W"] := "{u+1e80}" ; (Ẁ) W with grave -dkGraveAccent["y"] := "{u+1ef3}" ; (ỳ) y with grave -dkGraveAccent["Y"] := "{u+1ef2}" ; (Ỳ) Y with grave -dkGraveAccent["c"] := "{u+2663}" ; (♣) black club suit -dkGraveAccent["C"] := "{u+2667}" ; (♧) white club suit -dkGraveAccent["h"] := "{u+2665}" ; (♥) black heart suit -dkGraveAccent["H"] := "{u+2661}" ; (♡) white heart suit -dkGraveAccent["m"] := "{u+2666}" ; (♦) black diamond suit -dkGraveAccent["M"] := "{u+2662}" ; (♢) white diamond suit -dkGraveAccent["s"] := "{u+2660}" ; (♠) black spade suit -dkGraveAccent["S"] := "{u+2664}" ; (♤) white spade suit -dkGraveAccent["1"] := "{u+2002}" ; en space -dkGraveAccent["2"] := "{u+2003}" ; em space -dkGraveAccent["3"] := "{u+2004}" ; three-per-em space -dkGraveAccent["4"] := "{u+2005}" ; four-per-em space -dkGraveAccent["5"] := "{u+2008}" ; punctuation space -dkGraveAccent["6"] := "{u+2006}" ; six-per-em space -dkGraveAccent["7"] := "{u+2009}" ; thin space -dkGraveAccent["8"] := "{u+200a}" ; hair space -dkGraveAccent["9"] := "{u+2007}" ; figure space -dkGraveAccent["0"] := "{u+200b}" ; zero-width space -dkGraveAccent["!"] := "{u+2002}" ; en space -dkGraveAccent["@"] := "{u+2003}" ; em space -dkGraveAccent["#"] := "{u+2004}" ; three-per-em space -dkGraveAccent["$"] := "{u+2005}" ; four-per-em space -dkGraveAccent["%"] := "{u+2008}" ; punctuation space -dkGraveAccent["^"] := "{u+2006}" ; six-per-em space -dkGraveAccent["&"] := "{u+2009}" ; thin space -dkGraveAccent["*"] := "{u+200a}" ; hair space -dkGraveAccent["("] := "{u+2007}" ; figure space -dkGraveAccent[")"] := "{u+200b}" ; zero-width space -dkGraveAccent["-"] := "{u+00a0}" ; non-breaking space -dkGraveAccent["="] := "{u+202f}" ; narrow no-break space -dkGraveAccent[" "] := "``" ; grave accent - - -; Dead Key : Tilde - -global dkTilde := Map() -dkTilde["a"] := "{u+00e3}" ; (ã) a with tilde -dkTilde["A"] := "{u+00c3}" ; (Ã) A with tilde -dkTilde["e"] := "{u+1ebd}" ; (ẽ) e with tilde -dkTilde["E"] := "{u+1ebc}" ; (Ẽ) E with tilde -dkTilde["i"] := "{u+0129}" ; (ĩ) i with tilde -dkTilde["I"] := "{u+0128}" ; (Ĩ) I with tilde -dkTilde["l"] := "{u+026b}" ; (ɫ) l with middle tilde -dkTilde["L"] := "{u+2c62}" ; (Ɫ) L with middle tilde -dkTilde["n"] := "{u+00f1}" ; (ñ) n with tilde -dkTilde["N"] := "{u+00d1}" ; (Ñ) N with tilde -dkTilde["o"] := "{u+00f5}" ; (õ) o with tilde -dkTilde["O"] := "{u+00d5}" ; (Õ) O with tilde -dkTilde["u"] := "{u+0169}" ; (ũ) u with tilde -dkTilde["U"] := "{u+0168}" ; (Ũ) U with tilde -dkTilde["v"] := "{u+1e7d}" ; (ṽ) v with tilde -dkTilde["V"] := "{u+1e7c}" ; (Ṽ) V with tilde -dkTilde["y"] := "{u+1ef9}" ; (ỹ) y with tilde -dkTilde["Y"] := "{u+1ef8}" ; (Ỹ) Y with tilde -dkTilde["g"] := "{u+ab36}" ; (ꬶ) cross-tailed g -dkTilde["h"] := "{u+0267}" ; (ɧ) small letter heng with hook -dkTilde["k"] := "{u+0138}" ; (ĸ) small letter kra -dkTilde["s"] := "{u+017f}" ; (ſ) small long s -dkTilde["1"] := "{u+2000}" ; en quad -dkTilde["2"] := "{u+2001}" ; em quad -dkTilde["!"] := "{u+2000}" ; en quad -dkTilde["@"] := "{u+2001}" ; em quad -dkTilde[" "] := "~" ; tilde - - -; Dead Key : General Symbols - -global dkSymbols := Map() -dkSymbols["a"] := "{u+00aa}" ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) -dkSymbols["A"] := "{u+00aa}" ; (ª) feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) -dkSymbols["b"] := "{u+2022}" ; (•) bullet -dkSymbols["B"] := "{u+25e6}" ; (◦) white bullet -dkSymbols["c"] := "{u+2105}" ; (℅) care of -dkSymbols["C"] := "{u+2105}" ; (℅) care of -dkSymbols["d"] := "{u+2020}" ; (†) dagger -dkSymbols["D"] := "{u+2021}" ; (‡) double dagger -dkSymbols["e"] := "{u+212e}" ; (℮) estimated symbol -dkSymbols["E"] := "{u+2709}" ; (✉) envelope -dkSymbols["f"] := "{u+2640}" ; (♀) Venus symbol (female) -dkSymbols["F"] := "{u+2640}" ; (♀) Venus symbol (female) -dkSymbols["h"] := "{u+2766}" ; (❦) floral heart -dkSymbols["H"] := "{u+2767}" ; (❧) rotated floral heart bullet -dkSymbols["i"] := "{u+22c4}" ; (⋄) diamond operator -dkSymbols["I"] := "{u+22c4}" ; (⋄) diamond operator -dkSymbols["l"] := "{u+2113}" ; (ℓ) script small l -dkSymbols["L"] := "{u+2112}" ; (ℒ) Laplace transform -dkSymbols["m"] := "{u+2642}" ; (♂) Mars symbol (male) -dkSymbols["M"] := "{u+2642}" ; (♂) Mars symbol (male) -dkSymbols["n"] := "{u+00ac}" ; (¬) not sign -dkSymbols["N"] := "{u+00ac}" ; (¬) not sign -dkSymbols["o"] := "{u+00ba}" ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) -dkSymbols["O"] := "{u+00ba}" ; (º) masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) -dkSymbols["p"] := "{u+00b6}" ; (¶) pilcrow sign -dkSymbols["P"] := "{u+2117}" ; (℗) sound recording copyright -dkSymbols["q"] := "{u+201e}" ; („) double low-9 quotation mark -dkSymbols["Q"] := "{u+201a}" ; (‚) single low-9 quotation mark -dkSymbols["r"] := "{u+00ae}" ; (®) registered sign -dkSymbols["R"] := "{u+2619}" ; (☙) reversed rotated floral heart bullet -dkSymbols["s"] := "{u+2120}" ; (℠) service mark -dkSymbols["S"] := "{u+2120}" ; (℠) service mark -dkSymbols["t"] := "{u+2122}" ; (™) trademark symbol -dkSymbols["T"] := "{u+2706}" ; (✆) telephone location sign -dkSymbols["u"] := "{u+2610}" ; (☐) ballot box -dkSymbols["U"] := "{u+2610}" ; (☐) ballot box -dkSymbols["v"] := "{u+2713}" ; (✓) check mark -dkSymbols["V"] := "{u+2714}" ; (✔) heavy check mark -dkSymbols["x"] := "{u+2717}" ; (✗) ballot x -dkSymbols["X"] := "{u+2718}" ; (✘) heavy ballot x -dkSymbols["y"] := "{u+2611}" ; (☑) ballot box with check -dkSymbols["Y"] := "{u+2612}" ; (☒) ballot box with x -dkSymbols["1"] := "{u+2116}" ; (№) numero sign -dkSymbols["2"] := "{u+00bd}" ; (½) vulgar fraction 1/2 -dkSymbols["3"] := "{u+2153}" ; (⅓) vulgar fraction 1/3 -dkSymbols["4"] := "{u+00bc}" ; (¼) vulgar fraction 1/4 -dkSymbols["5"] := "{u+2154}" ; (⅔) vulgar fraction 2/3 -dkSymbols["6"] := "{u+00be}" ; (¾) vulgar fraction 3/4 -dkSymbols["7"] := "{u+215b}" ; (⅛) vulgar fraction 1/8 -dkSymbols["8"] := "{u+215c}" ; (⅜) vulgar fraction 3/8 -dkSymbols["9"] := "{u+215d}" ; (⅝) vulgar fraction 5/8 -dkSymbols["0"] := "{u+215e}" ; (⅞) vulgar fraction 7/8 -dkSymbols["!"] := "{u+2116}" ; (№) numero sign -dkSymbols["@"] := "{u+00bd}" ; (½) vulgar fraction 1/2 -dkSymbols["#"] := "{u+2153}" ; (⅓) vulgar fraction 1/3 -dkSymbols["$"] := "{u+00bc}" ; (¼) vulgar fraction 1/4 -dkSymbols["%"] := "{u+2154}" ; (⅔) vulgar fraction 2/3 -dkSymbols["^"] := "{u+00be}" ; (¾) vulgar fraction 3/4 -dkSymbols["&"] := "{u+215b}" ; (⅛) vulgar fraction 1/8 -dkSymbols["*"] := "{u+215c}" ; (⅜) vulgar fraction 3/8 -dkSymbols["("] := "{u+215d}" ; (⅝) vulgar fraction 5/8 -dkSymbols[")"] := "{u+215e}" ; (⅞) vulgar fraction 7/8 -dkSymbols["-"] := "{u+2043}" ; (⁃) hyphen bullet -dkSymbols["_"] := "{u+2023}" ; (‣) triangular bullet -dkSymbols["="] := "{u+00d7}" ; (×) multiplication sign -dkSymbols["+"] := "{u+00f7}" ; (÷) division sign -dkSymbols[";"] := "{u+263a}" ; (☺) white smiling face -dkSymbols[":"] := "{u+263b}" ; (☻) black smiling face -dkSymbols["/"] := "{u+203c}" ; (‼) double exclamation mark -dkSymbols["?"] := "{u+203d}" ; (‽) interrobang -dkSymbols["\"] := "{u+205e}" ; (⁞) vertical four dots -dkSymbols["|"] := "{u+00a6}" ; (¦) broken bar -dkSymbols[chr(0x00e4)] := "{u+214d}" ; (ä -> ⅍) aktieselskab -dkSymbols[chr(0x00c4)] := "{u+214d}" ; (Ä -> ⅍) aktieselskab -dkSymbols[chr(0x00f6)] := "{u+2126}" ; (ö -> Ω) ohm sign (backwards compatibility) -dkSymbols[chr(0x00d6)] := "{u+2126}" ; (Ö -> Ω) ohm sign (backwards compatibility) -dkSymbols[chr(0x00bf)] := "{u+2e18}" ; (¿ -> ⸘) inverted interrobang -dkSymbols[chr(0x2026)] := "{u+2e2e}" ; (… -> ⸮) reversed question mark -dkSymbols[" "] := "{u+00d7}" ; (×) multiplication sign - - -; Dead Key : Currency - -global dkCurrency := Map() -dkCurrency["a"] := "{u+20b3}" ; (₳) Argentine austral -dkCurrency["A"] := "{u+20b3}" ; (₳) Argentine austral -dkCurrency["b"] := "{u+20bf}" ; (₿) bitcoin -dkCurrency["B"] := "{u+20bf}" ; (₿) bitcoin -dkCurrency["c"] := "{u+20a1}" ; (₡) Costa Rican colón -dkCurrency["C"] := "{u+20b5}" ; (₵) Ghanaian cedi -dkCurrency["d"] := "{u+20ab}" ; (₫) Vietnamese dong -dkCurrency["D"] := "{u+20af}" ; (₯) Greek drachma -dkCurrency["f"] := "{u+20a3}" ; (₣) French franc -dkCurrency["F"] := "{u+20a3}" ; (₣) French franc -dkCurrency["g"] := "{u+20b2}" ; (₲) Paraguayan guaraní -dkCurrency["G"] := "{u+20b2}" ; (₲) Paraguayan guaraní -dkCurrency["h"] := "{u+20b4}" ; (₴) Ukrainian hryvnia -dkCurrency["H"] := "{u+20b4}" ; (₴) Ukrainian hryvnia -dkCurrency["k"] := "{u+20ad}" ; (₭) Laotian kip -dkCurrency["K"] := "{u+20ad}" ; (₭) Laotian kip -dkCurrency["l"] := "{u+20ba}" ; (₺) Turkish lira -dkCurrency["L"] := "{u+20be}" ; (₾) Georgian lari -dkCurrency["m"] := "{u+20bc}" ; (₼) Azerbaijani manat -dkCurrency["M"] := "{u+20a5}" ; (₥) mill sign -dkCurrency["n"] := "{u+20a6}" ; (₦) Nigerian naira -dkCurrency["N"] := "{u+20a6}" ; (₦) Nigerian naira -dkCurrency["p"] := "{u+20b1}" ; (₱) Philippine peso -dkCurrency["P"] := "{u+20b1}" ; (₱) Philippine peso -dkCurrency["r"] := "{u+20b9}" ; (₹) Indian rupee -dkCurrency["R"] := "{u+20bd}" ; (₽) Russian ruble -dkCurrency["s"] := "{u+20aa}" ; (₪) Israeli new shekel -dkCurrency["S"] := "{u+20b7}" ; (₷) spesmilo -dkCurrency["t"] := "{u+20ae}" ; (₮) Mongolian tögrög (tugrik) -dkCurrency["T"] := "{u+20b8}" ; (₸) Kazakh tenge -dkCurrency["w"] := "{u+20a9}" ; (₩) South Korean won -dkCurrency["W"] := "{u+20a9}" ; (₩) South Korean won -dkCurrency["x"] := "{u+00a4}" ; (¤) currency sign -dkCurrency["X"] := "{u+00a4}" ; (¤) currency sign -dkCurrency[chr(0x00e7)] := "{u+20a2}" ; (ç -> ₢) Brazilian cruzeiro -dkCurrency[chr(0x00c7)] := "{u+20a2}" ; (Ç -> ₢) Brazilian cruzeiro -dkCurrency[chr(0x00f8)] := "{u+20a4}" ; (ø -> ₤) lira -dkCurrency[chr(0x00d8)] := "{u+20b6}" ; (Ø -> ₶) livre tournois -dkCurrency[" "] := "{u+00a4}" ; (¤) currency sign - - -; Dead Key : Greek Alphabet - -global dkGreekAlphabet := Map() -dkGreekAlphabet["a"] := "{u+03b1}" ; (α) small alpha -dkGreekAlphabet["A"] := "{u+0391}" ; (Α) capital alpha -dkGreekAlphabet["b"] := "{u+03b2}" ; (β) small beta -dkGreekAlphabet["B"] := "{u+0392}" ; (Β) capital beta -dkGreekAlphabet["v"] := "{u+03b2}" ; (β) small beta -dkGreekAlphabet["V"] := "{u+0392}" ; (Β) capital beta -dkGreekAlphabet["g"] := "{u+03b3}" ; (γ) small gamma -dkGreekAlphabet["G"] := "{u+0393}" ; (Γ) capital gamma -dkGreekAlphabet["d"] := "{u+03b4}" ; (δ) small delta -dkGreekAlphabet["D"] := "{u+0394}" ; (Δ) capital delta -dkGreekAlphabet["e"] := "{u+03b5}" ; (ε) small epsilon -dkGreekAlphabet["E"] := "{u+0395}" ; (Ε) capital epsilon -dkGreekAlphabet["z"] := "{u+03b6}" ; (ζ) small zeta -dkGreekAlphabet["Z"] := "{u+0396}" ; (Ζ) capital zeta -dkGreekAlphabet["h"] := "{u+03b7}" ; (η) small eta -dkGreekAlphabet["H"] := "{u+0397}" ; (Η) capital eta -dkGreekAlphabet["j"] := "{u+03b8}" ; (θ) small theta -dkGreekAlphabet["J"] := "{u+0398}" ; (Θ) capital theta -dkGreekAlphabet["i"] := "{u+03b9}" ; (ι) small iota -dkGreekAlphabet["I"] := "{u+0399}" ; (Ι) capital iota -dkGreekAlphabet["k"] := "{u+03ba}" ; (κ) small kappa -dkGreekAlphabet["K"] := "{u+039a}" ; (Κ) capital kappa -dkGreekAlphabet["l"] := "{u+03bb}" ; (λ) small lambda -dkGreekAlphabet["L"] := "{u+039b}" ; (Λ) capital lambda -dkGreekAlphabet["m"] := "{u+03bc}" ; (μ) small mu -dkGreekAlphabet["M"] := "{u+039c}" ; (Μ) capital mu -dkGreekAlphabet["n"] := "{u+03bd}" ; (ν) small nu -dkGreekAlphabet["N"] := "{u+039d}" ; (Ν) capital nu -dkGreekAlphabet["x"] := "{u+03be}" ; (ξ) small xi -dkGreekAlphabet["X"] := "{u+039e}" ; (Ξ) capital xi -dkGreekAlphabet["o"] := "{u+03bf}" ; (ο) small omicron -dkGreekAlphabet["O"] := "{u+039f}" ; (Ο) capital omicron -dkGreekAlphabet["p"] := "{u+03c0}" ; (π) small pi -dkGreekAlphabet["P"] := "{u+03a0}" ; (Π) capital pi -dkGreekAlphabet["r"] := "{u+03c1}" ; (ρ) small rho -dkGreekAlphabet["R"] := "{u+03a1}" ; (Ρ) capital rho -dkGreekAlphabet["s"] := "{u+03c3}" ; (σ) small sigma -dkGreekAlphabet["S"] := "{u+03a3}" ; (Σ) capital sigma -dkGreekAlphabet[","] := "{u+03c2}" ; (ς) small final sigma -dkGreekAlphabet["t"] := "{u+03c4}" ; (τ) small tau -dkGreekAlphabet["T"] := "{u+03a4}" ; (Τ) capital tau -dkGreekAlphabet["u"] := "{u+03c5}" ; (υ) small upsilon -dkGreekAlphabet["U"] := "{u+03a5}" ; (Υ) capital upsilon -dkGreekAlphabet["y"] := "{u+03c5}" ; (υ) small upsilon -dkGreekAlphabet["Y"] := "{u+03a5}" ; (Υ) capital upsilon -dkGreekAlphabet["f"] := "{u+03c6}" ; (φ) small phi -dkGreekAlphabet["F"] := "{u+03a6}" ; (Φ) capital phi -dkGreekAlphabet["c"] := "{u+03c7}" ; (χ) small chi -dkGreekAlphabet["C"] := "{u+03a7}" ; (Χ) capital chi -dkGreekAlphabet["w"] := "{u+03c8}" ; (ψ) small psi -dkGreekAlphabet["W"] := "{u+03a8}" ; (Ψ) capital psi -dkGreekAlphabet["q"] := "{u+03c9}" ; (ω) small omega -dkGreekAlphabet["Q"] := "{u+03a9}" ; (Ω) capital omega -dkGreekAlphabet["1"] := "{u+00b9}" ; (¹) superscript 1 -dkGreekAlphabet["2"] := "{u+00b2}" ; (²) superscript 2 -dkGreekAlphabet["3"] := "{u+00b3}" ; (³) superscript 3 -dkGreekAlphabet["4"] := "{u+2074}" ; (⁴) superscript 4 -dkGreekAlphabet["5"] := "{u+2075}" ; (⁵) superscript 5 -dkGreekAlphabet["6"] := "{u+2076}" ; (⁶) superscript 6 -dkGreekAlphabet["7"] := "{u+2077}" ; (⁷) superscript 7 -dkGreekAlphabet["8"] := "{u+2078}" ; (⁸) superscript 8 -dkGreekAlphabet["9"] := "{u+2079}" ; (⁹) superscript 9 -dkGreekAlphabet["0"] := "{u+2070}" ; (⁰) superscript 0 -dkGreekAlphabet["-"] := "{u+207b}" ; (⁻) superscript - -dkGreekAlphabet["="] := "{u+207c}" ; (⁼) superscript = -dkGreekAlphabet["+"] := "{u+207a}" ; (⁺) superscript + -dkGreekAlphabet["["] := "{u+207d}" ; (⁽) superscript ( -dkGreekAlphabet["]"] := "{u+207e}" ; (⁾) superscript ) -dkGreekAlphabet["!"] := "{u+2081}" ; (₁) subscript 1 -dkGreekAlphabet["@"] := "{u+2082}" ; (₂) subscript 2 -dkGreekAlphabet["#"] := "{u+2083}" ; (₃) subscript 3 -dkGreekAlphabet["$"] := "{u+2084}" ; (₄) subscript 4 -dkGreekAlphabet["%"] := "{u+2085}" ; (₅) subscript 5 -dkGreekAlphabet["^"] := "{u+2086}" ; (₆) subscript 6 -dkGreekAlphabet["&"] := "{u+2087}" ; (₇) subscript 7 -dkGreekAlphabet["*"] := "{u+2088}" ; (₈) subscript 8 -dkGreekAlphabet["("] := "{u+2089}" ; (₉) subscript 9 -dkGreekAlphabet[")"] := "{u+2080}" ; (₀) subscript 0 -dkGreekAlphabet[";"] := "{u+208b}" ; (₋) subscript - -dkGreekAlphabet["'"] := "{u+208c}" ; (₌) subscript = -dkGreekAlphabet[chr(34)] := "{u+208a}" ; (₊) subscript + -dkGreekAlphabet["{"] := "{u+208d}" ; (₍) subscript ( -dkGreekAlphabet["}"] := "{u+208e}" ; (₎) subscript ) -dkGreekAlphabet["."] := "{u+00b5}" ; (µ) micro sign -dkGreekAlphabet[chr(0x00df)] := "{u+03c2}" ; (ß -> ς) small final sigma -dkGreekAlphabet[" "] := "{u+03bc}" ; (μ) small mu - - -; Dead Key : Math Symbols - -global dkMathSymbols := Map() -dkMathSymbols["a"] := "{u+2200}" ; (∀) for all -dkMathSymbols["A"] := "{u+2200}" ; (∀) for all -dkMathSymbols["b"] := "{u+2286}" ; (⊆) subset of or equal to -dkMathSymbols["B"] := "{u+2287}" ; (⊇) superset of or equal to -dkMathSymbols["c"] := "{u+221d}" ; (∝) proportional to -dkMathSymbols["C"] := "{u+2102}" ; (ℂ) complex numbers -dkMathSymbols["d"] := "{u+2206}" ; (∆) increment operator -dkMathSymbols["D"] := "{u+2207}" ; (∇) nabla/del operator -dkMathSymbols["e"] := "{u+2203}" ; (∃) there exists -dkMathSymbols["E"] := "{u+2204}" ; (∄) there does not exist -dkMathSymbols["f"] := "{u+0192}" ; (ƒ) f with hook -dkMathSymbols["F"] := "{u+220e}" ; (∎) end of proof -dkMathSymbols["g"] := "{u+2282}" ; (⊂) subset of -dkMathSymbols["G"] := "{u+2284}" ; (⊄) not a subset of -dkMathSymbols["h"] := "{u+2283}" ; (⊃) superset of -dkMathSymbols["H"] := "{u+2285}" ; (⊅) not a superset of -dkMathSymbols["i"] := "{u+221e}" ; (∞) infinity symbol -dkMathSymbols["I"] := "{u+2111}" ; (ℑ) imaginary numbers -dkMathSymbols["k"] := "{u+220b}" ; (∋) contains as member -dkMathSymbols["K"] := "{u+220c}" ; (∌) does not contain as member -dkMathSymbols["l"] := "{u+2225}" ; (∥) parallel to -dkMathSymbols["L"] := "{u+2226}" ; (∦) not parallel to -dkMathSymbols["m"] := "{u+2208}" ; (∈) element of -dkMathSymbols["M"] := "{u+2209}" ; (∉) not an element of -dkMathSymbols["n"] := "{u+207f}" ; (ⁿ) superscript n -dkMathSymbols["N"] := "{u+2115}" ; (ℕ) natural numbers -dkMathSymbols["o"] := "{u+2218}" ; (∘) ring operator -dkMathSymbols["O"] := "{u+2205}" ; (∅) empty set -dkMathSymbols["p"] := "{u+2202}" ; (∂) partial differential -dkMathSymbols["P"] := "{u+2119}" ; (ℙ) prime numbers -dkMathSymbols["q"] := "{u+211a}" ; (ℚ) rational numbers -dkMathSymbols["Q"] := "{u+211a}" ; (ℚ) rational numbers -dkMathSymbols["r"] := "{u+221a}" ; (√) square root -dkMathSymbols["R"] := "{u+211d}" ; (ℝ) real numbers -dkMathSymbols["s"] := "{u+2229}" ; (∩) set intersection -dkMathSymbols["S"] := "{u+222b}" ; (∫) integral symbol -dkMathSymbols["u"] := "{u+222a}" ; (∪) set union -dkMathSymbols["U"] := "{u+2216}" ; (∖) set minus -dkMathSymbols["w"] := "{u+2118}" ; (℘) Weierstrass elliptic function -dkMathSymbols["W"] := "{u+2118}" ; (℘) Weierstrass elliptic function -dkMathSymbols["z"] := "{u+21af}" ; (↯) downwards zigzag arrow -dkMathSymbols["Z"] := "{u+2124}" ; (ℤ) whole numbers -dkMathSymbols["1"] := "{u+2260}" ; (≠) not equal to -dkMathSymbols["!"] := "{u+2260}" ; (≠) not equal to -dkMathSymbols["2"] := "{u+221a}" ; (√) square root -dkMathSymbols["@"] := "{u+221a}" ; (√) square root -dkMathSymbols["3"] := "{u+221b}" ; (∛) cube root -dkMathSymbols["#"] := "{u+221b}" ; (∛) cube root -dkMathSymbols["4"] := "{u+221c}" ; (∜) fourth root -dkMathSymbols["$"] := "{u+221c}" ; (∜) fourth root -dkMathSymbols["5"] := "{u+2030}" ; (‰) per mille sign -dkMathSymbols["%"] := "{u+2031}" ; (‱) per ten thousand sign -dkMathSymbols["6"] := "{u+2220}" ; (∠) angle symbol -dkMathSymbols["^"] := "{u+2220}" ; (∠) angle symbol -dkMathSymbols["7"] := "{u+2227}" ; (∧) logical and -dkMathSymbols["&"] := "{u+2227}" ; (∧) logical and -dkMathSymbols["8"] := "{u+2297}" ; (⊗) circled times -dkMathSymbols["*"] := "{u+2297}" ; (⊗) circled times -dkMathSymbols["9"] := "{u+221f}" ; (∟) right angle -dkMathSymbols["("] := "{u+221f}" ; (∟) right angle -dkMathSymbols["0"] := "{u+2221}" ; (∡) measured angle -dkMathSymbols[")"] := "{u+2221}" ; (∡) measured angle -dkMathSymbols["``"] := "{u+2248}" ; (≈) almost equal to -dkMathSymbols["~"] := "{u+2248}" ; (≈) almost equal to -dkMathSymbols[","] := "{u+2264}" ; (≤) less-than or equal to -dkMathSymbols["<"] := "{u+2264}" ; (≤) less-than or equal to -dkMathSymbols["."] := "{u+2265}" ; (≥) greater-than or equal to -dkMathSymbols[">"] := "{u+2265}" ; (≥) greater-than or equal to -dkMathSymbols["-"] := "{u+00b1}" ; (±) plus-minus sign -dkMathSymbols["_"] := "{u+2296}" ; (⊖) circled minus -dkMathSymbols["/"] := "{u+2298}" ; (⊘) circled division slash -dkMathSymbols["="] := "{u+225d}" ; (≝) equal to by definition -dkMathSymbols["+"] := "{u+2295}" ; (⊕) circled plus -dkMathSymbols[";"] := "{u+2235}" ; (∵) because sign -dkMathSymbols[":"] := "{u+2234}" ; (∴) therefore sign -dkMathSymbols["'"] := "{u+2032}" ; (′) prime -dkMathSymbols[chr(34)] := "{u+2033}" ; (″) double prime -dkMathSymbols["["] := "{u+2034}" ; (‴) triple prime -dkMathSymbols["]"] := "{u+2057}" ; (⁗) quadruple prime -dkMathSymbols["\"] := "{u+2228}" ; (∨) logical or -dkMathSymbols["|"] := "{u+2228}" ; (∨) logical or -dkMathSymbols[chr(0x00e7)] := "{u+2245}" ; (ç -> ≅) congruent to -dkMathSymbols[chr(0x00c7)] := "{u+2247}" ; (Ç -> ≇) not congruent to -dkMathSymbols[chr(0x00f6)] := "{u+2300}" ; (ö -> ⌀) diameter sign -dkMathSymbols[chr(0x00d6)] := "{u+2300}" ; (Ö -> ⌀) diameter sign -dkMathSymbols[chr(0x00f5)] := "{u+2261}" ; (õ -> ≡) identical to -dkMathSymbols[chr(0x00d5)] := "{u+2262}" ; (Õ -> ≢) not identical to -dkMathSymbols[" "] := "{u+221a}" ; (√) square root - - -fSendSecondChar(char) { -; function for keeping correct operation after dead key press when Scroll Lock is enabled - - if GetKeyState("ScrollLock", "T") { - if (char == "1") - return "!" - else if (char == "2") - return "@" - else if (char == "3") - return "#" - else if (char == "4") - return "$" - else if (char == "5") - return "%" - else if (char == "6") - return "^" - else if (char == "7") - return "&" - else if (char == "8") - return "*" - else if (char == "9") - return "(" - else if (char == "0") - return ")" - else if (char == "!") - return "1" - else if (char == "@") - return "2" - else if (char == "#") - return "3" - else if (char == "$") - return "4" - else if (char == "%") - return "5" - else if (char == "^") - return "6" - else if (char == "&") - return "7" - else if (char == "*") - return "8" - else if (char == "(") - return "9" - else if (char == ")") - return "0" - else - return char - } - else - return char -} - - -; Configuration : Switch positions of symbols and digits with Scroll Lock - -$1:: { - if GetKeyState("ScrollLock", "T") - Send "{!}" ; exclamation mark - else - Send "1" ; digit 1 -} -$+1:: { - if GetKeyState("ScrollLock", "T") - Send "1" ; digit 1 - else - Send "{!}" ; exclamation mark -} - -$2:: { - if GetKeyState("ScrollLock", "T") - Send "@" ; at sign - else - Send "2" ; digit 2 -} -$+2:: { - if GetKeyState("ScrollLock", "T") - Send "2" ; digit 2 - else - Send "@" ; at sign -} - -$3:: { - if GetKeyState("ScrollLock", "T") - Send "{#}" ; number sign - else - Send "3" ; digit 3 -} -$+3:: { - if GetKeyState("ScrollLock", "T") - Send "3" ; digit 3 - else - Send "{#}" ; number sign -} - -$4:: { - if GetKeyState("ScrollLock", "T") - Send "$" ; dollar sign - else - Send "4" ; digit 4 -} -$+4:: { - if GetKeyState("ScrollLock", "T") - Send "4" ; digit 4 - else - Send "$" ; dollar sign -} - -$5:: { - if GetKeyState("ScrollLock", "T") - Send "`%" ; percent sign - else - Send "5" ; digit 5 -} -$+5:: { - if GetKeyState("ScrollLock", "T") - Send "5" ; digit 5 - else - Send "`%" ; percent sign -} - -$6:: { - if GetKeyState("ScrollLock", "T") - Send "{^}" ; circumflex accent - else - Send "6" ; digit 6 -} -$+6:: { - if GetKeyState("ScrollLock", "T") - Send "6" ; digit 6 - else - Send "{^}" ; circumflex accent -} - -$7:: { - if GetKeyState("ScrollLock", "T") - Send "&" ; ampersand - else - Send "7" ; digit 7 -} -$+7:: { - if GetKeyState("ScrollLock", "T") - Send "7" ; digit 7 - else - Send "&" ; ampersand -} - -$8:: { - if GetKeyState("ScrollLock", "T") - Send "*" ; asterisk - else - Send "8" ; digit 8 -} -$+8:: { - if GetKeyState("ScrollLock", "T") - Send "8" ; digit 8 - else - Send "*" ; asterisk -} - -$9:: { - if GetKeyState("ScrollLock", "T") - Send "(" ; left parenthesis - else - Send "9" ; digit 9 -} -$+9:: { - if GetKeyState("ScrollLock", "T") - Send "9" ; digit 9 - else - Send "(" ; left parenthesis -} - -$0:: { - if GetKeyState("ScrollLock", "T") - Send ")" ; right parenthesis - else - Send "0" ; digit 0 -} -$+0:: { - if GetKeyState("ScrollLock", "T") - Send "0" ; digit 0 - else - Send ")" ; right parenthesis -} - - -; Configuration : 'Right Alt' and 'Right Alt + Shift' on US QWERTY - ->!a:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c4}" ; (Ä) A with diaeresis - else - Send "{u+00e4}" ; (ä) a with diaeresis -} ->!+a:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e4}" ; (ä) a with diaeresis - else - Send "{u+00c4}" ; (Ä) A with diaeresis - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey -} - ->!q:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c6}" ; (Æ) letter AE - else - Send "{u+00e6}" ; (æ) letter ae -} ->!+q:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e6}" ; (æ) letter ae - else - Send "{u+00c6}" ; (Æ) letter AE - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey -} - ->!w:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c5}" ; (Å) A with ring above - else - Send "{u+00e5}" ; (å) a with ring above -} ->!+w:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e5}" ; (å) a with ring above - else - Send "{u+00c5}" ; (Å) A with ring above - Send "{blind}{vkE8}" -} - ->!z:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c0}" ; (À) A with grave - else - Send "{u+00e0}" ; (à) a with grave -} ->!+z:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e0}" ; (à) a with grave - else - Send "{u+00c0}" ; (À) A with grave - Send "{blind}{vkE8}" -} - ->!x:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c1}" ; (Á) A with acute - else - Send "{u+00e1}" ; (á) a with acute -} ->!+x:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e1}" ; (á) a with acute - else - Send "{u+00c1}" ; (Á) A with acute - Send "{blind}{vkE8}" -} - ->!d:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c2}" ; (Â) A with circumflex - else - Send "{u+00e2}" ; (â) a with circumflex -} ->!+d:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e2}" ; (â) a with circumflex - else - Send "{u+00c2}" ; (Â) A with circumflex - Send "{blind}{vkE8}" -} - ->!c:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c7}" ; (Ç) C with cedilla - else - Send "{u+00e7}" ; (ç) c with cedilla -} ->!+c:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e7}" ; (ç) c with cedilla - else - Send "{u+00c7}" ; (Ç) C with cedilla - Send "{blind}{vkE8}" -} - ->!e:: { - if GetKeyState("CapsLock", "T") - Send "{u+00cb}" ; (Ë) E with diaeresis - else - Send "{u+00eb}" ; (ë) e with diaeresis -} ->!+e:: { - if GetKeyState("CapsLock", "T") - Send "{u+00eb}" ; (ë) e with diaeresis - else - Send "{u+00cb}" ; (Ë) E with diaeresis - Send "{blind}{vkE8}" -} - ->!f:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c8}" ; (È) E with grave - else - Send "{u+00e8}" ; (è) e with grave -} ->!+f:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e8}" ; (è) e with grave - else - Send "{u+00c8}" ; (È) E with grave - Send "{blind}{vkE8}" -} - ->!g:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c9}" ; (É) E with acute - else - Send "{u+00e9}" ; (é) e with acute -} ->!+g:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e9}" ; (é) e with acute - else - Send "{u+00c9}" ; (É) E with acute - Send "{blind}{vkE8}" -} - ->!r:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ca}" ; (Ê) E with circumflex - else - Send "{u+00ea}" ; (ê) e with circumflex -} ->!+r:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ea}" ; (ê) e with circumflex - else - Send "{u+00ca}" ; (Ê) E with circumflex - Send "{blind}{vkE8}" -} - ->!i:: { - if GetKeyState("CapsLock", "T") - Send "{u+00cf}" ; (Ï) I with diaeresis - else - Send "{u+00ef}" ; (ï) i with diaeresis -} ->!+i:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ef}" ; (ï) i with diaeresis - else - Send "{u+00cf}" ; (Ï) I with diaeresis - Send "{blind}{vkE8}" -} - ->!v:: { - if GetKeyState("CapsLock", "T") - Send "{u+00cc}" ; (Ì) I with grave - else - Send "{u+00ec}" ; (ì) i with grave -} ->!+v:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ec}" ; (ì) i with grave - else - Send "{u+00cc}" ; (Ì) I with grave - Send "{blind}{vkE8}" -} - ->!b:: { - if GetKeyState("CapsLock", "T") - Send "{u+00cd}" ; (Í) I with acute - else - Send "{u+00ed}" ; (í) i with acute -} ->!+b:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ed}" ; (í) i with acute - else - Send "{u+00cd}" ; (Í) I with acute - Send "{blind}{vkE8}" -} - ->!t:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ce}" ; (Î) I with circumflex - else - Send "{u+00ee}" ; (î) i with circumflex -} ->!+t:: { - if GetKeyState("CapsLock", "T") - Send "{u+00ee}" ; (î) i with circumflex - else - Send "{u+00ce}" ; (Î) I with circumflex - Send "{blind}{vkE8}" -} - ->!n:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d1}" ; (Ñ) N with tilde - else - Send "{u+00f1}" ; (ñ) n with tilde -} ->!+n:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f1}" ; (ñ) n with tilde - else - Send "{u+00d1}" ; (Ñ) N with tilde - Send "{blind}{vkE8}" -} - ->!o:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d6}" ; (Ö) O with diaeresis - else - Send "{u+00f6}" ; (ö) o with diaeresis -} ->!+o:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f6}" ; (ö) o with diaeresis - else - Send "{u+00d6}" ; (Ö) O with diaeresis - Send "{blind}{vkE8}" -} - ->!k:: { - if GetKeyState("CapsLock", "T") - Send "{u+0152}" ; (Œ) ligature OE - else - Send "{u+0153}" ; (œ) ligature oe -} ->!+k:: { - if GetKeyState("CapsLock", "T") - Send "{u+0153}" ; (œ) ligature oe - else - Send "{u+0152}" ; (Œ) ligature OE - Send "{blind}{vkE8}" -} - ->!l:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d8}" ; (Ø) O with stroke - else - Send "{u+00f8}" ; (ø) o with stroke -} ->!+l:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f8}" ; (ø) o with stroke - else - Send "{u+00d8}" ; (Ø) O with stroke - Send "{blind}{vkE8}" -} - ->!,:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d2}" ; (Ò) O with grave - else - Send "{u+00f2}" ; (ò) o with grave -} ->!<:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f2}" ; (ò) o with grave - else - Send "{u+00d2}" ; (Ò) O with grave - Send "{blind}{vkE8}" -} - ->!.:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d3}" ; (Ó) O with acute - else - Send "{u+00f3}" ; (ó) o with acute -} ->!>:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f3}" ; (ó) o with acute - else - Send "{u+00d3}" ; (Ó) O with acute - Send "{blind}{vkE8}" -} - ->!p:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d4}" ; (Ô) O with circumflex - else - Send "{u+00f4}" ; (ô) o with circumflex -} ->!+p:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f4}" ; (ô) o with circumflex - else - Send "{u+00d4}" ; (Ô) O with circumflex - Send "{blind}{vkE8}" -} - ->!s:: { - if GetKeyState("CapsLock", "T") - Send "{u+1e9e}" ; (ẞ) capital sharp S (capital Eszett) - else - Send "{u+00df}" ; (ß) small sharp s (Eszett) -} ->!+s:: { - if GetKeyState("CapsLock", "T") - Send "{u+00df}" ; (ß) small sharp s (Eszett) - else - Send "{u+1e9e}" ; (ẞ) capital sharp S (capital Eszett) - Send "{blind}{vkE8}" -} - ->!u:: { - if GetKeyState("CapsLock", "T") - Send "{u+00dc}" ; (Ü) U with diaeresis - else - Send "{u+00fc}" ; (ü) u with diaeresis -} ->!+u:: { - if GetKeyState("CapsLock", "T") - Send "{u+00fc}" ; (ü) u with diaeresis - else - Send "{u+00dc}" ; (Ü) U with diaeresis - Send "{blind}{vkE8}" -} - ->!h:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d9}" ; (Ù) U with grave - else - Send "{u+00f9}" ; (ù) u with grave -} ->!+h:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f9}" ; (ù) u with grave - else - Send "{u+00d9}" ; (Ù) U with grave - Send "{blind}{vkE8}" -} - ->!j:: { - if GetKeyState("CapsLock", "T") - Send "{u+00da}" ; (Ú) U with acute - else - Send "{u+00fa}" ; (ú) u with acute -} ->!+j:: { - if GetKeyState("CapsLock", "T") - Send "{u+00fa}" ; (ú) u with acute - else - Send "{u+00da}" ; (Ú) U with acute - Send "{blind}{vkE8}" -} - ->!y:: { - if GetKeyState("CapsLock", "T") - Send "{u+00db}" ; (Û) U with circumflex - else - Send "{u+00fb}" ; (û) u with circumflex -} ->!+y:: { - if GetKeyState("CapsLock", "T") - Send "{u+00fb}" ; (û) u with circumflex - else - Send "{u+00db}" ; (Û) U with circumflex - Send "{blind}{vkE8}" -} - ->!-:: { - if GetKeyState("CapsLock", "T") - Send "{u+00c3}" ; (Ã) A with tilde - else - Send "{u+00e3}" ; (ã) a with tilde -} ->!_:: { - if GetKeyState("CapsLock", "T") - Send "{u+00e3}" ; (ã) a with tilde - else - Send "{u+00c3}" ; (Ã) A with tilde - Send "{blind}{vkE8}" -} - ->!=:: { - if GetKeyState("CapsLock", "T") - Send "{u+00d5}" ; (Õ) O with tilde - else - Send "{u+00f5}" ; (õ) o with tilde -} ->!+=:: { - if GetKeyState("CapsLock", "T") - Send "{u+00f5}" ; (õ) o with tilde - else - Send "{u+00d5}" ; (Õ) O with tilde - Send "{blind}{vkE8}" -} - ->!1::Send "{u+00a1}" ; (¡) inverted exclamation mark ->!+1:: { - Send "{u+00b9}" ; (¹) superscript 1 - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey -} - ->!2::Send "{u+00a9}" ; (©) copyright sign ->!+2:: { - Send "{u+00b2}" ; (²) superscript 2 - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey -} - ->!3::Send "{u+00a7}" ; (§) section sign ->!+3:: { - Send "{u+00b3}" ; (³) superscript 3 - Send "{blind}{vkE8}" -} - ->!4::Send "{u+00a3}" ; (£) pound sign ->!+4:: { - Send "{u+00a5}" ; (¥) yen sign - Send "{blind}{vkE8}" -} - ->!5::Send "{u+20ac}" ; (€) euro sign ->!+5:: { - Send "{u+00a2}" ; (¢) cent sign (dollar) - Send "{blind}{vkE8}" -} - ->!9::Send "{u+201c}" ; (“) left double quotation mark ->!+9:: { - Send "{u+2018}" ; (‘) left single quotation mark - Send "{blind}{vkE8}" -} - ->!0::Send "{u+201d}" ; (”) right double quotation mark ->!+0:: { - Send "{u+2019}" ; (’) right single quotation mark - Send "{blind}{vkE8}" -} - ->![::Send "{u+00ab}" ; («) left-pointing double angle quotation mark ->!{:: { - Send "{u+2039}" ; (‹) left-pointing single angle quotation mark - Send "{blind}{vkE8}" -} - ->!]::Send "{u+00bb}" ; (») right-pointing double angle quotation mark ->!}:: { - Send "{u+203a}" ; (›) right-pointing single angle quotation mark - Send "{blind}{vkE8}" -} - ->!;::Send "{u+00b0}" ; (°) degree sign ->!+;:: { - Send "{u+00b7}" ; (·) middle dot - Send "{blind}{vkE8}" -} - ->!/::Send "{u+00bf}" ; (¿) inverted question mark ->!?:: { - Send "{u+2026}" ; (…) horizontal ellipsis - Send "{blind}{vkE8}" -} - ->!space::Send "{u+00a0}" ; non-breaking space ->!+space:: { - Send "{u+00a0}" ; non-breaking space - Send "{blind}{vkE8}" -} - - -; Configuration : Dead Keys on 'Right Alt' and 'Right Alt + Shift' - ->!6:: { - Send "{blind}{vkE8}" ; suppresses circles around mouse pointer - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkCircumflex.Has(fSendSecondChar(ih.Input)) - Send dkCircumflex[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey (for second character with 'Right Alt + Shift') -} ->!+6:: { - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkCaron.Has(fSendSecondChar(ih.Input)) - Send dkCaron[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" ; suppresses 'Right Alt + Shift' hotkey (for second character with 'Right Alt + Shift') -} - ->!7:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkDotAbove.Has(fSendSecondChar(ih.Input)) - Send dkDotAbove[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} ->!+7:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkMacronStroke.Has(fSendSecondChar(ih.Input)) - Send dkMacronStroke[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} - ->!8:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkCedillaOgonek.Has(fSendSecondChar(ih.Input)) - Send dkCedillaOgonek[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} ->!+8:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkBreveSpecial.Has(fSendSecondChar(ih.Input)) - Send dkBreveSpecial[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} - ->!':: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkAcuteAccent.Has(fSendSecondChar(ih.Input)) - Send dkAcuteAccent[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} ->!":: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkDiaeresis.Has(fSendSecondChar(ih.Input)) - Send dkDiaeresis[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} - ->!`:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkGraveAccent.Has(fSendSecondChar(ih.Input)) - Send dkGraveAccent[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} ->!~:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkTilde.Has(fSendSecondChar(ih.Input)) - Send dkTilde[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} - ->!\:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkSymbols.Has(fSendSecondChar(ih.Input)) - Send dkSymbols[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} ->!|:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkCurrency.Has(fSendSecondChar(ih.Input)) - Send dkCurrency[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} - ->!m:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkGreekAlphabet.Has(fSendSecondChar(ih.Input)) - Send dkGreekAlphabet[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} ->!+m:: { - Send "{blind}{vkE8}" - ih := InputHook("L1", dkEndKeys) - ih.Start() - ih.Wait() - if dkMathSymbols.Has(fSendSecondChar(ih.Input)) - Send dkMathSymbols[fSendSecondChar(ih.Input)] - Send "{blind}{vkE8}" -} -- 2.47.3 From 3f474631465072858520af1d37944440331cb53f Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:17:48 +0100 Subject: [PATCH 09/16] Add files via upload Some minor changes have been made, mostly concerning the dead key 'currency'. --- msklc/UltimateKEYS SW.klc | 16 +++++++++------- msklc/UltimateKEYS.klc | 16 +++++++++------- 2 files changed, 18 insertions(+), 14 deletions(-) diff --git a/msklc/UltimateKEYS SW.klc b/msklc/UltimateKEYS SW.klc index b07e916..617f6e0 100644 --- a/msklc/UltimateKEYS SW.klc +++ b/msklc/UltimateKEYS SW.klc @@ -1,4 +1,4 @@ -KBD ultksw "UltimateKEYS SW - 2021-10-28" +KBD ultksw "UltimateKEYS SW - 2021-11-14" COPYRIGHT "License: GNU General Public License Version 3" @@ -718,14 +718,14 @@ DEADKEY 00d7 // Dead Key : General Symbols DEADKEY 00a4 // Dead Key : Currency -0061 20b3 // a -> ₳ Argentine austral +0061 058f // a -> ֏ Armenian dram 0041 20b3 // A -> ₳ Argentine austral 0062 20bf // b -> ₿ bitcoin -0042 20bf // B -> ₿ bitcoin +0042 0e3f // B -> ฿ Thai baht 0063 20a1 // c -> ₡ Costa Rican colón 0043 20b5 // C -> ₵ Ghanaian cedi 00e7 20a2 // ç -> ₢ Brazilian cruzeiro -00c7 20a2 // Ç -> ₢ Brazilian cruzeiro +00c7 20a0 // Ç -> ₠ euro-currency sign 0064 20ab // d -> ₫ Vietnamese dong 0044 20af // D -> ₯ Greek drachma 0066 20a3 // f -> ₣ French franc @@ -743,11 +743,13 @@ DEADKEY 00a4 // Dead Key : Currency 006d 20bc // m -> ₼ Azerbaijani manat 004d 20a5 // M -> ₥ mill sign 006e 20a6 // n -> ₦ Nigerian naira -004e 20a6 // N -> ₦ Nigerian naira +004e 20bb // N -> ₻ nordic mark 0070 20b1 // p -> ₱ Philippine peso -0050 20b1 // P -> ₱ Philippine peso +0050 20a7 // P -> ₧ Spanish pesetas 0072 20b9 // r -> ₹ Indian rupee 0052 20bd // R -> ₽ Russian ruble +00ea 20a8 // ê -> ₨ rupee sign +00ca 20a8 // Ê -> ₨ rupee sign 0073 20aa // s -> ₪ Israeli new shekel 0053 20b7 // S -> ₷ spesmilo 0074 20ae // t -> ₮ Mongolian tögrög (tugrik) @@ -909,7 +911,7 @@ DEADKEY 0020 // Dead Key : Math Symbols 005e 2220 // ^ -> ∠ angle symbol 0037 2227 // 7 -> ∧ logical and 0026 2227 // & -> ∧ logical and -0038 2297 // 8 -> ⊗ circled times +0038 2299 // 8 -> ⊙ circled dot operator 002a 2297 // * -> ⊗ circled times 0039 221f // 9 -> ∟ right angle 0028 221f // ( -> ∟ right angle diff --git a/msklc/UltimateKEYS.klc b/msklc/UltimateKEYS.klc index a005ce0..8803e02 100644 --- a/msklc/UltimateKEYS.klc +++ b/msklc/UltimateKEYS.klc @@ -1,4 +1,4 @@ -KBD ultkeys "UltimateKEYS - 2021-10-28" +KBD ultkeys "UltimateKEYS - 2021-11-14" COPYRIGHT "License: GNU General Public License Version 3" @@ -718,14 +718,14 @@ DEADKEY 00d7 // Dead Key : General Symbols DEADKEY 00a4 // Dead Key : Currency -0061 20b3 // a -> ₳ Argentine austral +0061 058f // a -> ֏ Armenian dram 0041 20b3 // A -> ₳ Argentine austral 0062 20bf // b -> ₿ bitcoin -0042 20bf // B -> ₿ bitcoin +0042 0e3f // B -> ฿ Thai baht 0063 20a1 // c -> ₡ Costa Rican colón 0043 20b5 // C -> ₵ Ghanaian cedi 00e7 20a2 // ç -> ₢ Brazilian cruzeiro -00c7 20a2 // Ç -> ₢ Brazilian cruzeiro +00c7 20a0 // Ç -> ₠ euro-currency sign 0064 20ab // d -> ₫ Vietnamese dong 0044 20af // D -> ₯ Greek drachma 0066 20a3 // f -> ₣ French franc @@ -743,11 +743,13 @@ DEADKEY 00a4 // Dead Key : Currency 006d 20bc // m -> ₼ Azerbaijani manat 004d 20a5 // M -> ₥ mill sign 006e 20a6 // n -> ₦ Nigerian naira -004e 20a6 // N -> ₦ Nigerian naira +004e 20bb // N -> ₻ nordic mark 0070 20b1 // p -> ₱ Philippine peso -0050 20b1 // P -> ₱ Philippine peso +0050 20a7 // P -> ₧ Spanish pesetas 0072 20b9 // r -> ₹ Indian rupee 0052 20bd // R -> ₽ Russian ruble +00ea 20a8 // ê -> ₨ rupee sign +00ca 20a8 // Ê -> ₨ rupee sign 0073 20aa // s -> ₪ Israeli new shekel 0053 20b7 // S -> ₷ spesmilo 0074 20ae // t -> ₮ Mongolian tögrög (tugrik) @@ -910,7 +912,7 @@ DEADKEY 0020 // Dead Key : Math Symbols 0037 2227 // 7 -> ∧ logical and 0026 2227 // & -> ∧ logical and 0038 2297 // 8 -> ⊗ circled times -002a 2297 // * -> ⊗ circled times +002a 2299 // * -> ⊙ circled dot operator 0039 221f // 9 -> ∟ right angle 0028 221f // ( -> ∟ right angle 0030 2221 // 0 -> ∡ measured angle -- 2.47.3 From 96bee894cb1c9ae364794599f112eb09e9e97151 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:18:33 +0100 Subject: [PATCH 10/16] Delete .XCompose_sw --- linux-xcompose/.XCompose_sw | 207 ------------------------------------ 1 file changed, 207 deletions(-) delete mode 100644 linux-xcompose/.XCompose_sw diff --git a/linux-xcompose/.XCompose_sw b/linux-xcompose/.XCompose_sw deleted file mode 100644 index 4057fb4..0000000 --- a/linux-xcompose/.XCompose_sw +++ /dev/null @@ -1,207 +0,0 @@ -# UltimateKEYS SW (~/.XCompose) - -# Created by : Pieter Degroote - -# License : GNU General Public License Version 3 - -# GitHub : https://github.com/pieter-degroote/UltimateKEYS - - -include "%L" - -# Additional dead key descriptions - - : "ȃ" U0203 # a with inverted breve - : "Ȃ" U0202 # A with inverted breve - : "ȇ" U0207 # e with inverted breve - : "Ȇ" U0206 # E with inverted breve - : "ȋ" U020B # i with inverted breve - : "Ȋ" U020A # I with inverted breve - : "ȏ" U020F # o with inverted breve - : "Ȏ" U020E # O with inverted breve - : "ȓ" U0213 # r with inverted breve - : "Ȓ" U0212 # R with inverted breve - : "ȗ" U0217 # u with inverted breve - : "Ȗ" U0216 # U with inverted breve - - : "ǯ" U01EF # small letter ezh with caron - <3> : "Ǯ" U01EE # capital letter ezh with caron - - : "ů" U016F # u with ring above - : "Ů" U016E # U with ring above - - : "ƀ" U0180 # b with stroke - : "Ƀ" U0243 # B with stroke - : "đ" U0111 # d with stroke - : "Đ" U0110 # D with stroke - : "ǥ" U01E5 # g with stroke (Skolt Sami) - : "Ǥ" U01E4 # G with stroke (Skolt Sami) - : "ḡ" U1E21 # g with macron - : "Ḡ" U1E20 # G with macron - : "ħ" U0127 # h with stroke (Maltese) - : "Ħ" U0126 # H with stroke (Maltese) - : "ɨ" U0268 # i with stroke - : "Ɨ" U0197 # I with stroke - : "ɉ" U0249 # j with stroke - : "Ɉ" U0248 # J with stroke - : "ł" U0142 # l with stroke - : "Ł" U0141 # L with stroke - : "ƚ" U019A # l with bar - : "Ƚ" U023D # L with bar - : "ǭ" U01ED # o with ogonek and macron - : "Ǭ" U01EC # O with ogonek and macron -

: "áµ½" U1D7D # p with stroke -

: "Ᵽ" U2C63 # P with stroke - : "ɍ" U024D # r with stroke - : "Ɍ" U024C # R with stroke - : "ŧ" U0167 # t with stroke - : "Ŧ" U0166 # T with stroke - : "ʉ" U0289 # u with bar - : "Ʉ" U0244 # U with bar - : "ɏ" U024F # y with stroke - : "Ɏ" U024E # Y with stroke - : "ƶ" U01B6 # z with stroke - : "Ƶ" U01B5 # Z with stroke - - : "ą" U0105 # a with ogonek - : "Ą" U0104 # A with ogonek - : "ę" U0119 # e with ogonek - : "Ę" U0118 # E with ogonek - : "ȩ" U0229 # e with cedilla - : "Ȩ" U0228 # E with cedilla - : "į" U012F # i with ogonek - : "Į" U012E # I with ogonek - : "ǫ" U01EB # o with ogonek - : "Ǫ" U01EA # O with ogonek - : "ǭ" U01ED # o with ogonek and macron - : "Ǭ" U01EC # O with ogonek and macron - : "ų" U0173 # u with ogonek - : "Ų" U0172 # U with ogonek - - : "ɒ" U0252 # latin small letter turned alpha - : "Ɒ" U2C70 # latin capital letter turned alpha - : "ƈ" U0188 # c with hook - : "Ƈ" U0187 # C with hook - : "ɖ" U0256 # small letter d with tail - : "Ɖ" U0189 # capital letter African D - : "ǝ" U01DD # small turned e - : "Ǝ" U018E # capital reversed E - : "ə" U0259 # small letter schwa (Azerbaijani) - : "Ə" U018F # capital letter schwa (Azerbaijani) - : "ɣ" U0263 # latin small gamma - : "Ɣ" U0194 # latin capital gamma - : "ꜧ" UA727 # small letter heng - : "Ꜧ" UA726 # capital letter heng - : "ƙ" U0199 # k with hook - : "Ƙ" U0198 # K with hook - : "ɱ" U0271 # m with hook - : "Ɱ" U2C6E # M with hook - : "ŋ" U014B # small letter eng(ma) - : "Ŋ" U014A # capital letter eng(ma) - : "ɲ" U0272 # n with left hook - : "Ɲ" U019D # N with left hook - : "ɔ" U0254 # small open o - : "Ɔ" U0186 # capital open O -

: "Æ¥" U01A5 # p with hook -

: "Ƥ" U01A4 # P with hook - : "ɽ" U027D # r with tail - : "Ɽ" U2C64 # R with tail - : "ș" U0219 # s with comma below (Romanian) - : "Ș" U0218 # S with comma below (Romanian) - : "ț" U021B # t with comma below (Romanian) - : "Ț" U021A # T with comma below (Romanian) - : "ʊ" U028A # latin small letter upsilon - : "Ʊ" U01B1 # latin capital letter upsilon - : "ƿ" U01BF # small letter wynn - : "Ƿ" U01F7 # capital letter wynn - : "ⱳ" U2C73 # w with hook - : "Ⱳ" U2C72 # W with hook - : "ȝ" U021D # small letter yogh - : "Ȝ" U021C # capital letter yogh - : "ȥ" U0225 # z with hook - : "Ȥ" U0224 # Z with hook - : "ʒ" U0292 # small letter ezh - <3> : "Ʒ" U01B7 # capital letter ezh - - : "ɑ" U0251 # latin small letter alpha - : "Ɑ" U2C6D # latin capital letter alpha - : "ɓ" U0253 # b with hook - : "Ɓ" U0181 # B with hook - : "ɗ" U0257 # d with hook - : "Ɗ" U018A # D with hook - : "ɛ" U025B # small letter open e (latin small epsilon) - : "Ɛ" U0190 # capital letter open E (latin capital epsilon) - : "ƒ" function # f with hook - : "Ƒ" U0191 # F with hook - : "ɠ" U0260 # g with hook - : "Ɠ" U0193 # G with hook - : "ɦ" U0266 # h with hook - : "Ɦ" UA7AA # H with hook - : "ɩ" U0269 # latin small letter iota - : "Ɩ" U0196 # latin capital letter iota - : "ő" U0151 # o with double acute - : "Ő" U0150 # O with double acute - : "ɋ" U024B # q with tail - : "Ɋ" U024A # Q with tail - : "ƭ" U01AD # t with hook - : "Ƭ" U01AC # T with hook - : "ű" U0171 # u with double acute - : "Ű" U0170 # U with double acute - : "ʋ" U028B # v with hook - : "Ʋ" U01B2 # V with hook - : "ʌ" U028C # latin small letter turned v - : "Ʌ" U0245 # latin capital letter turned V - : "ƴ" U01B4 # y with hook - : "Ƴ" U01B3 # Y with hook - : "ơ" U01A1 # o with horn - : "Ơ" U01A0 # O with horn - : "ư" U01B0 # u with horn - : "Ư" U01AF # U with horn - - : "ʃ" U0283 # small letter esh - : "Ʃ" U01A9 # capital letter esh - - : "ȁ" U0201 # a with double grave - : "Ȁ" U0200 # A with double grave - : "ð" eth # small letter eth - : "Ð" ETH # capital letter eth - : "ȅ" U0205 # e with double grave - : "Ȅ" U0204 # E with double grave - : "ȉ" U0209 # i with double grave - : "Ȉ" U0208 # I with double grave - : "ȍ" U020D # o with double grave - : "Ȍ" U020C # O with double grave - : "ȑ" U0211 # r with double grave - : "Ȑ" U0210 # R with double grave - : "þ" thorn # small letter thorn - : "Þ" THORN # capital letter thorn - : "ȕ" U0215 # u with double grave - : "Ȕ" U0214 # U with double grave - - : "ɫ" U026B # l with middle tilde - : "Ɫ" U2C62 # L with middle tilde - : "ꬶ" UAB36 # cross-tailed g - : "ɧ" U0267 # small letter heng with hook - : "ĸ" U0138 # small letter kra - : "ſ" U017F # small long s - - : "χ" U03C7 # small chi - : "Χ" U03A7 # capital chi - : "ω" U03C9 # small omega - : "Ω" U03A9 # capital omega - : "β" U03B2 # small beta - : "Β" U0392 # capital beta - : "ψ" U03C8 # small psi - : "Ψ" U03A8 # capital spi - : "υ" U03C5 # small upsilon - : "Υ" U03A5 # capital upsilon - : "ς" U03C2 # small final sigma - : "ς" U03C2 # small final sigma - - : "†" dagger # dagger - : "‡" doubledagger # double dagger -

: "∎" U220E # end of proof - <3> : "∛" U221B # cube root - <3> : "∛" U221B # cube root - <4> : "∜" U221C # fourth root - <4> : "∜" U221C # fourth root -- 2.47.3 From d83df63f1b7b99e856f1e6560df5203f65ae2fce Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:19:02 +0100 Subject: [PATCH 11/16] Add files via upload This Linux implementation should work in the same way as the Windows implementations via AutoHotkey and MSKLC. --- linux-xcompose/.XCompose | 944 +++++++++++++++++++++++++++++++++------ 1 file changed, 819 insertions(+), 125 deletions(-) diff --git a/linux-xcompose/.XCompose b/linux-xcompose/.XCompose index a42fea3..e39e620 100644 --- a/linux-xcompose/.XCompose +++ b/linux-xcompose/.XCompose @@ -1,4 +1,4 @@ -# UltimateKEYS (~/.XCompose) +# UltimateKEYS (~/.XCompose) - 2021-11-14 # Created by : Pieter Degroote @@ -7,201 +7,895 @@ # GitHub : https://github.com/pieter-degroote/UltimateKEYS -include "%L" +# Dead key descriptions for UltimateKEYS -# Additional dead key descriptions + +# Dead Key : Circumflex Accent : "ȃ" U0203 # a with inverted breve : "Ȃ" U0202 # A with inverted breve + : "ĉ" U0109 # c with circumflex + : "Ĉ" U0108 # C with circumflex : "ȇ" U0207 # e with inverted breve : "Ȇ" U0206 # E with inverted breve + : "ĝ" U011D # g with circumflex + : "Ĝ" U011C # G with circumflex + : "ĥ" U0125 # h with circumflex + : "Ĥ" U0124 # H with circumflex : "ȋ" U020B # i with inverted breve : "Ȋ" U020A # I with inverted breve + : "ĵ" U0135 # j with circumflex + : "Ĵ" U0134 # J with circumflex : "ȏ" U020F # o with inverted breve : "Ȏ" U020E # O with inverted breve : "ȓ" U0213 # r with inverted breve : "Ȓ" U0212 # R with inverted breve + : "ŝ" U015D # s with circumflex + : "Ŝ" U015C # S with circumflex : "ȗ" U0217 # u with inverted breve : "Ȗ" U0216 # U with inverted breve + : "ŵ" U0175 # w with circumflex + : "Ŵ" U0174 # W with circumflex + : "ŷ" U0177 # y with circumflex + : "Ŷ" U0176 # Y with circumflex + : "ẑ" U1E91 # z with circumflex + : "Ẑ" U1E90 # Z with circumflex + <1> : "⇙" U21D9 # south west double arrow + <2> : "⇓" U21D3 # downwards double arrow + <3> : "⇘" U21D8 # south east double arrow + <4> : "⇐" U21D0 # leftwards double arrow + <5> : "⇕" U21D5 # up down double arrow + <6> : "⇒" U21D2 # rightwards double arrow + <7> : "⇖" U21D6 # north west double arrow + <8> : "⇑" U21D1 # upwards double arrow + <9> : "⇗" U21D7 # north east double arrow + <0> : "⇔" U21D4 # left right double arrow + : "⇙" U21D9 # south west double arrow + : "⇓" U21D3 # downwards double arrow + : "⇘" U21D8 # south east double arrow + : "⇐" U21D0 # leftwards double arrow + : "⇕" U21D5 # up down double arrow + : "⇒" U21D2 # rightwards double arrow + : "⇖" U21D6 # north west double arrow + : "⇑" U21D1 # upwards double arrow + : "⇗" U21D7 # north east double arrow + : "⇔" U21D4 # left right double arrow + : "^" U005E # circumflex accent + : "^" U005E # circumflex accent + + +# Dead Key : Caron + + : "ǎ" U01CE # a with caron + : "Ǎ" U01CD # A with caron + : "č" U010D # c with caron + : "Č" U010C # C with caron + : "ď" U010F # d with caron + : "Ď" U010E # D with caron + : "ě" U011B # e with caron + : "Ě" U011A # E with caron + : "ǧ" U01E7 # g with caron + : "Ǧ" U01E6 # G with caron + : "ȟ" U021F # h with caron + : "Ȟ" U021E # H with caron + : "ǐ" U01D0 # i with caron + : "Ǐ" U01CF # I with caron + : "ǰ" U01F0 # j with caron + : "ǩ" U01E9 # k with caron + : "Ǩ" U01E8 # K with caron + : "ľ" U013E # l with caron + : "Ľ" U013D # L with caron + : "ň" U0148 # n with caron + : "Ň" U0147 # N with caron + : "ǒ" U01D2 # o with caron + : "Ǒ" U01D1 # O with caron + : "ř" U0159 # r with caron + : "Ř" U0158 # R with caron + : "š" U0161 # s with caron + : "Š" U0160 # S with caron + : "ť" U0165 # t with caron + : "Ť" U0164 # T with caron + : "ǔ" U01D4 # u with caron + : "Ǔ" U01D3 # U with caron + : "ǚ" U01DA # u with diaeresis and caron + : "Ǚ" U01D9 # U with diaeresis and caron + : "ž" U017E # z with caron + : "Ž" U017D # Z with caron + <3> : "ǯ" U01EF # small letter ezh with caron + : "Ǯ" U01EE # capital letter ezh with caron + <2> : "▼" U25BC # black down-pointing triangle + : "▽" U25BD # white down-pointing triangle + <4> : "◀" U25C0 # black left-pointing triangle + : "◁" U25C1 # white left-pointing triangle + <6> : "▶" U25B6 # black right-pointing triangle + : "▷" U25B7 # white right-pointing triangle + <8> : "▲" U25B2 # black up-pointing triangle + : "△" U25B3 # white up-pointing triangle + : "ˇ" U02C7 # caron + : "ˇ" U02C7 # caron + - <3> : "ǯ" U01EF # small letter ezh with caron - : "Ǯ" U01EE # capital letter ezh with caron +# Dead Key : Dot Above + : "ȧ" U0227 # a with dot above + : "Ȧ" U0226 # A with dot above + : "ḃ" U1E03 # b with dot above + : "Ḃ" U1E02 # B with dot above + : "ċ" U010B # c with dot above + : "Ċ" U010A # C with dot above + : "ḋ" U1E0B # d with dot above + : "Ḋ" U1E0A # D with dot above + : "ė" U0117 # e with dot above + : "Ė" U0116 # E with dot above + : "ḟ" U1E1F # f with dot above + : "Ḟ" U1E1E # F with dot above + : "ġ" U0121 # g with dot above + : "Ġ" U0120 # G with dot above + : "ḣ" U1E23 # h with dot above + : "Ḣ" U1E22 # H with dot above + : "ı" U0131 # dotless i (Turkish, Azerbaijani) + : "İ" U0130 # I with dot above (Turkish, Azerbaijani) + : "ȷ" U0237 # dotless j + : "ŀ" U0140 # l with middle dot + : "Ŀ" U013F # L with middle dot + : "ṁ" U1E41 # m with dot above + : "Ṁ" U1E40 # M with dot above + : "ṅ" U1E45 # n with dot above + : "Ṅ" U1E44 # N with dot above + : "ȯ" U022F # o with dot above + : "Ȯ" U022E # O with dot above +

: "ṗ" U1E57 # p with dot above +

: "Ṗ" U1E56 # P with dot above + : "ṙ" U1E59 # r with dot above + : "Ṙ" U1E58 # R with dot above + : "ṡ" U1E61 # s with dot above + : "Ṡ" U1E60 # S with dot above + : "ṫ" U1E6B # t with dot above + : "Ṫ" U1E6A # T with dot above : "ů" U016F # u with ring above : "Ů" U016E # U with ring above + : "ẇ" U1E87 # w with dot above + : "Ẇ" U1E86 # W with dot above + : "ẋ" U1E8B # x with dot above + : "Ẋ" U1E8A # X with dot above + : "ẏ" U1E8F # y with dot above + : "Ẏ" U1E8E # Y with dot above + : "ż" U017C # z with dot above + : "Ż" U017B # Z with dot above + <1> : "↙" U2199 # south west arrow + <2> : "↓" U2193 # downwards arrow + <3> : "↘" U2198 # south east arrow + <4> : "←" U2190 # leftwards arrow + <5> : "↕" U2195 # up down arrow + <6> : "→" U2192 # rightwards arrow + <7> : "↖" U2196 # north west arrow + <8> : "↑" U2191 # upwards arrow + <9> : "↗" U2197 # north east arrow + <0> : "↔" U2194 # left right arrow + : "↙" U2199 # south west arrow + : "↓" U2193 # downwards arrow + : "↘" U2198 # south east arrow + : "←" U2190 # leftwards arrow + : "↕" U2195 # up down arrow + : "→" U2192 # rightwards arrow + : "↖" U2196 # north west arrow + : "↑" U2191 # upwards arrow + : "↗" U2197 # north east arrow + : "↔" U2194 # left right arrow + : "ẘ" U1E98 # w with ring above + : "ẙ" U1E99 # y with ring above + : "˙" U02D9 # dot above + : "˙" U02D9 # dot above - : "ƀ" U0180 # b with stroke - : "Ƀ" U0243 # B with stroke - : "đ" U0111 # d with stroke - : "Đ" U0110 # D with stroke - : "ǥ" U01E5 # g with stroke (Skolt Sami) - : "Ǥ" U01E4 # G with stroke (Skolt Sami) + +# Dead Key : Macron/Stroke + + : "ā" U0101 # a with macron + : "Ā" U0100 # A with macron + : "ƀ" U0180 # b with stroke + : "Ƀ" U0243 # B with stroke + : "đ" U0111 # d with stroke + : "Đ" U0110 # D with stroke + : "ē" U0113 # e with macron + : "Ē" U0112 # E with macron + : "ǥ" U01E5 # g with stroke (Skolt Sami) + : "Ǥ" U01E4 # G with stroke (Skolt Sami) + : "ħ" U0127 # h with stroke (Maltese) + : "Ħ" U0126 # H with stroke (Maltese) + : "ī" U012B # i with macron + : "Ī" U012A # I with macron + : "ɉ" U0249 # j with stroke + : "Ɉ" U0248 # J with stroke + : "ł" U0142 # l with stroke + : "Ł" U0141 # L with stroke + : "ō" U014D # o with macron + : "Ō" U014C # O with macron +

: "áµ½" U1D7D # p with stroke +

: "Ᵽ" U2C63 # P with stroke + : "ɍ" U024D # r with stroke + : "Ɍ" U024C # R with stroke + : "ŧ" U0167 # t with stroke + : "Ŧ" U0166 # T with stroke + : "ū" U016B # u with macron + : "Ū" U016A # U with macron + : "ȳ" U0233 # y with macron + : "Ȳ" U0232 # Y with macron + : "ƶ" U01B6 # z with stroke + : "Ƶ" U01B5 # Z with stroke + <1> : "↲" U21B2 # downwards arrow with tip leftwards + <2> : "⇵" U21F5 # downwards arrow leftwards of upwards arrow + <3> : "↳" U21B3 # downwards arrow with tip rightwards + <4> : "⇆" U21C6 # leftwards arrow over rightwards arrow + <5> : "↨" U21A8 # up down arrow with base + <6> : "⇄" U21C4 # rightwards arrow over leftwards arrow + <7> : "↰" U21B0 # upwards arrow with tip leftwards + <8> : "⇅" U21C5 # upwards arrow leftwards of downwards arrow + <9> : "↱" U21B1 # upwards arrow with tip rightwards + <0> : "↹" U21B9 # leftwards arrow to bar over rightwards arrow to bar + : "↲" U21B2 # downwards arrow with tip leftwards + : "⇵" U21F5 # downwards arrow leftwards of upwards arrow + : "↳" U21B3 # downwards arrow with tip rightwards + : "⇆" U21C6 # leftwards arrow over rightwards arrow + : "↨" U21A8 # up down arrow with base + : "⇄" U21C4 # rightwards arrow over leftwards arrow + : "↰" U21B0 # upwards arrow with tip leftwards + : "⇅" U21C5 # upwards arrow leftwards of downwards arrow + : "↱" U21B1 # upwards arrow with tip rightwards + : "↹" U21B9 # leftwards arrow to bar over rightwards arrow to bar + : "ǣ" U01E3 # ae with macron + : "Ǣ" U01E2 # AE with macron : "ḡ" U1E21 # g with macron : "Ḡ" U1E20 # G with macron - : "ħ" U0127 # h with stroke (Maltese) - : "Ħ" U0126 # H with stroke (Maltese) : "ɨ" U0268 # i with stroke : "Ɨ" U0197 # I with stroke - : "ɉ" U0249 # j with stroke - : "Ɉ" U0248 # J with stroke - : "ł" U0142 # l with stroke - : "Ł" U0141 # L with stroke : "ƚ" U019A # l with bar : "Ƚ" U023D # L with bar : "ǭ" U01ED # o with ogonek and macron : "Ǭ" U01EC # O with ogonek and macron -

: "áµ½" U1D7D # p with stroke -

: "Ᵽ" U2C63 # P with stroke - : "ɍ" U024D # r with stroke - : "Ɍ" U024C # R with stroke - : "ŧ" U0167 # t with stroke - : "Ŧ" U0166 # T with stroke : "ʉ" U0289 # u with bar : "Ʉ" U0244 # U with bar : "ɏ" U024F # y with stroke : "Ɏ" U024E # Y with stroke - : "ƶ" U01B6 # z with stroke - : "Ƶ" U01B5 # Z with stroke + : "¯" U00AF # macron + : "¯" U00AF # macron + + +# Dead Key : Cedilla/Ogonek - : "ą" U0105 # a with ogonek - : "Ą" U0104 # A with ogonek - : "ę" U0119 # e with ogonek - : "Ę" U0118 # E with ogonek + : "ą" U0105 # a with ogonek + : "Ą" U0104 # A with ogonek + : "ç" U00E7 # c with cedilla + : "Ç" U00C7 # C with cedilla + : "ḑ" U1E11 # d with cedilla + : "Ḑ" U1E10 # D with cedilla + : "ę" U0119 # e with ogonek + : "Ę" U0118 # E with ogonek + : "ģ" U0123 # g with cedilla + : "Ģ" U0122 # G with cedilla + : "ḩ" U1E29 # h with cedilla + : "Ḩ" U1E28 # H with cedilla + : "į" U012F # i with ogonek + : "Į" U012E # I with ogonek + : "ķ" U0137 # k with cedilla + : "Ķ" U0136 # K with cedilla + : "ļ" U013C # l with cedilla + : "Ļ" U013B # L with cedilla + : "ņ" U0146 # n with cedilla + : "Ņ" U0145 # N with cedilla + : "ǫ" U01EB # o with ogonek + : "Ǫ" U01EA # O with ogonek + : "ŗ" U0157 # r with cedilla + : "Ŗ" U0156 # R with cedilla + : "ş" U015F # s with cedilla + : "Ş" U015E # S with cedilla + : "ţ" U0163 # t with cedilla + : "Ţ" U0162 # T with cedilla + : "ų" U0173 # u with ogonek + : "Ų" U0172 # U with ogonek + <1> : "–" U2013 # en dash + <2> : "—" U2014 # em dash + <3> : "―" U2015 # horizontal bar + <4> : "‐" U2010 # hyphen + <9> : "‒" U2012 # figure dash + <0> : "­" U00AD # soft hyphen + : "–" U2013 # en dash + : "—" U2014 # em dash + : "―" U2015 # horizontal bar + : "‐" U2010 # hyphen + : "‒" U2012 # figure dash + : "­" U00AD # soft hyphen + : "‑" U2011 # non-breaking hyphen + : "˛" U02DB # ogonek : "ȩ" U0229 # e with cedilla : "Ȩ" U0228 # E with cedilla - : "į" U012F # i with ogonek - : "Į" U012E # I with ogonek - : "ǫ" U01EB # o with ogonek - : "Ǫ" U01EA # O with ogonek : "ǭ" U01ED # o with ogonek and macron : "Ǭ" U01EC # O with ogonek and macron - : "ų" U0173 # u with ogonek - : "Ų" U0172 # U with ogonek + : "¸" U00B8 # cedilla + : "¸" U00B8 # cedilla + +# Dead Key : Breve/Special + + : "ă" U0103 # a with breve + : "Ă" U0102 # A with breve + : "ƈ" U0188 # c with hook + : "Ƈ" U0187 # C with hook + : "ɖ" U0256 # small letter d with tail + : "Ɖ" U0189 # capital letter African D + : "ĕ" U0115 # e with breve + : "Ĕ" U0114 # E with breve + : "ə" U0259 # small letter schwa (Azerbaijani) + : "Ə" U018F # capital letter schwa (Azerbaijani) + : "ğ" U011F # g with breve + : "Ğ" U011E # G with breve + : "ꜧ" UA727 # small letter heng + : "Ꜧ" UA726 # capital letter heng + : "ĭ" U012D # i with breve + : "Ĭ" U012C # I with breve + : "ij" U0133 # ligature ij + : "IJ" U0132 # ligature IJ + : "ƙ" U0199 # k with hook + : "Ƙ" U0198 # K with hook + : "ɱ" U0271 # m with hook + : "Ɱ" U2C6E # M with hook + : "ŋ" U014B # small letter eng(ma) + : "Ŋ" U014A # capital letter eng(ma) + : "ŏ" U014F # o with breve + : "Ŏ" U014E # O with breve +

: "Æ¥" U01A5 # p with hook +

: "Ƥ" U01A4 # P with hook + : "ɽ" U027D # r with tail + : "Ɽ" U2C64 # R with tail + : "ș" U0219 # s with comma below (Romanian) + : "Ș" U0218 # S with comma below (Romanian) + : "ț" U021B # t with comma below (Romanian) + : "Ț" U021A # T with comma below (Romanian) + : "ŭ" U016D # u with breve + : "Ŭ" U016C # U with breve + : "ʊ" U028A # latin small letter upsilon + : "Ʊ" U01B1 # latin capital letter upsilon + : "ƿ" U01BF # small letter wynn + : "Ƿ" U01F7 # capital letter wynn + : "ȝ" U021D # small letter yogh + : "Ȝ" U021C # capital letter yogh + : "ȥ" U0225 # z with hook + : "Ȥ" U0224 # Z with hook + <3> : "ʒ" U0292 # small letter ezh + : "Ʒ" U01B7 # capital letter ezh : "ɒ" U0252 # latin small letter turned alpha : "Ɒ" U2C70 # latin capital letter turned alpha - : "ƈ" U0188 # c with hook - : "Ƈ" U0187 # C with hook - : "ɖ" U0256 # small letter d with tail - : "Ɖ" U0189 # capital letter African D : "ǝ" U01DD # small turned e : "Ǝ" U018E # capital reversed E - : "ə" U0259 # small letter schwa (Azerbaijani) - : "Ə" U018F # capital letter schwa (Azerbaijani) : "ɣ" U0263 # latin small gamma : "Ɣ" U0194 # latin capital gamma - : "ꜧ" UA727 # small letter heng - : "Ꜧ" UA726 # capital letter heng - : "ƙ" U0199 # k with hook - : "Ƙ" U0198 # K with hook - : "ɱ" U0271 # m with hook - : "Ɱ" U2C6E # M with hook - : "ŋ" U014B # small letter eng(ma) - : "Ŋ" U014A # capital letter eng(ma) : "ɲ" U0272 # n with left hook : "Ɲ" U019D # N with left hook : "ɔ" U0254 # small open o : "Ɔ" U0186 # capital open O -

: "Æ¥" U01A5 # p with hook -

: "Ƥ" U01A4 # P with hook - : "ɽ" U027D # r with tail - : "Ɽ" U2C64 # R with tail - : "ș" U0219 # s with comma below (Romanian) - : "Ș" U0218 # S with comma below (Romanian) - : "ț" U021B # t with comma below (Romanian) - : "Ț" U021A # T with comma below (Romanian) - : "ʊ" U028A # latin small letter upsilon - : "Ʊ" U01B1 # latin capital letter upsilon - : "ƿ" U01BF # small letter wynn - : "Ƿ" U01F7 # capital letter wynn : "ⱳ" U2C73 # w with hook : "Ⱳ" U2C72 # W with hook - : "ȝ" U021D # small letter yogh - : "Ȝ" U021C # capital letter yogh - : "ȥ" U0225 # z with hook - : "Ȥ" U0224 # Z with hook - <3> : "ʒ" U0292 # small letter ezh - : "Ʒ" U01B7 # capital letter ezh + : "˘" U02D8 # breve + : "˘" U02D8 # breve + + +# Dead Key : Acute Accent - : "ɑ" U0251 # latin small letter alpha - : "Ɑ" U2C6D # latin capital letter alpha - : "ɓ" U0253 # b with hook - : "Ɓ" U0181 # B with hook - : "ɗ" U0257 # d with hook - : "Ɗ" U018A # D with hook - : "ɛ" U025B # small letter open e (latin small epsilon) - : "Ɛ" U0190 # capital letter open E (latin capital epsilon) - : "ƒ" function # f with hook - : "Ƒ" U0191 # F with hook - : "ɠ" U0260 # g with hook - : "Ɠ" U0193 # G with hook - : "ɦ" U0266 # h with hook - : "Ɦ" UA7AA # H with hook - : "ɩ" U0269 # latin small letter iota - : "Ɩ" U0196 # latin capital letter iota - : "ő" U0151 # o with double acute - : "Ő" U0150 # O with double acute - : "ɋ" U024B # q with tail - : "Ɋ" U024A # Q with tail - : "ƭ" U01AD # t with hook - : "Ƭ" U01AC # T with hook - : "ű" U0171 # u with double acute - : "Ű" U0170 # U with double acute - : "ʋ" U028B # v with hook - : "Ʋ" U01B2 # V with hook - : "ʌ" U028C # latin small letter turned v - : "Ʌ" U0245 # latin capital letter turned V - : "ƴ" U01B4 # y with hook - : "Ƴ" U01B3 # Y with hook - : "ơ" U01A1 # o with horn - : "Ơ" U01A0 # O with horn - : "ư" U01B0 # u with horn - : "Ư" U01AF # U with horn + : "ɑ" U0251 # latin small letter alpha + : "Ɑ" U2C6D # latin capital letter alpha + : "ɓ" U0253 # b with hook + : "Ɓ" U0181 # B with hook + : "ć" U0107 # c with acute + : "Ć" U0106 # C with acute + : "ɗ" U0257 # d with hook + : "Ɗ" U018A # D with hook + : "ɛ" U025B # small letter open e (latin small epsilon) + : "Ɛ" U0190 # capital letter open E (latin capital epsilon) + : "ƒ" U0192 # f with hook + : "Ƒ" U0191 # F with hook + : "ǵ" U01F5 # g with acute + : "Ǵ" U01F4 # G with acute + : "ɦ" U0266 # h with hook + : "Ɦ" UA7AA # H with hook + : "ɩ" U0269 # latin small letter iota + : "Ɩ" U0196 # latin capital letter iota + : "ij" U0133 # ligature ij + : "IJ" U0132 # ligature IJ + : "ḱ" U1E31 # k with acute + : "Ḱ" U1E30 # K with acute + : "ĺ" U013A # l with acute + : "Ĺ" U0139 # L with acute + : "ḿ" U1E3F # m with acute + : "Ḿ" U1E3E # M with acute + : "ń" U0144 # n with acute + : "Ń" U0143 # N with acute + : "ő" U0151 # o with double acute + : "Ő" U0150 # O with double acute +

: "ṕ" U1E55 # p with acute +

: "Ṕ" U1E54 # P with acute + : "ɋ" U024B # q with hook tail + : "Ɋ" U024A # Q with hook tail + : "ŕ" U0155 # r with acute + : "Ŕ" U0154 # R with acute + : "ś" U015B # s with acute + : "Ś" U015A # S with acute + : "ƭ" U01AD # t with hook + : "Ƭ" U01AC # T with hook + : "ű" U0171 # u with double acute + : "Ű" U0170 # U with double acute + : "ʋ" U028B # v with hook + : "Ʋ" U01B2 # V with hook + : "ẃ" U1E83 # w with acute + : "Ẃ" U1E82 # W with acute + : "ý" U00FD # y with acute + : "Ý" U00DD # Y with acute + : "ź" U017A # z with acute + : "Ź" U0179 # Z with acute + <2> : "♫" U266B # beamed eighth notes + <3> : "⁂" U2042 # asterism + <4> : "★" U2605 # black star + <5> : "☆" U2606 # white star + <6> : "✽" U273D # heavy teardrop-spoked asterisk + <7> : "✻" U273B # teardrop-spoked asterisk + <8> : "♪" U266A # eighth note + <9> : "✆" U2706 # telephone location sign + <0> : "✉" U2709 # envelope + : "♫" U266B # beamed eighth notes + : "⁂" U2042 # asterism + : "★" U2605 # black star + : "☆" U2606 # white star + : "✽" U273D # heavy teardrop-spoked asterisk + : "✻" U273B # teardrop-spoked asterisk + : "♪" U266A # eighth note + : "✆" U2706 # telephone location sign + : "✉" U2709 # envelope + : "ǻ" U01FB # a with ring above and acute + : "Ǻ" U01FA # A with ring above and acute + : "ǽ" U01FD # ae with acute + : "Ǽ" U01FC # AE with acute + : "ǿ" U01FF # o with stroke and acute + : "Ǿ" U01FE # O with stroke and acute + : "ḉ" U1E09 # c with cedilla and acute + : "Ḉ" U1E08 # C with cedilla and acute + : "ɠ" U0260 # g with hook + : "Ɠ" U0193 # G with hook + : "ʌ" U028C # latin small letter turned v + : "Ʌ" U0245 # latin capital letter turned V + : "ƴ" U01B4 # y with hook + : "Ƴ" U01B3 # Y with hook + : "ơ" U01A1 # o with horn + : "Ơ" U01A0 # O with horn + : "ư" U01B0 # u with horn + : "Ư" U01AF # U with horn + : "´" U00B4 # acute accent + : "´" U00B4 # acute accent + +# Dead Key : Diaeresis + + : "ä" U00E4 # a with diaeresis + : "Ä" U00C4 # A with diaeresis + : "ë" U00EB # e with diaeresis + : "Ë" U00CB # E with diaeresis + : "ḧ" U1E27 # h with diaeresis + : "Ḧ" U1E26 # H with diaeresis + : "ï" U00EF # i with diaeresis + : "Ï" U00CF # I with diaeresis + : "ö" U00F6 # o with diaeresis + : "Ö" U00D6 # O with diaeresis : "ʃ" U0283 # small letter esh : "Ʃ" U01A9 # capital letter esh + : "ẗ" U1E97 # t with diaeresis + : "ü" U00FC # u with diaeresis + : "Ü" U00DC # U with diaeresis + : "ẅ" U1E85 # w with diaeresis + : "Ẅ" U1E84 # W with diaeresis + : "ẍ" U1E8D # x with diaeresis + : "Ẍ" U1E8C # X with diaeresis + : "ÿ" U00FF # y with diaeresis + : "Ÿ" U0178 # Y with diaeresis + : "¨" U00A8 # diaeresis + : "¨" U00A8 # diaeresis + + +# Dead Key : Grave Accent : "ȁ" U0201 # a with double grave : "Ȁ" U0200 # A with double grave - : "ð" eth # small letter eth - : "Ð" ETH # capital letter eth + : "ð" U00F0 # small letter eth + : "Ð" U00D0 # capital letter eth : "ȅ" U0205 # e with double grave : "Ȅ" U0204 # E with double grave : "ȉ" U0209 # i with double grave : "Ȉ" U0208 # I with double grave + : "ǹ" U01F9 # n with grave + : "Ǹ" U01F8 # N with grave : "ȍ" U020D # o with double grave : "Ȍ" U020C # O with double grave : "ȑ" U0211 # r with double grave : "Ȑ" U0210 # R with double grave - : "þ" thorn # small letter thorn - : "Þ" THORN # capital letter thorn + : "þ" U00FE # small letter thorn + : "Þ" U00DE # capital letter thorn : "ȕ" U0215 # u with double grave : "Ȕ" U0214 # U with double grave + : "ẁ" U1E81 # w with grave + : "Ẁ" U1E80 # W with grave + : "ỳ" U1EF3 # y with grave + : "Ỳ" U1EF2 # Y with grave + : "♣" U2663 # black club suit + : "♧" U2667 # white club suit + : "♥" U2665 # black heart suit + : "♡" U2661 # white heart suit + : "♦" U2666 # black diamond suit + : "♢" U2662 # white diamond suit + : "♠" U2660 # black spade suit + : "♤" U2664 # white spade suit + <1> : " " U2002 # en space + <2> : " " U2003 # em space + <3> : " " U2004 # three-per-em space + <4> : " " U2005 # four-per-em space + <5> : " " U2008 # punctuation space + <6> : " " U2006 # six-per-em space + <7> : " " U2009 # thin space + <8> : " " U200A # hair space + <9> : " " U2007 # figure space + <0> : "​" U200B # zero-width space + : " " U2002 # en space + : " " U2003 # em space + : " " U2004 # three-per-em space + : " " U2005 # four-per-em space + : " " U2008 # punctuation space + : " " U2006 # six-per-em space + : " " U2009 # thin space + : " " U200A # hair space + : " " U2007 # figure space + : "​" U200B # zero-width space + : " " U00A0 # non-breaking space + : " " U202F # narrow no-break space + : "`" U0060 # grave accent + : "`" U0060 # grave accent + +# Dead Key : Tilde + + : "ã" U00E3 # a with tilde + : "Ã" U00C3 # A with tilde + : "ẽ" U1EBD # e with tilde + : "Ẽ" U1EBC # E with tilde + : "ĩ" U0129 # i with tilde + : "Ĩ" U0128 # I with tilde : "ɫ" U026B # l with middle tilde : "Ɫ" U2C62 # L with middle tilde + : "ñ" U00F1 # n with tilde + : "Ñ" U00D1 # N with tilde + : "õ" U00F5 # o with tilde + : "Õ" U00D5 # O with tilde + : "ũ" U0169 # u with tilde + : "Ũ" U0168 # U with tilde + : "ṽ" U1E7D # v with tilde + : "Ṽ" U1E7C # V with tilde + : "ỹ" U1EF9 # y with tilde + : "Ỹ" U1EF8 # Y with tilde : "ꬶ" UAB36 # cross-tailed g : "ɧ" U0267 # small letter heng with hook : "ĸ" U0138 # small letter kra : "ſ" U017F # small long s + <1> : " " U2000 # en quad + <2> : " " U2001 # em quad + : " " U2000 # en quad + : " " U2001 # em quad + : "~" U007E # tilde + : "~" U007E # tilde + + +# Dead Key : General Symbols + + : "ª" U00AA # feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) + : "ª" U00AA # feminine ordinal indicator (Spanish, Portuguese, Italian, Galician) + : "•" U2022 # bullet + : "◦" U25E6 # white bullet + : "℅" U2105 # care of + : "℅" U2105 # care of + : "†" U2020 # dagger + : "‡" U2021 # double dagger + : "℮" U212E # estimated symbol + : "✉" U2709 # envelope + : "♀" U2640 # Venus symbol (female) + : "♀" U2640 # Venus symbol (female) + : "❦" U2766 # floral heart + : "❧" U2767 # rotated floral heart bullet + : "⋄" U22C4 # diamond operator + : "⋄" U22C4 # diamond operator + : "ℓ" U2113 # script small l + : "ℒ" U2112 # Laplace transform + : "♂" U2642 # Mars symbol (male) + : "♂" U2642 # Mars symbol (male) + : "¬" U00AC # not sign + : "¬" U00AC # not sign + : "º" U00BA # masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) + : "º" U00BA # masculine ordinal indicator (Spanish, Portuguese, Italian, Galician) +

: "¶" U00B6 # pilcrow sign +

: "℗" U2117 # sound recording copyright + : "„" U201E # double low-9 quotation mark + : "‚" U201A # single low-9 quotation mark + : "®" U00AE # registered sign + : "☙" U2619 # reversed rotated floral heart bullet + : "℠" U2120 # service mark + : "℠" U2120 # service mark + : "™" U2122 # trademark symbol + : "✆" U2706 # telephone location sign + : "☐" U2610 # ballot box + : "☐" U2610 # ballot box + : "✓" U2713 # check mark + : "✔" U2714 # heavy check mark + : "✗" U2717 # ballot x + : "✘" U2718 # heavy ballot x + : "☑" U2611 # ballot box with check + : "☒" U2612 # ballot box with x + <1> : "№" U2116 # numero sign + <2> : "½" U00BD # vulgar fraction 1/2 + <3> : "⅓" U2153 # vulgar fraction 1/3 + <4> : "¼" U00BC # vulgar fraction 1/4 + <5> : "⅔" U2154 # vulgar fraction 2/3 + <6> : "¾" U00BE # vulgar fraction 3/4 + <7> : "⅛" U215B # vulgar fraction 1/8 + <8> : "⅜" U215C # vulgar fraction 3/8 + <9> : "⅝" U215D # vulgar fraction 5/8 + <0> : "⅞" U215E # vulgar fraction 7/8 + : "№" U2116 # numero sign + : "½" U00BD # vulgar fraction 1/2 + : "⅓" U2153 # vulgar fraction 1/3 + : "¼" U00BC # vulgar fraction 1/4 + : "⅔" U2154 # vulgar fraction 2/3 + : "¾" U00BE # vulgar fraction 3/4 + : "⅛" U215B # vulgar fraction 1/8 + : "⅜" U215C # vulgar fraction 3/8 + : "⅝" U215D # vulgar fraction 5/8 + : "⅞" U215E # vulgar fraction 7/8 + : "⁃" U2043 # hyphen bullet + : "‣" U2023 # triangular bullet + : "×" U00D7 # multiplication sign + : "÷" U00F7 # division sign + : "☺" U263A # white smiling face + : "☻" U263B # black smiling face + : "‼" U203C # double exclamation mark + : "‽" U203D # interrobang + : "⁞" U205E # vertical four dots + : "¦" U00A6 # broken bar + : "⅍" U214D # aktieselskab + : "⅍" U214D # aktieselskab + : "Ω" U2126 # ohm sign (backwards compatibility) + : "Ω" U2126 # ohm sign (backwards compatibility) + : "⸘" U2E18 # inverted interrobang + : "⸮" U2E2E # reversed question mark + : "×" U00D7 # multiplication sign + : "×" U00D7 # multiplication sign + + +# Dead Key : Currency + + : "֏" U058F # Armenian dram + : "₳" U20B3 # Argentine austral + : "₿" U20BF # bitcoin + : "฿" U0E3F # Thai baht + : "₡" U20A1 # Costa Rican colón + : "₵" U20B5 # Ghanaian cedi + : "₫" U20AB # Vietnamese dong + : "₯" U20AF # Greek drachma + : "₣" U20A3 # French franc + : "₣" U20A3 # French franc + : "₲" U20B2 # Paraguayan guaraní + : "₲" U20B2 # Paraguayan guaraní + : "₴" U20B4 # Ukrainian hryvnia + : "₴" U20B4 # Ukrainian hryvnia + : "₭" U20AD # Laotian kip + : "₭" U20AD # Laotian kip + : "₺" U20BA # Turkish lira + : "₾" U20BE # Georgian lari + : "₼" U20BC # Azerbaijani manat + : "₥" U20A5 # mill sign + : "₦" U20A6 # Nigerian naira + : "₻" U20BB # nordic mark +

: "₱" U20B1 # Philippine peso +

: "₧" U20A7 # Spanish pesetas + : "₹" U20B9 # Indian rupee + : "₽" U20BD # Russian ruble + : "₪" U20AA # Israeli new shekel + : "₷" U20B7 # spesmilo + : "₮" U20AE # Mongolian tögrög (tugrik) + : "₸" U20B8 # Kazakh tenge + : "₩" U20A9 # South Korean won + : "₩" U20A9 # South Korean won + : "¤" U00A4 # currency sign + : "¤" U00A4 # currency sign + : "₢" U20A2 # Brazilian cruzeiro + : "₠" U20A0 # euro-currency sign + : "₤" U20A4 # lira + : "₶" U20B6 # livre tournois + : "₨" U20A8 # rupee sign + : "₨" U20A8 # rupee sign + : "¤" U00A4 # currency sign + : "¤" U00A4 # currency sign + + +Dead Key : Greek Alphabet + + : "α" U03B1 # small alpha + : "Α" U0391 # capital alpha + : "β" U03B2 # small beta + : "Β" U0392 # capital beta + : "β" U03B2 # small beta + : "Β" U0392 # capital beta + : "γ" U03B3 # small gamma + : "Γ" U0393 # capital gamma + : "δ" U03B4 # small delta + : "Δ" U0394 # capital delta + : "ε" U03B5 # small epsilon + : "Ε" U0395 # capital epsilon + : "ζ" U03B6 # small zeta + : "Ζ" U0396 # capital zeta + : "η" U03B7 # small eta + : "Η" U0397 # capital eta + : "θ" U03B8 # small theta + : "Θ" U0398 # capital theta + : "ι" U03B9 # small iota + : "Ι" U0399 # capital iota + : "κ" U03BA # small kappa + : "Κ" U039A # capital kappa + : "λ" U03BB # small lambda + : "Λ" U039B # capital lambda + : "μ" U03BC # small mu + : "Μ" U039C # capital mu + : "ν" U03BD # small nu + : "Ν" U039D # capital nu + : "ξ" U03BE # small xi + : "Ξ" U039E # capital xi + : "ο" U03BF # small omicron + : "Ο" U039F # capital omicron +

: "π" U03C0 # small pi +

: "Π" U03A0 # capital pi + : "ρ" U03C1 # small rho + : "Ρ" U03A1 # capital rho + : "σ" U03C3 # small sigma + : "Σ" U03A3 # capital sigma + : "τ" U03C4 # small tau + : "Τ" U03A4 # capital tau + : "υ" U03C5 # small upsilon + : "Υ" U03A5 # capital upsilon + : "υ" U03C5 # small upsilon + : "Υ" U03A5 # capital upsilon + : "φ" U03C6 # small phi + : "Φ" U03A6 # capital phi + : "χ" U03C7 # small chi + : "Χ" U03A7 # capital chi + : "ψ" U03C8 # small psi + : "Ψ" U03A8 # capital psi + : "ω" U03C9 # small omega + : "Ω" U03A9 # capital omega + <1> : "¹" U00B9 # superscript 1 + <2> : "²" U00B2 # superscript 2 + <3> : "³" U00B3 # superscript 3 + <4> : "⁴" U2074 # superscript 4 + <5> : "⁵" U2075 # superscript 5 + <6> : "⁶" U2076 # superscript 6 + <7> : "⁷" U2077 # superscript 7 + <8> : "⁸" U2078 # superscript 8 + <9> : "⁹" U2079 # superscript 9 + <0> : "⁰" U2070 # superscript 0 + : "⁻" U207B # superscript - + : "⁼" U207C # superscript = + : "⁺" U207A # superscript + + : "⁽" U207D # superscript ( + : "⁾" U207E # superscript ) + : "₁" U2081 # subscript 1 + : "₂" U2082 # subscript 2 + : "₃" U2083 # subscript 3 + : "₄" U2084 # subscript 4 + : "₅" U2085 # subscript 5 + : "₆" U2086 # subscript 6 + : "₇" U2087 # subscript 7 + : "₈" U2088 # subscript 8 + : "₉" U2089 # subscript 9 + : "₀" U2080 # subscript 0 + : "₋" U208B # subscript - + : "₌" U208C # subscript = + : "₊" U208A # subscript + + : "₍" U208D # subscript ( + : "₎" U208E # subscript ) + : "µ" U00B5 # micro sign + : "ς" U03C2 # small final sigma + : "ς" U03C2 # small final sigma + : "μ" U03BC # small mu + : "μ" U03BC # small mu + + +# Dead Key : Math Symbols - : "χ" U03C7 # small chi - : "Χ" U03A7 # capital chi - : "ω" U03C9 # small omega - : "Ω" U03A9 # capital omega - : "β" U03B2 # small beta - : "Β" U0392 # capital beta - : "ψ" U03C8 # small psi - : "Ψ" U03A8 # capital spi - : "υ" U03C5 # small upsilon - : "Υ" U03A5 # capital upsilon - : "ς" U03C2 # small final sigma - : "ς" U03C2 # small final sigma - - : "†" dagger # dagger - : "‡" doubledagger # double dagger -

: "∎" U220E # end of proof - <3> : "∛" U221B # cube root - <3> : "∛" U221B # cube root - <4> : "∜" U221C # fourth root - <4> : "∜" U221C # fourth root + : "∀" U2200 # for all + : "∀" U2200 # for all + : "⊆" U2286 # subset of or equal to + : "⊇" U2287 # superset of or equal to + : "∝" U221D # proportional to + : "ℂ" U2102 # complex numbers + : "∆" U2206 # increment operator + : "∇" U2207 # nabla/del operator + : "∃" U2203 # there exists + : "∄" U2204 # there does not exist + : "ƒ" U0192 # f with hook + : "∎" U220E # end of proof + : "⊂" U2282 # subset of + : "⊄" U2284 # not a subset of + : "⊃" U2283 # superset of + : "⊅" U2285 # not a superset of + : "∞" U221E # infinity symbol + : "ℑ" U2111 # imaginary numbers + : "∋" U220B # contains as member + : "∌" U220C # does not contain as member + : "∥" U2225 # parallel to + : "∦" U2226 # not parallel to + : "∈" U2208 # element of + : "∉" U2209 # not an element of + : "ⁿ" U207F # superscript n + : "ℕ" U2115 # natural numbers + : "∘" U2218 # ring operator + : "∅" U2205 # empty set +

: "∂" U2202 # partial differential +

: "ℙ" U2119 # prime numbers + : "ℚ" U211A # rational numbers + : "ℚ" U211A # rational numbers + : "√" U221A # square root + : "ℝ" U211D # real numbers + : "∩" U2229 # set intersection + : "∫" U222B # integral symbol + : "∪" U222A # set union + : "∖" U2216 # set minus + : "℘" U2118 # Weierstrass elliptic function + : "℘" U2118 # Weierstrass elliptic function + : "↯" U21AF # downwards zigzag arrow + : "ℤ" U2124 # whole numbers + <1> : "≠" U2260 # not equal to + : "≠" U2260 # not equal to + <2> : "√" U221A # square root + : "√" U221A # square root + <3> : "∛" U221B # cube root + : "∛" U221B # cube root + <4> : "∜" U221C # fourth root + : "∜" U221C # fourth root + <5> : "‰" U2030 # per mille sign + : "‱" U2031 # per ten thousand sign + <6> : "∠" U2220 # angle symbol + : "∠" U2220 # angle symbol + <7> : "∧" U2227 # logical and + : "∧" U2227 # logical and + <8> : "⊗" U2297 # circled times + : "⊙" U2299 # circled dot operator + <9> : "∟" U221F # right angle + : "∟" U221F # right angle + <0> : "∡" U2221 # measured angle + : "∡" U2221 # measured angle + : "≈" U2248 # almost equal to + : "≈" U2248 # almost equal to + : "≤" U2264 # less-than or equal to + : "≤" U2264 # less-than or equal to + : "≥" U2265 # greater-than or equal to + : "≥" U2265 # greater-than or equal to + : "±" U00B1 # plus-minus sign + : "⊖" U2296 # circled minus + : "⊘" U2298 # circled division slash + : "≝" U225D # equal to by definition + : "⊕" U2295 # circled plus + : "∵" U2235 # because sign + : "∴" U2234 # therefore sign + : "′" U2032 # prime + : "″" U2033 # double prime + : "‴" U2034 # triple prime + : "⁗" U2057 # quadruple prime + : "∨" U2228 # logical or + : "∨" U2228 # logical or + : "≅" U2245 # congruent to + : "≇" U2247 # not congruent to + : "⌀" U2300 # diameter sign + : "⌀" U2300 # diameter sign + : "≡" U2261 # identical to + : "≢" U2262 # not identical to + : "√" U221A # square root + : "√" U221A # square root -- 2.47.3 From 289503588ba4ba7d50f37a61e01ca78c5eb258f0 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:20:09 +0100 Subject: [PATCH 12/16] Add files via upload Base layout : This Linux implementation should work in the same way as the Windows implementations via AutoHotkey and MSKLC. --- linux-xkb/ultkeys | 6 +++--- linux-xkb/ultkeys-sw | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/linux-xkb/ultkeys b/linux-xkb/ultkeys index 8167324..489c44d 100644 --- a/linux-xkb/ultkeys +++ b/linux-xkb/ultkeys @@ -18,7 +18,7 @@ xkb_symbols "basic" { key { [ v, V, igrave, Igrave ] }; key { [ b, B, iacute, Iacute ] }; key { [ n, N, ntilde, Ntilde ] }; - key { [ m, M, Multi_key, Multi_key ] }; + key { [ m, M, dead_greek, dead_hook ] }; key { [ comma, less, ograve, Ograve ] }; key { [ period, greater, oacute, Oacute ] }; key { [ slash, question, questiondown, ellipsis ] }; @@ -57,10 +57,10 @@ xkb_symbols "basic" { key { [ 0, parenright, rightdoublequotemark, rightsinglequotemark ] }; key { [ minus, underscore, atilde, Atilde ] }; key { [ equal, plus, otilde, Otilde ] }; - key { [ backslash, bar, dead_greek, dead_currency ] }; - key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ backslash, bar, dead_stroke, dead_currency ] }; key { [ backslash, bar, backslash, bar ] }; key { [ space, space, nobreakspace, nobreakspace ] }; + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; key { [ KP_Delete, KP_Decimal ] }; include "level3(ralt_switch)" diff --git a/linux-xkb/ultkeys-sw b/linux-xkb/ultkeys-sw index 365646f..6a14521 100644 --- a/linux-xkb/ultkeys-sw +++ b/linux-xkb/ultkeys-sw @@ -18,7 +18,7 @@ xkb_symbols "basic" { key { [ v, V, igrave, Igrave ] }; key { [ b, B, iacute, Iacute ] }; key { [ n, N, ntilde, Ntilde ] }; - key { [ m, M, Multi_key, Multi_key ] }; + key { [ m, M, dead_greek, dead_hook ] }; key { [ comma, less, ograve, Ograve ] }; key { [ period, greater, oacute, Oacute ] }; key { [ slash, question, questiondown, ellipsis ] }; @@ -57,10 +57,10 @@ xkb_symbols "basic" { key { [ parenright, 0, rightdoublequotemark, rightsinglequotemark ] }; key { [ minus, underscore, atilde, Atilde ] }; key { [ equal, plus, otilde, Otilde ] }; - key { [ backslash, bar, dead_greek, dead_currency ] }; - key { [ grave, asciitilde, dead_grave, dead_tilde ] }; + key { [ backslash, bar, dead_stroke, dead_currency ] }; key { [ backslash, bar, backslash, bar ] }; key { [ space, space, nobreakspace, nobreakspace ] }; + key { [ grave, asciitilde, dead_grave, dead_tilde ] }; key { [ KP_Delete, KP_Decimal ] }; include "level3(ralt_switch)" -- 2.47.3 From e5c20e305bc92cd6220d84294c6df8b6cb7104f7 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Mon, 15 Nov 2021 21:20:47 +0100 Subject: [PATCH 13/16] Add files via upload Base layout : This Linux implementation should work in the same way as the Windows implementations via AutoHotkey and MSKLC. --- linux-xmodmap/.Xmodmap | 4 ++-- linux-xmodmap/.Xmodmap_sw | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/linux-xmodmap/.Xmodmap b/linux-xmodmap/.Xmodmap index ddb6fb7..586d74e 100644 --- a/linux-xmodmap/.Xmodmap +++ b/linux-xmodmap/.Xmodmap @@ -43,14 +43,14 @@ keycode 46 = l L oslash Ooblique keycode 47 = semicolon colon degree periodcentered keycode 48 = apostrophe quotedbl dead_acute dead_diaeresis keycode 49 = grave asciitilde dead_grave dead_tilde -keycode 51 = backslash bar dead_greek dead_currency +keycode 51 = backslash bar dead_stroke dead_currency keycode 52 = z Z agrave Agrave keycode 53 = x X aacute Aacute keycode 54 = c C ccedilla Ccedilla keycode 55 = v V igrave Igrave keycode 56 = b B iacute Iacute keycode 57 = n N ntilde Ntilde -keycode 58 = m M Multi_key Multi_key +keycode 58 = m M dead_greek dead_hook keycode 59 = comma less ograve Ograve keycode 60 = period greater oacute Oacute keycode 61 = slash question questiondown ellipsis diff --git a/linux-xmodmap/.Xmodmap_sw b/linux-xmodmap/.Xmodmap_sw index e895bea..8bc2065 100644 --- a/linux-xmodmap/.Xmodmap_sw +++ b/linux-xmodmap/.Xmodmap_sw @@ -43,14 +43,14 @@ keycode 46 = l L oslash Ooblique keycode 47 = semicolon colon degree periodcentered keycode 48 = apostrophe quotedbl dead_acute dead_diaeresis keycode 49 = grave asciitilde dead_grave dead_tilde -keycode 51 = backslash bar dead_greek dead_currency +keycode 51 = backslash bar dead_stroke dead_currency keycode 52 = z Z agrave Agrave keycode 53 = x X aacute Aacute keycode 54 = c C ccedilla Ccedilla keycode 55 = v V igrave Igrave keycode 56 = b B iacute Iacute keycode 57 = n N ntilde Ntilde -keycode 58 = m M Multi_key Multi_key +keycode 58 = m M dead_greek dead_hook keycode 59 = comma less ograve Ograve keycode 60 = period greater oacute Oacute keycode 61 = slash question questiondown ellipsis -- 2.47.3 From be0d0b1ec399c9ef44019461e9c809d8785ddefc Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Fri, 19 Nov 2021 00:28:19 +0100 Subject: [PATCH 14/16] Add files via upload A few additional characters for Hanyu Pinyin (Mandarin Chinese with Latin-based letters) have been added. --- autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk | 8 +++++++- autohotkey-v1.1/UltimateKEYS.ahk | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk b/autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk index 3bd0e71..57ed21c 100644 --- a/autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk +++ b/autohotkey-v1.1/UltimateKEYS SW (Scroll Lock).ahk @@ -1,4 +1,4 @@ -; UltimateKEYS SW (Scroll Lock).ahk - 2021-11-14 +; UltimateKEYS SW (Scroll Lock).ahk - 2021-11-18 ; Created by : Pieter Degroote @@ -230,6 +230,8 @@ dkMacronStroke.item["t"] := "{u+0167}" ; (ŧ) t with stroke dkMacronStroke.item["T"] := "{u+0166}" ; (Ŧ) T with stroke dkMacronStroke.item["u"] := "{u+016b}" ; (ū) u with macron dkMacronStroke.item["U"] := "{u+016a}" ; (Ū) U with macron +dkMacronStroke.item["v"] := "{u+01d6}" ; (ǖ) u with diaeresis and macron +dkMacronStroke.item["V"] := "{u+01d5}" ; (Ǖ) U with diaeresis and macron dkMacronStroke.item["y"] := "{u+0233}" ; (ȳ) y with macron dkMacronStroke.item["Y"] := "{u+0232}" ; (Ȳ) Y with macron dkMacronStroke.item["z"] := "{u+01b6}" ; (ƶ) z with stroke @@ -499,6 +501,8 @@ dkDiaeresis.item["S"] := "{u+01a9}" ; (Ʃ) capital letter esh dkDiaeresis.item["t"] := "{u+1e97}" ; (ẗ) t with diaeresis dkDiaeresis.item["u"] := "{u+00fc}" ; (ü) u with diaeresis dkDiaeresis.item["U"] := "{u+00dc}" ; (Ü) U with diaeresis +dkDiaeresis.item["v"] := "{u+01d8}" ; (ǘ) u with diaeresis and acute +dkDiaeresis.item["V"] := "{u+01d7}" ; (Ǘ) U with diaeresis and acute dkDiaeresis.item["w"] := "{u+1e85}" ; (ẅ) w with diaeresis dkDiaeresis.item["W"] := "{u+1e84}" ; (Ẅ) W with diaeresis dkDiaeresis.item["x"] := "{u+1e8d}" ; (ẍ) x with diaeresis @@ -529,6 +533,8 @@ dkGraveAccent.item["t"] := "{u+00fe}" ; (þ) small letter thorn dkGraveAccent.item["T"] := "{u+00de}" ; (Þ) capital letter thorn dkGraveAccent.item["u"] := "{u+0215}" ; (ȕ) u with double grave dkGraveAccent.item["U"] := "{u+0214}" ; (Ȕ) U with double grave +dkGraveAccent.item["v"] := "{u+01dc}" ; (ǜ) u with diaeresis and grave +dkGraveAccent.item["V"] := "{u+01db}" ; (Ǜ) U with diaeresis and grave dkGraveAccent.item["w"] := "{u+1e81}" ; (ẁ) w with grave dkGraveAccent.item["W"] := "{u+1e80}" ; (Ẁ) W with grave dkGraveAccent.item["y"] := "{u+1ef3}" ; (ỳ) y with grave diff --git a/autohotkey-v1.1/UltimateKEYS.ahk b/autohotkey-v1.1/UltimateKEYS.ahk index 26ed2b9..64676c7 100644 --- a/autohotkey-v1.1/UltimateKEYS.ahk +++ b/autohotkey-v1.1/UltimateKEYS.ahk @@ -1,4 +1,4 @@ -; UltimateKEYS.ahk - 2021-11-14 +; UltimateKEYS.ahk - 2021-11-18 ; Created by : Pieter Degroote @@ -230,6 +230,8 @@ dkMacronStroke.item["t"] := "{u+0167}" ; (ŧ) t with stroke dkMacronStroke.item["T"] := "{u+0166}" ; (Ŧ) T with stroke dkMacronStroke.item["u"] := "{u+016b}" ; (ū) u with macron dkMacronStroke.item["U"] := "{u+016a}" ; (Ū) U with macron +dkMacronStroke.item["v"] := "{u+01d6}" ; (ǖ) u with diaeresis and macron +dkMacronStroke.item["V"] := "{u+01d5}" ; (Ǖ) U with diaeresis and macron dkMacronStroke.item["y"] := "{u+0233}" ; (ȳ) y with macron dkMacronStroke.item["Y"] := "{u+0232}" ; (Ȳ) Y with macron dkMacronStroke.item["z"] := "{u+01b6}" ; (ƶ) z with stroke @@ -499,6 +501,8 @@ dkDiaeresis.item["S"] := "{u+01a9}" ; (Ʃ) capital letter esh dkDiaeresis.item["t"] := "{u+1e97}" ; (ẗ) t with diaeresis dkDiaeresis.item["u"] := "{u+00fc}" ; (ü) u with diaeresis dkDiaeresis.item["U"] := "{u+00dc}" ; (Ü) U with diaeresis +dkDiaeresis.item["v"] := "{u+01d8}" ; (ǘ) u with diaeresis and acute +dkDiaeresis.item["V"] := "{u+01d7}" ; (Ǘ) U with diaeresis and acute dkDiaeresis.item["w"] := "{u+1e85}" ; (ẅ) w with diaeresis dkDiaeresis.item["W"] := "{u+1e84}" ; (Ẅ) W with diaeresis dkDiaeresis.item["x"] := "{u+1e8d}" ; (ẍ) x with diaeresis @@ -529,6 +533,8 @@ dkGraveAccent.item["t"] := "{u+00fe}" ; (þ) small letter thorn dkGraveAccent.item["T"] := "{u+00de}" ; (Þ) capital letter thorn dkGraveAccent.item["u"] := "{u+0215}" ; (ȕ) u with double grave dkGraveAccent.item["U"] := "{u+0214}" ; (Ȕ) U with double grave +dkGraveAccent.item["v"] := "{u+01dc}" ; (ǜ) u with diaeresis and grave +dkGraveAccent.item["V"] := "{u+01db}" ; (Ǜ) U with diaeresis and grave dkGraveAccent.item["w"] := "{u+1e81}" ; (ẁ) w with grave dkGraveAccent.item["W"] := "{u+1e80}" ; (Ẁ) W with grave dkGraveAccent.item["y"] := "{u+1ef3}" ; (ỳ) y with grave -- 2.47.3 From d49c1f8dae5f2fc555fdf917acd491b7647021ee Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Fri, 19 Nov 2021 00:28:48 +0100 Subject: [PATCH 15/16] Add files via upload A few additional characters for Hanyu Pinyin (Mandarin Chinese with Latin-based letters) have been added. --- autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk | 8 +++++++- ...ltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk b/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk index cd98dce..f9b72c5 100644 --- a/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk +++ b/autohotkey-v2.0/UltimateKEYS (for AutoHotkey v2.0).ahk @@ -1,4 +1,4 @@ -; UltimateKEYS (for AutoHotkey v2.0).ahk - 2021-11-14 +; UltimateKEYS (for AutoHotkey v2.0).ahk - 2021-11-18 ; Created by : Pieter Degroote @@ -232,6 +232,8 @@ dkMacronStroke["t"] := "{u+0167}" ; (ŧ) t with stroke dkMacronStroke["T"] := "{u+0166}" ; (Ŧ) T with stroke dkMacronStroke["u"] := "{u+016b}" ; (ū) u with macron dkMacronStroke["U"] := "{u+016a}" ; (Ū) U with macron +dkMacronStroke["v"] := "{u+01d6}" ; (ǖ) u with diaeresis and macron +dkMacronStroke["V"] := "{u+01d5}" ; (Ǖ) U with diaeresis and macron dkMacronStroke["y"] := "{u+0233}" ; (ȳ) y with macron dkMacronStroke["Y"] := "{u+0232}" ; (Ȳ) Y with macron dkMacronStroke["z"] := "{u+01b6}" ; (ƶ) z with stroke @@ -501,6 +503,8 @@ dkDiaeresis["S"] := "{u+01a9}" ; (Ʃ) capital letter esh dkDiaeresis["t"] := "{u+1e97}" ; (ẗ) t with diaeresis dkDiaeresis["u"] := "{u+00fc}" ; (ü) u with diaeresis dkDiaeresis["U"] := "{u+00dc}" ; (Ü) U with diaeresis +dkDiaeresis["v"] := "{u+01d8}" ; (ǘ) u with diaeresis and acute +dkDiaeresis["V"] := "{u+01d7}" ; (Ǘ) U with diaeresis and acute dkDiaeresis["w"] := "{u+1e85}" ; (ẅ) w with diaeresis dkDiaeresis["W"] := "{u+1e84}" ; (Ẅ) W with diaeresis dkDiaeresis["x"] := "{u+1e8d}" ; (ẍ) x with diaeresis @@ -531,6 +535,8 @@ dkGraveAccent["t"] := "{u+00fe}" ; (þ) small letter thorn dkGraveAccent["T"] := "{u+00de}" ; (Þ) capital letter thorn dkGraveAccent["u"] := "{u+0215}" ; (ȕ) u with double grave dkGraveAccent["U"] := "{u+0214}" ; (Ȕ) U with double grave +dkGraveAccent["v"] := "{u+01dc}" ; (ǜ) u with diaeresis and grave +dkGraveAccent["V"] := "{u+01db}" ; (Ǜ) U with diaeresis and grave dkGraveAccent["w"] := "{u+1e81}" ; (ẁ) w with grave dkGraveAccent["W"] := "{u+1e80}" ; (Ẁ) W with grave dkGraveAccent["y"] := "{u+1ef3}" ; (ỳ) y with grave diff --git a/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk b/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk index 4da5cd9..a667f14 100644 --- a/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk +++ b/autohotkey-v2.0/UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk @@ -1,4 +1,4 @@ -; UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk - 2021-11-14 +; UltimateKEYS SW (Scroll Lock) (for AutoHotkey v2.0).ahk - 2021-11-18 ; Created by : Pieter Degroote @@ -232,6 +232,8 @@ dkMacronStroke["t"] := "{u+0167}" ; (ŧ) t with stroke dkMacronStroke["T"] := "{u+0166}" ; (Ŧ) T with stroke dkMacronStroke["u"] := "{u+016b}" ; (ū) u with macron dkMacronStroke["U"] := "{u+016a}" ; (Ū) U with macron +dkMacronStroke["v"] := "{u+01d6}" ; (ǖ) u with diaeresis and macron +dkMacronStroke["V"] := "{u+01d5}" ; (Ǖ) U with diaeresis and macron dkMacronStroke["y"] := "{u+0233}" ; (ȳ) y with macron dkMacronStroke["Y"] := "{u+0232}" ; (Ȳ) Y with macron dkMacronStroke["z"] := "{u+01b6}" ; (ƶ) z with stroke @@ -501,6 +503,8 @@ dkDiaeresis["S"] := "{u+01a9}" ; (Ʃ) capital letter esh dkDiaeresis["t"] := "{u+1e97}" ; (ẗ) t with diaeresis dkDiaeresis["u"] := "{u+00fc}" ; (ü) u with diaeresis dkDiaeresis["U"] := "{u+00dc}" ; (Ü) U with diaeresis +dkDiaeresis["v"] := "{u+01d8}" ; (ǘ) u with diaeresis and acute +dkDiaeresis["V"] := "{u+01d7}" ; (Ǘ) U with diaeresis and acute dkDiaeresis["w"] := "{u+1e85}" ; (ẅ) w with diaeresis dkDiaeresis["W"] := "{u+1e84}" ; (Ẅ) W with diaeresis dkDiaeresis["x"] := "{u+1e8d}" ; (ẍ) x with diaeresis @@ -531,6 +535,8 @@ dkGraveAccent["t"] := "{u+00fe}" ; (þ) small letter thorn dkGraveAccent["T"] := "{u+00de}" ; (Þ) capital letter thorn dkGraveAccent["u"] := "{u+0215}" ; (ȕ) u with double grave dkGraveAccent["U"] := "{u+0214}" ; (Ȕ) U with double grave +dkGraveAccent["v"] := "{u+01dc}" ; (ǜ) u with diaeresis and grave +dkGraveAccent["V"] := "{u+01db}" ; (Ǜ) U with diaeresis and grave dkGraveAccent["w"] := "{u+1e81}" ; (ẁ) w with grave dkGraveAccent["W"] := "{u+1e80}" ; (Ẁ) W with grave dkGraveAccent["y"] := "{u+1ef3}" ; (ỳ) y with grave -- 2.47.3 From 9def1c97755d23a89f9212d903d15ea195a53ed1 Mon Sep 17 00:00:00 2001 From: Pieter Degroote Date: Fri, 19 Nov 2021 00:29:33 +0100 Subject: [PATCH 16/16] Add files via upload A few additional characters for Hanyu Pinyin (Mandarin Chinese with Latin-based letters) have been added. --- msklc/UltimateKEYS SW.klc | 8 +++++++- msklc/UltimateKEYS.klc | 8 +++++++- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/msklc/UltimateKEYS SW.klc b/msklc/UltimateKEYS SW.klc index 617f6e0..109eeb6 100644 --- a/msklc/UltimateKEYS SW.klc +++ b/msklc/UltimateKEYS SW.klc @@ -1,4 +1,4 @@ -KBD ultksw "UltimateKEYS SW - 2021-11-14" +KBD ultksw "UltimateKEYS SW - 2021-11-18" COPYRIGHT "License: GNU General Public License Version 3" @@ -291,6 +291,8 @@ DEADKEY 00af // Dead Key : Macron/Stroke 0055 016a // U -> Ū U with macron 00fc 0289 // ü -> ʉ u with bar 00dc 0244 // Ü -> Ʉ U with bar +0076 01d6 // v -> ǖ u with diaeresis and macron +0056 01d5 // V -> Ǖ U with diaeresis and macron 0079 0233 // y -> ȳ y with macron 0059 0232 // Y -> Ȳ Y with macron 00fb 024f // û -> ɏ y with stroke @@ -540,6 +542,8 @@ DEADKEY 00a8 // Dead Key : Diaeresis 0074 1e97 // t -> ẗ t with diaeresis 0075 00fc // u -> ü u with diaeresis 0055 00dc // U -> Ü U with diaeresis +0076 01d8 // v -> ǘ u with diaeresis and acute +0056 01d7 // V -> Ǘ U with diaeresis and acute 0077 1e85 // w -> ẅ w with diaeresis 0057 1e84 // W -> Ẅ W with diaeresis 0078 1e8d // x -> ẍ x with diaeresis @@ -568,6 +572,8 @@ DEADKEY 0060 // Dead Key : Grave Accent 0054 00de // T -> Þ capital letter thorn 0075 0215 // u -> ȕ u with double grave 0055 0214 // U -> Ȕ U with double grave +0076 01dc // v -> ǜ u with diaeresis and grave +0056 01db // V -> Ǜ U with diaeresis and grave 0077 1e81 // w -> ẁ w with grave 0057 1e80 // W -> Ẁ W with grave 0079 1ef3 // y -> ỳ y with grave diff --git a/msklc/UltimateKEYS.klc b/msklc/UltimateKEYS.klc index 8803e02..2ea6bc5 100644 --- a/msklc/UltimateKEYS.klc +++ b/msklc/UltimateKEYS.klc @@ -1,4 +1,4 @@ -KBD ultkeys "UltimateKEYS - 2021-11-14" +KBD ultkeys "UltimateKEYS - 2021-11-18" COPYRIGHT "License: GNU General Public License Version 3" @@ -291,6 +291,8 @@ DEADKEY 00af // Dead Key : Macron/Stroke 0055 016a // U -> Ū U with macron 00fc 0289 // ü -> ʉ u with bar 00dc 0244 // Ü -> Ʉ U with bar +0076 01d6 // v -> ǖ u with diaeresis and macron +0056 01d5 // V -> Ǖ U with diaeresis and macron 0079 0233 // y -> ȳ y with macron 0059 0232 // Y -> Ȳ Y with macron 00fb 024f // û -> ɏ y with stroke @@ -540,6 +542,8 @@ DEADKEY 00a8 // Dead Key : Diaeresis 0074 1e97 // t -> ẗ t with diaeresis 0075 00fc // u -> ü u with diaeresis 0055 00dc // U -> Ü U with diaeresis +0076 01d8 // v -> ǘ u with diaeresis and acute +0056 01d7 // V -> Ǘ U with diaeresis and acute 0077 1e85 // w -> ẅ w with diaeresis 0057 1e84 // W -> Ẅ W with diaeresis 0078 1e8d // x -> ẍ x with diaeresis @@ -568,6 +572,8 @@ DEADKEY 0060 // Dead Key : Grave Accent 0054 00de // T -> Þ capital letter thorn 0075 0215 // u -> ȕ u with double grave 0055 0214 // U -> Ȕ U with double grave +0076 01dc // v -> ǜ u with diaeresis and grave +0056 01db // V -> Ǜ U with diaeresis and grave 0077 1e81 // w -> ẁ w with grave 0057 1e80 // W -> Ẁ W with grave 0079 1ef3 // y -> ỳ y with grave -- 2.47.3