From d773bf38a3c8f49ea56de67d3b828f8126f46ed2 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
Date: Tue, 28 Jun 2011 16:32:39 +0900
Subject: [PATCH] Cleanup key drawing code

This change also modifies 9-patch drawables to fix the following
issues.  In order to draw key background drawable just on the
coordinates we want, we have to know where an actual "visible" part is
in the drawable.  The only clue we can use is "padding" of the
drawable.  To achieve this, the 9-patch drawable must have its
"visible" part marked as "content".  Please refer the Bug: 4948171 for
more detailed explanation.

This change also reverts the following "black" drawables back from
Gingerbread because recent change broke these (I70019a91).
  * drawable-hdpi/sym_bkeyboard_*.png
  * drawable-hdpi/btn_keyboard_key_*_stone.9.png

Bug: 4948171
Change-Id: I6e4d03b3144caa95c793aac97af22df34c5f454f
---
 .../btn_keyboard_key_dark_normal.9.png        | Bin 472 -> 506 bytes
 .../btn_keyboard_key_dark_normal_off.9.png    | Bin 649 -> 657 bytes
 .../btn_keyboard_key_dark_normal_on.9.png     | Bin 944 -> 1048 bytes
 .../btn_keyboard_key_dark_pressed.9.png       | Bin 663 -> 972 bytes
 .../btn_keyboard_key_dark_pressed_off.9.png   | Bin 869 -> 1082 bytes
 .../btn_keyboard_key_dark_pressed_on.9.png    | Bin 1119 -> 1440 bytes
 .../btn_keyboard_key_fulltrans_normal.9.png   | Bin 1370 -> 1785 bytes
 .../btn_keyboard_key_fulltrans_pressed.9.png  | Bin 1315 -> 1701 bytes
 .../btn_keyboard_key_light_normal.9.png       | Bin 448 -> 505 bytes
 ...tn_keyboard_key_light_popup_selected.9.png | Bin 453 -> 301 bytes
 .../btn_keyboard_key_light_pressed.9.png      | Bin 649 -> 835 bytes
 .../btn_keyboard_key_normal.9.png             | Bin 904 -> 1134 bytes
 .../btn_keyboard_key_normal_off.9.png         | Bin 1076 -> 1243 bytes
 .../btn_keyboard_key_normal_off_stone.9.png   | Bin 2059 -> 2389 bytes
 .../btn_keyboard_key_normal_on.9.png          | Bin 1137 -> 1307 bytes
 .../btn_keyboard_key_normal_on_stone.9.png    | Bin 2029 -> 2409 bytes
 .../btn_keyboard_key_normal_stone.9.png       | Bin 1719 -> 2213 bytes
 .../btn_keyboard_key_pressed.9.png            | Bin 831 -> 1088 bytes
 .../btn_keyboard_key_pressed_off.9.png        | Bin 1041 -> 1233 bytes
 .../btn_keyboard_key_pressed_on.9.png         | Bin 1086 -> 1271 bytes
 .../drawable-hdpi/sym_bkeyboard_123_mic.png   | Bin 2583 -> 2576 bytes
 .../drawable-hdpi/sym_bkeyboard_delete.png    | Bin 1856 -> 2314 bytes
 java/res/drawable-hdpi/sym_bkeyboard_mic.png  | Bin 1453 -> 1410 bytes
 .../drawable-hdpi/sym_bkeyboard_return.png    | Bin 1426 -> 1111 bytes
 .../drawable-hdpi/sym_bkeyboard_search.png    | Bin 2045 -> 1612 bytes
 .../drawable-hdpi/sym_bkeyboard_settings.png  | Bin 1710 -> 729 bytes
 .../res/drawable-hdpi/sym_bkeyboard_shift.png | Bin 1820 -> 1474 bytes
 .../sym_bkeyboard_shift_locked.png            | Bin 1467 -> 1115 bytes
 .../res/drawable-hdpi/sym_bkeyboard_space.png | Bin 790 -> 358 bytes
 java/res/drawable-hdpi/sym_bkeyboard_tab.png  | Bin 1123 -> 1008 bytes
 .../btn_keyboard_key_dark_normal.9.png        | Bin 377 -> 458 bytes
 .../btn_keyboard_key_dark_normal_off.9.png    | Bin 545 -> 588 bytes
 .../btn_keyboard_key_dark_normal_on.9.png     | Bin 806 -> 960 bytes
 .../btn_keyboard_key_dark_pressed.9.png       | Bin 514 -> 849 bytes
 .../btn_keyboard_key_dark_pressed_off.9.png   | Bin 687 -> 957 bytes
 .../btn_keyboard_key_dark_pressed_on.9.png    | Bin 940 -> 1293 bytes
 .../btn_keyboard_key_fulltrans_normal.9.png   | Bin 1068 -> 1553 bytes
 .../btn_keyboard_key_fulltrans_pressed.9.png  | Bin 1021 -> 1461 bytes
 .../btn_keyboard_key_light_normal.9.png       | Bin 355 -> 454 bytes
 ...tn_keyboard_key_light_popup_selected.9.png | Bin 389 -> 258 bytes
 .../btn_keyboard_key_light_pressed.9.png      | Bin 526 -> 717 bytes
 .../btn_keyboard_key_normal.9.png             | Bin 726 -> 991 bytes
 .../btn_keyboard_key_normal_off.9.png         | Bin 860 -> 1083 bytes
 .../btn_keyboard_key_normal_off_stone.9.png   | Bin 2389 -> 2389 bytes
 .../btn_keyboard_key_normal_on.9.png          | Bin 926 -> 1151 bytes
 .../btn_keyboard_key_normal_on_stone.9.png    | Bin 2408 -> 2409 bytes
 .../btn_keyboard_key_normal_stone.9.png       | Bin 2213 -> 2213 bytes
 .../btn_keyboard_key_pressed.9.png            | Bin 664 -> 956 bytes
 .../btn_keyboard_key_pressed_off.9.png        | Bin 836 -> 1078 bytes
 .../btn_keyboard_key_pressed_on.9.png         | Bin 886 -> 1119 bytes
 .../btn_keyboard_key_dark_normal.9.png        | Bin 546 -> 571 bytes
 .../btn_keyboard_key_dark_normal_off.9.png    | Bin 735 -> 727 bytes
 .../btn_keyboard_key_dark_normal_on.9.png     | Bin 1069 -> 1110 bytes
 .../btn_keyboard_key_dark_pressed.9.png       | Bin 709 -> 1007 bytes
 .../btn_keyboard_key_dark_pressed_off.9.png   | Bin 924 -> 1128 bytes
 .../btn_keyboard_key_dark_pressed_on.9.png    | Bin 1244 -> 1486 bytes
 .../btn_keyboard_key_fulltrans_pressed.9.png  | Bin 1389 -> 1869 bytes
 .../btn_keyboard_key_light_normal.9.png       | Bin 529 -> 548 bytes
 ...tn_keyboard_key_light_popup_selected.9.png | Bin 535 -> 359 bytes
 .../btn_keyboard_key_light_pressed.9.png      | Bin 722 -> 860 bytes
 .../btn_keyboard_key_normal.9.png             | Bin 1004 -> 1172 bytes
 .../btn_keyboard_key_normal_off.9.png         | Bin 1176 -> 1278 bytes
 .../btn_keyboard_key_normal_off_stone.9.png   | Bin 2117 -> 2833 bytes
 .../btn_keyboard_key_normal_on.9.png          | Bin 1271 -> 1345 bytes
 .../btn_keyboard_key_normal_on_stone.9.png    | Bin 2131 -> 2867 bytes
 .../btn_keyboard_key_normal_stone.9.png       | Bin 1787 -> 2658 bytes
 .../btn_keyboard_key_pressed.9.png            | Bin 921 -> 1131 bytes
 .../btn_keyboard_key_pressed_off.9.png        | Bin 1131 -> 1273 bytes
 .../btn_keyboard_key_pressed_on.9.png         | Bin 1197 -> 1312 bytes
 .../drawable/btn_keyboard_key_fulltrans.xml   |  26 -
 java/res/drawable/btn_keyboard_key_popup.xml  |   2 +-
 .../drawable/btn_keyboard_key_popup_ics.xml   |   2 +-
 java/res/values-land/dimens.xml               |  31 +-
 java/res/values-sw600dp-land/dimens.xml       |  22 +-
 java/res/values-sw600dp/dimens.xml            |  27 +-
 java/res/values-sw768dp-land/dimens.xml       |  32 +-
 java/res/values-sw768dp/dimens.xml            |  38 +-
 java/res/values/attrs.xml                     |   7 +-
 java/res/values/dimens.xml                    |  48 +-
 java/res/values/styles.xml                    |  21 +-
 java/res/values/themes-gingerbread.xml        |   2 +-
 .../com/android/inputmethod/keyboard/Key.java |   9 +-
 .../inputmethod/keyboard/Keyboard.java        |  15 +-
 .../inputmethod/keyboard/KeyboardId.java      |  11 +
 .../inputmethod/keyboard/KeyboardView.java    | 467 ++++++++++--------
 .../inputmethod/keyboard/LatinKeyboard.java   |  10 +
 .../keyboard/LatinKeyboardView.java           |  13 -
 .../inputmethod/keyboard/MiniKeyboard.java    |  30 +-
 .../inputmethod/keyboard/PointerTracker.java  |   4 -
 .../keyboard/internal/KeyboardParser.java     |  17 +-
 90 files changed, 477 insertions(+), 357 deletions(-)
 delete mode 100644 java/res/drawable/btn_keyboard_key_fulltrans.xml

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal.9.png
index 50cc49fdb0a201dae42f2613223a50d61f5d73dd..bc130cab67898c804460c6a51d7fa42fdf659033 100644
GIT binary patch
delta 481
zcmV<70UrL?1NsAyBYy$GNkl<Zc-rmSOKZYF5WsOkjUU6K3VMlF8#Qk=Pv2FjQjgVJ
zt=}KEJA->D7V2JPWLNlI0;}^sWg;mQ9`j*W5B;%crek!Bj?pnXM#nrpCJaOLbw0E2
z%Y~HjWb$v&uZy3@Bl<WT*lxck0cHWm(}|TzC8S=A_=4Gd&VQz}83`~8c;D@qQK_K2
zVz%2Y%JZBYn9DE>q+ZP1W`oi!BM0V^idnDMC`l4>U@moIR;v|?;+UKzpGzucv0Ng!
z+fp-MEEJA`17I{BlLI$SsTgtB4fwK2O+K9}90Lb{9|YuNd<&3@$@rZXc%Da2nx+cJ
zB>VtyT$h}fZ+`(&F>w+j+p)=s;z;3`D2mW<I3#Dnw*aXau{!hz19D)la=DDuixGQ}
z)$fx7b4kU7qY-+wEOKBjg=4ON&-Qvfass}eNyWec(Cv1~@qJ&Nn461Y-G1SRsqs{b
zxd{^McBj)J$K{)|RE*0*K${<?#!)&(JP4WXHaWKANLt451Hd#*a%|hyF*-)a=$JcW
zEdJa8TCEmqHk%~CECA*z7K=!|m}<3(>h(IS)oLU(8Vv+<NxeIxU(q5I^K9=q|M~d=
XfG#%pRDXz#00000NkvXXu0mjf;ql-9

delta 447
zcmV;w0YLux1K0zQBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET4
zdPzh<RA_<inn7-ZFc3w*feqK7SvIHO*6B5J1}|B$v+;BhLV=DgRc*?6@RQI;AyVcu
z-yR1W_#bG#UW!@$SninW=nVdnB1S4jj8uvksi+deHqE~80e=AR*DI<@mfrjQj*r`o
zz1MIbzFjT=fMFOgP1EZ#`vG-b0|2_NL(@Fc_TF#4BkQsM61FnqI4+S$#<I<r$B6LW
zqnfLPU1eA?-Z=n35MnXlYfw+#1Ca-;-)3P}9)wtIO)4i=427_Xl1SyG-)5xAX3Lln
zXtPvK=dqcThJU#xl@o8Xxs=6b2cq9*rD+P_1Zy)2n<$A?PWo*|fi_VRshqMKGlcl`
zd;*)PYMPmf(QmWotDM}HGsR|7X~1lo(=JLPm6N*480-Y+`hSL>0CrIlr?S~Ma-Eu!
zO*6I+awuo%GewM4iWsS|vzeQBo1JrFrswt6dF<u6{y555YXJal+lr~o^9+x*HhKg`
p)9G1VHZw%D3@!#~6^kcIgim1w|07~?AiV$p002ovPDHLkV1fcy%dh|d

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off.9.png
index dabf77ec676fcd6d4c5f31bcf38ad0b0c5f92a72..43099899c8c2313e24cd1a7f2bc0b3b8564bbf2a 100644
GIT binary patch
delta 633
zcmV-<0*3vG1(5}iBYy%|Nkl<Zc-rln$#2>~6o(_R<d5LM0f|Kd2{1d@?AT^s8c2zn
zW67;){(osYzbD3`O{HcIb|;##^j)lH{639`_h#(7yJ!w}CDNOHW{ixHF)~KR$QYUE
zWya$%@#FQC{d{{<is@|jPodvVe!pCZZ_m%{{Pd&*$OT+pUVm6T9w+pZ5kIirY}jhO
zRs!S#zMju4d4ErQNalDv63gW>68il<k;!CODwQI#*(@84M#OC_@=7L?gnlw#9v+DK
zVi7vy$%N%{IigyvvR11_l*?t7&*ur(^MZKfB_(q>90=d{L#N$tGt07wUauF>?RHtE
zQXy>H4&srQzJD_N{hq+^hK<ALO1;q_I$YqETD?w;cmWsjJD!)6%yzdUP;J9zxmpDy
z&}=q?In&^B6+VXmVnqCAyVY0*7l6rh8af`I2jYIs>%SOi@wtRY3d~$Lh)3a+k`YxG
z&uSF-^Eq*Pd<@!_<LN}A;5HVcq^}Gv07G7VRb#=s0Dmc&1+TPVFc>JuoR6TsGU6FV
zK~oLPAt@Qp_XyjumBaO1jb&V3q`+<CrwTLP1xU$=*5S{_PX&-yB9S2UlM#JTyVFq)
z<RvA8r7S?Rry9shW0~vrEY=sQf!!J@8L`EK1(IqEheLg2-klWfw%BM;iGfZs?}S9V
zU8~iU19IEAQZjum0xW*9YB*ZUh=owqvXsMi97!2|0l==jYGB{l$QT(TV`M%igST0r
zR4TDzv8V*d1t70jEJo-jlTN1zyy+Ehg8w&#LV-YDQs2&)PqY-0`E1`g|MmC<hkGdj
TU)@L&00000NkvXXu0mjf`QtHL

delta 625
zcmV-%0*?KW1&IZaBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET5
zD@jB_RA_<in$M1+KoEyN&>;&LJ$W-Dap$=66u$NBYxoF;aPpwC0cq(y2n5}R9kMIa
z{P_}736fAn{i>>=fp(DD@2ME2i*+5t{Av&WCu1<WG6th7V}CHZ(yL&ULvy>`0`TMg
z9n;h+-ra7;&yNq~e^b@L?{9Aa91aJr*X#2<YrteO0bsM)FrD7q7DC*eqt|W!N0ga4
zpU;JrQjcYuVcaT02!WYpiHFQ6gAqvrK-!YTPNx$9`~99MiU4q3m(^+ofa5qtQD23C
ziW}U2nWb6eX@3h6i{qFe2mn|t7A%)b0HP?u_k94?o>w%0I-ium$TYpP&*WDaGMmi+
zux-0I?z(PKC*^bMeCof<WQ#I;u`EQ^XdbUO$>zz6WqnHe^)=Ii%;xhsr{fU-(=ZBY
zrD<9WY{zkk<M^*W4M%2e3``*euj@4cK@b#k=9_KfWq)%f48u?Pq?TEh$~I(nxm*fq
zd7g)5S-`DjA2a!t*I=W}%J$jh(#mZejb+y6&}_=Ehi02=v!*m(o5}Rf>O`GS{g;_c
z<(<`uI-fdMGm`4|JOG)sJT#lod}wwwnEuNwf0fg<<;*BEU74cTHkS`pC+d9aU1kg(
z0`BVbjB2_8JXoC=l+6C1tF5_qXjbimd?`bjGh;BiG6th7%5IiqyUj_GXw#m{Tjy0T
z&-<U5e3#d@ZEZ4>f5YSZe&r`HefoN~UotbKltpnV&@E%tj!MaIdpuChCIe0r00000
LNkvXXu0mjfzi}#$

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on.9.png
index 6e7d74c887ee3672d0b6dfbb0a85ba7dfba9bf04..2d1acf22fe2fba3a7873d24306c0050c3dc6fe42 100644
GIT binary patch
delta 1027
zcmV+e1pNE32bc(uBYy+mNkl<Zc-rmS+iM(E9Ki7=A-C2Sp9R+v+f5(=Nn&Cyd!3!z
z&UJS#dzrmtb2Z(n>1Nj(v|zzLDERDyPlA2$f(nX06zY=-S`_p}(ZA*AIlsw7YAR-M
zTBe;@_`q^F!=CT5J9BoKGiM&m1CBh<7kik+F>y>B6UW3c|9{WW(2?OG7#{f-!!A0<
zn;-2MhGEc42M2Ja*9%<lkmw(x{-6(oS6nZ@I=G8BemFQhp3m{ze+Jz(xVyK9nynVp
z9VakO!_{atptaFNo$WSkKi@&S-OayU+B_bob2?iaX#dhajE;_?=*4(1u4)=6su~zg
z*HFpO!Kxal-hZ}XW4DI3FE?Q41=m*Bfi@YV>Ma|rnt|vWF>!VRohrt*Z6wQbFcg=j
zsi<t~P-~i~vsZ<^0}(Yg6X0|nM~$s1GNz#RZWXGIft+RyCP~O-Bx6j=LPbdmge1EZ
zT|q`gCkwXF{uK?bzx@RI@QVc8{$UDz@M!|B-FOo1ynkqskE4m4b`8#+n?UzCRiBJ8
z3<HUx7>HuAh!jmmMnxm<yoFx7z6PJ)I*)$(BMCqM>ALe<5<dF!Db&BpkZ=<<T2(mr
z*d&TxOu1Y}ydVTZAVHL*N~mP3;B1=c&37{J&5utbFNC6Dx4xS~S8oVV+b~eQS@9R6
zmr97`xPL&<t2QM{0#eHo*i9V`u2tZZucy%Wzg~blzh6Y({&E3ses&Rc`*pA!4OQxv
zzwgW=6{G1oDzI!YI2SMQNK!@eQBzQJ$A&lFs-X97J_8?rbsoL@{sQ@UIjG(-K(}OM
z+GT&IX77rfC!5V671#peM2-XrNVlZplfmWw4uAAs@1kyR`}j+*ndB6&2uLq$Fflof
zq8B483d-g4f%2jlmH|#+ktp*ZmqetQMbJnbrIP2eE+9cB-#s#yQd9-T$H&pBVkCOi
zCbHS=eUZ!MNR*3V^T6^9;)DY5qKiIfIR-HW@<!xyNRo;$Ha3Q$7bB9ZHI>d}?w_nH
zLx18jIal@{ym30mn@=ykzG4JXK&f;pbm*x)x-mS@qxJRm(Ba6A!dHy94Ov}V3mv*H
zU;hC-QZe41YGrjbbm+Q##V~~edTwPUbm+Pw9CP&d?DFz*=;X;B&sPjRfLdBw3LUx?
zicHLjL2t|cEIBxAvQdgT5#(*v7Z(>pCwxP8+`eLPTTU#HgTp2r=@{<^)cnFi=%mtV
zpE2YBYJPq`bW*8Q923XHF>%Z(V^+xT25N3@4rXU(LxHY^qU#zN89~vDNhA_zdU_g?
x$z&+Z%*-IVE?@V~#P^$pDCS|i&-tE@zW{rrgtc5&a+Cl7002ovPDHLkV1m*8?5h9(

delta 923
zcmV;M17!S|2(Sl`BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
zQb|NXRA_<in%QpDFcgMAI}4q%wId;x3xrfI5CS125D!pZn!W{4fhumxu$7^7fli(H
zaN*dUPLqhLX(!FhFOBSEyquH&_c_i27XvAN=L$78*=2{)(|@+0Nz9#TE9TC$6`gV>
zp4P-l9aTbo5;9hZJCK?r(kW(2ljiE`DgaNOK1J*1{Z)!UjaDjTJ2gR(6f{^Xfsyt1
z?^%1ZRyuB}%vK&g1YkHElIQtZZ4dCaDy`7k9YnDvik&w)8goXR699Q;LEL{UD=Q>P
z0)R2**!Z22S$`=rdwYAKl)4pnN_aMOq==IUfaFR<s$D&fqrjfELS`)h<}k+?rx0T@
zqN494Go{XCMI+mk#KOvSLQqN(C+_5x1x?!924H{Z10p-FjqY>x`s1SG)nJQAPF3*h
zzRawTA`MB*UrDRncyR<ec4rqB|8n=<I{+TNj=6Qa4}ZX5Gh^f9TL8X%eT5kv@eu-v
zI-Yk*osmMTzC61(#q42b3E_BYd5dSyQvmKiNJG;bH)7Is1i+uaL;mb8yP<M95yCyX
zFEcqOnW?dH{T$b>#oSzS(P{jG>j;+n?tHJ81Y1;%P4#Q0A(;h@=ROI#5DT!qeTSc0
zn*b~<Sbvh#H6D$G@86s=!(pGy>;s@hSEh^Eky%p-(~ok*jKz#x-uU`OSbz5dfM3H6
zmX?15u=S(Q=gmj%{Lcf-p=%$jJj9Vn^U7sb$g3%t1^A0(j-EX2isjSBA^<<Wza&jv
zWE&lf*#1={)7^vMJV`W{S)=<h08g}Jd0@#}A%Dx<UU2vKeux$#g3VlqEVJa9Yac0#
zR0!r`lBOTGD3w)V>^xU!;~Y?9cby_2cI<w}*Q0!fW!CiG>;yytO)6I*t4?lGWUL~^
zQEpF}G^G%wREe_*$g$%8yVcm#eVO^iCN-2!3w1V4XU&`eLUqcR0hygs(rf~CHg(FG
z?tjZH>~5RhH8+4do8~fWD`HA^6f#k^33WDgjv2*-!{>EB(*#Z*04B;dVWwnu0+%&3
z*Cx%{SG&`~tmK)wGi}A(nYN-dn)z4K#+cTGXaDLi%d*M``rT({Fc<*P>-Ad0jQ@sb
xFc?&R0@J0hXS*dcB~txfo%S(SZKw$U02Guf(&kwlRVn}g002ovPDHLkV1i5Nul4`{

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed.9.png
index ddb77c224bc1e1d9cbf264fbd4b1c3104e371b31..af5ea6bd28d8431af34bfabacc43c36d3ae5372d 100644
GIT binary patch
delta 951
zcmV;o14#Ur1<VJKBYy*vNkl<Zc-rln=}IF}5QY6CqQ00uil7*mxF<%VCNb`DPfTz@
zqacW=_;z>rE_0f8#^7|AYR2gfe1DX#b5Gx@x(nUY6VK26Bv!HSOll@IlbT7*q-Ihx
z@tYYL8S%Wlytw!G_kg#zH_z+qtN)(`#0GRe(;gce`_j;dKYu<wJ$W7<AKk;lgXiw<
z&fVPHc&@Ln-PP5V3B(3;(1iQ@dp{O<etvd+eSMzfnQ6D%9)dTUP0#uHxjQ{Q^&B4`
zyQ8Bc6NnAypb6;9EXD>02R(meMsMWe;vxu$K&@8u?C<Zpy}dmXhz;n-82XF_Zf|eh
zz`%efd1jQiXMbmBK|lm{c6K~lTU)MLt(rh=Ku5+%KgI%#E0USZ%S+G6$w@F9ySuxA
zV5L%V<#O2sVgovQc?Smv!AoUa$u-kzwLFK1he0kg^%C6J*l_FX>n0Ez(9z37pRoX)
zEs_}(8#AJ}v$?q$2(7KHxni+s0<i%d&5~vZ7*}eBhkv)Xw><<^Dj>SLx@v+<p`)}$
zU!5(onMR}GAy<{RrBW#nT3K0fg+jpuVgowL1oUY@P_NfhGauS9L1hNf<>h4)WGZZi
zdhOZ_4}c0E$YJF*qWOH@1erodHL4~6Y;BTjMw`p<LaFqETrTI9mX=H)HYnAAdexqd
zqd_Dy+JDsXFo8fb0*EdyE}9@ynjKIR0Jd1kHKP-yx){(dmDh+aEG(EHQ|PEoQ#Y#J
z$Y!)drSP=9(2T(R{Jfi+n=^sfpxFWRRlA&RQZwpep!5PnXJ=<kkSV1apx?C_-IS>C
zfuPE3L}zAZOpqyb)TYr_BjQYxTr)b=sfz(Ym4DBOX0urnWJ+}d=&P%8#)@P{=l-x6
zf-0X8ot~aHL8eqUz-~ZWn?#xU?T<R5^04+}1XVsGIyE(Af=sDyK<ybAS7OZcbTXsG
z5(ui|M09d;(gc}O69BC>z&$`DGrBy`VhIFQJ|j9YF=2vCsct~+892)K_xF2}XGXV}
zJb$c(i=fJ9L^GL;2{NU+0XnJ7a1YRxnNBl9PRBhns+q25=D#rWRcnr8(M0F7MU!zw
zGNZj&_y|CIR`58^Gw5hp2p<6$S8AryRTDL&F88-ljsAMoqzjG6W@I4Tnt5As*G%{b
zt=7z?MsIJgCwXRuhK4*WV&miE0erUtqcEeR=AaYSR?8k99**|yO!|q|KV;^+edqk?
Z?*|{l)zcXbd}jav002ovPDHLkV1nyw$^HNU

delta 639
zcmV-_0)YL@2bTqqBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET5
zIY~r8RA_<iT1&EmFc9o~)T?+G*B-+2coBDQxrG;Tp%TbjX!3@TL`o%wNLN`*1!1O{
z&IA~MG|-RVs9?m|)WP_-Blsj{GPz<VlPhL2xuPgC-bHh_+kXK7Hk%Ekly<yr+xwrj
zhSuY(vy3sj<^2Cz8{fy{5&Qk#f9zx1iR^GV005e%LDMunI~5rr1OR|@ZZGO$vA}k_
z1pr*H*Uqs;$xQkNFP94d;C8z~DFpyfO4(GmZ995qIOkSoQc9bd)oNvJH#1%`CeXUB
zt+bR<)=ovn$bXE+B&7`cE?;I;S|%GbOQ|yBtDYtXAG~Df+@J(flA-5kjM;G$n-As7
z%&-rwGpRE}CHJz-wALNTr7X?VroLl-%a@q}ts)_NEWF|`x@fx6%0XtoUCj*W)pzZ&
zWfqDfhN#SPoHM^&&2lIJ?k&ua0uUub?OA4tF}VT|!++C9fE?zGdyg1G`7$%eNoGSZ
zc+SMe$G}|8e1kbxvzXtfi{`VFkA+wK6(_SE<*CZ7xXdsFK5Cd+W+qw9LcWWWSr0j8
z#*NK~=)D=ebEP(YUHWPG{JC}r<;%>p-)Jk2+CcmYy#rt8ObF45BZMd!A%ypZb*g5Q
z>0JsTI(VJu5XzUC-6^}f>8qa<nK9XrQg)iPA$ZB0&u0Ml)_Gmm0KVHg7eZjUTmrbu
z-Sk{tlrOWYssI4%^}09lf#J{O@4)?b#>nh+I$5>!j(KcL_<FW1nK7+(Yyr$IW8pxx
Z#vk()7%p-pk!Sz_002ovPDHLkV1mK(Fh>9Y

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off.9.png
index 1e9227e1cbb3830595520b310459721a1093adab..3e25a981771cdc17e54b35f6cff7f5846496c45b 100644
GIT binary patch
delta 1062
zcmV+>1ljxL2D%84BYy+|Nkl<Zc-rln$4V_r6o$`8K_ACQaN<Cm3Mx7fMKI@_bIv*E
zIB;SB1L}*_+27*)O&{*L+}ro=@`P^TgRM~g*Wa~j)vD$G^5t`W+&4Z|>~|(HlbA`&
zBxVvbiJ8wgQ(s?iyuQA=kB<-I?d{EehnJTZ_x$|q1)dG)pnnPIzrVj5&CSjKXz05?
zK0Q4dkB^V;_V(7exw&zdmzT!*`MGz{K@-q_cz7@{nwgnt#Lvv#-JNlDb>)takB!~k
zUAMWpX{@iWdj}mf;pphd<^uQk_bxj-+xS;zv>KS$+1W8xS6AKQ;-WD>Kc80G+S-iV
z++3HFlVjxN<$t-Mp&?^?dpmfk%qzZT6svoCdv0xQ%|LW|dfJ$nm`EGl-Q6~EC@wB`
zm6eqSpY!wcjfI7UAmpyEucMh!d~R)RxuvBg0~2FoW5&qHNZP2VsBk4EB}Pq6O+amJ
ztt%}pH99*xZ7y(eaS>xPO2K3l?USjgDK|PgY77q#r+<y=>S|YBUT*MNU`8R=-`^i(
z(#U2Q02><{!6qfXHG#pw!L-3di;9X2CSFxlW$;-m!=6#fK07;$u^9#cS!`}@&S0-7
zRWgBe!Snk1`i!!&GFMnwXb^Ve<KqVU%BrWQr_szX061G_XJ-xeir%Kg(}h-iW@g4#
z0nnVBoPRX<J9B}Plam;mVF0YGtON%oVhW9(o*wUnO_E8MmzNEyfJkOkIxv_AK{&QK
zwSCju+Z*grR!8Suyv<N@1Baz*sDXijAOtv(eS;x10ev0bhlhvJ%p4pX7;Hq9Fsw*d
zSC`S=-tHX?DH71vdB?o6va*c$nqhF*j6y*74}YI@baVt}I2Lqx@9*zNGs8Uw$n~mj
z*(-W$EiEnH!I1VS=~?F;^GeKc^6KCsyC?+cUHPW9wKYi7q-W*=+%_Yb(G``!%Jpn~
z1fZ#@$vdo$5)LJlDv`ttFj&PUSxoWV*x2YDLQUBdeN`fn&8WRZ8KL5mjjy++UbIgz
zq<@5izA9+iPO&lL{>}_Fkq$1hm_neguFg9R4Glr|L|-)`9h%sf`HLZz61acM3|R~T
zpbg|3LQUC|>wx+J|H}*y0<xImIoz!C1*@a%Nfn?Pk=|K+&1|KNz*x#mPs#{1ryg3D
zG6K~pG2hgt%%BO~DKn!fBd`(K%(uQSZ+}9?9&bpSGu%e?1v;wJsL#|IrZE{`GrvM=
zMkg()Ieee_(G`GI@>TkW?=!jrs6qIjt^j|O8TA0deKQ`Ykoy@OP4&$pH#BI=LU?7u
z4Go$NzClN4T=?3|e*!WxGK~0{DJUo~h*#bA5Kyi384V3|WDI>7V_uQIJCl4x>mL^~
g^Sgb|`G-GW0hQCHM55icy8r+H07*qoM6N<$f`*q2#sB~S

delta 847
zcmV-V1F-zM2;~NlBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
z2T4RhRA_<in!ir-FcigqjuQu=4j>f?W>^?_0cIu^9)&02Wf);%MPgxPVnQ$>@kg|A
z>Tf8voYct|p(YKXN2+pVB{{ynC-)}4g>GQJf2~4zWWOCET7UHnmWj19eZ|_DzGCf6
zUoj|Wf<^QE{2YL@voqp224FUuF`LciCmVw??bKNzggZvje66D>a(tJUmt0(2gs=TR
z7G`#ReGNdK=X`yA0id-e&vO9hRGWyR2q`51aU7GTDF8|-PESt(m`o<cYg(UGhloRi
z)9Dm|kB<-M{eN^iMQaUo7a1$@BuUuV*Z^QO8oBXuWP;9QS>{f*7fdFT)|`2IdII3?
z?vB^jR{(Z)b~rvh24HV*&pk^@sml8dUuHG}S(Z7;`7*PKU>SIOd*lB89)R85UH13)
zfw{zQZ*KuOIXQ8e&8jAZpfgrRT5IQk*4o`@nKFBMd4FL%9s{towdKasG<DhR`T3d6
z%}t<wA%`zBTcG^nShkl1rBtC9TL>Xs22)Bk;{2~OmdJktSf<Rz<1r5p4**Ch3(tlv
z*xTFNjkt#|Gk+Cql*;z9Af@Es-~fQf$43{9(P+fs;o$;zo!nOb%xJAik_3RGqa#<{
z^E@vU>3=5N!<Si?2>>X(GFe1X<RX@)X)xoJv2vMJp^Cc>e@A9zX|*M@Duljl>$q!E
zb63wy6++x~k{iCvEXpg;bpr719~aFkX{}Ob>!RtSk9Fq9Mbo$Y;!GXZGV3}rO*wzX
z8$i=<slmytGJbuLSyS%8MMhAHPG}YS5}7*GW`8q#qtMOU##&~fLE{~(?6&a}?y$^k
zD2;KpD37;{1-=H{!<U)g<@IgbV(0==O2_Bhc0M80I+G-c+q?4nB2voMTj&11S&}4f
zr?YNB|BlR*QVS7*?z+wXj;3wQ)<q`h%=`O0Fz;j9Ez>N^TpO^9qA7$Z@K`54KR?}u
zdPo_=m)X_T6)<lx_}>v$a$QFz&vV!HzPY(^_QEya$07WCc33hK#u%5|1L#}CswZj;
Z{{Z32_U?un6?Fgr002ovPDHLkV1gcOk{kd4

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on.9.png
index 7207b2ece8b47c0aeb3a07a0c2867d417c01bd8a..fc7ba2aeb05646e1917d8e9e9e9d5a605ab5f37c 100644
GIT binary patch
delta 1423
zcmV;A1#tS`2%rm)BYy>FNkl<Zc-rmSNpDkE6bEpiQiLF3*jJ(yC~9}zcGGXbs_Lez
zZYotFa|nTWo~I->@r#Gpv17-xGZCU15hnqpwo;2)sok_{Kg;R+pO@ph0#u&ELl8UC
zPfDWL_x|6z_uTt#eB#8L`JzK_w6S+tFHA2?FHA2?FU--LJb!uU)JZz^-b<X);BVyb
zyF1Lt$Ozlp+oLB>p0I<11O6GB%_i;c?jA|Ad1$YxzUQI+ChZ^Wv4h9^YP*lw)2B~c
z-%n0X{BNND{PNMGN379k(B|eQtJmvPsZ?00R63G!xlEO+rdF>|eZ9)oHfprKsoB_C
zqpkZJZ2Q4|dVlz^!4UfN>C>$H!tCtquxhnR`Fx(G(`ia15-b*rbtE2-vqUmZsdSQM
zR#KEJq}ggYLxqZ_SY4q~HP6bmBCT)KS)=hC4Gi?NR|+F{10hnW6jKz1B9RE2pP%nY
zBobx|(Fny7QI^WaXkM9Q-wb|2UwwU%eLM0g#nX0HtbgRFQY*3T?JYWYet>mf7|ah?
zUS6if#YKkB1cO25^ZE4gYXU((n+peNAvVvVNi#V^@3ZQIOSJ#f6;{}|L=OLlELT#f
zP|mT9%{4lIVSv4$R6idEa|M#gB;C7rk0FG|<6$nBOBc6W<Mnx1aMni=C8UXeL0h|*
z*)M-xr+;7n);#;;I@NYQV2SJ?t(LN^zFwmX7tgWo3nL{Ml}qMHAP`VH<YrE%Qx}&@
z<MFy#AmpWRG{};<FX`att4x9bg6;lrh2_d4lrLtO?l4#f0A*ArFUG!f&ThBs<Ip%=
z4(9c{X*TR*ODi^7e|VMs`1>___UA|J``@lnWq<o)mM<%m&8JwkR@OIXj#ZdqvB*%x
z=H})Y=8D7NU{<TOBX+xux!ex&1zjwx1SwmbW~=L;(OTm&%hx}reAUI0%L=74Nmj0u
z^p)m9p}?@V%+Ag-%oVxP7K^1LR-2XC9cmztopB(UKN*EG`2<_aDx@UBEE<bYVkypw
z#eagn9l)^)v%0#<qS0t;p~PH~;bJnGI$}0!EEcmG%EIhUYb%)B?;y`1Z@|e_59Y$N
zq%1}m`qkgx&t55vY%UiT7Puq>=89b5nVFd*F_~0qC@@=0YACbDZXw$tyTeLukBbFE
z0qzT+UuVyrW!)Dhm&-9Mma@OH*=()ha)0N}o!92>UAU{6`4@sp_4BLyI$69|R#x<d
z$!4=G91gd(Ft{Vq=<VCL4TqpI641V^cj(udGiO-$hQW*5!^qH>nwm1)^z?Kq43-61
zyfc}MzA$)>0jw{w^Tk||t2Q|~X*dLuIf`XL);sj87bX-6wKkV1sWJp6CMFDb>wng*
zRw>7_fW80@R&<5I3ji;c%_Sy28i4Wfal_&6NWsAtN_HZ>Fn|}!<`Pv*#`D<NnBg$g
zq<W%#*@@^5BgadAzrVG)#Kf1YCTGz`LLezPXdiunrKP3r2}3UngFTrnT&Q9)1crx)
z4L3SE+Nz#tU-pPNG3uHy&jrG*1b?sB+X{m!h6Z40XvlCFYEnJTW;6E%juZxO1gK&%
zo^Rf~X*k>+sh-#c$Q}`AdEFZ(sRjX$8pfmsfeH0Zht(i3s5WM_AvFxzgc&uATMYtn
z-C@*m3Ahrn*~1l*$vHSUXgIVZ`!wv&<Y*WNlieHUZ79uX=e3mP_UD-wJ%0k=E*Z7;
zZ-1VVM*y_n@gu;o3L|F#?dN8ALm6_No@nZUcH}~$efg)C?gI@R%R>8|X+O}wVS~}o
zj;wL*kInecL|<PY>%K5IZrorPuky5q24t`FCJr>vjs!#d5)A#)_1T%;=gr=tFz?#u
doL~6$4_{K(25T#v1ONa400>D%PDHLkV1hKA%u)aV

delta 1099
zcmV-R1ho603*QKkBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
z0ZBwbRA_<inn7>lL>Pvjnen*0DHK?QxUH582c#}s_y=%cIg|r8enb!ajpavh<J<#>
z_EdfV$6X0&ZwQ2-RVCuIjy*FR#xr#sCw0;^32tAh^2BlSeShz~?|h$~DXa&s`nywz
zTCo2+gxquntHcADZN&qbZAGuhB%2B>#PuMKn{c&*^Do?-CekZqTASwK;UNGA2L~jH
z7tdOYwbozk9B$qebqQQork0JU-Vj0{t2QWv#5o`P=;(--FMsGx=H%oA0AmbSS62X(
zWr;B+61yD{5r5mYlma2I2?UZt$Vf&?MXFN(wAQ?M@ijoqEudF6Yb^ld@fd(C%gFOQ
zo-4}|SYDZEAqh(Pc~pr+CH}lrazYtFu$iJLyfTBwyJ+pxZV1y(rYH&k@;r}Z@;tva
z87V{3f<!BSQYkJj-T?6W)z4(3KLOa=d&Z~FzwzU@K7XPpMU~q)+H&gqm&$5O(W*>P
zpeTxHxw_3lA?S>1B7-uCmY{rSGyaR=<xc>7@s;9(51#<=$M5I7`Rzvl27~W$?roo&
zDQi}o>^rSwf{n_uj0DQEjP_g9W+Aw%)`^e~WkW`<dH$IO;OVn8Uc0xKkfz?^=YPLq
zcjt3Y-hbM-_L}Iw&0M^7a5KltpzXT`1Iat@`eIO@aH-(EC;t59zX{IX9P>sp!BX`*
zfQ74Buvyicg#=Ujbtl{>oS*#)z@tYNo%)OO+;R3#T7CTE>xOO2%*pJ(&FTt-S!j-z
zg7dR(1QgPLS2o;5pM49!DEo!S1K(#x!>3@s1b^Ui1WJUQT&!SCf!4ZaqV0`^!oRp0
z<y^S;0T}FlN0IrIN>eh<ef4y<L??dzSYv0dpZ?oy<prRE2==f7TlE=ZEM?&rca~jp
z{bV3e(x;asDZ*9C)NHmenbnr&kf@96$69Zl>Wv99Np%A%FjzI6M-%tQW=(6|)@E%G
z0)I@<quw;7jOryS=@ffzX<qf3Sp-hH_@rq}w@3E=+bp0t1Gg;zi=ZB(Yw@}94q#I@
zYv$2~%>A<2D*MbLSSI$|(p(>J3z>O%u-Uqm=^At6cL4J+>$z$cdS|nl`fZENy2kFE
zGJ=LWZL_c~%FM%!+kg)?+Ys7IbL}{5e1F$iCU(2c>OV|XW6?Z+$C!%OA$I?5CZ&wW
z`dBHow#1ZDF<yNf@@d0dGFof2_IoGw4JM`3omI53_adc?v9;E53xD2(-XEK#X*#6{
ztmj6vuFTHP4r!WB<j{szGQ;5z@cWoyx49^axDB|DrYVG&h!aSRMx(ej*+l<sc0_!9
z48Z>W{={=cu-v+pF~-DQ@6*%MIG*}Ub?n1`&-Tk^!Z|l{U!Cn!Y<8l~@gF@<GKdtI
R*hK&U002ovPDHLkV1oBcC$s<n

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_normal.9.png
index a524168c9cf150925552f4b37c776d5808b82ab9..1163290163635942cf7a80e3b39bcd524294e20e 100644
GIT binary patch
literal 1785
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
Kh|fJQME*aP=Am=|

delta 1352
zcmV-O1-JV74cZEjBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
z{7FPXRA_<in!j!vM-aw;`{xc6VmLqyq)MGM2~r6Tkjj-GA+O>`@T&xHnZ^$gATC`d
zb*ccWtO(-$*-62j)!gxpq9jsONPmF9Ay0QV-_5tPdov4<1AobXpYa)=@r2-v{YC!#
z5%@0Ki^p|mD_jGAX8R-XuO9FRac576#(o9x=FOW|FJHd=5@4}dB%lZI-Y4(9WE-`e
zbK=}hfUUg=BC=+Sh)XFsfRqx(_CNr*zP|P!K79Bd;O*PDUje^Ok@*(j{QUg+)z#G%
zz^6~28t0sn5r0EQ3>lnr)?RaV4CkCBfQUG?4FOBciAVqlA=KyR=g+OrildcT1h~As
zY}&T%0YoH`XYLI$8${-=$dM^_N(q3Jl8j`Q@;&;l>zWDw#eN9@%jGh4T_^b>NWN1h
zK(@;`QBn^fLw;acPQ|vw?ER7+$UZBMR%QX9ZCh#ER)3$4KBz%t>_B%b+&Ma<Y*rG$
zjO2=xz4szFCl4aCkxbWhVq_-fg3J-H_Bf->9W%}qV)j8=GBHNG0zWaCHBD0@lTxyg
z0oEo;xzE72Fo7uvKtyaZD2XQfv$f1p(=<tK%^Y(n*vjpp7)#HLCDHMkQcBLb)5>NM
zplO=4Tz@V#GSc_`ZELVy%rleUt>i)oDl;1y>;Gn%HBFQHzSk3HGuRFxGLf<Y2_cl<
zLI|fNGY`<VZKsi0E|-JIC~{QxRc$E~sJ(|q25>RPTV>_}x~`+^I>t6kkCQz>ukEJZ
zc|r)*r-8DLTV{RVmkic*o#+bMVo!sA02!yb9DlJGWATqsFxIkJ-}i-pC3a|NChfY;
z`gB6sEWhE|$msF=L};wX`$oCEW?28YO=c;j62?qsEj8Z(yOO9l=gOEiWKKwCB9hF~
zJDI0&Q0VGiM0_r^z&0||6G!?yD9kH#IyspISWQ;SJlhXR06T+-lx(|oLBsy@6O);J
zz<(zyGxLTg6KkY{V8*A-GRr3b!`juMVPs~1K5m%_t2NY`%=G(#d>f;bo#teAbdk}O
zt+Ff?!~6uEL}W}fPPEpXQ3`)Nk;s^uo%LrnHG4g2R3M)uv#&b9T)r7KfhS+ij$3AP
zEpm9As*Ht=(u_}=R{*w?96}f@G)H9iT7S`mAsH>4XEFny6~`^J5Q5~sAt8jpYG5iE
z>{5E;`m*T)l*q&wMQv`AnI&VJp%eX?y~xZGu>Be9(;S)OmRXFE7*{{nb!|8N%r#~A
z(xAn30Yn57nc^R}O`26zNmW(lwRuElZQ|NNh8xJrHf4=n#*FoklbSSRjMQ}vtbd+}
zmTK(|jfp*G4@m}t2v}*^9U9s>tLyqsGDBM$V)n1t$!bf<ZOdemfUI@}s@$F4JIid~
z^W>NRJJupo*LB%W=)Et6gz>)2eQ%zV;TA_Rk#Tih>y0+oniq?O_xa4WZM{|!z4xO1
z_q?k~35&a7v2~grrDL+w1H12gt$$)VZD~|h<?Fgu5=T2}IvW`WaCUYUtE%c@)!5NY
z6GBK+%W%8fi5)~{YWHm4_ue_D%dHr1(%Il<mdr<hckkZ)@cQ-ZzW`pmcyS4I>a>yB
zV9ea-oyRWk)#=eV8OTh1y|}n|_Wu2Q-2(j4Uh|k_HVD(t`STaxr))oaTtRoX!X@xW
zwtoeF*8`SJoj<<;zRq^V(?bjVlkL9&-Q#?`GMmDasF@jT^!Gnn-#WT0esVSd0000<
KMNUMnLSTZcMwglZ

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_fulltrans_pressed.9.png
index 4395e978a447ec0d25879575330f5685efe870ae..207c90d6ce9942bae42f46221d1f0c6cde748682 100644
GIT binary patch
literal 1701
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

delta 1297
zcmV+s1@8K#4WkN>BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
z#Ysd#RA_<iT0L*%HV}P7YJ)S9%0SZOfa@-0x<!Cg`2%kAXI%QX7)Wd6F9ZnOU77x>
z3*f>?;LR<`NnsBC#FbY2eGAD07#h)9?Yy1G;cz&>X+-nitAD)8tDKPt>0jsTj{tti
z`kT|5vym(S{FU_&0RFXqxG!SPk)$F07XY}qxw)Fp=WhYv;^M-INCE&6QRkkqJLgp7
z*{LGJ`ql=hDpb{UF+HUuDJ33v0Pytml<x2EKLWt@_4OTq-@CxP2Y~r}{w{>@82}z1
zAOABj&N+3?X@AxsB5D9w-w}+|dP)f?CDRKS5ozZ0`8&4RWVAGE0AR6LgcxJWV`{(p
zfM<~PtylR>A<a67W-ywilwi*QNFjvKVZZW?2Y}^rsWC?TU`azVm|`^P_S~*CQ{<?s
zsz@mrFfl!YDmK};*=#aent1>SAr#NNc=nlE?2RgdNq^RNq8aHN*;+I+5fLTIwLH@Y
z#$LiS>zgOQ0cl2Hlp<Tpjy^Ecp;=0){0Kbh?LJ?5Y-<B7keSZ3<6yv1bt{^M5EzUZ
zt(D<BQ)?YCo~Jy2?0eRM87<8kpm-($K#Z}(^bXJPd-h6aK-oL}>MhS0#l80lFHT_l
zS7{bw)PLo2sRYIn%|0M}zso*f7(fjq>*_L^l#<dCFb$eH00<!@3ji_3M5#lO4m#~q
zc`55mYp`;bb1vm^F&&jNR>0&0PXQo=P*&eH^WhLBBzs5am++hs5v7cv1!mkdODS<W
zgD#pKQPzEz06>h9ZR(|&2cE%D>Ro`f-g>}=vVTvy0$gn$CKb(iSI6lLOUKaBg^C-!
z0bqq@{BYLKqTp@RuC~w<q8Vu4pEpQn;TcZZ@DlZgX~xwO9A;76Td1}+y)8hOXU>IX
zsBGG7r)i(1cbo^B7h!uQL^A-9%RM-s0KnJHXr`)>9{wV${eUp@$4xWa=^0A)%GuG(
zZh!N2+@7(`$x3KG#lB@z>8SvX+cPE}SUHwZ+2NSt*wR-wTgjS51bo~_wdPaU*(td?
zBiSadtWKjkQ)pII+>yumbElwQ>qO1i!bkNO$^e{m@ZOgi0Qw_a0kkg#t2M-4*2+St
zaL(sM6N+XTxn_Oc3E8ncvocl(0Amh@Xn*FtN7IyHKA&kVTwMV6IG^GBQg^P-XA}UM
zrh)eb!^CLTG!5@G0jzW{9gJcuHMPhy<$$(nnvH1YGMLseM%MxDKwH+PVY~B8hN)E@
z(Au0~noVfYq{)xm4^RR?&%#wlx|Ips@toF_BE8hdtly0HRaJl*rkQ<^n;1AJs((8H
zyFg)>Zd_<AK&WWn(%Fv5(aZtBY&H{{Z2YU`uBJiC?IL~DqPE8JtcXa{H0G)GwdUDu
zCf<8{p#xEl8csXgwd{UF09|0XFSFI7iI**kST=wWFPg%h5dfIYW?of`UwP8grmfZD
zc*s^@YM7I%d)B<*Ma1;h7c!U+0Do|Md;9&>)z#ksaCv#T5D|-VEilwFHJG#YfiQzi
z&!=JqfPslImR8`0hle+JcX!{i%_d`_S<6j7=j*Qke#-hcr!{9I`3JzCS^o{dANCIh
z^HsjS1@K+gXGb?}dszbbl=Y7QKHEP=OS3LHx0=~nd;bS1nZd}U8NJp3015yANkvXX
Hu0mjfuHkjR

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal.9.png
index 9d85c7b742b7fdcb8642cdf3484a0edd241275bd..005c4e49809af765ae60e11a2b9219af29f03c90 100644
GIT binary patch
delta 480
zcmV<60U!Rr1Nj4xBYy$FNkl<Zc-rlnxr#zT5JgQC{U!YnH8D_3-S>UpMG!F&LG(j=
zxW$w(I574EdZqipNgllRo}g|SbRh7W$9(hBANypyjF<5;UdGFKnb*stQYqnbxtQDS
zM#1%Z71HVSpF%%go=zv>cs!cJ;Xnbhfb;omLZOi0p3Hu~7k}34H66$miA02_WOloq
zuv{+9YPF&OSpagmE3@5hh53AL7K;T1$O4e-Uox}V?0(3*K^CytY#f%+=9o+-W;&fx
zfGhy>V<n@*HX4o0cs!;6Speq8T^VhV;c$3A<lP_(!2DRr=&<$seKQygC_ol~`Egf9
z8$=Ia!dgaauz%O<(Scm<%4mahIvqNY%SuLTu-$Icfn4s&XdSj%Ejo}Z91aUl$>^{(
z8Vx#-%gfa3bvnA;uAK}%0JU0;4%D-|GP<Cu)hZpRXDb=)^h%{d2kO}wnTMCUpvvVk
z9nEIb9hnCqd;m(N5*=8aRx-M6i^U=xSe)+4=wF9Ip;<r&7N?i-GG4~Z*vaJc`OlZh
z<#Iwcn>CqCh5}>($Q29*1@~m4(WsC}BuqRWry!Y33b9zs?(U4gqD3V0Y4@CeeZBw&
WiZ0%ns}~{w0000<MNUMnLSTZ@Y3O<Y

delta 423
zcmV;Y0a*U|1Hc22BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET4
zVo5|nRA_<ino-JwFc5?%TJRPg#)J6onFP<`0eto<L8D0@`~z+OB-m2ZP1p}ak)Si|
zYyw6g4(9K;6!Gw~)Dgw66?_vmLlrhd6*fbatjstU&9-d;0Dn!>pe)PSnw%JONF2uz
z!!S6<IL-8Z4**a~L2G@T!Z#?2BSckIq3b#Tz`Cx_W1_3NkelnKlo9~2EK5`|XV|vQ
z8-1slecu59T5AX)TtlK`d&X*Wk$=o=(^ITWXhL$Dd3^u{td@`_j@d8xIA*Du$v<Xi
znk_bGG;z$R5`T=@>os+f=@|<znvZ8nyuE00%m|QVWqi7_>Y4mwW}zB0A4&F%kNjhn
zYGtxAlU>aIS>?(Q;D%#c<H>HSmEj41DqI<=uo<eb8L9-$P@K&|1h>wmlw`gG*q<7-
z*4`cGtYYS@%rs2^fV!^9M9o%ao@XefoMUqOdp56_2_R!kXm^ZS#r#5z!5w^96<Zes
R-7o+E002ovPDHLkV1n-8x{d$<

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_popup_selected.9.png
index 77e17dbaef701da8f1461bb076ecee7643f461a5..9a07acd914f74b321f905f450461dd5878ad332e 100644
GIT binary patch
delta 274
zcmX@gyq0N#O8pm47srr_TW@b!a~*P!aD6zjAu0K(lg=8QScj<c1Z~bRy;G;cICjWr
z`>HoyER;)8v6CvDWGU{q`~iDo#2=?WX_t;jB<p;dTRice)r=H}&}EBax_7R67<<jJ
z$8kv`W861}PX?`?>z3`hb$`PC>0e4_&t$*l*0}NflHW-l61OYrUnKUOH+bi)sFbs~
zvE8zfk(rH0!XV*50}?~csE6fnG8<gtnX`{}pVXowJ8sW>>LM<*V*ZOOzWs+&lCF1X
z7H<sL`qIUF?vzsbVE3zXJGB<b*X^9%x!3kfb@jCq63IQanVXjGjAaaYHdXcnUyCUN
QHv<EMr>mdKI;Vst04N!EeE<Le

delta 427
zcmZ3>bd-65N<B-llV=DA5Y%v_bTBY5a29w(7Bet#cY-jZ`N`9385kJTJzX3_G8*5`
zGW22&6lmL@qM9Hq@I@kNwZMiA*NwJDaE38nJa&wE%@c-i+o~A2Cto_oUBRU7UD|u}
zT;9Db4~H{ppZ?fK+&kml_0y<-!)d-NhfnA!wg~+1K34y|_qyEg11p!#tvWr^EA6$w
z4wj7NciQ7KuEk!o(X>vMW!w=Ppu0a&|HZis)gKGOS;YB&-l|`-epRH(x6Sk49{5?d
zvzF=cVzIY|zc&~}?mpFg=Hc3hzqD-Rr@!>JPCfkSl%aRmfyFKdZ>Ou~wt9vf_c4l_
z*b}buSoCCtD~MT-#D*}Jdb+%SzWDW-{_W|fy-MbGvO!e>Wv6DO8twLwdi=33RcY0^
z7GWvp=<@z;pC0@=d47xA>1XbI=GwQL4LH-&cZuCQvwe;I(*<*j(m!gfN;b<}vyoe*
z*jcuTaUtvHyw?mbm|0>QJLLW=su)Qswsf>aem{2a-|pqtezUgRFpt>vzI_)kDi}On
L{an^LB{Ts5TsX!F

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed.9.png
index a409639e7a07101fc0aa45b3f05f71a2921cb65d..be420a7af2d8cda0fd6702561d8f6528fcb3a148 100644
GIT binary patch
delta 813
zcmV+|1JeA71;YlABYy)5Nkl<Zc-rln+fHIZ5Ji2{2mM6CpYX&VsPP9R_@sz8E((eY
z;{8HU!ON%gWL0LHa^hs>m^7nv4#`T454CG`cl9|WOifMZ6Miz$u<uMJlgVT<nM@{=
z$xL3RP$(GV@i@G`zJAEd%S#k~m-qbqY!r*dKMKA3=i}p}F@GA3-u`}gcnJ6R_r`EI
zj1D<uf_j0cr>8J8Gh?JrMg<3hLAblSGj48f!u9pFadmYS9dgJ7^#JrWH#cYel?)Q#
z8^64~4Cm+P#@X3fbjTqSBnR}BUYXn5TZ1AO7Z(Nrr>Cbzzu%7zIT9mZi%MUKWV8x?
z7YOL}dPcX~4S&bS$5Eg*kaKc!Vj!kdL0{>W(UwX=A__V>I*N{jfP5_~eI=67oKQro
z!>TE$)9FNq9PO5bfW9&rB(&8OKRi4%4h{~YLykXkT2$sHk&MnK5?UQEvA@3`+U<4}
zs14+3m;A**U$e8bM*3v*aP&79MHNJ7tJR8vm(t?-`G29WL^2vSKkO7&;NIR|*xlWY
z0=2=5=|TYJCcQGcIsBYZR6&F`o6RVADJ`CEH~551&**d*_O{V#A<;CN%|>W6>QSIJ
zkV7VrPcP8xbyF;(YtYXLTi<9jjC#EuYPDJvs14-k$dRv`lpF2SGMW?4vw{fS+1ZJL
zm(m=OuYb#cOCY^6dO-ObjBQsCq1)TrQSeea);emCSVnicW(8O&1rfTnwG{;~rIWz!
zWHO+qzQ4gJuE5RB&9Jet5d~@kIa)k_v(Z-~89nv=(6d?!BD7kqM!`#Im;7ZwU#XD^
znap=NW_oqd-~+`KxW2v~DwRqUs14+3@%+t3Uw@g*e<7pyAk7MJjuk}c+S*zayp-lg
za|87CDH-06CM_d=mC<`)x@9yo{(bDL%uHgL>~-d=%jg@Xr2ges0DVbJETdIgU0n?;
zD=S91Tn?pD$yi=qjt)6w0{Qd;?AY}5w2?lUTrOuUE-t=fVPWBo`T6-M_za)Dw6tX8
r^CtOZzn#f`qV<JjzT5AdKm7av8ljRpwsGnV00000NkvXXu0mjf2B(fT

delta 625
zcmV-%0*?K|28jibBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET5
zD@jB_RA_<iSzXS;AP^j|_B0;A%Xkyxb$sw5UcqDd=3n7^Q0l_BV2y>=wUZb&B)B`>
zVc7ss2KMpG3PqfKJCq(ef<7^k87n3-W5q;ftPn+pJv29)4SxV&wOXO7Dt4i@dCpm-
z6gzK>0RU{bTddb>e(huQB0C%o?H{|Kt+k$=8%n8`7`3(5SS%I*fYa&Ztq~<NRzpqG
z0Jx{tWr5nIGo$tMo6lx5%;$3e|1-mqar(U7ZXN+QUy6()VT|!47lVA6(F{0y2$?xQ
zT5B&$F(k<}O@HI<8A>vDX{LLI`ulB}ahpD@Y`H+CMd!LmJSnqSY0gQ8f|FFrw|tp7
zgy}6=&8UxFWELKjC97F@P<HVxUuH3BadruWl8Yfph8~nd9-3jF7Q-a7A!OFYU!*j<
zpbe}wjGdE=YDe|BJ-+)!YsVm8X2#fd<m|i!fR4_`^M6Ie#lRui0RXS}PfonseaM#?
z_Z7yHnG{A{n%`|~<;#p~VTNdD=p2nBhOd#?&s8%G8PDbbgk`3}y|eSO6T4~}vH*m!
zaS)XmQDnZRG>3B>Uf!FPM(l#TODytb7P}!yJty>qPkblIgg5cjE>W7DfBM)&V+tW(
zW)9(3;A&p7`o^owq`;Cn9*+R-ug#as1;DVc%}OcMbqxTh>l)YVm0crWX1m=E0I*yx
zz4@+(*C&YeWG+kl{T}D@nP2N-%Mw{(h?1GI)}{`mv1KeCsI~Y5vx#|&snbL100000
LNkvXXu0mjfQuiXL

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal.9.png
index 6ec7e6592306d9c3f6948fff2ebd154956097f5b..3e25180f085f4546ca6464ce2e9ceb52512dd7e5 100644
GIT binary patch
delta 1114
zcmV-g1f~0k2kr=vBYy-nNkl<Zc-rlo*G}Y06h(O^=O7U20se!WbIv*EC<F+^k9)LA
zcUy&VxoK$kHJFyxXh!O(vv-A4u?q_F^YQ*8{!eFTr}xwOGxKLA-)1^GIt;C?tzJ`8
zlcBM(F_EAV(EIz%G&eUJW@cu*$Hzy*%gc-R{QPWqdV2cbAb&nu;Pv&@o1UIFpw}|v
z`DPj#8Vql5Z@!tkyF2gt`Z^Jy1<-{?KyP}?(5$z&w}y+03-9#wG!dW$(53F@G*e$+
zZ+Lik@GdVe4adjF-r?b4B0vkE3ypx@^q9H7zxU41&kaXMN8bMazR$tIL0++AqXp1~
zMsS*`tE)56Cx6vXDR6IZFA>Nfx-_QIn;tVaH#gqN$%%pH-Pzem1nO?+LL)fM)YjG-
z$mtqvySuyI_V%{V*49=eo12?i6IGra8!dn?%{}N%kD05hD?c4l$i~LT2iDiuovf{`
zeTt|uAQ)4o(1k{DnyIO&F)+)je^PS_zPh^Vv$C=h%760m@|OrJ%Z^8UwIsT<8bEJ)
z%$%K_`TdhZ6mV&2$!BqK@f`~b3*RDG9@z1SuS!K18X=<@2ABpQg(%?s{JhWH+}t~6
zXJ@}fuspEi5nq*xE+wdRn5nL=HjpipQD|;ED7#Rh-CnM-W7x6P{m`Xsi{3~x3@{Bm
zYG`U|>VE^1lasL%jHwnwml9OE%#bbAKWXZTiHQ%4kB`SrFs8a5x|D65W~!>H49v3X
zpVY|M*w_a~M@M5P7*j1oGSF%Oz3DN-EUW%W^Nx&+gfcul91E^^>Tc-LY9ON-QlI)K
zH8M0blnB&9=+e}Y4l|XNl?GCuCNP?JU|=8-sDHbmOH&7WBh9d4Rj#KG_xJZF0*xtj
zX=R-bGZhsT1|}t$p|AG!^(6w09dv0@NAI`I^!E0~&Yv0n;2-7X<p$f#;NW1^26}pW
zK1H_1&;qs@^!{oy1yN?cD>_?T@zQIitgOtym$ax0nh6Wu-QArtqKwH5x?~2uUosP?
ziGL_VGWBOBYRqI~rmL&V$!E=E8Z%BarKP2Ys7W)fR?3tJT$3hx(_@C!sP@~zRdc2#
zO)gTg9V2Yjj4rL3on}f(N({D{;N~oBX`aiKaj@*L&6#Zmz3DPzZ=01xY+PI0uWY)a
zw#s%)d)u7ROmT6s!8XJBmFs{Z%w#Tb#edUznr#NX=`mxU&P18XH?|p_&V0&@eQp-l
z$z`_K=Vs|LQ&d!B;1X1~Ra`CDXUnd0;JC2QpLNxNE?w55H_{C6RJ2^+KiU^eVHZzv
zVqZL|g3+b-H0d(K12x@DaX9UIz>sfrSdK0|q;s0l@hq!YeVMmi`g_!qLw)C~WK(+5
zC@sKCK&`ejo;CjpGc7GG2JSqRrV9%T69-*O6_4J?-vYF^xBE}&lS*4#n<3*58-BbQ
g$M3^_0`ETm05iD-O_xD1NdN!<07*qoM6N<$g4zo)LI3~&

delta 882
zcmV-&1C9Ld2#5!eBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
zDoI2^RA_<iTFVlmFc9nkjCk-nxarORKY8(}7yrX56@~1<O?HS02`G<>+f`Ok5W-Bl
zGl`RdloBIA{{0R20V$CY5sIQ1#Ul*p5D`%_ROeIRzcX`1rhhI}ASlZc&*!soZ*EvD
z761St1c*rAkCU0(?FInY?RF@N;`K1gP}enpX;~s7BuS#LkH;eb;BYu#wOZ+R+L_1W
z0RY%+Hn`vK0D$ZDimIwcGrA3FngV!9Y`fh80QUQR!<jf`rcjn8%CZFTVry>9NGThW
zo<Y7vv#P3eG=F<M9(vA94P^%rA<JH7oAWqsnbmdOh+v!<2fc%VkG%Rex6j0z%y{Fv
zt{WXr8J@XKuH_<bnMo<N$EM7tgpwJz&%~R|c;l`z>m$RqdB~q}X>nUQ;+GkpY_>(S
zje$^he38-h+*AvPH=5ZZhpV%`(avT#zehyY(EM96<A0u4Ri$Ot#>}VdPY5$M`%Jt!
z!yTBTGu$Q<amtJb0Oh$E&BoZ;xEN8_RaH3yK=7R57-NrSN-t!i8K=w?T<Z+S6wLT+
z0y-?398)^eHfQ3O8INWzN{5bSX8)aJ#$O6~aVWS3Da58YWoG+BHU%>-*pe*XMbm6N
zmy-b3zkgqjxMgPUzvjjazxK+kYsW*OPr@-enMuGt+I_bC-%4nhsac<WK!nT?T8a(6
zor&?iZ(}U<ThTECpnqQMn~}|&8$OnL&ly`r=G!6q({IEnGY(fCtIH_0wGCYmefcyK
z);Yspbm^AgcfA{mF1cpY4vx5G#z(<5BCe?Ojeo-?UlPz|6VOv;ymMbD?SfFp6n;x)
zfS+m?8$+IHhP3Y`Ggp}YM$v;$)*QbjvriVZvEYqnw#IGIY;16wT!>R<YBISN&6c9I
z!4P5-$D7QA5RKC^en2~=GpZ6$2mv94wS7!7BP%nCfh@~rSEDI}&_&uNv@^@)5&&>M
zpKEnpbDrncIsg-&%FnlR;4({+1gF!fVY5O^G6MlXQ4~^DoL?>%U8Fsi;|vZW(u}Ov
zYvg$j063q|^d_@3O?4^oT*0f)IpUI;XZ@JRdB#7u4V4mq0Be5FZuxOJ+W-In07*qo
IM6N<$g0rKUlK=n!

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off.9.png
index 995780cbfbee7f1038fcda56dc88857441401b05..bad360f77321cfdcaa83f8d048c042293d4aee7f 100644
GIT binary patch
delta 1224
zcmV;(1ULJ%2-^veBYy;<Nkl<Zc-rloS5F&T6oq-F_aYGO0bY3n1P_Q_Lhrrz-h~JP
z@yF-t+q%m-89ZZ5Y%m!tebL03%wB6w+ow1y>vKNd|D^xZ+}!MacYe(LnE7loO-)Tk
zeSN)GQ&VG9S662wXaw~B`(|ouYmJ$i8SnA&(RhA-_MV=ejDO$1e}5UoM+>~Xym-^o
z(*}ASGhWP0RaKSo`uZ9(b9Z;=U0+{k1ZV+tp%Ks<9WxZ`?d`2`adF|Do}Oj|XaRJo
z`URS)tgJL19v-~Q%S+?<_}Du<Jj@8t0_Z{`pf@^Z?(grt^Ye4#=;+AX-`|fhK0a=A
zc6NF#EiDGu`hWi5;2@>AvC#tPLL&s4si>$hsFSLvJaBJs&lnpU^V-_ljK01;Z)9Y|
z;9B2vkM2)3GKem<Y4k?N%+1Y>cXD!KP`o=kJ4RPmmp3>#XpD}I{(-*d9^Id6RNc^p
zMhG-hUS4j{r>n8;?(TZq+uKHad%HJ0JZz{`#L&=?L4WCNZf+*U*49=aiVbK1bZP8C
zZ*<IDU0ubxLmslRv0)4h40!$h{f5K~+70k;Yin!oVtsu*6vY)Xg)THgpqa9=GJ{c8
z^^-TJ;B#|x)(t~XPfyGM*Bu=l21)Aj@^aFwtgO6Yb#*lc@l}%OQZ|6z=$JV>JB!s%
z9-@F0@qfa?g3;UC>$SGF8km`%pEn4mdy-*saq$gHOG`0`ua}B0G(ti%G%z(l9-@GV
zRsE&E*8{m$J)fPO{ScJ8AH5(TzFsQ2)ImkVOlfJUL2n^(6t^3cHX$_IOEqo`H@2!D
zy42gEH`ELbObw4WG&ME#hRMmvwBwJd5<{0dsDEggp|?=|q^Kt*Cf=ZwKb`nvs_LOj
zy=|bGl9CdGE?D)GH$o=t$De4X1Ak1F5S@Xt0rW=43<IC)C&l~g*RQzvlg(5S6i?L+
zUCIU$nxX4c{p5`(Q~qjHLg>=a5e+lN#l;3)p9V0BSF^~kM%4{n8amJ$YKDweeLZ!U
zd4EhMpf-grW!BL!Q&d!BFeu3kbyc&=uSRVLT^iKU``2bPF-s>uX841@6c!d5t{E09
zk~P3A^gSeNOp7P38T9_sX0pP}{H^F@35pk8GX(_&1~)0G^P7nmoYk3B5oSzg&?PhI
z{g9b-ng}x_Q$J?H+DtNLy1Tmrd9Rs7ZGR@vOn!d85jJS1tCSLT1VMu)dZS~8Y*h1Y
zf7YBRrAb9s?8b<fHKR*ebD){Lygb7-<DZ<xOU+Z68T+3dZ*u0EL2tCoxYK6;E*S((
zZ9g*U3Y#jsG2Ll%LNmF!xrS?o^{b!-hIl4ZK~Oxcr@3a(8yz$5>P(oK&&D;Q)qk0H
znQ_<6(zSA#Ebh8lw9Mq><QQy%YPX851$S*ZXdO6Rxa-f_>Ohw^Ytb8OhI1-P7x<6v
z22;F^r*z_OJn03aOXq2#WrhQ4+L>Z;I^KbUuRx3C=+Z&DKr>pNC5zR~obA$e*pWls
z^HCBVX_OY=B%reGglo<Jgqga!IzfXy4|UVo+1VKfRZA}(y`jGaXl!hZ9i`7y8X6jm
mgg<Qf_GSWpANC#i<MSV2Md=B3rot@%0000<MNUMnLSTZQ6<HDh

delta 1056
zcmV+*1mFAH3A6~1BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
z)=5M`RA_<inom#iKoG`%3$-AzU}9n<@o3VU-u(V2FCO*67cgk_(lh~zZQld$u0!e4
zA{Ls}Cn4D^yW9Em%*=MX<ay2kkpKTR_kcXdQ%Vtr;XyQ_L4SpmQmWI`;>W<BGHr#Y
z8#)mrNy6vn=UQLeaB^}2fbaV#rA)t@o|(_*0Nmf-6NcgHPtPOEGT^vgQcBV3bWHo{
z=?Q?x$45?2Pt7=^%yPK|;P&>G#bN=#Y&IiJ(}M}U4c%@RSW)cm?hb&5hle#~+@zUC
zk|ZQa0<65%Hh<6LdA=6(0{KQZOViY3v*mJWV&>S;aww(nyp`C+ICh(6S(dG3FzK1;
zbPB-7#|Lp718{bB#>K@20ORraM}?D?*VK~o6|q4xIXKHQ(?6X~d3$>UAP53RqY<!*
zvDepEv&Plc)sHHqA!V|a3%6;O=ef~X(kzN1&d<+*uYc_XK)>HNnI?)NE-x<|5meJm
z%2&h&&E#N7v&CY;U@$QKWe=Lq=R2ozOPbyIPf|<DD&aoOWUy&V4~Iije>AN$bpLQT
ztnHa?9@+N4WJ?j1*-W=bqY*DJF97s<J+tx4vdnB!$K&z0b_`{L%RZ%4X=?smG?SXA
zX=*GT1b+e7*Vh2NzrPbj5wI$nx_>YjFq_SG7NU-4%H*q5Mk*lNaU7fN_RY-=zV8F8
zqNx?oyMiW_kunwGCe365(3;COd|5t@<Hp`RZ649>G)=7upmxki9O4zaNWD56O*d(#
zVXHF|$M8&*Ot3@IlsKj`+hWFjn#pWtb7|Artbe%vPBfE~>P&13HY3%M$xWJ-y^tNl
zGd7eRvQ!q$;^4M?2`Dpm5pL5=YTZW9$aW>oc3rqBRJ~T0!8w}cP;Tuq*H)qKxGKvR
zk7ldn0|z~$*mBvxX6b$7#x}pqV|Ab9oM(V~@ll7j`=A&bRbKjb%oHa!QG@n<hMP2#
zuz#In?P8^EW9t^gs`IoWN@GS&wDDH<+ve8AE@#a}IV9YsnY4n<BDSpaorGXJAG5V>
zGQl@#CKs<trMsZ6Vj91TW>D>Fn>T)fW>x?Fcs8@8>3wOoZH+&g?NiVWh01JJHh5b$
zJ2a$BHn>SM9Za^Ox#iMYW2hsO#0JfL-+y2GTBh5_Rz_c>@O|HW94^8onyFIHXb*Uv
z*Sb5JzVENys**6u^m;u2CX<P|*WB;-*Jx(LzVxfwIY^pyIvt*$pVws8aEWFpfG`Ym
zeVHeYV{=KnEuS+alv2hcK@iaI_W_tpCTfFb-EP-hxoRuq?Q;pYXjV}_+VMT(3mJAn
a^PGPLi2Y2%c#xI=0000<MNUMnLSTZ_84iE|

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_off_stone.9.png
index 1388b669450154bff5a418cf1a11484849ce74b2..cdd6c8b799ef2555920d6515e2b2b55057ce2ed5 100644
GIT binary patch
literal 2389
zcmV-b399yqP)<h;3K|Lk000e1NJLTq001%o002Y?1^@s6!$f9n000RbNkl<Zc-rlo
z*RNH_6~=9_jg5_*U^|MCuq8W|BA&P)>^Ccl65>C=4|&TI5<-BCKqxN=Lhrrz-h1!8
z_uhMl_sBT0HJ;ySzN2-=d!Kv8625-mNS`hj&Yt!CX4cG}S$p%^YcJ>HUV>hIUVUDD
zUVUo+y#5<i^-qTm9sbs?UAsf=+qeJjw<J7yeeEqasR_tmwA|~5ef#z~Y5)HHK?e>T
za0d?_3_tmuf7`ovuiLX{Ptfk&yX$G!u3bOV&Ye5!X~&KoH3?51WTm&*G)h2)_nFuI
z1^+*K^r$;|@}xU;>QvC_)2D;ZoH^spo;~Z%ojVtP^1J>`-{rbgCr+HG==kyD6&*Wv
ztRiBT>Bx~Iq4V(OJ-+4jrhzF1c|q{==g+$f7cNwE@!~~y>Cz>4`SN9V<;oRz_3G8|
zliv~lX2tid)DG<;Izt^I(J@7$qX5F2_t@O)Z39yZ@*M#%imqL|7Igjkb$8>&4R`bA
zO?T_oEqCY6or-SXz8%EhTk&0qYbDxJyXp|zDMg(FOa%G8*Lw!W6|PQz(1^^)B!=(a
zz3cAXyXOucJ{)@a(W6K1@#DwgCwlnsVLd%~@SvXV-@hM38?=Sg5!JvE@ghhoua;i#
z#xyGgX#xm6MKFor1e!EylIzr|lk3{GtLxmkv+LEXSD5_IpFa<J_Uzfu^z`Y|ik>`q
z5(K<DK)^+SR*anY_PzJ`C$B$xy&p%VI*1yiaeAmnj~=d1pFVEJj2Ujhf(35={P}L;
z#EGtZ_wH`>>eUsPT7fJ~5l9LHh+nk;sq<<bQ|z6pAY5b{96x@%8!}`_Fu!u;O1F0H
z+93Wsd-iPCyLa!9$G-%|j*2p%Y(zZB|GdYqygv2%Fi!mHAZmco=-IQUn?8NITfTg`
zTeD_OfLOO~UC^>+%iOqe<J{c2a|_Kklwtz0BT}@Guo!p{mfyd}^!g~ylX4I)QUlx@
z`uFc2dY%y=jV#QH6)W7-sZ&FmVKOyc1kg}wSpY2rEI<+DA6}o=1VWl<)#A_n`t=KQ
zgArM^YE^(ydNCp_0<&h#s+deo7XcKdRl17VWgH*bAS`wEo-ty?h>$)D7cLAV00?4)
z=FOYuh7TVewj|bMHQD9bjz+bm7*E+C+<|oiMBG*T_U#+e2jhztEee`5XO0^)W=t3n
zYp|Nq`;1K~3z6PH@sth179zc)vvDKEh7B9$#*Q5u00s{p9N_qlZhGlWvDTX-qhTRv
z)9wK9lnuhZNBb#lQ)rwCw{hdfF!7l$Y~-}!<jCG^iy-XwMOzp=WrMI$(|$+$AR45H
zw9m3PEql+gH`3H_s&r0h1d8@wc&Y~Cia=O$wcFK>7in||sD;4p$FwJ_rgT{?f=D-w
zc)?RP2<L`sTljQ0ETy~OGNmh$AT$CpZ$02C8-#<7&I>v}SRkdEfb0ratL$V}Dp`Q^
z+=8cU5Kd$|4N8I{NP57s=ayP!C$dIC07VBbZUNaKhYlU8cf_^F+;nu(MWI&Nd0<B&
zJwodk%^4^ggk_bSwC8St5yXy;j<V@dw;|ahutq@u>DeDIoO`lCsE&}6woo82g4iO2
zaydQYSChTQ7BU1-RHVRDHVCC1<_S_ILtq54qm#}h0TwC!o-HoWrT}bJMLzJ94MP2i
zd4kAIBq#x;DfdfcQ^*1kOL64`PuU>st5lFvQ4SRWsa{o7&#ER{=Sl$-Px0}Br)-d|
zTepS^Vp?q!lm!x$mCf(6f?S$D0<cv~2`_lc2HCuMb2wk96p92UprX{vQJOksWmuJB
z@sth14ws=+eU|(bSPG;xkYub(>Gz8OR5!NuVLWAna2DUTZJXP^eS44!$%3*#w#c0;
zn>w^9^NOeVc)?RP2*rghTegI}lmuphiqfwZrD<aUWZcHa3!bt;IEyosn>K9<B0p&i
zr9grzQnkkmY3c|-afqq-c%kT#4Z`Vf{rdH8!-fqN2~1FSl+qMzNcI}_zBNxQ8yhcp
z$_81wbZNaJ91>Uxl%`;sj%k{tDN_VMEE^jyc*+K$LZbSW3Uan6M<9aQ^b=eyve&2`
znJ0$gDL!8Clnp|Wn)(%UMG{yFl%}9fMXRFk=z0qv<2E*4@RSWg9hV9sc_|6Z0tqTj
z!&;>4Z0`$zST;6ZsHbIvQ0`g0c(GfuWJwVDi3FEIrINW+Mc+-$6GQP7A1`>y2AMf?
zW+;!UqDVsmOM%i9%#p6Q05XmgA1`>y2AMW(T6h*hUP>vLg_3MKG$dVPdtc^>Wn<%o
z#~RrnQ>IJ_&pXIViN*vcC_7TAWH43wJ=^;NAdZcV7am<?gHV(vClQ5eNpN<w2yRC!
zN4nOUCkC={@qwpokO>negy$jTCC@!13udA0Xyr)P2|%Wijf)RFWrOf6gn2?<BA^5&
zxD?9DrbRW`-j{jBP)vjeJY|FM$bfl5UIJt#FbgFxE1Mc+vb}H36T`;D2cEJ)MvWTf
zCQqIm1dx@5D;g~;n;vB<0w4xbOni(UJvtwRM{PX7VS=TyfC^~Aie%FymA)eY8JCEO
zmysh!=7aE5if8LgFe@6AQYbrOMM_gNO&tp$^AfS?+-#7cLx+aPYfLZ+Fsl?U9kC*%
zX=;@M*bXEfotq89vq2^oFhwc?EE~C0WvMC%8Mh)1otq2tV$h&LjtS2M1E@@8aAl*|
z5VVD`?a+P%`5_17`+)-ohRIbXAX5RIDyIXi`7{H##(;FJ>0zk<^13cvy0`%Y24ss4
zDApjyC|i-f5-;pvRO0tk-MV#iZQ8WC<URh?>$CV$O*u$iUEM$Zs635tcfLTpUPOM<
zBVIo?hT67m``^~BTTk>Jzwr7bzI@ia?EPL|c6`IDnO6(1KScU3y}t4K)~laa|6fu6
z@%p#dzr6n9_2>8&-S6W2TBRUO<12Q}BXz6zT2WnmSE^&2aKDy1#&r53LVO(4szvPZ
z(l@S~#+M%7j$dvWU%mS{zVP*VBj~f3POT!u`*Aehs`mPLlLY3ycwx)f$VZJJ;(id*
zsfB@fqoMcUEljfr^iE8-cN<B~qlab&qG@CN_oA2fUzC0V1a2KRLbCSR00000NkvXX
Hu0mjfPF8!?

literal 2059
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

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on.9.png
index 7215782eb9a07c6fccc3d70af3ab2c9692f20a5f..49f519860b94a20a0b221bbcd24b6a272a9a7579 100644
GIT binary patch
delta 1289
zcmV+k1@`*!2%8F!BYy<qNkl<Zc-rloNoyQe6oo~Wn&$xtO$*6CLuj7oS!&I5YaS7r
zI$GKb#~5N_?1eY}0S<)hLcCH|Hp#-^wGCc)WiZO_g>%Vio?88?)KZmHQmNrH<)&2k
zoO;uJL&wEk&qw`_`=9dia&_CeH*;_1y3Lf8l?lbg#j2p7K!3>3&-WzI2%z`wn<*?T
z6uP^+)!yEoaCCH}4h{~4{r&wL1M#5+ghC<J)zu|HuVzMt&E)0f3CG9BVKdv?+iGKD
z!xKOYfG%hR(CZ&FDAuj5En#(aRV^(oc>-tw(8cO!G?SZ~E9~y>s<pK>As7s*`T6-U
z0|Ns>V`HPLsDG#saLw=adz}Va0CYhkfL{NY+1c4qD=RC)!oq@@ot+i>`ubF0^MSDQ
zI!!$~`9Z*SVC#X<-`}t1=H?uOu>rII=z>OIG?SB)BcM*Qp5lQsGc&?ss8T)ur$Bi5
zA^!~g9{2Emr=daUVw;9u|Crg_+*FH;ivo&wYHCV&`hQ!s`t@^_CAf$8I}NKFbU`C9
zn#s=27SN}&u}x1;tI5ep;q8~8`r~WACAepNd^{#5CMJw9Hh>lYT^xI$*FR>~*Vn_{
zAs#X|HYU6|`BDA#EhwCPn?D1;e{&L2BO@ahVsv!W62>Jo1zpexjApX3vILB>te<#u
z4F2SoLx1)0`wQX2zYo>lr+Wgf`TgT(2Wn_&C}xI-htClR1i~ObOA@-64M4Ad%q%Z2
zhwCRE!hnN=gX*VeN5b3puhgg0--SQly;6^VJ`^x$UIu0mI*3OQpDz`<pb^-bK?7q0
z#6uVm835_+?L9+JPtTQzd>+u_AwFL!bg_f-hku#O%uE5j1$z_}w;mL;P{P@s)95ku
z*sOlg#oiWrEzO{TvEktjb#`{1qobq4bs}T3#Gs2El)ucNw_yE5QMb3ZpQEj<&2=JU
zvg$z>dt0NKjEoEcqb%zu-bia}>p5ClT3jbGCQAsN0kZ+<^^X~hvaFvd-sa}!s5CV-
zxqpHw9;+L4F&nTogRYPD6K@1_d@sNff-Vjn{xFlCo-Uy4;{b-@t*@{51gvh*#i0Xw
zEzKZfWnYgvTvu1;3D~Bfi<z}Q%%r8I2^f@U26eTzw$>A{?LZd?b?CjanVOm!*SR-?
zfAF8w)Koz?)6mcmvw`aB>I)I8F=zq08Gq=#(`MqV%v@D;teE2Y*Gx)Eih!G#)J2+!
z7QCve$}y~r(F}Ca4D?>gjGHE`4AIoR8LKuEi<!#GN+TCFW7lSkW|EVW1*<{Rtx~e<
z2uy<}^!mpPvQf^rBeQ0^l*Wm!SdS4cYlbdn%|<gxNlAikCUSBXEj4#CGmd<Aw13H&
zZU%b&Wk#Pivlr1ZO>HkT>9U$C>oN6dv#puL#6&?igY_%Z0z)*DPGE}1^)%fK^!mq)
zzB*%N=DN|%aCPQFX7qJ4w^lA=MPE1bmzjiw1Oc0%+^xdag1)wFS_gIuef^nR9ni(i
zTIjVjgL5iO7x0Jr22-?+CpXbIo`3j)p^N8f{AC6Q)VMQ+#p!4V4sHT2mO~d0(izQg
zc@|kLZ^qd!URxbG<UN<g?nooG0GtG5wr#uCd?(Bl6%`5C^I$g}A0O{IP__8tq1W=a
z0Hvj+;iL3krKF@pu>E1ftv6%%eb{Z_%;!Ia8bt?b^qMvR0000<MNUMnLIPldEscP`

delta 1117
zcmV-j1fu(!3h@Y#BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
z6G=otRA_<inp<n*Mij??V=IbdNFCB{mp=3*eNbD7-OYocAEHnFn5F#+y*zj+fnCxB
zwx)Y&DJ-N{2SP4#r0Ih*>XEFG<hz*NKM01=nbEoY&lzbnXn(C)1N8m1x(8^Dr<5WH
zg0)!03Jp?9sm7`%-vr(oQ&)JVVG2PQhTPrVrTXfIt*tEpeBVbYmGrwAnVXv%0Q&tt
zK@d!CdLD5c1DlPKQi?{Sk+e@wPXRbSK4xcUCy`5x8IQ*Rbh}+{Z*Kv(zP=`kqO~bq
zgl4k|Oeogt^?v{u3<fD<+@zU77>0yl2uz|?x5#L%Q%NtNr>a>LMM*UqkH<;Q0E|W>
z04^>rxVpLmpxtiM>2v_t+uK{Z5e7yNr4*j$rF1rMn`Utwrz)6fk47W>4^IF%{NkMV
z4lV%r>t%=6PagvC@9&>2H9FGshFVg;ET(8Ch2uC*`hOpM@+aLdF9B$JZJ-Un{v-J4
zaMJ(N*MAVcerIXMNJyP*%Z1xC(^@AMOPU4!1|RGPg_GU(6(`^1Q(#dTno0e#n4*~!
zmNe@f1w`K8g%9i<y~~rYuI5s*?4G2S)K$WLn#p7{i{|Lp_j&l~y$oq8se7NCKYu_J
zy{z=$qJM}K-Ir|1qO_Ws_N$YKj}IRK5H<f{tS6;;OLb^Q`v44{{x;VeL!RQYPbrmK
zn%^v%Nz0=sN<97J_s`Ms#5+fyA8-(K0eJE3oF|W8Ok{reWiBPEL?%zaQe&h6vaPk|
z@pnH1F!=UaYRsbFI<pufb;`m`n#lrSESGI5lYeb56Sjz$b`(X{0#G?;B-Zf>ouyut
z7fm;5W?)-qBsLM5GM!+CMN?vv#uVj@`!ti)%ofsBSF`N=Gto>Asxoj@usNxUPHxgH
z?}Ka;k+C6flcjXg%nH}#Pe7itvv8Yc+4rxyMMkzuX*TP`t3uglbsn6fnTC9C&-2P(
zRe!F`^VzN0GX228$S4X98`wO(Xx`Yy=S8gQvz&_zP%S^I@OBYobE7OubLUKU;40Rj
zMW5j&%_MC5ShIMkNVe*NShk;*MQ+Z>fi~XCe%sipm}RdytA~W!G?QMidBj$A<|zoa
z{V`kHrW4FbGdX!#DV+sX4KsMNXa?n>wtq!q88j=qxAbaeE7Ob8tZ0t6G+SgrTNg^J
zS)OoFHCs2NPByqnGm}iVMYG`0+R9KxCy6PV`M#g}TPA<dZqgWY643X3eBaNNcZp^y
zH!>yyp6Au>jHd7V$sz455@WWvw*eRqhsn9-R;!hwnGK85uk6i1(yY;FaCUZ<(pK5P
zC7PiCf*{c5#QEjrWpYTnF26G*lu}7Vc6WDawORlSheI_*vu3lI90jf`<mqz>w`f+f
je$?ZC#{aM@sx|)sg<t#=3!~!900000NkvXXu0mjfqZSw=

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_on_stone.9.png
index 5a94cb6acb44dcdf7f6078eeece980154bd59783..d8421746a872e837a49afed25e4e1e86b1e09009 100644
GIT binary patch
literal 2409
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
bqM!c)h+Ggw?|RU500000NkvXXu0mjfOnj!t

literal 2029
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
LNkvXXu0mjfwk+4@

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-hdpi/btn_keyboard_key_normal_stone.9.png
index c6373a8afba7af21b6e273175fa4689542f9cf54..44c2ad6372ed827dd510ea6def7b917a85949f0e 100644
GIT binary patch
literal 2213
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

literal 1719
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
N002ovPDHLkV1f(8D-Zwx

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed.9.png
index 0bd49a0e7d0aeaf28d4e87c39182dd58ac3ad2ca..e784eddf8985c46388b443a876e47271223010cb 100644
GIT binary patch
delta 1068
zcmV+{1k?M!2EYiABYy-3Nkl<Zc-rlo*G}_F6h^tG_aYGO0v?H%;D+9NNAzArZ$bzV
z59p({b-u_aWE}Dz42Jn5EeRyD=Ueg2_ShzQd0+Di{w4lbdwYBE)A=j&SLUl_+S=NT
z=H}+0p`pR3udh!eWCZg5ewoI`Mx(Q{GkAD-Fy7wYg4fsAM1MdQczJoTj6mLyOpubP
ztE)5g26%dU3LYOH69HM^`T02|MqYnpkWhj9`}^Sb_BN8cySq;#Y8<ivx%6Q>Wom0{
z4ea&Co12^9>gp;HkOj!4qeNbRWH^jEv=q6xxJU$&BA1qdQ>Lb-#-Jr%Utb#(IXgQ`
z1d<|`P95a+M}LN{a(Q`aP~`OVG!aOOT<U&Knd<6lgE^^Bfg;Dp$B95v<kFfZuRk)(
zNgYy(93CEK<lx{S7F^>=id<ULPMNBzDuX$Ba&lr&WN&XTBfGo1vEUj{QsmN_Ca*s-
z=jZ3a(b17Xk?rm6cWiBK#ZLN|k|GxwA*&3FY=3{>pnu55#>P9=*VkhweN0J_OU=L!
znaavagO0JYvtv+Xb#?U}D=RCplRl=T$feFk-bfkRqvkC|mY0_!Sz229G@{0l)aK@9
zs*U?4L&wm(rO4vqqOq{B@NF=@q{yYt=9H<Zs4!S$nzt00o14qX?CfkTxW?0mN-i}6
z^7<pgoPX3IrO3?8j4?eu{cSM5q{u}^$SSk8ww9W!6q=lzOau}m7a741ney^-gE^@~
zN|EvL@kAgga%oMIH&TW<sdYk;(b3UFASrTbP5U8JR#s+kCf58M8ygFThldjZS%6&H
zF_1S>hF(53HD&OL3=Iu^n8CrpocU;N9U*e*oPYD{W$c&I(o%yzQs)>M8Oa!6U|=A2
z(#IqVkV`V;{navgVHr+J6B82#3op|^{r&y1lRl;z0l9Qi_d}+nq{Nt?pHKC47M_at
z_4Q?>x3~AxaE-zEY6RpWBak;zhV6oSI&;+(x~Hcn7F?2AJLJ-K%P$!&kkr$etFG|f
z-GAM&;1bl@A(t-XoHE75#YR|$xtghXdVsF3uK&eHq_lR!GUW9~hFxjWWwfhz$`ln9
z8T^sXwl0~kUNd1Ca!H1~{>X5>5SGcM6@O;<^llcG(e;*7rm(QkaLMFKuIG|$WRfAT
zpEBW-rfc8yCwsO(sil)<PBP)v%$su^IDam}I{-BRKV%9D3JlJy;f>~3T)TXP@J3TR
z0P;r4gzuYiA(WK+X1ZVu-#7D1h9^^c<i?G*?|fpWD@uOWjX!ef$(~b2w`V&#I#PGp
zdDNyS&)-e>KSRg}S?@Lf3Yn&+CWB`lYSa1o`H6$6r4OFGk>3SqZEa2cD}7RFX(eef
mvVO7Q$ICdrANCXY&+8wPd&7o@_IxA&0000<MNUMnLSTa4ydhEm

delta 809
zcmV+^1J?Y&2)_o9BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET5
z;Ymb6RA_<in@Mu=Fc5`b%L7A|&*3Am%Gx__%7!&7R$PI5uwbxI7Wt*WEl(nN5O%(*
zR5^~3`>CH=vSOf=!T_j$KmFZ6DTG9XG))IlgdPPE5sAJUAAf^CF}@P&16>I2_dD`D
zFP!s@D2f08aU6q)%=u|%=6byX0JhsLzP`Qy0PFP{&*yWT$Sj2T>31n54u=B(V87pE
zwOW~LjF`vc0RYId3{pw}KbG@Nj1U4@mH_~EyIn!dG;OAlQkpDDDO)qc2jIIj6&#(J
zAPDO2sY=yMN`Gl=<|1Y&xKJ(37C&v9J)cjL4SwtkL{uA7$!4D<=Fet6@siDyQk9nT
z1tCNs*23S$2&gZ9ZL_{s)NPY+Q%sfBOi!Bp*k&v-Qc46tP#ME~Y{r*1oFN|C>N4b1
z%{2Df%ttYG)}N-$stSOwnW<aORNAa<%y7CC=JISbKYyEPY@5}kbVv%@NkX_!n%r8x
zPMSKVc~6=jX)}%Q8yZ50nN_n-*#qD)wN9F!B*tdiHsgB$N-1wLqbr&nAE#t9`{Gwh
z@^8ww>t3}>Op~*j0*bxb)(c%upmlB88LP6^<d-u9_OgM?m>FYfGs`gppuRNMl|lP+
zUBJf)Z-1AFoMLh=&GrZTu$oe;wp7p8W|}cG(}YWAN@K=uz@?hKE39g)*ymj0n7++?
z=Ovr93F4(v|K1gCZOv*qQ@~cspChWyH+|Lx*DYC>`!rUwcW&C$URSo9m(4i52ZtQw
zHciVMPDu<Abt0lK@pgQiY1)i0Bee3SUKpCHn15Oy0pd7z+SeT#{lEV(3=zk1<uy~X
z8I>{<MUm-+JkLkn1mxD&uQG;VXpU`+n8jiN063ja*laccfFw!0+0o?hWgd@50RLk)
z*9;z2j}QQ)X{z)a=a<U`x7!T>yvYiOh)hP3B*AjI1OS}RXDZn&2m<rP24B%*T7SVo
nGa@aUwXA!5d+e+aR4IG|NE6!!+#2|c00000NkvXXu0mjfY>sn3

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_off.9.png
index 634419f1b4ab31a3586acafe788ccfb785ea4080..a4731cf1ac85aa84e821a7b5656fabae84b55f0b 100644
GIT binary patch
delta 1214
zcmV;v1VQ_e2+;|UBYy;#Nkl<Zc-rloXG=3d6ovh4?*+y7L4S-tKokV^lb~Yny%+4g
zVsD73_yb4I<vq(}-^|A7CRsBE9*AMRbI$JEJ1t2`iO);@BlfS_+FJG7`7`rpCf;Uh
zYHEba%1TvMRwk5|mIe}N1kjuOX3ERUg^rF6_4M>4e0+SU_kZ{IKmaY^?d?r80_fGu
zD921mNr}LJ052~u>iPLO5I_rfeSLL|L9ab#V1fZ2A0O5I{k<m-4-dZK)ef`(=;F;b
znkg<W7T})$cz1WFZf<S@0ki<<;!}cNd(7Z5^3fv5)zy{5*w~oR)YPQv>goi%=jZyh
zenV5x#WXOQDSs*|5>S$FZ*K(zxwyCxMn^|geSN*q-rlYT2L}bb=jXVF*ZU1kK^KP(
z=(WcTs>=2CwSXY!=jTFeYpd$*?G;8wMndT6=@D=ZulF08f-Y7+qnX0OLIHh}cL708
zPfvx0h6dH&-!BXe4TZqZaSgBc8=8VH<}~!$V+MVakAD<Fj*pK8%!RtTx`cs&fe`pP
z^5^L2=tr<UH#7xZ%xR;Uf`S48ee&$=OhAx>g9Bk|YD%@Vv<RJ@ovORLTY$;t=4N4X
za#HQ@@Baw4=Z2=Bi#ZLw_L#Z6yi_MACjx@(?(PZ*G&3_Jw6(RV#>Peg@297y1$2|0
zogH6byMKhHpbHv7L^DXT!^1-XLAJKG92k&&mwCmzy1BXO8+yBdrl5<(zz#F{`S}9G
z?d|Oe2(rGu{vT^=Yca>&CQU&XD;xBBn$i0`f~>Btda|;z;u~J=(A4(!wo}IKGJ~98
zzeSMc<z-=MX(?f#eVT$U=C099US6JnBxAotkbi}Rg|N)e&&LE)d%UU8#bN-x_LxDR
z<Re9pxw$!Ec6K&lpnaNxE@%W1&1`IJIDHj?IJzeq8iOuq1a_Fo&CM0iC;3Pb1e3=g
zKvU4goQ7UcGw74d69gF_9}fgH1zpT(JIv(d<Ompv**_;HCS=DY2tW&fF3uRB*V7DY
zIe*tJxFhbJ7%zs0hok1JvH66ci(^jGn~^`Vv$F+U#L9s!*Kh*dyEC!C-6pqyp^Ijq
zH>u5}=w>h|Ve<kY@xnF4t=U-OZj*%ox;UuYVJ0gpOITc7bZR;hkHOs=e}uc4eqd??
z?XwU-7c>Is^)!R&0&6<@s!4QTUtdfxnSW&NKo_T5cA3Efi8Wo{6n8hu;|;$t8D#E2
z7Z-9yGntv0f^G(VHC%AF0G`i$m#>&&?&@Zs*B&#Nl?L4mXZ1!i85tP@F5+lwG86Bd
z(ak^?%|Nd`X0Tq+%|ug*{S@!6X1W=!w~S`e)6)f$nP`c2EQv%oGtg_N8GX<+&3~J|
zGiUowEDoAcnbAu#{yEx)V}(8gU;(hhOj=r+fRR<7XvSmh@)h)nCT9T9>uE;cH^V|G
zDEnqyFzWkecA3G+6p!4n(U!;)Gp;D{o*RGA#gjdw8E((wdt=;X$59(ko)Zm^{%}Ok
z@3%$VYfcI?6%`c%&OBJAQ&Up|2RFJFZ#?vR{uZFRy4v|FeNd^YsuCjpu;JI6G5kL4
cHxTmr1Ta35lMH_{GXMYp07*qoM6N<$f_BhUBme*a

delta 1020
zcmV<Y0|Wfg36ThpBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
zvq?ljRA_<in>|nKFc^g&Cu#T)WoSX-L#mJv^d~SecjKS3Ff%dn7x-GbzyebtP?Gu%
zz4mq7q%qL6A-zYc6x_sqkKf~C$GAu-nFHkCPk9YUNg#xv+kfrOg%KqZ5<&>CtjZUG
z|75C)KwT&!7!HTTahxiv8XAoT0AUy+gwW;n%*^}yI{;^AXPlm%0<gZm&S*4ROk@^3
zZ`|)ml5lx>3Bbk01#4?-`W{W@^YascUav=zB*0j5RU_kh9=%=<fb;Y76q$O;Od&}U
zouwp63NvF4z<-}&n&GI-_`aXlrkrrIBuTW)T*%A|CQ(JqCSPxvjYcD#4f7h{_VyNl
ze!tJl%L@RlR*O!j1Hkd|ap?gIA#&9+A+tO(cXxL@JUjrfwYA0W?k)hYudm$S-|IS#
zj*d#AF@{Ozzsvxho}Sp>-v?l2Wkuh=xw%OghWehv!+*n41OAfCq?DPGi=v2DtEJ0L
z_`a|2Dck)#&r8Lc`mWTL=L~0=wcBkync9<<DsQz~dXD-oiY8&(VNGPZnF`3fZnxX?
z`+Wd5Ha4`h;y7k77y!`ebV?_aB#CZ&d1YoUZT9x|^fKb{@sa1}XJG7R2L}fL?Ck6?
z91dp^SbtuIoZL*oUYn`wD2mwL-Ui0Rf?)h;9LJhK6h%LzkPbSpJWtB?lv$Pmn3;ip
zJ^%LhR(fDAGP4aJQ)XFXCJ(dR^l*7MT0WU6*fPsY={%9zPVzkWNz;^;Nz6uB<Xk3A
z71MH0n!i$J3RU0G@H}tH+^lF1peit9Dx5Tb6Mq>S^_H2r2Oy=aOlFj$+3}f}kePk+
zS1kEE_U*b??GjV%WF{fqt3|yq%Lz2EE<0mc(yIM(MqnH^a2Yd;SlTS*m;v&wInM^|
z=Vk$OoS5|rA)I1zwr2amGNdM@%(d#}m6^gKGcye?nVA?fb_FhO_ETb6W5q6WiKG59
ztA9GaB(owyrd6uHXN97=mTEbZg3Z=^kH{*Y_N)tBw`5(~nd)XgX>?kBvy$a<$;^b=
zgYz8ZHl{6eOiYjwLd=9jS>)~bOw?0m<}yMtpVkZWMpjIPuK-~fI_>Mu8|r`mK@jM(
zIyUMgGcl2wMx&8BeX+<*KvVka3_=hD`gPidCZmpBU0+{wa&iJdv)Qc7j;47o^Xlpf
zNFNo0ddUm{(Cv1mI&nT24EXr?04C3sRRKZ>osnj<$?EDV05>-`VnSxV@9Q5nR26DW
qs~<Qh)JtXs>z=B;cIF2vC4T^kx+g!nB=~v&0000<MNUMnLSTXy3+L_t

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-hdpi/btn_keyboard_key_pressed_on.9.png
index 8474f9f427bc23acf15376ec50d0373d8f299bb1..03e163c9cd60f56a6272e1cec0cca1d3072e6eea 100644
GIT binary patch
delta 1252
zcmV<A1RMLl2=@t)BYy<GNkl<Zc-rloxlbHP7{v)3ao@*+xdQkrHgdc%mK+jUiv#Za
zzDL~mX<)d85TJ2nR>IOI_GY`<m4gi&d8L&$a^NE>`+e)zYQ|GNjOm7kVx*tcv}(S3
zue<82i;0W7nveR5_n-3ea&^<WGjnI=s?C&@l?lbg#j2p7K!3>3&-W$J2%z`&n<*?T
z6soGK)c*dy5DJCV$;pW?fEI9kd@LFP^xDiQ%S>Kgp1?1F!^1;$aB$!YpamQq9a+Yp
z*Bmo2!2o-EdunHA$C2ILUDt4`2U-Ah@nLJt<mToIaL+GpZ*Qy3%}t9yARyG%)~d?N
zN&(lrZ!haM(0>A;i*E^f%`t=5$XAOX8yg$K(9n>o3H&H@AN`<4e!C~&n)gwL<=uv+
zpo`r=YbGZrM?gy6+S(EjWNmFt=wE!KmjApjtiH}a2k)Z{%exItK^KP(=rzX-vPv)*
z6cA)}b@hK<{G>u}A2@<CR(Y49Dd=MM)0)Z7&KA%n`F|7;WO;d6`1Ri>>g>OVj-U+7
zyA4f27yC5ynqvlSlCKm&78e(V7k`bZSMPonUcP&L4&FceQf6Uc;Zm@^aA*p;*r&B-
zva+%Sw8@o~6#+r!=H`TFzXa9a@1F{<KL*qvA6f-m^M2@bL(R_4UJBM14oyK9`!w{L
zV`hDQU4JbtEeQxRJw0s^It>cHzd2F=d^#0y9eN%VrlzJ`!(K0-Dd>Vm5Y-Gi+5G&x
zfFKhS6W=gCKJGc;b<z}cF&UU)CNncrK*pGvnGq0VbaeC^Mn*<FC%jIYf-Yt@=yf!M
z^vHILAe<5F7#<#W4X1i&YI1VYO5<jkLB?RaMSl=X>%rjQ;I)DJX$rcS*|cUdGBN~o
zGPYX;>F@84NMB!{C+O<qLxnCT1L!r!4B8}LDT4I&_6j{cJ=X^6rzz-yMiAA^*w~oW
zRuQPHtIHSA7<54+FvCoGdb)r%$ybUX9UUFMfTo~}eHwZl&7e)PpCCwETbnPSDd=LK
zHh;rRT3VWbk(lkXy}ezvw6ypFXaUg083Xh>nn5n_?(P=wM4FqMFHBQYQ_Ng6Hs26*
zam=~(X5^35)Kme5m^oToTO$f+Y;5$L@H(LdKo`wG@2xfyXE%dEsk5_FK*x(zQA0z6
z=Y-eEL;zhJ)XgxHl9D0}3=CK~9UYIs>woL(BT`pa=Nh^?P(Kp^bU`D4UPm*SE-<H~
zt?ESMkjV>lCfRqOi_<N$%wU1UoQ}4t6JJwP;|V&0>^soKg`Cz*a&od@H-oksDR{Vm
z>gwuCaS>DOyLL0sYmOPrO8stzvwE$Wq@*MPg*e*k%v^P!v73P|nt@((%wWA>H-8gL
zDt1$Rcs8?};d)DJCNVKl(3y#qSjUoRL^1=tW}2}Nn!0(@_srS8Cl&|In9SHyGrk;a
z#a>~b0WblWVJ0CVLBPmrpJ-mi+T|kHCz_lAK(C`2`@R_#LVnpd<ATw?Z)TPmoJ{e^
z4I6FOd1A&DC9b*g2VFeb)0*M-Y+Xe~g|*9$qc)yAUpGAZ!+&u=BZ#`!d@IZp6%`3M
z^I)2ekB|2qXj**m(CheHfYQ=Z>tE^pN=ZqH5cP)*H{Oiq_hC1IbDz(s-^U-uS=7}4
O0000<MNUMnLSTXx)?SkU

delta 1066
zcmV+_1l9ZZ3BCxBBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
z;7LS5RA_<in@exoMihm=At~AxAXo;HxK7ZbMjwoSfftR}S`_d<^~OMVUKuFheOfez
zW28WlsCLrA36#JO4W|ov*x`teu_a0jl>-Q%N5h$W=AL_Jcz;cylwt-@x1Z`JP>MhZ
zK@>$ZVMK+5gb>23YVdjB3z@ni&=)!pTwh-^91c@$bwjJw0w4@Sgb+!4Gd**8c?rPo
z?k+n!I{>uXZQ?kdk7X7-Z?x`GN)8SV0NCH(XJut2>64JTxw!$L*Xtpr1V)mp8yU~@
z==FL4?CtHP$bU3bW*Sn;#7k1jQqPzHI4Oz}j`oc2`+0M!v1}%#Ok`%0>G%5poSmI<
zad81ax7%fXeI0;}jg9*=DS=5;6SK)TTV`<_C*Clx`~5!W-Y)>GK09UO$vFTYUq9mS
zlkZ0TU;kXGcVHyzJn4_gERT#_d(PHRe*)n70vJha?SCme{$bR9{_At%c)bb^2~09y
zWCrk6^npifKNb$=MIVSytKFCGBr~N{rsSS(eap~)TR2g7>me^rswLxjUdq<gca_dO
zV>ru9zT2ez^=;shUVU-9CZGP=O!lbzqHGg3ZL*P>&9p)0^`QTNC!1XWhTc1F)O!G0
zVwE6%0Dr*w8y_hLlW-{|Bc;Um{gllbiz74hX!Gii_b9arz&GDVJbc^+;O(1FygV6s
z>D7yisTr2%A*XDnVV}*+7&!g?UjSbI_Rqw|mZ6ADUR*X)W?2cq_Ke-PO1Q|(wj)z!
zSuvA`X%cgJHd;KHY1lH$bLlLRDkpiK`=)71%YP(hqbhPPo2IsDu{X`nQf3-O1&w(^
zFQ(^t3zp5wY5;YCX;bN@`8koX(QKKSH2|elZ9Jnhnr)wnF`3z&?~;=5lfGSR)h;$Q
zPG$<yt6H`S)7(Jw#<D$@C9TFEX9UK}1}-r(kE6{(#te|3n)A}2ecv=-#)&zu5W>kO
z=YP~}-&lpzlv25=dU0i@F;CAF!NoIUF=G$llFcS1mK7^@n~NRIms#C$Cz+KIGE=4g
zds-+PYoU%aDcEey=ZLKKqI+H7T9S2{r!bpMGHKCx(~{+4$;^bgg0l>A8%4()6JunA
z5K|#h6?xk}6U~&Fd5qA^i&kOQ$g-*Q5q}^IL#Mj#tfBw+9|Qqm7-sfqlFY=IXIiaR
zvI@iDaIQr_Q~LT<#vlliYa0ofrKKeRj*gDl-rfeF)9KWvqG`UDd3bmT{BLv8XXaK_
z2mug9k<xFR4+aCSuC4%T;}sJ^h{PkEPKV{?WdM$kkHwhGeBV!g*icvKnASgV&?9J;
k%u3EZb$jg0H&iM91G_FF&CQS<+5i9m07*qoM6N<$f??eIv;Y7A

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_123_mic.png
index af6082d04edab700e36bd8797aabdea1a6f2e9ef..3e4eff698b2e8ee2edfe92e3b5c31d199f51503e 100644
GIT binary patch
delta 2543
zcmV<L2@v*|6p$2<83+ad008f^<Y$xS2`7IEvPnciRCwC#TYF5D*%hA|=E?g#3oK-H
zu?p*R5h{;V5yk$&S|2g8S*vc1k4SZ6H8oZ%+BR0)bxp)7jix{)J~mZ%yEaYLn3brh
z#-u{ETCv5hqArNQfCJ2f>F>~Uo13r0FoUq^n(rpRe9ZmM`R={H@0@ebxu0r19*=)U
zZ7<h!Dg`QuDv2tIYEwy6NmNNxNmQFkqDrDlqDrFLd^Wv5LRzi%8?hK4hbdZyj<5e!
z0s8pr8Br2n0dETe3=AXp5qS>4$#8R@N}?AFBmyl!C=d>W@VZ^V3%~|+0o_Bj$XA_2
zBG3#(0P&|zotjipQSpvmuMcv$T<(80Yu0?eaN)u_+-qj?x|!U-<H*+pEkh?k^aY~h
zkDkyq0ajqj_U+qCO(v6FvNjL>rhdB5awb2X`#;bQ@nl;BX%TNkuoiK}%@fs1E+yiU
zkndxNc;uE`N!HOze`_RJZ+gl(lIz9+sgaS9CptPhqLo4s5fRVZ+uMur=Y4;mg<aee
zXwV%>pr(Zd15rRMxe7oN4CBD9m*mXcPjasTuLCK3wX$BYM6e)RJl`tm5R!PjNJ&pO
z0EzwcJap*LWN!pgqkg*2&(bS)?_rOL!urGl!<m2(?(YGf18p3rHB4wIlR>f(2M-=h
zZ)s@>kBf`5tzEnJ7W&$OXMBIPvvr!8q!`jYbLPzG`uchzQZs4Nq^5cE<~8zIt;7Rc
zk4v$;3TrmO(xQDWjPIKiUN!77k=$Mn1OxFv8jyeZ@Zq1p9a=?<DJdygkN#0WIA8{%
zfp1;AcCDzOpx}4jV$!Txvra)~29OFwv99&pxpTQWIXN|9VPP$@4uOBhT(@rBN07?{
z-e4WQV$SqC4wzb2R<=j^3>kEv<XB!GXiW51kb=2|2}}nHSFT)HX*QeXw7|1%+qR$L
z-gqDe2mxN(v}sduNJz+6z7{ci_UzM;%?6TLH#sXS>tkO!gt>F)Rzo&}HwB{?5^26!
zd-m-4(ARV5KFP6sz$Aa_1BinLcHNlV+}w><uU;)w3R%#UZjq9b(&=zGNKXUH>z+P+
z`d^}>quq6Nb))axxkK?ybN>AK`M4Zm_v|Itg!NWgt=0m&-JURI%9Q#=ix%B``0!y;
zWo2dlvuDpJ#%eBIx>STqrD9CwW)_5sOE*YGrjzBp5Irn0ktTm-ID7VN+=>+|4m3A6
zPo&OKqeitgHa12HA%nqSRP4S^xZOQ0y5#ur<L@C)tDZ1n0*OX~kkKIcM?!bUjvZOR
zzxXFr61I~kPksO^4$I8U)NqW92eDdM_d8-!kTw>XJOdL;FV7r=<};c6&wVq?_wb8!
z`q=r0o@^Ht71@70oD-#{rZ&P7zDP<+df!{9<q6PaI(F{dSqog}#nFb;o1B~+I>0b4
zCQ&zI#*8m{XOCdr-l(W3v1w`I<KrLkVnw>7V=^qPM<j>i<(ho0i|>n#lIGsYiFda@
zrJ%nlj)x~}KX&Zc52sC=R@2bX@bkpP#4mm5^f8H@?52OsybIHB$AJR}-VlQ1=CHyW
zOrDGNdf6&mqVjm~;6XIxW(mEeOP7AiG7cV3lz34H0bA43(te3~rWlPz%OE70Nsi=6
zkFyDjl$#EVB?=Ndv77!Apg^6#1NqVs$*@R2Ov24}?b`J{Avkm9%nO|2bn`eO76s+!
z=P$Z@_wIi}Y+@#mIELh7Vq$C?Hf;FA)~#EwN|xx6^3uqgH*fZP2zL4V!NI}i!AOMM
zc#JcXyME1c=^D;tTT~V=q`dAqTa~YX?U8EOV9xujh;bi0dGdr_f(9|JY4`5k$N717
zsdnv;Z*6UDuRneIbi5!Cdsi>zis-jU8-Y%`ib8*&zg@n3Iep^9iQT^DIcLtCc9N62
z0!q9Cac5C#_3&c5*^PYVpgK;tMa7a>TwMJ98#iuzTevY|WjPl456KeU(m9_48_}OB
zd|;uU;qSkZ-o=X-)AsJ&J8$aLsU;lCEF3e%3)hB+hf@gAT)A>(Y(_>#Pj+^;*U*FX
zssVp--9vKpoAtDkb&uEq1SPj`0gDy+)<;slW#EE7mXq_sRjXE230cZ9tE;PjhW^>W
zIL;5vtY;KSHzn&pCh%S0eOTl#V2wTEIjDNdI5&;r+%yqDo}Tk3A+vt{`YVqgKmKiD
zVPS(jU;5qD)Ko?HMIY&rK0n7aoXK{eBwBwtIgbR!5K*gFudWtyL;}*CUlA!l0Y57N
zhyX(QYUOGqjZay=L*oHI#s=_6k*H^IwPE2Z=`G};@5&Vt5rzH=koKFJnwrn)O21_S
zNuKn0KGFO_hb`G2N;9w<TT$J-d*sNGrPPVM&w2Xv=|92>I=HTmW)~I*22RdN6OeyW
zd3d7`^*X^swYL}~G&EE$CEXluIuIfnVfhEk%gZ;C-2VOhbC6j~z%v^VtF;#{Tu8(i
zV?^RkjpRv>>+v3b-iRK`_9<hc%jI%P1JkoD`}XadeDvtiVrkJ%B+J>5%_Moi)!W<a
zK>l~<)~#EmoZ1+dFJE4Py4itE<Q{)w;$yvDZ|LgkiaBxOM83T6B}<lkAswcQ4Ujgx
zuRz?Vv9YmsWCEKohK2O1s;b^rE`(z9mMvR8EG;cPPkOBH9O;-yF83zIxdCeDI1vl;
z^74)iRs$2TOV>mGZFb+uNTllq)0sbiehtU3WIh}bhqgwJku=A=+qZB3VA+4NWxq#)
z-z@8o8#nGD_0xSm%y^UajQkwUNV>Cdn|8&Kl1)06qUIzk^UJK!q>o10v17;9Qr!&e
zi&M%{rLuVO;*+qn&%9WUhsU?GHyG2?)0<#{w9(v$WxrQnUmp**ZASe21bvhlJmP}D
zCZ$<^f3zAZiQ*$qGX-@{pq+m_iB5KNigBISuU{|Y!-a5;Z*qYzLP8h65F5L*zP7fu
z0@qKl&;-QLG#wh1oC_8#_&X86^5Q(PTT$osNo6P9vzL{Xr65U<x7lp{Yo;sWw6(Rh
z)wOx^=D)IB?@+$_4fXSYDDurxdDJIO+Q}puc{7ktcXVFzPlr^ix><k5BIznWb9PI)
zYR>?cBNF^*gp`fQ1J@0-nB3glawOY(rG(!d2pRg9*i@X7TPwe@^eN=Je4HA4B+HS%
z&GfRh2T8gfsf=_gzUK@$SEtkI^9vr|?;Gk4tNlO!FBtOqpiH_y=X^TpI81z=2$wv^
z&6aGFK5M+-m)G|yk@#D(FF?;kiqIf`MC+4|-Rx3KbOrjg&o2_c!T%OV{;V71C8WqF
zP0CQDTH@E))PGv1lBklXlBhP7M3qF9M3qFfd29a`U;tPd)X|=&81Dc8002ovPDHLk
FV1lP30|@{C

delta 2549
zcmV<R2@3X*6qgi`8Gi%-002e0EbIUP00Lr5M??VshmXv^00009a7bBm0000;0000;
z07l7cJ^%m!33hNnX8-^IQ2+n{GXN%Q18V>P2_H#BK~!ko?O0oET*VpwX3lM|-d*o{
zy|&l4#ED}kgg6jF5)_dOf`W>Gib|#8Ql$0;RY+9o3sT=uC4VF&TB+(o`_NKKtEfOL
z5R?XmkhY<aCUz1h&du?4*Y;k#>%E>mXU<F?_QaQF*G=3iFZCy_v}fj=f4=$W`{(~>
zfOV{69qU-fI{ptq?(A@44MgajrMMQ{K`)9MBN9+h+c_K@9HQD;n~c2Xp=!*u_A-){
z4-#akP@#f?!+(GQ0}NJu4XlCUe+3E!Zn)uw3o;l=D58iW1gzVnSYOt+|GrrAC4mAb
zJZ}vg+dbZDDU#V0KltTygWwS0^^C~%joNmJ-5?g*2q*{$2(V~eEbF88+TKvv($Exg
z**hKm?7_c2J=P*XFf~J*dy>&9rvbB`AL}nPfdmQ}6n_L3ELh+Wppc;0N+RH3Fk!$1
z2S6b~g963wvtXb)G`B5M$Ya5G9z3;YGF+YYWcbvcUnigWsDA;po*!?bC>G}n6&e&!
zh(#iR3<os05IW~iYX0&)DWp(A83qJoXwcw6;AGRh)}-%_AqO2gbbAT_g{*rM-K7YV
zs>3j;6n{x{>t4w9x4+t6q)_05w-`9pJm;y1P^M#cTM_~gPThY#G9A6rIU6au9L3|4
zJFf1W4x~_k1@(Ghq&?F*(>B^!c6ka{E=A%S=h|nLEI5P^Rl7nnJVaTxSc>5hRaY!m
z?SG(1p~3|pLKpg8d*a+cQQG#!{y)8b91NoDynht=@nb`eCZfzCC}qA}_qiYa=Fzj@
z(Bb&~h9fV;?#nlE6@*&9s%#$q<|i*4Z>fNR+e)L7B-7<22xKZrtEG^eDH2Ff;6~FM
z`;HzuzdIcgux3aI8g!Uv+`rs4bRf2aprI)1sm4?T*WQjN&F4>pgUck_RqiB8Xu+a6
zcYn!y{oW%q8hdsD6&SEUAVDG$AuA~oLMSLCkXzJZ)r*%KKi&E6Bj*p5Bo3|O7G4D!
zD3FxKg9Qi8cTH@I`}m116VdtLxd#H{&kv)5N@vzRMrA)6$W*jzErY!|&xM^AH>O5I
zDNs<zP@u^2$}LI&kQJy<AcL)l|JA+tc7Ny3U&{1xDUdBW1(760feZq=KjV7;ow>~B
z?_BPK-s(0#P{&)d!Hf?I0CFhd`~_`nY>4=YYq<N_PD7<45ghU!CZJHE!U3n#L5WyK
zLkLP;PPkBlRXfkr4j1MrYuQa#!$m<abuKgrLaMu<6)ZhGCI5Zu>XUhR4eIKp0Dq{U
zfPe)SDm;E2v+$!0;n_Ap0AjT#8*>nlK+Xk!x8rVaOHjxwNN`B8mQ(6r?ps6K)4<KU
z<INNWIE>x#T_5dh7$AS_pNwRP;G(*XF$jo56PQClI4{tVVBSr6Q>--w6DADEP=`J9
zEn0J?>u5I-u5$Ct;jx`*2uP5}n}3fzHly9MU@0qTaHgE@IkWRpW$*0vJUEP7@uCH5
zAoatK+e5`3s~1)6R4H0uu%JQ)7QA1ypYBQd<no~t-y4Q*2ZZ_B*2_=u)<j3a7oOic
z`slg-JO~72sHx`jhf@l>ASmI>gwIRbv8{t!Qswjqn1FdJ;Ud6c`0{%#=zpUDlZhLe
zhAm|R1#UFFwe`rp*@!#Wdv^a|&lJiqtI06kkm=Cdk}VdYJRX>JIsgF*K$TpT;Eel9
z_Tc4<rKRD#rH<Su{c~Yfpe`u2>ajXr1cwa0P-aYsWnWPcxZp3g4Q>7KfuVZ|?YZ{t
zW4p$XMa52mG?+_`Gv+EUG=FA%XEy74&zW5l%{d5A7jfkZp6Osyxqbd>siJa9xn@M?
z!=<FpfOo-Fr(mp?qd6EX!EF^*QLXiSXdc}9%JUZnD)N@`hrW7dFth*$3ls!0v{#3d
z^IAl19oqc*{_&2pTi)K6NWGYX0p3vRnjUS=`p$><PPZ={?az1v`G1Elw&%}>Gd_>L
zWi(KPRjZV!Uq%Rs8-<Py2`XG@dUMamk6hl))t>Pezk2#ga}f;0E-Mts+sa6Q!`kfr
z?fg_*(HrZS41vOe8BHJjJRg|Y^jZH@Jeu7x!3h-w_2|ZHtz}2|r9*#fPs0Seg?(|c
zekOnr)zm5$Gi<?kZGY3B51c$)kVEOd*#6m)_T{E@L*vB#Ghj2?SRfV&xms1ZLH191
zIFU^*+o8cA`V+5yezhePnQTb}qqDn5n+tQElbfa^y6VpN{`2LN;Up?xx8p^?Vy4MB
z7hqP!gb9ES27Y>AWP4Et1RV=~|Da`6tOD;l^5Gvq|I+sUeSfE)3Y&Mu6erc@LT5LY
zoJzUx;zLtlU@%EGH1XX}qUB?Ur#r88PDdoml5|bu8^;fP`n3~H6Eq9G)&ZeDMGmuU
z<hh|)Qi<kG7~tTu+DLD@Qvk>YbgwB_Uv!@Vf#jA=e|pEfJD#EvNZFD1_;X!D_YK_@
zvn$FXrB9B8(SKYS>$%=G+*NeDivw3S#JaCN{N)3ekVX+^tt`DNMP48=b<|ms#(4@l
z7{DrQUYin5LImZIARq+gBo7YJRcxAdjTJi6UJ!tAZ({S=$B%t|xFHGM4g?9QeOLGK
z#LRnrZ@OoBB>mjkr$)l#7)25#7_|>s^(YE(Sa;98@_+u+@siq-+mJ*B2Bd>=?I&iF
z>QOX8xd1Fy(Tk;)7#P@=)XV>PBtE(!-fp^0#ZlNh(i-ndG|r&}0~`Vt3>2>$??$p4
z$D#$7B^O*LqEm)n|HjCMB8*z0vJ@RP7=of&e-ID|FfcGkb}`_9YJbUK*qMcaK!Jwv
znWnr}mVf-^`=^mZ1v)A)As|4YLV2(Ejh9k;bFK4U11cKx4e`*)AN=g8%P?U;)S|Q6
zro+I&Ald&d2w1SdV4%2ogc9JeV1j{zg26(3X9CntmWHiDj%qQ;VP#lKnv+U~oN_@R
zP0A9a46B}RYWu6c7ngd;Vge+~+Lph%bULK=>3^_Fe%T3-Kman-8UKk6y-D^u9TK&8
zS!a1ia{pvY76#Z_D6Spk-;EFmK!O4V3N$#Nfr2jz!GsCxwk}N8a@8a1JS?-tZB=p@
zi+4H}m@Sl5X8S)vJ<pSs{bbp1NhYgYJKg!4u~l$~FFV(<j&-b~7XAeaS4?oX(k_Mo
z0AK(mbVXQnWMOn=I%9HWVRU5xGB7bQEig7MF*Z~&HaavlIy5&eFgH3dFh#@v1^@s6
zC3HntbYx+4WjbwdWNBu305UK!F)c7QEipD!F*Z6hH99mmEigAaFfcTpN4k+ACkg-n
LNkvXXu0mjf9|58k

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_delete.png b/java/res/drawable-hdpi/sym_bkeyboard_delete.png
index 999a182f42746727114a0767d668ee25914499b8..1d24cc85c020e8d4be1c390b6debe43595d87ce0 100644
GIT binary patch
delta 2279
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
Bg<Ajs

delta 1817
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
Hu0mjf&6QCJ

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_mic.png b/java/res/drawable-hdpi/sym_bkeyboard_mic.png
index 5c73600d9ee2393bc9955744c2e7740f59692948..512f46080022eb99c3af40d970362a783264a78b 100644
GIT binary patch
delta 1368
zcmV-e1*iJ03xW%f83+ad0095fs=JeX1t)(6BuPX;RCwC#SzkzGRT%f&nR{oPX?C<7
zCmWSil$Fgiopmjh3bA}JCI3)jP!GYPp+$=i;e*hF?n4mO^wvuSDTJh;(t|{nL9ikj
z7=)}7J!FdPX65MkXT1H6d<PDf`E#$0v4{tL%*^?7&+mNqJKy&^XPB<*8TV6BGVXt~
zazW^V(77XI|BvHYf_nY`B*Y}x$jXXD<k$fHED151oD)$2jbNuXPT&wYARGZPBBiIB
zkRZdyH~_Z<2eokmQD6s%0DHi`L@MnTveD!oARD;MKSxGJt|^LQtEi}0Z)s@>qwXGX
zmlmNDDRWlhxy&SNfD3pCcocYcaBzR{!>p{Vd(vcjQBl#InVFdZv^M}Hz-7PzC}!rd
zLdXtyfnq+{=;-JznTQNda%E-Z74*9X<O6P6P+AFTfDb4Kp3lwA{XG#Oj_&U6FVL@%
ztdvCyN;!{WF^H<<Ll10hYy^^ZUR+!ZlEXWtU6|HLE#i(wlO%sI3iVTI+?jt65;4eb
zA<o&PKzb&*j9D0`7$SSx39(bAne&<LS%Tl}l&{%nE!_$sCcS_0sZxK%q7R8pph`LI
z*bujp5;E>48zGZokZOUDO^RKa^z4|V0%B$eiIoXy;h=s_dZ<PdnRN+1-bGeXDbWgf
za%{$_<pAiOo}SLHs;U|o8XAAP&LcDtvqFgX_q>2oS6BBcDTU00mX4E86iS8<16OKm
zYv1GD{C@vWJcj{2z|CZNjH9%)^jGxj2VMkPL_JC+P(&&~GtO^MktQ5DIXMR>OGP0I
zX=Zed%jJsFSI6w^tY2;-5f?X|C`m;638}KOGA^_-*4Njs(!)5hSY>}@<uAzyH8wW>
zOwZBg=jX5RI#pF8Qf@OX&=?7^0Pr}_EX>{8+xr=Q_wiS;u&{8;>2&TTd0jVw*MZ((
zF!%$nFD@>=jo(iJWh7-Zv+^S*i}mvI^6z-%`1p8>*qIFt4I6WFb05^#*Ds4f+1c6K
zU0q$@tgfzpL}Qh)v9W)`rKP1Oczbhm^ViaIkK*kzmf$+ZPFjZRX8+{mWJO0u$H%;(
zrl#gL%IA_F*(ALq#~2n4huzp&1Dl(hc|M=-x2>(M8>rs|wt&CLmttmoNE~PQE7@sp
zZ@<&p+WIL8uj?o;V=@<!68&~*0!}Cce&Z8lG)>zb9v*%l)&GCci6olHLW!g#x135E
zx`2G?IlQ`Wg`ar6-n;$%{bOruYj30NP2dd<5P7Gqt?es^!?7#+_Vo0G(DpQN709Kq
zVyAgbYib^koWO%XArR!GV5v`xP8<jX)=NrC!p0Mb$K%-wg+gx;na6-U;1W5rVpZfb
zT16%Wu|l%cGgE(4Q#Y{fzn85bgIlkusp-q*<>i;qzn+dw`6Tuo$xa}tP62|Hi%2~}
zE9G0alW*yXiHQ&_^am$`9rq&-2dIAyXak<4EuKeYoJ5A5_SB)%E;t~^jgVtT#1Xl(
zvvb4kcArFL5ZgvL_>&xVj~sYMa`?kk7Z7G-gwQWXL~MUw%GmLCO3ct#WcHYu+Yqz5
zMwdSII3(qAC=u1;j7`hgULj}Xeo#<dUHxvVY|qix*Vj(l+(Ti6rSs$}ts(VoJH)|G
zK|#UaR&Ugp$(wv;P=A*IFNrM|)!XQGMJ4CoCa2z$d@gPGL-LM`(C?@uapfDdeIl_Z
zIds}Dtd2yb73%bTSGs3p(!HXr77nctVix{<k<V62l4G)Nxct<uTz;~Pe}gUvoi{@N
a3NQedDZ7n%g6yaO0000<MNUMnLSTZ*^qpk@

delta 1410
zcmV-|1%3L03#|)~8Gi%-0033mVlV&z00Lr5M??VshmXv^00009a7bBm0000;0000;
z07l7cJ^%m!33hNnX8-^IBme*aGXQ;rpBVrE1hq*-K~zY`?N-fiR8<uJ-TUtQoQ_jo
zr&wWTN`q~YG6g%;020K67{5Z|f~`b%ChCI!!RSI`Vgd_ebbsT@h{kAw8YGI?5=)Un
ztF-iED5afFr!$o4%)IaGqC-2wyn)t4SDcr(dFS2V`JMYa_nZqnwExXWeHY)*@AN-r
z#5cT%-3Nw%fP$3QdGNsNM_~0Fpr8;TK?DVX2L~2xxbXbJ>H!f5kfB0B^I$k59mob!
zFi?U43m)ghXMcfTY6Jol1he6x*id`2wWvjJ^^A7TZb@m2D8hnQyR04~0V+22?|S#x
zWc*G5gt+?L>)#&zEpEes18=>lQHW5#={WuDWFixG0RZ-<Q*NR7;WSFH;P9GM{OgE7
zgfg(>%D!x)TmEF@ulU8?3!7~Xg5QSt15t=j=bGnRcz=~YzvYLnbi+n~2q;8Xvc+np
zxnhMp33UBH0ENIn?%7lZ2~6-`Q~#_H;un`z)cU%B$o=|)pRLM&Pu=qeoZD6R-FW}5
zjratqEJ%VCy#Nu+Pa8r&2!#L<wA>50KM)0j00IRvL`rHS6G}xWu;IXk3umntR0Bzn
z!QerK27g%)Y9*iok)gtc0~ZbqSbjhh;<)}<$CrmYQ}2(&B_`AoB0_`wQSW!#93H=X
zVzBZ6vkE>0(p=M6@5FI$aQf4DUaU!tcnw^YuRJyK3Lt-h5twWHxTYEhfw1%l2~kU?
zP9r3VGnZ6BNk(TL5)V2JTxK$)%2QV<KL=@bb$=UfLI1PWP<k`lla(DTU_>&JJOa7q
zLP#^4EC`i_P+dpf&U`E*7nj2Woio9g=MRrGr)5)c1y6JumOCeUZzxV*WF~4Vo9EgV
z;lcHn--9jO-g&F#R;p{L<Lafyr(U~8@N?JLHk*YCJCbjn-+wb3{9yk?hhTIMy)Xq6
zj(-mj0ry~`*g5~q`JeRE)|2~gi^r1h{JlMUdDIkiqi5my<Z#m`y?xydi;X=!yk`bR
zWz(%>#9_f~U3mN4cr+L8OW2~v_RhXId-NtaNRC~4^z+2`d()dAOYZACcs-DT;mZgB
zhYM59bzMJlmTCRZ{hk<$?3hm6=t+m{lz%$V^2-x9qb03zx%<NLAKOwW!l)bq)y?07
zMVABQrAwSR#bi7e{X-v*oyo~oLCxsdFf$|9_Vge8H8F;4HJ_@v#>>?W6+tv#Z2$Ps
zg#+oWrGO;?1X>}O+d7pPIB}ZYKmm7PtY}8+0IfhN2$uBmExDN4daC<O_eAW;v46MD
zwN5D0q1jz2<WN{sjQFNjE&>2h5qD66y|`&OIuVQJ-WbIsW{^P<#afsuAaa+L2L}%9
zX}PFtp{z_f;E{PLuOlB=YH}o}I;nb$Rxk;0vTf>6sChOrs{@na_Y(6ZZFr}9B;Q`}
z>*wrVgw?wdKf8PKRZ%guq6SR0eSg(xdX3@SQasttL27Rwtd>kUL4HSBQVF3YS_*hB
zNmCFe7Zii|4+j5hjQ|DO*U|Y%utAj>qr`Dd+bFSYOR6WW=lw1={y-EWWH3ljA(z{Q
z4HG6T*sx%OKQOg&NjcyU;lW;=CLAuD^0V&L?s`boAH3ql`clJ#ZG#j2p=|;92Rd-*
zam6%XrT_o{C3HntbYx+4WjbSWWnpw>05UK!F)c7QEipD!F*Z6hH99mmEigAaFfc{K
z{{{d603~!qSaf7zbY(hiZ)9m^c>ppnF)=MLHZ3tWR53O>G&MRjH!UzXIxsLao=3Wo
QAtwp|07*qoM6N<$f~ru2qW}N^

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_return.png b/java/res/drawable-hdpi/sym_bkeyboard_return.png
index 91bb397ff8903db86dd536dd44d0800232527400..426e1599ee26dcb27c8129fbea70f6df334d0746 100644
GIT binary patch
delta 1067
zcmV+`1l0SI3)cvc83+ad007*G`)-qA1t)(4`AI}URCwC#T3tv}VHoagr)|evS(=5(
zHl?683WQb{22*hgZW<vOf;Zg=UU=2tx*Odjby;1FD5!3_8M(RPF9=<Y(S=<`7a9_T
zxXRXk+Fb8v?}<5&JKuKB<|gNb2if_4pYMDBz89HHCUamvit4~V6@{2WOd+NaQ;2^l
z#Hv}?3f&h2P~-mi!`}p?0BJy`8i^57T0kw}FhGaj<A4poFF*o`mW~+1Fp|a#<f>#(
zdO&kqTbrBXxGiGwcs${DyPpgU3@pLV2p}msu@p!ZfjMgcXG|tj2vzPsT3cJg&~^?`
zE4D9Hh1z{>DwR5#+pxO2YC-ipST=tfgHz%SUV{ctY~T+ucu?0uu9l2tRUo+yi9|w&
z^Q+533`uFwHjbdd6J!5Qj2+sO1(M5WxN4DhdE!_WDWW>2uCA^JEX#hdSS(K?kw_DK
z<7hS_yGV2%3_uGw3Ak*t*?if?J~}$;g6~ZLwt)5P0GA8~!{=P*@vnQP18{%5l+Gjj
zri^yG{r=+OqBFZgEEa3Tm{jmOjKnyil1Qo!U?8OC=H{;MFkqHd)7nJN+>%vSC6Sb|
zx3||NM5@SBXV9T(ARu$QX>TcV#cem$*VlJ<W@hG^h&quqSkU`4#oQ!5=^<X70LOD|
zhdWfO(-=lJ<s`<FBJSMabUJ_U1cSlBd;@Ag;7<c4uStse$t|548ymZsOeQtC9rSwr
z4~&hn5#vvDixlK*x2C41u8R#?TU#@EJRW;A8r^_QB9+%BK(tz|&g=Es=jZ1;g!<Ii
z*MG$XI3<_6SEC!g0Hj_Ex#4mE)_zIyNB}3A!%`9>vC23yGBUAOq;!8eT{IjHJ1}Ol
zauGWOFt@a{EbSGs{{H?Ku!pk%JthWKm)-9WtJS(NIXU@^m@SF>G%lZ(7%|ppdwYAJ
zoP;zQO>$^x$P)^M?!nJ5_<~MT4X#AzVKf>)f$F^i&pU|f*MN4;(B`oW<tvzX_jTy*
zZ~J_{8)AcohldwBJ3D{h)3|$*-KIfYF4sq*9e6uGvBnXjE#efD-Se4zBf#o#INpk#
z{P_6zbLe{oa2j9`K{LJt8c{oH(EBmPygUlYJTjO)km$eS_xm41N~Ow|ef$PNgXaS)
z%^I79<b-l1!8|$gGF}M;0*`undc6763mp$B4+w&9&#4(ot`dJ0<L<M`El*ERPjq*8
zzsp0cs!H73Zf<sV_Ms3t@E7TVjlKeE_dGdLyj&*aY&M%ey938@-)O3~m00u0t$SPq
z_x=XnO$oEv99&;tKaU<xRl@Zp#WC8qnqc`2Z?>%J$jE5lyB19M!p0coA6OJ(3NeM4
lLQEm15L1YiP5u`OFaW39whq8|>xuvX002ovPDHLkV1kCs_bC7X

delta 1383
zcmV-t1(^ER2$Bns8Gi%-004G@GvxpP00Lr5M??VshmXv^00009a7bBm0000;0000;
z07l7cJ^%m!33hNnX8-^IHUIzsGXOK1Jc$4R1e!@iK~z}7?U&1s6jc<5zgv&)u71sf
z0p~?{j4%Sx48j0H;vhrF1YKxiTo`rhihqE=z^!rN$_*OhV}C<%L4u%?sBugX86M&w
zBXOQE4~FipepFZ0burycRdx4tLwd)YPI_@~-SeIEJLlf23+uLS&!mZFIFSvyZzfE5
z{7L`tifPRe2!Vo%hKdR}*w{F@{)d_a6R7Bf2@^s`VqsyC!}jAEfXNEaRbU#%V*6C*
zznw)xxLRh*?0?>AT;vnO8p=#3Hu}PMubmrt*rB?c7LI=X*|!uaVtZp<6DDhnR^+A-
zBKE_c--Z`<TY%F!e&_ty;LQ#b;dP=kfGQVXLq$P=42Gc)A~xPPvAYOBj^*BaJ2P=q
ze_ZutR8Y~;P>{IQy9@;#Ba_VN<sd?e5z=*3|6?^^a(~rLh%g4prKogUGTI|@!Ln28
zMyan3D?(Eh712OuK2(&}dz}}zk9RuG&VSy!Z7eDdPC!S2f~p3Ff~d7+RM3gilHYRn
z=;z08^{c#m?%<dGmXY_Dy%e1gbx)%TnDnEPxBJf@{%T}mPd*B%zPp>drw!HjTzQ$4
z@(E!clz)anTdMc_Ll;i`vCm%VTI1oyf`N(>Xh?y0s?17@RU#zp?kfk*9{Y8mghE#%
zVJ%Du%_pQpM@Ltbr-2DH43hNzH1P3>>wEIy@<d2WL^mWzB77|(iIXHA*K1XzDom~j
zsAAAs==x>g?5md#r4ycc-AX>_H7I7JxA|o#Mt?_Pv+aEn*OhJ%7tBnc5g|#}#K0%7
zUmP-H-pP#icL)3Q9od3(yldj&T=LK7?sTmVxzdu3O91DAmGaVw(s|*fPv02bpNab;
zncn!#-ncF7qT|g>2wj!>Vsx&3bxbvP-A@$OfB~R5p=|5rUFU`_4rLO7IhI<NT4}&^
zCx0=2c#>>z^ZQ`}VMcCre{}rXn`X2Tx7AE_x6beQkA-?Li3o`{3bA~w?hdVK$@Ia?
zLsxl39>+fu+#51tZ%c2T>YCHshP``)3EAzBw%z#P!n<Rb6ma~<W3XltE4=*SXh+)@
zZ&lW;o`v0=lY>9M{o~**7BMN-``~f0M1T7DxD}gi`+ab>(?8k1+%sR<jUd4l#mI8Y
z{pV+fuaDefi4=vPh}B?4Oy*9GZB<T-OGnL^^yttt|IXF^1wG~8XA%d+PG*lxcTAJP
z#KffF|N5vUqeC9ST;H`*YESmeN$*~Z+x-i#TrsACCx|PBtJ@oL<j7N?fL-y%3xC2y
zNf0DC2)n}y%tS}`uZk&(q12|S&;;p#Gl|5-#lgYBE!RrahIy9S<bcUx+3lVdmxj!k
zD*!Azon1_KrASpoE=xaO==Ee=6*C9SZ0D5PlRY!CavT?(T;48V)sm^61z?X~Q)Myb
zF{LQ}YP)*iVG?An?Lm0uTv!7o8h?d7u3TA6!Q>I~zL8<<MMWmZ`z90SN>)#E{i(Xf
z|8XE&W;fm3I2V^r_xz!m=#rAfLN*N+z=esRq2S_RQJ{#^RG0^-pp@=iveeqml`)W=
zc>G`WKG_sl?YnYQ?#Ao3ZqJVW52B&y*P_M`-2eapC3HntbYx+4WjbSWWl~{uWdJfT
zF)=MLHZ3tWR53O>G&MRjH!UzXIxsLr!~X^V001R)MObuXVRU6WZEs|0W_bWIFflPL
pFg7hQHdHY-Iy5ypG&e0UH##sdG@eJgks&7v002ovPDHLkV1l3lnS=lU

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_search.png b/java/res/drawable-hdpi/sym_bkeyboard_search.png
index 0ac08145b3daa55aff413ca63151cfe1bbbd204b..1b6f884fa39a191cf08aca04df2bae8d77bb08de 100644
GIT binary patch
delta 1572
zcmV+<2HW}l56ldZ83+ad007*G`)-rW2Pc08?ny*JRCwC#T5CunR}{`<k{A<Bny71i
ztcJE(>-s{8k1Z^_wzkDrk(NfpYK4LdS}arx^-rvIRiveCi?;itR4i0WUw`~pQ0VH?
zVuhkuUnpz+;i|>@enj2$oN@+kheVCZCRxeAhvPkW&fM=l&iU@0a5kGwauF}7<br=*
zeqw%Neqw%Neq!t;bF)7Vz%vj!?jhiqf$ec1#t{MZ704if@qYw30PHb1BEmLbB!;9E
z02M$B2pJq4H1zcJT%Vntjk8*<ST0d06uU;Fak{*`{BCx3_I)T?1FQpf0oF%C4kgt&
zAqA)ak$|+ewzhW-2E!CJ(jj7EVrGA^E<Qugs>qkbop6Pe8W1}_KmTG<Qqr%d5fTHR
z!DrD2`I35@7)QMvJ1{WtYGh>OeMgO#%jJg%M|OM`eGoYn`Suzy1t4N+X(>B8I(lB*
zSSb6euCDHrnVFf_px*NcyvH)M*{MH|zR)N6_6jkaE>8ebGBY!OW*f-!{84{iUfvJe
z+uJXI{VE_D5Kh4Rt7yy5&;JqYvd^L~^hv&@-XMlOdKseLTO7w7v!vSF+dlxCiFzK_
zjEtrhNB3&7nVOoKZn5Oh7y3ls?iw{`*H$nf8LoS5kDJZrULqAr4dd)YUyf{Hfb@cb
zf}dC)=o5X@J2+1g!zprUYiob&rc$Zg5gMe^>DE?OR&v1><%pCWa?$WiUT|>mmf#0{
zg6|vn4tGpPXS5<pBxP%BYu5h$zDg)eOH2DLEG+B+++rgSVOlv%wq(O7xrNVUWMm8p
zHuTxi(UFPoaEFGKI$2jSH8pjGElfyAn1nw#g4UBriO8Ya*oljan`VD)<KyFTq-1zc
z6XV&@!Yd*oVwH5CGqMOZ;!${b_&;pn!NGxAB%ZyuZGm;6K8K(Gg!AU+rpg!gW7x}w
zp`oEGY~kG8oPpMb{G`Ca1`rb8%7ul6%dCxjAJV%#Mhx?o)nqdL$rg@|j;6yO9VvYN
zj6n$N>PALJvRFfUdisAPt-oVWs(TF8A%JTdjb@F_L7>(xP##Y?NP5D%c&d|Nu~<H2
zeV|V$e~#Y4c{)L(P<<9;(Kl?PAat*ejg7qyHX}eIs18y7!ZIz^85$ZY)$8?tvp#Zj
zbNkRYDHP7rk_sF5<ix~8E+p4=(LM{6dO4{FOxAiLsiAw+i^+em5q(oEhGDcerl+Ti
zsE*tlT9Kn3y;56S+a^}(s3c&Q{3WUisFMXqC1kCxuI87PmVU*m4FUD__1{6AmjMQm
z&h+TEMMfi#nv;|By}f-_KtRAAY$X2x)qWR&_X>sLz|p=8WZ6b%XJ<3`yg}0$HK)=Q
zX?5O>rh+t`3D<vyv%6=e1FWLyJXc&?+y(jV8u*T((c?XNG=Ss+h+GOxB@5)BrLz)3
zo!H#m{24^kJNE2RQBiZWvwn)ADDNp^?8xZ=PeU(XFDoni)Mzx0i#L+Oo(*kShg3Xn
zb6x@=e9sa2{{H?q#F6%_?c-eh@F$!p;u#`JD-9mQEiZpB>$|(V<9Bv;@O)9CR;%|a
zDk>&H8)E+3pq&7c*Z1}H<&>0^d~VOVR;yiywf7zbonPSJ2PC%7cHruASp9#VQc|wE
zL?J(h5JhELsw1Q6g+a&!;eXcAv<(Uh+U)A;dYg_Lbd(ObM>!QG_C}jI4&aG^K!Ou%
zNg^5B($atOj!Y)AIwBVs7`O}T@qMV9M9M^Q8acNUb5hRnw0`0n8yhVrkwaTmRn^BN
z0QA&hK1)oP!Z^i}8X6jI*$X`Ep^w>YzKy|(<ehI46OqGFNUo`=`RF8aIC6`Niy5?D
zeVUj+PEPA5rLwZ}wp1#8coB$+$)!Si=(I<!sHlJF4%nZ09HyeZq>oxL74q8`EUCi6
z!mmkGhnyBXTusn;>f|ypJ4s(o$v(Wgy84yj;o+N!iHX1W_V#`YWhmV?Py4Rsi^K$S
zGCD#Cq9Zvx3)!ZRg@>o956*{wOC`uPp6+cVr_S_wm-GKf%umcu%umcujJf_5U;xLp
WbLJ3QeJ+#$0000<MNUMnLSTXrV*;80

delta 2007
zcmV;|2PpW=4E+y~8Gi%-004G@GvxpP00Lr5M??VshmXv^00009a7bBm0000;0000;
z07l7cJ^%m!33hNnX8-^IHUIzsGXOK1Jc$4R2L(w)K~z}7?U>nbTvr{(Kj$v9+hdPC
zw#SKGJGgP2g)Af{Nvo!GNlJ^9vPe{vhf2I4DuIf4LPE5E0DsCOPdrhTA|!Y~DTzv3
z3dE2~IIWZ51UHFek3AmO_Uw1=-0ko%UdHiwOTq(E&wac4-QVYYzxQ{3=iCdQkN>wJ
zwiYHI?D4Hc%ZHJqW@y`(mRQazkz1b0)+V)_O+i6LMMXgYBpx0vE-v0m*yj4gCLn=|
zjt@TpH<S&OHGd&osauH>CKW1JxVTH<o8dOHQJ|pVCq$SqP1BuM<LL%PSfZiu(oN<m
zQ=~+h3NGG#+qgJU6(1o&#Lw@)*gy72vDIpD{6ct$N^H7iu0Q$m$nJ6GC}Cpb-M=z{
zf{zHX(azC<3#W#TjrCfq0@{qpPrbIst_+NIPl+rBHh-Sn#LD%QRZ($vzV`fuuTCY*
zkfW_GKUHeBzx2gx-~7w>-fOr+9s?V>F-)ri0)a+|rW?D?J%8!RiQR@+@-<?DrJJh6
z6|S%18$I+Jf1rFu^nQwihjTwRD)@;^bzM06r>~{D9YFPbmR5<)w=GCYfqY}JsT{O)
zm~Y4*>3=K)jNS!ooRzxVI!vGupyBPK7oVGNt4_8pd-D3};eiP~Cp||qTSoT2bz-;=
zz}DV9N$QnR49eKJ+lT2yN{Ns5UmY+5pnBb(eQEgY-(UW>n8Cn9rEzb{$TSWP9k%>X
z3Xbpl)!^xTR}Qmwk#7yApywM$`tIzSiGm<lK7aMeOYfigCvz0AkSJt!<bIZZcJ4bJ
z$u3)k`R)sY2d;EYqG4}OnLtHPM$aE8b^vHHKJ$$ak6&Sic??`63OXikyy?Y%z2m#t
z37P249mNLxXo!uJDRu6t=%vVbrx68+<p=KWACIQUQlf%`i;YR1h4#s_mphUGWo@Rl
z5`V(CSzA}?-qS4qXH90HS{j2BGLL~-Q`jCBW+Zd!MsrH>z@-#+eP}2fH<7h4fk0HW
zOxW}TM2dUnB4uoxRR(!DI5^RK)KDY{sj8cy>MH|O>338YK&rOp36@*Kaz24TR`iN4
z0VyPGy4$XWNjzM?)tU>M0QvCsc&Yk6lz-)X0u9{_W|}iG!!HG>?&4M>w+90kJ5cUe
z2pRx0u}i&1GZBJl%d!;wgmNwK9?T~IRKg{tg0tC1Qy=EE7LJXD=Ku=9+uhgpxZO0<
zNC-bZf<$O0p6mX@p~(b5&~D9Y1{UtdCx*4fD)F!rxfe#?8q^LrimfcfKRDW8oPYFU
zK5|%9A++4;JAdRKduCz)ExCP@O(mR_W+m&^O1+igVXK9<iSF@4cDmUWrtj?&$&eFy
z@gve$cxW_PJ?EbI<KwAzM*-+f{_x{HCdyLTtY>3An8e1=7QXUHu6On+*C$0GJiPB0
z;otUlB_GLpG80V4Cw7hYP49FBfPZdxXHI5N2oOYKReOKEjkNxncd1Z(<(i0o+&kTC
z`yd@nAB^noNq5ajkquA9CfinmRoCzhCp<f>b@?Lm6fl?0B=?%B-phG?NgcRNm9}Cs
zHq%kPWowy+yYcb%=~zB2YYNL%r<*SHzCVy`?6h{4aqw35wKq0aCIBgMF@MSSjDJ^2
z$?(F&zS(vYDQwNIiI1B7cguRRCD)j3EJVVI`RMKVYk|`vOabL;$60OW8fA;><l^Ek
zJ(c=$>UN;0TZ-<gp6Y3?ZtIq>+_3QI*sDXk(m5^F>Z(#yv`j4B<#Pg+9foEv8Yx$+
zTfa|x*p%>azF__&ole~Cx_{m`wIkms2$q`{I#Q3`**D$qxXm&1%5KY7eWVor^$V$R
zryKweDBru}>cT|T0S^lgJ7650XPmM3Zrp5L2rERa_WbU-!)fvai1r6VMk!Lw>4{?G
z^0A-ts(1#HD`sx4tZJpbxPKXBpT7IFj*7s;#lpfxr$B7yO)H!WFMs7swg36agn@kA
z^-JO6)t*Y!`kdEmksb~fCME_YN)#zzU{JwEHhYI>Z-vr5)^a9WztJ<J9-5El^fETy
z8*FLF+Dk}9DpHl2RHY(?L?TrgkzMlGFMs^p#b{pC1h-G0`Q2ZiksUH5xA(m$*T01H
z$*Am+$1nY0aA-9yl7D*hTe4F|YGKN@xNGNOQzk>|;K;c*PYi{Z&sGWnOIy<;xA5h;
zo)2;fCn3y9=WIZ7`LSF?0v*%G{??tvTfM_={WG`jBqT^23_yJU(*DwqBDeOI{d(oV
z(9hrLpT%B%`rqE`tFNwlh7Qt{O?=Sz`{T*3BO^~-efB?rS$`#miMxV$0A*FmvY8;8
z?5}5?xzX6SC;Ml~VqmSd@d1_9=o4u8@Gq`h8;ivbxq^6ju<F5GS$vh%KMHa+;-SD+
z{av`{#{U3zPyTh1KiH!Fd@PRt0<i!<Pu6D_i2wiqC3HntbYx+4WjbSWWnpw>05UK!
zF)c7QEipD!F+w&vG&MRjH!UzXIxsLr!~X^V001R)MObuXVRU6WZEs|0W_bWIFflPL
pFg7hQHdHY-Iy5ypG&e0UH##sdG@eJgks&7v002ovPDHLkV1m>t)II<J

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_settings.png b/java/res/drawable-hdpi/sym_bkeyboard_settings.png
index 5b6217aa0d374d2f8223565606551283690c481d..08ba18f28db90ae647f03e5ee4111cc29a2ebb27 100644
GIT binary patch
delta 705
zcmV;y0zUn&4cP@DiBL{Q4GJ0x0000DNk~Le0000a0000p2nGNE0RPjfyOVteCw~Ha
zNkl<Zc-rik|3||?7{~W1BE}do#)ydMr!hv9h!G<qBKj#J`YB38L`3vY^mD(&5@RW%
zU&bg)lx37=lo(Ogb9u^j-97hwwxuubcyoQad+v4jdA{6dUcFuq{HEqPAP3}t9FPP0
zOF*9I{RqS-hW`N60ZM_=pg3p`w0{I@2VH>9K*yjX)QcaWw?E#+Y%5}#Bmpr4T2-D4
zMYt#Q!N3GcfV#1t)-0^kJt!t^qQ6x@Q=l5C4BEoJy100r(L5Jp_oe<=vp|!KlPI8H
zML|`|*e4y7AD~0a0%F&F()ek{1}2*U61#pTjL&K2>=NTI@ict{2`3JN)_)C#i=aUw
zEi8f_4Rbd@vltvKpdk9fv*C1vlXfzqSwvWgIIRoJT~?qe!bnkpiQ<m42r5prOZtBt
z9ob|r#R1wT3=B()r7+j1W5nr>NaN-Sdm9{}f?;xAS|nl#@jLWE(L#pYC6wa;RjJ)z
z+hm0Ix->pR_|YeZHjOie4S!C0u0)}&#ijnWVa%7cbU+W^aKkWF{B{md#W1;B>K`#6
zPNaU1Vax+v*y#6NRF3+F@ShSov(2e99H(Bh<qd2DcmvRt2ieCK2zzTBpoC@TvLlA@
zu9LwUwv3rxepQczy#%+G<q0E)%$wk#<+YyrDXycI98<y))1d(g;(u#;ve=l=0a2Iy
z98uBV+bu?11w%NDeipRMI{*#&z2rx+1k_usGTLtFf|g_)y&u(dS>Ep@KWTAJu5L^v
zr;*Q~82VJBFj@6AH47AwzR3zcKnhASwE{KzZQlzT$0!VA0u%-G3L{QL(T;LM_y<2W
nxF4(>kOOi+4k!?K6&7Fs#{GXcK*=_w00000NkvXXu0mjfQ*Any

delta 1693
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

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift.png b/java/res/drawable-hdpi/sym_bkeyboard_shift.png
index 5ef01b8bdbeda5753aca1d12bb7c668cfa7207ac..5a22dd30970f4bd04822e15ad7721ac16df176d5 100644
GIT binary patch
delta 1433
zcmV;K1!nr34#EqN83+ad007*G`)-r#1}A?7WJyFpRCwC#T3tw7M-+DdSF^iWcQ;XM
z<JzEGHKHMnH9nZc5RF2LqO@S41#Jqo7F!TX@kI*KhYCWA(!_!fMQMvzP<&8os36!%
z^uazPf~e5;K_dP{cUSk%?RWHCx!A1r>TYtC9r#%8xifRW@6MSyXXdUV7!1ao#-e|W
zIi)2kEGjH2EGq0sMg0O_AVC38d<pRHi55nJ^gt}21-yV8*ovgMW4oe4p$G{cArfU9
z7#O%>x7&Z1nVE6m+5+hKeq;(|9>>7}{VD)G@ao*$-0g&fggG*&rKLTBtpG>@bX+ec
z+=z%UCaYue1(}(df3Vx_ps=v8ANGH%z<EF$32|W;#w4{&`YMSavs$h8R#jE~CWx!7
zto$DLF9TLU9d2=96~^S$O!hL77lbr4G_=F^PDx4009|7a2I}kUzk=-&VCHtR6{cpA
zmxwfxCv#CzQ6FsASVW=Vni`E}tG&Iw9ySMH1XQvU#-xaxqobqa6LLK=r>B3XPl^@`
z6L4XEe!e6zF>#*m8w`e3teEe@ei1kWC}ksz$q=cFM3Tso*=Do-v#_vmhgL>jAxV53
z@Y?=*Q&UrSVNU^K!!h5&G3*K^YX`Zvh$NAXjg8&t>+5@uM}qDvL@!}yWLsNXKNCh4
zG49F6#>REnUkOJT2!|*lk-UGnxOj`m5lNLw<!^3o{sQ(4VeW*Oi`jK`bzch$OkQ5z
zL)h|xgyV*R<BHNUiTvE$+%bV*b#?W9*m8h)5)mRK2&?Cn;^N|;g|?-or9YAlumPH*
ziaU-d4L|&iva+(D1Y-I5`M<)J2b>d#9T3EY7jrE;JNtK`kD8jAZ^VBu=0yn;-Znin
zr?$5CTY(VIlN;i6>3`C>y|jx~%A};E1;LeDT3SA5S2i6b3>-xmJ>)Eq)zs9~OeBbm
z)oNXyo}RwPsgj*D4-3yR5~&o01sxN%@`zFWHzy}2KQft2&!}2lT%5DJyZb}f(*c9j
zFd$Wwk{^=Z+1dHAPN#p{<Q32}G&J-b>>mKMY~KQI@IsKm0<@wLI?utH;@eHGPwnmv
z4h}v*;Pz3!@$vCXqobp5!=5UvtdS75m)H&u58pML%}>RNZ7AT)KSi6@dE}@M^T^0Z
z!C~4GD3H(2&fb)|Qc8|j<KyEQc#}^KOU!6AF0*@@xsP)b6BB=T4%?oPnwt7h>ZnQH
zLASNFC1+)2{bI3LjC#FZr$pJ?wW7d1buO3dLT_*Hb-~6vXCaoU;A%Q?pV$HX83+Vi
zeiYHdvQs=BkJssRy35PUbNc)HM<R7J-~-`D_<hV<ebv5QFkRbvdU}ckVT#?Y^jW~l
z_bt$F6nEOy)%AY>8&K+V4cOlQOg>6j2mFx|=I4iaLTu})KOf%kGw~?mCxt~hNhIc7
zvbfRK*48q9{sxwwa}E+@vHnO23yQ?~#b+MkREdPc72SeuWo5;PI`<Ficyn`;Uc?3?
zD2v0K=ZN>MudlnLG;+J$E_OND9>0;xcq=L@9>d)}MM!_JXti2>sLEcicXM@hbp`3v
zk`y<4Str54l#~>2aCfuz@;<&r;LIZ)*+QX|I7Rh2_YB*CP9#Q512;S)r2*I1$lVo{
z*cEFfP4wORO1TUBPZ=8<`x5R^3EZY%x;_<OTd?|3U|s>}@W#*ACtnzrd;@=opy!$R
z`s52klG}fL8op?5BT4s4N<eq(Z_8bn54obGImGpSa(6|K!{PX=v9a-eq*MmlvxTaN
ztlqP>w&tYzykiJkQAFS`M{3?!#_?B6)d6(_EXd8DaQ$)?rVzRLVLrtMMe{2tXJN7^
n(Lb<6g++x$g&nE<E5HCv3ikh^dNNG_0000<MNS1ou0mjf4k^Gn

delta 1780
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
WFf^V=x{)C#3IG5}MNUMnLSTZH%Qv_H

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png b/java/res/drawable-hdpi/sym_bkeyboard_shift_locked.png
index 7d36dcb34c06870f4672a2eda80a18c012040fb3..5664491267bfe10b0660f1b0b0474b99cc174e0d 100644
GIT binary patch
delta 1071
zcmV+~1kn4t3)={g83+ad007*G`)-qp1t)(4{YgYYRCwC#nm<evQ5?s)_GnA7NGn17
z2gT58q>xl&P!d!$alsfC!a`h#izYZQnK0-?oE=CQG%>Kq1i^tsBa18=1_#8DFlZt~
zqEzS~dbFJ1pZtzAL`YxzPET_$`Q+NWcklf^cdz&UToql{Oa8~?DEUv5EoO_^Vzz%+
zK}r3C7m!c@^)Ff8{?lS4<N;;C1vHQZ8)nKC-4qo?*%Q7)BvmyrF>$u8uI}0V{CpVS
z1HjG4%}F%!D29E?Re%Q^UtC<gUQ<)ENV`L!&^zpF1xJ9J^OeZP6fq9g&B3=uB9XV;
z?0(VS-u?pn&x2~<GDA+f7zgR%pwEAkM6Q%UcX#(w9FKxSK$R^gRg8mEIoK!#|2rwd
z;c#sA_4PeMzD7{V=UG-v<scg=XbOHWF~a3?rH6)w`j9^ie86crF%F7?J4L~&s;ccL
zW#IGqVw01TJvi?qC<hM9h;c9!)JY1mqN3tQK2iqN)zx2SXJ>EX{8~^Z<M)3i<F-=}
zUQkEDQIH~12KDvzAJ^B{FQc5JGP(g7QWV6o<>lpT6kH)v1}!ZuuTfSDI9zNuP^^@T
zgSZflM&A@8Wzf;l@f_uy16823P`P5HO1biL6pRchgWlfW$0)ZM_zUd@3YAj1(q;-m
zrWE0HIx~ZVgZEMXX;4u}H&B0w7*%o*oEaDxctAnO79+e~Z+v8A<TmOFfdiu5fT)y%
zD+vt`58rXS-6=Dq4E%oo%JlSf7wQZ0lUFfAY-eCQH8pjkva<54nNkKcD_B@qxFY(b
z6z;EPW@b*~N`CkgQU<|b@RjIYQv_CmX;N6$)zx)zX=&+dAQ13*JRW~H#)CVPRr-wP
z=}sgPC&tFcF6CQrTU*=vY&M(7Amt3vex-Cet;OT<WK&bqlkxHKmpGKlXXY&`rt%cO
zoVU(hvtasOH99)l-qX|bFyDgF)b2JkG|b^+3~cQ>yva)mYaqejb=hkk8LlL~$F!cx
z+r$<AAyVkZ#>O{nK7)Ui-vq6*Y=)7(n4{;&WpdX%a;GgMj;5Ft5lf{~bRpImDGNNZ
z*A*$K&9$|)gvd$BWYTD2mR)|MCZlzBcFv)Ly@xI#fXSq1ugsdJrB+v0zeggG6_IB4
zw^oAn+S*!8-+n6ny_at$ta<n`T4)pLrzk&<J*6$^m~qES(F}jfMNZ)SrB-i>4pmiM
zLO=BF{0^&&*{_joF<Z=Bu`LYJHK76McK$7^i)~`87#BH#^ILjIMJXK)hd=fA_us;h
z>Hy8z_8HZuW3gDA^7D*AT2f5-%aO{jWWD^>(z#FGEDI(16>i4LVoFXk&*xRFp7Z<C
ptt@6g?rkw!%oZE_chgS+1_0s_B03J<d&vL*002ovPDHLkV1flW35fsz

delta 1428
zcmV;F1#9}-2)hfA8Gi%-004G@GvxpP00Lr5M??VshmXv^00009a7bBm0000;0000;
z07l7cJ^%m!33hNnX8-^IHUIzsGXOK1Jc$4R1j9*0K~z}7?U-9{R8<tm|9kIqnLBM6
zdgan0FQrmJB1pMYK#9EYW@7vV#>5X{0<S)q7+*|CG%ATfE`O0|NhFGqfKkCh(}Gl}
zrBK?r_1yN}%ZHiPwlmW?L;Ip(Jx=~-{q|aWtu^Z$;JN+RjMXQnWjUw|M$2?!JVP#6
z$vXj{swY@ZWHhTcAi$x)Ku}Q7;oXFcYz}3@Mx+q^A>Qis=HS39#zvul^`w!(fQ=Ly
z{#g5QU-wAwRezYs!+{K&$`G)*s01QNq2YtwXAa%nJay|ly>Sy78U$60u2yU{Ve?Qn
z61w^3#(|?ZP87Jg`fEy24>gU0;1zKzl|~K|39NeDb@I($cg=9%LCY6Mz)x7O{R9HR
zgRYHR5=Q@`EF`e%;!Bqf|NQDi3jvTK*Lb<l%Jxkr0e=OJ0IF7*7$H$HG>vr*?7MvQ
zeurWJU`VEi)}?lQI@Pbb6xS$#pqIY6+G*r45Jjr6_NznR?;dPdC0|M?0sPi|GVZIl
zRHFo820^jwo(;ypil~PhFZ7*0Jp6(`rzZvgzBShQ`9X5t%|JneAfc-#vkGk9yojK|
zYyWQhH-87OZ}H7?WnlcWEs@zi`65ec5S*n3*iw-(a9Bv9^=|K(0|Psm7D|coV->6)
z``$~QQir_xT^AZgMO3kgJ1%bh==im5`Iw=oVs?mSlfylq^!vf<4ipG3G?iS0i>%bd
zNMG4}e&4tI^GQI8Dq0Y-$*X&!h4$(0VN;iyynl`~G8l*>jrE`HK6}uKp@u1buldrE
z>BOniolYs473z{#MMaUi-TBV(fxVAfl|W6C;_tTWuYB2eXA=^zAu1JQ<;WNeME-0$
zxAp9?N9%*yBmjWR@3#-^=eg8mlWY5x%A^{M!}zf0O8=8|SQG$A^YYg5smSQDr(Ky!
zk$>?j&oR)w^utYV&D)x91lOKuA8pK5sRX0yb4q8#g9Im&F@Q0~Idh|~y-+5U<=cT)
zq=^V1P4Q8g(?R7<tK2ypHsV*?$2zFVju{r18L{I=?EM25b}UqOjPDzK`*wWX%WJ8m
z^j#-9(KXgJ5zoPg4%cS{32)Z}JVq2YOn(4zG$NhqT`Y{Mw&`QPV+0xakdScU!iQUV
zid2IsxR40of`fw)g9q`{Uo2E2L$@CHj3EoR)Ljx1vK|;p6P(SZ+5v+(?JkzN$U3<x
zJV9=D&%*3JSx12^ek6bgf9G)InwVF=jHMrL9%{@%B7j6qs|YKv8scC;|9I!1#eZgL
z1QN;d*0HoKZpmzUJIG=?x8d3z!(*j%5!0gWuPx5Ho2x^v#9?6!0><d-kq$O*B_-}s
z^W7OM>|yJHSu?S`jRkF8SQRA5syuefjfW8d00eBSZ2B9_G7V#;VXW%UEc}~LSQtSg
zkY#^}ilkC1%r;yPOe28fmcarzzJKQ-2nP#WAR0dM9mAc26z3La07#S6EqBsGk!;wP
zrtmNi`MuYhEVo(2Ob!qQYQ|qP^zw~0Q;<t<!m}3ga!J5K^j_m+la32p7z{*GdR`>E
zW~wD)I|!g^y9x_q5HMlDfC&Q}rIIPlcnJksIasm81^9xm1q6bIh6Yv^R)1YhVO`bt
z9i)zL9?$LnVgCRUln0PF>@?m0001R)MObuXVRU6WV{&C-bY%cCFflPLFg7hQHdHY-
zIy5ypG&e0UH##sdMZ^CF0000bbVXQnWMOn=I&E)cX=Zr<GB7bQEig7MF*Z~&Haavl
iIy5&eFgH3dFf^V=x&QzG8IdI;3IG5}MNUMnLSTY%XO3|I

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_space.png b/java/res/drawable-hdpi/sym_bkeyboard_space.png
index 77518cc9361072e0158b7c8ef7dba41267bf4cd2..cd0ebe2f496a2ad911043ffeee11b49c2585cab8 100644
GIT binary patch
delta 308
zcmbQn_KazQBnKM<1H+w;-+7atGO5=ya(KEphE&{oGs}_du!4Z=<OvVX`6{fITX_BL
z*{UwRyPgVR2U}TOR%hJ)V8_GEX|b=cB*sE2xlKDuN>A$m12c~SKH?42EaL;>*@vo^
z-<|dC--`)97X8pPFrTqyTjl#DYxeHB-dlgL>+$jfG0V&}pBn#JF=f|p$E|<EO^dC=
zLjPQ{-NrJLOSSpZi;YS0$LAYm#kd&VeEdMO&t9CZL^9ggYh_q=%F$K+M`z?6bj#C}
zJd(wqX8!r{ed#Y3AA0Cd^!s{2<i@>)ce-}9%#RL9el&50g{j9!X6>n07X&9f*FL-b
r{WSM?Qx&qFM9L>Lm|l%;U}WIB>vY7v@@g_Ld>A}k{an^LB{Ts5@MMUV

delta 742
zcmaFHG>vV7WIYQ514CJ(@lznhl;rL1!tlSn|IB_MkF&rdvKUBvfU(=jY&(!(S%G6Z
zkTwHiV+P|{Hl09ia-J@ZArXh)PW2AD?I6&$f9A#0hxjDcw9H^-jcZ#qhn?>zZxO53
z=@=HX32RSudvWNWTs-p}Q+q;Vu4PXB*UZI}e!bscopz;Z8ZwYvQNR6?&YQ?tna%0<
zSGrq1dm0%eeWgj1&AEZiMwGAJ#3*OM+VZrH4o;4SuC7Ujp@;X0WzC-<I@iYf-kyl&
z-uU<D+U+N0U7TmLpxe*RqR#qaon)Q=oik3XhLh&?^6`J`oAmif&HMTn1^-LJtroSi
zO`mq|<-3Rfn!i2BQCT_Tc<ME4?vgB{-LW}Mw>`H#vJ20+bLg5#o5?%%=)C1OSa#<c
z%@qnbXRV;tRqgqTp~@)YZTg+UyBF5nKF_w=meC_tzccB~7xUovKH0);#~57FCX}^b
zxU<GuX30cG12vwlj@PHXUFqYys{Z74`#t|H)~xf^uKV~hz>2T=o$Ivq|9wA~2wger
zGN(9>;nTt8CPi+#GV=UU>dD2EnJNnX?)>SO+Os(|Q`TXkNT*OpvcAAfmgw+l=Ypaq
zE)aWPlc|4r_0&@pQ}*BQUB>LKxWI7^-}*O8^<P)Vny>znJ11S;JiAk3nsm?ix(6Ed
zA!S0(e@)A>I{4*ExJ&A<wf}#fecwCPPatdWo|)gL?%i2kYWVBduk@PJ5`o5Nc@z}|
z6+fmd(d%Bm=!ns=q{7c<M5KBTF37CoTfW`tgN2M-{~5FDKX2-LmIZs>UG#ANFV#Iu
zUWtETzpwKt=ERzn(}2lFwZt`|BqgyV)hf9tH8HRxmBGls&`{UFOxMsX#L&#j#MH{f
sT-U(d%D}+&@P9TG9l7}_nQ4`{HJHqE-!)NDor{6N)78&qol`;+0Fxs@CIA2c

diff --git a/java/res/drawable-hdpi/sym_bkeyboard_tab.png b/java/res/drawable-hdpi/sym_bkeyboard_tab.png
index 5db4cef2b0d0220632639ce9ad30a8311f644199..3466e127101007166179df2ea81967b68ccd10ee 100644
GIT binary patch
delta 963
zcmV;!13diW2=E7x83+ad0095fs=Jdi1Sfw3l1W5CRCwC#nN4UDK@`V#c9Y#^^Ifc1
z!L)*>9C|8f55XR!;-T$Pi-C%V2)&CvNv}nE)LcSoOTh@0wx_0eC`Ay|vv?4p6)Z^6
zek5IOn$7xNcq7vw&4z9_5i{^7yP3`GZ{NK6&+LR*mL)Y)k)<XpEua=q3+TTC^0<He
z@F+&YQYKlX(*rTaYF-1g0bZnlRFIeMiy%c($uXchqJuDgk_I{g6)0LfQm*9?2MYD}
z_CAEDevHLpX*iF9+Jr82HK`FOpzAsUNSdbch^ZonTR=RAGy;)4P~gKyY10rOnK+cn
zjiC^v+%iU2jgdS?5=M$e{$w=*hzWlVEDN3joR$et<wgK0WOOREXOjCK0@P8xP)-2h
zRG<$J58ns|gWCN3{98CTKzVdxgmN>fIZz-J3SG=*v*}bSbr;TKp!4X=6gfq7<FlUa
zu?;;Ei3Cm4R5O{(qhhgmX=Y~Tg#dC$$8`bm1XTpdHhv!lwF6LuMx8u6JDY#p+uQ3{
zTwHuc?d(#XDRzMv9ec^nb!xy{1Ik0)asj$5Dpo8lE#2(z?+>r6tW5cQzOR(*8acEr
zAca7%;dAulI$gs~$U&SSJN$lsdv)dd`uerLzP`t6YipCyX!Hl>Q!OA2F-idiK(X=h
z@q4PO=7m+<snylh^=V^c<34}1e`jcD=p}v^kH_D@`E}4`kdHWybw?$C;Hj=cQU;uy
z4mLM8uM7?jrZ5FqjU}cm*gYDUIWREr8p8X<NuciT?#~Mg3mIG`S~Yez#8HOpT4Q2j
z;yviLkV9TOIh0PP6Jujzx2iAb>FN29%jG6JJ3GH)TV*JAfGiF~k@|lL+9p$DCjjwL
zmM;_v@#@M%BJpl@b@d61vMp*qTn~^*26jY1c6|s(rM$ntzav&a^1fPLUVaLP*!??X
zBW-qpL@1M>>>6vO+jgPQvZI_#CbM&MbI%Fp8%?%hYWvKm4(y5p;K_r<ltxEKr>3W;
zbJXSAG|4hMFirqj{QZ9lx@>D?WaI(B9GmT_-oqDeZUGsPFS+XV5Y}NA!brD$A18ni
z;1@wK;a$BUD@IFr4Q`4xwRmGk_Lp1lWz7P_bFBoW;z#7zCf|l>1W;vaf>M--jHalP
z2<2v%AxOb6473P|zz*p9KS1oXf4<n<(o<+->Tf$}h7c)7-t8~#T*mhkd8DfM7@dod
l)4Q;&^?%vF2J~Bi0RZ^Fg!-}ie%b&4002ovPDHLkV1hkY!`1)*

delta 1078
zcmV-61j+mG2jd8k8Gi%-0033mVlV&z00Lr5M??VshmXv^00009a7bBm0000;0000;
z07l7cJ^%m!33hNnX8-^IBme*aGXQ;rpBVrE18Ye{K~zY`?Up@n990yCpL6eg?1zbW
zZR}(n*(@YVkdZ(#4HO`eCXz*<u#hOAp^NCK!aty+LgFXTAb&&$iUpEWBnl!TRwQsi
zY{jx2yxBN5`#m%FQq0<3cE@XHlnzcg(tXZ5?>YC}1OLZ=IOOS%*hGx;3<Ovp6-ZEM
z6ap9`3>KRPq;T=DSQHS_Axfu6;gbEPv{pQ~JG=AB6C$Ei_E_IOZ>ML!^fzAr`t$c}
z$>yyBl~z%BwtqckW@HRMb}JpoA(xF5IeW^*iy3J^pmDVZN4w5`{f3&I+<FLt2p}S|
z-%%&4njCU1*!>K)C)05tL6EKi29qfAgdhjq#aTiE%n*=08l-S{^0&vt8xQ98q(PH*
z@<ku6NN{lPp8jfHjh7#uyII)6!J?7D<j%i7_2*K!WPj?D>u)}~_(%0j?!#Zoe-fe5
zM=Me&6oTsMEQ2P`DQ}|o;?~Q;&&tottMm7D3l}8`AVJ~a<KuL#jl-hJQ=FL0Xg6x<
zrMa!*`oy*GCb#hLlu81*<nS52Rj!R>wH$y%yV*i+W7<(FK)3wWmlm0-eDK=~RXnW+
zK?;xjPk%FO7w^1k3cflNB;tC{$@WM+7uUSz{eJ%XrL4Pf_e|5(HbIetdu`#~M|h%o
z4HpoFk&YL3^M}sTT*Yg<pDp{6^lO6bPBkYuLA3np<dY(f>gxc9`0m)z&1_|uBHR6*
zX^(Fgb_h*hv&5i~;EQk9?j7aP53}p1TNwZyy?=e@%F@Cz&30c$I)I@={nCA^vztj(
zTba30j%z(uzp!%o`jzEU6)%W{K}7*|Lc%w8llrJ8p)oFG+80(nUi@S!Q^6w_MI?YC
zED^1Q&K{vvDYc?NJG}Ml{NnpJG7o5z$1w@N79TPs-8F$uWn{JF<sQBB<GZ)duJRa-
zi+{0$AUUjK|CKfbwDQ~2H)mGL53k-TY*MFACTS)OA0w8K;I+R#{a(EBV04cLO#(dZ
zpm+z4UP&w%g5uwoYdsUvCeOj+My(|zdKNP~&TkSOd@2zA2*Dn_Wg;g89pRnD#!s5H
z_Q0`pPj*BQMG!_o*j=<zfeayyrZzNWFMpsDJD3g>&~!HZP4&P&rX4Fvv(>s}$n|V&
z4LV}efb`%FnGTe&)usc%z@D9cVYeyI9UuPySiM&n*`Igz0000bbVXQnWMOn=I%9HW
zVRU5xGB7bQEig7MF*Z~&HaavlIy5&eFgH3dFh#@v1^@s6C3HntbYx+4WjbwdWFcv0
wc>ppnF)=MLHZ3tWR53O>G&MRjH!UzXIxsLao=3WoAtwp|07*qoM6N<$f{kqIWdHyG

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal.9.png
index 4e337fa0836e56404e74b1c9e250e9088dfc1794..49329f094894ae3cb884850ff36ce95bd394029b 100644
GIT binary patch
delta 433
zcmV;i0Z#t;0?GrBBYy#rNkl<Zc-rll%WA?<5QYUcK88ybbdy+Z)ZC4^dapv2x~%SM
zeSetFxDbSzap4dI4}6>ObLQLp1387lV-6G^cu}6bL|!6KEaG_{{2Y()dpe2Xk486T
zE+4-4d-&SzV6)wdKzHvC2Pl<F*&-C4Os6oOOhll&KQ|jtDu0!1k@b2FX_|^cGZaP1
z7Wr7MAWjldXa*~?TrMGsB2j1tE3#NDAP7TI<~V~Dna$_tdPy>!&3F+C4Sin}Y7Q$x
z6?1W^Ns^Aoya<IH*A*qf3bP^!*2}hSQQ|n}MIsEDmL*Dv6=p@kC<MbaL<z!x7YTv@
z27`epBdjnhLVrE)_4}gGjB>f0EkZrldp%KT1}owXhw!fJqR<Rp1Q$-X+ZDydUBZe`
zsMG0);yBK~B3B=1^SxnM68nb8l?-jZcDpT#g-eYUu~0<Auq5U^A{0_JO%%g4?-0R|
zs;Z(GhVc@4Vi6rzaI4jVX0s^*-Ayx!#bUNdwOWOGy($j1T1|vTqj8?W{)FfKERn}s
b$<_G-yCxR!kSqbJ00000NkvXXu0mjfL?ypx

delta 351
zcmV-l0igcM1Nj1wBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz
z8%ab#RCwC#n9UA@APmO~a`82s$N3b#_4XP*gGW!^gmyr-!+>oj+SnzM^g>Aa@o)Jk
z0Q)rB>Ok$~Xe-AFa)SIXNZ<Ex?K;p}v&}jT1Ke-7w?2~&x_`7SOw$C;ITnbjs-S5a
zFvftj_A|&l&(Vm8DF!M6Xb%M6K<u&rGO6*(0T%$0g=Qe=2O#n0ZpnWJLWt2gTgiV8
zB1MrH8fHasts=y%2(41Y)1Hcm+%<B}5yEJ^p;?n7NYQvhLoz}`g@hHnYovgL>sidD
zca$QOB@**Xxme`iJj+g!_Z~S=5xKhtm_bVZH3(@Z$j=;Ee1R2=yV6Uaiy6o`j!@S%
x8%QYb!yIXCE#+GRRB7d2K4LycRND6tU;xg=0|;54gFFBL002ovPDHLkV1jc;o8$lh

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off.9.png
index fe18497d82a1c7d9c1138230ffdd14c24b59ecba..46e9db092dc267820a4998ae1e278d65c04d83a2 100644
GIT binary patch
delta 564
zcmV-40?YlO1k41GBYy%DNkl<Zc-rllS!=>T5XS|Neh43Y5IjJ^`%b(~;(fH*TH43z
zTdm(8rt@EFsnBK%=^zCIznAQ?^J8~svKyc8Zyxgf;Xs$<DsmP1$0FTsmtGGCdOIG)
z=nn=z%6z_f+3o1*`I)wlk0M~~-F{DjK)_uDou{)IO{P;3Fn{*Lc1xj~8+VcQdQIc;
z*fY&$lcLcmg~MTr#bVUybUxb<BNPg`i`?Gb(Qq{KM7P(Ycsx$IT#hQ03S}}GN+c3w
z*|us&46Vp&wIauHJW;JyDWA_%qtQ^*>vhUzvt$^CYDWyM$a1+<=3X#)S&F3+)mY#}
zp;)92XC&Ge9DhSAGG8oIdU;_ynWz~km&<BtN-UM-Wx{*3&*pQz2s-upeNWgt{TQeG
zu|F!jRG5W<WvO;#j#dOIhAH%lGaS<9{$ACM^=6~wPHmVOtq3}`In^W?aSCfiMx0))
zR!fv2&z4pMQ;J<L36@DKVmme&rXh-DTY3?TclN0eNq;fm6xNC$&%YKT2@oR~47!UT
z&#SeXD2SmI!3PTkND{=*i*Ug~X_f>>0<8!-;oBfdyWRd)<m?41AHJNDw0;mdlR@Px
z6bho?^rjVQvPhmgOJe>;1f6nxx{|~&&0mOcC!94U!IAMQ@_$8e6-cMkluD&Uz}Sf4
z_xs&NA}x`Kx(wlhBtbHnR57%d@Js)exWvDbv*#UWIS};8Ww3Yv0000<MNUMnLSTY?
CBMSKd

delta 521
zcmV+k0`~pP1fc|wBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz
z!%0LzRCwC#Sj%q0Fc6$PiWER_;)WVTIhL>Bujy~_2?%lGKte@A;;q*zRht+{<rsXx
z(jH=2>&fiSW;Z}Pi%cDOZ8<W<;lq*j1o8y(Z`CXo3%t+g@PB=K7+0$mK9<Wrdtvp^
z+iZs2Ziligt$+xE0MqFdVHlz)ipxOKG*w1qr?hyUrvUg85Uv3!PA7;K*hrED>-8GP
z;}N}H599F|-ELRqK*<0qFIod4<N;yGMwVsRZnqc?hZv1U3e0A+K|GnL(CGZvfRGT%
zOxEY&fPTM^D1VC7Gc&>=Iq&QI*MYRa$V;b#LWcLZpFk!j?_XkE9~whO27>{T{T{w#
zftg@`tU}Ha4x7%uuVcj2SQW2v%o0)g!3vqk{K)hC=ge(JBwABO_(EoaFYm~3FbjLh
z(7A4ira96^4PhqOv|ZG_RCBYPYr;qyb>!A+R!2xEvwzA6HOUb{%It=Q+z1V664sh(
zu7`&1CtqVA{CRdlzK>*tYKdgIQP%knzZ+<BuChLo5qDJs%RqGgpChNUKx#R1k^>f-
z?MbiNF4lnXAjI>CEg(GH^BvXM+LeE3@N{o3=_AW^#H;Ro2`~V<4SC2?3d=kI0000<
LMNUMnLIPldp_TP#

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on.9.png
index 00aab3d5af5cb97ad0bf3989b2a6f027887a3b40..ee60e48644ed6d2746ef43f75005cedeb864a48b 100644
GIT binary patch
delta 939
zcmV;c162H`2EYf9BYy*jNkl<Zc-rll+iMhe6vq=oZl*7N7P?9_n?M4Rq=~ugedo4w
z-JPA;%j|Blxi+qsWV739Awq@vpy0C)eG>G+R@y>K`ykk-R!~u}FBSb;zMkI-Vx;b5
z#AzsG;KTB}Fz2(sIp-`p9UUL%LdQqE(SC9uav<{Gi*$AphkrV8sOueQj?J_6J&7a|
z37p^D#8$oTnff--*hZt-K=Z2xzP!+U0~>EQw_EGHz`s}K&BWUJI?9y_ijLz6r{thi
zDWS4hMs;NYD_>NxR$F?_>7~|~%~zKfv2l6>-QC^oMc7R>U5Bb^p3n^)Y14p}H&I-$
zvA9;i%9#>Y&wrM%TywBM<6^~zRWMt^eTVzni`cdeMNzz=D$sQenXG|AIg9Fg9_yPD
zN=pGa)lX4c9;C5KGI``36Hd8+em9Y<Wg#WYo{$w8s-eQn85G#U#+HuD*N))MF9F<t
zIEY(625{-hXIMRF(P?GjEEI5fpzqzp-7R98CL~GnM1Lxkf~qSdqSLpxaPjgSe!h1M
zPhJG^^koo_{|VyzUyq`(lOWM7J(@fQKIv~SlF4Ksh@vM%l94qTX<LJ{l*PB#BlzRd
z@s<RG3Elf^5Ia{y6c#Cm$~kutBb^4v^PXVkD9IwUj10SMpm`~WyT1?O!QUtF`1uh2
ze0Bo2e}5W6tx<&K=*Sf<_eY}}29g}-4W6Tu5$IGTIu#Y=RU6-2&EdP-C-K8?$8h83
z1f2$zdDVnrDahIx_he<I7^kM@l_Zx0FYzQJQZTudD`y(3sDE8Ut-jLA4LwWAt<ri%
zM_+$$dl5xd5sSw?!(<X%0=&pUQUoYzi2|pflYf*(pNc`bq|l?JbyZW*+v_4CQ#nSX
z(GMaPi;+-_gyP@?CY6LBC0m~yPohZ@j>jlQ3OzkN?L{Oi#c(9@;Y1^dkW?f_a&N)L
zY@V&NDsvSPB@v-;$X8fmyNU>cfcg1(U*W0bT}4=5n4O#R6&Azw*O&E$nb}!iVKH1q
z5`W1gPR-2t3X9<`Lj7QRdfHdw)OTD(*ruteDPLjz=HEniO|UNcIc@fn=zBzV$*>MN
zIXUSo5o&y{BCPvO&}Kgg??r@d8lRZ(l~6dm2NBvdK0fX%p-|{R<bNzOLoIl0Yz(8L
zqrSlI&0=(Qb+s1>1OgZy9!4-2^o5a;kt9|O*FWL={eEOWUfS%sUIBoCIf|!Y8D;<g
N002ovPDHLkV1m8M$CUs8

delta 784
zcmV+r1MmF62c`y)BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!
z$Vo&&RCwC#SnW;|K@>fA_JbA>p^5S1hcPKXh>;kL#s{cx;CuLf@)iQoH2%ece6)qO
zz`8qgy)!KZ+l6)u8&~6`(>9rzJ7>>5=VoSsyJ>ve0CZP@ZhwnIp&+d=K>Q+r`0(-d
zKg<YG|BGncSI!a4_A}WvwOS1?*4Lqwni+($K$QJ^iH2o&WBMSrx3;kHY2#)_s;jGL
zHk;5|X9ht^KuGs|<+}1{_?Q-iPK^8~RI614L4Y`puLsiYc3o%AR$43oyRjd52<AM5
z%7gEF4xj~*7=MHKr<ToaPvFVC8-XM;Xfm?l63oh_!Vd^@C55ouM(^Z{JkW_SRl&l&
z=Q3%*#b(x^Nn$lNml@fxK@Bm404SeOnm@ziC!1J%@8iM43K}~J>R&%&ckdnIh%Qq}
z7z%d`2n&U_XBLQy$WEloD~EXbD#X)gp&MFS@)3p+PJhpuIPI)}H2)^#bRaV_LW6a7
z{o<mJ`^(<Y!Xg)}R6LZ+fty1q@zYb2kr79;wyuB^V!QnaM~6Eol?;NA5JimrAD+0e
zA{y*LiJnHykjh9_$Jp6@AmWTjV{ezSz4->MW?j;BjKhNpzVED|b#(5W<CAuoyt>Ue
zBf>^jMt^WoG2^~YI&AQ*K97U_x1x;@(RqY+OI*}BcR(T5&4rQv1IXG$J3y{(Bwcil
zdoFKIcfwX8T_+5WtRW_7WG2^Kq{on3tF;ujn4B{%48>+p;_a`eCo?ij9l4qwi-<Hi
zE79m#(hZB2%oMI+;f&c}=EjrHooVq?Qq!j|&ws{d+B(8H0~wei7uRHy(o`BL2oP78
zjLBIerr3<|n2>TlvGX;jc)B_^Yh}Ir)ciq4it8HW3?wc7|F;2u&ua;L`?5VR!P>)8
zk|blt(J>&6MnjJM<=lYS%e~!W^ln|0cWCym!)f$!&UIw;>Wg0j3;^|4(za@KTp9oX
O00{s|MNUMnLSTZMC4B?{

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed.9.png
index ac0bfd3c1e754d21c87d5e6f7e9ba1e93153dbe8..c6876f76ee20bf3a71a361eae57580230221c200 100644
GIT binary patch
delta 827
zcmV-B1H}A-1knbNBYy)JNkl<Zc-rll>q=@-6ovZ}QodL|N}#0WwbC^6ZdP{jTB3zz
z5JXh;cJuHpn1_m!dovT_K*Id9S>xMdk2%-c>eA9;KC-kx&`;K{kzXVKv61!lb$Nb%
zmbbSzSFf+H^78WHu2~8#jQ6}qB=V)1zZV`KALZfULGJJG<$w0}R&H)?<ofzrCX<P&
z(87Q<o6Q{i>FG%VfxvttcXxLVaCLPh{eEA%-L70*T*&$Pxv9{?fCUpahJwN1d?Pr&
zyu5TmAg8CNa&mGa$H&K}LJI>HOxV-uR9074=Nlo)Ua#kbKw7PqG@DInG#aKt3j-Dj
z!R8*GM#kf@bbmS>_Y_A*M-Eo2)udXjnhGrp%(UBW_ki5P)5vHvlC!fj7b{N#tXwWj
zsZ=r*S{Rst37c8*G(rzagD0rh>kf2qa3IBE(Nt(*kc_6nJ$xBq@!{d26Z2F6_xJZr
zg%$>>z+_f@85s_TE<&QLR4NWsC=?{0&zlM@3{ru~+<y%Q1Aj(zND%`8xVN`wDzs{Z
zR{J)>BApK+C0>BJT+UQzVZhQk;XLs)!Xn)*nnpI8mEGN4Q=!#VXf<q3T2CV!I4nk_
zX#m{W*)bJbO-1K~bIQ{QZgoBwG~xxgy}fNJv@l@N9$N0p2qz!CWdCa#nM_8~>9ncP
zYAP^kIe$mJFC#i1ng+mBDrG9PnhH$cMp&ftftYv!CX-21p@qTF!i3E+?`ecZIv<FM
z7GNTgFcn&D4@}s+LOhMINR1#ST7dC*+*D|_J#1qJ_A4VFF7TdVF(Sl73vg>|%T#E!
zJvy-5!!r>U>5f56v;a3ZH%*0B+oJ=^i_g;ti+^;-ASPOXu~^JhXtg~$u)I`PR#xU4
zVG)ZFAtqXY(P-3EXth1e9Bf{EzKncMgm@Q~2y9=8{A*ahyK7*)-!<IB(+KB?o~#Tk
zfbSmhFktD)$~}A;`TRA2HW90((7yi~zzfxv5e(?C@-&NTjh?Qsc>^ymFV8o!wzlS`
zeKccZ!xcZ6!{P9^3Wo9+-cTsy{UiLR|CacP|4Kf5{s8j6hK5jv>2v@9002ovPDHLk
FV1ipLig*A3

delta 489
zcmV<F0T%wz27&~TBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz
zq)9|URCwC#n9GfXFbswb1Zag`I8y}m&<HoKbU`B=c(dbZJ<0|aJYY2JY9d+DNRyv0
zwi9dsWX60}z>yL<%i+RJ#s}mB^75%k(-h)32Bnn#JxvqL^M9=E&;uMto9ntyy`m@}
z%d%~dJkMbq#~&sE;(4Bi!43Mp4@r_h+qTdDDSKhlG|+V&48x!ecR*e_3W5Lxffk0L
zo;N}8fqma=Pap`+5+LXi(nkneZvjG{KmY=g05Nk7HSMtgp->Qj1PHCAd_g@Hh@Grb
zAmkagM{pr|Mt>q%Y2MOOtMByhSlV{DMqucyo*LU5(jH;u2*KF%8IRbyY>!+W8di>6
z5gPN@vO{Bs<E<XK#i>~fi&SXLu)qBtIdp2cB7ZhV*dVVYnPjrgckzhBh545`vRf)%
z4f5N|PwiboX3cr_LNjd_gi3$Y%(~)C6;HhlY3_pH0%G%8m#E^gg)m`Qp`muutgIyZ
z8iHY6@pWD6P7iw;=}r$Jf*{aZsJ#hNmL)_{BoY=I1_#1aRi!t2$8TuhtnK!(gG<34
f&s-eAF98Mspz#+8-DX;q00000NkvXXu0mjf9+KFD

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off.9.png
index ea2f357895aa2c321234be50fe45c019bd8eb31e..1f8f318d11312b86a0a02e49ddf83c1e836f2c53 100644
GIT binary patch
delta 936
zcmV;Z16Ta71-%E5BYy*gNkl<Zc-rll$x35E6oy?X=;QbZ*|-q5f(BiPBE&>Zj8o!l
z;%uA}W1KZ{Ubt}p2h<lkeZK>@>2A8Mds6{vFz|C#s=oWzsdG-1sj8~XN2)3a`bvEp
z`8M(&8|m%smDkr-`S|#dx3@R_`Q_zBo}Zt~5_4g|g8BabE`PCD?4M?S{^9BANgf{`
z<@WYgZf<Vm^72y7&(Ey{0~XAOhX*xRQ&aP~k-NJ)xw^WN)6-Mg-`|&=ogLZU-nJ49
zSSKeZ%D%t9m%6&T&yC<36MK7mlFepieSKXrnT&4@4h~8n5Rm%%dTD5Akm>1Z+1=e$
zHt#SRA%q792Y-^w<rKKIv?TNM^S+cwB=qI2t*z44)uqqI#zt9NThqu~UtgPz5V}I4
zAR8MSY9gIZ%k1o|FLicyN-!9do}M06I2@L?wl*0V8BzAd#f8}jiN&6>C5wxTl1imy
zW@g5hLZOg!badzwVT8y`OiU=-lMx2x^LgDC!VGw7YJbX?cwtLRi@v<OyIY?`gsmZY
z&(6-wMi@kXtgf!=wvc3i{fIf^<Kxoa-Y(6}%^ID#xjALRE|p4VBMhQiR#sMYTUa4b
zzao;$%gY)CSPKga`aA4mv1m5JpslSfO;lj4FquqR$u&mKZEkLA2^)<th`~&9Lrgi^
zXl!guS${-@YV>4;?nlLtsFRbEx+2QXMwo#G6ZY}(vDwJc(UI;eiApp^M@MC7Xvj*K
zfd!Ll<Q=uOwPqs>c8vg`UE64Qcvx8^Kb3QMcxX04dne23kZcPp8W<R`5@ukLu&{ZD
zCnJ;@lh|7z+#hTdkH?io!oudfF&beIgPBBr0Dp-_qgEm+u;@v&1<ytp%p~#yNPmC7
zm52%~n6w2?M!1Ji?=&*<gB5Xov=L@t!Gz7d<ZnjgPb1VjSx$Zci9{k+>g(%M7EIV&
z1&k5FEe8~n$PXYK<2E8Hu;{R`eHmdA`2obe;FK$(0*ex+KXE598YwtN(vFd&V<hHG
zj(<2tLJrJEVaEupgkvP-7|DAw;)D&?xMvlt#=U8kD;QJ`y@c+{#miIGR61E<_)b>0
z#sAt_iA=d&)ot;x+{==uKEk2r-ba|oDk^y~;y&W(^yPNuM#MdRIX!IzgDP|nJ?^d5
z)zzOHX=-ZHFmg5kq5f@8Ul_1pVu*Jb{~-zg>aQif;=7XHK0g2<0CT>=PEv9J0000<
KMNUMnLSTYG>B)}(

delta 664
zcmV;J0%!fb2d@Q?BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!
zQAtEWRCwC#n7gXNKoEu}F<uZ01qH3OvG4_~t!#W0pTw83)XG+{@g+nX1@G4!|ACcd
z&*tVPXyL$MBFW^Ne`n&XMDdtw8o-JxkST{vUt&LyA4ue`>3{e8)a&)gaU6O)9_+5`
zvcL5J%VM`}n;mh6!yyd@1Amb5cue>Eold6{-EKEN28@yHPk>Y^#mQx}S;}NG)a`cZ
zd_KRfanzeGmkaIpd%g(AfQbVH5b1Q9a=9E83I#s*1-V|Ye1Y(HK^BVz&1N&&Y&KM>
zRH)r<Q>|9xWq*Pqs{I4Og8>6Igd$j;D7M{hX+ED*wOXZmz0L|xr&H>5I;;-j2ZA7b
zJX|<#imJ$JwW4ylOvPf6&ruhsk>zqp`FviR*gp`_A*x3)NH4lgbPj3*-+RTfy+B0k
zzT;5ics#P2$R4$ZE-aNwuWJH9<adYs8O5;-jYfk3)_?0Y!!(;s-*-|XOM}`%tF~G#
zZc~7W?u!hfW*OB)`-}Goz)-Yu?If;9P)wa^L3HbGYVxw^;yGS7Bmv_0BkFibsmf})
zH0lzCQY5LRiPSY-1si9vhVGiMm7ZwVB&mp6e;;dKxg&KT?zhy4CBvvPezZoCF4k~e
z<Kd=%6@LW9b2Rubx8!rv&65<D!YCp(Lc%fRm>Ocpj<}&fFgw7-kc*p5c6xG53`)A>
zv>+IAWr#R7SYj|j>`)-P-H!J&n65DV!cDsds)!hXI2;Z<I{Jc)MkAgz#TyXH#07#_
yNOCfn@aH%Fhennz+h+!ef<2#Uso(txFaQQ6KoNIzCF%?S0000<MNUMnLSTaZ?l;r`

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on.9.png
index 6195ac0d4f52af9ae965d5a31e1ad9b88f1e3b84..2bb7b64f40ff6ee1cdca6808472adea094ece529 100644
GIT binary patch
delta 1274
zcmV<W1O@x72aO7lBYy<cNkl<Zc-rll%THrf9LHfy2;ni0y~#Mvj6`>C-S{7{GHzVC
zF)_TMyj$q|U1*_~K4@v_`vrwzh!7}rAW;)%qKR%a`nP;N-!rLki1uE*L^jjp8=7*@
z_k7Md-}5`C?dZ6f7dmdx=r;8h<Soem57OBwbf*({-nk<28Gk?L|22V(jg8^#><kwd
z7icz{@_nPx!0G9!CN&yDXARL#=)8gR<{6qV&V}C#TwY$vzXrq9zry_W!O6)9j*gD7
zx3`B{t%h>BjAF5<Nu^Q=<w^<FS{b$73U=yM?Cw=j-`~OhvpNo*Kg03yk%a8-?rslq
zczB3PrGjiWi+^M?iC8R#NF<`FXf%pgJc>jzj?{JnnS2ttQVRKU3Wdrxij^!%)dF_w
zH8Id{(BI$J9)vSNh(sa*MNtq6g|NE1s;W>Zi1ly?kysdsbOfu40bdP$gfG5)fUn0s
zMl@+bp`1avTExM@KJMP@Zx6!d*xK5{#>R&1z~}S9?SFQ+m&XmS&x4hq59^UtgySaI
z{O_Xj{2|VNc#M4gA*`PFktr(3moljD?cm=1{;R=#6NJkWkH@jLwk9E*PABYkds{gi
zcDUS5_yTT(6hA`I&#-^`2tWQlfS>*tz^h*eP(6GPvGfpf#k9yz755+9Z4bh5G8bGD
zuh%O&aeu&Ov$d7oZiCb1fY<LrFziD-^EsL?pGXLbK&Rh5My51|Y$2r$gvn>{xGbD@
zc4V<w+RJKz&2ELu<3J$j#^$yeyT?!P{Vz}P>bDQ@?axn9KKKyXl7e(Lfl9TczBGkG
zLFQv+WkoKF)oR7^^0KNd7BlP)E8IRif{G96!halcyPsg^=n=BDPm!(I5#LgfOvO<u
z7uCa>&*$ZC2?PRiSvcaQr6pA@n+1$jz&I_hVYoyo1*vQdn`s3~EQoL<gxF?O3^uR6
zeRH`S!r`zCDwl<$H5!eoGMS75$RvQ4V6iPrAcw~ar;y8QllfT*2B2(&WgmTgDj=*O
z>woL(GN@b@j&^ZzQIm{DApvAsG72C8Wm$q*$YNcF!)b@l@0H%{qqn!WJxC^#kvoP#
zHJi<HwDa@x*V4iQwSa}i*CHG<<Pr6T-rL*T>LBTK8o^*t29>ix!`azcT_PO4=*iv4
zK6-k3)Is=g3xp;!Gc&q0H#aA}7=G@?RDUX^4#M)z9m9&rW#Nbn27@jUhF%Omz1fE*
z5Wn9q8!>=1nVOo?rRnKu>BaEVo2R-e2p{6ZY{Y!fWO8y+mpCi*VohRM&<w(d*@*d|
z$;8BjE^$`qMNgImO(497csw3i$e0g~h}TCwA`HFgN$<_g&3^>JRS?z?rkwep$$#kR
zs4k6<k4rCl(wo-|)fpkJ%jJ@dm=BtajEv|KXN6uSlSz7C3xtiB51I@Q59<<Vg<jmk
ztWUh}sDi`=h*N+V1;~_WJSsqjgqa?V2oQQL3J`|?iE087(?)92a}*rS(9n=B(StjO
zwS?7`7cWh_=BC3+k86juRpS3%S#vov|Fx>NN<6*jskyT9&}-dC*pQ>paxrQrdeDoW
z{C1$}^yTfWH6yLlm#3#5(Sy6Nb?EU<+|||99%OKEP);My2AXjH>pgwxK`(j|h<&Jj
k3BT>%M{eUsn>Sv60==Y(O6~aVZ2$lO07*qoM6N<$f_B)0vj6}9

delta 919
zcmV;I18Dq>3akf^BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#
zPDw;TRCwC#n7eM&Koo}m@r=ER0}BKpx+pXhNC^muH-Lgr1PMCcffT$(cnCV`6ckAn
z9)L2DkmwK*f<%#6doR8W=S+51#%r%l>=j#J<;1&6eCC_~Tz_W9Ks%Ri>Oi#Rs40ho
z1-br%WUm*mA1;m}s`acB7r%s<t}9a!TJukJ)$Hu-V0(KTN-3miYD}Al_1}Svy$b^+
z;80x%GObhW?d@TA_w8(ugM$MkNrJ&(fH;oLXNIW<Axs@Q4&TKX0tSFV97n=)J-Dum
zt*vKfjMC7IMt>s&L4e_KXg)Jc9S{p4r30zhNCoLkK<FFYC8EfKzq~>)3K@=RkSK}_
zgtfXLtb!v2lq;DA=jUH=eDnc9c!F+s9rrh%qkH8JqFB%vBcs^NWaWVwhSji&aCoZv
zGlM9XB~eI5-_h&8$K$6Gw{EZE+t)LE`TP#P|AunpDu3c69xH`O;!c6^?0Il&3{|Cw
zamZnCG-S#n9Aoo=i?wyn{H@zn@Vp_;ejH(?^9Tv~6QV*9TOoO?T=g>l>-!F_U6+#*
zrX0nMRf+yD1)b`8eZ)GmrE9G!H1w27)+A0K^gW!Ne!|jH3fB{qYZ|9NNgdq1s6w**
z<O)M$dw)mvUM-10LO>CPC+JaCoW4XDe8jSUg0Qznj-Q|(QVI$7f6>&kEUkscD4q~-
zq%jDGIM+Afue?GOD3hF{VMJkx;VMarq*EbkCo~)#o*^Y_N|w+-ag<O$>O+isjC2%r
zYYLB+6Gi5ftURDLA!2TxwQcnbq7;9o{E)>y3x7fKYSeA<*>X<ILSvhqV*r&@rTz+&
z^)jKEsTL(LuQeR9vPD#t^@Mz=8i9<TpB3uT@@-R*d|RjmQkJky6{+&4>d4qONbRlS
zycEgj-`vZ$Do4u7S1(GAh%8KA#($b4^G?=!Ra0V3UlmmOQ-!P7*hKbw(^n1|zo?@K
zFMm*3le8mmda;kJnMJS;2p@ph?CzZ(zHFYDQ(nd=pCF4SR|w*H-X9Q6`-lbUbUMa&
zEs$QXXU;QxxZ<M(ThppxRjdz&2*c1ERc3<h@9$${V`I_*lY$-hWkJ{%PxA2a(A*dC
t9UARr3uY_K=5u}*jhTOYg5LrR07xM+RuHZM*s=fs002ovPDHLkV1jmntB(Kx

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_normal.9.png
index 20f3d50878abe67fb74359fecfaa4f9761389e65..4b1a78cfb7af2a1dc17fb4d1e419d3b54be045ed 100644
GIT binary patch
literal 1553
zcmZ8hdpHwn7<Z{7$t4aFacmDemAh=AIAp5DR;F4wLTtI;W;8?zu_NR%xg@DHs!bXh
z%kUIJ5;K>!4!JKnwXrtISuLHO^T+pn&+|R+@4fuq_xENTg&$PhynVBjl$7G(Lr!ku
z7a%?+n|=}BuBqLPQc@d-4?8)y$Bix&jlexmZgY+<C~1b41A^RlLaue)=&5sL0C5cT
zKgpqgC0+@2);`nGiqfx8*;<j~o_RFq=;fSh*s<dz`YiX+8%H~JP1|4HuHgGUL^8uG
zr@8HR;P{!&-1f%R$jP;_q;Z^!@Wh<Ej7e49f(@GX%*L;FcyO#C+*8jk;p_u483G1_
z=SxaTsM&h<L-qCbX!}HwJDbDdoJ4hRsWbCwy_6-Z2}kD6mO#R%iG_vL1Og#XWK-YV
z?1f*NKmK8f%SvT3k9%g11qTOfoD(dTO(lfWvZ+003bGnK;HFH4DpKdmZlWod$KwSA
zG&6$=uG=ShqfjVHOp9@{L9&6*d3#@D%bvF6jcQ;euf48N)n0UTeg9b(RuJ{W$jHde
zCmQ^^{SXKya9H(s#0IwI3mbG%s&q}SPR9kY^FuH~wWXycl9uI)KxlSPMOAp*AC*Df
z@+NyC%I$jJgYLyl`!FubYs;CG-T?p$U;*fagoKAEqr#9elYE##d`L)7aZwS)5Cq~i
z0cYV)_;qS%-yZ;L<GZLrtK42R0SE*x&(7Y3Mm2hQ3ua=v<?G3mLM`+TC70p75#xK*
zYneC?LPuJ9`hpW67u4l%L4@7LU4>U2R93|(rM0I>cr>S$4Ngoj7|Bc)i%4(+RIaYB
zCP4)l<*V#Eicj0KuO)Tf8qE%7D5W|!`j{1kVkUDQuA}EFDk|I%2n2__gtoP{wS?1X
zGz&JHJx7+WYdS@V{JSl1ms^H&r9pWgG3oQC$mP})IW3T~o}J5D-aB;bH}8k24Gj%<
z-vDCQzO3dp#lFA8-V~zqIHEXna7m=j=Vx&mqe0QU>E3+p3zC$be^a68?Z@ZS6IXDe
zd1ehMnDsz$?N3x}4pkEI6@O(_1Hl%L0+MKY8cy3PAtZ3F^))?SU=eh^89V3Jmc@`1
zcd_HG786ONMNPpbCY}-^Au^KI5NO494Por<L&$CRv5T*B*24$TI}Tz4K+Ju(<#!_v
z>(;vyKF;~UuvqMtGP^`PW8HZ*a`Ll~mlCFafnL)&zX*VrSkYSs@GTvu66Oa<=f9&d
zlX6rSQmBh2Gdb;M*apeiad<a4GhXaf{C1%D>k2Mca0kG}N1#H}u@2C_QtN>kXP>u>
z)B$(@1L35}ENw^}0lH`K2)|etrlTuiFl7FKAqhd3P82N#ev<DGr{pPUnp|oze9^q#
zK;ux9s>t>wxrTO9b{yxJp1)%q8jR=~+g1Gxu}8%X&)@l2Ezw9$4BTf_B;ojDCC)W+
z)jTsOUUTS=Y_PclRXGTw{<3^AxgP%|<&xG<BWoX6qlX;03~ts}+z=BWhdn0DSmasv
zbGhu@O)MMUk13mp+ovnGTi&d{P%n$$v2?#YDPi>3IVzo(*6!PPzRd$&dJbjg`>p0l
zOqrEm&}dbveyC7ZM#QHhW>m;Hw(kDveqU02L_|a%B~7CF?`jZ2F|QtLIANzZ$xmlL
z^|P}Q%==IG*VcM=bS}CW4p7U#YUe+hwaoLc4@%QcV+KGrs=vfUD9xHJ3|KRdU~dX$
zvG4n(X`aDZ<K{z@p=&A93WgH4KcA>!S`@$xz*bi3%r;I`qs~yDKKl)l%u2~}2AV-2
znsLkTt|gKGpV^nmuDqI5$JQ`#Nrq4;Y&}t9MWIks5<g5p{R0C@*+!<Of~y4u>Sszj
z%9eiGOYlbsZ?CSFrqaGpmOL`I@;T&r<diKjx_QAybbD=h4e~I0MeP&4MKpFV%uu}Q
Or4B>kP7fS?F8&J<8VPg&

delta 1048
zcmV+z1n2va46F!{BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#
z&PhZ;RCwC#Sg~%@KoH%veJ4jmP(-4l4i%z`f<#4?hMr%^C*)U<Ql?2og+$7fP*WkL
zKsnIGclI#Po^d97UZ3xBra-LpwDD!V^Za&pc4nR1O(XZe{eP>?o4=nhUNc@Y@{#S%
z8DAOKj9(#<_ot_)?~ad;pXGU8@pG9ZNyQ+BL+`x@nlJFa+iQv1p5d#i0-W>-|0|u(
z=gHO8)z7oDvrqhdf$^D{<M8O{=;?26x3{+i8!ClF3m8{2fEsP(mEV*EdLht)e@nSd
zVGB0(T}vdJ&3|UaVzDTBFchH<MVwV7x|i?CI8lR)A{9Pzxm*^;K3O8^-Q8Wq1Mm_i
zQ35Rq^nJ?`EDwnSWR|C$r@{|xvrCbb)gS;bU@|45OW~VF1AWAIC{rs6BGe4*CjwPO
z5t0{ONI-iv96poE(l{(B8O)Pq8A&vb6Df*<WO=B=FMrnhN1#l-G@?$u<gzSliBwFa
zLXQ?Yr>Zje05a+*8K^6BM|~s%2{<g2Da*1eZfxSLon(0Hk|C1yDgrQ(%BnDQNme=C
zJ1;sW;)GCCk%WmXRTU)?s<F*6qJCR{ZCcy*?66Tq5_VE&u>%tNuD78dWMuxNlL-6*
zz^(xTMSr$u^6)IEw=e9(h@?tF35{~xv(KrGsE^2*phSi)iQgbytRu79i7H}9kagA_
z=Bo$?wF?N5ZbcCMBm!14aObUR;(a0~d|VMFF(MIXKD0Z;iyEY=j6noysEsHQLt;!t
zS{uEJ*fx?PcK&W68u>JT7*UZ2HkAlTEJ&>qqkl2E&rwzs@rE6#dSlhIX72u_k)Sgg
zkznrbfM#kI3bV0o55A7tr?n9cXkkIMi<37b6wIH-h|~imoePO<ofugnm|KgsC=m=o
zu7F;5ja{Nm)v=kGq>9ekSW86fj>ly1hK#q#v(Dd3ga<faI-OEb{XeR%(Nqx-BDJ09
zu78<KCIpz`ih`Xq)L(p9&u9q>CDcxI*N7T5b0jZTm0;TqiCYh9UoAP2IK##|MV!>V
zPRm2Bdn3xMy_PT+HubFl<`YHYSv)iKI#`y+nL>Q)`w??tLqf#ER&;6dJWtTL&`O#z
zwT>y3sN#i;?{iw?q)zTf>YkT6X(~+*<$v+fNo;BS-riougG%^^mW5r{SDO&A02zJ{
zVIs>KC(%i~C31a!e*Ws@<mB7I!NH85mqrm9dTXQ+)T&_>!N=d+-0WXoULMM=;>z{r
zTgC^*8^->~*PHmzFN}|j&moa1;|1e6V=^+41>*<fJEI7R{LM@L6}x`~7yzh(I}r(F
SFDJ?X0000<MNUMnLSTY}L+bqi

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_fulltrans_pressed.9.png
index 1ed3065c5338775041490ef37013da0abbd54d33..697683e299cdb367b0605e7678930ee57838febc 100644
GIT binary patch
literal 1461
zcmeAS@N?(olHy`uVBq!ia0vp^N<gf~!3HFKTTky~U|_BBba4!+xb=3%={(_diMGg%
z5A~`<SF9+%ARB&Q(``Mj#t9Az6C5}c?dCsve53e-qTM4F^}bmyfle!~=v7(2{k_BZ
zgp2(&P1(|meP6ixpZ}is{PdX{^X6w?|2Ok(fA;_U|E+J^KCLZs|Ec)o&c|4DpYJ!m
z`_H%YegFPFe_wxpySlo1^X1Ez|J}S9`Tx(KJ>UQR{eAD~QP=OEK5hE_@NoOgg>6w)
zFIpM7)pBHZ6wG4#8OU1Qd~m_-_ur$vk}YJeeVu16)w`#;nYr9XZnwL;`#GD1)8wiW
z4>WN~v+K=S=2-Wt#OiO_=9^)&cJJQ(wQTp>uT{3;z3*;s&zC(Y!#Jn>{k@x;op`r?
zxxmdVcIH`pw6wV2Wd-hDx5dwQy<2xFz~=4ltfJ_()08JHPD?7^eHZSWW#{i5ZM|%A
zViDJ_t65u9Bg35kS8a_tJGZ2Ip7X1(zf_uTY!<r0T5FJS@XJlz7z^KKoz*LXwWdb3
zIxURT5sTehcKYe2;FTe2f(HV7bzhtbaL&EJ&MfA0!=m7!3Gb#whrXRV=Vv_qbmdH+
zW1%u{{U@D&{#Iet?3pibEs%$+nsqj<9B78}OrKpFBhGXlf4nWuf6@2smnFZto%}EG
z!-6a_+|m2!y>H*PZQi;yb${jOWn!H!>y}xi+r4aN6*l7oIWA|#f|W_%udWXN)-A5T
zN?KZaa>oD3IeB?en~S#EJvh+P%M1#Z*|T=7V@t2C-TUj!O=Im7w{G1!Zd3nnkCFef
z>Sd7|3LhNGlyYg#yK1_1ZQHBK>i%n1U%X!Q)H^BZz_CW|<(U(5=Z5*$_X6b}AMe*r
zWP#Xxq~z3{t5>hyTI}AxX6e$UUIK6HL)UH40mrrHizz#;mWIxfx2uWZQ-)ZevR3-!
z!z;S_`qSlYDgwA*qN|&~ojTREb;pi~UG@L#411tf?y<`<&C}>ItyP4HOnR60u76Wk
zH#awTs{s=vjp)=*IC*nN`TICKpsI)bNi*3VcAr_~aowo?`@6eyVXAESUaiw>v*qBc
z7s#)gkT7c*Uzo<FtxGh;-4cE`hZM{@=P|q4D)-Lag}hAC?e-qGO+5U~1@70d&b6Dh
z3Fcd#FE`T!-o2S4Wdsv>^YV6I{@y)xb2eq2V7ZuX|JQV8+CfNoT|7Nq-}{&2BdJRh
zuKAkI6}h-^r_dFD<Ag&H>5s3kukYSfW+|H1kon1T%lu3Hp_5*y*Q{gt`h`tq1|+ne
zq}$#Q`#NXB<*(k%m*?7cN(oy{t=C49H<9WU`|@PU)y+;`o?4uys$ULBtN+s8r{O5i
z6JclE3Xb;lPM1Xs+Hb8<(6kL!n__XX+EAC%&hv}$?W<N*%zV%!TeNU$gd?}&GGDDi
zGt(nmG`ccnh358&1qfcPzw_MmeeBxB;%quFR|R<=Y~nIvQkl9VEZK0;(&Q-_ccm1g
z^v?MNh<{;)yIov&T6fl&RT?Xge6?D}S{%ata)sDgLER0?+j8^I3unDth-6|oqgT|?
z=To*Qa2|Zr_xOm-`R=Q)zh-Q{*|RNb?FsZEA=^Z1+AMA_KTqx%z|!Gl-uBrqzW?q#
zm>?j}*IwKTDQ=dX*8`>JB{jdly>*UFc0YSGZvAxeob>#B{q6hr&zJ3Wo7vple5S(Y
zoQ#~@vi`olo`({qS1vj0^F$aVK0W{{8g%QQ9-aHA`ozu;vD<x`W5V|Z=4st;oilsi
k>tE0RCI7#FBIUR6{9kTsnNQYC1Qy2(p00i_>zopr09g~s%m4rY

delta 1000
zcmV<E0~h?Y3;hR>BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#
zpGibPRCwC#n6Zx2KoEv^y$-q)RFR<JBswVRA|xtaAT2MGGS3o;Ho8|pLf2hMe-%h6
zB2dC5@i60?-;AAI+jkdJAS{iX+}S%{{+ZpK9p_GSk^6uBtACd_pP#b5WqZSRHn86<
z+gG-0wx9Bc-2C&yd_JE}CX<Wv^YhGmU$9Y@WsZ&bvy<<7Z_ivJn3sD|6rK&=v(08x
zTwPt=%x1GCKYrN+dCd^7_WS+qdcFQ7AOfIfA*d&a$6X*4rUc>lbMYlU@s0(_x7+Rh
za5xk)mZ}j0DStnAfQUnaG792U6?wPdAG|mI$%2I4ZbuA4x-Qfp^zIb0OA&b=VIft8
z1O#KtckvlhBrs$NayO21njg+6Q6_jFMH;zMDWU_AI%x%QN*fEwy%kZbRKd7?KuG1R
zLV{lbfIi6z9;ky5A@@2##PlU<IPX*<HI40O8KVm%SAUQKsw7mPo{D%ArV2z94k1Xg
zWY&L85dpx=DP+<|LV-N#TCuB){{vP+F-V3VnNlPZH8f8OO{`c>^x5*sZXbq86p^@l
zxvMJ2AUee)Jmpl2gy24P2Q~JxDm0>oPUR#BrmwS#oVZ}}W{HS`1YP|IK#9=YpN48Y
zm5*eOV1F;b^i2%(sLS|Bh9=+vzzk9VvASmSiz|W+3D*!HSXR{1iWr8WK)i7hx<G~!
z#5EkmLClmJj-)=VlOP9d+XIHi=1DR%2LKE!NVON%K(G`C12L!~COpATS>Mc&$F8JZ
z>quvgm|B#&>e3Scr57|*PpBzRt&Hxz9tXDMf`5jJOiQ_1Rd$M_t%8s_8^uGTWgPYy
ziWNkCRWeEG?M#FZEz08{`T+4gR<%DAq*g#9G~%lb#N~Nj)eNb#OwZyudd3k5@gcri
z72$`l#Mchq4=IqEM+uy3#7CPVnNXruwda~dJA%4;F80W2&NW{1Bt2_1EDi^8%%GSm
z`hVTyS0jX01-tEQOQIatq(E8`oK3a#Z-q&yLMaHjW85}Hve9Vd{oPUBb_1d?eG4E9
zVY&gH74gZ?2ndswT^%T6&E`oeaT{t>Z7Xz)bOo0@@u|>w29Z*rfFsi}I%-k$?V(u+
zRVU~w9!z3;3v#_!EM88h)9>T)cq`CY;9)c@y}Cv?fTKC1Fs1P%DAiuAR%grQ^0{^u
zkJ_8>**>zpV|zAmd-Dg|7q(AqpPL|0*e=*!u#E-=*|B|NyJ5R+g8a=U|B>I{0t^8E
WXuz8}l6tHF0000<MNUMnLSTX)&&crr

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_normal.9.png
index 50cd06ae3685154ecdf450fe3055e3bc4adf5035..f5ce40cf6df509db08cd86690e6e05c9a1e579b4 100644
GIT binary patch
delta 429
zcmV;e0aE_s0>%T7BYy#nNkl<Zc-rll%c_E46os1<`AYR5*~CH7w6fCf+0E=Gf=H7H
zq8@Y~R)Yh<Iqn86BuMxsvfTT_z5jvca__k$_r^k5@)h}te6WaRS#rHz<$k|YxZQ42
ztJVIM`Mq&IpXGEqNs=TKQ2TPZNTE<j7m4Fo4u=C3^e_w~U4JBsBH8VBvfuA1pf-A_
zB4HRx5CpQ_ZYiKPdb}jE*=!yUFhK3&@u-VnhU@iOeBY;l+8B{4f*CHCOIfW}6i^!@
zQbiD2EEbOk7@#&rq>5mMp6AJYKBs`%7?CQ15W-Ae62UUfW-}`2p^9LRlgWe%dZ;2;
zrtx@81wB*|EPvE!G@^nY#bPmC1T!2A22{}FC6Ru=Ph~ot>LLiau1f_AtBN4xI1Uvo
ztSW*~uh*l3h5bw9=>|gGZkNh%IMm+=LY+>B3QmqHf{<<7RB&=s5ro?9HWi$lugGVM
zv|6p~MVif~G#U-5*XtBe8$I&*e7Z=fR1(uPrBbO-s3umcQZASEkMOL2OJwn{<mvhW
Xg-$!g?*09300000NkvXXu0mjfW}wRB

delta 329
zcmV-P0k;0e1LFdaBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz
z1xZ9fRCwC#nB574Fc5^tDA<L?Scvb|Bv^|D_-rfUZ|)+T9QhGJH|}v+@I}Jr%Z!ms
zfO|?_Z4lkn=qg752_U}<QWOR9JVzYIBr{4W(KHR}x<1~%Rex1snkKC4N&+H;K$@l~
z%M#-_?(Y+QVBhx`hJn<Fd7cf$4UlD7HZ`K%wfn76bLeG&C<tm0o9&5fFjcAEw*Gt-
zVFTil?tiWM&{C>mEAQ607U{HxvRHhqrxo!9qR+wC8Xr4`l{Eq642a|c5`Du2Yq)?2
zFsT4?3dHxJ$U>R))I%9LRc}3H86a)jBFi!|RTN0qbz8nZ4B?O6OW0QaKEX@k|A-M0
bUIGjNOzaskvYPO+00000NkvXXu0mjf7C(}4

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_popup_selected.9.png
index 125ff13350e09b4e109b075f02bcf801bef12e44..ca73b9249a004884627923b86d0696972d063f6f 100644
GIT binary patch
delta 230
zcmZo=Zep6CQh(CZ#WAGf*4rDlT!$P4SRYJmNJ@U{s1p=f#SopJpv|VuKlM~t#0QJ8
zS$-{r={?>~VmWiZzPGLLH9LB|O~lw`J*RNfpVV`#XKVTQ<=j}kezloN_rFrprr>Rj
znT~U0))m!eTwCM5XD*wMWb=usFT1A+ysVH=I4<GBzgF<lMTK|=zXk>-4h1kVpC$1Q
zi1{gdLW=Tp;|{)ur#p3*&A-cD+qx$6dSeKyZqRzw6j7nOUe_eP|L}3!`(ySEbAgC{
erTfx#!KUVR0aZ*})~=n!00f?{elF{r5}E+)(qHTV

delta 362
zcmV-w0hRuO0)+#RB!3xnMObuGZ)S9NVRB^vL1b@YWgtmyVP|DhWnpA_ami&o0003e
zNkl<Zc-mrMpbq#?sR4{&Q~v*F7)Zd#$jHFNFh~Fku?jyIGg4#`Z!i8(A2cB{XdHr)
zSb@Rs2c$}Y*oKC7{srPAK->h3u6?k?3U>(95gX|o5Y8aS0Dm3wA33oWfr#2e3=9*`
z(9ULNpx4VS85k-oz}y@l-iMw>z|k?~ENz3}FEAC%IuGaCVoR*dFom=Rzy86QY@^wC
z)FGn|8Fk30Lq;7k>X1=~3?_&CA1n@G9F3Y$hm1O8)FD)I$X{6Bbf6sq8Y*B&)~Bsw
z*nl0|L|r)dFk_5?JS-6oWUiodK=||a{@(-|mVk!{P+%pHiU8t+uxO$Y_zfM306PLB
zL<j*|4(6eR$N&Sz(Q*VMNQg}%G<5`QR1pjKPmcgV1^@vD00aO^jgx6DmH+?%07*qo
IM6N<$g0j|;K>z>%

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed.9.png
index 7ce52f0f585605e632f2e9810677c62098b77419..73f2006d4264a3a5f57256989a9ba2b3753e79b1 100644
GIT binary patch
delta 694
zcmV;n0!jUj1kDAIBYy&vNkl<Zc-rllSx#zE5JmaJ4;UhGCVVjiAWQ&)Uv!E{-}fjW
z1Zia`<y$0Wz`V!3IhPkSkz~ijP^;FdQx_vH*JWPfx*+J9`4#yU`N1N7zh5?+jqLaP
zlf1vb8|5o!x7$e|5csFe=Py>Pm8{q6!_Vb%DQ|CYvREt}1%C!CWpB4zxw*MHFGAsb
zK9|{SCe!IuCX<Pb$74r<0ShLfhu7;pFM@<Ne|dS4(P$*Y;m}cFz)~rCSc<&9z8(sm
zpPvtq!C)Z$e&11Gz=8>z9+n~)>lA==yItvYI?`^pjY2JqUaxl$f=v%g5sbe|v|24k
zQ5l%9>0v3t_<tzi1e^#^qtS2_7_d}^9=1e~pa?*-*_3*{?kF&HGO)QGOA$tg1Se35
zTCFD4YSk#z!eBDGGxYFyJm*DNDBTN+RiaX<80A<-uZSL&BHZDz1h8_sETvM(DAcNu
z?hDsrDZ-odN+?!|VzFqHV;S8Sn<Cvm=IjO6fds&U6n_eNqfiS27EIXPZpT`L{m?7n
zG=)Mz^7*_xJv|wPS{Sfk!e&owi!e?`s}i|f&L}Da3ntgio>+=ttGmHTRO0dR(I_f&
zJQZ6ayh*Qxlc+>Cn>C8c=u~Wr@QCSd008#z@F4g1_eP->1}vQlJuF3d#B?_}jY?!P
z8KbBSEPtH}J^m&l-$mp^h9^d^1pu&gIxVSG$|%&rfTg=akDnvLqpR1#SXCmKOd3UH
zVCnVH!<Goo{iQ_6u?TEiB8*KxKmOO%*b@0RPYrK6{yTH&PgdBrL^wqvk&wH)JBi2R
z5{tzo8jU&%3|KH>Ga<LzeO|=p^GP@y{!AzoIxi#`3>ro2l^2Ob<o5Q~`k(M?e=Tv1
c?@CTyABMG%tH}emv;Y7A07*qoM6N<$f{8&w9{>OV

delta 501
zcmV<R0Sf-j1&#!eBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBUz
zut`KgRCwC#m{HDxFbu~#7@md$a2anxybcdu#4C6V-T)CkI=-1YH!QA19$eBaCgZ=~
zx_0XXkZEJAfRYl5<w#&B?FaG$S)Dbf(+Q5pBWSIk^K<+xv450OPrrv@fU2sXEX!q(
z>-B0r#)+v#t#;C*mLv(}c@9m}JjQ7Eqx=1CsBv=JOMxH&wlqy4%d%w<oV@S*2Y`i%
z1wjbZvQTdGf>;1akDvy^SRfV%ZjTfUjSZ{A@(A4$>Ya~o!+%duZQr829&v*;2E>=f
ztgUg$C1S*Wzkk{zt~X+1gl0=fPjkE>;T6|2tYEcqBAqq#JYi?eRvroIXkYm`j)P+{
zAj+7Uiosb6OwS0`@x|h{X14iWoeecv>AO`5uS#D!a4Qg2jBFLG?=*r(ymb1~!|ki-
z`%Wv_!7K0K5k+C#GC+E3LPz{=o)cfm8n#Cy?v;=h`)(X@Z%bc&8FTxF^mM57_f=N0
zZyIW>yM_*=)wdJ~%OiDNn+I0cb>a^!><@>7vD@vo401l7p(qMgdAFu|w><(~E*EIq
rc9;L5f%2_%qTdv3n)4-f{sb5Ra5s2i6{wb@00000NkvXXu0mjf7E|Vw

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal.9.png
index 7ba18dd25ac8f79d769a2291c77ab2844e3d21b3..12bc97928b4dc45f26e5f056ab56ef2924790116 100644
GIT binary patch
delta 970
zcmV;*12z2C1>XmdBYy*?Nkl<Zc-rll*G}s|6h(QahMovSdw~C-hTeOxA)(hO0tDj6
z&(#{;u?FWjc8a+#H_{dYJbP_VJ(;??+I*xYE+Zo&@-Ov2NXa0>!^1K#Fd)6Xz0%Xu
z6T4u+EDF-s*C%UhYx4H?CZC_5^6~K@@9*z56`pv1eSOL5>VK+X{tY5tkW?xq-{0RR
z$m{E?JUu<dBD`V1f~f`}^~=kP+~42J&CN|L!W#xGHApg<ltQ5(4-XG=b#*1#Y&I6*
z4FeWTHAp_6m%F<=$>nmA$z+T!FE48%>xVZCSZa{&?rzg%bRP{bE-qpb-Y{UnRD(P}
zKg;#?wMl+<c7GO&@P+|P4bs)sWo9*Fcz%8^r>CbzCnqOGIzB!wDXoq5!y5)Hm}-#6
z$44`vXmE6N<mvG6ut*072dcDZT`#<0z*2*Bc6OSjMc46GnC|cI8}04w{m}02Zm8Vn
ztq-1f!+-@-4RU*XYr2jGnC<NB7;SHFd)nICiX^v<^?$(=Zy2xwgD`fCCk-&$+}t$U
z*x2y2zP=twZX4@^C*Ck%sX;nAI?UKHro4qU<orRL4VB2Yw|;oTfCW<x!q_pEyv54O
zil^n}<*MX*;SB>;U=YTRuHy}smX<s%E-qFj*9&hLu+$*!?d@i1(RCzWSXl5hKR;iU
zTra$tD}S(HszF#<bREg(=H`BAc6PQR`F-$)0V^;FlZdV(`OM5rEW#TGEHy}5Tbr3g
z%yg2c)9F}*Hw;)X)gbJG%yPPPYHBJL;SB?p8l<(g)y!rdq6;S{Cu0%bFkrzfE6Bve
zL{*9!#Qc&-B)lNg)6<~=#>dB1g$2Uf27y`BBY*xNQNdyI`-BE*X=yS4WSzS~T+^|!
zv9hEE!W#xGn2~~16Cx-~<RJc`DHUXNbo7Tx1<{5^4bt4)tgf0$dqx`;|Ehth24R!o
zP;xgkZ3&k%L2Y|?LxTZJ4bs%q<OOlJcz0JUck^=Fx?8*r0y8j(J!=?CEB|>BwvB6N
zjDPjAXH8&`#>Pf32sMQN)O3TDBfk&cHV8~Lh&_F^AhnVW0;^;YTaQ#)2!+YkBY{C0
z8XC-Z4k~TxOk0)tE38Uoz3_$s3#J-`FUhQL9<<fFTY*<2>xDNASb;&fyP&$JjPrlZ
ztd;PF0ZR=+wZx9d1KeNmQ@iou?@<)g7DI0?YGA1qT7Q4PDQ1~K_4W0!ik=_@O!c01
sXlTe>IsS$Q2M3GqS$&uLzbWtY2ZFF<N|YI9$^ZZW07*qoM6N<$g6T8TcK`qY

delta 703
zcmV;w0zm!W2i66UBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!
zcu7P-RCwCVSxJt<Fc55qupM{@oZ!a)Pe_Oh5**+q>|~}QHR?F+B{&|9r6>rT?n+g8
zYfM#Dl-i6jzhNqq6azpOi$yw`gmyZeOhNyo{Tm=9e}F{y`+uFD&nNZan@}4Lhcp_E
z;IAf->-9?O^_u4MIhAEe@AtcRKuB5?MSVXU4z%0tXgZxXfjk}$S}vD#yWQw=xzOwN
z%EH88FsRvBtyZ+zY}!E3APp{n$_WHavm`wH8y-P&cmzNoO^$}R00H@>^rhX2y}>{v
z@|4C&5s&jYM}G}>kVfs>uv(55Blv-@T+)CM&f#Q4g77gCVo8&ezvI|8m=+^Un;bP=
z!1zE&dAy8B{d}y%_{JKZpSv_`aMXYeTpEyA^SXe@JSrn-3?MfUj_;KQ9i&H6hp`O;
zcg_(lO;;9T*$GNxn>7azEq-v+<N^{U4R^8;r+7p@8-HZPCruxVU1w>eM7g#B_A=s}
z;<ZJoucm>hckyf_nOrVPIW9Y2i;-BJQ$~&NI8nK#aUXy#tFPRhxt0q6F$~6+D3%qw
zp9JQMQP^*<0r=KCnipKTirBaN#wT5#FGCAd7oYe{scj3K6PoO3Yb%HOw~4j5DkI#{
zen2u4Vt*;LDbnIcGopb>-KBXMalL^JAmuob<PlqrF2_)f*(i^sOw%dTzABC8kv;(g
zrLjkiUB^gW{<ZijBdBTd?w!vyeFH(E26=EfrQzZliYPfNM#zKml>lizK*r-SozLgG
zm^YbB8YjJPOzV0UKv2*-9*=d-79+FSjQ0CIZ8*2vZ2MIS2q2KN1q43;Eox|g(YU(U
lsKqOYvsQeyKM;Nd7yzIKFqsU(eDeSR002ovPDHLkV1oP_J>viX

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off.9.png
index bda9b83941ff20ac6ce4a46912dfd292957be711..44bd414a1afce676289e43ba523dd856a04a4a04 100644
GIT binary patch
delta 1063
zcmV+?1larB2D=E5BYy+}Nkl<Zc-rllM^EHR6oqF^&Osp30=Db`!2*$U&N=5Cg#dy0
z<M-*idS%tPuRD8YGc6ric6Xic_*S{9+P{9~=OcM>>FDT?zo~ygk_KsSZ<m&q7HMp3
zl!k_e*aZt_LXf7WCRtiqlK1y_`TF{j&(BZ!`1r`H@WlK3`+r*&7Z;WJe-H_R)YsR`
z&(Dtrd3kw}$H&K5gf|RWFwG#Oetv$IySqENzP^q{c*B5Y2C1v7lef1wxxc@c%gakS
zKR=H}c*B4N(+u+Z`YN}#w{mfDA*ZLOs@d6D>Fev0&dyFfa(;Gpma&{4-Y{U9L27Gj
zwPci!h9@T{GJi8OBi-HIGCVvilarHr<eck#pN;T_0Sl%X<mu^2uCA^$`O(pl^!NA6
z*w~m%PfrKpoa=m_jqrv6%M4OeQ=_ArK0H1?mczqC>FMc_iHQlVhST`?xK?F<e?L+O
z2L}nl58(|17ECk9!^49PC>reT?aAoqsEmw^DBOwe;eXoB&W@?w-Q5J?<%Bm3SZ0vw
z>S}$oC>?i&>B`EA4$#5DK@GsMx3^a(zRk_eq}tlr3behwt-=#;7_eZPL2hntv~)DU
zjPz@3Yce!6Bwbxy8f0~KRn54bOzZ3Gfi^ZaRCwYI16E`Z`i}mj0cJocCnKGP94Ynk
z@^VU1O@AkR5T1C$fMo`$s;bhy1H@f8L%IR6He@5$-udAT0~Sm(2z^Iiau*8=3xVe6
z=W~+pg*OaXkwNG?O2-|{&CLa3HqAx8mmBD?%pjGOl{z>n9m$zJo%{(c8~I*%Gge^1
zG=uOoP&$%NO-=nKe^SdtVIRC<z={mQAfj|6XMaYGLwLi0Wd^CJsL(;gNGCaKN*ux)
z1}vCn5N1I}IVEL!k3)FFfMo_LFE7{8%#SD`>q#8K8wM<x83kdT$wlb~(UY>WvLFbn
zY^ngPKbBGj!rKLbnNX2%kaWSR6!u9Oq_nhDzvMahgZQSbzM04hgf|RWFw+W>ONgj2
zX@3U^cTKV&0|NuUDOnJ!Ys?@eB_-xllWk?JZV5j%FwG!LGAv5|gl0X$nG8_Z-k;E5
zz%qjr7Z(RX{3+g_6*HZ@{I>oS?}EUL4C2-rf9D=vFH%k8)*9oy+*%VEq^PJU2*MsB
zylVQvGEvwEZx;ln8N{u=R*-zj1%Z_`h=1FUWV;bcCAS}m3{qHFsQ)?GX|vCCyRz^O
zD_c1)ykWqCX$Ij>GS4?Zbh~$d2cC<Z7v3;nMF!#B1-omuasFS%d<t(Eu*@LrmY5Ow
z0q-w3T5o)~o{pm0;?0X1Smq9`xw%<4vkahuf`V8@B?tl2e9zj})~2r<|AbmwTObqP
hvxZ*o|49X({{TJJR}VQuch3L-002ovPDHLkV1kRN1g`)9

delta 838
zcmV-M1G)UW2;2scBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!
z{z*hZRCwCVSjnpDKoG5H9B~3c6kH0r(w+ama^q4L`U9e(8xfrKz0<t9blRRw%;Od`
z(WKLLQs-0;6}(<AN@_t6{2k^MBpL%i27^IzGzo06SOgjRC4cs7fQ0-56kV@Zy5H~g
z4c)jbm&;K;pNGDpK+fkgjmKl^_xluvAw8eZuLFY9OeQ0)v)PQM(<zlor6`cw?MB1l
zkS>=ColYluJRYe;BAd;MXpBZ9noK6|KwzK-4WQBlf=DwZoc<Awz&SJmAfP4<!?*we
z`eo`vwG(TDfq$&mYufMkbUYrZQmIh0*`!XV^DzK+3J~nam^Ivi!2rZ|yQONiO7(hO
z(6-rZ#Itt09Xlej4{b#7fEzj<4hL#98bVyKVzDSV#{E{S6+3g-hcO~D2wagt<#IU^
zMht{hw~1L6qI!?VR>8bQgu@0$wOUPx7g1otf7~|#v44S(>9Iyc<_`_JSglr6C=|p*
zgnNhv#Og|KB|U$xvRIv211D$@X}8;@-EJpzfvmxQ(1l4a4iMRoHX<+vzzr#jnXlLD
ziFE;40|2=1BT5qx9^Xn0I`9<+r)Y849Tfzw?8BQHbuvn_*vY@0)Tm-j1Bh;XXV#<z
z#ETm4q<<n#q7nIBXGCn&Br){^ys42XN^2V+`?5~)x<%<*rURi}^wi&J0MYpf<M5m$
zYmDa_>=#vMK9P}^a^147>ud5OfSAs#>YzRjUHxqDg}Nx1UjCFKc@B~3(fP{wY9o$L
zK6yWMEl@5Rd_}3-7Fel~cT(~*{;&3nvqRJQ41d*^<!0jA6=vI}NH@NBL~O!~3&<J~
z(-)`!K8eUzHKNkt8xdV!Z;d3GrjtzjT55C}`6d7-HEPzVb&RB|u5Ns7L~wTD-8-&n
z0KxGUe$b56aB&Sqlr$?w@WT~`e;|V&AUNMHmrGI1L-~Ot5?8dQcL4<F==ppue7;ql
zaX+}mi4LWRwDzkqAb`Nx8Xt|yb0i`_i?YN2Fs?2}BBCqurwKy08T%u^0Eo>ggTU0W
QW&i*H07*qoM6N<$f)3z=NdN!<

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_off_stone.9.png
index fad0ec4586104a5cc559efe898d72ce436cd1df7..cdd6c8b799ef2555920d6515e2b2b55057ce2ed5 100644
GIT binary patch
delta 2363
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

delta 2363
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

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on.9.png
index 0c16ed5093dfcac53807d9d9663c516e52bb07ca..43fdf5b885a8c851d3cbc24b1382c0fc34b329d0 100644
GIT binary patch
delta 1131
zcmV-x1eE)p2mc6=BYy-&Nkl<Zc-rllIcr>37>12Y?fZg+wnFmH5Zd>Bmqz<O+E;`m
zYoanK>=1~Eu?sc+0S<(8A+D4vAt?;06G)ND5S;D{&%x(%b?3XYkKAP7Ww`gwd7t;5
zea@ptsrg7sTpAi0<WuVZAQ6Mq*Vju;O^sAmR!T)hMcM@mW`9_as;Vj(85xoD^K-en
zx{}MwOS!nXNU89|I}{4Z@bIu<eheZ`kn-|!xxT(OK~7Fi<nZt?Ey5cHESPE#QXd~5
z%ii9eY;SL;MR>!2r3NW0E0eRcGuhwYmtZg`8yg!&larIu)zu}9jg97;Yx^t_;SB>8
zOf|^q>8b4Q?tjYW=BBKzt;zWKxCD-#$m#2R`Qq-e`3@XEk%@^3Szlj|OZXwYVZc&@
zl$Ms7Dx>-+xVpM3TcIX-@mr<5dRO6yYwq(r5#bF37ECqB(b17?ZEcz4%gf91)psrO
z?VrtI;y%w45#BIhsX<CgN=&b&4OdoHWNB$h-u@MoAAkOy2ov`g78ZQ9xVRW5{1DzS
zV8K*_92^{&4n=|a`FVMB_nG|kJ}7tZHym;O<}M_&v$Lw^=H|kLmlfVHV5vchi;K<B
zqUv}nOuzi*sr>%WOL_P2=kn`^bMwvhvztqqo}P}VnVA_!fk40rPrPBkf~f}C+1W8w
zM*+;Hrhlg7`OTHQ{pD8v`0%~_`17qi`}(OFHPOT{x55YEi8l;bzCma^+LHp9F?`Y3
z*qEcy(b1UXE@OT0#2W@IHAqoWk!d^Hl((>ktUrjgAraZ~)(>wOuwbe|Xgk`Hw-_24
zax^$Nn3UXJc*B6@8-%u_>Ue{JfdNPT{rySF?SF+g3|MNA!oor`w5U3g_x1HT>h0}K
zN^UQ_=_{~cszDf9R2|8CdV21uySqCfd42GP0n0ZCortO<IV){Cgf|RWYLJ400@I1;
z=_K#y=tzt3h5-wv8iZMpUQU&^x3{N7c*B6D2FcIQH@%r3QH5=7ZD|qSFkr!qD@bc=
zYkyLTHHf*$%gb|ubar+|4balkqAFS-yloJeVKw3n5-T{GygpHb<mTp@hm3P~5VvV_
zb8}qM0^tn<7R;D}Boo3fOw2*NO%o|dQ&ZDDMGB%djT$5;Cr2GMiPntPEZ$KAQw_o-
z!=mJ#(6k{OPY1Q--4hxNSZa{$>})59dw+^|&x-L*UhcB)Dc%Nw=^MnZHMFIbcfE)<
zjcaR+^|EV?Z;-64EGGzi2=A)t4i=BRK6u+8Fx4P-_0@u;N;U|rh(YXrB+-pfG}--#
zZ;;H)O!J?Eoi_VSyDRhVuo9K^!W#xGm}(IIBs0GGq20Z^ci_p$df^QNmTwTwE@aqU
zvyF5AWlW{;h5<_r!fuHfksok=!MAqe!~Iy~R~By$YGA25wCd_=vzes>Wn^TeRn!C_
xV5;Y=b#-;-$nhamTU#4`&gwbbe@Ho>{{Z~3fn+r{Yh?fc002ovPDHLkV1k{2J&FJT

delta 905
zcmV;419trX2%ZO!BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#
zKuJVFRCwCVSlNmiK@>f`xPoyonGAWzi+N}hP%}OV`G`E_GehzVSsoljn9(SVl35Z0
z17=ki+}n;<C{tEfFLv8uE)><;Rrj7g=T=wsRV>RwSW^^b<$uOfLir#dg+d`bnh@6Q
zb`=$O#O@3bon4Sbv)K%b#RB`t8!wB+Vu;7%lwaFGCX)%O)hZ0bfUfIUE|+@;L_t+m
zUH9#F8;wQ-sZ?qk$b3FWsZ_#rI>mTAhH09SFrjJMnvHU~j9RT`2SP^DP$N)L0wJcE
zBy9O_<p>3*9DgAoBn{bMFu-s)#Aq}^I-N!~o5jJwL0}-{mq3vGy!5&_h~)<L1S0;p
zh2qOT9^{Akd6mV@*%AJHd%iOm7L-7+IF74^4PamnpZ-AU)h#qVy&925?ihGdyv3(C
z-!Z$n7nl(~hLjPy!5R%Tswy7k44boQRYB|RGVsb_F@GEx;XzPet{5=&Up8mu%6*)^
z9=Qf{`j7b*!PppKv{B*?zC6Uyv(^9j_w=hb0s0q*tNT|wgW%<HWrWv{+I7oBp?C~a
z`;ECZL`=y-Gjph&ef3=4!t&hoe6o738VW+K{^0`FQbFZK9(kjL%kw@?PcBja_}N!3
z$bj&1q<@T%F#xO);*<AX)ZU%jmSGqm%)hHNG=TMd;Gp}C2!eVR!?!fMvf!5;Pie$t
zjRJ_wzvrrn3WzUh*dP&cm>l8fdNSfBO&Aj&z_&EKL{S(Y!}Ap{+m!ZYG7!>DPrQx-
zh%AO4MCUN8#__v`&WmC&Kg{r3xolgPjdhB%27lu8%_=(e6VPj%+dN&yg45((CF0*9
zygag4s^8oQk|(>&*S$6<FB$wMrR-SXDh+><;_tEF;<z9uG+9htoXj^Tt-WY=I~2+M
z`)0%~@qz+!WyI+TL;$-mvez6D<?zdhY^?7b3G<o`^V*k6Bg>I}0`QbZTs2}HBkZm#
z^M5a8glbys^v=F(_6>vzH57-Mqcp6zMn#k;D@GKD%2ymnWdkIUNTAp2t&4fdWOBnu
z(4=*mOF*cg*XeZDF>Q=wG8r_RP1Ni4$j+-gAOb-#Z9wP-p`{wy|1efv+^WS(5Jy_^
fl^w?Z3NQdjFdci?cOL@)0000<MNUMnLIPldTd}O7

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_on_stone.9.png
index 215f8157c3b7306760178bc0e1715afd675fbd76..d8421746a872e837a49afed25e4e1e86b1e09009 100644
GIT binary patch
delta 2398
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
QbN~PV07*qoM6N<$g7~VfaR2}S

delta 2397
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
P00000NkvXXu0mjf)B~<S

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-mdpi/btn_keyboard_key_normal_stone.9.png
index 88acdd7483f4eaf257c1b64331c7ae3046ff53f7..44c2ad6372ed827dd510ea6def7b917a85949f0e 100644
GIT binary patch
delta 2134
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
Kp02UNC;b-_LIx86

delta 2134
zcmV-c2&wm_5v383Q-9}qo@bhQp67XL=6P(`8$dB-ol2dT)1P(Ud*y=0gqQr%>E_-0
zonO^=r}EmOMdgosLwNgn`+56$`>FoZ@(rc@r(eH*-}LFz=WyS?eV@NcAd}~NAF)+c
zLVlx_o>%+#?|0<Dfdheq2M@YKhYp3G_#OYYZ{I$*ckkZ7o_{@iny`EK?tigs*RCe)
z+_|$Vkjaaz_7Pi0T9p%N={NZ6*s){o)TvYM^y$-qGiS~O&YnH%&Ye5w&YwRYe&Toj
z8^4R~EGJK%EOFw*i4w<;A1{HLMI1ePGz=cH`Hb&+-VvEXkrya_;lc%X@#4i2mo8m$
z4Gj(M^5x6!%72wB?&{U6;U|6v_%{XLSGXVS7ho_rAOr)G0s{phWb+woJnclLP~<rZ
zASk$Y?ONda_3Q4&jT`Rf&71Dlty}KSojWCN-@YBd-xYk9U|WKHalaf89hB7IKqiX3
z@98KqrF*F+XD5hYCk(@o2z>YMU3c%^J@??j1NZRZLx1<^(IfZx@#F9l;BN}Pr`*4P
zKY)E;Uw{KqP8?uXqewST7f*-SW-cYt3L+RO6eA44@K2sRagB|Q?&;H~?%A_vCGfii
z-y_%#K%N6Y;gq0)ne*9R`i!4>KK68uvr=A!J5(7I<Se8_a)eYSC1PbD;?G(Tsq@sv
z7HeNt1b-Xp4pjsrhyX>ik}IRL!a*yV5ijzm&-kV1Q_qL-z%MVNJFzl4E0n23QHxPT
zXC!qZ!O6gj;Pm@#Y_G2II4KsvM%;lt(Cx9pnNcbIJta`7wN!v70-S)N$akKeRf*tq
zr>D_MXDtm#G5a?wkZLP?7Sq!>GG&Y4RL5%uuYVgVqsI$Ry&A9*db-xxD0eDGrfd;h
zfq4N`p&}U-s)W7HXiKSty?`Q9wg_$^^op)mb;{`VMK5~xqFC+45&KjL)@2T4$`-+W
z5AUaVo05{T*O_Y3i)~6mZ(n!|gG|{XxKZQ%4)22~r1x7YWYMtpLRWNq!Wl^2e<4%0
z2!C$JdAG|uUZAr>8NDB)SUK!zH6>wh8j%H=vPJORQ0^Aqwwj*Zs==O-D8U(Ec+G%J
z*&=w*;qwBYA5=(NO-}|n=)ufZQUUwif=t;Wcp~G|AfXhB*as|qZmAYMkU0w!NIh`j
z!75wi@ZrNv9&z<C*UpYTDO8Id2RaM(5r3MG(MOIP$rr)%F?v#;yD5euIy-!nwU4@$
z&_`g-0tM`|KeAxaBU=QkBj`z8D4-aM=pqDr**@c!L$}d|3<{(cDUc~!1WP+OP5@Uj
zD25_BJN8(jU<&&^U0lFEDWIz=%z;eVB3OUIaRShrfKn8)E%#s07E%G!VqNAyrhjY^
zEQoPIj*D_2CB*fr)OuDqbe+ozupa9p3o>PkY}>XitRULeMoOs=r4;S&q6InIJ`~VZ
zOoA-Plr6Gl%a*X@$)!+0F$$$xF9+K?Ma!^UibbYukxiR6g{kEFEc%mTR)}pt7_12U
z{geRLjdgt(nX*Od>+9Y2?c3ds9e+ClTu7#r3h5$uF4{WSC&RNI>mv&?Ws9s^x6W<d
zx;6AAp_mG#+OHaH+o%A8Yi(pfrfiYbt5=7q+`M^n0R4%b0V_nQ6y^T&f^8iNunuan
zKC-M?vnF3;<;s<A!-frR<Hn68C`KurCEJ3P&}}&S8XmQ@HnJd7w#f43%YWVa_3J}l
z5{g+N+k&<oZJXGZNeQ5q)<za&$`)C&WJ#FHwQJV~(4T;ED1@Tgew3>Q-G=*Nc+_A$
z)<+g($`)C)XpvjBYL&yWLMUd1Yzt~DDyi>qdlg`Ct&J?mlr1uU{(QG$#fs3Egkma0
zDcgqC!0mMODS%p98(9`CSbvZ&GI#D=w{+=Jw`|$60QwV9&PrJr&XW4B4UZbE$NI>E
zOxYr{XU}$v7cUNd39uuISs~kkIdFRwU~s_t$bwASA~R;pa0?eM41Gzgm`V|Che~i8
z9esvJEv=0#GiT1s7nwF~n!|B|z9iTg<tU{yWnn;z{hp3K1yDz8BY(^E>C^K?rc9X<
zdJ@c=H?IWcbhc1jXDbJ8tKm@tXkFw$rfiW(lP0-Yvu1_9oHJ)m2^CW*ovj?W9R(N~
zXkFw$rfiW36DBwuC+JH6DT-0fN-5eF<<QY*c-CM|fDFi#Ei!K0IEUi|eF-6jVk$*3
zMO&i?9eoXt8d?)Mkbfy#WXzZ`ZtB#j0SGB7mzpg_+oOn-0BQi%M2@jz$L5QS8a2vI
zo;*1mU=|f*K^04(ZDQefD8S$ZHIZfX=+XHiBS(&O6DLj#2bh8#5-X)Mmcq8EZ5<V0
zc!Js(+-#8%BSyIK<Hv^sj6h7Wa(2d2*fv$HfDRz)VQ{lWhJOtk77i}Rq(})C&77sE
zRVl&X3hH2R%Zao|h`bm&bg07tj{^)sMHI;u&0-~KmC*fQ|54;sLZn5J$jc!^hJ=Hw
z2uNBWZOIt`4R1RD+la`3szm&k>jw@T=mrlSoDBvb%}|F~R?xm=`0(K&D8cWRL4yXl
zUcGuX_>5nBdVj>1YKleb>gs;<v(gyf?tB68dJ*~)BjWkHIq2QH_aC*jwUd3u{+>_b
z%V#x(BAzy$ww_L&kD~n-o*z6vdw%u&{u=qs^NZ&v&sUz$<6Cs^#rL%eMOw#K>}sNQ
zxA<C7U3^z+Ks?}H7XxBD^^X$WV_S8K177&Xb?f-jV-36b<u38nyYBIYub$15PY4)2
zwHZL&4`MrY5{WjI-h)?}wo#~kY_|^0L`}@lRwP<i`-1=f;(ty02Ss3SJ}%k*!~g&Q
M07*qoM6N<$f;bQlkpKVy

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed.9.png
index 39b9314a1a699813ecc408a150b7ac8b7b4217d9..1c1f3d711e109122c0b694160302e1fcf04ef7f9 100644
GIT binary patch
delta 935
zcmV;Y16cf+1-u84BYy*fNkl<Zc-rll*-j!+6h(b@7AK4bhX?&6f5I0BoI#w2I4jP^
z86<=#;RA1Hope=-;uOem?Uy#$>DboYYvt6f@=8-vW4=s7S|%nY%)iWkk+LG=<Kt#z
zWW)>&4Vl5gLF<79vqU5kiI}OWDU-=$OrcOP`F!3==>Gox7JnAZzaqvJ85kIFFUsX|
zCY#M#3Ef{`U&4Z^iXg$opP!#5l}eQ)olaL3t%GhDuvC$7I4rhY`0?>!-rnA<gl-tH
zV5%aRV$Fh=mlrFc8wM;@q`$vkHtPHPyDWHmda@F_VZef^if~_FUteXx<Kv^1&<z8Y
zD$>{2CnLj{1%LPV_f|qT3|KH#5k`hF3vO?3i*j>wQ&apsbi;t9iuCsO%E%rb9%RAQ
z)m2fF$z)CO_s|Uk7ED#-`T5!0-QCH8i;D|4=jZ2j#oI+U3|N68+`sGVYgur5dg|un
z<fN{6yXb}iOBLzq>5=<)d3h-dj*gDp93CFl6>k^aFn?gdR7KcajFJTh2L~nD-`}q)
zS_j={XJ^6+6yg3cN*3(x?U~)(-G+uvx?#XlMY_AY<^C~B7Hn^C7iDW}tETvS=!O9c
zrYge7FlNE#=BC-$*l1|zq#FjTK#}9)V;Lcf5{ZPB&<z8YDiR8XWMmk#ARdof3EePY
z!Bj;U8Gqwr!RqR&mCy|XmMYTK)g_M{ql?92W_fwpO6Z0G3#KZ<j$U717xSg1rNAsM
zE|yKXwRFRP<rk4}Iy*b%hup)Jm6f96g@uK>;_adv1}vB*6X8GE&1-9GGD2_B{QP`f
z@pjP-1C}b%(a~Xcc6MYlF+vKW(P&ZT=H{x3e}6rlbi;rJQx)N{Vly#9KX`U_wx;;S
z=!O9+P=r@9n~4$n;WINcHN`JQHw;*+NPBy`E5ZnaB&MgQf0Q5@x*ZXist7Nd-x7hP
zinO)0$q#wF{34CIHI4`jSTI!)-gu5kxeZz^+`C5{5m>57YinzXNTrl}LW1HIfmv3>
zd4FpB?}1A1m7iQscSR9rvvP5z(puv@zOYo0mX;QIq?{L8y|4A4I4?9<FjW!fJi_k+
zTjvqFo%2Yb2&Zd~`<xXTeS+tA3;)s$1C}bnX=!qDQqGbb_4y;nMx4K+VW}sy;o)I9
z%(8)+o13kMNgx4J{hW1dY)n3K{Edu`jv$tP&g%Pc|2N}){Q(FB*Wec8g69AL002ov
JPDHLkV1m8u$y)#b

delta 640
zcmV-`0)PFy2bcwrBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!
zI!Q!9RCwCVnM<zfFbsy>5}p$KU<ZsCGh?Sr7&BtT5?BZW-aYrP<SQpQX`3cMq^L;8
zwZHliCpkq`Rn&JBMe$EfRrJyUki}xrpQgt+olZqbKQev>#DDM)gy?p=(c|%;6nWD$
zhQlF^MkC~x4RX0$XtUYSYPF)-Y(}rwD^Cc@lAg~e?e}}y?RGSsPHm9;{Z8xkx)y?G
za)MyO)^@vn2f+XYfbi5n*o|$67GgjQ1_MhM%HPTn0PxJ^5rzYh1hqT@<8tO2@P@13
z^2nz_e%~WJbAN+yenfdBc9GL6P1FCDBU~|f<^q9klyIX*xP<#c_+WxL!lZKM1aUpC
zhUQZq@rFj`hf5p-<ZB5*k8qC2B|i0bfWc6{!K#rExvK`VRn>gWBW~5??7qA?`g+r2
z{a<f-jZ3`S_;Ph#X-D;l3)5u_*mg_l(_do0D3!Y~T7T|nGF|1}4=UxEwaGy0*(ygg
z;n*df-*fY$b&g2En8gk6xcSoPksKghlGSL2LJ)0%WLV^HpRO`RW9xI!@_Iyr;UtSW
zc53pPE#sq<#$AQ63tC8r2`O(<=)TkEkZwYTQiP$YoK+AAb%BTlm3Gw7uz)6*vitJ%
zh6Z<9zIh!~s(}-pF{ZZV4Gk{XAczaS)cX<kI6e{}c#6Lj|3Sv%F&&RbS}vC~pU<=2
zp#kb}IMg=ZZk}<gcs`%$dc9`dCUTwt0v|k?OzN9w%Of0?PYl>XDp(#-h_f~w?H>q#
a0t^6uKU&u06kO>50000<MNUMnLSTZ-aWU5b

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_off.9.png
index bdcf06e1b8986fd3d5fc87d41037c7c037c6584b..dacb675a99c93e2765ee8f15e41f5f9777391c9e 100644
GIT binary patch
delta 1058
zcmV+-1l{|@2DS*0BYy+^Nkl<Zc-rll*GlYA6o${Wy%!YQg+7cAAPRzdC8*eY?*)6W
z*c&1$KHxfhi<6L(Ss7>I#B*~7enKW$|M$<%&d!?r`jwiGq{OAJu1@}?{s)O0q_(zJ
zs;a7_yu4h>%E}@aESNDtDk>_Zv$Ip4pP%LP^HV-PJ|Yp`?|<*_%7XbPh`2#YOH198
zUSD73<>e(3;r;gZrYx9d5JGVB)6<hYJUqnc@$oS!Ssr-9fMo_LDJjvkoOpkKFSob1
zkqB=Xuwa@&NJ?r7uCK3E<KyGf+}ten_4T@C-#HdWc*B5Y1}QEs)`@y|cc%rHmzOd&
zHYN=X4bsukA%8<dL%L<3?>Qbuc*B4N(+t9Oy}7y3f{Tj_X=`hfzP>&g9UXPm+uN((
zb3Bajh5^eAQdCr=Lq=i>&d$!Hv9VDG1_oq!c-R&De9!SP!W#xGm}U@$jKmb2oSf*r
z-re0TgM)*v*yj=*A0H<qe7wRN1}rm3VPT;T+4=do7JnQb9?JCew6wOiN>^8x^z`&-
zu$Gn<nVOoCgM)*FgpXHv!+-_T403gKC8wvSTClgbr$w`~v(nz)E=^5Mx}BMs(O<f|
zyPL4^a)dVwSb;&fen&?~TClynt)kEwPPY8Yt*x!3<ai;xVZbtj6ciLFXn%iS3pO@3
zT&=IKe}79}FT7#Ef@ubEhMa=6wY3<nuC68}%LDJ7ogHNb2H`R=loYJ2tjO~6a!Q3K
z-Y{U9LGttS_4+ZC6f7<-{-uS5g;4VQ;0*&7Ofv{WMq&!)=jUZ^ZZ4(56K@!>0)uRB
zZt4(H#BCad@P+})43d|Zr$a_!3RtwF5Z*9g!GAP^Fk}oL1rrk!kqB=Xu*@L2xw(4F
zF?5rYllrKSLU_Y~1=9?|jAltEx%biU*T~37T*a%!8wM<Y5Z%ei$<c#cL%J}pv9}Ef
zBd-_UFkr!q84<o@HuJ<~2)#yhXWx<63vU>(%plp>*|M~>q?3su#K7B!Aey3N<gdpQ
zZ+{rDV46X=t(Z&<p&#7e-ycf;V0goT6&QpinaSj|gkD2>*D&&j!W#xGGe}lemK%g2
z3<^Q>oQQ(L;Ozu~X$E1T`KchV%pjSWnR<}h%O50Fm&OSK0~Sm(2rHfwB;Eu~7Ve!R
zP7qjTkc^Csm>^#%-W?JoZxEPqgE)7Me}5hLYF$a>e7wI5;!IXf{>n70oZA<c86-VD
zU2iF8LHq8q9wcW$g9XzJ;`Adt3!>^r@OJu<z#w$jwEOf5sqWx;wy?z;1}rlO-4gFU
z=p||O`4bd{@aEqlEVDzatgO^#mI;)WmKLcP2|~a$-?P@#)aWb6pHOvmb?kdq-y6&Q
cpOpLg4ch0x`T-;elmGw#07*qoM6N<$f^KO9IsgCw

delta 814
zcmV+}1JV4p2*d`EBYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU!
z=1D|BRCwCVSh=p^KoD#ja|#GJBn}B7ArOB+L`=q?k`NOS@d=0{A%O%U?sK<Bny2wF
zzU|%D(#Xb)yUW$pb7`N?hk}}>X@A{(v_L)pq}%NVM-#y2^MARf(=V}K1H|ArNYVX%
zr|0uYVd%!m;_)~o5(((b4CH#f(r`GWe!owdOora?cQh%`b$Y#CG?`3jJRVazoi+n`
zJRUR{3|J>H6D1Hd#2Sr8-#}mh0YJE_fN&b!nkvNr5sSr4zEJ)qjQ{{|Q8B{70gwpP
z#0Y|m4YpV;Xn(WW(BW{PLZLv7MuR$?PS64H>qAY9$Uv6MC9T(MDwRr9tybxDI?-yi
zVtw1~c3>c`8QJZ2RIk@5nM|_(^Z7h0IXrK*TG27W8wYZ^Tv$59mmoAe527Ki57&$o
zi$zvNqQdbT;2>zXUoV@eK}(JBioq2?Ak=I&%b38Zdw)D0nP7te!MpJ1$OtdtTCK)t
z+-|qD-|v}5n$0FvDit>9dC`Pxjc}x5gBHr=G6Q5724e&O@Z767<=--+%GB@%L(ud2
z9C+ODRKB7<R2uL)D_czowv2F%h(mnX%K;7yy0fhs5rmA`FDR?3L333#|BVs3YNDKd
z`Qpg+q<<HcasQr{0Z{^Rob)(5Q5bY0#!)gNgYmKibi1Uq@~>mPC_0zHsI;T%<F&v1
zLAtnSbqWx6bEOegXTL){e^1tjYmJB<{S0n+N7joYBT)eHB345c$PR>CKw?_Ndn;dh
z7!zBNjg}=NDllARezu*e{;F7p6-qI<?9lIkW`F0yuygL@P<|)KCf%?L6h<1H%2^2n
zoxFhX3sj7wObzd#>KNwi%bR6tu)(%kL4{@5;bD)2SeB{50UO_1hP@u)jN>B#1Xtld
z?FR^s9%i!{^?E(Z<#Lgpp#ju%I{i8BFr7T(R1q8O+wB(VGLh>9An?JdREnKEn;79~
s`6m~KSdfB=5!E4o#PiHoN&XRF0GqC+|7RdJHUIzs07*qoM6N<$f**Z-zW@LL

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-mdpi/btn_keyboard_key_pressed_on.9.png
index 79621a9e6300cc77259b6af19649931e47611c4a..3daa69f314a0f6d00fed463207e9497f704b670c 100644
GIT binary patch
delta 1099
zcmV-R1ho712HyyfBYy-YNkl<Zc-rllH*XwQ6opl|V$Q*&nF{h(s8a2k0#vdROcl&I
z=LK_4E0W6$f*^@?Wg4IWH<CLGGE}%wB?AUjsZgk{{9R}k!`U}W?(7cLXn}*lgnPb&
z``)~LyZ7!T=OamRsi~=vZ>jG=Vg{+Mu9k|53Mnlum6DPY-+u)QW>k=}vNEZ!ub1QF
zV+n`Da&d9ti|{@_KUWsauR$adq`0^^^3dt&shpgg_#(W|&d!tt(-?#hJbZL?BnJlv
zQ93+4j7ugDykWpH1}Q2k(zHCdzrQcLySu7DARtXmO;T4^r$^4MdtQV$3|KIYK}bq!
z3U+pOWPE&F8h-=#W#H^bnf&tyJ#x-<?t2m5Fkl&j6c!fhMBUrl(}Jz7Eg4yRBpa`O
zlHlu-h&bmu_q_;j7_eX(gD|e4P)G}c!Jq`6{Vd_P52D0%z3)MI!+>QBQczH!Eh8}n
z8yg$)$A3@c>fOUAah>~Kgf|RWFpWWI8Hp)aTU(Q7e}7NQi}%0C^Y@P<;{59W>#M7)
zw-P>f;SB?pF-U%XzP4<0b5jeJmzU+&-$U}xho|!TQ$SvR?9wCW;maLaT3Wi5@UaVT
z7_eX(gKTea%li7d7A!0*sKS>a`RmPv{QLP*kKx}!GCw~bmn<)YHw;*=K^VW4l@%?R
zot=$nW`AZTA=$m~h5^eMBrh*d$8T|QQ46M~rXrf0oJ>e|FT7#Ef@uuG<f4@nu!1@@
zF)<OBOdfd8&CMyxH3;KJD=A?092*-;s_?`c1}tNc+}vCpKUzt_$jHbw4G#}{lG6uo
z7_eX(gU~V(Q!q3%B!h#4Nfn-W!+_-)WO{m9TYpGVe}BI(!W#xGW00Jj9BmniDd_F(
z^+kBYfCbYSgqG1h3c9<yeG%R;U>SpCXJ_jxN9%fedZe?n(-+|l0~SnU5N7niz<?(2
z=;&}&dwY9K#j3>{1}tX~J;}<-(wmH7S6A0H<F>Z8gk<-^8wM<xQ61qTv$?OYPg`g=
zYJY8QO-ObxykWpH2Fc9Kl+n>qolLY4gO-+-Yie$8j!VvZJn@DB3#Ks$uN9Mt7COP~
z;JwHh3~v~)T!XMAGnr_i6W-X^=t<5{c*B5Y43d$N5eY&I-9j`pG~7yVVeqzsz%&M7
zp}DIdu#7>{)6?}Pua`4OvWCVA0s|IIV}B4<JS#}72^uflK1Zw|u#7>{($b=W+@x4<
zh@0#|V8#q$y*18t;HGuuHqYaIV-Rby^6*WjUS++$u#7=cQ&aVovKF*NmvuK;3mPn#
z#vs;ygzo~s_9J*(`w`b5?5^4FvsXy=4xaB8j(Ed>Wemb@skXLO_mXV&`4QxY@I>Y}
zF)ZT_t-QQkH?vHjl#~=-MJEUW)A&DYRaKS#<#-pWtgMXwpVjf_{#`2a`2zF}*~{@z
Ru<ZZ<002ovPDHLkV1mMT3fcew

delta 864
zcmV-m1E2ig2=)e$BYyxHbVXQnQ*UN;cVTj606}DLVr3vnZDD6+Qe|Oed2z{QJOBU#
z7)eAyRCwCVnOkcbK@`XTd+`dQLK162OQo0SC-9;5*@uGP)EA*|J_!Zi(^A1m0wuAU
zq-e3h>)JiSw6o*v#l5sSFszBQ=lu46&Rlj>w%aX&nxZJCn}4km$OnOx%jMuS0j$^S
zDJq_bJsA+4eV`OAmrJbIYlKlZZWfEh5Rb>HzN{eg`5cW#1GQQW>2w-~VMLPxRmEnr
zLA%{XtJOj(m9m1YRx8x&^<5`YCQ1-$6sy^6?t_pK1Od@i2Et_YYO)j)gr;d0Uo`wJ
zH9`QaF_7VKh=0*&gvn%rTrP(~p@3qs=vxs6M?gHNMG*?lH-Z?eACY}OK=EvhUpFWC
z-hTz-=0hMDQbSbSqKF8x$zP!I?i#8_G8T|81E+7UG5&O6eqRU-;#rYr=Ra|hf4iS&
z^Z&-ch)xmK7)ZJD5^L>l&rz;&j9%XeG;&xhPl{~rOMgf|Hzma1po%#eKYlCi3fk+_
zi^lvr)(9Ihbe#>4a8}A;t=?m`og$`Wp&LgS-)iRfGv6TOn})EfB5Vj>eVv+}vv~3P
z9LJ|=+}%FnvOmRDZ*p)=c&-sf$~UsXmmj$N{19}%viG-`T4`!{5W5*N3`J~H!`Fwb
z7!L)qTYnN96=5~PPw`=I2N)O)U&m3yLx{wFq3lKtHBY1FzbPV)nyB_8^l)r*<ayDH
z%9wx8Q+(7Qu8SU1CkmrF;p0dZ5n&G50(#w2+WA*$zsNfmVPv%<>vL#-@qtwSoz*Qs
z*v(Uo$U6I-;@N#-eR!@BzN4SXjqVZa#Z{3gKz|M?R$Ugz3BoH7pBDbJoi8<vg)PX7
zmaQT(7*=F{UOQ#|WwCTSN<O&g(C>ui<U@CI?&eUuC&){>?i47DG`J0CDF}5s1i~*U
zA4i%R)<M=W%+;4Q+tkpRmfa32ETcC(UDtQ9Y*RxAY}Ans^upecFvaO1352fPcgi1-
zL|Gz%ZnukSwTet86X_WmL3KKvUCh0cXF64!&1P6E7LjffS)C9BJ#aFa+?_mI6k%!k
q7e=wD6fBBJh$CHeWIrJM7GMDE9iolaj`Pm|0000<MNUMnLSTY@C6k2!

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal.9.png
index eae1e3a5434f8ec54fa8cc98585e9fda99c84d60..d0090a3053c25b2abd1ae612eded0e213c1625d6 100644
GIT binary patch
delta 547
zcmZ3)vYTasay=81r;B4q#jUq@PWv4S5NS;m*0W=CR%ql@h*+{EV1e%U?nxaN7g~J&
z^sjT?=0|c#9{x#p3Qd2u+rIqg_J(c8jvvz3pO@D^bNrXxqQIia;mF}6&?Eq2)(I+g
zDSi3%t?iz@U5ME{p9_`}Ek8IP{j6~5_xFGC;ll#0%6E@X*K?nG{<%XSQt`=wr&+CH
zr<bmJvhzJZd&r(WE-fdxHr{`KvBoZZ?wLRxF+s&mPIvCzUHCF*nbpi@fpr4A@A56p
zTm@m@ek*p=bJ4EenFrlC!aKgEHK$}=yp^@rt)-xK0<+uWjjx_8HdBmIOsSM~oA~Nk
zH>*;Mc8iRG1Yc;qxpDXOUZ82ln>XAzWDs(<#L5+@$>Z$VZFK@G^b8@Ap0gD8zhABA
zm*fI8-J&mW{q^9xM|9%MoOU>!kh;BhXCTmp8X^Kf7oL!MUAlYKWJ`{RT!OuBFK&Gf
zQ7;xaB>Cv~YUjCr?xoI~yKV!e6xp}j&b`XZ#_UqxVXWv^_tY=0G<N1;6LG1Q2?EcZ
z=Ny?39=kToyVOxY0cZsa+reul?U{aYHw6!gI`L(g%wF~RcdZLYI!E#5wHGs1ocj*s
zz=NIt&}W;F_16Q}h6PWx*?wl?>8BufP4Q9<Ss4<rGbSu_Ym}>z`!o3iLQVFQ)Mbv;
e|2)2F@^x{C{V$ZNZ*ECu00K`}KbLh*2~7Z5JNnK5

delta 522
zcmdnZvWR7Zay<h}v6E*A2N2Y7q;xPaFmM)lL>4nJaCd?*qxs3xYZ(|Ak9fK`hE&XX
zJI68akb!_}ypvf>^Cq3;53YTYn$xJNU8YhfUK6gW+pI0xIQ75E6ILCy`2LNuNe@gt
zs%(3oMJpCB%bXv3aP<R)mSzDyCku{;Fh)I?^)N1Z_g$tB`))E^*jD;%+x_>9KW@Cu
zt6O$XyP6^P%d^{6yazs3up~&d9S{G~uOr6I5Vl&BA+~(yoqg}?Yp%I<T<Ey`vcz;*
z$o1UrWjnVV$Z^ni-XOT0v-idMbcSQ6s+`q+Tc<EHEzWJ>=#`lIAR;n<Mo`fHUV(*z
zne{U3k40&&yzka=gX4S0&p@;6kbBBrueJ*=TH$_W+i{4x!u|{8r)`tmcDQp$EAF{2
zVCM9ru4RMZqjPHv<9fG(jVe#;Eit|3<@wjl=}gkK6Ib1}eV|Hja3m_bWVrnMdSmx_
z$%k@^IV~?Z&J`~`8KJHE^)^TS#lp&8->zS%IbYOvWb?6<HKN};>>rc@O<$C;UeI=9
z6sy@H8FodPmI8r8jvOEc$92K<xerbz=W3sMIdk2MmsZk>PRe}k%nYZW3avQbQB!0Y
z?_QF3)s5pn|5TtUo|?6#*Bfs2a_So_J)%C<_P=|;oKuy+cxLc)^>bOr?3B<10NEqv
AG5`Po

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_off.9.png
index 13bad8f1a5939034b9539c371583c05d110f88bb..2baf7d90c3bdbb79e2b09714d4d273e02579beab 100644
GIT binary patch
delta 704
zcmV;x0zduV1=j_TBYy&(Nkl<Zc-rmUNoyiO7{>8{OFo1L4}uFQxbN+*?Y>SlW0)Mr
z+$NLn4>MH{d0<AyLAoGqkvH(WrJAlkTCv*h+}+*A&#!kkb0VLWgpd#tLPAIg2_YdQ
zgoKa~65<0x^!t7I@%jos-`=b=9F5?b7!u-tA-<nZ@a_2-j(<;2R^fS{US1#=41$F4
z8iEI0u2!&EF0I1z{(3w@`2HRwgx3)J{T}A?`AulI+YpPzAQFi{JRXN$uLtMjIFE2R
z3=+a?h%XNhFrCeO)gKHXkw`#3pNDF-3fXKHlF1~v<1uhN=OH0XL+o}tm`o<Vs?};x
zC={UCZ2qOuXn#O1mjlOffa5t231J#yyWIj`YJO>{1yU=O%TQO7{+D8@1U<Da&^Ugh
z=AcOk(-7;;2DoYQ%Y3l_zVs`V3UIM3t2kOtEub2IpW|2SHAo245In$OIP}$6EqEHw
zr=lib`Qy)KRV}0%-vT4o1&-%OZ3$r-f}0mEK7N}_r+;vGd<1T@_lE;8*!eiVRV0LI
z2p*uTHZnGwsg0K=AxuNe)P_atbUId>s<)FSAxuMXapFf@TX7MU5T+r<lQB3g$7=4_
z1qopq!c`wrwet%hwi&67mnI=hLvR~==|YGtIFC>$1QNn)2ySC*^}5wK4+&u!f?urg
z!iTLm4}S?^9OC`fAzm!C6~7#o5T+q`0A4P)Rkzy(32|kJi?`hIQWw8!vsFh$=tzj`
zLtKo(OI^ic(Q3TqNJ5x~XsZZXK^@FyyksXKOhfPh`9i^JPOAkH!Z?H)tnqd}Tk+;H
z2_YdQgoKa~5<)_JTnOF_p2=h&olaYY=goNp0yzPY5MDz>qfy`kA$)Me7O7MUI1kSc
mz)A>tNM1sGmj76G@#i<6Q_wPws({)60000<MNUMnLSTXhb~s4@

delta 712
zcmV;(0yq8F1>XgbBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET5
zfk{L`RCt{2oXc(+K@dd`kD%}ntk|J|h?ntK@Yl|7@CgX9V!<Qg-C1xe1QNGr;#fnA
zIuhyyv#7bc-0B)n8}5UkPhpgPE98+Wm5Z+6UT`6V3n5$x;eSF17ecrY!i5kngm58*
z3n8Mj#%MGG;M?;v0OfL;x{b$U0KUJxyn0QVclH5PV_$xKdIDfRp963_9zVXK|45}$
z0bn>B0#L1<Z})IG{Bf;2LPQ<0TCJ|u5Yl>VQ7WAy&>T>fLvTmDPSg>H{T_hRon*su
zxddP`nE<faY<~b~Hk$zSdOZLdjRtUOg-3Hh#L?~u5p~2#3Z4qihV6C>z-%@HpwsC9
z(Cv1Ci!-LvDFFS!0JwCGEcLr1MAQ-Cbh=uL;>UUoK&#aPpkA+EeQz0IUE=ooEcLr1
zMBEW~k`bS3H2@CkUa!?t(azDX&y#WP2$8L86r2(5c7Gdy<zfLqSy^D2VD;H7Wcvu~
zHd*R-M~F-rQS^*qv%;5tAGqu%Z2$0CU1Xr0<yu`MPyOx)5zh$ywu;V(-EIe5GGU;d
zV@=(`vS6VMxqaT?8Igk|GQzM-ur({55jjX=)_5;IYvdq_=MnG4XN?@Z(KSw2YpP_a
z-yI>|=zkjFYE6|a^}8d)Lv#(RKDNVjM~I|mjeo^wjU2cmggZh+9btbx_UZG1@Qe`d
z2vH?+o-5p}sgk9BcZ8^Ne*5;XqWLq+2PED#Zq`)sjL3oSBZNCbWSTW%Z>%PPJ0d$S
zgm58*3n5$x;X()(LPYlwd!691HMJe)?U}CF+d*~i2oZIJortmX5ve)CPA=Ph#Llg{
uBZU7SD&dY0r4Yiebd8X@W1=@0Lf|J>rBLx_#ELio0000<MNUMnLSTYetwxRj

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_normal_on.9.png
index 853b8bc6e9d29907f2a250285a57e0f50828d1fd..6812f9e8fc92e1476c880e0ae4a0cc615c75657d 100644
GIT binary patch
delta 1090
zcmV-I1ikyM2-XOYBYy-PNkl<Zc-rmU&1)ld9LMo(OP_YVcovLH-E9jkNLyReHqFB%
zlbOt8GMUN4<e}+P>}J(&n)n1=aKRoFJbUmYxCb9lLD9p)dQw3b1-&Txx9H?E`5gr7
zmKhUw+;89oDKo!ee(ysvze$=47aokqAAJwZi9D<*1cjgw6n}z3PzVY^At=QEI>g9G
z-{=U8j@`$oi|x<GQ;2^n1jljk!qE}jXt#%=ecabMhEBHw-IrW1zTEv=Z2NKd7}$6|
z&BJ+OP>6pDanNi+wN`_&Z4Z=PaaC#+sBKrFu~&z^XB%+P+WD(%F1DTR-`L%T!)u2y
zK0Xc<!fOb2f`6)}fugDdrRf@E4IRv)0p+>{+Xp4syIz6)=Ulrj8|u!so^s6svt$4Z
zJ9TjiD1_G#mSuq~%Y&u3G);wEUWZaO4~=FKnnxm3c0yn`9)-&83^b1vs2>!eXd7Tx
zOEB$3n5GauLgY;oGLke<lI&7+1&o3YcEg0j8yeht^M5gT|FaO>{cZ-{`#1zQPalW<
z=S?Wr^I+FYaPiU<oN=K=A?_Q(FbohyaiB7p3@DlmMnQwht_iQ)+JH~*T!tThn}r{L
zcisEN^}**)K<9)5yOD=Vtq7MMnFb2sHAF6#gR~$Fl;FhZkyHt?mJ0Sx9$tSd3SWKy
zB(MMs3x9Lxn;AGc6`-_jK)G4~3gI_|p3Opv=Ld={ibP2OH79{p)uDT{03Urh1K<99
z1@8TN6~6xI3f%tWDzrLfFl`MAWfMHVSW<{SP1hlrN(~n8N(*U_R1vb40@ZyBUVEbe
z@7#V0KK$Y`y#4MnoSfQFZWy4OGUTlsc)p;b5PyAaF_hrAp-85Zz>7RcssOqv0ed^W
z-r0xtt1W1?_kg`!YIzAViU4{}gQ@9Bpb%a|$ch5-L}Dmd5H987g%pT#8sw}9T0Y})
z;`FG_^B!3jK#+MzIb(YiRe{OLNuUs3LrA>^ks}t14OKiIhXm*1QVB?<IpBpPq(v9|
zJAcJ<z$FuqNW?*sGB7bQ0TjY(2+>&x^=w6>|BaX{>coM#D|QC9o$b%YvrBji;WvaJ
z3J}?f1RA?gqY!>Wq|<5G+}sQ_zPGS*Pzb*v*fM#2V<XVmJUoBoM<M#yGC91y9%yVH
z6vA%^E}4X9!r?$;^PmvEL-fBow6?YuXn%>`65l}~{Dxo$SY2HWG`6g#5a$eW=2!06
zEwrbdg9Ta4i4da@=MQma40h{mWo0GMqR}W&2)`lNEw5$gU_r)i{ZR<NA=m+ymX`x9
zvb6;i!gmN~aL>}xQlLd55ugwhf<jOT3PB+##PC9d!(mulT!e*%g+O8F&E_#SHai9s
z!fS|7C<JqJb1*wQ8z}Sh^T6ie`5#~@1pRCRg?LzgvFyyppX!lvnP`QRasU7T07*qo
IM6N<$f=4m)jsO4v

delta 1049
zcmV+!1m^qJ2(1W^BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
z&q+i<RCt{2oZD{HNDziUdpst?X%i#_yB7#4T%gsW6%vRC2rmt9!9lE|z0HPG7y=20
z!H4FeswU}4(lP9MGNY|eipt}$-R0_E)zv+AU@-{#cV=XV9Dn&gljUda!J^=SP&^Qd
z2SV{cC>{vK1EF{z6c2<_oV5cfvMk=1em;p183^I9N#cr7l5>rXjST?)xN`@9JfBb8
zW|feeB68b(yflJ#ecQ%Lc>e4e0FNI%KCw+#gp$k=>$h$JFdmNqXqu*1XRM>MT$P}9
zP~?%#2Q!M$o_{wbG<B={<+%0rbpVFLApliX9ckMYp(GWtzrP>Z&?Wu;3rqpl<Hc|Q
z!0?>dG8bDEVogD&gt`?aRNq9oRb{pYV4&A?MI=ZnqSnZ@J?Dmlu}k{JMulQ1_S}l>
zFGsroeERr84i6vY`1}e07cTv-7rFo(_#HwMHFF%U2!AE1h}OpCo^ylsRGUdVngYlR
z`DW$(7XW_!?I{4aABx*ouZa@2w<HH_{`CZam#-cGP)%YDOh+ZPhi}Ujp(GU%Gz**U
zjU!zo)+))>wH*Ndyjucr<7OG1cKNd0Mp;e(`20ocp3i%0a$KX=OH5W=5lUJSbIuXj
zOncV;#ea+9<}a&p{a|Q$!P*ts7>$O}b+QiryCRfsqejm;Vw%kxn=8m?s|a^@uLJOI
zXA6Lp74c_S%88SSocHFnC}KR8(WI_E0g!8blB$ed5lW{V(f1s~u702hoij|NB7F5y
z_CJ4m4}kaMO#oKcJ^--uRuu5h)@}Lz-B&qZ=YJeUW)&upJ&Y?tN#_X74SnZ`DW<?G
zt|#__wEy?!c>vzNxeq{DN<A_8D)qzed!38ysUlQS=&aLoL<bfkM;Io&P&ej)?$`B(
zTGmDOKFDZb!_Bnb(cDt2ZED#+$gDy>xoua3vKVs>Yfo*~W>LFMqbpaH{k{?Z&M_Sg
z+JBi<Z2LU0QNwe@sVu~L#1W=lEGBEL^o-2W(`Gh;ZZxgWH9B+3sL@7t?#%v{`Lmbl
z;J+(EIc3y{v+uIf#eY|XvY4aBf6R2|;&sI7EYw`1FS_{eicnk;iYr1%KUHUnnAZwb
zPjvC$6`^>JP+Sp8L1J<jX6&-k#eY|XQhy)|KF0=a-fNb9;iJY6kRCN=?6TrH;s@|L
zLUBbXo#q;yUV&L;ToK*zKqwvv#RH*uAQTUT;(<_-b%ee9WOmsqOnb7XuH^~d)YE~k
z2qmeA?d@#<Mxzn1e2TC)m+d}M@2$Eb6#qX|iYr3NLI}xsos?x)O!5Xp2z&>F#uC#C
T)O92K00000NkvXXu0mjfo&4~A

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed.9.png
index 1edfd64fed2b50209084569ba49f98258abd37fd..a932249a8567c35b57cf1f2a625f2cfc22c0e1fa 100644
GIT binary patch
delta 986
zcmV<0110>$1@8xtBYy+7Nkl<Zc-rlp*-9%>5Ji0viT;@R6hU!L;uz;RN8_x~;D8!I
z5K-~(ys)|J!Gc_K(@hyj1=gFK+P&;k=k#e~S66#{zW&lSK{}NX5h6lFhzJoOB1D9U
z5D_9mgrkUofdTRM_9i|*Kfm$u@gd&d-vvMC1$D{MDBsY~kbh`KMu_;Ah?kca@%;QO
zo}Qk>!^4BPySo#&x3}Wv=EfE3l7n3JdR>tF_4QTs^z?`j(W;2Y$45cotE($<ets@a
zPfx}1@v%5MI&y`&<RBM0$&Hx4zCIBmS{1>qc6oUzC`5pRg9EX@zc2Ro_FSPZImks$
za^K(Ii{9Q|5q~0D6+tsPJ3A8;BEatMuGrq*7F%0eu27d8<YMZOo9hS>Nkv>=UyGBI
z6TvN5E|&#?Ha0fI`ue&n)FlT(DwT@h7sqvkh@>KFwVF6QJQOr3Zb<^It*wdG)m2xh
zOAdsPliVz)AtI>=mLH}Bx8COFrXa}5%8FQCUUr4L<bPnQ*eSwwgow06FyPM4j-Vj7
zD8ZJNmRzAOIhZ2kWH}8HX^E&-tAgf3Gb)uzf*^~Fi(+A6!4>L~gDFBzmidc|3lSpH
z5@9z`6eIw_ip8QU)U_gL<{=_&5e#6LO_~!;i(vEf^R7^r9OSagD39eKBB=-luv=<7
zCFbVl#DDDUtSi*DQ-o$tZjSOoL{bqPY%m}N?35tb%*>1{)U{K@E~6YHgovafxTWl}
z$wr2zMX>4VX;-LA4sy{nY3?B+EfE}bu^jQ(Yp2B2)RZU`3a(JsP7!j_+&Rn*5ow9A
z%ch+Y1k301u29!b5psrzv_&w0T{bC5(;`?dmw$7Gy5wMkMNV>ah#Ml3ieLb{Y*LVB
zMX<@qNmr<An<hEQ&Ea#1NGgH>tOyFytOzzSG2sezZPVl-jEz-@_)ifH|KyHid<LWd
z1!-0U8y_Ecg}SzB+Km<05h9ut(e;xEyS1hu&5B@SV`HvR*EUVNvEoHfh)61e0qoYA
zf`2qCf{l)jx<XysH0{QU7gU){Mudn~MKAyZQh<UqD}s%TjJQHw+ca6;$<2$N5RsOM
zpQZ*)tKFssxl@}O9WSEU4b^XNvB}YBi_LX}h@>KT47W#hY^*5!+lRO0AeTL=<2ph_
zS|WaW2}~2ENqIrtMlXSRF%=@x62XPr4O11jWV<y>dt^s$Uj21<cZ(3ws)+vne!-S@
zczF05e6e(JaPU_lht0=^E1S)VmcIZSBH~N(A)-_MV_Cz`9}RY<n6X}V7ytkO07*qo
IM6N<$g3>wGL;wH)

delta 686
zcmV;f0#W_%2gL=DBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET5
zXGugsRCt{2oK0@RFc3z+K!B@o7uFnt^KcP%Y`Fy&VZpz<=#0`#@x(zWG0FF&%5tO9
z>F_$^xN(6z2=dVz#h*aNOfl&@f?QxC1SUdYA_OKvU?K!2LVsW)1SUdYA_OKvaPKuX
zn+*V9wORoH%Cf9oe?FhTUmQYh?24i&YU5;5e_u7e{eBMs*lxGc*P;=EYs7B10{}c8
z4|mMPi0O0+pfW=Zp3P<efc1I}0JvN(|6Yqm2&H%Nd_DsJuGcF7;C{c?M*SVMwW2F*
zZLlWjxL7P|bAKA);2NRt@a=X3P}KxALg%>{p*2F$c+><hJ{lpoM%bF523SLKF(S6E
z(KtP5gy0%syMi?!7bEQVwd)Iw&x1w?Nk%lSEORr$)(qB&79<&=8MiefmzAZRzY`aY
z5L_b^+n1ZhuK7efG(t$a*J!E@xz`A;BU;d^Ml{X)s(%rdcjBNCLQ;+R_O8KoL<<Jd
zHDY(0>>6*7WQ3iwMhuuybd3~fgwSfw@>{w_tlN3e2w~9s5pAFm!dqP<^?Fxu9q~a%
zv5ue-EogPGVL$&ZMx;O^gc8nqF4l+<QsVbnOE+aSVnmE;9pS}CBZNU4VXu482q9@d
zBDND0dw<TcE1Kf6qX&%;TqEpL@3B!y$^0jYJ&SG6ZP++pK_i4DBQ(RY-Riz~vF$mH
zm>C{4LP+Ww_H>_O|N7jw5o&-nBLx~ExJH~#Cjix%E<LA_`<X5^VLqSN;?lTZK_dj$
zh{NFk09Y=U0P^V;me@&PHRE_Z0;r6B1&t8+e<!E}8X*)Rgp_-PZ#TyM0YeD*0if&{
UQg5sE8~^|S07*qoM6N<$f+kQX-~a#s

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_off.9.png
index dfdbfadd361ebc26755afb5996cf9bc487e6c63a..16416f00070481bca5ce1db2f0ee830d875b3fa0 100644
GIT binary patch
delta 1108
zcmV-a1gra;2j~cpBYy-hNkl<Zc-rlp$4YBa7)I|%K_ACQaN<Cm3Mx7fMToJ*ZtN!Z
z-eT|FffEZ@P+!b@^5GiX1G!gnl58*j!Wu+jpYJSo-#h;L^*w$*KKV95ekvxyM3@K@
zVIoX~i7*i+!bF&e9ExaeZWb>uFXH|EUA(@&3V#3m{4AcHo_}%*&m{-B$ocm6CL)oD
z_=*e@@i!5VkB{Qv;X&No+=%PzYjJULA<oXuoI(zAk@NokULY(#KVO)LbVc0W-ipi1
zOL25`BzAUo#Ky*kSYKav3OUGicz7tteRp>!3JVK`iAYxjRSW^!+uLGwbyX}bE{gg2
z`JB+%*(r*Pi+@E?QIRMqDG?(hBVuc7OOTuQFcCpT(E04{?uxawH9@fH>1i=BF_BgJ
z`uYSfTv=Hu>g($TpG!+i#lpgZps8G4T?rErR0N&P=H{kYT3Qkah{xk%Y-}v6)Ya9A
zs;Vl{*x2|7;c!?~S67Rko*qH&^Ye3IB7%xwqQdY*=YKdgH6>!Pm>3-$%_^Z#NYvKW
z3O)lOXext)gM!>9B2ywLAdyH2I!QV)f({Q4XBA$oqM}0Z!VL`#g3mM!I!h*8r>CdF
zL<AK<0SudSb8~`Dk_ik!vjxu?7#I*WH8rBVyj;*^#>dA6Imvx;aw1GbP!SZslzMh{
zR?taOb$<z%ZD@)!Gc$rFK(5KjNx|RAeSCZ@Ohix-6tJ?gBA7@Kh^iZnMxEjp#qhqo
zyewFJnTVhwD1ZWafWPx%QRIsL{(eC&ng~k*6OkzqY<V%YW+F8-G$g2+EOK0d5OR@|
z+y@5-!bAiWvA@4B7^av=(Ik3%dqr1Qms1czE`M^eB;Y*?3JQdY2r7aC{UQj!rm8Et
zySoLsnD8;x-rL&~CL*W^Hf@>0vUNr$N!4s`Z+8kp$i>8p+`Na0$dm{cF+70biU1tD
zyP~6`Ly(J!6}j2gHxWTaPyhw;0ESHhw6(Q4g(gBSwg*@wnutt`pg<nLut|W{)>fy`
zM1ROdP8NwKB2yx`2EekGjTnYaswS7tT!9dBk(1n96EG296!Gyd5iDz&!ZK_UpsA_J
zDJ?B6f?VVzH;2I{;)^0u%AiVdaKZx^HVMEXtSe|D<YMcN+$JJhB6tA9CIS2xH*yV4
zgj_7X*f!vLfQbkyV$+k5B<@K_67?h`iGO$xOVZ>?ND}hGxFqaJNJ6eYPePKICm~6~
zlaMeGnGo^W$xy|pa#TU8r2i^Ut|13gZI<I~*>TauL<AM_zf7pek+lhxiAb?|n`*0$
zrjqL|I{)S^x%?MOGPY;=<3(`5<G&WbgQ$Yv^`Z#Z0y1{w_v1xyWys$&{6~HqxlOr(
z94rC+2RvLe%*)FYCL&!CWo2c8PKfPt0<i3LedI?Da*-1;yhqw!fHe{JC3zF^Q~qOF
a%AemMt6O+tt0}nv0000<MNUMnLSTaY3G~_k

delta 902
zcmV;119|-D2%HCyBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
zK1oDDRCt{2oV`xtKomxgL--M*012c}Lz99Rpr)eXQFszwh7u}TB$~8TR0t}h0OH?U
z?ETj3*?2O}5*))l5*pb?(dFj&&K+wE%m%srG)DGUAU~O`(|>dXvw|nW@I)A%2*VR$
zcp?l>gyD%WJQ0Q`!tg{G(Y40m;UNGA2L}LjyIlZ2K0Zogp68|UtH`pfG<G_j(x`Zj
zkB<R3Iy$QSEH}c48gY7h3c&mOI{;5lPXN5Vy_L?(jHZwQb8~Y*VeaDMA^-~u3jplz
z?*s7s{QU1{On*Jfme7q|e0g~R;Njr`C^D(@GGkVZkO}ki^8hR@Edj8yvQoP4Mns4j
z@%s7-6d4T1uQuZP`Wk?Xiwgkm?(P8C*w_GIcXt<n&CN}qm`zk8Vz?1T)Chg!GDEc?
ztPz?$rp0hL1Yj^20MP680NC2v0*V@Tetr(X-rgQi)PD}eAH$6>qDJW6*Eb)I%Jj5r
z#O>`Z0PE}P0IaUAmaeN`P#<w~a|6Kg@-mQStQ%oOjR@Be<Hl*BsvoXxgk}fz4f_2$
zak&vjEhEBJXE;s^)rQN<OQ5I);jEyw(AwHs?fBdXBWczM@6D>?X(0o)x3>Yfy1D`i
z1GJXt_ka5%<4dU(ZiLZ_Swnq`R+T$DJ3z6TRG$#8ecXr%XvM4{!qu<P>>*>+X;$?e
zqi`dPR@8`bd`4Vugpp*#xZ2S4GfPo5TX<(#gQU)KR%VTHRK=B2Gu#LxYJ{lD<gCpa
z;jwp?6HsgQ*|r+tMod7h8qwCy(v7G=QfC<+w|~uu6x;~oTh@s1d<t%a@hw-MlRRa2
zBaAKy?{l@SMtC3bA9VS>*K%aa##Q6C7?FY-VI=ht!fV72Al^sR9Gl`Z;&UU6c#Y7#
z6^vQc^@ga7r$&5kgb_6&d?O|twUec36i3ylcw@K`Mv@WQcc3xc$*RmZ^-fn+oZ3;7
zVt=k1VI&!$ovc+RH2plHYR8P?b|Y#KHRAsM9w^?=(B38Obk*4OT0^xWj6)_oK0X4)
zuDemV5k}OAlamvm*w+|7160kJH6s+4Og=k1D;<x*jWGQGP#JE7k>z>*=N^mDc4MM{
cV4mmv0?_vN5)NU2x&QzG07*qoM6N<$f@fu`NB{r;

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_dark_pressed_on.9.png
index 0e2733e1786e3a38a9123c7e1be532f62c4cbd1a..3ca93fdb3e73dd66de559df6a8ea9432479a1a8d 100644
GIT binary patch
delta 1469
zcmV;u1w#7V3C;_UBYy>zNkl<Zc-rmU$xj<s00!`oN(ixJxmQZlB(2(8uf6m?;8gX}
zQ!kY&b}&2M_XV)QgBNVP@5Vp~su36nNNuGyYNhtls{LD1`x}3iYKemEp_7&u>32w!
zcs_rcdGp?z33u+i8NXgPy)i*<D^Y|fLKGp25JiY0L=mD0QGdk$x`?i>rn_Bm_pK}3
zmGSTM--{xYDq?JG3{Fl?;Qag?&d$z&e_pHA;Q07hQMFprNexcuRCaoH0%tEz;r#q1
zTwGiLf3ML@!F9?IMf_6{M@L6ctyW=ocNfa#G8760$mMd1%IEV?D9TFZ0+cI7*xo5Y
zWmmSdw+(yGcYk32#dA13tO5({>FEJcM7u>C92`KgScFt61<_~}LZJ`@0s%z?gFy&|
zWsztYVu=VOGf_zAV~{Dxvc&}CiYdsKvQXJ6L$&%f3=H&xD5BjWcqy=eNF)N1B!SQ8
zgVohlMfiMPSoixN5b{GL9)MLz178k(2%mrP5WX7w2!Dc6BV-FnD3o%rzrP3f?hk+{
zqTM1mC~j?S!N$f0Fu2?828YAZ8K=zUcEXC+4eNnb@Q1Zv_Ph<n7mwid`zMguc?2fs
zyO7LDkjW=uXLlR!KNx^ZCR(D1D~sSD84ibGZEX!$fX!wDi^b9rt5s%q*ucH)0H5TM
z1wVzo<A2BS<L~doPk+c>{VFRRyaS>55TtW)C|64G;Nd+GMYLN4CrrFea&UCHTwt|Y
z!E82n#A1=z>{f7j?BMmgA)NdS&VG0bEPz<d@wZPPnID5xHU^>yrHbHGmlGWhk{smt
zMT|ycXG}7)#RPVz6_&jY*i0Cpa`+U!`{fzD`hV>`_~z$lP}u(fQh5pDsR$HHd1!mE
z6h$;;vsvJ6b7f@(I7pgICeZ8kiZB`tV6mFO;kJNRazi{j2kFYkuw8u&sq!bXq6NZR
z5=3KR$QN?Z_Jm3l(Ui$#fK%$_<z?U?$x~aW(<wr4(1X!r0E^8Ce-*;PGbTYS6@tyU
z1b<S<3;uu)LYqOzW;4+CqDvIfluoC?@Am^IQXC|CN-r%fDMG82>2zAq8+2ea>w(2s
zohGm~*<EJfZFj}H4AO=l_&xgj`#}`ZZV_C5udlBICsG_Fc}g!XE-Gqisi|H{gH|Wg
z8?-W`4h&63lOC)#3%ETlU~YbozP>&XMSrwgL^7EKPOUkSG8hcNQ+j@W{zfe<(1L97
z?^qabzs~xSzJa+Di3EruIxQj|kAv6i1x}=RNif*#?5wI-7;`ZvmjwJCy}i94is-Zm
zeqd`63@|e@qpG>NIbbeM__!p9#bO|e=(GrK+Hz{mtu+pkJT)~MjjC7(b8*7Q+<*KY
zq6npm@OV7H190NQ08>*_s+yjj2Ik^~kGc7XQWVi?5&QstAP>OXCId`PPO6HR2y=0J
zfQv*?gwjRu19<@6HW^@IVnS8CM3{>?xkwa6C{+Ys18_Q>z>OH*HhF6Dr8Bj#5awb|
z=HA@g1X08_i+Fui5nO(A3d`Fj1AmN;j;d;Wd>ojIIhmUeu|*NrEaK8KcuLvrcHjYc
z+hl-|kr7q#5@9Z_RtwB6inysFcmUou8DMyLSXI14n2U=qZX58m22n((MTF}mG}!7T
zG%VFiXqc)WtYNfXLc>r!jG9L3B{VSCV!eb0YrTYqV7-K(C_;%Mnu82aF@K(NJOz15
z4h;>dia9vd=5m}{c6`xA6wzrB|CI?9bKKa3N)&O)=Iv!$b-Yym?Jc_2&0FSTPQ~{u
zZ+#Jbz|;C#01w1dP^lM1+Ql5q#hiR)TCqodx4sCzGSqr$v_A6VBR91$2bTb?4|w=`
zWOsKrh$7l8VsLN}I0$jOoHhZt>{a`bA9FAlbFvtIkGB5<tSCbK*aT6;ZTX31m;U+_
XD`>H(9@c!400000NkvXXu0mjf1YWDH

delta 1225
zcmV;)1UCE53)~5iBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
zen~_@RCt{2oXc(;MHE0!zsAWJ3<M!|QP{9Ra$v(Bz=E(a3wC^j7yL%}2zIQ!U}3M!
z2e3>er0fs~5nGm+8G9Z*#p2%E<E~7XdmizOlR8pVQ$6mP+kaJOZdLUoupK!4w=t4y
zfxOKm>82yt7Ggsvu_2V$5K3$aB{qZ-8$yW<p~Qwz@=XU2B1!5ms(KTyR)BNYiy+Ym
zCAii&JUj&8;NSp&JQsnc(`l`ARm-n;$?}R3)f=`ssg<d&7!oa=llYE~jsST2^ryz}
zibg0wBTi0E0DmaU5`e3#D*z^wNo~8Cv9_SBr?s2X)arEulFAJELo*^xGXOe82Y{j|
z0C@7`+uCtlCmNvyM~%^F1VF#v2VgiH*0!4&>oUSOA<N`NmRqU0AhTRx`)M89E=G*U
zVnp};E&xR#hdW1zXoL|oVmuxLGZXxB-9}h0NHZz(LVtReOv;Ok7XUne_A3DW!QTMv
z?L7kE^T*#w{hd!F{z;<8AqHEHnfu*qIf6HUpb^&NW`^YkKS$W;u{7FIW<*|Cl92Gq
z(LVt6E`I^wt8c`Rk3N0?z+Zo!1MuRHp8@E0e+0m}cO}kJ;+*9a^!-@~(Fi4Ig#Grd
z=l#-5S${Q0R6S&)K`LF9O|1)`1Mv6@nGZaC)T!;aw<m|u=}7K6|MwXHyE|V3P-=Wh
zV6hU7P=ZGIYlxf5RcZR%Zddy2z4s+I_#LYgNj`WWFE0O+!*bL1aYZAPg^ci5oqoAA
zmLqh@V>8QgBBN2_J_F$V>~{d}-IMPtI<n(%D1ZB%z0};nr?S7Tg|rNr8;wv}jT-)W
zho<_<IO*Y14H@g`(eLS6;p}?=2L0avxZjnT<)HUa1O6I-%Yjt0#Nw}?shTH7G(y>`
zQKL%or5ZMt4Oau1A6&Q(0qE}jAaD02e49CrhBB{lQ>hoZj3QJ0ywE5TjZn5@)KC)p
z4S(y5a;jyiJvtdn_V4#E<?n4jomgb498R9==;71|FGtKH8lh}ej<AnODmBausoHPd
zKdWs<<hgCv`9sz|&S-?v%7~kC!@AF6``Fr|tS)HO-%nHRPc<md=3jpa5sgq<%`9(g
z)L0g$Gf=y(VWZ3<SK^`(N~^2kO)dGlu77zhivRt~jB3#cWuevQw&n<9m8<m82xXxh
z@w#W0%d(F6q7h1~nWbO9Yeuvo8lk+AIl|xGhG>LxCsv<rx#_HXh-ie8)8cuqyOty3
zJYofM<b2QECc7yc-xVX;5RFh4x;sDSh_`_7JYvCeQ>-JtXoM2Z5&jJYS|&~JZ-0o!
zcov8+8leP@uq#MSWv2H?ZyJlEsjRMq1&Br{t&FfIV661-y|$LW?fFFYELTIE_6%AZ
zbE6STD<e7`xdWxigiW81@Qv8n*#Ty8M<W&>Xhg5q17^=>*poYUSH6{-UTavc@Z&HO
z1_QbA(w-`qM>IkS8gYDl48Z>WK0@&7Il!{TJ<hj*Z-m8VCZC?3*6Q<!Mkw+Bp;Dp|
nO5&UgKI^31bz_1D=$zw!#$+<Antkh!00000NkvXXu0mjf<ML6c

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_fulltrans_pressed.9.png
index 00c4476042a759cf40639bd41d4e1d87e4ee9675..df3b5ba2dbcddb776108bb397b07507b7758ec5a 100644
GIT binary patch
literal 1869
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

delta 1371
zcmV-h1*H1T4($q%BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET8
z4@pEpRCt{2oWE}4Mi7TTQdDq8QW;2^9FQ(4(+L4m<ptd4WnB7M45T&g6#@kAu1tSb
z0=O^|*f~>V3eQ->(JV#Tl57F<1B}6vgtbe4`t9r=3f_i#`F~5LQmItx2voW9mlA)J
z_=CiEhpEoqbT9Ewi615Ys~6M<t<D=(<I2APTwGk70W21a_W&m+CpAD-Rh`5hpspY9
zV_nz19LJtF<rh`5?|UCBTkg89lIYLZ0C#tH9l-VV^(TPy^YbhD*B|sVk_eF};(LI_
zV(}e7+qRzpZhvoY|AQ3~N`Q&T`B5^Ss}c!XRuT*u10t%bYHYi-omNSN$P>{3+~41~
z0L$gFljHhiJqeqL7#x4D3<<qNY&1j+qFxVl0Bzg0ww?APk_eH%Gc$mPhld_uxm@ZU
z9mEm|ri{IQ2OgoH?|Ta+q_Slt!q;2RYdfuy2vJBx+kdtLB32LNQ6_%?LQl|3D=F{9
zBTPAr-XoqWA)jx^N+L?yL<BJSZcXhau-EU)BTNjv!q+#6n4n1>VcZ#5?<G{FOmbJ5
zCGv!QW~uVMh|hbHhzS}cLZi9UgA6lx@;mW_P4XU5I<ECdBDPRC)-XhLu<jLGc)?Cb
zpST&d-hUzCiBJ!l&1RZd=!5s|P9jvHM<@Y)%+X28Hnmsq`NRt}7=3yLUZK534eKP6
z9#NJjqK1_>n0%sxLB=-FhzIOyVRw*OuAPiQp|0yr&R4cf06-EU3W+eIIPE>K$0zgx
z`&!~3CFAKL*K4RZm{DmGQBsKrKl;QTe*>CYkADinQFIbfQkX}WxxYcwJL|RYvBf5p
zdJWuMWzJbn&}grr8JZt`dW}4hS5?psJ(V6&Qs@!>4tg?<Me1F_%2#?sNufvJR*1|j
z@lg@s=Q>SHk0@!>BmC+!N48BkSVd2d*rcgMglnL0U8Q!AM3fa0VHEZrM<`$KB%-7e
z5r0cqUv1|2dW}J3RsSTSq*AY;6A$4^(h<t{dPzh{4UczAr<n9kc@mD=BkUoGNkmBv
z!!?31k9h4l$>(Zh?KO!gDeN_ZeUW}O`6!jE;S&_jQ2D(_exKr7_YAZ4sjJ|=-Z?{6
z(x^uSyV9`7jb7V3!oAw1cg;wTC@Unw?0-h{>lvFoVnD{Oy(GvK^#j5&k#C3DDV#)<
z6cS<XU@v80(*DXr6A>OS^%~kPl8CZOL_D5so=*Fnx7f%A@7UqaTYr48rz+Ta+rz3I
z+AflavPM0kX&OI^4V2&bRUK+~zAyXtIJ92cj`WBL3db7yUGn=XOYduJ@#_HFW`Cfg
zJ8d_`N-ARV3H=v2)+j0T2-8~t>u&`6G00S}Fy{v@A6y@<wFc$EYPb27fI)qOUNAkP
zq*0H+y*K%Ekt1PSGMMfaB{D`y(6X;@dc*{UM9k-N?T5qfa_P5aHj(jCO(h|CH@pI9
znnp=UB1#H-4JBeWn+<-e1?L&1SbxeVw#_(4ya8Az!2iY!t2tQBC;W=uladILC!zwF
z&*!=-KKQZ)v)exEbyG9VNh*ycN+cNX&?m2Rv0C;Os*(tiC*mW(<>lqK0B2`se*>JJ
zp56mgRi$}GNW`vxYsS9;Y`j6wha@bQ%YnDu+}ykaxVpOf+P2dwi4gfm^i;FNUnTw|
z@vFmBXK(sP;vW)!llZ${kVJ?)5no7rFYz0R^TSkUZ+ejUm&8vJKkEfaglMXbzxLYZ
dOSQ3`{{yPc!S1;{brk>r002ovPDHLkV1oDfhRy&0

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_normal.9.png
index ea13a7fdf5edb652975ff47544ae95174dbb7444..aa4f44fdd4661595d0f1bf07e6f3066b22545c61 100644
GIT binary patch
delta 524
zcmbQpvV>)Vay{c~PZ!6Kid%2*?Cf$16li(qDN?IiD`09E;B)tT?R{4PLqW$cj_C_#
zaLGQ|cEV)ZhvmNW^>=({d3F8z{~tB~zvYYlyuzZ$;mF}6&?L~J0AlVDRGRCz`1RMW
zci(rf&f6}1D#hr9B#+}C)<V1a7hje*9e;c=^v>_1oeK&qdg@sOMIIGcEI6C?*lM1#
zRIidFOY4pI-!ryGE&N*bR_oo_Vva*x8*jh8khIa^^wUeBcV<5qII>#d*=Nf~3HpWa
z-<EZ=B(^?yoo+RE(aoG^K=tj*71jvU{OviOY%<d)=IGv^A4FP2o0#1e3xYJ{+u5*!
z)f-4Gcv$d4>s>uWgUo@(IANf<6^bvv|6cdl5@cxhira5@^*t8=Y8Rj6w;bp`XMr$|
zIG<Z@x4o|D^H6C5I=yNA{Itz4K{D%`GEAh_z5ZI|0aV1d;`-}#kB@qRnOC#m%&^s9
zroWTTpHs5zAzGr>>$gVfs&uF;$|V&z?2IXsU4N@-gHwUS%8()$b7MpahzSi_jz@n5
zTAdg<A6-`b^wZ|l(;|)8XLof~f0kJoz`?1c;i4nvd@@ByRfscuX^^H!|M9>F@&~w_
k>?esIS^g*a=Hc`FEtjfWLnCL4GXR07s~@Y&I;Vst0C$P?X8-^I

delta 504
zcmZ3&GLdD1ay<h}v6E*A2N2Y7q;xPaFmM)lL>4nJaCd?*qxs3xYZ(|AH+#A`hE&XX
zd*@*8AqSC`hxZ#?#6_GH_XP_JZ4F>Zk8(^%C{74-;o5UU&@j$szKE-!-J14``y6f@
zFi@%8>-#lVF*(fl-rlB#1p<#0jyQHS3$QElImxtG)N>R9MO13m23|L1IQ>+p;bqCK
z(~II%m)_3J-5$+gHv8=5?7JMC(i`K}GiJ<UYk2(?B%Nxs)As!5pE3<svse$jEcsQL
zTYp+=TjZAq4+|I`RM>pmG~<7f-TcOi{$gd7oFh+*7~fSphlXB!+B|u=+rIt|X~jh4
zB4Mw5m)V*1&)qz3bm*u@&)W0O>~*>Fk?NKmf{)z5N_M^3<@{vjNA`QlM|vlORUg?r
z-@a2?QQp?n$iJ7*%C|SDGOOf)t<xP2$x!7*zYCO)1Uuj1`1zuIqcKq4&D2yW4`x<g
z%NdSy#XAL+O&))XJl#GK$a=C;5hPs*v<n^>z_7Ta)iEXL<9_cy$ADI*@A~xp(!WPj
z{eM0!byu&v0}6-RZy6$V#2hNuTNWvQ`)ylbzyH^VTXA6_4FBb|3YC|5X>R@5Q~I)(
eGv8q85%J~}iJIyA^*#fmmBG{1&t;ucLK6UewcMrv

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_popup_selected.9.png
index 057c5716edf264cd7930e7dcca4a7de258b4f486..4539255c296fcb5cd2172d797229941112a27e7a 100644
GIT binary patch
literal 359
zcmeAS@N?(olHy`uVBq!ia0vp^PCy*R!3HFGE;h(9Ffi(Qx;TbZ+<JS*(2LoTq3z<t
zhNR@Djyh{}Y#Y{^Z<xxW&7Yd8&0^Cxb(wHtYFXML9nTX^v(7yG`(di|iRM_dqbe<r
zBc>aJ!0bnLVh<I+&wMTQR)2fX+PFitImfl_I(R#{7R)Y+c5ryp6!GjA_q_bztLL9A
zn>BZ7-1{KWW6?ZEI66KRywul_zoO;x@|RJlW6e>Ao(2h<kSKPI*w`hj-hY#2W@KXF
z5KwSvV8FvDTqGdNA&|$5uI|W12cJ&`(jCkSZ0rg1^Mckk%{d?RRN=i;lH9#yg>Q~)
z#2y-&eRcly^gM&Zo8}u#L3vXTI&WE6_xsty#reVvM>IG<p4;4feQw0-zs#Fnrpz!{
Se5Vf>fDE3lelF{r5}E*sABE-s

literal 535
zcmeAS@N?(olHy`uVBq!ia0vp^PCy*R!3HFGE;h&kDVAa<&kznEsNqQI0P;BtJR*x3
z7`Qt@n9=;?>9q_Dj5|GD978JRyuGv0OD0gp?c;e_!5lG`&k~c&oD^KEbc5SN7_}8u
ze5K?Qn)xT#<<>B8Z}oZ1{e*LkPVZ{XXLm}!uUjM_S^nr}<DI>a#U4LAFVbB;`Dnq}
zeihG2SBky2$J*RKE2eM1ao@XVWpa0Cd~GS!_iS4%b1h${q}07TFHLEg+Qa9<cf6<H
zQ!}1i_|_$1=dJgC`TOLyzW%qq@7=SBre}UXKU?<qQ`V=|ve!;-KGf;(w`a$b)X6H@
z_ivru@mzl9n)TaWzwe*yo$hHQ^OUuEzM$*ho{VMYwewpZJ<57_$*cBYXM<t_hXhj_
z$<zS_IW6x;E<QX($NwkWoBOfwFghO)Fu<f1@EM*vTlvbw+dN(Uf4LvatKhn)A%AD9
z{QR)#ZjF8J^?h@HML#_A=y&hVc-iaXb2zT3H{SpF={U&S+a{-2oMNo@XA&>3UF<Ql
zr)bu$n#CT)r*Dhjl)v`L=Z1fp+QI@Qlhd6OR6Ku$^Z)&`GJU?wnVsL?|KXlwY+m)X
TbgdpRW*IzP{an^LB{Ts5aA@F)

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_light_pressed.9.png
index 5d8e46de0a8d4546594923100a99941af30fec7e..5683924447c54c1119eac777154083de39798ec6 100644
GIT binary patch
delta 838
zcmV-M1G)Ut1>6RZBYy)UNkl<Zc-rlp$xbR!5Qg2!0w0m^Caib^G`xTWR|1M6^E^1A
z0uf};NAV_=`z>z8Rzi19b7PTw3pZVVeL1I29}+w`*pJWWU-l-*Z^cBI2oqr<OoWLr
z5hlV!m<SW$P(&h;5LT;|@bU5SE${E|PWdU%X0s8J$)vE241W{xort%$H(|M43jDoT
zEQI-dF1)_Jh6*{zrE{;>YatSe2qt1z5fqxuX2Ntj6<%Imgy-jH;pyoqRLDUtasquE
z9UTcKVpkCe&<&5rW8vZ9LAbxa4;6BdOADe86X93HWHJ$W@Z;m7K!CfuJK^^BHdM$#
zE^?BaK1_sP5q~T#y#)v`91exSU?BASeWy^D9HY@lKn%I*!$kNM!P5FkK(E&e6)l9E
z<fac3;a3DhhX=FtSegXsbUL9z4svNB^kE``5`h2;P`KOe3hj0~RLG&X3b`4YCc>`>
zh7AH(dRjoM)e@S`rc<a(4z`LuUg;wmjS41WR}s9J=zn99f?7bM(Qt~F5IsEU!$kNM
z!SUlIfI#(nU8vP+PNA+AqmNaFrit(?f(Pi~NI@;2TCF<8ONc&JO+;`ahC-*)7Fw;Q
z&}h_!TCFNns}-SADLaL_<RBM0$vqqn1QX#`1jnWxjx5Par6QEeW#Q)L#wpY#2f4^e
zZjMnC5r4D@h7!X{3n-OJPSHZhMNWn~$Eb<$D}p7Zk4u)K7I1xi?G!D<Ym1nOphWNh
zJtSF*TENxSl~c43y+uq!&?30J=;M;Y1S%Gb!sX?qQ>aT0a_KEXA11=D2re)BxMWFc
z0T&k+PSHZhrMC!un20S!e3}RovEA0-)mjfp3V#!*P$&rbeBLS4B?r0maY`R1!bF&e
zU`24*(nFFVr3K`2Ij3kL<kCZvK1@VVBDm)6n+Wg{L2eTfln925zIOj_!_q_qCBj~@
zO~ltCyuQZY_pj>6Z6bma!4f<_KNrr<&V+0>D`YYm;q>%0RLDUta*~^^b9i_tn223P
z#6My&;pF7xOOB6^{~?u1IYrmk`O@jM5Rb=&oqqspBJ4-<CgQjJ$1=~)AFKP%EP1OL
QC;$Ke07*qoM6N<$f|%uig8%>k

delta 699
zcmV;s0!01X2GRwPBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET5
zbV)=(RCt{2oZFG&Fc3wrc|}72Bts??>F_}!q(B(_@z#EDwJbfOwgj_C%idEprLv(s
zJ?%rgWs3pYAn>Oe-5-Jc&vb*@5wwC5L6iuhL=Yu{C=o=7Ab&~(Q6h*EL6ivM&NY_H
zB>-SPp926!qmg^C5Z*gw>AKE+{d&Cu09LCN0AR6LB;P9|h-<`lyS=@MnU7~YHP#}=
zml_9y+xebOrvQNce*fhdGJ?1t`pe}4;Qm>QXWnkNW<)d~G8_&80ORo(fQ)c)jfiLd
zd_DvCYJfGP7Jt@+7?(B0Lq?D+Bdh_f)`%EKG{YL=AtOkZ5%KELni;9S!N#K+QGjbi
z>MD_{9q-201iQb)R2f0CYD8aWS<47Zsut*~QGkDgf%MHfYxfcM_p3&{z*C)NE3?p8
z6H;@FlK5l<De5CyuN9G0&G3*BB+CffPqaSQNZp_Ckbe>6qiaM-JTijxbe1u**PgMK
z5#7Vsac$f^E<9{|$OzKYS%$2!-c{pqyg#se9AlgwGJ<5yJ|nGPHC~BJMv$UDBDKGD
zBXW=t<fA&vSK^Qnr06bo>$6Y0-^S@7BgjYB2=x(9Fo3?#1wcmpW`x^h{#z^ho`$!6
z)rhD@6n~&Z5G8_qbRS{&d&me<v_7IW`c}>9e#8^FM)W;f%vrzqH~Go<WCY1FBDIdu
zZrAQC?HX)5ddLWpb=62^G`05mUE~^(gNz`q5xd<E!2KIM$Kw$|dR1L5tPyd0GMPM#
zr_(8U3>iUOBi8FR0AMzoef#<|J^fG8cON1evNYLj004)>A$cqrLG*v9h>Rdz2qC8@
h|JRLi|G*FeegUG$d9MNOyBYuh002ovPDHLkV1l*`KUn|(

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal.9.png
index f53b40419aa6e582df213e63613ea69f8cbd9c61..026005d6f4eb8104a851befaf1973b535b3d41f5 100644
GIT binary patch
literal 1172
zcmeAS@N?(olHy`uVBq!ia0vp^PCy*R!3HFGE;h(9Ft9{>x;TbZ+<H6by5AEo5!Xt!
z=L!NZ8UHoUDL!ZUT!V$<NWbx=i?QLCP1k)Z+-@zwcd1Ik<VLmr%%YvU3OqdvYij?y
zC+@GRuHIj7taiv{28VE>l9AxW%a@f)%F4KMb90@tvtRc&#C<UlOjNpc`*v$<E9=9r
zUqgTV_#trb{{7bN+qW-joAcz~pFbkco<C=;`ltHnwhK#VMrNkqzJ2>xTx@J@Ilq7Z
z-r02L%K~v*-<B|z={FufUR+RItQ->;r^Z!uxj9bFNqf=Goskulm4bQs`K_Nn7eD;+
z#UyaTY`HIsmUmw0s;H|ITep6F>*meI4}biyXq`NH@}fg$-Set0oOa1@H8C~i<k91?
zn)Bkt3k@Vq6%_({dU`B+TbrAkT^wPG&CIxb0(btEk(1;4{rk7(o40RQ-ne`BEZ5u0
zJ2g+1vG0A6skBAu-Me=zYHBhS>FMed-oDKhjgF3<ctP&^^lqRhrUM<6k&z)#5s|pz
zp^)l>XV22Oq@|@ZBje-yS?_<mYx6|K-1dd5zwkoQ!qQSzgBt}2Ol#M!UAke{E~yiz
zPI;~QaqjUmMfII89rc9;Ls_;<=XuM_a5#PXw5E=(F6*WpJ0!ICecn-d!V~J^E7z}c
z-^tryTgbWVV8l1}X{SH8R@a%!gY;L;;#kX(XMU$|2g~zk&zNS;ovW*{F9zfbAD0lp
zJ9!d0JHDi)r7_K%H%|{H(Guno8$0*FVXkK0>9?+22~hwBChJk4&+hoW1Uvd5MC!;9
zm#AaMkAL=xkON1N(kc!$1s=1QtmNcmaAbnQVa3|DqB9x{raldlmX!1qfrnoNQ!>}-
z2PQT)b2Lu)@>k8|SlcmcmQ<srCVRpMNhv8Wn93s6q=JGC3ubi8aQ*YY_tmScgQA93
zR$3|1H3<m{LN~h<w`(`eQ#+)*$VFS}-J+X9(~i5OXfIl|%Ig7pMbFpH53FzAzdx@T
zWeBzSkx-xpV_@ryjvcNoywhfOy?FiF+k2VPmgc1(x2{<uvL*OU&Hq&y>?b#9nt{_I
zw?vJ@qv#nI?P{K8J$f?l{&oXrh;zHTxDJXwjNbEAcjD8kgGbBb?mt=!atkmR$}Q*L
zp6GpJQ`NTa4Y!_Fn@`_8Ctqn%mxjK+c#L4pAGvRWv;9NXah!I}3uggY((-%a{4ke|
z54(U#=R`=$Ze4}@(vF*s-W5v#>C)B~zH#q-SlqUcJEL0;ZF~1b+FTqSxBnWZ91r7r
zl4toX_ph!<o*pbF;>-_Bi#1DZ{VN!~5tgzyENxqASU2H1--rCSt9^g`FBJT`=gBiy
zsV_nA7ykOHWMyT=VwPg`QA1bP*W{0uLc_d!)4$E+cy8Kv_wHRL{q4UsOG-;QUwx1K
l7bTb(cjIsH&*!iCRnBwnd2(7~AF#Ax@O1TaS?83{1OQRbFKGY(

delta 983
zcmV;|11S8I3G4@uBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
zj!8s8RCt{2oVil#Ko9_1##{m4;S4hVKO!Nt6aNQQ+~@_&_!#y^M$)V4D#|5eTf6J_
z%t%@-ecv+ydifh?=Y7wz>pE7e)g(rPkp`pdx^6MXj;DwZgn!@zA^1QDJ`lq4a6?n+
z+uIueA0Hn_&(EFn^K$?$E-nD*x^DMBH$pfv;^pN9fcyJ<09LEj_luU_FZ=rX0;X?>
ze$$J^;%IxlUIXy>_z1xD_4V#OZiH}T#QXa@0Jpcd0KC4w0`UC&48Z5-=U=w%*PNZ5
z0sGi+cXtQC!+*mA;6?;lhMv@{p^s|HT#e9}c9<m$y&E9}>j?ekwT@6DG;7QSZLgZ3
z*)Np!+z25UBXlHf-C&JK{N_f%e$(1M+n*3_gb<7ob_8P;<<u+8(tdy&u_G8Gbj0lA
z+_Hwo2-}YkZiEnw5it{5W5jP`NojVnue0q=nc+qV$$uDOqiyV1<5Xs}nqVn8kK#rM
zRdqybtQe}^h<)?+dEJgxmL4M#6dh}5Y|zJ2BZjU#YmHF+SfhfV5!QgY8)4fY!i^A;
zSwlxKR!59|G@3I(w{1T>Yb0pO8kVuoOXOmQXN?MqjL41XRE;QYKe!P)nvOLrQ#Zo1
zMg_?jVSh(5cg}LGIwH1Tj}Z+Fk~PL6XP_I=Kr(B@vdCPB^~1A9f}*q7C0B~3NQnuG
z8zCgGbmg9(IyL=pBZOd#sAX(ZhM2kIMhHs|?xQL_8{KNasjhv-=1$d|U3VjdCD2iL
zcimrI<1GEWm@zHwa3h3Z9TD5M{M8jMODqPI8h_$3B0*CfF_sB-Kh}VPS@==h2q9@i
z?h4YW>WS7$vGi(r2sc7VW(~#8NwVaAv$4;srF9OK#j{3&V2rRMnj7I<UO&~$+tT?F
zx%Pt_v15=JVP98T@wL)wh~hCKK~)_Q+s+v<*6jS6_q!3oATc7B9Zq#OU}?;<c#KGp
ztbZeFnc97z7Ox`;D9Re8b;Q)DX}2381hYo&SmQTmf=)?o`wwv=gkX%&b(-wlYkR-O
z)Q!*;MYKQq7{ZMZl1A8-IOe*>jP^%Y9}3{>St>_HTwY!Ru-$Hf{mNulS64v%o~{@}
z$B^3nsu8+E*=Dl=_WeA>jSxCux8|*`RZ#cz^aSizCY#&*N{bqzCfwZI0DIH7+pWh4
zB^V?0x25Y){V&+H>ke@vgs$)VlIT9K36?)ecChbz{sD{t$);`i!R7z}002ovPDHLk
FV1nRW+LHhP

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off.9.png
index 3c6ae6be861a6bfed7160a948dcfa305f6c33486..38c5f244b4f1b61a33b770a82ab91b7b517384a8 100644
GIT binary patch
delta 1259
zcmX|<c~FuG7{<326r>XH%CQW|FeR^110^;gm}*VzU|Ettao5?JT(c~5)FcHAkPc@H
z$UIQ<sL9G5vw~R9%9Y8{a;H^31wN6E&GASqT95Tud;fpl_j!NMqk_-DuWS}Tp6;bl
zn3)5kCC?f77+1RIZ|O)$_<8@Z=#XejNqTqWZl7pOZV7&)&UX6NKb3K$#?TEnBSMHD
zbbWV&l!e`0U%Yp2nlBnEw_2^2jdE!S3fD$cNiu2S5fN~k%|?xly||yto!zYVAji_K
zNCpPt`576k%&aUlFCjrJP%1slcDtRki*c%1r-O%ug{>yfqbK;-Bx&94+vp*q5lRD$
zMg)OC@Ps~oM+wd<hSkH?HE6XY^W@|~B8jBm+8OJdbsbhO>FWC4JTY<Lkw$}NFc_k$
zsw#OtFtvDC#Oi2o7p9#&>9b+eCWND-W4TJDLPn8D0<l8jo@bbu9Ul)t138u&N8LUV
zi$<r5TTE^0cEsq|7-D#Mn9AYY=z0CxPcE0k0P7e~{(SdWGZKS=W1gB~n)Vw82i-Ip
zji|Mi!cR%rhMOt<_v7a}41xSM8QX~M((9o$btSpe)6=5T(v1~59e2IAz}r1D=Fyt9
zYvE7mO-)T;Qg${6YCr$gwaxaRr9<R51OToM4i2KZx!k<Apf$z7iF4=3u3lbV0i7e%
z)T|yo?I``~wQKMkHvhgExy3Xy^Q5KYR&DKWHSr-SDhlGB#bUA0NoUSP;Eo?ZUXJlw
zAt{i2{Ft8CTHuF6UI0L_vd3V+H#RjnN!V;Q64o(0oP6w<KTfaL|F3aDu^_cxjF=sv
zd0RWx9ZZD>xLw!}07nj*0^d=+mlwNKxE+X(4@lEgz%Ho0<P;=3=(5u%+u#!3x5pM(
z5C_wuKx9c-nc&i&eSOUMi4p7)r8b%AbbDfZ1tBuh(?wx<DGpYWimH^-9@$oZf0QaD
z^zXE~28$KssH9E_L8sEAs+Yor97=NVTKAy0w>Nkqu;->sy<;gz8XL7QdVLD9k6o;H
zT`36&Cgs6lhYqicP`n9)3QoNe@}|O3@u+Qiq2lDUq~7g^RsxgBWRRMhJ5~vu^^@0E
zFB6k6rHP(9xhjco;pce|u~?js&%Za04($HDSwVYx#o$JXb1|ces@;k{R7%lTpVNE;
zD%I*})2bY~O*#&>;G3BhZo3u|D=fod4`W{nwqWicU5Zjr6k+lctVXMC_T`}lT3;^Y
zX?gPoG2oxkcfxHH;~D<6rgnis;woYAo*YEjfOEpFV&da_V;oh*a$|YCGLvjPaOjJo
z^PtWIW^;{TJwAWo$Q{_(NaMr5h(`~Td+F@aN!<-Sx0`_C(=Ar3(_I1Vk6h<3vKM{<
zKR`x&9xf`V__o=uI6SB|%hXD#<VTS<5cB>bMhd1PLKbBf3oK>q7ksecGZ09naL!gf
zdqH1*h>Fh_U`Bqz$5~P%r+=M|^+*j`#JlJrh|r?oZs*(Q9)HlT6!v~~LG{m}-kr&g
zkLq=e@K15>`~)R%WRH;dp3H3K(YV~wmV$ja@BaRN&$TC@ke*lBz2CW*k34H=XgFX3
sGj@s#3LGfs$od34Scu4&XU^H}-*Qs=T7e9|@NX7oFP%ZVOHIuG4_8)Nh5!Hn

delta 1156
zcmV-~1bh4b3783xBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
zI!Q!9RCt{2oXbw@JQRh$K)H&WgoHq1h}0R(c>fU-hA`<1AV4rdNZiRkI9^Tb-*N0T
zJx!1HCsmPCxAA3V@9o$QWm(b#O7~gJ#mkaGQ4|b^!(Oxo3x8^iq9}@$MO?U#SVK6h
zAsp5a4r>U<U@{?B`uX_@!1wp})cIv+ZEX#J_4RcCilP{QXNqu4DdPS89e~TrO8|z$
z;h#){KiPhNe}VohL_NK-vNDyvxw!%0`uZAxt*x!`Z%h%6DMfsJeF1QOeh$FL#|Hp!
zZ*Ktn{QUgQvVYCY>gp;`*@laY3jnUJt^iX+kU{9AyoQca%Cag#Hf_>Nc$B6HM=*|1
z&nu3QBIGre1(jDykoOCDJyV1uXd~2;e%#<I;{N^~fam9D0A62T0od8u0pRfP5P*}D
zlTHg=hu_muf?uByrU*ySM))o0D?>_ne0&68cXt<n{eS&^pz<~k4-ZqnJ3c<1M;&Tu
zs>dXz2uILHsKxxFTJ+`R1%QKt1E7lB#OCHEQ2BA?KRP<<uH*^GM)>szVTy1BZA6_C
zl-3wzdwYB8dmr_PMzw7t(?~=Z&F7aprVLYrBWfdjYpWjJ+uH-G$Wyk!N8c-dt|Hnh
z!6)T8ihn7>krhYisCeP-?hb&BjSZlBBBXq>4T>yh9lh4|ynkNly2#ROM1-WVhI&#*
zMUtndrvN-XJpom`ps|L&mv_;VuD0YVLfBX%gP<aO1^7peGWE>w?CcDv<_k2|kOGu{
zR@y4UFMkMAgd^%T)PjCmsHb)O+w&bwN>JLbhktpE2(7$^&!T6(nrw%8jSP|$(bS@S
zRYYp}!4xs3)mX!)?}{+5kwMf(_$}Eq)3vBLqVBq8BU;dj*H{!y3N%HuAnG;hyvVXp
zR}b?V5t5!_r_2=fkrX8eQ-mWr)75mo@8s0O6yXTkh+Gz}l++oq7^VovfQfxnbv;{m
zuYcu|`@7Vhu3I~mS|2b)j2Qq0iM#8XdbDd>(e!_HifL00Q-mWJN7SW#a_+${sj~s8
z3NafIp;a8QC?)vU@fDD;3cnUpgd?hmrWvGp#S?8K#njpI5T*!6)N2TTO_ER3JzMvG
zxwKtF<zrqWLeNI|E!xz=O@4h=Z_;+9On++m!4xs36C2^@OO5#2(pDkDY(#{tIHE4y
zq=0$Zh}3)*M`X~6jcD=?UE7G%|1}%Yf@mC(%e;END=dykAjxZ_#u0rZr`)CpN6>3D
zjWuR@5;RY8%Rh-J!V$C)+IQivy;gcz6rtURs*jE#Oc9Q#BK$XTEbBXFR3Cp2`+WrV
zK1(sB2<_h-jYdHAW-{&m_iaQIUE7e{>q-&Yk9vE13sm)-#1!EufblzTwR2Z{wDeYh
zWm{kABZWu_+P5mDk47W25h7?KbZ=?5|G$F&?z%}#5ssoP%M|OrTnjA!Pqcz%S@Ith
W4EKcFkyz~j0000<MNUMnLSTa52P_N#

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_off_stone.9.png
index eebe7d39106b0a973703aeb3df50d00f013a8746..dec219304e5290453bcb8398e85d9fff1cb25f89 100644
GIT binary patch
literal 2833
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
DEY3gX

delta 2105
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

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on.9.png
index 655bfb2c6fdcf3fe91490bec687dab3cc94d0b40..f1223e50e4ea7a48ea1df720b3195c43cab624f7 100644
GIT binary patch
literal 1345
zcmX|BYgE!_7&lBsOzkfjEzOSq5>peh^58TtAf)6aiv({W>f9+?=B*S^Qv?ch^OE89
zptBNJCz0yprJMoX9NUyrbD~YbmFV!+uz76_Yxd!N-!IR3ez)^`c@g13may$GBO@bA
zVle)=;l&wF4Aj(cZ&DUG7#W#BiFoXZoT2G@;?b`nw{dwP<8&zd^oI8bp!!375kF^o
zlsX0k-hD|p6FPM&OKEp8pl)0CQ>y03wc_x&Gh?zy=Vs=mUc}C%hSre0s@gq^!9v0@
zdETgVRpzYk`3@JC>_4^3@ir@@*jVQKG7kVL!&gJ$>2`pprzb8s`9=hpjI0z0Ml2=>
zN8vy?o=)%F=jFAhzP=u+)oNubRZSX$!4Nq*ccM`!c46U$Lg5E^`dJXi+vDN_pwMU&
zyuE`1jLBpYO*$vBXhtpcHuQp|sK_{h$&4Kw91M1S9%jv`f!@A6HkPPaT#Oo2sQ{L=
zv8}6X*(xb13CCnUh@eoM=c=`TEIhHucu_>1KM2GCK|w*XfdN6={rkwhXtc$yUAu6!
z59Mj|=f9g%{$>U#H8v|{E0xC*l9Qd9%dFQinwr2uDF=JW(%s$NT!(lkL-YvD<GWog
z&HMC>k)7zZIpqudDZ<q3tc6aegFG0L$yjrf?cd5U7Z0|m-#zrFmeo1T?>8{ua5xZA
zi+%o91cI})MAy7&z-m@{4oA){t5m934-7`c$_+?m^cM?}IJd;?Y>N6Z+geyt15o39
zf&APZTUx1NE?XNPcM?h>k$$We3dvX$Voji7zNxV>K%K~ua!*zkH01spwKzSC=1|W0
zZ^@@;f(9=d{Cwa@Boa)_$k@NTFhITIIq@@8W+sW&rYSN%=;w#ZU7d={S<+`}7BHjc
z{;TtGIm@b~Lef;Q2K<$CC?NbJoJ<V0!q^KIX^?cKiCivs{9^ldzAJS&U0-(P)qG<W
zub=<CuMgq%DlI1wkyYd|Z5>+m%p!Xw)$em0_NiX>5{rKp7A{>Ei_zcbya6%36UpEz
zU!5kW$y<LP9=59x3We;ktHtXZ6$*GqR6<(<MK?2JMWj$DxVJwMQmsVuO(Fx}C-JxM
z-qj!W_Vyk-(sAf@vsrg2J07Sn*f-dA>un_U&YHUlLs+lJ$6@saX|9UafuW(=6Ker|
z+(CntkfKaQ0)gN<YaO+>7w~d=W4tZ5wyy39?0^0e8|BNFl@X!%O2X<w@zm5eQd{M~
z01_YbP$E$x%K47%ZY&{E7KrDQ@%M@k8^|ER<3MzDG~}Fm|3C<v@`%gjRyWxOe#!uh
z0d1Tfi8sT6vw+4_G0blfi+jq4`TbS`L$u(51EhXo;<J^b1fO88&y(ggxim--I`|>-
z>wAcJiFbNN`>dx&;HO%Ylx&jPYCP#WPr_E6IYK<m2pj1FCr%r@O%v(AwC`lskxR2|
z$Ub?q;~64-n8BgR$w`(QOFSyidou3iN@gnpQz;vL!`Ni@%GCz)<CAh*EE=933(VXp
z$U$%9ZOM)<;LW*#?(ShUx_<~g`l%KLz}mB%M>;w`7h=x(dfffLu`?A(;u}3Y*)N2T
z-Y?opr%j{oD8Rkqi>L>;)~m7ihlG?8OvdmAhcoBS%5>K_qtg|2cBlJ8y19Qzi(6V+
zHb<59@`6%QQjW_TAdrbk`U^j}=G9Y4S67UB{K5j~=1o^@p1;D(ZH#MoVU#kmvSik+
W$>069B0*~S8jXmAaC|F{#`+IWXni^W

delta 1252
zcmV<A1RMLo3ik<+BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
znMp)JRCt{2oLg%fM-<0@Yspt|ZQLdy4|#DPwk_Cd{UGRv=u<ytX}&_+JSYT1f@?!6
znk$7sdbPp$E^i-Zjx0@PXJ^-|YE{k;%rf$5cjnB0&N;g~8h^4ZqXA_0Z#oyxGTKR!
zkfv!PtihCwkt9hnH;oH75jBKG4PjA3Skw@f_Gm#u>BYqb09RL6W1r7D^YilnEG#Sl
zkR-|Qf2s(}m?F;3&H(6ky8xtVYAUr&wd?C^p!o`sk)E5I8!PYc?*p*Ay9>bb^78OI
zstC)NA}%j40e{%u-Ui_O{2YMO(^CKjgTa5<wp-I`wSXJn(CKsl==FMlD#A<K_n|}$
zIf_zdRT1LTMx%s7ri!q5^9UJv$s<G&5;cUw!$Sa$j*b90IXMAfWn~3`wY4<>*4NkT
zZ+QgLUQvQXKVQ^SMOeH(LM-X#4N?{*EIil)VC$Rr0DpY4X_WEjE2D&W&+Y;6&u?D>
zlUIg2(xL>nKR#3u7O#(RE$Axa&gXvsu>I{Z0Il|lJ%c%Jd}T_XZkhl8{Qd6$T)g|J
z_6~$7>c=Rm2#eQ8h{fEaSTyY#``zD2qb_pZHFI_EVg4MQ1mYvye)v#DSiC+WPYF`)
z>=-2s+JApVU8J+~F#u1$JE_#jKt>p>=e9ef3{`|B=p$TjD;ekEo4Wwq`@+`8Klc-B
z=l3t}*zdn8)wrrkaEW=2qKdGT$|L0Xde121vn`V_3|fB!aG9CRay~JcWoxhjK=0XG
zQ}32{uX!WyelF#_%u;<sfT(*78A&-l`RN4!*?+aM_|Dgx0Bok_$=1u~=HBD!<CmuX
zqhD)jY*|GJdaqFeuOeIpxJQ{|kAM6HfZh+!y(h2xX?Imcxb63$im(KuhFH)oyY=(R
zlcq=sQg-{HQ6oU5sNpj0H(y1*L!(9sq7+eN(WWXQw*8=r7*gq8!=>qp(5O*@ppS4Z
z8Go8%Fugn?@4D(EDo{(*m=;9}R7F%E7&Y>u$gGgp4~-fDqMl;MyeVoTF-j0r5tiVa
zuA<MIPMLnFA}n4XQI=^dCH9S22vvlo&B*Vl@<z6<XOm^W7dz5<Yo}uS1FDE2Z6G1?
z*L6iBTDPw#I$xe*s<cBDVe#e>d1aR}bAPZ-@_az7LexhDsFX)cO9}3ETm?j|!p}t&
zVF@at=nc}O@`<XMV(i;;AF2pTFlq?ynk1K^Ih%LBvQ%9|<)Tp|fY(R37A>-HQCz=m
zG^x5$Cbs>ciWpLhk8tb7W_(qtst`eaM1WFxL|(Z_0h96(vGp{MC_ybgq9{7l?SCU;
z&#OM70>M0@ER!1fy3jl#f~cqwn@2Q_GVNAHSiDiA=w9PCPl6^%+4hg3im-TngzVGg
zuDy1DuhDcx$c`e?A36F^MOcE0aChRE)jejUKeGFf2i?z77*oXJ;vxY3ejm8mnQUok
z3HZ=Q6j8SiDSKT}gzQjuaBu+J^j&ilRfHu0hI`)1UUkREW+xEYnQYe9SGtHoL<y^_
ztH6!Y`~AN92*K+kWNyhmRR0&;z3WC%MOcz7%VNCyY%Q?-kYES1EaP9vmi9})<<tfM
O0000<MNUMnLSTYy7h5X;

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_on_stone.9.png
index 336248aaebb9c5f4bca94e9767561d23c0a71fa7..3c77b3ccdab0ba91a0648bea8f0601a774858513 100644
GIT binary patch
literal 2867
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

delta 2119
zcmV-N2)OsN7Sj-rBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpETA
z^+`lQRCt{2oxg7!MHI)sdw0J0;vXbnC2>fkP+{>SNQn{)3Xl*r`~#GTI%PV9=+pUc
zpnw($1q20EKyhRm1h^rEL69hN>?HR2ZjWN;*}ivvnc3Od^?&T$`$*_zW@l!Xz4`8Y
zZ)VR2)Qf@nPf-*_Q4~c{6h%=K<q%0^<4g)8%QTJSxC&(yr<r{1+O-b=px^I*4gg7#
zTq*OS>ds&=ST+Cr0svN5S8vlHsf#Ki5?U^e(lq@P0FoqG27p_)ZZ(f;mn6xNWwL|8
zz{wK4%&{F0J%5fXH*eltHsgL`s=hOpZqR^P^%1dP^AQOET)ld=3jixCD=h$MwK5?|
z3gBf|We|ClVQUwv-u3*wUJn3p<Hn610NlNMcZQl6oAR<MA`+Z@1b{vOw2Tzm?KXf>
z1rU-FY|0>tKGX9mER-^+{h|BPH<s>m%DU{ARS}Wks(*+908C9y0XR?u;p!V6J$eKH
z=yW;&fSH+@p?;y1VXK$UQ&!Xl;DoVz!ttIeA`&D;9Qp7kMUdTZ%oLHP*`sf5Z4Cgh
zzP_H-&)m-%?9BoIPEB6|09?O*9RP6d+_|A~%JLPqdZ}H3>*^TG^9c13v0?KOLsPxk
z%o1wKBY!ykeikI${{9;P!1kH1vi9%)oDJ6O4z+*!<SYQ-ht-b&0L!m_3;<YKS^^M0
zf5@u@U*AFZ0SEW*q_L!cKC`NbSa6M+hTt=Te8j!AUjP8<<rM(H-28v0#SF8Cwo%C2
znR3>Cdj<eFfBrK7!2JCDbI;4q&)Z3Pj&$5rfqy&?k~nmH&e&aM_b)&d5ec~zA<Y1K
zCO+tV4FEWOmWEx-buoj>zXAZ(@81IeTzTWYq2sPIQEF#XfK6GpXzHj-F_sjuX>5}n
zS4G4^5Fhd6={5l1<=3A802<AUg)S<c`_r7~U9bK{*N$BC4_kX2%y`PI8?0Ux5gT4U
zf`89|sp%{{?o6K?>ElCle)yT}>Kiy^?L*{U%fhG<Mo>jWLM}zn8q$a&nwb)2+ZO-;
zd+8>MFx$B_be^)6;hS;0j^~0ZA`-lO1Sw-b?(S!w=c)cX0D#9+KV|K6e(&%^<3#|#
z!pS$Y{$0PlYYEqxZ#%Av7-ND&P5Xmwzkdb*c<F4mX0)CD0RTwRd+xaHBvZmn*StWu
zdpbK$pl|ZJ&S2lwSZTaGs3IbvkRo_A)8EPVvZo%t1pruBI0FFKOCA6KdN7$cvK_uw
zlI_&BcC%=!w{;%Cfe#|2RaDz`x*jj8h`jq1N1=*{1g|`TM@?KAd)rxF(cgIm0DsV)
z%~oMMC$g6q25GkVn0BWD0NtJ8eTpOr8!g$!;WM4*OT1nhPip6aDk2hs`iPP8US@YU
zvl-tN-~2mTVG=f<k$25VvXU~?M~pEoWbfEGg(a>&g366X<H+_@PuTXDefO4a?QPF^
z^$`<Dq19Ju&zG#E1YU33W3D=Ca)0#^(s-(f8dE5bAS7SGEpKl-9!d!u*UZ{CYEnhi
zn4p<85lRtd5n2(_IC)S-L_!cnaQIBOMN6?N!ln#qT=fw(rV>T)OuH_M@bwX@h#FIg
zBJxH}yj>_lXV%g<hrTi7j4C1$f@apd?5YT998T4H*P2;RAeAbDM^94ws(+AXc-~c4
zRm2$Kr3i`&Y|nTpZ;)1LrEx;z`(Bgo&`kij6hTUG%_I2CmlVSLNyHj8@&1}e)R;;$
zYg^PLl|$ni_2k{FRv$42loB<${w+V({Gq5qTz!SF<>RO#YE00m$)=E^QB!Dqqb6H_
zjhbrAu|!RE*^khuX#(-`5r3{x6H(S)b?CRm^R6*z)HH@v`WA;RzmUcWMO8jRqox{D
zY1C9#AE8mx1W`)V#LH5KE%me2`(m5PMA2`Ps*k8K$KoS+6vg}5u(fmb73w3D5lY>&
z_KlW~dxuUHF~OAjUXyP=Arbm54&KgpM~;^@YN|0oqb6TPNd3#EsDE$J)z>kklBh|l
zuX^>B(5OifDK)d^<xoDN>UUsO5fely-x%Wcv1QgoUL{EVc)jKkH6}=A9V&W~`j<sn
ziclX>V=Bq4dD%B=DtpIH6`_Pt1mAh%gpQg*DZ^C}(s5}#RYZ*m@^@cdXRzzLvSnr1
z60Qo!yGE4<RYW9|@_$z@Ilf9L`sSZ2zR{D^UVTK3DP{GQkQ9^GH&m^RqEVCjh#C{-
zml+wZd4+G;m9mu~^-~{FV}ks8FUO_?$!ADqTfL3EnR?!+N$QseRYWAXDk1@7AK^Mv
zB_-GtB3@LWXiBR0^$~}McD*!JL?pD}_Nfgi!uMGidZw492!BbbzP=H#{|vDzA`+Z@
z#9%P^763LjHa-M^#l^)kuW6tBQ4;wqzj19o&-Dqgv9SRF*xA|n-Bi&JdQ*ZiGLR}F
z5?mGWB>>#Hb7$F9y<lv@+EKZ|j#vAd_c4>E=?(yFZEgK%s<w?4m7$7=1Zk%7nM@y8
z)7ZAL9b@N=U4Jn4qOli@J;lZuH)v)*Gxl#||1$O;V;>v))Yx6>H?B9PcDQEN17_*v
zPI~6iOn7K)*VuoJoi=t{eFfbYx*y~dxB}?D(EZzArd35mf=v<hNhhpKpX45EPxbW4
zZyMXgWI+G_qzt-0T~?;!8a2g+qzIc5r1tdeqZz>Si9m5j@}=CTs*i}3yipUumBFJ1
xo`+0|A_%Swo=IzF9V<m=YW~gH@y7dp{tq#_AQ@&;L^uEd002ovPDHLkV1j3(^J)M9

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_normal_stone.9.png
index bb1c72bb3d76449446ac1aef7c07fb719333b52a..099472889ad0b8b4be8754159401b6b0e6ae478d 100644
GIT binary patch
literal 2658
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
CP3y1#

delta 1772
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
O0000<MNUMnLSTXtIb9zB

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed.9.png
index f73911674b0f15f4cdf09cc10667ce6bedf42bf7..ec35db54d60567fe63f48c54a6453c98dbe6d721 100644
GIT binary patch
literal 1131
zcmeAS@N?(olHy`uVBq!ia0vp^PCy*R!3HFGE;h(9Ft8YTx;TbZ+<H6by5Hjf5!cFP
z-<1U3GTL>{f6#ib+P#EB_Tp>-rX%c4B_`P>yM&J)=j<##+_^<AO~vn9+^3lM>Ynbd
zPme!;ZLhGud-rbqeo5g(C7+f~1HqRaFJ8S8x^??@>$GWN3wQ3^sjxuY*4Jf5$F*x=
z3%73%uc)gNv$MBv?eFJbukii%@7)giRsWP9opw<XzIf$|$`0nZ`1sc8)5U?3w{On|
zO3va~%fVvs;pI!uii(PWk3W9Q2;E|N!k52lCdb;2W5?VYox2>rfB$~y?c25C6K2bO
zS+u<KLf3<UM*_(ozJA>b7BUiy66EFOWs+XGd$)Dt!Rgbd$2sOzUFe>t=A_+p`O4X|
zy$2q2cXO{-Ft>e?s<cJv)$7-+V&Z(dZ1d;Ntz_N#(h=ech|rulOP>7rVX?gBsUl4I
zt5+;y(?5SMZamoD-mdAXB4nwm!w=Kev3j-k!!KV#5<dL<R~Pi{+qWcD4RMg9uwW?5
z^0|u_D>ojrwzl@XdGB7|)CDn5ma*^kX$f=5&0TvS^ZA1Z4hbKgJxdERGc$wf1BZy2
zj*c4-FsQ;eZre5u6d-$d@7BI>+QmimU}pQ#j)SXLuRe6@lvkXyU(w~}IG{flEnDXH
zV9Vj8BM+7?T{=ZaPw&~34K^UlUStA&91&x&MPko}4GL$@pMP%pL<Q`#MO`;;-4cqZ
z`O$RqW+XgtR;^wQ2^@ca|7zsG5tC)}_w%a)3kfe24GaxcEhs#kWNd1x+SA{Uq;%V|
z;^Jba_FFe@L`3!U^`*J&y6+8)j?*qJ9Y21HPn|lI$^O90^rR#w4lXMrBOz_aouKHx
zc-e)eL!-!bgX-LwGX*1Rnwog{`Hy=A=)pX=XpvJyT%6dA2^)TVIO^=|tSKoYb4Dxi
zzCSn!zL)?LLClg3iisaNwXF;cCIlaHnFvfSMuLH^1;tZ%IlKKM9{&6HZ;p^!$DJ<=
zrUMg^hQ7XdjG&HPAnTW}U;k<ZwobS$>gW&j+QHr)Ct+X&0zDZPruKn3W=l)wiS0)(
zi8_Lvnc-THeOh$lyJMQSTbupnuj2qG)k~Lx6n$KlE!kb#=QV+&YF0;y>yGF*8%{s)
z(Z5`uWw+DUWtq|)UQuRa-Wl0<y7j<%CQTA*>=yoh%;%1I=Hf^9W-J6|rIxUk-w_Pk
z57$=fG~9WY%&4ZcibL+^(}j8etZnbh+deC^tyhC4%!(z;mM?dIP-r9f?3uVj&B4E>
zK2<B{FZ}gY>DH}VEOIAO9tXz6yfOU~?7(2l9DgfaY0h<vva&L+J$Kdxym;|K;L7{W
lf3_+G?b)z9;OG0#yvzG<D5tZOr~nHQ22WQ%mvv4FO#nkp3b_CP

delta 899
zcmV-}1AP4J2$=_vBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET6
zJ4r-ARCt{2oWWAUFc5~nXc1+`=im`MapuOGdhzVZ6R*H~cu+y&!K{{@BqT+k#r<ZO
zP76bm^q+rs(>8eT=>a}`&U13_X`FLRr_)}H24@-!=bXDb$A5|Yhz&%*1|nbs5wL*>
zH0>P;r5_(30Bkm!o#R7iG#UYLb8`cLbMEImQ$%1#5pQpA04x>@0A{lp0F%iCfbDjB
z%C;TM)z$ZP{`~v|;Q9F(fTyP?0PgPYet&!7w)K`BMXc9r0Os>K@H>*?8ADZsY^7h1
zkB@*UB1#iGD1S;2g~)!XBHC_z3`(PzDB=408pyWGn<4_yJVF$pw?p#?tsGHEOi`wY
zK-44T%BQwNL%bo^ep5ss>JgW&2=j;x<`Dr?L?G%BdOLJQ=={MvBEz40#HnYpN^6>u
z_M0LC**rqm7_y(DuZoa%OBHG!k)g;VbQP*O_bm55Wq(*6Q9*WwDz()NMG-lVGerc7
zqQ<2t!m7^#vK~<yH8jUoNbM}Sc|---JR&uVeQr<KhgOVKpO!}yP;_78Qfdv^TGYr;
zRcn|>`~#|LjiJq1igNXnGcimNfq!wQOSj*mMuvZJr^{xsD=50trM+V)NIsG3Pa9K2
zAnFnOlz&mnp_ypcr}S#tZ;A*swBDoABUU=1$F4p0{eMa^sdk%3WM}|~db_UHBl=p6
znn!e?Dvv0Q9;cqg*5})oKbS{k=#)pC+biTe`|=C(hz<-=5v7<SIuMN-nyyOtYlWnu
zMe2A>yG#**tVdiL<`D&CJ)%?@I+N4Kk45SKTYvRgL6t|OuDt%f^#4lf`h-kPJ4_LQ
zqC7%#=oRWZ<MdaUM`Vb4ghpSXzC?o*rPXO0Q$!%D2pP#^DdE(LO7*9WDIyS!8hQjv
zMzoKl+HX-KL)0T=ou-;+kot(c!__q3-IRXCFhvBSijWn&WJG0!vc5kbp*>ENEQ*l*
z2z<7lrLd!j@pufta=8TH;o$**`}=#K|BBG)cfwy@UVz_z?)>(2&FVJ}_*wH-)~b7b
zeFfnC{T&#d5;Wo&q6AU+?d>f9tJTUpLWp{Vjuw}K^h=^*8&gEUdGAYVh@s!;$ac_s
Z&ljFJ+c62-X&L|k002ovPDHLkV1jsqr;7jp

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_off.9.png
index 34a948f4e68a9a91d138290327d5a6a77af086aa..bd30464d67e2af9e2d980dd5b12c49913aee1785 100644
GIT binary patch
literal 1273
zcmeAS@N?(olHy`uVBq!ia0vp^PCy*R!3HFGE;h(9Ft8l(ba4!+xb=3<buaBe3Aer5
zzBeW9zR>=W(Zw-fJ&S1d`@IS8MXQ}%j<SdRuzX!`NB!{|&zUKY<Rio_J-^l5Pdaz*
zOp3LpX6MHrf1GRNw{G1!f4`*YLZy(Ft^mP@9V=F@6x7nzZr!xWXyKMECYlSxZ9`jT
zcYOL(v~cla=ZdN-Av-&}mha!cJ2<}EzTLbr?#mzdBg?xuR2MB-;$pyFQCTTCZ~lB{
z)}8V3@vK!BgI#ZQIWRB-^>6|8gxT2G91*!K^JE$O-jJ5H9giL*HO6)|zI*qsW%lgZ
z4vu+M7rN(Z9SURFEwo#LIX*VFHaRE9CnGCM=+&!NEb~6^`f0ge!QA%6Ql%VM5m8Z2
z8IQa7?s4(d6c#G>^!0Il{rc6Zx_Y;Pg@wk4IoB)g=YQuey4)Q1B}8zW(vMlY_U#js
z`0?jYOh#_5XjOG}>%@r@Cw%$xg=5eB^S@blzI4<VP1IhrVM9PdQR4Na2bV7gFI>3L
z@x}Z1;%#khPKRE@l~t|ch!*tGdlSV|Q&Xc;V0HWIRaG7yo|cyDGj00&`WA6j&Vf5p
zM1;dfFFie-iCJDoh9fvQ*vZ?w`@+qenkD7s+#OkYd17kn>aBnO{$1fDr+&hh9};3a
z_UsYy^Yde2yLb1l=#2ws&h%Wkc1_L1%#6!s{=9i&H>Q@Cl_fFl^Z{vD$+2GP$1O`6
z8xe_$?CjUlIVa{!sW_*%XXj4I;4?7}z##Po#=(j6=fyQPZQrhL@Zs05DvxW|u084s
z)`N%6nUlSZ;o;$HBO)U^HMd!w*t>VHE>K^E=s}eeDMt>RK7IPorAt9h&VC>rzzA}Q
zi<@`gI^SeLW_=x<KPUeD*|UDfQ$=9RxcUPFvFT)MY<J`HXU|%0-n`k;HU|>j;eyiA
z(oB>2r5~thX-t?c_az7zEk(t}tZL$Ax@^ywyaPa?1~b63z47?*<G^$Ti5Dexb@vBP
z+D@h=B{@AferEy5Uy!8IzAR==YIyOljn{i0K7820QN9~uU3bU+{}blU)&0P@uP%b=
ziO7|g?g{$~PPsxgI=XaeHaQ2?-Aevc$aQGa!itAey6=2hFuiMo=)|d0Rdw|AxMU_6
z{M?YZJeA=9)5M5}+iHs@0Uf<)IZ(wxPcC*9AG<u)-@ks<9Q73eJMv*Di@3X`f}wc3
zC2R7|h4DK$m7qyAB`u9>8HbwudZvg1DcwC>irY1tz{y<PXp%1rI4AV<@HFxlTzaIY
zbWzPam<1LN-qFiC3i#(F#ol=N`mzW(g(}(F#uf+*YCe>+sy^z;VjJqRL+Olj&i2a>
zJp3;&HnrOs>as-X46_znkI91jGt^_j!F=h`B^E!wGu*}>_j$Y){d|aL?~9edJT&7p
z(+(NAEvbx8%%-!h04Ah}O{W*-)%p2<S$aHX-E&K5;5Vt7-g(#Xv_j|EGk%9Arky`0
zYgI+AU-;{*l9rYhi&#q0gNd_dNoD+4-@s61b#IHmtHk!gHS5-i?bsQ+DIhddHRAsH
lPuIJCJZ!sr@>G4le#FX}Zq~XTwZI~c!PC{xWt~$(69E0qM*9E&

delta 1111
zcmV-d1gQJ@3F`=uBYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
z4M{{nRCt{2oViZzFcd{s;4%s*7$gP>AtB%ssHo}qQyOY2Dt>{fp@9Y}<|(guJ|x%A
zcI<G6gm;#NqU46ecDD98w&RfJISn8;f5W+Xp3}*)jGdjGMt`&hLu!mH%d(MS+_;Ho
zLm0Fn4B8L|Z3siByd$CX?d=VKkB^V8<85bbYz%<$@o@mMEc^aV6=CR7#LLSI00##L
z0POAU0Wdv14Zzpe*C5OGV@5{)KIhNRPXLaOj{!J3Is#y7YN|MQz-4PJU5a>re+OWH
ze;+7XQaq!rihq!;)a&r@5Ku)p>9`Jx5=0@gAFGJ68~20QC?-l69UTRN<;qnN24@~2
z3b40r^9Wlxq7av&R1pTJN63@+ZH4pma{#WduK~EfzXxD`ejb4J^>qNYx3_y*=v2fT
zLW)*J7@QtarHG4*3jnUJt^inETm)ccWd(r8$43AzFMlt)uDi9h)sH$<Vk<&DB0w#V
zxV^mvU~O#;fQgBTuK%B#n*)koo}9nAx!JptC!ijYfYT%Ft*waX=VzdZ4!)L_j84uU
zRvu#K59$#CYI(%M!U9nAMSMBD{4UCo47FFp_Gx^1P#IN(A(%(leGJ(bMMy?DGcyAe
zo*-kL4}T92K#^e%OA&HkDW7^ofGCf!d!ehVt3ct#H#au`+}+&)MIN!Su>rvH@-k42
zboH7lWoRCeKyZZ0x0SqLX=w>46w>MZy_|T2C_v8d7qN;6d6X)`5EV7-tsqbO>FKGz
zrK}*;BQ$CR2zrE18CCRqt~7O&Ts<OzU>@Nc#eZ)4?6|EM$#*o5h#+cS!&ZooK`SM-
zuOVBF8Ud2}8tM`M0ZDz0w$6RpZ_c<-MHp($bhQn;{2Da^{Af13E$AqA0#P$vws*7z
z$tQgEDWi%oI6b0D8L9j<6RrD}UP}2@5rz(>byRkX#kOd_`yN%-_bJ9#ZuN)&9U#M6
zU4NJA5l!ulsz=lyDUXPa9)ljmw(nP!Kd46psFg<y+biTgRr!T_L=9T0h*(q+HE>1^
zo4QKqwL*N+!goBST&f5|&?9~u>JbqHJt9^ab|z;Z?-#Mx*WPCWNgm;Q^7iks*Ndg@
z8!{>7P(>J`@(7!sKB2lJPQ5}sB7oB)Y=7)0)Rbu8Ber*1MipUjDneSaUrHFXqI~r!
zqlz#%qlVprF)i9eeC5}u5y0sYvVu3|9i%2AYq(?`iPX!5D#GAYgnYrvUbWZs_akhN
z6D5lxWZ!{)&r;}8gsl2MJv{|rcXt<n+1Xj3`HHZy*My&(oB;oR-2l`hzR7^^Z&2RK
zx9VgC@9XO;&^{&Dh-ZirMB$T@lK`BZovB9%PLHso#cx6CB~h`AD#DQEc^=b;X!}G*
du!4D>^9SndCuws+_+9`2002ovPDHLkV1m`c{w@Fj

diff --git a/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png b/java/res/drawable-xhdpi/btn_keyboard_key_pressed_on.9.png
index 520f12d3f4aa1f15ddf843a8c2fbca71130d5083..a3ff5d1bb6fa451cf6d5a32258c74c3f427bcba1 100644
GIT binary patch
literal 1312
zcmYLJYf#cz6h}idH0`gVu9L=6p;5`s)P#@FP#86Nn37JrpinWpQ<`YIEg)791VT=(
zwPOrfrrA5hM;RG~Y>i?nr8{CtB1UFwiW%jSvMt){!@c**Ip_Xf_m-xUl9xh4As`TF
zX=(~C!*wRQ){kDEuHEPH;cyTL{4y1XrLdn)oQ^42yFKJ+W;)Xx?B590*H_nE@bzaR
zagmL-*?mlNc13h+O=KwnUq1QgFNb}>w>><dDJhf|`ek?C6t&RrOxJgD;l&k(-puIt
z%kSB0_3{lTO8a^<o)^xb^d)~Ajb;p!B9x{B$VB{oc#Tp?x};PFA(2So^z?MHn`Z1X
z+=QcKWkHBUqR!z^FDu0f6$-@`?Bw|PUVe^!?zkil3J`HScF5_zEDmQ4l}ZIeigIbR
zCH9(&QWcaB^4uI37eFGBu0>-o#K@a59YjCwWv`!ry1F{|*1$z!D^_@m#o~GZA`<rZ
zXPs+k*ftzfuNZWAs9#}G+$*li*IQrj^x?5sFanXdWc|4ok>x5{B(EP@#_k!vb9TZh
zFxjgsU3YEE$bhTLV`F3eL)Zlc<PbA2ci_MG>lrh64uxGc)1=8QSA>6p)y6<B_x1L<
z)7m=gXD~zI33qpS*bd#$kmoBhfSYisOy+?IKCs?%XlN)X{-a~1<q68Rqiy!d5Ne*l
z<4pX3lwQOz?i}v!CR!Z7@7GnL5(4kC9WL9PPjYQeMOj(dV$o*O*MU+g7*SbO6~^Zq
z`}>9DcyDj>#}5rtBQxbw-31zV0|!%747;XO#z$HU=NScKwhOOIoX!%)-o0t`;TJDn
z7$v5oqWVL(fP){NXAN_#eJWLR^U3rs>Xv=nM`?IAw2kp|NePWUEE0(>br}p1(2G>-
zg~b|*YmQEr$p5RSvs0?oHZ?VElgs6)NRs*+l{Ve(`&ue@|1K^!_T0cIY-VJnW(x{x
z*$x(mAy#^hRt#FLySFBhiu#V^Aaz+dES9fji1iYFdwaW$nU~j<ZJPe3u2rXepslT~
z)pc~Fd~LcaQLAJ4da++fXecD`3$VF49$zn_$@q&sJ>9=~PKYAJ`k0Ky;K(m|;cz(a
z5op3Dr_-58CX=gSXv`R%3}vhp)V-RTQfZa_&z^+^&}g(mVEkppf{jt|948Eo&ZaN&
zP0(mGg3L!fJw4|~PRc&ZdqlD^6P(uD)`sQl+t;KdCnskVcH$Sr9FTVC^#B5a00*ri
z#Pe9i#j~2`8#h)5wiqHJz9#eZc@>N?UAVUMdiy~OLb{N{DWpJFyDsGv&je{{ZvI!Q
zfPK;Iz=4}|DSi44vRbWnVBa8xrVCyR0jGAb^WbB3@I3r(CUZ%iHdUsOP!#Kkz~>Zr
zMdi!kJ899YZ>#z&eSuh%i#2@1hD=rffNF@U(u}MUoI%2~fKmU!iH*@ieRgr^SrZbT
z1B?o!ZqJvFp+{4L7gBKSm=FI%z*`-m5!K6maOa1lPY-M~-;L_)_cY(lx~afB9mv76
z9!8;md;8K(x%ckW!*`n_TvE@YW2F(3l8$I6*ru-Tgu`HuqPMm`?2UKD|LA3xu3YiI
z_5BG^GMCG(wq(1x*?*nujfXOLWxMk8uWKs@F+qFw>;aG4ns|-yNr!H-z4K%EA@|A=
Vvtdq&rnr7SP%55;Qzp^{{{wm6a!UXJ

delta 1178
zcmV;L1ZDf63atr{BYyw{b3#c}2nYxWd<bNS00009a7bBm000Y#000Y#0XNCZtpET7
zPf0{URCt{2oLg%YNf?Hoo|zmWn80d`;<B=bF~1-en(JH$`KP%Fc$ceykb8GoLkun~
z8WUZK5+#S3X)n4yGgDO8RCQ*iyWQ`Bq3NDJd{y=G)>qXB(tk9i0;J|w&c)M|R+1#N
z+wDr!1|?NSk|ar^j0;y0tq6lwgh4C9pcP?g^{+@*dU<&XK&R6g*j{(0rltUxo}LCE
zNs{mXsUi#mia0+%2Viq^6M*&gbpYn)=K<*TdXtRp#xxpPJ9oQX0CskE0NCE%24HS(
z?t0$|$5vSe6n}Abbp^o2#s+X*lj0e5RfH_1Tw7aPfGWaC%e7IIAPSN7P(}2+@i++W
z#Y73sW)twnm8v2P&OAaCU@vV&93342aD03W!0G8J0E>%@04y&r1F*8PGWy5^u$3bU
zaVbg_VQ_kcw0z!DlyK5`2EeT+hXAbHKLOy&n>zr!JAe2!JMPWX?EjLKA>QEgI8}tf
z=@G*e(Or50!0O|F0BAJDjWbVJdX%l*`#t;r<oOG8{PKvy55rc3dW45U9&xw*8Gt)W
ze*|5mVfODGmXn#PM?~QC2zzNO;?e3a0Cbw~gD$eTdK-Y32jwWj&L7kxJQVVX?uUl}
z%s((LjDNeO6I0J$|IPN740Tk5j%n=pU8o`q-aNt{W61j1(N6%}f0&IaI*ktiT&14?
zm`ZMCC+}tZoxE+D<IhGKe5fKMZW)EDM|cSG2zwOz`tPje(===OpMPruaQj|1xB33<
zR{&leWc$5-c{=*Y`xvGS%_Ac4&QRqog~Pu-0)O!8&;Q02U<jd#@by}%2t!b>k*5gz
zxUz`#2<<gIcs(Ld8N(R2LSkph)gvPC<`H?b*kyadFl@!h=u`8E0D|so*b2#G(n^UP
zYsgZ24G&Rc4fTls0a0U(x;-Bu%C(=IaiNMZ6uQ$@H|+Se*YHqi7Q1ffEOrDzce-rv
zsDBHRPvn)SA610G=@G+}5z9?8(V|c3#l)|QFtq4<kIJsG&>9{0*kjoF^AwX8w|az!
z7LZ`QT^H*SRUM70M-(6`j|lBOCOwO7UvF6cpdR6&P##gXSIBjS<rnG^1*oMWLQzE&
zz}aiq6jj2g6_VFm<ZX|MOBG@8dc=>0dVfR!UXKV>hMmdT+s8%d`E~ReL6k@2wY>d*
z==nk^`h-kO9I6OIP#$4((-tZ^<1{MNBRn`g!p3f)s`LhVgpN-8QAHS>ijbNdml7te
zsJ!y@qlz#%dkwn=Lu#~&<i)SOh6krd$ak7zo<XW2@(x$4l@(LU<w6x<a4JH+;D04G
zDqkq8`tuRC$BB|f5wh+;zh@~7C}L)227tZ2Jpk6$)&N*oSOBW82pjvI@ZH^A;JTax
z`%W&bYLfupzj-U)syjQ&-q^jkxB%*>1RL=TQGzIZc6Jtk{r!FQ2*K$Qc5m^cAmx%?
su^&~0AxYCTWDHUF8y(&PrfJGI<r9S>_cGnbFaQ7m07*qoM6N<$g1PW5`2YX_

diff --git a/java/res/drawable/btn_keyboard_key_fulltrans.xml b/java/res/drawable/btn_keyboard_key_fulltrans.xml
deleted file mode 100644
index bad2a931d1..0000000000
--- a/java/res/drawable/btn_keyboard_key_fulltrans.xml
+++ /dev/null
@@ -1,26 +0,0 @@
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Copyright (C) 2010 The Android Open Source Project
-
-     Licensed under the Apache License, Version 2.0 (the "License");
-     you may not use this file except in compliance with the License.
-     You may obtain a copy of the License at
-
-          http://www.apache.org/licenses/LICENSE-2.0
-
-     Unless required by applicable law or agreed to in writing, software
-     distributed under the License is distributed on an "AS IS" BASIS,
-     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-     See the License for the specific language governing permissions and
-     limitations under the License.
--->
-
-<selector xmlns:android="http://schemas.android.com/apk/res/android">
-
-    <!-- Normal keys -->
-
-    <item android:state_pressed="true"
-          android:drawable="@drawable/btn_keyboard_key_fulltrans_pressed" />
-    <item
-          android:drawable="@drawable/btn_keyboard_key_fulltrans_normal" />
-          
-</selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup.xml b/java/res/drawable/btn_keyboard_key_popup.xml
index 860cfd5d54..9e3670d22f 100644
--- a/java/res/drawable/btn_keyboard_key_popup.xml
+++ b/java/res/drawable/btn_keyboard_key_popup.xml
@@ -17,5 +17,5 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/btn_keyboard_key_light_popup_selected" />
-    <item android:drawable="@drawable/btn_keyboard_key_light_popup_normal" />
+    <item android:drawable="@drawable/transparent" />
 </selector>
diff --git a/java/res/drawable/btn_keyboard_key_popup_ics.xml b/java/res/drawable/btn_keyboard_key_popup_ics.xml
index 8f797ac3c0..b99679ba13 100644
--- a/java/res/drawable/btn_keyboard_key_popup_ics.xml
+++ b/java/res/drawable/btn_keyboard_key_popup_ics.xml
@@ -17,5 +17,5 @@
 <selector xmlns:android="http://schemas.android.com/apk/res/android">
     <item android:state_pressed="true"
           android:drawable="@drawable/btn_keyboard_key_popup_selected_holo" />
-    <item android:drawable="@drawable/btn_keyboard_key_popup_background_holo" />
+    <item android:drawable="@drawable/transparent" />
 </selector>
diff --git a/java/res/values-land/dimens.xml b/java/res/values-land/dimens.xml
index d6e096278d..d5ca250632 100644
--- a/java/res/values-land/dimens.xml
+++ b/java/res/values-land/dimens.xml
@@ -24,24 +24,33 @@
     <fraction name="minKeyboardHeight">45%p</fraction>
     <!-- key_height + key_bottom_gap = popup_key_height -->
 <!--    <dimen name="key_height">0.260in</dimen>-->
-    <dimen name="key_bottom_gap">0.020in</dimen>
     <dimen name="popup_key_height">0.280in</dimen>
-    <dimen name="keyboard_top_padding">0.00in</dimen>
+    <dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
+
+    <dimen name="keyboard_top_padding">0.02in</dimen>
     <dimen name="keyboard_bottom_padding">0.00in</dimen>
-    <dimen name="key_bottom_gap_ics">0.04in</dimen>
-    <dimen name="key_horizontal_gap_ics">0.01in</dimen>
+    <dimen name="key_bottom_gap">1.21mm</dimen>
+    <dimen name="key_horizontal_gap">0.35mm</dimen>
+
+    <dimen name="key_bottom_gap_stone">1.40mm</dimen>
+    <dimen name="key_horizontal_gap_stone">1.00mm</dimen>
+
+    <dimen name="key_bottom_gap_gb">1.66mm</dimen>
+    <dimen name="key_horizontal_gap_gb">0.86mm</dimen>
+
     <dimen name="keyboard_top_padding_ics">0.03in</dimen>
     <dimen name="keyboard_bottom_padding_ics">0.00in</dimen>
-    <dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
+    <dimen name="key_bottom_gap_ics">1.79mm</dimen>
+    <dimen name="key_horizontal_gap_ics">0.88mm</dimen>
 
     <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_alignment_padding">8dip</dimen>
+    <dimen name="key_label_horizontal_padding">8dip</dimen>
 
-    <fraction name="key_letter_ratio">55%</fraction>
-    <fraction name="key_large_letter_ratio">68%</fraction>
-    <fraction name="key_label_ratio">35%</fraction>
-    <fraction name="key_hint_letter_ratio">28%</fraction>
-    <fraction name="key_hint_label_ratio">45%</fraction>
+    <fraction name="key_letter_ratio">65%</fraction>
+    <fraction name="key_large_letter_ratio">74%</fraction>
+    <fraction name="key_label_ratio">40%</fraction>
+    <fraction name="key_hint_letter_ratio">30%</fraction>
+    <fraction name="key_hint_label_ratio">52%</fraction>
     <fraction name="key_uppercase_letter_ratio">40%</fraction>
     <fraction name="key_preview_text_ratio">90%</fraction>
     <dimen name="key_preview_offset">0.08in</dimen>
diff --git a/java/res/values-sw600dp-land/dimens.xml b/java/res/values-sw600dp-land/dimens.xml
index 5d1fbc7486..5016f4247b 100644
--- a/java/res/values-sw600dp-land/dimens.xml
+++ b/java/res/values-sw600dp-land/dimens.xml
@@ -22,20 +22,28 @@
     <!-- keyboardHeight = key_height*4 + key_bottom_gap*3 -->
     <dimen name="keyboardHeight">45.0mm</dimen>
     <fraction name="minKeyboardHeight">45%p</fraction>
-    <!-- key_height + key_bottom_gap = popup_key_height -->
-    <!-- <dimen name="key_height">14.5mm</dimen> -->
-    <dimen name="key_bottom_gap">1.3mm</dimen>
-    <dimen name="key_horizontal_gap">1.3mm</dimen>
+
+    <dimen name="keyboard_horizontal_edges_padding">0dp</dimen>
     <dimen name="keyboard_top_padding">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding">0.0mm</dimen>
-    <dimen name="key_bottom_gap_ics">1.3mm</dimen>
-    <dimen name="key_horizontal_gap_ics">1.3mm</dimen>
+    <dimen name="key_bottom_gap">2.21mm</dimen>
+    <dimen name="key_horizontal_gap">1.97mm</dimen>
+
+    <dimen name="key_bottom_gap_stone">1.96mm</dimen>
+    <dimen name="key_horizontal_gap_stone">2.31mm</dimen>
+
+    <dimen name="key_bottom_gap_gb">2.34mm</dimen>
+    <dimen name="key_horizontal_gap_gb">2.22mm</dimen>
+
+    <dimen name="key_bottom_gap_ics">1.66mm</dimen>
+    <dimen name="key_horizontal_gap_ics">1.66mm</dimen>
     <dimen name="keyboard_top_padding_ics">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen>
+
     <dimen name="popup_key_height">13.0mm</dimen>
 
     <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
+    <dimen name="key_label_horizontal_padding">18dip</dimen>
 
     <fraction name="key_letter_ratio">45%</fraction>
     <fraction name="key_large_letter_ratio">45%</fraction>
diff --git a/java/res/values-sw600dp/dimens.xml b/java/res/values-sw600dp/dimens.xml
index 675f40c2e7..1a82b0c6c7 100644
--- a/java/res/values-sw600dp/dimens.xml
+++ b/java/res/values-sw600dp/dimens.xml
@@ -23,18 +23,27 @@
     <dimen name="keyboardHeight">48.0mm</dimen>
     <fraction name="maxKeyboardHeight">50%p</fraction>
     <fraction name="minKeyboardHeight">-35.0%p</fraction>
-    <!-- key_height + key_bottom_gap = popup_key_height -->
-    <!-- <dimen name="key_height">14.5mm</dimen> -->
-    <dimen name="key_bottom_gap">1.0mm</dimen>
-    <dimen name="key_horizontal_gap">1.0mm</dimen>
+
     <dimen name="popup_key_height">10.0mm</dimen>
+
+    <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
     <dimen name="keyboard_top_padding">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding">0.0mm</dimen>
-    <dimen name="key_bottom_gap_ics">1.0mm</dimen>
-    <dimen name="key_horizontal_gap_ics">1.0mm</dimen>
+    <dimen name="key_bottom_gap">1.80mm</dimen>
+    <dimen name="key_horizontal_gap">1.67mm</dimen>
+
+    <dimen name="key_bottom_gap_stone">1.80mm</dimen>
+    <dimen name="key_horizontal_gap_stone">1.44mm</dimen>
+
+    <dimen name="key_bottom_gap_gb">2.22mm</dimen>
+    <dimen name="key_horizontal_gap_gb">1.90mm</dimen>
+
+    <dimen name="key_bottom_gap_ics">1.37mm</dimen>
+    <dimen name="key_horizontal_gap_ics">1.53mm</dimen>
     <dimen name="keyboard_top_padding_ics">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen>
-    <dimen name="mini_keyboard_key_horizontal_padding">12dip</dimen>
+
+    <dimen name="mini_keyboard_key_horizontal_padding">6dip</dimen>
     <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
     <!-- popup_key_height x 1.2 -->
     <dimen name="mini_keyboard_slide_allowance">15.6mm</dimen>
@@ -42,7 +51,9 @@
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
     <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
+    <dimen name="key_label_horizontal_padding">6dip</dimen>
+    <dimen name="key_hint_letter_padding">3dp</dimen>
+    <dimen name="key_uppercase_letter_padding">3dp</dimen>
 
     <fraction name="key_letter_ratio">37%</fraction>
     <fraction name="key_large_letter_ratio">37%</fraction>
diff --git a/java/res/values-sw768dp-land/dimens.xml b/java/res/values-sw768dp-land/dimens.xml
index 2201ce8a36..8cbd37e174 100644
--- a/java/res/values-sw768dp-land/dimens.xml
+++ b/java/res/values-sw768dp-land/dimens.xml
@@ -22,27 +22,35 @@
     <!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=14.5mm -->
     <dimen name="keyboardHeight">58.0mm</dimen>
     <fraction name="minKeyboardHeight">45%p</fraction>
-    <!-- key_height + key_bottom_gap = popup_key_height -->
-    <!-- <dimen name="key_height">14.5mm</dimen> -->
-    <dimen name="key_bottom_gap">1.6mm</dimen>
-    <dimen name="key_horizontal_gap">1.6mm</dimen>
+
+    <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
     <dimen name="keyboard_top_padding">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding">0.0mm</dimen>
-    <dimen name="key_bottom_gap_ics">1.6mm</dimen>
-    <dimen name="key_horizontal_gap_ics">1.6mm</dimen>
+
+    <dimen name="key_bottom_gap">2.65mm</dimen>
+    <dimen name="key_horizontal_gap">2.34mm</dimen>
+
+    <dimen name="key_bottom_gap_stone">1.96mm</dimen>
+    <dimen name="key_horizontal_gap_stone">2.31mm</dimen>
+
+    <dimen name="key_bottom_gap_gb">2.80mm</dimen>
+    <dimen name="key_horizontal_gap_gb">2.60mm</dimen>
+
+    <dimen name="key_bottom_gap_ics">2.25mm</dimen>
+    <dimen name="key_horizontal_gap_ics">2.22mm</dimen>
     <dimen name="keyboard_top_padding_ics">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen>
+
     <dimen name="popup_key_height">13.0mm</dimen>
-    <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
 
     <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
+    <dimen name="key_label_horizontal_padding">18dip</dimen>
 
-    <fraction name="key_letter_ratio">38%</fraction>
-    <fraction name="key_large_letter_ratio">38%</fraction>
-    <fraction name="key_label_ratio">26%</fraction>
+    <fraction name="key_letter_ratio">43%</fraction>
+    <fraction name="key_large_letter_ratio">42%</fraction>
+    <fraction name="key_label_ratio">28%</fraction>
     <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_hint_label_ratio">26%</fraction>
+    <fraction name="key_hint_label_ratio">28%</fraction>
     <fraction name="key_uppercase_letter_ratio">24%</fraction>
     <dimen name="key_preview_height">17.0mm</dimen>
 
diff --git a/java/res/values-sw768dp/dimens.xml b/java/res/values-sw768dp/dimens.xml
index 2e41db52a1..81a68e233c 100644
--- a/java/res/values-sw768dp/dimens.xml
+++ b/java/res/values-sw768dp/dimens.xml
@@ -23,19 +23,27 @@
     <dimen name="keyboardHeight">48.0mm</dimen>
     <fraction name="maxKeyboardHeight">50%p</fraction>
     <fraction name="minKeyboardHeight">-35.0%p</fraction>
-    <!-- key_height + key_bottom_gap = popup_key_height -->
-    <!-- <dimen name="key_height">14.5mm</dimen> -->
-    <dimen name="key_bottom_gap">1.1mm</dimen>
-    <dimen name="key_horizontal_gap">1.1mm</dimen>
+
+    <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
     <dimen name="keyboard_top_padding">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding">0.0mm</dimen>
-    <dimen name="key_bottom_gap_ics">1.1mm</dimen>
-    <dimen name="key_horizontal_gap_ics">1.1mm</dimen>
+
+    <dimen name="key_bottom_gap">2.05mm</dimen>
+    <dimen name="key_horizontal_gap">2.11mm</dimen>
+
+    <dimen name="key_bottom_gap_stone">1.80mm</dimen>
+    <dimen name="key_horizontal_gap_stone">1.44mm</dimen>
+
+    <dimen name="key_bottom_gap_gb">2.25mm</dimen>
+    <dimen name="key_horizontal_gap_gb">1.96mm</dimen>
+
+    <dimen name="key_bottom_gap_ics">1.75mm</dimen>
+    <dimen name="key_horizontal_gap_ics">1.79mm</dimen>
     <dimen name="keyboard_top_padding_ics">1.1mm</dimen>
     <dimen name="keyboard_bottom_padding_ics">0.0mm</dimen>
+
     <dimen name="popup_key_height">10.0mm</dimen>
-    <dimen name="keyboard_horizontal_edges_padding">0.0mm</dimen>
-    <dimen name="mini_keyboard_horizontal_padding_ics">40dip</dimen>
+
     <dimen name="mini_keyboard_key_horizontal_padding">12dip</dimen>
     <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
     <!-- popup_key_height x 1.2 -->
@@ -44,14 +52,16 @@
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
     <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_alignment_padding">6dip</dimen>
+    <dimen name="key_label_horizontal_padding">6dip</dimen>
+    <dimen name="key_hint_letter_padding">3dp</dimen>
+    <dimen name="key_uppercase_letter_padding">3dp</dimen>
 
-    <fraction name="key_letter_ratio">38%</fraction>
-    <fraction name="key_large_letter_ratio">38%</fraction>
-    <fraction name="key_label_ratio">26%</fraction>
+    <fraction name="key_letter_ratio">40%</fraction>
+    <fraction name="key_large_letter_ratio">42%</fraction>
+    <fraction name="key_label_ratio">28%</fraction>
     <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_hint_label_ratio">26%</fraction>
-    <fraction name="key_uppercase_letter_ratio">25%</fraction>
+    <fraction name="key_hint_label_ratio">28%</fraction>
+    <fraction name="key_uppercase_letter_ratio">26%</fraction>
     <fraction name="key_preview_text_ratio">50%</fraction>
     <dimen name="key_preview_height">15.0mm</dimen>
     <dimen name="key_preview_offset">0.1in</dimen>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 4470d7b4ed..c5897c853c 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -51,6 +51,12 @@
         <attr name="keyHintLabelRatio" format="float" />
         <!-- Size of the text for upper case letter, in the proportion of key height. -->
         <attr name="keyUppercaseLetterRatio" format="float" />
+        <!-- Horizontal padding of left/right aligned key label to the edge of the key. -->
+        <attr name="keyLabelHorizontalPadding" format="dimension" />
+        <!-- Top and right padding of hint letter to the edge of the key.-->
+        <attr name="keyHintLetterPadding" format="dimension" />
+        <!-- Top and right padding of upper case letter to the edge of the key.-->
+        <attr name="keyUppercaseLetterPadding" format="dimension" />
 
         <!-- Color to use for the label in a key. -->
         <attr name="keyTextColor" format="color" />
@@ -199,7 +205,6 @@
             <!-- This should be aligned with Key.LABEL_OPTION_* -->
             <flag name="alignLeft" value="0x01" />
             <flag name="alignRight" value="0x02" />
-            <flag name="alignBottom" value="0x04" />
             <flag name="alignLeftOfCenter" value="0x08" />
             <flag name="largeLetter" value="0x10" />
             <flag name="fontNormal" value="0x20" />
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index c1ef869300..36074b3b8d 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -19,26 +19,33 @@
 -->
 
 <resources>
-    <!-- keyboardHeight = key_height*4 + key_bottom_gap*3, key_height=0.295in -->
+    <!-- keyboardHeight = row_height*4 + key_bottom_gap*3 -->
     <dimen name="keyboardHeight">1.285in</dimen>
     <fraction name="maxKeyboardHeight">50%p</fraction>
     <fraction name="minKeyboardHeight">-61.8%p</fraction>
-    <!-- key_height + key_bottom_gap = popup_key_height -->
-    <!-- <dimen name="key_height">0.295in</dimen> -->
-    <dimen name="key_bottom_gap">0.035in</dimen>
-    <dimen name="key_horizontal_gap">0.000in</dimen>
+
     <dimen name="popup_key_height">0.330in</dimen>
-    <dimen name="keyboard_top_padding">0.00in</dimen>
-    <dimen name="keyboard_bottom_padding">0.06in</dimen>
-    <dimen name="keyboard_horizontal_edges_padding">0.0in</dimen>
-    <dimen name="mini_keyboard_horizontal_padding">16dip</dimen>
+
+    <dimen name="mini_keyboard_horizontal_edges_padding">16dip</dimen>
     <dimen name="mini_keyboard_key_horizontal_padding">8dip</dimen>
 
-    <dimen name="key_bottom_gap_ics">0.06in</dimen>
-    <dimen name="key_horizontal_gap_ics">0.01in</dimen>
+    <dimen name="keyboard_horizontal_edges_padding">0dp</dimen>
+    <dimen name="keyboard_top_padding">0.02in</dimen>
+    <dimen name="keyboard_bottom_padding">0.06in</dimen>
+    <dimen name="key_bottom_gap">2.04mm</dimen>
+    <dimen name="key_horizontal_gap">0.70mm</dimen>
+
+    <dimen name="key_bottom_gap_stone">2.45mm</dimen>
+    <dimen name="key_horizontal_gap_stone">0.90mm</dimen>
+
+    <dimen name="key_bottom_gap_gb">2.12mm</dimen>
+    <dimen name="key_horizontal_gap_gb">1.02mm</dimen>
+
     <dimen name="keyboard_top_padding_ics">0.03in</dimen>
     <dimen name="keyboard_bottom_padding_ics">0.06in</dimen>
-    <dimen name="mini_keyboard_horizontal_padding_ics">38dip</dimen>
+    <dimen name="mini_keyboard_horizontal_edges_padding_ics">6dp</dimen>
+    <dimen name="key_bottom_gap_ics">2.37mm</dimen>
+    <dimen name="key_horizontal_gap_ics">0.90mm</dimen>
 
     <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
     <!-- popup_key_height x 1.2 -->
@@ -49,19 +56,20 @@
          to user's finger. -->
     <dimen name="keyboard_vertical_correction">-0.05in</dimen>
 
-    <!-- left or right padding of label alignment -->
-    <dimen name="key_label_horizontal_alignment_padding">4dip</dimen>
-
-    <fraction name="key_letter_ratio">45%</fraction>
-    <fraction name="key_large_letter_ratio">55%</fraction>
-    <fraction name="key_label_ratio">29%</fraction>
-    <fraction name="key_hint_letter_ratio">23%</fraction>
-    <fraction name="key_hint_label_ratio">36%</fraction>
+    <fraction name="key_letter_ratio">55%</fraction>
+    <fraction name="key_large_letter_ratio">65%</fraction>
+    <fraction name="key_label_ratio">34%</fraction>
+    <fraction name="key_hint_letter_ratio">25%</fraction>
+    <fraction name="key_hint_label_ratio">44%</fraction>
     <fraction name="key_uppercase_letter_ratio">35%</fraction>
     <fraction name="key_preview_text_ratio">82%</fraction>
     <dimen name="key_preview_height">80sp</dimen>
     <dimen name="key_preview_offset">0.1in</dimen>
 
+    <dimen name="key_label_horizontal_padding">4dip</dimen>
+    <dimen name="key_hint_letter_padding">2dp</dimen>
+    <dimen name="key_uppercase_letter_padding">2dp</dimen>
+
     <dimen name="key_preview_height_ics">80sp</dimen>
     <dimen name="key_preview_offset_ics">0.05in</dimen>
 
diff --git a/java/res/values/styles.xml b/java/res/values/styles.xml
index 08301be5c8..29b9d589cd 100644
--- a/java/res/values/styles.xml
+++ b/java/res/values/styles.xml
@@ -49,6 +49,9 @@
         <item name="keyHintLabelColor">#E0E0E4E5</item>
         <item name="keyUppercaseLetterInactivatedColor">#66E0E4E5</item>
         <item name="keyUppercaseLetterActivatedColor">#CCE0E4E5</item>
+        <item name="keyLabelHorizontalPadding">@dimen/key_label_horizontal_padding</item>
+        <item name="keyHintLetterPadding">@dimen/key_hint_letter_padding</item>
+        <item name="keyUppercaseLetterPadding">@dimen/key_uppercase_letter_padding</item>
         <item name="keyPreviewLayout">@layout/key_preview</item>
         <item name="keyPreviewBackground">@drawable/keyboard_key_feedback</item>
         <item name="keyPreviewLeftBackground">@null</item>
@@ -72,8 +75,8 @@
     </style>
     <style name="PopupMiniKeyboardPanelStyle">
         <item name="android:background">@drawable/keyboard_popup_panel_background</item>
-        <item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_padding</item>
-        <item name="android:paddingRight">@dimen/mini_keyboard_horizontal_padding</item>
+        <item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_edges_padding</item>
+        <item name="android:paddingRight">@dimen/mini_keyboard_horizontal_edges_padding</item>
     </style>
     <style name="SuggestionsStripBackgroundStyle">
         <item name="android:background">@drawable/keyboard_suggest_strip</item>
@@ -99,8 +102,8 @@
     </style>
     <!-- Theme "Stone" -->
     <style name="Keyboard.Stone" parent="Keyboard">
-        <item name="horizontalGap">@dimen/key_horizontal_gap</item>
-        <item name="verticalGap">@dimen/key_bottom_gap</item>
+        <item name="horizontalGap">@dimen/key_horizontal_gap_stone</item>
+        <item name="verticalGap">@dimen/key_bottom_gap_stone</item>
     </style>
     <style name="LatinKeyboard.Stone" parent="LatinKeyboard">
         <item name="spacebarTextColor">#FF000000</item>
@@ -126,6 +129,10 @@
         <item name="keyTextStyle">bold</item>
     </style>
     <!-- Theme "Gingerbread" -->
+    <style name="Keyboard.Gingerbread" parent="Keyboard">
+        <item name="horizontalGap">@dimen/key_horizontal_gap_gb</item>
+        <item name="verticalGap">@dimen/key_bottom_gap_gb</item>
+    </style>
     <style name="KeyboardView.Gingerbread" parent="KeyboardView">
         <item name="android:background">@drawable/keyboard_dark_background</item>
         <item name="keyBackground">@drawable/btn_keyboard_key_gingerbread</item>
@@ -168,9 +175,9 @@
         <item name="keyBackground">@drawable/btn_keyboard_key_popup_ics</item>
     </style>
     <style name="PopupMiniKeyboardPanelStyle.IceCreamSandwich">
-        <item name="android:background">@drawable/keyboard_popup_panel_background_holo</item>
-        <item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_padding_ics</item>
-        <item name="android:paddingRight">@dimen/mini_keyboard_horizontal_padding_ics</item>
+        <item name="android:background">@drawable/btn_keyboard_key_popup_background_holo</item>
+        <item name="android:paddingLeft">@dimen/mini_keyboard_horizontal_edges_padding_ics</item>
+        <item name="android:paddingRight">@dimen/mini_keyboard_horizontal_edges_padding_ics</item>
     </style>
     <style name="SuggestionsStripBackgroundStyle.IceCreamSandwich">
         <item name="android:background">@drawable/keyboard_suggest_strip_holo</item>
diff --git a/java/res/values/themes-gingerbread.xml b/java/res/values/themes-gingerbread.xml
index 091baa737d..60f2261535 100644
--- a/java/res/values/themes-gingerbread.xml
+++ b/java/res/values/themes-gingerbread.xml
@@ -16,7 +16,7 @@
 
 <resources>
     <style name="KeyboardTheme.Gingerbread" parent="KeyboardIcons">
-        <item name="keyboardStyle">@style/Keyboard</item>
+        <item name="keyboardStyle">@style/Keyboard.Gingerbread</item>
         <item name="latinKeyboardStyle">@style/LatinKeyboard</item>
         <item name="keyboardViewStyle">@style/KeyboardView.Gingerbread</item>
         <item name="popupMiniKeyboardViewStyle">@style/PopupMiniKeyboardView.Gingerbread</item>
diff --git a/java/src/com/android/inputmethod/keyboard/Key.java b/java/src/com/android/inputmethod/keyboard/Key.java
index 872fbf823b..9558853664 100644
--- a/java/src/com/android/inputmethod/keyboard/Key.java
+++ b/java/src/com/android/inputmethod/keyboard/Key.java
@@ -52,7 +52,6 @@ public class Key {
     public final int mLabelOption;
     public static final int LABEL_OPTION_ALIGN_LEFT = 0x01;
     public static final int LABEL_OPTION_ALIGN_RIGHT = 0x02;
-    public static final int LABEL_OPTION_ALIGN_BOTTOM = 0x04;
     public static final int LABEL_OPTION_ALIGN_LEFT_OF_CENTER = 0x08;
     private static final int LABEL_OPTION_LARGE_LETTER = 0x10;
     private static final int LABEL_OPTION_FONT_NORMAL = 0x20;
@@ -276,9 +275,9 @@ public class Key {
 
             final KeyboardIconsSet iconsSet = mKeyboard.mIconsSet;
             mVisualInsetsLeft = KeyboardParser.getDimensionOrFraction(keyAttr,
-                    R.styleable.Keyboard_Key_visualInsetsLeft, mKeyboard.getDisplayHeight(), 0);
+                    R.styleable.Keyboard_Key_visualInsetsLeft, keyboardWidth, 0);
             mVisualInsetsRight = KeyboardParser.getDimensionOrFraction(keyAttr,
-                    R.styleable.Keyboard_Key_visualInsetsRight, mKeyboard.getDisplayHeight(), 0);
+                    R.styleable.Keyboard_Key_visualInsetsRight, keyboardWidth, 0);
             mPreviewIcon = iconsSet.getIcon(style.getInt(
                     keyAttr, R.styleable.Keyboard_Key_keyIconPreview,
                     KeyboardIconsSet.ICON_UNDEFINED));
@@ -314,6 +313,10 @@ public class Key {
         }
     }
 
+    public CharSequence getCaseAdjustedLabel() {
+        return mKeyboard.adjustLabelCase(mLabel);
+    }
+
     public Typeface selectTypeface(Typeface defaultTypeface) {
         // TODO: Handle "bold" here too?
         if ((mLabelOption & LABEL_OPTION_FONT_NORMAL) != 0) {
diff --git a/java/src/com/android/inputmethod/keyboard/Keyboard.java b/java/src/com/android/inputmethod/keyboard/Keyboard.java
index 20327c5b23..280c0c9d88 100644
--- a/java/src/com/android/inputmethod/keyboard/Keyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/Keyboard.java
@@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard;
 import android.content.Context;
 import android.content.res.Resources;
 import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
 import android.util.Log;
 
 import com.android.inputmethod.keyboard.internal.KeyboardIconsSet;
@@ -345,15 +346,23 @@ public class Keyboard {
     }
 
     public boolean isAlphaKeyboard() {
-        return mId != null && mId.isAlphabetKeyboard();
+        return mId.isAlphabetKeyboard();
     }
 
     public boolean isPhoneKeyboard() {
-        return mId != null && mId.isPhoneKeyboard();
+        return mId.isPhoneKeyboard();
     }
 
     public boolean isNumberKeyboard() {
-        return mId != null && mId.isNumberKeyboard();
+        return mId.isNumberKeyboard();
+    }
+
+    public CharSequence adjustLabelCase(CharSequence label) {
+        if (isShiftedOrShiftLocked() && !TextUtils.isEmpty(label) && label.length() < 3
+                && Character.isLowerCase(label.charAt(0))) {
+            return label.toString().toUpperCase(mId.mLocale);
+        }
+        return label;
     }
 
     // TODO: Move this function to ProximityInfo and make this private.
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardId.java b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
index 9c63c198cc..b2600dd3b4 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardId.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardId.java
@@ -42,6 +42,8 @@ public class KeyboardId {
     public static final int F2KEY_MODE_SHORTCUT_IME = 2;
     public static final int F2KEY_MODE_SHORTCUT_IME_OR_SETTINGS = 3;
 
+    private static final int MINI_KEYBOARD_ID_MARKER = -1;
+
     public final Locale mLocale;
     public final int mOrientation;
     public final int mWidth;
@@ -112,6 +114,11 @@ public class KeyboardId {
         });
     }
 
+    public KeyboardId cloneAsMiniKeyboard() {
+        return new KeyboardId("mini popup keyboard", MINI_KEYBOARD_ID_MARKER, mLocale, mOrientation,
+                mWidth, mMode, mAttribute, false, F2KEY_MODE_NONE, false, false, false, false);
+    }
+
     public KeyboardId cloneWithNewLayout(String xmlName, int xmlId) {
         return new KeyboardId(xmlName, xmlId, mLocale, mOrientation, mWidth, mMode, mAttribute,
                 mHasSettingsKey, mF2KeyMode, mClobberSettingsKey, mVoiceKeyEnabled, mHasVoiceKey,
@@ -130,6 +137,10 @@ public class KeyboardId {
         return mXmlId;
     }
 
+    public boolean isMiniKeyboard() {
+        return mXmlId == MINI_KEYBOARD_ID_MARKER;
+    }
+
     public boolean isAlphabetKeyboard() {
         return mXmlId == R.xml.kbd_qwerty;
     }
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardView.java b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
index 58360275dc..203cde915c 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardView.java
@@ -71,6 +71,9 @@ import java.util.WeakHashMap;
  * @attr ref R.styleable#KeyboardView_keyHintLetterRatio
  * @attr ref R.styleable#KeyboardView_keyUppercaseLetterRatio
  * @attr ref R.styleable#KeyboardView_keyHintLabelRatio
+ * @attr ref R.styleable#KeyboardView_keyLabelHorizontalPadding
+ * @attr ref R.styleable#KeyboardView_keyHintLetterPadding
+ * @attr ref R.styleable#KeyboardView_keyUppercaseLetterPadding
  * @attr ref R.styleable#KeyboardView_keyTextStyle
  * @attr ref R.styleable#KeyboardView_keyPreviewLayout
  * @attr ref R.styleable#KeyboardView_keyPreviewTextRatio
@@ -89,7 +92,6 @@ import java.util.WeakHashMap;
  */
 public class KeyboardView extends View implements PointerTracker.UIProxy {
     private static final String TAG = KeyboardView.class.getSimpleName();
-    private static final boolean DEBUG_SHOW_ALIGN = LatinImeLogger.sVISUALDEBUG;
     private static final boolean DEBUG_KEYBOARD_GRID = false;
 
     private static final boolean ENABLE_CAPSLOCK_BY_LONGPRESS = true;
@@ -102,55 +104,25 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
     private static final int[] LONG_PRESSABLE_STATE_SET = { android.R.attr.state_long_pressable };
 
     // XML attribute
-    private final int mKeyTextColor;
-    private final int mKeyTextInactivatedColor;
-    private final Typeface mKeyTextStyle;
-    private final float mKeyLetterRatio;
-    private final float mKeyLargeLetterRatio;
-    private final float mKeyLabelRatio;
-    private final float mKeyHintLetterRatio;
-    private final float mKeyUppercaseLetterRatio;
-    private final float mKeyHintLabelRatio;
-    private final int mShadowColor;
-    private final float mShadowRadius;
-    private final Drawable mKeyBackground;
     private final float mBackgroundDimAmount;
     private final float mKeyHysteresisDistance;
     private final float mVerticalCorrection;
-    private final Drawable mPreviewBackground;
-    private final Drawable mPreviewLeftBackground;
-    private final Drawable mPreviewRightBackground;
-    private final Drawable mPreviewSpacebarBackground;
-    private final int mPreviewTextColor;
-    private final float mPreviewTextRatio;
-    private final int mPreviewOffset;
-    private final int mPreviewHeight;
     private final int mPopupLayout;
-    private final int mKeyHintLetterColor;
-    private final int mKeyHintLabelColor;
-    private final int mKeyUppercaseLetterInactivatedColor;
-    private final int mKeyUppercaseLetterActivatedColor;
 
     // HORIZONTAL ELLIPSIS "...", character for popup hint.
     private static final String POPUP_HINT_CHAR = "\u2026";
 
     // Main keyboard
     private Keyboard mKeyboard;
-    private int mKeyLetterSize;
-    private int mKeyLargeLetterSize;
-    private int mKeyLabelSize;
-    private int mKeyHintLetterSize;
-    private int mKeyUppercaseLetterSize;
-    private int mKeyHintLabelSize;
+    private final KeyDrawParams mKeyDrawParams;
 
     // Key preview
+    private final KeyPreviewDrawParams mKeyPreviewDrawParams;
     private final TextView mPreviewText;
-    private int mPreviewTextSize;
     private boolean mShowKeyPreviewPopup = true;
     private final int mDelayBeforePreview;
     private int mDelayAfterPreview;
     private ViewGroup mPreviewPlacer;
-    private final int[] mCoordinates = new int[2];
 
     // Mini keyboard
     private PopupWindow mPopupWindow;
@@ -194,16 +166,13 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
     /** The canvas for the above mutable keyboard bitmap */
     private Canvas mCanvas;
     private final Paint mPaint = new Paint();
-    private final Rect mPadding = new Rect();
     // This map caches key label text height in pixel as value and key label text size as map key.
-    private final HashMap<Integer, Integer> mTextHeightCache = new HashMap<Integer, Integer>();
+    private static final HashMap<Integer, Float> sTextHeightCache =
+            new HashMap<Integer, Float>();
     // This map caches key label text width in pixel as value and key label text size as map key.
-    private final HashMap<Integer, Integer> mTextWidthCache = new HashMap<Integer, Integer>();
-    // Distance from horizontal center of the key, proportional to key label text height and width.
-    private static final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.45f;
-    private static final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f;
+    private static final HashMap<Integer, Float> sTextWidthCache =
+            new HashMap<Integer, Float>();
     private static final String KEY_LABEL_REFERENCE_CHAR = "M";
-    private final int mKeyLabelHorizontalPadding;
 
     private static final int MEASURESPEC_UNSPECIFIED = MeasureSpec.makeMeasureSpec(
             0, MeasureSpec.UNSPECIFIED);
@@ -334,6 +303,122 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         }
     }
 
+    private static class KeyDrawParams {
+        // XML attributes
+        public final int mKeyTextColor;
+        public final int mKeyTextInactivatedColor;
+        public final Typeface mKeyTextStyle;
+        public final float mKeyLabelHorizontalPadding;
+        public final float mKeyHintLetterPadding;
+        public final float mKeyUppercaseLetterPadding;
+        public final int mShadowColor;
+        public final float mShadowRadius;
+        public final Drawable mKeyBackground;
+        public final int mKeyHintLetterColor;
+        public final int mKeyHintLabelColor;
+        public final int mKeyUppercaseLetterInactivatedColor;
+        public final int mKeyUppercaseLetterActivatedColor;
+
+        private final float mKeyLetterRatio;
+        private final float mKeyLargeLetterRatio;
+        private final float mKeyLabelRatio;
+        private final float mKeyHintLetterRatio;
+        private final float mKeyUppercaseLetterRatio;
+        private final float mKeyHintLabelRatio;
+
+        public final Rect mPadding = new Rect();
+        public int mKeyLetterSize;
+        public int mKeyLargeLetterSize;
+        public int mKeyLabelSize;
+        public int mKeyHintLetterSize;
+        public int mKeyUppercaseLetterSize;
+        public int mKeyHintLabelSize;
+
+        public KeyDrawParams(TypedArray a) {
+            mKeyBackground = a.getDrawable(R.styleable.KeyboardView_keyBackground);
+            mKeyLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLetterRatio);
+            mKeyLargeLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLargeLetterRatio);
+            mKeyLabelRatio = getRatio(a, R.styleable.KeyboardView_keyLabelRatio);
+            mKeyHintLetterRatio = getRatio(a, R.styleable.KeyboardView_keyHintLetterRatio);
+            mKeyUppercaseLetterRatio = getRatio(a,
+                    R.styleable.KeyboardView_keyUppercaseLetterRatio);
+            mKeyHintLabelRatio = getRatio(a, R.styleable.KeyboardView_keyHintLabelRatio);
+            mKeyLabelHorizontalPadding = a.getDimension(
+                    R.styleable.KeyboardView_keyLabelHorizontalPadding, 0);
+            mKeyHintLetterPadding = a.getDimension(
+                    R.styleable.KeyboardView_keyHintLetterPadding, 0);
+            mKeyUppercaseLetterPadding = a.getDimension(
+                    R.styleable.KeyboardView_keyUppercaseLetterPadding, 0);
+            mKeyTextColor = a.getColor(R.styleable.KeyboardView_keyTextColor, 0xFF000000);
+            mKeyTextInactivatedColor = a.getColor(
+                    R.styleable.KeyboardView_keyTextInactivatedColor, 0xFF000000);
+            mKeyHintLetterColor = a.getColor(R.styleable.KeyboardView_keyHintLetterColor, 0);
+            mKeyHintLabelColor = a.getColor(R.styleable.KeyboardView_keyHintLabelColor, 0);
+            mKeyUppercaseLetterInactivatedColor = a.getColor(
+                    R.styleable.KeyboardView_keyUppercaseLetterInactivatedColor, 0);
+            mKeyUppercaseLetterActivatedColor = a.getColor(
+                    R.styleable.KeyboardView_keyUppercaseLetterActivatedColor, 0);
+            mKeyTextStyle = Typeface.defaultFromStyle(
+                    a.getInt(R.styleable.KeyboardView_keyTextStyle, Typeface.NORMAL));
+            mShadowColor = a.getColor(R.styleable.KeyboardView_shadowColor, 0);
+            mShadowRadius = a.getFloat(R.styleable.KeyboardView_shadowRadius, 0f);
+
+            mKeyBackground.getPadding(mPadding);
+        }
+
+        public void updateKeyHeight(int keyHeight) {
+            mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio);
+            mKeyLargeLetterSize = (int)(keyHeight * mKeyLargeLetterRatio);
+            mKeyLabelSize = (int)(keyHeight * mKeyLabelRatio);
+            mKeyHintLetterSize = (int)(keyHeight * mKeyHintLetterRatio);
+            mKeyUppercaseLetterSize = (int)(keyHeight * mKeyUppercaseLetterRatio);
+            mKeyHintLabelSize = (int)(keyHeight * mKeyHintLabelRatio);
+        }
+    }
+
+    private static class KeyPreviewDrawParams {
+        // XML attributes.
+        public final Drawable mPreviewBackground;
+        public final Drawable mPreviewLeftBackground;
+        public final Drawable mPreviewRightBackground;
+        public final Drawable mPreviewSpacebarBackground;
+        public final int mPreviewTextColor;
+        public final int mPreviewOffset;
+        public final int mPreviewHeight;
+        public final Typeface mKeyTextStyle;
+
+        private final float mPreviewTextRatio;
+        private final float mKeyLetterRatio;
+
+        public int mPreviewTextSize;
+        public int mKeyLetterSize;
+        public final int[] mCoordinates = new int[2];
+
+        public KeyPreviewDrawParams(TypedArray a, KeyDrawParams keyDrawParams) {
+            mPreviewBackground = a.getDrawable(R.styleable.KeyboardView_keyPreviewBackground);
+            mPreviewLeftBackground = a.getDrawable(
+                    R.styleable.KeyboardView_keyPreviewLeftBackground);
+            mPreviewRightBackground = a.getDrawable(
+                    R.styleable.KeyboardView_keyPreviewRightBackground);
+            mPreviewSpacebarBackground = a.getDrawable(
+                    R.styleable.KeyboardView_keyPreviewSpacebarBackground);
+            mPreviewOffset = a.getDimensionPixelOffset(
+                    R.styleable.KeyboardView_keyPreviewOffset, 0);
+            mPreviewHeight = a.getDimensionPixelSize(
+                    R.styleable.KeyboardView_keyPreviewHeight, 80);
+            mPreviewTextRatio = getRatio(a, R.styleable.KeyboardView_keyPreviewTextRatio);
+            mPreviewTextColor = a.getColor(R.styleable.KeyboardView_keyPreviewTextColor, 0);
+
+            mKeyLetterRatio = keyDrawParams.mKeyLetterRatio;
+            mKeyTextStyle = keyDrawParams.mKeyTextStyle;
+        }
+
+        public void updateKeyHeight(int keyHeight) {
+            mPreviewTextSize = (int)(keyHeight * mPreviewTextRatio);
+            mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio);
+        }
+    }
+
     public KeyboardView(Context context, AttributeSet attrs) {
         this(context, attrs, R.attr.keyboardViewStyle);
     }
@@ -344,49 +429,20 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         final TypedArray a = context.obtainStyledAttributes(
                 attrs, R.styleable.KeyboardView, defStyle, R.style.KeyboardView);
 
-        mKeyBackground = a.getDrawable(R.styleable.KeyboardView_keyBackground);
+        mKeyDrawParams = new KeyDrawParams(a);
+        mKeyPreviewDrawParams = new KeyPreviewDrawParams(a, mKeyDrawParams);
         mKeyHysteresisDistance = a.getDimensionPixelOffset(
                 R.styleable.KeyboardView_keyHysteresisDistance, 0);
         mVerticalCorrection = a.getDimensionPixelOffset(
                 R.styleable.KeyboardView_verticalCorrection, 0);
-        mPreviewTextColor = a.getColor(R.styleable.KeyboardView_keyPreviewTextColor, 0);
         final int previewLayout = a.getResourceId(R.styleable.KeyboardView_keyPreviewLayout, 0);
         if (previewLayout != 0) {
             mPreviewText = (TextView) LayoutInflater.from(context).inflate(previewLayout, null);
-            mPreviewText.setTextColor(mPreviewTextColor);
         } else {
             mPreviewText = null;
             mShowKeyPreviewPopup = false;
         }
-        mPreviewBackground = a.getDrawable(R.styleable.KeyboardView_keyPreviewBackground);
-        mPreviewLeftBackground = a.getDrawable(R.styleable.KeyboardView_keyPreviewLeftBackground);
-        mPreviewRightBackground = a.getDrawable(R.styleable.KeyboardView_keyPreviewRightBackground);
-        mPreviewSpacebarBackground = a.getDrawable(
-                R.styleable.KeyboardView_keyPreviewSpacebarBackground);
-        mPreviewOffset = a.getDimensionPixelOffset(R.styleable.KeyboardView_keyPreviewOffset, 0);
-        mPreviewHeight = a.getDimensionPixelSize(R.styleable.KeyboardView_keyPreviewHeight, 80);
-        mKeyLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLetterRatio);
-        mKeyLargeLetterRatio = getRatio(a, R.styleable.KeyboardView_keyLargeLetterRatio);
-        mKeyLabelRatio = getRatio(a, R.styleable.KeyboardView_keyLabelRatio);
-        mKeyHintLetterRatio = getRatio(a, R.styleable.KeyboardView_keyHintLetterRatio);
-        mKeyUppercaseLetterRatio = getRatio(a,
-                R.styleable.KeyboardView_keyUppercaseLetterRatio);
-        mKeyHintLabelRatio = getRatio(a, R.styleable.KeyboardView_keyHintLabelRatio);
-        mPreviewTextRatio = getRatio(a, R.styleable.KeyboardView_keyPreviewTextRatio);
-        mKeyTextColor = a.getColor(R.styleable.KeyboardView_keyTextColor, 0xFF000000);
-        mKeyTextInactivatedColor = a.getColor(
-                R.styleable.KeyboardView_keyTextInactivatedColor, 0xFF000000);
-        mKeyHintLetterColor = a.getColor(R.styleable.KeyboardView_keyHintLetterColor, 0);
-        mKeyHintLabelColor = a.getColor(R.styleable.KeyboardView_keyHintLabelColor, 0);
-        mKeyUppercaseLetterInactivatedColor = a.getColor(
-                R.styleable.KeyboardView_keyUppercaseLetterInactivatedColor, 0);
-        mKeyUppercaseLetterActivatedColor = a.getColor(
-                R.styleable.KeyboardView_keyUppercaseLetterActivatedColor, 0);
-        mKeyTextStyle = Typeface.defaultFromStyle(
-                a.getInt(R.styleable.KeyboardView_keyTextStyle, Typeface.NORMAL));
         mPopupLayout = a.getResourceId(R.styleable.KeyboardView_popupLayout, 0);
-        mShadowColor = a.getColor(R.styleable.KeyboardView_shadowColor, 0);
-        mShadowRadius = a.getFloat(R.styleable.KeyboardView_shadowRadius, 0f);
         // TODO: Use Theme (android.R.styleable.Theme_backgroundDimAmount)
         mBackgroundDimAmount = a.getFloat(R.styleable.KeyboardView_backgroundDimAmount, 0.5f);
         a.recycle();
@@ -395,15 +451,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
 
         mDelayBeforePreview = res.getInteger(R.integer.config_delay_before_preview);
         mDelayAfterPreview = res.getInteger(R.integer.config_delay_after_preview);
-        mKeyLabelHorizontalPadding = (int)res.getDimension(
-                R.dimen.key_label_horizontal_alignment_padding);
 
         mPaint.setAntiAlias(true);
         mPaint.setTextAlign(Align.CENTER);
         mPaint.setAlpha(255);
 
-        mKeyBackground.getPadding(mPadding);
-
         mSwipeThreshold = (int) (500 * res.getDisplayMetrics().density);
         // TODO: Refer to frameworks/base/core/res/res/values/config.xml
         mDisambiguateSwipe = res.getBoolean(R.bool.config_swipeDisambiguation);
@@ -539,14 +591,8 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         mKeyDetector.setProximityThreshold(keyboard.getMostCommonKeyWidth());
         mPopupPanelCache.clear();
         final int keyHeight = keyboard.getRowHeight() - keyboard.getVerticalGap();
-        mKeyLetterSize = (int)(keyHeight * mKeyLetterRatio);
-        mKeyLargeLetterSize = (int)(keyHeight * mKeyLargeLetterRatio);
-        mKeyLabelSize = (int)(keyHeight * mKeyLabelRatio);
-        mKeyHintLetterSize = (int)(keyHeight * mKeyHintLetterRatio);
-        mKeyUppercaseLetterSize = (int)(
-                keyHeight * mKeyUppercaseLetterRatio);
-        mKeyHintLabelSize = (int)(keyHeight * mKeyHintLabelRatio);
-        mPreviewTextSize = (int)(keyHeight * mPreviewTextRatio);
+        mKeyDrawParams.updateKeyHeight(keyHeight);
+        mKeyPreviewDrawParams.updateKeyHeight(keyHeight);
     }
 
     /**
@@ -605,14 +651,6 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         return mKeyDetector.isProximityCorrectionEnabled();
     }
 
-    protected CharSequence adjustCase(CharSequence label) {
-        if (mKeyboard.isShiftedOrShiftLocked() && label != null && label.length() < 3
-                && Character.isLowerCase(label.charAt(0))) {
-            return label.toString().toUpperCase(mKeyboard.mId.mLocale);
-        }
-        return label;
-    }
-
     @Override
     public void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
         // Round up a little
@@ -663,13 +701,24 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
 
         if (mKeyboard == null) return;
 
+        final boolean isManualTemporaryUpperCase = mKeyboard.isManualTemporaryUpperCase();
+        final KeyDrawParams params = mKeyDrawParams;
         if (mInvalidatedKey != null && mInvalidatedKeyRect.contains(mDirtyRect)) {
             // Draw a single key.
-            onBufferDrawKey(canvas, mInvalidatedKey);
+            final int keyDrawX = mInvalidatedKey.mX + mInvalidatedKey.mVisualInsetsLeft
+                    + getPaddingLeft();
+            final int keyDrawY = mInvalidatedKey.mY + getPaddingTop();
+            canvas.translate(keyDrawX, keyDrawY);
+            onBufferDrawKey(mInvalidatedKey, canvas, mPaint, params, isManualTemporaryUpperCase);
+            canvas.translate(-keyDrawX, -keyDrawY);
         } else {
             // Draw all keys.
             for (final Key key : mKeyboard.getKeys()) {
-                onBufferDrawKey(canvas, key);
+                final int keyDrawX = key.mX + key.mVisualInsetsLeft + getPaddingLeft();
+                final int keyDrawY = key.mY + getPaddingTop();
+                canvas.translate(keyDrawX, keyDrawY);
+                onBufferDrawKey(key, canvas, mPaint, params, isManualTemporaryUpperCase);
+                canvas.translate(-keyDrawX, -keyDrawY);
             }
         }
 
@@ -702,58 +751,61 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         mDirtyRect.setEmpty();
     }
 
-    private void onBufferDrawKey(final Canvas canvas, final Key key) {
-        final Paint paint = mPaint;
-        final Drawable keyBackground = mKeyBackground;
-        final Rect padding = mPadding;
-        final int kbdPaddingLeft = getPaddingLeft();
-        final int kbdPaddingTop = getPaddingTop();
-        final int keyDrawX = key.mX + key.mVisualInsetsLeft;
-        final int keyDrawWidth = key.mWidth - key.mVisualInsetsLeft - key.mVisualInsetsRight;
-        final int centerX = (keyDrawWidth + padding.left - padding.right) / 2;
-        final float centerY = (key.mHeight + padding.top - padding.bottom) / 2;
-        final int rowHeight = padding.top + key.mHeight;
-        final boolean isManualTemporaryUpperCase = mKeyboard.isManualTemporaryUpperCase();
-
-        canvas.translate(keyDrawX + kbdPaddingLeft, key.mY + kbdPaddingTop);
-
+    private static void onBufferDrawKey(final Key key, final Canvas canvas, Paint paint,
+            KeyDrawParams params, boolean isManualTemporaryUpperCase) {
+        final boolean debugShowAlign = LatinImeLogger.sVISUALDEBUG;
         // Draw key background.
+        final int bgWidth = key.mWidth - key.mVisualInsetsLeft - key.mVisualInsetsRight
+                + params.mPadding.left + params.mPadding.right;
+        final int bgHeight = key.mHeight + params.mPadding.top + params.mPadding.bottom;
+        final int bgX = -params.mPadding.left;
+        final int bgY = -params.mPadding.top;
         final int[] drawableState = key.getCurrentDrawableState();
-        keyBackground.setState(drawableState);
-        final Rect bounds = keyBackground.getBounds();
-        if (keyDrawWidth != bounds.right || key.mHeight != bounds.bottom) {
-            keyBackground.setBounds(0, 0, keyDrawWidth, key.mHeight);
+        final Drawable background = params.mKeyBackground;
+        background.setState(drawableState);
+        final Rect bounds = background.getBounds();
+        if (bgWidth != bounds.right || bgHeight != bounds.bottom) {
+            background.setBounds(0, 0, bgWidth, bgHeight);
+        }
+        canvas.translate(bgX, bgY);
+        background.draw(canvas);
+        if (debugShowAlign) {
+            drawRectangle(canvas, 0, 0, bgWidth, bgHeight, 0x80c00000, new Paint());
+        }
+        canvas.translate(-bgX, -bgY);
+
+        // Draw key top visuals.
+        final int keyWidth = key.mWidth;
+        final int keyHeight = key.mHeight;
+        final float centerX = keyWidth * 0.5f;
+        final float centerY = keyHeight * 0.5f;
+
+        if (debugShowAlign) {
+            drawRectangle(canvas, 0, 0, keyWidth, keyHeight, 0x800000c0, new Paint());
         }
-        keyBackground.draw(canvas);
 
         // Draw key label.
-        int positionX = centerX;
+        float positionX = centerX;
         if (key.mLabel != null) {
             // Switch the character to uppercase if shift is pressed
-            final CharSequence label = key.mLabel == null ? null : adjustCase(key.mLabel);
+            final CharSequence label = key.getCaseAdjustedLabel();
             // For characters, use large font. For labels like "Done", use smaller font.
-            paint.setTypeface(key.selectTypeface(mKeyTextStyle));
-            final int labelSize = key.selectTextSize(mKeyLetterSize, mKeyLargeLetterSize,
-                    mKeyLabelSize, mKeyHintLabelSize);
+            paint.setTypeface(key.selectTypeface(params.mKeyTextStyle));
+            final int labelSize = key.selectTextSize(params.mKeyLetterSize,
+                    params.mKeyLargeLetterSize, params.mKeyLabelSize, params.mKeyHintLabelSize);
             paint.setTextSize(labelSize);
-            final int labelCharHeight = getLabelCharHeight(paint);
-            final int labelCharWidth = getLabelCharWidth(paint);
+            final float labelCharHeight = getCharHeight(paint);
+            final float labelCharWidth = getCharWidth(paint);
 
             // Vertical label text alignment.
-            final float baseline;
-            // TODO: Generalize the following calculations.
-            if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_BOTTOM) != 0) {
-                baseline = key.mHeight - labelCharHeight * KEY_LABEL_VERTICAL_PADDING_FACTOR;
-            } else { // Align center
-                baseline = centerY + labelCharHeight * KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER;
-            }
+            final float baseline = centerY + labelCharHeight / 2;
 
             // Horizontal label text alignment
             if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) {
-                positionX = padding.left + mKeyLabelHorizontalPadding;
+                positionX = (int)params.mKeyLabelHorizontalPadding;
                 paint.setTextAlign(Align.LEFT);
             } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) {
-                positionX = keyDrawWidth - mKeyLabelHorizontalPadding - padding.right;
+                positionX = keyWidth - (int)params.mKeyLabelHorizontalPadding;
                 paint.setTextAlign(Align.RIGHT);
             } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT_OF_CENTER) != 0) {
                 // TODO: Parameterise this?
@@ -763,20 +815,15 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
                 positionX = centerX;
                 paint.setTextAlign(Align.CENTER);
             }
-            if (DEBUG_SHOW_ALIGN) {
-                final Paint line = new Paint();
-                drawHorizontalLine(canvas, (int)baseline, keyDrawWidth, 0xc0008000, line);
-                drawVerticalLine(canvas, positionX, rowHeight, 0xc0800080, line);
-            }
 
             if (key.hasUppercaseLetter() && isManualTemporaryUpperCase) {
-                paint.setColor(mKeyTextInactivatedColor);
+                paint.setColor(params.mKeyTextInactivatedColor);
             } else {
-                paint.setColor(mKeyTextColor);
+                paint.setColor(params.mKeyTextColor);
             }
             if (key.isEnabled()) {
                 // Set a drop shadow for the text
-                paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor);
+                paint.setShadowLayer(params.mShadowRadius, 0, 0, params.mShadowColor);
             } else {
                 // Make label invisible
                 paint.setColor(Color.TRANSPARENT);
@@ -785,6 +832,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
             // Turn off drop shadow
             paint.setShadowLayer(0, 0, 0, 0);
 
+            if (debugShowAlign) {
+                final Paint line = new Paint();
+                drawHorizontalLine(canvas, baseline, keyWidth, 0xc0008000, line);
+                drawVerticalLine(canvas, positionX, keyHeight, 0xc0800080, line);
+            }
         }
 
         // Draw hint label.
@@ -792,31 +844,44 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
             final CharSequence hint = key.mHintLabel;
             final int hintColor;
             final int hintSize;
-            if (key.hasUppercaseLetter()) {
-                hintColor = isManualTemporaryUpperCase ? mKeyUppercaseLetterActivatedColor
-                        : mKeyUppercaseLetterInactivatedColor;
-                hintSize = mKeyUppercaseLetterSize;
-            } else if (key.hasHintLabel()) {
-                hintColor = mKeyHintLabelColor;
-                hintSize = mKeyHintLabelSize;
+            if (key.hasHintLabel()) {
+                hintColor = params.mKeyHintLabelColor;
+                hintSize = params.mKeyHintLabelSize;
                 paint.setTypeface(Typeface.DEFAULT);
-            } else {
-                hintColor = mKeyHintLetterColor;
-                hintSize = mKeyHintLetterSize;
+            } else if (key.hasUppercaseLetter()) {
+                hintColor = isManualTemporaryUpperCase
+                        ? params.mKeyUppercaseLetterActivatedColor
+                        : params.mKeyUppercaseLetterInactivatedColor;
+                hintSize = params.mKeyUppercaseLetterSize;
+            } else { // key.hasHintLetter()
+                hintColor = params.mKeyHintLetterColor;
+                hintSize = params.mKeyHintLetterSize;
             }
             paint.setColor(hintColor);
             paint.setTextSize(hintSize);
-            // Note: padding.right for drawX?
+            final float hintCharWidth = getCharWidth(paint);
             final float hintX, hintY;
             if (key.hasHintLabel()) {
                 // TODO: Generalize the following calculations.
-                hintX = positionX + getLabelCharWidth(paint) * 2;
-                hintY = centerY + getLabelCharHeight(paint) / 2;
-            } else {
-                hintX = keyDrawWidth - getLabelCharWidth(paint);
-                hintY = -paint.ascent() + padding.top;
+                hintX = positionX + hintCharWidth * 2;
+                hintY = centerY + getCharHeight(paint) / 2;
+                paint.setTextAlign(Align.LEFT);
+            } else if (key.hasUppercaseLetter()) {
+                hintX = keyWidth - params.mKeyUppercaseLetterPadding - hintCharWidth / 2;
+                hintY = -paint.ascent() + params.mKeyUppercaseLetterPadding;
+                paint.setTextAlign(Align.CENTER);
+            } else { // key.hasHintLetter()
+                hintX = keyWidth - params.mKeyHintLetterPadding - hintCharWidth / 2;
+                hintY = -paint.ascent() + params.mKeyHintLetterPadding;
+                paint.setTextAlign(Align.CENTER);
             }
             canvas.drawText(hint, 0, hint.length(), hintX, hintY, paint);
+
+            if (debugShowAlign) {
+                final Paint line = new Paint();
+                drawHorizontalLine(canvas, (int)hintY, keyWidth, 0xc0808000, line);
+                drawVerticalLine(canvas, (int)hintX, keyHeight, 0xc0808000, line);
+            }
         }
 
         // Draw key icon.
@@ -825,63 +890,67 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
             final int iconWidth = icon.getIntrinsicWidth();
             final int iconHeight = icon.getIntrinsicHeight();
             final int iconX, alignX;
-            final int iconY = (key.mHeight + padding.top - padding.bottom - iconHeight) / 2;
+            final int iconY = (keyHeight - iconHeight) / 2;
             if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_LEFT) != 0) {
-                iconX = padding.left + mKeyLabelHorizontalPadding;
+                iconX = (int)params.mKeyLabelHorizontalPadding;
                 alignX = iconX;
             } else if ((key.mLabelOption & Key.LABEL_OPTION_ALIGN_RIGHT) != 0) {
-                iconX = keyDrawWidth - padding.right - mKeyLabelHorizontalPadding - iconWidth;
+                iconX = keyWidth - (int)params.mKeyLabelHorizontalPadding - iconWidth;
                 alignX = iconX + iconWidth;
             } else { // Align center
-                iconX = (keyDrawWidth + padding.left - padding.right - iconWidth) / 2;
+                iconX = (keyWidth - iconWidth) / 2;
                 alignX = iconX + iconWidth / 2;
             }
             drawIcon(canvas, icon, iconX, iconY, iconWidth, iconHeight);
-            if (DEBUG_SHOW_ALIGN) {
+
+            if (debugShowAlign) {
                 final Paint line = new Paint();
-                drawVerticalLine(canvas, alignX, rowHeight, 0xc0800080, line);
+                drawVerticalLine(canvas, alignX, keyHeight, 0xc0800080, line);
                 drawRectangle(canvas, iconX, iconY, iconWidth, iconHeight, 0x80c00000, line);
             }
         }
 
         // Draw popup hint "..." at the bottom right corner of the key.
         if (key.hasPopupHint()) {
-            paint.setTextSize(mKeyHintLetterSize);
-            paint.setColor(mKeyHintLabelColor);
-            final int hintX = keyDrawWidth - getLabelCharWidth(paint);
-            // Using y-coordinate "key.mHeight - paint.descent()" draws "..." just on the bottom
-            // edge of the key. So we use slightly higher position by multiply descent length by 2.
-            final int hintY = key.mHeight - (int)paint.descent() * 2;
+            paint.setTextSize(params.mKeyHintLetterSize);
+            paint.setColor(params.mKeyHintLabelColor);
+            paint.setTextAlign(Align.CENTER);
+            final float hintX = keyWidth - params.mKeyHintLetterPadding - getCharWidth(paint) / 2;
+            final float hintY = keyHeight - params.mKeyHintLetterPadding;
             canvas.drawText(POPUP_HINT_CHAR, hintX, hintY, paint);
-        }
 
-        canvas.translate(-keyDrawX - kbdPaddingLeft, -key.mY - kbdPaddingTop);
+            if (debugShowAlign) {
+                final Paint line = new Paint();
+                drawHorizontalLine(canvas, (int)hintY, keyWidth, 0xc0808000, line);
+                drawVerticalLine(canvas, (int)hintX, keyHeight, 0xc0808000, line);
+            }
+        }
     }
 
     // This method is currently being used only by MiniKeyboardBuilder
     public int getDefaultLabelSizeAndSetPaint(Paint paint) {
         // For characters, use large font. For labels like "Done", use small font.
-        final int labelSize = mKeyLabelSize;
+        final int labelSize = mKeyDrawParams.mKeyLabelSize;
         paint.setTextSize(labelSize);
-        paint.setTypeface(mKeyTextStyle);
+        paint.setTypeface(mKeyDrawParams.mKeyTextStyle);
         return labelSize;
     }
 
-    private final Rect mTextBounds = new Rect();
+    private static final Rect sTextBounds = new Rect();
 
-    private int getLabelCharHeight(Paint paint) {
+    private static float getCharHeight(Paint paint) {
         final int labelSize = (int)paint.getTextSize();
-        final Integer cachedValue = mTextHeightCache.get(labelSize);
+        final Float cachedValue = sTextHeightCache.get(labelSize);
         if (cachedValue != null)
             return cachedValue;
 
-        paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, mTextBounds);
-        final int height = mTextBounds.height();
-        mTextHeightCache.put(labelSize, height);
+        paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, sTextBounds);
+        final float height = sTextBounds.height();
+        sTextHeightCache.put(labelSize, height);
         return height;
     }
 
-    private int getLabelCharWidth(Paint paint) {
+    private static float getCharWidth(Paint paint) {
         final int labelSize = (int)paint.getTextSize();
         final Typeface face = paint.getTypeface();
         final Integer key;
@@ -895,13 +964,13 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
             key = labelSize;
         }
 
-        final Integer cached = mTextWidthCache.get(key);
+        final Float cached = sTextWidthCache.get(key);
         if (cached != null)
             return cached;
 
-        paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, mTextBounds);
-        final int width = mTextBounds.width();
-        mTextWidthCache.put(key, width);
+        paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, sTextBounds);
+        final float width = sTextBounds.width();
+        sTextWidthCache.put(key, width);
         return width;
     }
 
@@ -913,21 +982,21 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
         canvas.translate(-x, -y);
     }
 
-    private static void drawHorizontalLine(Canvas canvas, int y, int w, int color, Paint paint) {
+    private static void drawHorizontalLine(Canvas canvas, float y, float w, int color, Paint paint) {
         paint.setStyle(Paint.Style.STROKE);
         paint.setStrokeWidth(1.0f);
         paint.setColor(color);
         canvas.drawLine(0, y, w, y, paint);
     }
 
-    private static void drawVerticalLine(Canvas canvas, int x, int h, int color, Paint paint) {
+    private static void drawVerticalLine(Canvas canvas, float x, float h, int color, Paint paint) {
         paint.setStyle(Paint.Style.STROKE);
         paint.setStrokeWidth(1.0f);
         paint.setColor(color);
         canvas.drawLine(x, 0, x, h, paint);
     }
 
-    private static void drawRectangle(Canvas canvas, int x, int y, int w, int h, int color,
+    private static void drawRectangle(Canvas canvas, float x, float y, float w, float h, int color,
             Paint paint) {
         paint.setStyle(Paint.Style.STROKE);
         paint.setStrokeWidth(1.0f);
@@ -997,7 +1066,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
             return;
 
         mHandler.cancelAllDismissKeyPreviews();
-
+        final KeyPreviewDrawParams params = mKeyPreviewDrawParams;
         final int keyDrawX = key.mX + key.mVisualInsetsLeft;
         final int keyDrawWidth = key.mWidth - key.mVisualInsetsLeft - key.mVisualInsetsRight;
         // What we show as preview should match what we show on key top in onBufferDraw(). 
@@ -1005,13 +1074,13 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
             // TODO Should take care of temporaryShiftLabel here.
             previewText.setCompoundDrawables(null, null, null, null);
             if (key.mLabel.length() > 1) {
-                previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mKeyLetterSize);
+                previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mKeyLetterSize);
                 previewText.setTypeface(Typeface.DEFAULT_BOLD);
             } else {
-                previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, mPreviewTextSize);
-                previewText.setTypeface(mKeyTextStyle);
+                previewText.setTextSize(TypedValue.COMPLEX_UNIT_PX, params.mPreviewTextSize);
+                previewText.setTypeface(params.mKeyTextStyle);
             }
-            previewText.setText(adjustCase(tracker.getPreviewText(key)));
+            previewText.setText(key.getCaseAdjustedLabel());
         } else {
             final Drawable previewIcon = key.getPreviewIcon();
             previewText.setCompoundDrawables(null, null, null,
@@ -1019,29 +1088,31 @@ public class KeyboardView extends View implements PointerTracker.UIProxy {
             previewText.setText(null);
         }
         if (key.mCode == Keyboard.CODE_SPACE) {
-            previewText.setBackgroundDrawable(mPreviewSpacebarBackground);
+            previewText.setBackgroundDrawable(params.mPreviewSpacebarBackground);
         } else {
-            previewText.setBackgroundDrawable(mPreviewBackground);
+            previewText.setBackgroundDrawable(params.mPreviewBackground);
         }
 
         previewText.measure(MEASURESPEC_UNSPECIFIED, MEASURESPEC_UNSPECIFIED);
         final int previewWidth = Math.max(previewText.getMeasuredWidth(), keyDrawWidth
                 + previewText.getPaddingLeft() + previewText.getPaddingRight());
-        final int previewHeight = mPreviewHeight;
-        getLocationInWindow(mCoordinates);
-        int previewX = keyDrawX - (previewWidth - keyDrawWidth) / 2 + mCoordinates[0];
-        final int previewY = key.mY - previewHeight + mCoordinates[1] + mPreviewOffset;
-        if (previewX < 0 && mPreviewLeftBackground != null) {
-            previewText.setBackgroundDrawable(mPreviewLeftBackground);
+        final int previewHeight = params.mPreviewHeight;
+        getLocationInWindow(params.mCoordinates);
+        int previewX = keyDrawX - (previewWidth - keyDrawWidth) / 2 + params.mCoordinates[0];
+        final int previewY = key.mY - previewHeight
+                + params.mCoordinates[1] + params.mPreviewOffset;
+        if (previewX < 0 && params.mPreviewLeftBackground != null) {
+            previewText.setBackgroundDrawable(params.mPreviewLeftBackground);
             previewX = 0;
-        } else if (previewX + previewWidth > getWidth() && mPreviewRightBackground != null) {
-            previewText.setBackgroundDrawable(mPreviewRightBackground);
+        } else if (previewX + previewWidth > getWidth() && params.mPreviewRightBackground != null) {
+            previewText.setBackgroundDrawable(params.mPreviewRightBackground);
             previewX = getWidth() - previewWidth;
         }
 
         // Set the preview background state
         previewText.getBackground().setState(
                 key.mPopupCharacters != null ? LONG_PRESSABLE_STATE_SET : EMPTY_STATE_SET);
+        previewText.setTextColor(params.mPreviewTextColor);
         FrameLayoutCompatUtils.placeViewAt(
                 previewText, previewX, previewY, previewWidth, previewHeight);
         previewText.setVisibility(VISIBLE);
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
index 9d58f69ff5..d925b8c333 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboard.java
@@ -29,6 +29,7 @@ import android.graphics.PorterDuff;
 import android.graphics.Rect;
 import android.graphics.drawable.BitmapDrawable;
 import android.graphics.drawable.Drawable;
+import android.text.TextUtils;
 
 import com.android.inputmethod.keyboard.internal.SlidingLocaleDrawable;
 import com.android.inputmethod.latin.R;
@@ -182,6 +183,15 @@ public class LatinKeyboard extends Keyboard {
         return mSpaceKey;
     }
 
+    @Override
+    public CharSequence adjustLabelCase(CharSequence label) {
+        if (isAlphaKeyboard() && isShiftedOrShiftLocked() && !TextUtils.isEmpty(label)
+                && label.length() < 3 && Character.isLowerCase(label.charAt(0))) {
+            return label.toString().toUpperCase(mId.mLocale);
+        }
+        return label;
+    }
+
     private void updateSpacebarForLocale(boolean isAutoCorrection) {
         if (mSpaceKey == null)
             return;
diff --git a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
index 901df6ab72..75d022b520 100644
--- a/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/LatinKeyboardView.java
@@ -18,7 +18,6 @@ package com.android.inputmethod.keyboard;
 
 import android.content.Context;
 import android.graphics.Canvas;
-import android.text.TextUtils;
 import android.util.AttributeSet;
 import android.util.Log;
 import android.view.MotionEvent;
@@ -113,18 +112,6 @@ public class LatinKeyboardView extends KeyboardView {
         return true;
     }
 
-    @Override
-    protected CharSequence adjustCase(CharSequence label) {
-        LatinKeyboard keyboard = getLatinKeyboard();
-        if (keyboard.isAlphaKeyboard()
-                && keyboard.isShiftedOrShiftLocked()
-                && !TextUtils.isEmpty(label) && label.length() < 3
-                && Character.isLowerCase(label.charAt(0))) {
-            return label.toString().toUpperCase(keyboard.mId.mLocale);
-        }
-        return label;
-    }
-
     /**
      * This function checks to see if we need to handle any sudden jumps in the pointer location
      * that could be due to a multi-touch being treated as a move by the firmware or hardware.
diff --git a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
index 2d6766f2d2..44f9f195cf 100644
--- a/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
+++ b/java/src/com/android/inputmethod/keyboard/MiniKeyboard.java
@@ -18,13 +18,22 @@ package com.android.inputmethod.keyboard;
 
 import android.content.Context;
 
-import java.util.List;
-
 public class MiniKeyboard extends Keyboard {
     private int mDefaultKeyCoordX;
 
     public MiniKeyboard(Context context, int xmlLayoutResId, Keyboard parentKeyboard) {
-        super(context, xmlLayoutResId, null, parentKeyboard.getMinWidth());
+        super(context, xmlLayoutResId, parentKeyboard.mId.cloneAsMiniKeyboard(),
+                parentKeyboard.getMinWidth());
+        // HACK: Current mini keyboard design totally relies on the 9-patch padding about horizontal
+        // and vertical key spacing. To keep the visual of mini keyboard as is, these hacks are
+        // needed to keep having the same horizontal and vertical key spacing.
+        setHorizontalGap(0);
+        setVerticalGap(parentKeyboard.getVerticalGap() / 2);
+
+        // TODO: When we have correctly padded key background 9-patch drawables for mini keyboard,
+        // revert the above hacks and uncomment the following lines.
+        //setHorizontalGap(parentKeyboard.getHorizontalGap());
+        //setVerticalGap(parentKeyboard.getVerticalGap());
     }
 
     public void setDefaultCoordX(int pos) {
@@ -34,19 +43,4 @@ public class MiniKeyboard extends Keyboard {
     public int getDefaultCoordX() {
         return mDefaultKeyCoordX;
     }
-
-    public boolean isOneRowKeyboard() {
-        final List<Key> keys = getKeys();
-        if (keys.size() == 0) return false;
-        final int edgeFlags = keys.get(0).mEdgeFlags;
-        // HACK: The first key of mini keyboard which was inflated from xml and has multiple rows,
-        // does not have both top and bottom edge flags on at the same time.  On the other hand,
-        // the first key of mini keyboard that was created with popupCharacters must have both top
-        // and bottom edge flags on.
-        // When you want to use one row mini-keyboard from xml file, make sure that the row has
-        // both top and bottom edge flags set.
-        return (edgeFlags & Keyboard.EDGE_TOP) != 0
-                && (edgeFlags & Keyboard.EDGE_BOTTOM) != 0;
-
-    }
 }
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 8b03360bf3..6228cc8b2c 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -686,10 +686,6 @@ public class PointerTracker {
         }
     }
 
-    public CharSequence getPreviewText(Key key) {
-        return key.mLabel;
-    }
-
     private long mPreviousEventTime;
 
     private void printTouchEvent(String title, int x, int y, long eventTime) {
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
index a6708171f9..3e433361a5 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardParser.java
@@ -195,6 +195,7 @@ public class KeyboardParser {
 
     private void parseKeyboardAttributes(XmlResourceParser parser) {
         final Keyboard keyboard = mKeyboard;
+        final int displayWidth = keyboard.getDisplayWidth();
         final TypedArray keyboardAttr = mContext.obtainStyledAttributes(
                 Xml.asAttributeSet(parser), R.styleable.Keyboard, R.attr.keyboardStyle,
                 R.style.Keyboard);
@@ -211,7 +212,6 @@ public class KeyboardParser {
             if (minKeyboardHeight < 0) {
                 // Specified fraction was negative, so it should be calculated against display
                 // width.
-                final int displayWidth = keyboard.getDisplayWidth();
                 minKeyboardHeight = -getDimensionOrFraction(keyboardAttr,
                         R.styleable.Keyboard_minKeyboardHeight, displayWidth, displayWidth / 2);
             }
@@ -219,20 +219,19 @@ public class KeyboardParser {
             // minKeyboardHeight.
             final int height = Math.max(
                     Math.min(keyboardHeight, maxKeyboardHeight), minKeyboardHeight);
-            final int width = keyboard.getDisplayWidth();
+
 
             keyboard.setKeyboardHeight(height);
             keyboard.setKeyWidth(getDimensionOrFraction(keyboardAttr,
-                    R.styleable.Keyboard_keyWidth, width, width / 10));
+                    R.styleable.Keyboard_keyWidth, displayWidth, displayWidth / 10));
             keyboard.setRowHeight(getDimensionOrFraction(keyboardAttr,
                     R.styleable.Keyboard_rowHeight, height, 50));
             keyboard.setHorizontalGap(getDimensionOrFraction(keyboardAttr,
-                    R.styleable.Keyboard_horizontalGap, width, 0));
+                    R.styleable.Keyboard_horizontalGap, displayWidth, 0));
             keyboard.setVerticalGap(getDimensionOrFraction(keyboardAttr,
                     R.styleable.Keyboard_verticalGap, height, 0));
             keyboard.setPopupKeyboardResId(keyboardAttr.getResourceId(
                     R.styleable.Keyboard_popupKeyboardTemplate, 0));
-
             keyboard.setMaxPopupKeyboardColumn(keyAttr.getInt(
                     R.styleable.Keyboard_Key_maxPopupKeyboardColumn, 5));
 
@@ -352,18 +351,18 @@ public class KeyboardParser {
                     R.styleable.Keyboard);
             if (keyboardAttr.hasValue(R.styleable.Keyboard_horizontalGap))
                 throw new IllegalAttribute(parser, "horizontalGap");
-            final int defaultWidth = (row != null) ? row.mDefaultWidth : 0;
+            final int keyboardWidth = mKeyboard.getDisplayWidth();
             final int keyWidth = getDimensionOrFraction(keyboardAttr, R.styleable.Keyboard_keyWidth,
-                    mKeyboard.getDisplayWidth(), defaultWidth);
+                    keyboardWidth, row.mDefaultWidth);
             keyboardAttr.recycle();
 
             final TypedArray keyAttr = mResources.obtainAttributes(Xml.asAttributeSet(parser),
                     R.styleable.Keyboard_Key);
             int keyXPos = KeyboardParser.getDimensionOrFraction(keyAttr,
-                    R.styleable.Keyboard_Key_keyXPos, mKeyboard.getDisplayWidth(), mCurrentX);
+                    R.styleable.Keyboard_Key_keyXPos, keyboardWidth, mCurrentX);
             if (keyXPos < 0) {
                 // If keyXPos is negative, the actual x-coordinate will be display_width + keyXPos.
-                keyXPos += mKeyboard.getDisplayWidth();
+                keyXPos += keyboardWidth;
             }
 
             checkEndTag(TAG_SPACER, parser);
-- 
GitLab