From 7f0befe1f0e346ec6468f229f337eda32e19f6d8 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Tue, 23 Nov 2010 23:59:56 -0800 Subject: [PATCH] Update tablet keyboard layout to the latest design This change introduces shiftedIcon attribute for Key which specifies icon to draw the shift key while the key is in shifted state. This change also intriduces new configurable dimension value key_label_horizontal_alignment_padding which represents horizontal padding for left or right alignment of key label. Bug: 3216592 Bug: 3201839 Change-Id: I3aa7392227ce573c404517678e6340a8d1fcb328 --- .../btn_keyboard_key_dark_normal_holo.9.png | Bin 1327 -> 1297 bytes ...tn_keyboard_key_dark_normal_off_holo.9.png | Bin 1389 -> 1507 bytes ...btn_keyboard_key_dark_normal_on_holo.9.png | Bin 1408 -> 1827 bytes .../btn_keyboard_key_dark_pressed_holo.9.png | Bin 1321 -> 1435 bytes ...n_keyboard_key_dark_pressed_off_holo.9.png | Bin 1388 -> 1604 bytes ...tn_keyboard_key_dark_pressed_on_holo.9.png | Bin 1399 -> 1924 bytes .../btn_keyboard_key_light_normal_holo.9.png | Bin 1321 -> 1393 bytes .../btn_keyboard_key_light_pressed_holo.9.png | Bin 1324 -> 1493 bytes ...btn_keyboard_key_popup_selected_holo.9.png | Bin 0 -> 1018 bytes java/res/drawable-hdpi/key_hint_at_holo.9.png | Bin 1237 -> 1530 bytes .../key_hint_at_large_holo.9.png | Bin 362 -> 1639 bytes .../key_hint_exclamation_holo.9.png | Bin 1278 -> 1229 bytes .../key_hint_exclamation_large_holo.9.png | Bin 1841 -> 1308 bytes .../key_hint_question_holo.9.png | Bin 1392 -> 1330 bytes .../key_hint_question_large_holo.9.png | Bin 671 -> 1440 bytes .../drawable-hdpi/key_hint_quote_holo.9.png | Bin 1257 -> 1180 bytes .../key_hint_quote_large_holo.9.png | Bin 1714 -> 1216 bytes .../key_hint_underline_holo.9.png | Bin 1158 -> 1132 bytes .../keyboard_background_holo.9.png | Bin 0 -> 1107 bytes ...eyboard_key_feedback_background_holo.9.png | Bin 0 -> 1004 bytes ...keyboard_popup_panel_background_holo.9.png | Bin 0 -> 4311 bytes .../sym_keyboard_shift_locked_holo.png | Bin 0 -> 1480 bytes .../btn_keyboard_key_dark_normal_holo.9.png | Bin 1327 -> 1297 bytes ...tn_keyboard_key_dark_normal_off_holo.9.png | Bin 1389 -> 1507 bytes ...btn_keyboard_key_dark_normal_on_holo.9.png | Bin 1408 -> 1827 bytes .../btn_keyboard_key_dark_pressed_holo.9.png | Bin 1321 -> 1435 bytes ...n_keyboard_key_dark_pressed_off_holo.9.png | Bin 1388 -> 1604 bytes ...tn_keyboard_key_dark_pressed_on_holo.9.png | Bin 1399 -> 1924 bytes .../btn_keyboard_key_light_normal_holo.9.png | Bin 1321 -> 1393 bytes .../btn_keyboard_key_light_pressed_holo.9.png | Bin 1324 -> 1493 bytes ...btn_keyboard_key_popup_selected_holo.9.png | Bin 0 -> 1018 bytes java/res/drawable-mdpi/hint_popup_holo.9.png | Bin 0 -> 1266 bytes java/res/drawable-mdpi/key_hint_at_holo.9.png | Bin 1237 -> 1516 bytes .../key_hint_at_large_holo.9.png | Bin 362 -> 1639 bytes .../key_hint_exclamation_holo.9.png | Bin 1278 -> 1229 bytes .../key_hint_exclamation_large_holo.9.png | Bin 1841 -> 1308 bytes .../key_hint_question_holo.9.png | Bin 1392 -> 1330 bytes .../key_hint_question_large_holo.9.png | Bin 671 -> 1440 bytes .../drawable-mdpi/key_hint_quote_holo.9.png | Bin 1257 -> 1180 bytes .../key_hint_quote_large_holo.9.png | Bin 1714 -> 1216 bytes .../key_hint_underline_holo.9.png | Bin 1158 -> 1132 bytes .../key_hint_underline_large_holo.9.png | Bin 362 -> 1160 bytes .../keyboard_background_holo.9.png | Bin 0 -> 1084 bytes ...eyboard_key_feedback_background_holo.9.png | Bin 0 -> 1004 bytes ...rd_key_feedback_more_background_holo.9.png | Bin 0 -> 4445 bytes ...keyboard_popup_panel_background_holo.9.png | Bin 0 -> 4311 bytes .../sym_keyboard_delete_holo.png | Bin 0 -> 1464 bytes .../drawable-mdpi/sym_keyboard_num0_holo.png | Bin 0 -> 1759 bytes .../drawable-mdpi/sym_keyboard_num1_holo.png | Bin 0 -> 1268 bytes .../drawable-mdpi/sym_keyboard_num2_holo.png | Bin 0 -> 2403 bytes .../drawable-mdpi/sym_keyboard_num3_holo.png | Bin 0 -> 2143 bytes .../drawable-mdpi/sym_keyboard_num4_holo.png | Bin 0 -> 2063 bytes .../drawable-mdpi/sym_keyboard_num5_holo.png | Bin 0 -> 2025 bytes .../drawable-mdpi/sym_keyboard_num6_holo.png | Bin 0 -> 2502 bytes .../drawable-mdpi/sym_keyboard_num7_holo.png | Bin 0 -> 2527 bytes .../drawable-mdpi/sym_keyboard_num8_holo.png | Bin 0 -> 2226 bytes .../drawable-mdpi/sym_keyboard_num9_holo.png | Bin 0 -> 2696 bytes .../sym_keyboard_numbpound_holo.png | Bin 0 -> 1548 bytes .../sym_keyboard_numbstar_holo.png | Bin 0 -> 1414 bytes .../sym_keyboard_return_holo.png | Bin 0 -> 1417 bytes .../drawable-mdpi/sym_keyboard_shift_holo.png | Bin 0 -> 1681 bytes .../drawable-mdpi/sym_keyboard_shift_lock.png | Bin 3188 -> 0 bytes .../sym_keyboard_shift_locked_holo.png | Bin 0 -> 1480 bytes .../sym_keyboard_smiley_holo.png | Bin 0 -> 1479 bytes .../drawable-mdpi/sym_keyboard_space_holo.png | Bin 0 -> 1194 bytes .../btn_keyboard_key_honeycomb_popup.xml | 21 +++ .../keyboard_key_feedback_honeycomb.xml | 21 +++ .../keyboard_popup_honeycomb.xml | 41 +++++ java/res/layout/input_honeycomb.xml | 4 +- java/res/layout/key_preview_honeycomb.xml | 29 ++++ java/res/layout/keyboard_popup_honeycomb.xml | 41 +++++ java/res/values-xlarge/dimens.xml | 14 +- java/res/values/attrs.xml | 2 + java/res/values/dimens.xml | 2 + java/res/xml-xlarge/kbd_key_styles.xml | 149 +++++++++++++++++ java/res/xml-xlarge/kbd_number.xml | 23 +-- java/res/xml-xlarge/kbd_numkey_styles.xml | 150 +++++++++++++++++ java/res/xml-xlarge/kbd_phone.xml | 72 +++------ java/res/xml-xlarge/kbd_phone_symbols.xml | 72 +++------ java/res/xml-xlarge/kbd_qwerty.xml | 14 +- java/res/xml-xlarge/kbd_qwerty_row1.xml | 12 +- java/res/xml-xlarge/kbd_qwerty_row2.xml | 11 +- java/res/xml-xlarge/kbd_qwerty_row3.xml | 14 +- java/res/xml-xlarge/kbd_qwerty_row4.xml | 22 +-- java/res/xml-xlarge/kbd_symbols.xml | 49 ++---- java/res/xml-xlarge/kbd_symbols_shift.xml | 48 ++---- java/res/xml/kbd_key_styles.xml | 2 + java/res/xml/kbd_numkey_styles.xml | 150 +++++++++++++++++ java/res/xml/kbd_phone.xml | 112 +------------ java/res/xml/kbd_phone_symbols.xml | 40 +---- .../inputmethod/latin/BaseKeyboard.java | 16 ++ .../inputmethod/latin/BaseKeyboardParser.java | 6 +- .../inputmethod/latin/BaseKeyboardView.java | 151 +++++++++++++----- .../android/inputmethod/latin/KeyStyles.java | 3 +- .../inputmethod/latin/KeyboardSwitcher.java | 2 + .../inputmethod/latin/LatinKeyboard.java | 10 +- 96 files changed, 870 insertions(+), 433 deletions(-) create mode 100644 java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png create mode 100644 java/res/drawable-hdpi/keyboard_background_holo.9.png create mode 100644 java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png create mode 100644 java/res/drawable-hdpi/keyboard_popup_panel_background_holo.9.png create mode 100644 java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png create mode 100644 java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png create mode 100644 java/res/drawable-mdpi/hint_popup_holo.9.png create mode 100644 java/res/drawable-mdpi/keyboard_background_holo.9.png create mode 100644 java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png create mode 100644 java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png create mode 100644 java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_delete_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num0_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num1_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num2_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num3_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num4_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num5_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num6_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num7_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num8_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_num9_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_return_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_shift_holo.png delete mode 100644 java/res/drawable-mdpi/sym_keyboard_shift_lock.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_smiley_holo.png create mode 100644 java/res/drawable-mdpi/sym_keyboard_space_holo.png create mode 100644 java/res/drawable/btn_keyboard_key_honeycomb_popup.xml create mode 100644 java/res/drawable/keyboard_key_feedback_honeycomb.xml create mode 100644 java/res/layout-xlarge/keyboard_popup_honeycomb.xml create mode 100644 java/res/layout/key_preview_honeycomb.xml create mode 100644 java/res/layout/keyboard_popup_honeycomb.xml create mode 100644 java/res/xml-xlarge/kbd_key_styles.xml create mode 100644 java/res/xml-xlarge/kbd_numkey_styles.xml create mode 100644 java/res/xml/kbd_numkey_styles.xml diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_holo.9.png index bc0a03fc1ea14e3683383663df28d12457f82e69..c89f7385ae069d398e7a9075247579f0a51c9077 100644 GIT binary patch delta 602 zcmZ3_HIYlPGr-TCmrII^fq{Y7)59eQNXvmR2OE&IHdwc4qvBsi1tW8F14m;^M-xLM zV>1gwLrY5&XGcd%O9KlxLrZfL!^w6`G77G)Zic2#Zf>p?#-@gbE^dx4F6NF-PA2BA z#-^6eZbp-<5Q&F$sA!gAh95=5!eeI+Rw|vjKv)k3qPUktb>B}xYh6}S7cJn^m$@^kg;gdtJ z9_d~euAXnRF-~|(!RoTZu@4h_1Dkg*@m3L87aOBny`y52?#4HUb0$gGCtse^&vtBD zzph9gmw3%GGx@1g6eh3)x4KSJ$-e)cUt%}cm)$15;Z?ft7M9(susBle8|CgH=z1~i zeWsGx-7Kle0UR5{Uo$Q1iR)SvvFf;R<<$LNYcnP|oY<6eO!epmUkgk78AZJAJxg;Z z2p^8$`78UE4|pciUsx$*YV_Vx64lZg;ihF`R2t zDqQTkXr15$+xtuBRImQ*Kgn$AWbMk#%?C4&v1fj(+u%`C?Cf8E=}p%W8GlALhPj3Y Vd^e{uC;^iTgQu&X%Q~loCIFgP-n9S# delta 632 zcmbQpwVq3{Gr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YM>i8!b5}Q4Lkpl17dJ;!b0bF!H%C_& z14~Oc3)jh22t}?q6>Vcmh{3SV!r9Ey(ZbZx$;s5j!p%}ip|~U{HO(p|Ke;qFHLt|e z#a5{zw?Ho?GsOx+FS=8Un4Rhu2Tby0U|@{*ba4!+xRvzh|9^Ytl?@Xo3a)r-uYB^? z1s!3=Bu2JZjrqc zeBBLxKo&&0&U)Z2p8 zHVMkK%(t(%d-?RK>X(Oy*}D$=Iyf{W-rkn`zM``7Y@*}IrZo?Mh81)-=qcS^lz)Gp zVZ#~5neB6$F6uh_KT?TqnX~KS+2lj%l1mdlM11@HK7LhHTb`V-#-kU{jGq|gRj@wZ z;M-eaY-(95t2u4&o=yyL{eS{8=0jI-OH6u3=ENJ&eJlNAwR(R0z%ZE<|Y za5lPq?J~Bj=709r{Y~0i|G$pYK=dcmQP-1Od1jQyGwa@3vtq@K!^e)XtvYYV_)&Y; zwJR@j1vnL+EnK7;-|&NV9UH$FcUO#b!PY$tOgs!C?Wcasoh3OFn3xzmUHx3vIVCg! E0A?BN(EtDd diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_off_holo.9.png index 3f2fc0002dfa974a4d942095883e0c4955de4ca3..1fbb15ea5a36494465531f23b650af0a4de183f7 100644 GIT binary patch delta 814 zcmaFM^_W|+Gr-TCmrII^fq{Y7)59eQNV@~EJO>+)+?so#b)({6Mg=2ta|1_XOGgt! zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPA*R7E~c)o7RKg=hAwW7E-vPdPEID~ zuEwU8&TdANs}PD@a4Ooyln`TV>|${!|T=hQIdt4(oOB<5s4w{c=Zrgyfq^J%|N>GqfO=Em>7J(uy> z?|oC+4UZKlOiSJ4ESYQ^)>jag>UNwjiHGsI{lh62CmjfMP_M}8{Nq-?Ja@umR=>3= z0f!WH|1mAEb1}}C$9B%Jv6DrFjs3cW>4oEtysw_KvOQ?jnc(>~cXQb_g%;re-jMr2 z!X+19mb^=etXp0gze36phI@ zQTX?&GH$cUZ}DS3AD(lqn!KWvz5eh7m4XtB4{J-_7u?_9a;T&EuxjE&wFgHIMxNC@ z#?slL?mj{AvesTrrPPUUPkyv~K7Z+{%LnY*&04C9O@E)s+J5_dTjHH3wG;o=#dlRp z-q@zg%hr77VaBX)E*nGc*mZpDkU73>=Hrh)#F8de-_VqHtxNjw>mvV`_9lPL+)dfS z^;7%Zlq)S{!j@gmTzoYvbKUECy3nD mbnU%y;GFr(jrW;&7!qq9PS`N#&u(BAVDNPHb6Mw<&;$U%6Hy%i delta 695 zcmaFN{gz9yGr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YMh(bdJk z($dYsb#fI#ks(e++n5q!Fs!q1HnViJFm-ftGBvSqvs6+jE(uCavr5TNF3nBNEAe!( zRjSA>&`ZfovBJ=c?$jb?r}{;6j_5NmFwXUKaSW-rbtmj>RYemEAmc9<68GQ z-*?pTsQNgedLc{I%j73F+&?IIRBJww{l(WBldXF&!_#BcMq_WKG*6w*Oby8yv21tW z-~KC;KJE19Id8ILjvw4K=XRy6a~a>diH9Ru{_X61GwILVy$==im}S`&^3J5yZ#|v3JC;jsN zQ=qCm)xdL7_~}iz0!6M~^Sx|hB*EjhNhf~o5|PvTI%3^T9A#U~FQynNb~IN!&TtQ=1%KTpWQpv-t_kCih1gbG%iWr z_r1KOsCoayUJ=*K}E(DPN~ zgp)#*jiK-6`#EMC=O29_@Ba468`&pJf8I2x#6Ng{ThAujd_}F~w!3@kSR@!sf4+X1 U^ERLtq}_p7o`VfYZq2>Wx>4~jqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}ICnr|}V;2Kg3uALbLl-wk7Z-C!Cnpng zS7TF4XE&qCRd7YlZa5WfV@ilIHg+*LGzM8Fq<+|;}hPZwLI zirfOdl*|+>f=(@BcB!+VK=fjQXI#WAGf)|;ra*}{$@^~RfbpUg`R&d%1pB__H> zRCKQhOTJd!9aonR{vULj*!BN0%CT-#_piD%S>D{wIRUq<{PSZLj(Jy}Tc5AP$18*hLA@@S6Rqy7Ew_kK;S_+Pub<=!3( zeT}xx4O|t*g?pbrR4+>|keGMeXGT5u-;!vjd;70Azxtf@Co4bXyg>F24cBwCxaDf| ztm}WM?74GpiOAy%oE5!Qu`68sj;aX6t}HL&IcFB!F!5Kx#yi0)c~*Mx9g~>5JHbrY zQm#E>#_qRwJ}nH5zB*avW%O2&^s{-Ex@lP&HlpfD2OlpmVOV%D=1N7g2(u!C3kS#Z z`fXF@=;lW%aP~Yr#?~NsT<|>4GFFwf6O=!xa}}^3ILW&Bd26JXawOlfJL{HJZ(H>^ zCaPOS?H=2N7aVTNZl73O`=Saq+1`84JF9ZYd5>I_|{1t6X=34Clj@is|(U9QU%e0Fpmgv?7K5HGqh46K+!Zd^())2xW5W5{4Zqaes7ziea(O4B%d?( z+3_d(-g;ZxpW~R%uTXyXN2rm`=dVf`6E{luGzndqp0wg(Lt4?#ots={vF*@vUo3c_ zmH$#1*Mo@@>)oxYFK%Qg@%x!@Qb+aIlXW)^^2c6#xl(zq`Q_S^r(3=5Xs$bD{)*+= z+WE$I-$Uj{Rf*5vynpNMcW31EjNW=!9W#!P-YW4*Xwglntzy1=tM^^DnfA&%Zp&|L zy^mJM?)z*tR1el~Dx2*bcWv%ef6b|j3g1gTe~DWM4flEvM& delta 714 zcmZ3?*TAjV8Q|y6%O%Cdz`(%k>ERLtq@{saoP!NW{t`3M+o<@LQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9yqnnAVxtp=8p#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd!uHincK &xw;cRBZ7u~5v%ue+dGj)N!WZdBC;uunK>&~=|{)Zeyj@|#-AhjT%lXsnp zTGpd?uY4XgaWi*M?o=%NxPQXMvr`+7yhu9q=2hMzHMKQayk@#0+*`iJGDqk+ICUTS zaN_P$)i1wg<=21j+p&)OGn*odeDTRU=L}r<7Uvxk|-Uq zOdGlNJYTLZ?48%zmT2?j^Ut1TnG0(tr%Jy1S`|EL$=`)j1^OYr@I%oWB z?ftWkLjIEu@vY%zpCGW!(4XO8zopr0AVm0`Tzg` diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_holo.9.png index b3ac506addd8d7ce2fa12a8c4853eba255cfc06a..f574a38c95a3ae226152345a9bc2a6618f64ffa6 100644 GIT binary patch delta 741 zcmZ31gwLrY5&XGcd%O9KlxLrZfL!^w6`G73gcE+#Gp25znv#^#2GE^dx4F6NF-PA2BA z#-^6eZbp-<5Qdhk=3dw5N+>NX4xu;og3S4Fr1cPT9s15WF$ruvN^$SE@xk zDtrws0@ZwtM}#_k^)CA6T@d9q(+P@N=^N$PBN-knvUA(#g_*4tmpnR+zkN=BR_SE% zJS=M|$QRWhcA)v#RKR@crN5!3dg{>m*qrJarM8bU19 zLUZzCEv^Yp)}6DGQ}@Y@j;zaBoWCyRq;o1o>^l%t6Lyes_UR+K%r71H-`_viZ@FFa z8=skXdXGh~zg{iJ*Z%#(ug=L6F2)I`FOCuq@m1I>-G6+#>$lCf-`ce$Ry04k#St&e zZCX^C{DRW%Q^pc5a;A)eJeybTZ=SogF z9mU-}xAvlClag&iLrka5+2+@~{4I|d`1^HfT=z0!Z$9`n#pq+=)#s;zj%|x?%rbE} z`Nv>_`=*pxT79{(LiVDb-zIhN9=Wq%Z)*0&-WAU*7Vp|{=3UDizrx-lpZD1GWhwNY znzH@Tw3lyo?K!)snYA`B^QnYOxBYK!<^M}&s;vCb`dRk?!`UhO_a-NLv;tEugQu&X J%Q~loCIA71BccER delta 626 zcmbQuy^>3@Gr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YM>iK!Gh;VbLkpl17dJ;!b0bF!H%C_& z14~Oc3)jh22t}?q6>Vcmh{3SV!r9Ey(ZbZx$;s5j!p%}ip|~U{HO(p|Ke;qFHLt|e z#a5{zw?Ho?GsOx+FS=8Un4Rh`)*Mh_U|@{&ba4!+xRvzh|9^Ytl?@Xo3a)r-uYB^? z1s!3=Bu2JZjrqc z#}=cP1t#rrs8) z)>u*d*YEH7FIHWBt+9!N#o?FZvxYOyV(E_0{`~&#|Kjp;|AcJ~4FW$`K00j8Ho;Qi z^Mqi7U8yfT=cIH`2sYnU>GMNpu?Uac=>|cs(9;*rCNsIp+^uPgImWv_L1x=Z!Te=v z%hxF%-BfO4W8)ORuZB_Fatgx&%Y@GpWX_d$2=$yfb7uA3yK^Le{HV~}#IZy^h3~?i z(i>S>0kwz!zrL=2?f3Wh(;0#%>IcM3i8+)+?so#b)({6Mg=2ta|1_XOGgt! zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOe7AZjNrQ7RKg=hAwW7E-vPdPEID~ zuEwU8&TdANs}PD@aVpxzln`TV>|$VN$4hp`WTlZNEdhB*b> zy10(G?Z00iu{P}e}jWF{=Nm!O?Xlrs{;1Qf$`dn|r?gT^Ho|ZF00+v7gRq zr493}XWY|1k$9o3Aa>#<|0g@vMGL3B{I11WwmSL2$33rhZhIx8In&**uS;g5?*!#T zMHzn1@4}`}E?zzNfQgdF({-z!r1j()&P|>>;fvMr^OvW*OWGo-UKH}|@wL}q^Iw1c zC0j2Ru>DAZ1<#bf;l_z)`yNlYm{C$ZNvijla$x?+a6)=yLs3B_whHk#kT(5u=o1GrzQfj z_w0Vn=Htq+IQIFVAd5HKoW~Pnds{aherPaZbjV|S4T%zLkpl17dJ;!b0bF!ppc7! zrKOvN>*OkkA{SFL6EmEOwlO8dU|472Y-Z_bVe07QWNKpJW~ro5ToRO;W|fkkT$-Dj zSK{ent5lI&pqG-FVuhg>-Kj;)PW2+pW=0GQjB`9)978H@CH?vT-=2A8!^DY#E8f~G zpZs+}N0>2*k?mC@zr!E4*{NDQTbRooSh%Msb15~5ZT|P?r!l(+JM+#*A`<_EB(7xN zym@mu!^`^tpW_efJZ2ZXzrX(c{Vkc+0^EiHV7+ zw*{&-R@DCW`+NS2RaakYY~o;X_~rPl;f%9by5qAyzrXvxxV+pyVOv9kz|WPB4qLNL zuvGXwA=qG7>I=^~Dcuu-&39G${Lon}!XtOOLC`Do^o6s@Os+C_YuaLt@vcvh*|t(J zf0^6**A6r1%$&*T)BNP$zrV*D*4wG1+_aXHldE5-AHT1mTc+f|sZ*yOB;<2Gm$#^x z^YHuo`w_ZKvzX2JPd@C?IC$dBnLW4eo}Jm)-#>lP1Ll|PGnq~DWw*_e3c3H`|F5sz zU;q96t$HBj$?u1U*#jfGegT8!@agILlK1x4_dgPz;Lpm+DtYASQOSzRO2;;5?!w0F z4&TyTU60C{S(}+nU<-KpuWOyDX_d4KlgOQrEl;=w_8++Vz%kQtVm9--Y2pqIj10mb XULJb>Xm2(!DKdDv`njxgN@xNA1)US| diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_on_holo.9.png index 7c80300e9e0c9431f799e1d240217ff2dfd99ba6..541cf5c4a370db0de873e7bbe9ddfe32f539bc6f 100644 GIT binary patch delta 1234 zcmey))xxjX8Q|y6%O%Cdz`(%k>ERLtq}_p7o`VfYZq2>Wx>4~jqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}ICl@Dk7c(PQ3uALbLl-wk7Z-C!Cnpng zS7TF4XE&qCRR~3fI2CPUN{BHwb}=_J23cTag3UT5h2oN+)HJJ<{N&Qy)VvZ;7h9!@ z+ycFn%oHnvPAy_~sy}znUxR^xd5fouV@SoVH&J)JMFK_k#~W|n{Z3`wva~KyNk=yU zk4ayG_Ok8$s^IeFo;Ux#2>(Er3-bj+t~lGW?fo`I)l*T?2l`mJlz5eFRxjWUn z%k4{I%8!@WXI!@}n6Y#7^qH3XtIz$MTb-u(TxN>1Ld&BtnQ2x0l^Rd$=YG2H+;h49$epvs=kv?!V`lxnRC{Y%fcM&_#ThwUUw8aev#fd=dF9u~ zUr+W)Z)Cb$V_9$~C)7aD{^t$T4+&FZ{(rq$zAr9m`RemErC<9>|9|Sd|9;Pm?j4_e zA1WP)ytVto+XDes@0b`H3g3#Im=csA!4~mj9dBgGzm4fEP9B}?OP9A6uL@va=IqC$ z{9UVltJcoeRFSMhdh72peqmXv$Xl>2VY|=l1&XdV>}Cl!Do-!k!(_ag@#rQ6mDzza zKl{2IP?79-a&pu2m))Uk%VXvq$W36LpuoF`Beb>asiO+>B`asHTcs_x7%U=Fx4gQs zrjk!Pi|2@$nvLemm}{I%uUTI5-cYeh>D2`X0ftZ!&iXE{%MDLmm=c#;Y~Tq@S2e2& zSXt_4H9aAZbGJ@l;#iVfOiXOFjZAZl3KkChVe=_Ob z;)!+%DvTa8CHb}5OXM~kYl-!i3!d@DIp6c?-?!K8c<;}uzfpasVr7O+(6kFp3C+tZ zjM&aSS@!A8+6tHYTZ(TdmgWAOw{FhnmAbnGw7{fW;P%nI==Hd*oQ59iO{$+Eu^jJDjI;B}&??%c_zva2ugu3vD= zSJQaym&1VvHqN=q@l-8wj*_^A&!4nxm6VrR>u)}?&-&>py_(5jn)QFNtPSB?+H)>j zlteHc3*H=2!RvKVLMYiKGOPDYxM7f`qp#1=T^DS9n6!??96ac?xpGIuxs_55|5vu` z6)M_ivM)L}Q1P&i_RrTMB8OKW%dXMZzkY19+%4(bKh;mfGqN#!+1uPERLtq@{saoP!NW{t`3M+o<@LQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9yqnnGVnTfHhp#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd!uHincK &xw;cRBZ7u~5v%ue--w!Z(wz`(fN)5S5Q;?|w8vtEZC1m>OHrrGjuqSn`_ zk7_^o7QJxf5&bC1BDm)Tcg4Gl%Qr-LAD#Wcn&aM)xU07UZeO@`C1oyW=;fulCM#X7 zHdxP8{aicy=E-vgiYz`_J%%O1IZ5`NIgIX7%hY*g-XA^@_Tc@K&Sf6=BbIP>F0Q|u z_g&(v-K?7e57tY(S{wu~MIU>g~hQolIYMNzTxmd~tJi<>M0u zWjmH-w%XPCe%$}W;@rX1jUrtgEq^%MKm2(uxc}jVUHLR>d4c$jTc5YQ z)_8Cu(4Sq^`0>Xbd6Cn~pPpEhW%lI!ySg`@eyZKbE!7ZwR8g_7cXMNI;koYH(b5xq z)SO!T|8TN@^g66%dUf`c+}jtkwpMjTZn<3~w^!=9lk}}el0MJnq8>5Y9X*~O5y2&t z!&|bCPb%8&7|Vq{Us>YUDqi%}o36cLmDksvyzkp*hGp$!k6cvXKk>++k4CE=O1@ao hWYqI&&ps9jhUIcEc6QEg{s~N#44$rjF6*2UngBWcA`<`r diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_normal_holo.9.png index 737de397b4871d5b36ea031b6ec67e826849c52f..0ad025c90c60cb4478cab32f179d9f944f38a47f 100644 GIT binary patch delta 699 zcmZ3<^^r@lGr-TCmrII^fq{Y7)59eQNXr4S4F?;LEDYhAzftioqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}2LsN4jCsQX^3rk}|Ll-wk7Z-C!Cnpng zS7TF4XE&qCRR~3nI2CPUN{BJGFtY$^cXhHbGQnn@l0tDwP->c0N`7)_ZfahMr;Dvp zMQ(v!N@j``L8lfmJJsjOgg;rJGi*AWAeT%)AuBX#0?&l+48h^gWc z4A;9;%{aZOqT5J)M)VFN48SA#IW_Q|ZRyM&!$G?(h_xl;I#kKw#);GNm0^}h@J&JL@6mK8Kv zXZmS&=BnODq7O3n#@)C05Vkn++sCBccjJ;+OE-3Fek)9guv~rqvdPzDQ&N8_Z(DsV zxpD9FT*Khdb_5I6o&u+ delta 626 zcmey!wUSG*Gr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YM>i8!b5|!Vcmh{3SV!r9Ey(ZbZx$;s5j!p%}ip|~U{HO(p|Ke;qFHLt|e z#a5{zw?Ho?GsOx+FS=8Un4RjSMO6717#JfxT^vIyZrz!7(W}Klq%FN9+;NI;=FPm; zxTDt0idAh2O?g#4d*A4868Kcel&|gV%yKcn+MOq@{VuC}bQ1rW9%GCD%Z<~Y$=uqe zE15MVXvVcm2R~cf(3~P{G`H6A=N&d{_4@Sn5odp$6Vhfle|poN)^9?)Rtr9=f4||1 z|Eg7X4!`fdKE8hgYnW@`oz}z(Sr$gmNiH)|BCnnLyhr+aX{zt#YkTW-HtJt3t$q6Y zpN4?cId|DB$;Z=kmS;+7pWgKDripK2#H?j3r2+k46XcHV{*fT?`tF{2Tlmec{p05` zD+!WVum13u?3?p9tl#aJ_Az5`;roSRou$s@37zX+hs}F_cdGF*hvk=(?dIg^EY>;Q z-}hMHuz_1+f!(Wyd!M&?^nOeW483a8wW#{TB5sNJu0s#r9Al{3m|MM8gX@^_p1byZ zQY(MTJmHyM?c~AtG&lUv=82A-LS?CO_DnnsTlSqkm}IMK1WZN@p00i_>zopr0EIyA AdH?_b diff --git a/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_light_pressed_holo.9.png index 3dcd8323d67c35a27678f0702a4b68999fc4392a..c0403f0bdfe11e486cc8ad4cd401f97bf58ab627 100644 GIT binary patch delta 800 zcmZ3(b(LGOGr-TCmrII^fq{Y7)59eQNXr4S4F?;LEDYhAzftioqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}ICnr|}V`pbq3uALbLl-wk7Z-C!Cnpng zS7TF4XE&qCRR~2+I2CPUN{BHwb}=_J23cTag3UT5h2oN+)HJJ<{N&Qy)VvZ;7h9!@ z+ycFn%oHnvPAy_~s(*Vb;V=UO6RW3-V@SoVH#7J99|{mS9xwe?;ew00vJX$oNyn_D zq(><+J~1UlMUyVNs>}LZ@e~&qp8JFS5C5D96)qk>KOQz=wRR>x(~WiWMS>shb&rlZ z_$0PyXWQ<3&+qR2#}R&XTdq)ui0i?Z+k{@k>`yp+;{1j>{psuPJF(U?Pia2+Q)fj} zYY0;#V@%`8Ne`cJa%)twG4Jwr5;>4xRUf>#?NiaJo^NhSC-$CVIlQoS!*V50>z@3X z1(q&X%@*=sVEeZE>`DzbWA50dV-}Sw*5Bav<6f|RS)_gI-E%3|CePUsp5b^sSbc-^ zg-kb}ZQNnDTVC92lyjKeWbw+{rTz`;o5u^5ta_38z?9}Er0ue~siQ&kq?oR)xr9uzWNwm+%N$Ub-9zuRHu z=?b}h@t41bTsCbi$d_;dZa=6{qq?X2dD`lbCzTrLLFm{z-PzwW(y zdf->VHFLJWOdzc~^;BS9FX0zN)lF z?-u*8B_B-L4bGT`zS_Mi^Zi}zE{Cjyh%>i2`;tOJp6nC8cYKXu9mj=za~^*+Ji@yC z@MYE)d*T(gyt)@0pKwk!>EE;F>+2sd<{R1T&(UXOV@O}KE${A?ElR*d&*16m=d#Wz Gp$Pym>^;T+ delta 629 zcmcc0y@pG%Gr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YMh(bdJk z($dYsb#fI#ktI$=+n5q!Fs!q1HnViJFm-ftGBvSqvs6+jE(uCavr5TNF3nBNEAe!( zRjSA>&`ZfovBJ=c?$jb?r+S9Xxlb4v7-KwL978H@CH?vT-=2A8!^DY#E8f~GpZs+} zN0>2*k?mC@zr!E4*{NDQTbRooSh%Msb15~5ZT|P?r!l(+JM+#*A`<_EB(7xNym@mu z!^`^tpW_efJZ2ZXzrX&xec7LqUl$jvOWM``^4aEFQ?uvMwQJ8J!=^1e6B83tZwpjw ztf>9#_xJo43!9H?Y~o;X_~rPl;f%9by5qAyzrXvxc)dM8VcV81Iya};*8ZBon8J6$ z=7~s8o@AFA5KPi_GGjh$Q!_1)i>*KP0LRi*sV|-xHY)Yy**WVyZVNZyyM3j@JUBSZ zQt|Y?!h!;hzdt@Q$2`%xnsC>QQ z>Xik*+Wuc(AHU}N`}_Kg%ar05?9kXbjq&rl>; zl^BoMglu`jEwKN<)d!B5juW$)*G&_5XkcWRV|#j)(y6mFVdQ&MBb@0My&- A_W%F@ diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_selected_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4a77ffb97f736ea09a3562d019124f21f63afb17 GIT binary patch literal 1018 zcmbVLJ#W)M7&a7zQmImrSYSH2f&qx_vz<7$YAVN0Xe3;!G!hvYxY(D*YV9-UD{(tj zY;635iVX>|BL+YW2#JrKKfwqCQaLAaVTc&8WZ#G1=Xsy^>&e#U?d7E_OM)OQcQ(8( zUl;g$ezC&8pI`lW&X>!q)o0se$i|3b!3oI#gHDWga2KQS;NeHS#zDiV*JpkIjuntt zLWPZ#$08EAs#?7PdHA~PIHsvI+R!v~SaQt6>agy#T%*})m>Ps$+wnZZX*PAErPWNg zt(MqMk};G7xbz!wzcZ}!Ppsuqj2NLkLiWlI*cuT=vJpvvyIli53ZkSq7v-5o>tPx_ z!eN_|7)6EVieu&kv`=gA+b6 zl#j-x`_EqRvAW*zoL>HI@blzkePQM3!nKumPb(LX(qrMqhjX7$82 VzF$0E{36g|8au5`?`8AB|$9Xz86tqJ9jbiSifcO!vC%@^9D53v5>z zC(f?fzw@3ctCQ&g{*G(y-yJ72-#(ylepQFS-hw$jd+*gKuxxF3!F#goZpxn3p*LP% zc6xkD<5tea7fqYQUO5NOP096LxBjN=)~pco!i4*_*S)TCEO;N6(fneCp4B^+%Tpbt zU1HfPZ7u~5v%ue-u;i`oU42-OvE{-7;x2}X9st2We~PE>>nQmHIJEvwe~HZ8 zY3v4um&8)$y|218Tcb!IlEZtEwE=_pEbn*gH%@%rZoKe#eGr$w@%w)ZRfOgp3eta3 z)1f-Q*~2>Qj7#k0Co9&QUs}KLs8@w1*cW<<%}@Gh8hiF*F&9(m6KpSU zl}Pp8`7q1d?y`NRr{fx#?yH+pd<=K+DewGwIJ#c{b9lk5-t7#`4DD>m=a*b7XhZj0isVBP*8{;^B$-uHRm=l6TQ zugs9VipiME004lg)xfFrI-7pyg-xZu8wNfdqL(>TqKPt+7Rrg(F+hQm*%+v`A~{$p zhM+|SSFn`;5Msg8Oq5BNBr}s%HsaS|yR0@E4FD_ST{gs=hf!cQmV*;=manOW1>&fj z^`TJ5)!9^7F0LuIW5(j-G;?vDS&FjafsJ)H=_YSZan5fhG=iK0`+aUnJi#O89WR)1XM+72oe``3+0 zwH;|iHjI;sImq>PGhGkM!T^}g-Rlkc6=`o|dOJ=R1<8j=^Li^rP+C~dqHowJj>>pq zF;~HtDg+RZFOooX_yUzeA(e6^YDg*;Kmm?Pu}ZZ{saEh3C44ai!DyrJ0IMY&6hfG>fL+{gcLEE&7AsTPF@z%RX(X8+=m0}5Ns*3R(gv!GLQsd8al$YA z%QF!zjM?!*3{~4nD>$BC89s@9J|7lCe1D`o!Q^pIVA21RGY;(x$KM?PX_mkd-GTn? ztJbH5SHpu5^u*Zd(Ri~reFgvo@7KbLG}kRpMpI#TLd4D0_4jh}Tcu^!YFgz(PeQka z+rs5T1^PH}NPA`*v-NPAsodc?Od*I)|nyrChhc3o6SPl@};dvSH?^^DWM z>}soSE$9;o5~}p`dtwg>GtYeCJMh^P=8Zb9s1nGU<@SpD<0%($`^J6sM=!2M{rRBg z)WP;YSh`2r`LSWgvtC?kZu|CvY(6tWs;QhiFyAbeO{HNu_EF!BWK^R@(-W<80Sk=4d zL3`B{MU3X_W!9#wi}$L(KXWlG^7AD|!G*>``Pmgc(-;-*9CY|LWi+G@_)6xTB)Sqx zQT~BAPs(Wc);pJjPJVfKQ2JHG^w@^BLrbTGo$%C2oO?HpTwAm84^SrSmv|1^bodHGjq$dV5 zl0R(olO#W)Bq}N@Dk`Wb!bBLaFlAX@vMl>#=Xp+5RS{z3oFk3%9qSd zIF9ar!$=YZ_)suj?`CP=CL0PS-Bro#OsL?UE#u{9W=;ho3A8n7UDvj4TiY}ZVcp@_ z>AA!l&(X3h?|-yqKp&OC+8p{h;5$^9q9~4qVWISft0L{Pec#&`b7e3m#yiZ@{HSR6 z2A+e%pk?=UU7eV4PJD!Ctj)G<;b7v=RfIVs44ttut<807*qo IM6N<$f}p9KkN^Mx diff --git a/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_holo.9.png index 7230fb92a7d35371daa538a622e481b2b64cebe5..0e2d3545ec7f5688a9591a8ee53fb55287dd6c5b 100644 GIT binary patch delta 534 zcmeyzd6rYLGr-TCmrII^fq{Y7)59eQNJ{{*3|$fj|ZZF2#nL>uS5rIr!Z=y&v8*v8~yXc0*~uXhHO? z!(6)`uVJ!OU@CZ@mGIGbuXM}<-97D;r5$-Lt;v(Y~+y%d_T`QPGd+rQ{L)0+oRCxHRIwpB5cKCe>X&( zzIn1ZBkO;dmYCcESE&Qh3=g`lNt?T6e^WicV00w1`OrE^c3@C2c)I$ztaD0e0sz`C BylDUc delta 583 zcmX@h`HxevGr-TCmrII^fq{Y7)59eQNQ(op1P2?C6s$=r-KhANQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9ylcBk*fw`-zp#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd!K5incK &xw;cRBZ7u~5v%ue-R-kWJLFfi(Qx;TbZ+}acBnAc*!v*qTJ`#0}@DYyN^ zQWv1Yx2N&&x+4qQbB_wnT2g4bW|5g{q+r&`76HR~7Rl{%i;tY?>xj7L9o0JVCBy0$ z4#A%^=JwSm*40EMJrg}rFSD&!vQmU~)!NbuR&fVyy~1Lq6};Daz6!@2u-hwL-?O_& zFMCzytmpgQFJJdM?r+Rv>-VhU4VP`sADT5Sb!US5(F2t-$F=kdiTlx;*(6a z`_S9f=zqCna_81E*7BW>L9S2Q5-Z|Mxi!-^_iu~z2;}?3xsK81u=xM^zM_GXDr2vw z>mS{|EjPaFiOkjSZ=x8S6q^qmz)aIn~BgXX^czr{P$uL)AP621XxG7srr_TUWxo^9~sZe7(UU_NSSpdz~c%`vZoUW$iCh zs~Y4Qn77>S>JN$H&=D|Pm;PjmhG@#FBO-3IQj*jwzwI%f++gU&&>-l zkGNiI`sxP<-Lp1ne%j64ruo|Rb>nWki2KpkciI?SYS!mJe`amHUZcXvIkFd4-4{RI zd9BK)!)vb%&#&`&e&W6pOPn$yZWO#`l{w^4aSdPn@!PcIQm!#r2DJ?~V)MY3N}1z&2se&C~r8 fMFncO4H!bP0l+XkK84dl5 delta 1188 zcmbQkwUJM+Gr-TCmrII^fq{Y7)59eQNGk)e3I`jIWWLk<5J)i=2e~^jtUD+3a--V~ zMg=!>b2mdna}xt|BLg!FLqiK^LlYNcQ#T6>6K4Z6N2kelOfm{)PKM^L2Ij7=h8932 zE^dyd=0=VdZjP=l29}m?7Os=45Q$_i>*>cZh>A(W{MStUUa7xF+0_Nd2gl#^rd2nYeY$Kep*R+Vo@rC zdr@LRMrN{eeqLE>QAui%f`(^aNotN}dHXL(V8Hlzx;TbZ%y}~7ymywP$nob{-wrRo z9`CtR=#Ix~p=ee`)?KgUU$hIxZr5wgc)BWd%8hdq+IuvfP>J}}| zyZfs4dHtE$g5A|yuWx=`y{A#1r~KWWp9SY;TBhqwOr7a4IkmZOfzeE!gXt^0mIl4m z_RQRKQRZLYrRx1wJWu9Eu?q9B{nwMY7xivgdpmnkRh8G&^UtGYjJ4!{?@zEh@?t-0 zu-4QQKYv!5E_?Oz>C>mD4J`I6p85RQ*ieFpDaS-_Zdc3C`k$2#R~uA(FcUrYwv0PD zIeAHhj+y+kmoGbW^74fC#+?_x(#+!{yP#~D8J}v`q6w#;&f+(=v-6u_`o)JMA;qZK z$7ilgkg>$i#b3RA`E%p$-PXmGm6nswraj%g zd-w5|FJHQ+scwm4Kk%Y{pLE+XwgVlvZ{NOj^k{2~fw{T)?}r5y^2c%(=!qP7VcPie z-8-@C*RCyDyjc0=zkhN2_U*ejf7Yx^GHtsKJS>QqHhsEtdwaWL%g$Z9tY*xaW7A;B z&YyEuhuI)WX(9)ck3iyq*l32$tjT3(6W^5W-mzhWK+CN5Lv!ZN&Gq&1$>6JZE}wig z%k=QX_xEq!{AfHwv?21Rfbso(vo(5d=9ry5cdjaEu&Hs!rM-Li zUTr;S`od~Ib8~Ij`3o+byH^(H<>gfr78XhfEuG_|W?XRgn(|(%pM7aIfl)6D+nu@3Bv#(!8^XD+-WX4_p;I)45 zGJoxQTMg^dfHJODr-yeRWoYWW+PGsqck|mHKO(OB?vd|w`Ef32O}*#brkdnr=C$5y zW3Kz&`1Sku$rmp)uAVs2ktDBkS%8iE(=E%Gxb@#s|o?QLxu2W0$#neYF9W`-ThABo;c4!#QH OGI+ZBxvX|$mYro#l zcJlM~{)o&CLF#?3p{eVdPq8xSzR$G}Sba3&tDV$^XP2z6n!c@+*Ux-l{9@&MoezRL zUrQ7$Ogneti`0XI=|vR`i%lF17-k$=y*Z-egZ=@AKF(=NpFRxu2ux25p00i_>zoo8 Fn*c*P^K$?I delta 698 zcmdnQ^?^&VGr-TCmrII^fq{Y7)59eQNQ(op1P2?C6s$=r-KhANQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9ylc9@|ft#tTp#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd!81incK &xw;cRBZ7u~5v%ue;uQvF967#J6Lx;TbZ+}abm*YB`_z_wm#mZ=j?O%e=s zdUYv%0e?VeFMC2tdfUS2BN7KESoU97=^ScU@^VsmL+=XaWY4VP@VTnOcht6Us>ka2 zJvv{0|8Gn7TFK`z#>Xt~UDs^VN$2fI;O#o%eYfOK_w%!tgG5%y<*DBC+otAPuT@^u zDXOu3@8T5!{TaOpTqV6?=k=`}@;=^b*#1J=S)QqWV(e^ITJ*ga>#lE|cm6r&n)8nS1{aU+WtGvDY0o@eE$SM$ z|N3j&^Q*z)NrEmDgnsPe+EIKa$Z}hURDYH%qw%UK zJl|GsQWLWFDil7LV^+QZ2<*yUf#{!YC+b80&G zS8U}fi7AzZCsS=07?{&CLn2Bde0{8v^Ko2Tt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdpzyaD(%Tp#cR9GX09g0)0b01O41wkiWpHi%Wu15zfG>x;Uh=AXPso zwK%`DC>aHCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$CpSwYOH)f%3uALbLl-wk7Z-C! zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNtE%55KaxO|uEXgkl$-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf zZwfhKrVn(CJ}7Y@B^HG-{U#fJ%)Xs_ltG9of8tU*>OZ@nn>Ivj8b4IXt^G@^liD}39)6#rz@R9 zuSO-B-)~CgyU_dSAYa?ZrEBjWDn9Q0?tAggH>GvamlN|QnJ=_CARe?y=X$F^t%UR@ z6-i^ozJyp;{`SWoJ?CYbK040jZ6vg#FhJ)@;+pes&FA00eRaP_FyjjbwuY74f2P&U z`9CLM+WZWw?pe#4;?6yK6l%V%;Z5-Ol1X0zZr#tmWE?if>ckH9>%HFomLCesBebr) zu&a7;WM#_H($t-wX%b@9W*J893&EFOPe%_I}^;8?|@wm-)ntL5z$6DenoX8yWxTKqfrhYp`- z-Mg~MYs&8)sXJHtn-{RDyqfXSa{aHmQ-`HKxTr;}=F;{O)BU9Q@2a_FC9|I39QCvV jm*<@57gQ1WFP6X{$hW!ka-gOwsLb?q^>bP0l+XkKJwgxH literal 671 zcmV;Q0$}}#P)LS6oz$1jmE6OK^X!TTP=uKI4M-nLPV`B1#Lpw6e6;n&6-NoLJ<^2`vt+$&qf@- z%f&yiKOz6%?m6xiZZxnPH{&MYffp|0;C(pfJ!g(e^*e~_9OpR4InJ>SH6sqhzaVb! zy<>uWI2gQ0L!|>5s4kiF1@jJfBoz6ZjPMi!WdvPQnHiZtdMYgfWwTjMF_>5^rYjbU z#zv!YjjGjZW>hYhGsDFvgTd76;m`Gx$>iH|x%`P*EEZ(7T0OzDr%tEy)$Mkh1VPwA z@c_>&1!G93(+0S>Je$qr@pvo`hr`-@KHsd@>kWdHN+l^0iAdB-8i3a*24l0?43Z?3 zL9)x`lKp;vt=sKx0B!@BB2YRh8jUIr!!v$B-mK%@9^SRgSeVgAHk+a>%Ma+4 zR;xvl$)vI{dqWS~Rcp0cui*0FXfz69M!>`}lt=dYd|znROmqOgd26%f+GYk}z$cH8 z5frJ{>!ENs9HN8oa%Wy8Ch!3a=*sDIKHlEmqKMsY4?*b;V6eor%*w(z91g+j^$O75 zRy;$?qfb83@?6leD*B<^!ib`11izG_L}l7V_h8g}+Rj=k^~qocgTXVHcszbm81?QV zoWl8hzEr7HO4VwW6bgmAKp=2O2cm{Cuc9zKvr4f0%(E{wv&;N{7@RFfbkVC}IA-J9 zc|*sX`6CD2t6^T+gZK5X`|rnvIYqob81f!7Llo8@;};tR6gToL%Ul2e002ovPDHLk FV1i5GHNF4< diff --git a/java/res/drawable-hdpi/key_hint_quote_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_holo.9.png index 51dcfac990ce9ab42f757f4f6a55290af64fb801..9d5a88bbfaab56805e1b40b1a37da91b4e89a520 100644 GIT binary patch delta 484 zcmaFKIfqlRGr-TCmrII^fq{Y7)59eQNJ{{*3|$zv{Sny@P?3R0iQY|$Wj*oAgSbFrzkKilc_=AF9 zUg_97YvboN91e^T9Q&p)Smpz!3pX)Oo#kW|nsVyS#LFKy)Yn}IbU0IQaM)?lX_HjZf2TELx9~f8 z{#d?d5wq0-=6_5Ied$rg4AUec@@6b%xX;AHQ1UJ2$IGc)I$ztaD0e0s!pj Brf>iN delta 562 zcmbQk`I1wyGr-TCmrII^fq{Y7)59eQNQ(op1P2?C6s$=r-KhANQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9ylcBk*fw`Hhp#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd$U%incK &xw;cRBZ7u~5v%ue+hKf3NSFfdAbx;TbZ+;O#>}H6ix8gN+CI z6E64{d=UP@u5RC)Z?xvrt7nH+881xF?yC?oSa9X2x0h$;ecQPB^$spv3?7=S-)c{N z*unl(!RD#K1-oU_9;=_Zd-@XJW4VgWCta9Jw(uR1OYq;K*2%iY_j1{(2`o35>unzA zpLlTKfarHqb!pwx%r>VtxlU3!zDcKi-~026HExN!ZuGhQCFf@SriHxT`hAbr%AWZA zN1*NDtrZ2P2c{dcuRE>#t^6cI-j-|TE>|1{)~s4(Wtc3b)R}c%_*#vc$@imo#Lu3! zvc0A2bpDuZQ4IID$1}LU1^pM_DYdx%N%6)B=Kr>D+reJ{?%|OKF)jO;UMjci%~X!& mi-{>Un7Dj5-{M`|1`H)$d0&bjt~vuu1`M9AelF{r5}E*xP|u72 diff --git a/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-hdpi/key_hint_quote_large_holo.9.png index 6514e0bf7f587a56376658957fd9beba16bf8d25..49154a7370e23fde63789c7b1b58bb9be16bfc77 100644 GIT binary patch delta 582 zcmdnQdw|oeGr-TCmrII^fq{Y7)59eQNJ{{*3x8S6q^qmz)aIn~BgX>5NPB{NgFjHx3qR6cmRIEGZ*O8WEvzdf_E^5c3oHa0hb*|!=vy^M`6Ff_=V zJK~UhfJrGs(By@qOSHT|0Ry|hW~ZO~7n&ITm%dkVK-fm%Fl*-r)f1EWcPL5D=XY3_ zQuXcA)VK5Z*V{TW$-H^<`Tw7v%8h5lg~fL9@^;!UImT$*@#A~_|NSf%rnf2Z81c;I z5B=Rf$0Mz6nE~epC%0pVZ~XB1=(LH|CxBV?piJ7c&o_QJe3<+wg{x=H=Ng+k?S&ue zC(iEL(J*6n!(D~z^@qYk9(cRn->{@|(kBK*d7j=wc~_bOx!rUn#Kam-aVso~tz=o6 k8T5#eJIJkpftlg7K(hXeseBGkfxc((boFyt=akR{09=a59RL6T delta 1060 zcmX@WxrtY=Gr-TCmrII^fq{Y7)59eQNGk)e3I`jIWWLk<5J)i=2e~^jtUD+3a--V~ zMg=!>b2mdna}xt|BLg!FLqiK^LlYNcQ#T6>6K4Z6N2kelOfm{)PKM^L2Igk2h8932 zE^dyd=0=VdZjP=l29}m?7Os=45Q$_i>*>cZh>A(W{MStUUa7xF+0_3{OGz5^rd2nYeY$Kep*R+Vo@rC zdr@LRMrN{eeqLE>QAui%f`(^aNotN}dHXL(1_q|Ho-U3d6?5LqF!V4AlsRyJZq%~* z^Zaft%F~nI!IC(;HTuCDrHH<3z9M78)W|C}mW^Djnn{q=5f3FZyl2U?sIpRG1p@}d5c+P2%dTQ+ZQ_EEdM zJY`Lo_U7HYyMO)tSCleu{`^3-$&NfGjxLNVSi%^;imYbx3iMik-B@2=|MWzllQO)R zHZx_gd|^;eU?^eA3Y18RIGNJp_W0Djd-K#LdSqOBxy4SbyYRyEzW#pR<;$1vs<2si z`~LlK=gA>$F*UWdwQv8_|G5*WAtG}%YwG#5&FnvG{xNK_|Mug@iTJpTztH{_EfJeF?yff-QE2JiVpp=J+TMq+Hl1hm420}8*k>^3R)?$ z_G;F}-Mg*rggPzOuUj{VpP&D`!M9hRf9`W_YdM)?mObg@6X7SPFP}VlQop|9^VtH6 zJ(Xo;$Cd}J6tel~ZScN*$EGExB$qPO39oHPY|D@K{dC%)X;E))@5@!IMLwr5d$4l( zG0%(5TxXnE)24+remqjOw=ZIvsP=~~Gm_d)E@trjnj^)-_Tt&Iw#F!>LtGkZ0>@9< zRAlMLw_U6MzKFZ$ue8zPiygO?J6iv{SZ_JmvVLyQn?x%c8<&F#6MQCpJ@-KWP@{uG zkYvon{QUfj1r~Gko26^QCz|+(i;H_K4O$qs+SJ}>houbPmc4s@3wFj_vE#i}cx%Sp zyn5x&bxh~~&0w0Q+kCKIuVnY#^QTX2oArV1eSwU--Bgjps2}HiOyj)Lirr#Lf0Slt jcXP=60cQ38|Ct$%a)iB=nC)5z%nJ;ju6{1-oD!MERLtq$Pk@hJy`ARzItMw^8vgqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}ICs!9Eb5l!K3uALbLl-wk7Z-C!Cnpng zS7TF4XE&qCRR~2EI2CPUN{BHwb}=_J23cTag3UT5h2oN+)HJJ<{N&Qy)VvZ;7h9!@ z+ycFn%oHnvPAy_~s`uKj$`17398VX=kcwMxruy==7;v=Szr3qpedl-k+d9XLSGbA@R5NY!XU(y|aa!qj(Wb|ZoxNEO_cBhc2i~hX@n^@*%wLG(T;VWohmieHj@T4xL znOBqb0!P5yh*yku_jmfs<=rloYJb||(aGLnSf<(f_IlQI@9%oEdM!;|JX$@X(+pJl zC1rPh?%Kq*XVQCSlgr0fuq{}6$NQ-U<2xoEhP9_PEFLw@pA2*;gQu&X%Q~loCIDeK BivR!s delta 462 zcmaFE(Z;FR8Q|y6%O%Cdz`(%k>ERLtq{V?)f`bi63f82RZdClssNiO9?q+CcZen0= zWMF1tXlUVVXyRgQ>SkeK;%s2%=rq}mNk+lU$;i^t)Y8?}&;qE$#m&*w+{n?w&C%7x zz|zvq!gX>LLXitjMcbGXVlb?;a5l4av@msaaxyisaI;iWC@u*~O|weLPcF?(%`5SA zu~n+bEznEJOtHeyi|*7SW~cgH$$9EP|84VhaSW-r^(OQn?_mX=FM?_>)^9ct0iiFK zMZ2_@FLM&}T&%S+h|}9Wz@_i8$hm|xrUNc4Gv7!0&0oNL>SE*5)El?^=4<@-FZ#*c zuG?HQVZNQHb-4Jfj|P$FMfWIr{pH%29k4pp~~3e_z$<4&rxhI~9cCpaPYCzD~2 z*K~nHXX_>u?>i>({%o6VVfWt4tG1oe_F8>!lJ}FU*bndi=%0RGzI5Y(s&mn|l&x6e gzqa)iRdE?G#Qya%YCoP(4fFzor>mdKI;Vst0DM55J^%m! diff --git a/java/res/drawable-hdpi/keyboard_background_holo.9.png b/java/res/drawable-hdpi/keyboard_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..1eeb9e5cce4e525d39cc087aec54b696201145af GIT binary patch literal 1107 zcmbVMNoW&M7)~un7itwLqF%-+>OnJWlIaXd>m-xdh>2~IV#JG+nU`irX6ejpljcxd zz~$h{?3df_x5yc z>GF6yJ@H{Fh0b=5r)_7)S|pWnKX;*HGmK_o+RVeUYy*#|nmK^Qb$J}5fUHhWJOV)k z%4?Y{%qI2=im4N_YeQ6Y3!y!p;84Yql_G#x4vcF?2>*8bE{0v$jZtLP=e5h@|P#w#G%y(V$2W&(>LydG3GF@i-*8(@Bd z@+wq-!U8lwvp$aFc4G`hQzXTZG~=Z?fn@}W!WtiryxD4ANJ+7VFQkR=0)&=8lI3!l zD6@oVkCQad^DYO&c#(zInKqzY@fuEllR*NGVrv%EOapTn<(xSQLpX}Go`P;A5-Y@p z(g+e))b)~0|OvrQeV)mPA3_-9#(qggjo#@9OUI#&Iknvp0N z(jAU}hNXFhCeRgEMjt6F%L5FwF*aI_=UV3*v{onLl9;Ky{(Sz~x}#V}^vcJji%ZKd zlkwgc9}agtd3)@OaeC8KU*8@gedDqIVB^E?!p(V|EEY~}|IvGI+t&7l_2r)SMS9=a z?oW55&apM;ZoQiuoh@DH8#?r=EhbJ~U;I6>aCxlv*Ib)i4eppIpmJMo9=M*c`>BwVUAf-Fcl_NB2}`^@=5+)juI z_%Uou3|(PhK}?MN0VX8GQqDG*cx)k7Q(;X2qc>4Q|mWPBRvk zjjY(N8GKwsG|5>)GEgywBQj;S$dxWaNb?}LB+iOuqIk;WGR$QpK{-vUxaQUc>*K#N zR$3Q>(;UlvT#zY^cs<73HJIn_YDbkJS7SY*2`@@`;*)5a;*9ltTjYPFIEgJq*P)}D zj)oMqWgs5D<~fdOLZgdJT|+g;Dy)Va7n+9CF-#R9zw7wE?zpa|chsiob(I?1%L*1| z5w86v-0u==UWv6libF=|fRK~A0}dvHkzzt};2kzW5JpK>ovZRJqV+LNUf{S(Nebrq zwUQP7RikBa!5!C7wAFDhu<`%oOy*+bsyY5?mimf!V70w$eSWwc9-Q%sp?oxcU;nwu z$Lem+cLwFR(XWe(_S&tNH=yUb-*3JZUJL6``22BwS9<#8Yc+qp&c6T7efH`P6p}L5 literal 0 HcmV?d00001 diff --git a/java/res/drawable-hdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-hdpi/keyboard_popup_panel_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c33d6642941bbc3cb4cf9c153476ae3aa054f6b7 GIT binary patch literal 4311 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 literal 0 HcmV?d00001 diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-hdpi/sym_keyboard_shift_locked_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..c432bf4a33b318e98f8dfb4687288862775c1d18 GIT binary patch literal 1480 zcmeAS@N?(olHy`uVBq!ia0vp^W8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|! ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g1^l#~=$>Fbx5 zm+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-hnc$LIoLrPyP?DLSrvNfBF)6>a z#8wIDQivCF3w(Xy2Imz+0}2>q`W1-<`i6Q2`nkCve}PpOmjtCEoPkw!aY$uBs(w&v zaeir0GB7^Ulwq2IVTa!$kV2qqto(~IfsvA!ryA&s6}2uT>@%`;CoV%ngk}J~cAI?r(_R z6mr5$ALtl;P~t#JEHEKp3Is9XNgv38XP(qNV2&vQW(}iCTlsMd&c+m8C7pvxzAYgygO+%UzR_v!T{?FvN7C{|2g5%&*2q>%t4@tPQ6=`T z)zN9wY}?J#3;6!%7+Y`ew=914s4eluo5h;x{=NrTd=N;B_1QDdu+y9?Tvtu5^W+YS zDBW;E+2+gQiRBKz6xXhL)fIR<*J19&dmq;--hX9Opc`uC_qZ*%=iPM`TScyA8|7Y^THXyZ zbTAcQndkXe_V&xg``oJ6DjoD$;eJWsaRggNJF8!6OP8M@{}RQ^mn0VLjS91v%BZ!f z+F#1h{gvRY(8vdunoN0CL|?jbDKNk1+tiE8O%05b?oLpfmd_^qCD|>m%pmuT;q@h% ze&3I3{_6hjb(V8k@8^4>FO{B0|6~2tdwynnOv1<1FOy8PUvMU;eVNOlbF$WFz2(CE zP5rWLb@LXzG1q)BW25T2PmRHASUneB+Eb~s(6{W6!H@M?dn!e;nA8%O(ym+F7ww;v zH!u27<;%33iHYmE1NKibR?9|;1bBqZv1epsi233C>8W_*2TFVdQ&MBb@0E?p? ArT_o{ literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_holo.9.png index bc0a03fc1ea14e3683383663df28d12457f82e69..c89f7385ae069d398e7a9075247579f0a51c9077 100644 GIT binary patch delta 602 zcmZ3_HIYlPGr-TCmrII^fq{Y7)59eQNXvmR2OE&IHdwc4qvBsi1tW8F14m;^M-xLM zV>1gwLrY5&XGcd%O9KlxLrZfL!^w6`G77G)Zic2#Zf>p?#-@gbE^dx4F6NF-PA2BA z#-^6eZbp-<5Q&F$sA!gAh95=5!eeI+Rw|vjKv)k3qPUktb>B}xYh6}S7cJn^m$@^kg;gdtJ z9_d~euAXnRF-~|(!RoTZu@4h_1Dkg*@m3L87aOBny`y52?#4HUb0$gGCtse^&vtBD zzph9gmw3%GGx@1g6eh3)x4KSJ$-e)cUt%}cm)$15;Z?ft7M9(susBle8|CgH=z1~i zeWsGx-7Kle0UR5{Uo$Q1iR)SvvFf;R<<$LNYcnP|oY<6eO!epmUkgk78AZJAJxg;Z z2p^8$`78UE4|pciUsx$*YV_Vx64lZg;ihF`R2t zDqQTkXr15$+xtuBRImQ*Kgn$AWbMk#%?C4&v1fj(+u%`C?Cf8E=}p%W8GlALhPj3Y Vd^e{uC;^iTgQu&X%Q~loCIFgP-n9S# delta 632 zcmbQpwVq3{Gr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YM>i8!b5}Q4Lkpl17dJ;!b0bF!H%C_& z14~Oc3)jh22t}?q6>Vcmh{3SV!r9Ey(ZbZx$;s5j!p%}ip|~U{HO(p|Ke;qFHLt|e z#a5{zw?Ho?GsOx+FS=8Un4Rhu2Tby0U|@{*ba4!+xRvzh|9^Ytl?@Xo3a)r-uYB^? z1s!3=Bu2JZjrqc zeBBLxKo&&0&U)Z2p8 zHVMkK%(t(%d-?RK>X(Oy*}D$=Iyf{W-rkn`zM``7Y@*}IrZo?Mh81)-=qcS^lz)Gp zVZ#~5neB6$F6uh_KT?TqnX~KS+2lj%l1mdlM11@HK7LhHTb`V-#-kU{jGq|gRj@wZ z;M-eaY-(95t2u4&o=yyL{eS{8=0jI-OH6u3=ENJ&eJlNAwR(R0z%ZE<|Y za5lPq?J~Bj=709r{Y~0i|G$pYK=dcmQP-1Od1jQyGwa@3vtq@K!^e)XtvYYV_)&Y; zwJR@j1vnL+EnK7;-|&NV9UH$FcUO#b!PY$tOgs!C?Wcasoh3OFn3xzmUHx3vIVCg! E0A?BN(EtDd diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_off_holo.9.png index 3f2fc0002dfa974a4d942095883e0c4955de4ca3..1fbb15ea5a36494465531f23b650af0a4de183f7 100644 GIT binary patch delta 814 zcmaFM^_W|+Gr-TCmrII^fq{Y7)59eQNV@~EJO>+)+?so#b)({6Mg=2ta|1_XOGgt! zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPA*R7E~c)o7RKg=hAwW7E-vPdPEID~ zuEwU8&TdANs}PD@a4Ooyln`TV>|${!|T=hQIdt4(oOB<5s4w{c=Zrgyfq^J%|N>GqfO=Em>7J(uy> z?|oC+4UZKlOiSJ4ESYQ^)>jag>UNwjiHGsI{lh62CmjfMP_M}8{Nq-?Ja@umR=>3= z0f!WH|1mAEb1}}C$9B%Jv6DrFjs3cW>4oEtysw_KvOQ?jnc(>~cXQb_g%;re-jMr2 z!X+19mb^=etXp0gze36phI@ zQTX?&GH$cUZ}DS3AD(lqn!KWvz5eh7m4XtB4{J-_7u?_9a;T&EuxjE&wFgHIMxNC@ z#?slL?mj{AvesTrrPPUUPkyv~K7Z+{%LnY*&04C9O@E)s+J5_dTjHH3wG;o=#dlRp z-q@zg%hr77VaBX)E*nGc*mZpDkU73>=Hrh)#F8de-_VqHtxNjw>mvV`_9lPL+)dfS z^;7%Zlq)S{!j@gmTzoYvbKUECy3nD mbnU%y;GFr(jrW;&7!qq9PS`N#&u(BAVDNPHb6Mw<&;$U%6Hy%i delta 695 zcmaFN{gz9yGr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YMh(bdJk z($dYsb#fI#ks(e++n5q!Fs!q1HnViJFm-ftGBvSqvs6+jE(uCavr5TNF3nBNEAe!( zRjSA>&`ZfovBJ=c?$jb?r}{;6j_5NmFwXUKaSW-rbtmj>RYemEAmc9<68GQ z-*?pTsQNgedLc{I%j73F+&?IIRBJww{l(WBldXF&!_#BcMq_WKG*6w*Oby8yv21tW z-~KC;KJE19Id8ILjvw4K=XRy6a~a>diH9Ru{_X61GwILVy$==im}S`&^3J5yZ#|v3JC;jsN zQ=qCm)xdL7_~}iz0!6M~^Sx|hB*EjhNhf~o5|PvTI%3^T9A#U~FQynNb~IN!&TtQ=1%KTpWQpv-t_kCih1gbG%iWr z_r1KOsCoayUJ=*K}E(DPN~ zgp)#*jiK-6`#EMC=O29_@Ba468`&pJf8I2x#6Ng{ThAujd_}F~w!3@kSR@!sf4+X1 U^ERLtq}_p7o`VfYZq2>Wx>4~jqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}ICnr|}V;2Kg3uALbLl-wk7Z-C!Cnpng zS7TF4XE&qCRd7YlZa5WfV@ilIHg+*LGzM8Fq<+|;}hPZwLI zirfOdl*|+>f=(@BcB!+VK=fjQXI#WAGf)|;ra*}{$@^~RfbpUg`R&d%1pB__H> zRCKQhOTJd!9aonR{vULj*!BN0%CT-#_piD%S>D{wIRUq<{PSZLj(Jy}Tc5AP$18*hLA@@S6Rqy7Ew_kK;S_+Pub<=!3( zeT}xx4O|t*g?pbrR4+>|keGMeXGT5u-;!vjd;70Azxtf@Co4bXyg>F24cBwCxaDf| ztm}WM?74GpiOAy%oE5!Qu`68sj;aX6t}HL&IcFB!F!5Kx#yi0)c~*Mx9g~>5JHbrY zQm#E>#_qRwJ}nH5zB*avW%O2&^s{-Ex@lP&HlpfD2OlpmVOV%D=1N7g2(u!C3kS#Z z`fXF@=;lW%aP~Yr#?~NsT<|>4GFFwf6O=!xa}}^3ILW&Bd26JXawOlfJL{HJZ(H>^ zCaPOS?H=2N7aVTNZl73O`=Saq+1`84JF9ZYd5>I_|{1t6X=34Clj@is|(U9QU%e0Fpmgv?7K5HGqh46K+!Zd^())2xW5W5{4Zqaes7ziea(O4B%d?( z+3_d(-g;ZxpW~R%uTXyXN2rm`=dVf`6E{luGzndqp0wg(Lt4?#ots={vF*@vUo3c_ zmH$#1*Mo@@>)oxYFK%Qg@%x!@Qb+aIlXW)^^2c6#xl(zq`Q_S^r(3=5Xs$bD{)*+= z+WE$I-$Uj{Rf*5vynpNMcW31EjNW=!9W#!P-YW4*Xwglntzy1=tM^^DnfA&%Zp&|L zy^mJM?)z*tR1el~Dx2*bcWv%ef6b|j3g1gTe~DWM4flEvM& delta 714 zcmZ3?*TAjV8Q|y6%O%Cdz`(%k>ERLtq@{saoP!NW{t`3M+o<@LQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9yqnnAVxtp=8p#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd!uHincK &xw;cRBZ7u~5v%ue+dGj)N!WZdBC;uunK>&~=|{)Zeyj@|#-AhjT%lXsnp zTGpd?uY4XgaWi*M?o=%NxPQXMvr`+7yhu9q=2hMzHMKQayk@#0+*`iJGDqk+ICUTS zaN_P$)i1wg<=21j+p&)OGn*odeDTRU=L}r<7Uvxk|-Uq zOdGlNJYTLZ?48%zmT2?j^Ut1TnG0(tr%Jy1S`|EL$=`)j1^OYr@I%oWB z?ftWkLjIEu@vY%zpCGW!(4XO8zopr0AVm0`Tzg` diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_holo.9.png index b3ac506addd8d7ce2fa12a8c4853eba255cfc06a..f574a38c95a3ae226152345a9bc2a6618f64ffa6 100644 GIT binary patch delta 741 zcmZ31gwLrY5&XGcd%O9KlxLrZfL!^w6`G73gcE+#Gp25znv#^#2GE^dx4F6NF-PA2BA z#-^6eZbp-<5Qdhk=3dw5N+>NX4xu;og3S4Fr1cPT9s15WF$ruvN^$SE@xk zDtrws0@ZwtM}#_k^)CA6T@d9q(+P@N=^N$PBN-knvUA(#g_*4tmpnR+zkN=BR_SE% zJS=M|$QRWhcA)v#RKR@crN5!3dg{>m*qrJarM8bU19 zLUZzCEv^Yp)}6DGQ}@Y@j;zaBoWCyRq;o1o>^l%t6Lyes_UR+K%r71H-`_viZ@FFa z8=skXdXGh~zg{iJ*Z%#(ug=L6F2)I`FOCuq@m1I>-G6+#>$lCf-`ce$Ry04k#St&e zZCX^C{DRW%Q^pc5a;A)eJeybTZ=SogF z9mU-}xAvlClag&iLrka5+2+@~{4I|d`1^HfT=z0!Z$9`n#pq+=)#s;zj%|x?%rbE} z`Nv>_`=*pxT79{(LiVDb-zIhN9=Wq%Z)*0&-WAU*7Vp|{=3UDizrx-lpZD1GWhwNY znzH@Tw3lyo?K!)snYA`B^QnYOxBYK!<^M}&s;vCb`dRk?!`UhO_a-NLv;tEugQu&X J%Q~loCIA71BccER delta 626 zcmbQuy^>3@Gr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YM>iK!Gh;VbLkpl17dJ;!b0bF!H%C_& z14~Oc3)jh22t}?q6>Vcmh{3SV!r9Ey(ZbZx$;s5j!p%}ip|~U{HO(p|Ke;qFHLt|e z#a5{zw?Ho?GsOx+FS=8Un4Rh`)*Mh_U|@{&ba4!+xRvzh|9^Ytl?@Xo3a)r-uYB^? z1s!3=Bu2JZjrqc z#}=cP1t#rrs8) z)>u*d*YEH7FIHWBt+9!N#o?FZvxYOyV(E_0{`~&#|Kjp;|AcJ~4FW$`K00j8Ho;Qi z^Mqi7U8yfT=cIH`2sYnU>GMNpu?Uac=>|cs(9;*rCNsIp+^uPgImWv_L1x=Z!Te=v z%hxF%-BfO4W8)ORuZB_Fatgx&%Y@GpWX_d$2=$yfb7uA3yK^Le{HV~}#IZy^h3~?i z(i>S>0kwz!zrL=2?f3Wh(;0#%>IcM3i8+)+?so#b)({6Mg=2ta|1_XOGgt! zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOe7AZjNrQ7RKg=hAwW7E-vPdPEID~ zuEwU8&TdANs}PD@aVpxzln`TV>|$VN$4hp`WTlZNEdhB*b> zy10(G?Z00iu{P}e}jWF{=Nm!O?Xlrs{;1Qf$`dn|r?gT^Ho|ZF00+v7gRq zr493}XWY|1k$9o3Aa>#<|0g@vMGL3B{I11WwmSL2$33rhZhIx8In&**uS;g5?*!#T zMHzn1@4}`}E?zzNfQgdF({-z!r1j()&P|>>;fvMr^OvW*OWGo-UKH}|@wL}q^Iw1c zC0j2Ru>DAZ1<#bf;l_z)`yNlYm{C$ZNvijla$x?+a6)=yLs3B_whHk#kT(5u=o1GrzQfj z_w0Vn=Htq+IQIFVAd5HKoW~Pnds{aherPaZbjV|S4T%zLkpl17dJ;!b0bF!ppc7! zrKOvN>*OkkA{SFL6EmEOwlO8dU|472Y-Z_bVe07QWNKpJW~ro5ToRO;W|fkkT$-Dj zSK{ent5lI&pqG-FVuhg>-Kj;)PW2+pW=0GQjB`9)978H@CH?vT-=2A8!^DY#E8f~G zpZs+}N0>2*k?mC@zr!E4*{NDQTbRooSh%Msb15~5ZT|P?r!l(+JM+#*A`<_EB(7xN zym@mu!^`^tpW_efJZ2ZXzrX(c{Vkc+0^EiHV7+ zw*{&-R@DCW`+NS2RaakYY~o;X_~rPl;f%9by5qAyzrXvxxV+pyVOv9kz|WPB4qLNL zuvGXwA=qG7>I=^~Dcuu-&39G${Lon}!XtOOLC`Do^o6s@Os+C_YuaLt@vcvh*|t(J zf0^6**A6r1%$&*T)BNP$zrV*D*4wG1+_aXHldE5-AHT1mTc+f|sZ*yOB;<2Gm$#^x z^YHuo`w_ZKvzX2JPd@C?IC$dBnLW4eo}Jm)-#>lP1Ll|PGnq~DWw*_e3c3H`|F5sz zU;q96t$HBj$?u1U*#jfGegT8!@agILlK1x4_dgPz;Lpm+DtYASQOSzRO2;;5?!w0F z4&TyTU60C{S(}+nU<-KpuWOyDX_d4KlgOQrEl;=w_8++Vz%kQtVm9--Y2pqIj10mb XULJb>Xm2(!DKdDv`njxgN@xNA1)US| diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_on_holo.9.png index 7c80300e9e0c9431f799e1d240217ff2dfd99ba6..541cf5c4a370db0de873e7bbe9ddfe32f539bc6f 100644 GIT binary patch delta 1234 zcmey))xxjX8Q|y6%O%Cdz`(%k>ERLtq}_p7o`VfYZq2>Wx>4~jqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}ICl@Dk7c(PQ3uALbLl-wk7Z-C!Cnpng zS7TF4XE&qCRR~3fI2CPUN{BHwb}=_J23cTag3UT5h2oN+)HJJ<{N&Qy)VvZ;7h9!@ z+ycFn%oHnvPAy_~sy}znUxR^xd5fouV@SoVH&J)JMFK_k#~W|n{Z3`wva~KyNk=yU zk4ayG_Ok8$s^IeFo;Ux#2>(Er3-bj+t~lGW?fo`I)l*T?2l`mJlz5eFRxjWUn z%k4{I%8!@WXI!@}n6Y#7^qH3XtIz$MTb-u(TxN>1Ld&BtnQ2x0l^Rd$=YG2H+;h49$epvs=kv?!V`lxnRC{Y%fcM&_#ThwUUw8aev#fd=dF9u~ zUr+W)Z)Cb$V_9$~C)7aD{^t$T4+&FZ{(rq$zAr9m`RemErC<9>|9|Sd|9;Pm?j4_e zA1WP)ytVto+XDes@0b`H3g3#Im=csA!4~mj9dBgGzm4fEP9B}?OP9A6uL@va=IqC$ z{9UVltJcoeRFSMhdh72peqmXv$Xl>2VY|=l1&XdV>}Cl!Do-!k!(_ag@#rQ6mDzza zKl{2IP?79-a&pu2m))Uk%VXvq$W36LpuoF`Beb>asiO+>B`asHTcs_x7%U=Fx4gQs zrjk!Pi|2@$nvLemm}{I%uUTI5-cYeh>D2`X0ftZ!&iXE{%MDLmm=c#;Y~Tq@S2e2& zSXt_4H9aAZbGJ@l;#iVfOiXOFjZAZl3KkChVe=_Ob z;)!+%DvTa8CHb}5OXM~kYl-!i3!d@DIp6c?-?!K8c<;}uzfpasVr7O+(6kFp3C+tZ zjM&aSS@!A8+6tHYTZ(TdmgWAOw{FhnmAbnGw7{fW;P%nI==Hd*oQ59iO{$+Eu^jJDjI;B}&??%c_zva2ugu3vD= zSJQaym&1VvHqN=q@l-8wj*_^A&!4nxm6VrR>u)}?&-&>py_(5jn)QFNtPSB?+H)>j zlteHc3*H=2!RvKVLMYiKGOPDYxM7f`qp#1=T^DS9n6!??96ac?xpGIuxs_55|5vu` z6)M_ivM)L}Q1P&i_RrTMB8OKW%dXMZzkY19+%4(bKh;mfGqN#!+1uPERLtq@{saoP!NW{t`3M+o<@LQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9yqnnGVnTfHhp#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd!uHincK &xw;cRBZ7u~5v%ue--w!Z(wz`(fN)5S5Q;?|w8vtEZC1m>OHrrGjuqSn`_ zk7_^o7QJxf5&bC1BDm)Tcg4Gl%Qr-LAD#Wcn&aM)xU07UZeO@`C1oyW=;fulCM#X7 zHdxP8{aicy=E-vgiYz`_J%%O1IZ5`NIgIX7%hY*g-XA^@_Tc@K&Sf6=BbIP>F0Q|u z_g&(v-K?7e57tY(S{wu~MIU>g~hQolIYMNzTxmd~tJi<>M0u zWjmH-w%XPCe%$}W;@rX1jUrtgEq^%MKm2(uxc}jVUHLR>d4c$jTc5YQ z)_8Cu(4Sq^`0>Xbd6Cn~pPpEhW%lI!ySg`@eyZKbE!7ZwR8g_7cXMNI;koYH(b5xq z)SO!T|8TN@^g66%dUf`c+}jtkwpMjTZn<3~w^!=9lk}}el0MJnq8>5Y9X*~O5y2&t z!&|bCPb%8&7|Vq{Us>YUDqi%}o36cLmDksvyzkp*hGp$!k6cvXKk>++k4CE=O1@ao hWYqI&&ps9jhUIcEc6QEg{s~N#44$rjF6*2UngBWcA`<`r diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_normal_holo.9.png index 737de397b4871d5b36ea031b6ec67e826849c52f..0ad025c90c60cb4478cab32f179d9f944f38a47f 100644 GIT binary patch delta 699 zcmZ3<^^r@lGr-TCmrII^fq{Y7)59eQNXr4S4F?;LEDYhAzftioqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}2LsN4jCsQX^3rk}|Ll-wk7Z-C!Cnpng zS7TF4XE&qCRR~3nI2CPUN{BJGFtY$^cXhHbGQnn@l0tDwP->c0N`7)_ZfahMr;Dvp zMQ(v!N@j``L8lfmJJsjOgg;rJGi*AWAeT%)AuBX#0?&l+48h^gWc z4A;9;%{aZOqT5J)M)VFN48SA#IW_Q|ZRyM&!$G?(h_xl;I#kKw#);GNm0^}h@J&JL@6mK8Kv zXZmS&=BnODq7O3n#@)C05Vkn++sCBccjJ;+OE-3Fek)9guv~rqvdPzDQ&N8_Z(DsV zxpD9FT*Khdb_5I6o&u+ delta 626 zcmey!wUSG*Gr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YM>i8!b5|!Vcmh{3SV!r9Ey(ZbZx$;s5j!p%}ip|~U{HO(p|Ke;qFHLt|e z#a5{zw?Ho?GsOx+FS=8Un4RjSMO6717#JfxT^vIyZrz!7(W}Klq%FN9+;NI;=FPm; zxTDt0idAh2O?g#4d*A4868Kcel&|gV%yKcn+MOq@{VuC}bQ1rW9%GCD%Z<~Y$=uqe zE15MVXvVcm2R~cf(3~P{G`H6A=N&d{_4@Sn5odp$6Vhfle|poN)^9?)Rtr9=f4||1 z|Eg7X4!`fdKE8hgYnW@`oz}z(Sr$gmNiH)|BCnnLyhr+aX{zt#YkTW-HtJt3t$q6Y zpN4?cId|DB$;Z=kmS;+7pWgKDripK2#H?j3r2+k46XcHV{*fT?`tF{2Tlmec{p05` zD+!WVum13u?3?p9tl#aJ_Az5`;roSRou$s@37zX+hs}F_cdGF*hvk=(?dIg^EY>;Q z-}hMHuz_1+f!(Wyd!M&?^nOeW483a8wW#{TB5sNJu0s#r9Al{3m|MM8gX@^_p1byZ zQY(MTJmHyM?c~AtG&lUv=82A-LS?CO_DnnsTlSqkm}IMK1WZN@p00i_>zopr0EIyA AdH?_b diff --git a/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_light_pressed_holo.9.png index 3dcd8323d67c35a27678f0702a4b68999fc4392a..c0403f0bdfe11e486cc8ad4cd401f97bf58ab627 100644 GIT binary patch delta 800 zcmZ3(b(LGOGr-TCmrII^fq{Y7)59eQNXr4S4F?;LEDYhAzftioqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}ICnr|}V`pbq3uALbLl-wk7Z-C!Cnpng zS7TF4XE&qCRR~2+I2CPUN{BHwb}=_J23cTag3UT5h2oN+)HJJ<{N&Qy)VvZ;7h9!@ z+ycFn%oHnvPAy_~s(*Vb;V=UO6RW3-V@SoVH#7J99|{mS9xwe?;ew00vJX$oNyn_D zq(><+J~1UlMUyVNs>}LZ@e~&qp8JFS5C5D96)qk>KOQz=wRR>x(~WiWMS>shb&rlZ z_$0PyXWQ<3&+qR2#}R&XTdq)ui0i?Z+k{@k>`yp+;{1j>{psuPJF(U?Pia2+Q)fj} zYY0;#V@%`8Ne`cJa%)twG4Jwr5;>4xRUf>#?NiaJo^NhSC-$CVIlQoS!*V50>z@3X z1(q&X%@*=sVEeZE>`DzbWA50dV-}Sw*5Bav<6f|RS)_gI-E%3|CePUsp5b^sSbc-^ zg-kb}ZQNnDTVC92lyjKeWbw+{rTz`;o5u^5ta_38z?9}Er0ue~siQ&kq?oR)xr9uzWNwm+%N$Ub-9zuRHu z=?b}h@t41bTsCbi$d_;dZa=6{qq?X2dD`lbCzTrLLFm{z-PzwW(y zdf->VHFLJWOdzc~^;BS9FX0zN)lF z?-u*8B_B-L4bGT`zS_Mi^Zi}zE{Cjyh%>i2`;tOJp6nC8cYKXu9mj=za~^*+Ji@yC z@MYE)d*T(gyt)@0pKwk!>EE;F>+2sd<{R1T&(UXOV@O}KE${A?ElR*d&*16m=d#Wz Gp$Pym>^;T+ delta 629 zcmcc0y@pG%Gr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YMh(bdJk z($dYsb#fI#ktI$=+n5q!Fs!q1HnViJFm-ftGBvSqvs6+jE(uCavr5TNF3nBNEAe!( zRjSA>&`ZfovBJ=c?$jb?r+S9Xxlb4v7-KwL978H@CH?vT-=2A8!^DY#E8f~GpZs+} zN0>2*k?mC@zr!E4*{NDQTbRooSh%Msb15~5ZT|P?r!l(+JM+#*A`<_EB(7xNym@mu z!^`^tpW_efJZ2ZXzrX&xec7LqUl$jvOWM``^4aEFQ?uvMwQJ8J!=^1e6B83tZwpjw ztf>9#_xJo43!9H?Y~o;X_~rPl;f%9by5qAyzrXvxc)dM8VcV81Iya};*8ZBon8J6$ z=7~s8o@AFA5KPi_GGjh$Q!_1)i>*KP0LRi*sV|-xHY)Yy**WVyZVNZyyM3j@JUBSZ zQt|Y?!h!;hzdt@Q$2`%xnsC>QQ z>Xik*+Wuc(AHU}N`}_Kg%ar05?9kXbjq&rl>; zl^BoMglu`jEwKN<)d!B5juW$)*G&_5XkcWRV|#j)(y6mFVdQ&MBb@0My&- A_W%F@ diff --git a/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_popup_selected_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..4a77ffb97f736ea09a3562d019124f21f63afb17 GIT binary patch literal 1018 zcmbVLJ#W)M7&a7zQmImrSYSH2f&qx_vz<7$YAVN0Xe3;!G!hvYxY(D*YV9-UD{(tj zY;635iVX>|BL+YW2#JrKKfwqCQaLAaVTc&8WZ#G1=Xsy^>&e#U?d7E_OM)OQcQ(8( zUl;g$ezC&8pI`lW&X>!q)o0se$i|3b!3oI#gHDWga2KQS;NeHS#zDiV*JpkIjuntt zLWPZ#$08EAs#?7PdHA~PIHsvI+R!v~SaQt6>agy#T%*})m>Ps$+wnZZX*PAErPWNg zt(MqMk};G7xbz!wzcZ}!Ppsuqj2NLkLiWlI*cuT=vJpvvyIli53ZkSq7v-5o>tPx_ z!eN_|7)6EVieu&kv`=gA+b6 zl#j-x`_EqRvAW*zoL>HI@blzkePQM3!nKumPb(LX(qrMqhjX7$82 VzF$0E{36g|8au5`?`8AB8U}fi7AzZCsS=07?{&CLn2Bde0{8v^Ko2Tt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdpzyaD(%Tp#cR9GX09g0)0b01O41wkiWpHi%Wu15zfG>x;Uh=AXPso zwK%`DC>aHCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtAm6C(oyGe<{LR|`vHLqiugM;8}! zM<*u}b5~>O)SYT3dzsUfu(?ejQo=P z;*9(P1?ON>1>eNv%sdbu6g?2%x}+9mmZhe+73JqDfWy}+6N~-E7G@Se2fI317@1)A zH$-m=Ibo&`bc{YIaUdlYm=G`pf|&5659GizPih`8#}omx#-ASrh71ghN}eu`Ar-gY zgn8#5GT`ak{plKmVP|{GkzQr@JnK)Z%kRuzcp$(!j`dP}m;D_*F+ zPxhqR(kTi`sx1mPQn@oj|A?jvD-`%!s|GIo5$ZBe+&@I8?|`5Mllub>uh;BinHjYg zXKlE*^_rw`&t0Ay{^6TVW|zGSQ2XArz~=_5?&a;S`+nZ)fAsq6U1hFilRv7<$oef$ zlc-(4VdeeTb$iOJ3I(UJrmu3`#qs=C+h&(jPpfv%X6)uW-Wrm{*P46ipR&g#S6R#d z$G=ADCh7dCRm>4jv{@^W-Ed`Vf;JZKqLygANhwjG7CqbomdK II;Vst06Pb=a{vGU literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/key_hint_at_holo.9.png b/java/res/drawable-mdpi/key_hint_at_holo.9.png index 2b8520a92e487e9488921e0bf5b31f854c8b9677..54ec524bea6b75c774c37bc7d9dd562833bc5d40 100644 GIT binary patch delta 823 zcmcc0`G#AuGr-TCmrII^fq{Y7)59eQNJ{{*3Fq<+|;}hPZwLI zirfOdl*|+>f=(@BcB;Rh=HSf0z$D}8;uunK>r7~O-fRPrqc;LLe1l4Z z?xmd7ZgNwmzrFkThTu{a#n_2yoRUYjp5Oa?PPXydt;Z!U&wFmTr~ZpTS=v1Y=FZ>u z4kQai%@Uo%bl_XS%D12M7_J2`Hg~9HD3h|a(N)q+_4s)3oqF=p^Oawp*8kFa&t%D# zU>5(UPOLIeMTGr$W>m=gplt~ZyJq-Zd#rNNSAd~|c}vCl`k;T4o(tC$pWFQMht2lc z74QCAojy19TH>ylqhItlXMZ&mpZR9L?K!m*LbL1l?yRe$lGo&8K;vgU*v^?#1%*sXe1)srLGJoA8CYUo6sJqM(!_`h}C zkkgasc5DsNatk~0>EGwvR~a5|g}N5zyEK+IeLJ~9+(A3_%fUxF=beS${BB*Eu-!9w za&F9+kwd}3fVa@1kAzy0E z{JZKm`NYV~aZ8e}O?Z4yiCa0t@+3)5a4=exk>o7%&sHx+oac)%TL(x z^X}WT%d{s{HEeAOtL@_|K5%f}y3Pr<-~V2^eXmY{WpBe9)0<^C@BO(En7A&$*;nCG z$<||z;3b*pfY|pHDm|9u>eYM$Pgg&ebxsLQ0Pwe25C8xG delta 542 zcmaFEeU($OGr-TCmrII^fq{Y7)59eQNQ(op1P2?C6s$=r-KhANQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9ylaYb5p|hi_p#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd$6vincK &xw;cRBZ7u~5v%ue-u;i`oU42-OvE{-7;x2}X9st2We~PE>>nQmHIJEvwe~HZ8 zY3v4um&8)$y|218Tcb!IlEZtEwE=_pEbn*gH%@%rZoKe#eGr$w@%w)ZRfOgp3eta3 z)1f-Q*~2>Qj7#k0Co9&QUs}KLs8@w1*cW<<%}@Gh8hiF*F&9(m6KpSU zl}Pp8`7q1d?y`NRr{fx#?yH+pd<=K+DewGwIJ#c{b9lk5-t7#`4DD>m=a*b8U}fi7AzZCsS=07?{&CLn2Bde0{8v^Ko2Tt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdpzyaD(%Tp#cR9GX09g0)0b01O41wkiWpHi%Wu15zfG>x;Uh=AXPso zwK%`DC>aHCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtAmR|7W}Lkn{gR|`uwLqiugM;8}! zM<*u}b5~>O)SYT3dzsUfu(?ejQo=P z;*9(P1?ON>1>eNv%sdbu6g?2%x}+9mmZhe+73JqDfWy}+6N~-Ej%F4>2fI317@1)A zH$-m=Ibo&`bc{YIaUdlYm=G`pf|&5659GizPih`8#}omxhUAK=2@DKO(>+}rLn>}< z3EN$C*+Jy$I+f$+Z?w!j@+|bB-1i^MhuC+t%YEOWE-z5^gQ4n@@UIKAyWE$|nDEhh zQ>y2k&5^0s4sA+RyESum=$75z@7O-Sr@dK$!{k`Rf=sEypJVy;(w8kY5U{u&B**q| ziQ`!zho*&--%dz9;q!E_x0&+n$(7ofUIMifb*3wH7~U)mX)a~BkZ#`d zz0JRqm+)rF>t8nyH~$s>$+cZlja8$0(!KescNx##yR5d<#j}0a!!`jPhpC_56|M|8 zpvyMNh*4m^D zWcIDw&Pc7DaK4l`_J3RY{qNGA40&DWzrTJYZ)H)&qOQ_e3fwvkgPo1hkY=G*(zZNKUsR{FCtbjt0Ex~{ch#=<-As#J{lPWxmE z9@npnC_7=gNcWVFuxXP?Sd_;b-Xn_=CE^W(m&v>fJvA*;;`j-Th6b%i`+PsoJhMfx z^ZvxDGa(J3r3}396dMm&DHPhgo^XTe(7#8DC0@2`;*BX}>f$ zS(78nF~BwR_Qb2!A*_B^x&CHkNe?=1*SPuu3eUO}22`c(MUHx3vIVCg!03LdADgXcg literal 362 zcmV-w0hRuVP)4^SrSmv|1^bodHGjq$dV5 zl0R(olO#W)Bq}N@Dk`Wb!bBLaFlAX@vMl>#=Xp+5RS{z3oFk3%9qSd zIF9ar!$=YZ_)suj?`CP=CL0PS-Bro#OsL?UE#u{9W=;ho3A8n7UDvj4TiY}ZVcp@_ z>AA!l&(X3h?|-yqKp&OC+8p{h;5$^9q9~4qVWISft0L{Pec#&`b7e3m#yiZ@{HSR6 z2A+e%pk?=UU7eV4PJD!Ctj)G<;b7v=RfIVs44ttut<807*qo IM6N<$f}p9KkN^Mx diff --git a/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_holo.9.png index 7230fb92a7d35371daa538a622e481b2b64cebe5..0e2d3545ec7f5688a9591a8ee53fb55287dd6c5b 100644 GIT binary patch delta 534 zcmeyzd6rYLGr-TCmrII^fq{Y7)59eQNJ{{*3|$fj|ZZF2#nL>uS5rIr!Z=y&v8*v8~yXc0*~uXhHO? z!(6)`uVJ!OU@CZ@mGIGbuXM}<-97D;r5$-Lt;v(Y~+y%d_T`QPGd+rQ{L)0+oRCxHRIwpB5cKCe>X&( zzIn1ZBkO;dmYCcESE&Qh3=g`lNt?T6e^WicV00w1`OrE^c3@C2c)I$ztaD0e0sz`C BylDUc delta 583 zcmX@h`HxevGr-TCmrII^fq{Y7)59eQNQ(op1P2?C6s$=r-KhANQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9ylcBk*fw`-zp#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd!K5incK &xw;cRBZ7u~5v%ue-R-kWJLFfi(Qx;TbZ+}acBnAc*!v*qTJ`#0}@DYyN^ zQWv1Yx2N&&x+4qQbB_wnT2g4bW|5g{q+r&`76HR~7Rl{%i;tY?>xj7L9o0JVCBy0$ z4#A%^=JwSm*40EMJrg}rFSD&!vQmU~)!NbuR&fVyy~1Lq6};Daz6!@2u-hwL-?O_& zFMCzytmpgQFJJdM?r+Rv>-VhU4VP`sADT5Sb!US5(F2t-$F=kdiTlx;*(6a z`_S9f=zqCna_81E*7BW>L9S2Q5-Z|Mxi!-^_iu~z2;}?3xsK81u=xM^zM_GXDr2vw z>mS{|EjPaFiOkjSZ=x8S6q^qmz)aIn~BgXX^czr{P$uL)AP621XxG7srr_TUWxo^9~sZe7(UU_NSSpdz~c%`vZoUW$iCh zs~Y4Qn77>S>JN$H&=D|Pm;PjmhG@#FBO-3IQj*jwzwI%f++gU&&>-l zkGNiI`sxP<-Lp1ne%j64ruo|Rb>nWki2KpkciI?SYS!mJe`amHUZcXvIkFd4-4{RI zd9BK)!)vb%&#&`&e&W6pOPn$yZWO#`l{w^4aSdPn@!PcIQm!#r2DJ?~V)MY3N}1z&2se&C~r8 fMFncO4H!bP0l+XkK84dl5 delta 1188 zcmbQkwUJM+Gr-TCmrII^fq{Y7)59eQNGk)e3I`jIWWLk<5J)i=2e~^jtUD+3a--V~ zMg=!>b2mdna}xt|BLg!FLqiK^LlYNcQ#T6>6K4Z6N2kelOfm{)PKM^L2Ij7=h8932 zE^dyd=0=VdZjP=l29}m?7Os=45Q$_i>*>cZh>A(W{MStUUa7xF+0_Nd2gl#^rd2nYeY$Kep*R+Vo@rC zdr@LRMrN{eeqLE>QAui%f`(^aNotN}dHXL(V8Hlzx;TbZ%y}~7ymywP$nob{-wrRo z9`CtR=#Ix~p=ee`)?KgUU$hIxZr5wgc)BWd%8hdq+IuvfP>J}}| zyZfs4dHtE$g5A|yuWx=`y{A#1r~KWWp9SY;TBhqwOr7a4IkmZOfzeE!gXt^0mIl4m z_RQRKQRZLYrRx1wJWu9Eu?q9B{nwMY7xivgdpmnkRh8G&^UtGYjJ4!{?@zEh@?t-0 zu-4QQKYv!5E_?Oz>C>mD4J`I6p85RQ*ieFpDaS-_Zdc3C`k$2#R~uA(FcUrYwv0PD zIeAHhj+y+kmoGbW^74fC#+?_x(#+!{yP#~D8J}v`q6w#;&f+(=v-6u_`o)JMA;qZK z$7ilgkg>$i#b3RA`E%p$-PXmGm6nswraj%g zd-w5|FJHQ+scwm4Kk%Y{pLE+XwgVlvZ{NOj^k{2~fw{T)?}r5y^2c%(=!qP7VcPie z-8-@C*RCyDyjc0=zkhN2_U*ejf7Yx^GHtsKJS>QqHhsEtdwaWL%g$Z9tY*xaW7A;B z&YyEuhuI)WX(9)ck3iyq*l32$tjT3(6W^5W-mzhWK+CN5Lv!ZN&Gq&1$>6JZE}wig z%k=QX_xEq!{AfHwv?21Rfbso(vo(5d=9ry5cdjaEu&Hs!rM-Li zUTr;S`od~Ib8~Ij`3o+byH^(H<>gfr78XhfEuG_|W?XRgn(|(%pM7aIfl)6D+nu@3Bv#(!8^XD+-WX4_p;I)45 zGJoxQTMg^dfHJODr-yeRWoYWW+PGsqck|mHKO(OB?vd|w`Ef32O}*#brkdnr=C$5y zW3Kz&`1Sku$rmp)uAVs2ktDBkS%8iE(=E%Gxb@#s|o?QLxu2W0$#neYF9W`-ThABo;c4!#QH OGI+ZBxvX|$mYro#l zcJlM~{)o&CLF#?3p{eVdPq8xSzR$G}Sba3&tDV$^XP2z6n!c@+*Ux-l{9@&MoezRL zUrQ7$Ogneti`0XI=|vR`i%lF17-k$=y*Z-egZ=@AKF(=NpFRxu2ux25p00i_>zoo8 Fn*c*P^K$?I delta 698 zcmdnQ^?^&VGr-TCmrII^fq{Y7)59eQNQ(op1P2?C6s$=r-KhANQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9ylc9@|ft#tTp#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd!81incK &xw;cRBZ7u~5v%ue;uQvF967#J6Lx;TbZ+}abm*YB`_z_wm#mZ=j?O%e=s zdUYv%0e?VeFMC2tdfUS2BN7KESoU97=^ScU@^VsmL+=XaWY4VP@VTnOcht6Us>ka2 zJvv{0|8Gn7TFK`z#>Xt~UDs^VN$2fI;O#o%eYfOK_w%!tgG5%y<*DBC+otAPuT@^u zDXOu3@8T5!{TaOpTqV6?=k=`}@;=^b*#1J=S)QqWV(e^ITJ*ga>#lE|cm6r&n)8nS1{aU+WtGvDY0o@eE$SM$ z|N3j&^Q*z)NrEmDgnsPe+EIKa$Z}hURDYH%qw%UK zJl|GsQWLWFDil7LV^+QZ2<*yUf#{!YC+b80&G zS8U}fi7AzZCsS=07?{&CLn2Bde0{8v^Ko2Tt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdpzyaD(%Tp#cR9GX09g0)0b01O41wkiWpHi%Wu15zfG>x;Uh=AXPso zwK%`DC>aHCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$CpSwYOH)f%3uALbLl-wk7Z-C! zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNtE%55KaxO|uEXgkl$-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf zZwfhKrVn(CJ}7Y@B^HG-{U#fJ%)Xs_ltG9of8tU*>OZ@nn>Ivj8b4IXt^G@^liD}39)6#rz@R9 zuSO-B-)~CgyU_dSAYa?ZrEBjWDn9Q0?tAggH>GvamlN|QnJ=_CARe?y=X$F^t%UR@ z6-i^ozJyp;{`SWoJ?CYbK040jZ6vg#FhJ)@;+pes&FA00eRaP_FyjjbwuY74f2P&U z`9CLM+WZWw?pe#4;?6yK6l%V%;Z5-Ol1X0zZr#tmWE?if>ckH9>%HFomLCesBebr) zu&a7;WM#_H($t-wX%b@9W*J893&EFOPe%_I}^;8?|@wm-)ntL5z$6DenoX8yWxTKqfrhYp`- z-Mg~MYs&8)sXJHtn-{RDyqfXSa{aHmQ-`HKxTr;}=F;{O)BU9Q@2a_FC9|I39QCvV jm*<@57gQ1WFP6X{$hW!ka-gOwsLb?q^>bP0l+XkKJwgxH literal 671 zcmV;Q0$}}#P)LS6oz$1jmE6OK^X!TTP=uKI4M-nLPV`B1#Lpw6e6;n&6-NoLJ<^2`vt+$&qf@- z%f&yiKOz6%?m6xiZZxnPH{&MYffp|0;C(pfJ!g(e^*e~_9OpR4InJ>SH6sqhzaVb! zy<>uWI2gQ0L!|>5s4kiF1@jJfBoz6ZjPMi!WdvPQnHiZtdMYgfWwTjMF_>5^rYjbU z#zv!YjjGjZW>hYhGsDFvgTd76;m`Gx$>iH|x%`P*EEZ(7T0OzDr%tEy)$Mkh1VPwA z@c_>&1!G93(+0S>Je$qr@pvo`hr`-@KHsd@>kWdHN+l^0iAdB-8i3a*24l0?43Z?3 zL9)x`lKp;vt=sKx0B!@BB2YRh8jUIr!!v$B-mK%@9^SRgSeVgAHk+a>%Ma+4 zR;xvl$)vI{dqWS~Rcp0cui*0FXfz69M!>`}lt=dYd|znROmqOgd26%f+GYk}z$cH8 z5frJ{>!ENs9HN8oa%Wy8Ch!3a=*sDIKHlEmqKMsY4?*b;V6eor%*w(z91g+j^$O75 zRy;$?qfb83@?6leD*B<^!ib`11izG_L}l7V_h8g}+Rj=k^~qocgTXVHcszbm81?QV zoWl8hzEr7HO4VwW6bgmAKp=2O2cm{Cuc9zKvr4f0%(E{wv&;N{7@RFfbkVC}IA-J9 zc|*sX`6CD2t6^T+gZK5X`|rnvIYqob81f!7Llo8@;};tR6gToL%Ul2e002ovPDHLk FV1i5GHNF4< diff --git a/java/res/drawable-mdpi/key_hint_quote_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_holo.9.png index 51dcfac990ce9ab42f757f4f6a55290af64fb801..9d5a88bbfaab56805e1b40b1a37da91b4e89a520 100644 GIT binary patch delta 484 zcmaFKIfqlRGr-TCmrII^fq{Y7)59eQNJ{{*3|$zv{Sny@P?3R0iQY|$Wj*oAgSbFrzkKilc_=AF9 zUg_97YvboN91e^T9Q&p)Smpz!3pX)Oo#kW|nsVyS#LFKy)Yn}IbU0IQaM)?lX_HjZf2TELx9~f8 z{#d?d5wq0-=6_5Ied$rg4AUec@@6b%xX;AHQ1UJ2$IGc)I$ztaD0e0s!pj Brf>iN delta 562 zcmbQk`I1wyGr-TCmrII^fq{Y7)59eQNQ(op1P2?C6s$=r-KhANQNhjJ+|AI?+{D1# z$iU3P(9pu!(8R^q)Xl=e#M!{i(P^?BlZ=9ylcBk*fw`Hhp#@Nhi<_gVxsjuVo1?3X zfu*IJh3n)hgd$U%incK &xw;cRBZ7u~5v%ue+hKf3NSFfdAbx;TbZ+;O#>}H6ix8gN+CI z6E64{d=UP@u5RC)Z?xvrt7nH+881xF?yC?oSa9X2x0h$;ecQPB^$spv3?7=S-)c{N z*unl(!RD#K1-oU_9;=_Zd-@XJW4VgWCta9Jw(uR1OYq;K*2%iY_j1{(2`o35>unzA zpLlTKfarHqb!pwx%r>VtxlU3!zDcKi-~026HExN!ZuGhQCFf@SriHxT`hAbr%AWZA zN1*NDtrZ2P2c{dcuRE>#t^6cI-j-|TE>|1{)~s4(Wtc3b)R}c%_*#vc$@imo#Lu3! zvc0A2bpDuZQ4IID$1}LU1^pM_DYdx%N%6)B=Kr>D+reJ{?%|OKF)jO;UMjci%~X!& mi-{>Un7Dj5-{M`|1`H)$d0&bjt~vuu1`M9AelF{r5}E*xP|u72 diff --git a/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png b/java/res/drawable-mdpi/key_hint_quote_large_holo.9.png index 6514e0bf7f587a56376658957fd9beba16bf8d25..49154a7370e23fde63789c7b1b58bb9be16bfc77 100644 GIT binary patch delta 582 zcmdnQdw|oeGr-TCmrII^fq{Y7)59eQNJ{{*3x8S6q^qmz)aIn~BgX>5NPB{NgFjHx3qR6cmRIEGZ*O8WEvzdf_E^5c3oHa0hb*|!=vy^M`6Ff_=V zJK~UhfJrGs(By@qOSHT|0Ry|hW~ZO~7n&ITm%dkVK-fm%Fl*-r)f1EWcPL5D=XY3_ zQuXcA)VK5Z*V{TW$-H^<`Tw7v%8h5lg~fL9@^;!UImT$*@#A~_|NSf%rnf2Z81c;I z5B=Rf$0Mz6nE~epC%0pVZ~XB1=(LH|CxBV?piJ7c&o_QJe3<+wg{x=H=Ng+k?S&ue zC(iEL(J*6n!(D~z^@qYk9(cRn->{@|(kBK*d7j=wc~_bOx!rUn#Kam-aVso~tz=o6 k8T5#eJIJkpftlg7K(hXeseBGkfxc((boFyt=akR{09=a59RL6T delta 1060 zcmX@WxrtY=Gr-TCmrII^fq{Y7)59eQNGk)e3I`jIWWLk<5J)i=2e~^jtUD+3a--V~ zMg=!>b2mdna}xt|BLg!FLqiK^LlYNcQ#T6>6K4Z6N2kelOfm{)PKM^L2Igk2h8932 zE^dyd=0=VdZjP=l29}m?7Os=45Q$_i>*>cZh>A(W{MStUUa7xF+0_3{OGz5^rd2nYeY$Kep*R+Vo@rC zdr@LRMrN{eeqLE>QAui%f`(^aNotN}dHXL(1_q|Ho-U3d6?5LqF!V4AlsRyJZq%~* z^Zaft%F~nI!IC(;HTuCDrHH<3z9M78)W|C}mW^Djnn{q=5f3FZyl2U?sIpRG1p@}d5c+P2%dTQ+ZQ_EEdM zJY`Lo_U7HYyMO)tSCleu{`^3-$&NfGjxLNVSi%^;imYbx3iMik-B@2=|MWzllQO)R zHZx_gd|^;eU?^eA3Y18RIGNJp_W0Djd-K#LdSqOBxy4SbyYRyEzW#pR<;$1vs<2si z`~LlK=gA>$F*UWdwQv8_|G5*WAtG}%YwG#5&FnvG{xNK_|Mug@iTJpTztH{_EfJeF?yff-QE2JiVpp=J+TMq+Hl1hm420}8*k>^3R)?$ z_G;F}-Mg*rggPzOuUj{VpP&D`!M9hRf9`W_YdM)?mObg@6X7SPFP}VlQop|9^VtH6 zJ(Xo;$Cd}J6tel~ZScN*$EGExB$qPO39oHPY|D@K{dC%)X;E))@5@!IMLwr5d$4l( zG0%(5TxXnE)24+remqjOw=ZIvsP=~~Gm_d)E@trjnj^)-_Tt&Iw#F!>LtGkZ0>@9< zRAlMLw_U6MzKFZ$ue8zPiygO?J6iv{SZ_JmvVLyQn?x%c8<&F#6MQCpJ@-KWP@{uG zkYvon{QUfj1r~Gko26^QCz|+(i;H_K4O$qs+SJ}>houbPmc4s@3wFj_vE#i}cx%Sp zyn5x&bxh~~&0w0Q+kCKIuVnY#^QTX2oArV1eSwU--Bgjps2}HiOyj)Lirr#Lf0Slt jcXP=60cQ38|Ct$%a)iB=nC)5z%nJ;ju6{1-oD!MERLtq$Pk@hJy`ARzItMw^8vgqk@sSxq+jxrK5?V zk+GSDp`oRviL;}lrKN#|o1vw-iQ!~BCK&}ICs!9Eb5l!K3uALbLl-wk7Z-C!Cnpng zS7TF4XE&qCRR~2EI2CPUN{BHwb}=_J23cTag3UT5h2oN+)HJJ<{N&Qy)VvZ;7h9!@ z+ycFn%oHnvPAy_~s`uKj$`17398VX=kcwMxruy==7;v=Szr3qpedl-k+d9XLSGbA@R5NY!XU(y|aa!qj(Wb|ZoxNEO_cBhc2i~hX@n^@*%wLG(T;VWohmieHj@T4xL znOBqb0!P5yh*yku_jmfs<=rloYJb||(aGLnSf<(f_IlQI@9%oEdM!;|JX$@X(+pJl zC1rPh?%Kq*XVQCSlgr0fuq{}6$NQ-U<2xoEhP9_PEFLw@pA2*;gQu&X%Q~loCIDeK BivR!s delta 462 zcmaFE(Z;FR8Q|y6%O%Cdz`(%k>ERLtq{V?)f`bi63f82RZdClssNiO9?q+CcZen0= zWMF1tXlUVVXyRgQ>SkeK;%s2%=rq}mNk+lU$;i^t)Y8?}&;qE$#m&*w+{n?w&C%7x zz|zvq!gX>LLXitjMcbGXVlb?;a5l4av@msaaxyisaI;iWC@u*~O|weLPcF?(%`5SA zu~n+bEznEJOtHeyi|*7SW~cgH$$9EP|84VhaSW-r^(OQn?_mX=FM?_>)^9ct0iiFK zMZ2_@FLM&}T&%S+h|}9Wz@_i8$hm|xrUNc4Gv7!0&0oNL>SE*5)El?^=4<@-FZ#*c zuG?HQVZNQHb-4Jfj|P$FMfWIr{pH%29k4pp~~3e_z$<4&rxhI~9cCpaPYCzD~2 z*K~nHXX_>u?>i>({%o6VVfWt4tG1oe_F8>!lJ}FU*bndi=%0RGzI5Y(s&mn|l&x6e gzqa)iRdE?G#Qya%YCoP(4fFzor>mdKI;Vst0DM55J^%m! diff --git a/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_large_holo.9.png index d584dad3d268405a5a38b435039da053ce6afe76..8d83b62773f9fc22c1b5e21fd324ef58852b84cb 100644 GIT binary patch literal 1160 zcmbVMO=#0l9M4v*Iu$B1@nb?rK}2lxxn_y0Gi@5J*g3j_MMX`M*EVkXFnP1t{F+nH zfd>^u(Sw2@;z2zM3Odw-ASxadc2QKslV5o7AkLRw_S!c)diTO+a-W!O|=5@K-K&AJO=F; z7AhNsA}r=MiJEQ3)j%iin+`%_SbK->s9FzzcnMStD@lC5bC19cJxOe7%~3fg4XVb5 z0T*-+bQZLM9!=1Rj`4+6P8D-qc-nRW z-WsQ38kL~%1RbYYj_3K+I787CNiihN#Ase*8Ihv!$%jDJT)iyjWo6P9l9EIfLPsRY zTCEnZv2ok2khCBO0SCjxkVeewx1j3BEH7GTkb$SUh64@T!UIONWcR@&fjpfE!E|!D zDPqf;OcY8P>8lP&$0^b@gSf`EJ(vf7+?ZC|EA%^n%mdHvb2U_tafuCW*Biffzrcz#7=8v86O^E4Yo%5c-iJ%QE# zCubybh76kHuV$$qp$-hTQ>~ALso?<@niv<2#?9tOFVI-s&dO53A1(bH8|w%~qwfxd z!(kU4iSh*s6cPQMfoE?5P>(Z$ML!m+9$C|{0;jbgluYEsuc;;oNu{8Q9 jbmnSyQ)po%x^A!mE4NU~IpMYmyG(7W4QgbxR+kZ&{6@T}1aSW-L^JcmsSF?dg z+v1H2oBEvG%H3m+NLOg3m-j!Cl=g*eP z{>%yxluWw9A9(ip?JbVaRGc&}=ZE4l diff --git a/java/res/drawable-mdpi/keyboard_background_holo.9.png b/java/res/drawable-mdpi/keyboard_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..13cb0a07192125b1cb72db7bbf6a20736b703fbc GIT binary patch literal 1084 zcmbVMO=#0l94}1DHk^nEq6c|o;6ZG@+ccrIq)lrJW-D#M;%RB}x`s6$Ca*TzrDGyv zpu*Ihpk2%hnMpxUq@A^iMpBxBeLN%AShYdGOR$&SiSWYrZA{!*6OIP zUYB&oBDGM53@jI;Bau`la5a4eBG7=#rky6f?Yt&{X{3o8ag|ox9Bi4zH4j$T7Haz1 ziY^*N<|;@95+<-9(m-IfZC?t~#DG`A`|y||z(579q=}(Zb+rs~jt4=Uq+>drph1Em z8IBhO;R;}BhNftiV%QiXNE|ECG#EVuw&od4siG7{wy=~YS_rukMRmJfvdfW5VQUHF@pkq-7{TeIyMLywT9C{X##sX48d|$^@!N^M~T8IqXNyP z7?P$eD~xNP?V}3(>&8TFzqaZ^sseqdpvcQM}&x|=HVex$~DaP4+Qp_=oQjirz zkh57{$a8TqS7683lId#|61+9H^RZ z+MyhlXBe#lJ@Ym+3Z7$uL4GB3f_+X*B(cN!Y?9?C$34Uv|C2KcJ41!d@lUgik8lTu z+oRUU!qM70_d2!HRI`yjm_~x%CO%kx55Btv^J>NQcnZ0+o_`p=6AA7S^ pYWK{CexHB0&X>*>J70Ryb^J@1`N3t98%86X=Td$_d6`|>_yZ4ATMGaH literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..571f3aa3715d409cb70f88a9325da9830b89890a GIT binary patch literal 1004 zcmbVLJ#W)M7`9XiN~;Q15W~q`7>IpmJMo9=M*c`>BwVUAf-Fcl_NB2}`^@=5+)juI z_%Uou3|(PhK}?MN0VX8GQqDG*cx)k7Q(;X2qc>4Q|mWPBRvk zjjY(N8GKwsG|5>)GEgywBQj;S$dxWaNb?}LB+iOuqIk;WGR$QpK{-vUxaQUc>*K#N zR$3Q>(;UlvT#zY^cs<73HJIn_YDbkJS7SY*2`@@`;*)5a;*9ltTjYPFIEgJq*P)}D zj)oMqWgs5D<~fdOLZgdJT|+g;Dy)Va7n+9CF-#R9zw7wE?zpa|chsiob(I?1%L*1| z5w86v-0u==UWv6libF=|fRK~A0}dvHkzzt};2kzW5JpK>ovZRJqV+LNUf{S(Nebrq zwUQP7RikBa!5!C7wAFDhu<`%oOy*+bsyY5?mimf!V70w$eSWwc9-Q%sp?oxcU;nwu z$Lem+cLwFR(XWe(_S&tNH=yUb-*3JZUJL6``22BwS9<#8Yc+qp&c6T7efH`P6p}L5 literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_more_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..94756b717124dbdf1adcdd4d13a9ef119d2bca81 GIT binary patch literal 4445 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 Q=ZA;6v6az7k_YF10IPkJmH+?% literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png b/java/res/drawable-mdpi/keyboard_popup_panel_background_holo.9.png new file mode 100644 index 0000000000000000000000000000000000000000..c33d6642941bbc3cb4cf9c153476ae3aa054f6b7 GIT binary patch literal 4311 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 literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_delete_holo.png b/java/res/drawable-mdpi/sym_keyboard_delete_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..1141ddd8308469d1c5a233d075c9cf659ac7de5d GIT binary patch literal 1464 zcmeAS@N?(olHy`uVBq!ia0vp^W8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|! ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g1^l#~=$>Fbx5 zm+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-hnc$LIoLrPyP?DLSrvNfBF)6>a z#8wIDQivCF3w(Xy2Imz+0}2>q`W1-<`i6Q2`nkCve}PpOmjtCEoPkw!aY$uBs(w&v zaeir0GB7^Ulwq2IVTa!$kV2qqto(~IfsvA!Ma9SzNmm_+(iM!(3dBI0^v8zA*3DrclSsu9@fbm#OcO zy-T3?$oPzVo!|>s@(jy;D_t3=VN9BM}=^4#+HFKUwjJZF2|FwBo5WWIy0dqy?;PUm+Mb5pi(u3FN6l{aR?-DIJy5`s&!+_uL% zf140JzxW(WmcYynwj!!tjnk60tko+Deo$s>(W=FLh0!QU_?fF{RE9lAy6DsG4&EVw z=Nr^sN!|Qj>72oOHR8C)gOBUwPDeUaR_i5iUfz_@`>uM^hxkzc{=G{4Z=;UaeaZK< zXJ6*!_mX+u%}tl|Zgkt}NgwjOB2cuXeQC1rb8~I2JDU&8m2#0)I{a(q?G2sWQOC2G z$|Z%xTR!<|gcY24?Lt7G@hwa#$2|FCM=#H$={;}s?|YDAjOoHAB;b`GrRYmd(Zcs_w4?t zh%nMjpP2*#fg}kR$?#Qyzl+^m@b9HUZauy%#KbX}97(`TN)#pt)JQxGNOVdKEQ6Km z9oy>QKmx%zL92+tVx((%Dnv(BI&`RJodHJ^2!TOngHn|QV?aEt(dzl+fy!z!pjGq9 zAF-sM)F6Ztwc!>NmRlkeDoc`zt0o7n1_I4IoInR-O2Dj3)*E?dK6#v%hwmN7G%_%* zf+g|E6HdiQqW~d-!T^g3QdA%t1lSN2VlX)z&MJToLLd#K(;zwp;_w)B9tZ-jA2MzY zRVVOdqR`j2aEVVrPoMl+dAR1<@Wpc)#)<#HVybUFpspcr@PF{PQJH~LL7h+v}% z)fzA@q6Zv|%6Mcu#wX*RPK2N{NTqLx^~TqU!c#^wD-AS=3et2sM_l9DMob3(>&BGY zM#T;TOq0PzWIL+D>yh9$3C45xc0&$D+#6mbs>O?i0TZG#*Z~k8K2sxg#2$Lgb zu(-ld`XpAOH)2Y?3ZAs9b=aN2vfhg22~k*yA*cdDk|#SLDiOgDV zfsXB)*2jf6!vpK_i9zwvNI5o&;1f4XA`&Rf%}=v$>6?SSZt7I>LZJtfcudsZ$dDCh znm-TkzbNyxm3_Ou&-WRjN|67^^5jnHbC-VpoCn9h@Nvp7*fv^LbDD8Ki+WISxFR#Q zKitndmDJUp{i=c5p3HuyV!CEd*wwUs&A+p{YOi+K(-U^*w8;-5j68CMOK!}ZI@Pm{ zo+3yi&l zg3ia{!m;IjRVilzz(&L4qoxp8h9QDWj@FF%f2kG8rt2WI| z;gg)BG|_phBXWQEvW4Z=r5<$2?|j$(B1iLbk8`Z<*Cd~cL8l<&tj){|n~8V4dqx)e zmbKYd5X&X^>?EGnY8%c?Sz|dka>RbOgD6IOaz3e}Sw)hfQrFboX$V0G%)19wus{}uk(*?0Ka_EuqIz5XbB^WW?+!y@bGqphD24$q6+ z`p46Zx#x)I8;sv~lv#|mcPW(ebt?O8-_Z=$)46N?A2pd9lvLOB_c>0t?lGE&A^m}e zGm>H~P7NIok0e_q(fVtHq=Yh$axfxuiAPw(()16060^^<7K~P#v0_&RkXIDBB~doJ zZ`+<6B3vL)Hv7F?(&(IqrUpm1-$+CAUY#HFjw3u)czjBVy`ggaawOsiQE^Dzu73cZ C3#_vM literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_num1_holo.png b/java/res/drawable-mdpi/sym_keyboard_num1_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..40c82a7f42d863672a98855c65c2e406424d0cc0 GIT binary patch literal 1268 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS=07?{&CLn2Bde0{8v^Ko2Tt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdpzyaD(%Tp#cR9GX09g0)0b01O41wkiWpHi%Wu15zfG>x;Uh=AXPso zwK%`DC>aHCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$Cs!k5Hz#9P3uALbLl-wk7Z-C! zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNtjqvKVaxO|uEXgkl$-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf zZwfhKrVn(CJ}7Y@B^Ht>WfW%aWjw2!pco{pEU;PeV?Fan`>ei%Z3WUh zE%ZMYHNQ#u;c-HJhfYG9)VXgzUx)wWm$xtd`}_ZWc27H|jDv{^XSt5pdv0YAxyGch zGd%zP%fCN4AstRd(yf5Ma6Cr=)9FdR2AE}p$+iHoJFv6P0!j3X_r zdV7C=xaj54@LzFjch`Q0Ka3sqj=cX}yB9s;7uer;s&Ij*V2JLUe?4N?7mM`>a7%ES zL_auc-dFQUs^fof65|;myDc(*xucf+S$Ktg@kARQ9R>~qhIrnnV{G3auLG4sp00i_ I>zopr0G*StBme*a literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_num2_holo.png b/java/res/drawable-mdpi/sym_keyboard_num2_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..0f444b76bacd7e95f4a1bd493e94ea4559ac7535 GIT binary patch literal 2403 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 literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_num4_holo.png b/java/res/drawable-mdpi/sym_keyboard_num4_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..68404aa43f56fcd8ca4a146db97e5ad66b3225b1 GIT binary patch literal 2063 zcmbVNYg7|w8XgFuhJqeIE((|vM4(DCxe+ELLP!WwjYNzHEkbS+GD0pSgIp9v&{Y>r zD~q540i;+ELD1H9x1eYiwdj@=kszGP5i3>DQWpCcl$lw%2!y%4+f0al; z6dd9qA*xVR$0Cz6Gc!qs zzVi%x*dW&GIWuD`s*a!ht08zlm5E_$0;S0EY zK9d^}L1#wN7!XfDoySIN45(Bihv)4gR=aapQ1FLX7EcdLQLSFA)uzpNfJmi9wFZ?| zN8oK?5QI`WqOr=>^1O?d59^VgutK2MstI%XWg#E2Powdf6q+?sD*fYezr!m2pPZ2~ zXUNv(_@8E(Kf*fDy8Y1lnDAkEU=21gdTcaGJG{IAz%DGB&lP9&KTima84$Tn`0nhs zD_R<0S0~xG>~PyNC)wIV)ehT_v0?+mfckSYHgAA9yIuD<%htGT-3K`KWplj-oCU8S!5=? zu!zpv27Hf0mtJcX_aKdTPh40bzsp=$(BhGF*5`{)HRYddm3c^=eVco$|NY9uS2Lnk zZXQmkm_C-+`+TDDd|szrz_$APSGeM@q^3sOD(IBzr-I)P(Mx&+V`g!U(@bgor)Z^O zx_zS0cl2?qEu*J8L%$cFGU^1jkrpZO{33*Nei6IUJ(9wt1pm40 zmUm?Z+2c>g4(~S))R^meN=|q7OZ~)|q-67?|4qSUBct4{_m0v~;*IW*u?Lj6T$@+M z5%6V3WzEsA9gCVqlh*JJ-O#^74w5r5od)KN1m53!wUthp&^G;uhw3 z)$EH)ygU^uQT5}~;?~XVw7V93t7Y2f;3bi_+o^GzjStTx@+=nJTMuw^X@mG>zoLJ@ zbA71q-TrR}t6E+=s_q;ZiE3`x1MJAwH+yX$M{@fNdC1j*_EEbdv+b?&8MojErjmx< z9SLP4(uCQwD{ho08}hECoGTMOb(cf+QEXaN$&Akly7^M|@PtFv;_i!nza838;yM0? z^i=4ynlpLC;1VD6>(EK)hE32!s^m-baNckJ63bufgu>NBD`vn4!|Gf2hKlnz33@Pd zf#26nNEvzYQ}6rBzWWy5vK@aQIQ(9Zld-lgyTfN#veW^8WADf>YKK~nZhXa_%5se? z;MM0w(}ll`s48@vqb5_`@pP5Nxig&Z{6OgE64g`rP#q#a;EHQuhj5MgzkACZMvH%T znvV5+kdq$XNTb=_8VP*5?b1&-o2O#p*xf2GiEDT+>QI**p3&R{GNUS?E=~eQzvv-R0cc5~b874A=Gx@ATy*)t`6xcB$1)bjWO3|gUEjM04sO;km2IZ zl|#S!Uk|;T-m#?9{cpYJT7`vExEWW@XM@Mr-y?>cp}ET3lKmTv6sU`8*e^awmlTwj zz35w2I@`I&e&X+i@?)mWF^sdV@M{xcl zhWnMmw@={HZO@xm*B%rF0`!3Gs|fkdz;f$dZ0ZcNu?O}m9^?FztLJ{v(UF_@O%am( F{{VtrGp_&u literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_num5_holo.png b/java/res/drawable-mdpi/sym_keyboard_num5_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..dfa3b89258832260eabb11856ba2fadad8a10837 GIT binary patch literal 2025 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 G>VE*eA{!_G literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_num8_holo.png b/java/res/drawable-mdpi/sym_keyboard_num8_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..3f60df194b0eb35d9024dcd04e6b48c2a395618a GIT binary patch literal 2226 zcmbVOX;f2Z8V&>m5w!LwWhh7{YzH-aAS4hWB!CgZ8YBuWgqsTlNrK76gl*VH7VWqI zA{7x(z))0FKq#9aV~1r}1{9F8sMJwfr#LK$h}gLiaps4oKjxlu@Atjm_dd_NpL28l zd_0W|ObrkSgb{l`D*#@(@ViTY6a2lcr1rtfA0T%g6ex*=A8f%A9UTopaWouGE|+8FB&oxTGHyZ~hzkH^l6WZq*CWz$0}SWx_YG+jVQ*-@QXyOvek@A@#EU>N#Aeaa z@C{ZV6wrti3Z6ltGROoX$-$8ThfiiQ7*s0W(StyxkO>KzkI24+zB?SyP_%Xj!0CcnlPHNF^fF`~1>`pRi9Nu_y$RCQ>5#({Zn31^-XZ zaIiBtO>_KDvuqr}9jMuUY<*bxI6R;jo){@S8misEHwc8zQ#OmiRZP4*{%Os5Qg_(e;%sAhalwR)^^tag>**LAB(Sfbk(bN%2; zVAGd_j=rzWPm&ENLo!83c$Q=9O*ilM!eGe!>tx@AOZU~$*GS$5O5=P7_waU6DcN~u z=46}y$l*Pz1#yC~nwgzqTA~wXU@v!R~wv)c?IroewE~KLWbxq zFStpWoun@OVfpCTR)q1KcD>nLaCqC@M&C=%GRl%AbrXU;?cSu`%-uFA`#D;RO=kw@ z4_B?26x#U=M>s3gPnN1#jrA3*!Re}7+vVHG5Eq`_xrZ5;rKx%_4gWSATs&s=2I;Lc zu8mNq{N{DraJybceM+=RkL@YhZx*&jv)TR24Z-6sE3<&u`P&DTJ&!gA;$LF}c@}qp z;^}`>sCP|H@n(F94CYvf!0a?)7s3XA{B*z3-)6I~Ef(*H4(w;Hy{fn&moDaOtv>E4 z*vt_-9U390ZVe-vru=cmXV1lJ&pY#y1bZ=;TJjyr_zyx?W0(D^9Q-5amj>(fa$XDC zjHsybXTyCv4$3<^LC5kH|%J*T==lS zhQH183i5J4?p3k2_d?B#w7{a0asJTeXy2JO-H9#DVFA09Ln+QR!*zSELFGKwXEZKa zT14D_#_477nvUH_s8yDVRK6ONhRw<0EZy)jw)1@SCfqR@O~10Vd3G*CCD8HAP}N;d zGAmP>^p2OmeMwyz=ne~*RvTC@)D#@_->2xv_OiRm5uWHucevbE=2V&PQpr|3y82r` zvlCU1#O(V^0kmdq-QHp{etvPN(bhs$aUyE;sn<@9Re?e70^w??T9*MP_EX!1HrXu)&g#z5O+O#7jxzcF?1S0np{u?6 z>ZWc6W3@xwnDgt8`rHGl;Wqu-GcmO`r9bV*D*1K{rOk|!o+~CVrI+^e^OC;E#<3aO z(WM-J>#@c5fwk*5YtxR4cGcS=6*{Fj?Vt;z31CF6o&T4W%Gl#NO`&Y_EkFsftUJ)$ z?_9tgn-tI7@dvI!$1$gRa1KSiHwVfMO-I@*hUgC=U(qR4)3|c*tFaVpX4V3UbrEfS zxs_Y!Q0<)D*|Xw4JYRn6bKqZJ~4bGX%=$Rhi8{*W!%V2OUx_1{?~eaPoY{C zQE-Zg`G!9fYkfC-;N35Cf+1@pIbWy$tT)ls#eBspO$!mi1BT^U S9{QTU2)4Tq>xNr+#(w~b{Fo{L literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_num9_holo.png b/java/res/drawable-mdpi/sym_keyboard_num9_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..71c5dfc6e7cc874286f3f79c9dea4204e7126f69 GIT binary patch literal 2696 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 literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png b/java/res/drawable-mdpi/sym_keyboard_numbstar_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..ba4ea88e877f870326a78636b5816220d8d04cff GIT binary patch literal 1414 zcmeAS@N?(olHy`uVBq!ia0vp^58U}fi7AzZCsS=07?{&CLn2Bde0{8v^Ko2Tt~skz|cV7z)0WFNY~KZ%Gk)tz(4^Clz_GsrKDK}xwt{?0`hE?GD=Dctn~HE z%ggo3jrH=2()A53EiFN27#ZmTRp=I1=9MH?=;jqG!%T2VElw`VEGWs$&r<-In3$Ab zT4JjNbScCOxdpzyaD(%Tp#cR9GX09g0)0b01O41wkiWpHi%Wu15zfG>x;Uh=AXPso zwK%`DC>aHCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$X9Gt=a|35r3uALbLl-wk7Z-C! zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNto$%_laxO|uEXgkl$-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf zZwfhKrVn(CJ}7Y@B^H@dEZPRTTfW*> zELL8q+q>blO1zbQ{yy{f+h;0pOsVAyz4`gZZl-Atev5aqN4yDgl$;QKyO^OlR^x=y z&jJ&>(&wK~6**sz_ihiHeeTZxV+@{CG@noJdu=9YG5!1_iwKTP$2!H!Tc$m)?3&?S z?yq5HeBij5n8HiJ0}G6m9~H8DQ(nHvM%gSN-CsFf87wUeK?U z^x@j;`#<*8v+cNG@^;~j^X7+=ghW%gIVN~)6yG1osbBX`S(GI#MCVHH>#Iw@iA7rU z37=T=Rq0Em=e-yFZC53q`)=`=FsrSwHb!sjwH<8?a_Nlf2Vb6VdwfTza&}zKLpj#) zeTTQNW!Agp^n7nLJNIgf;|WYs+Wc%+FD{Q2kK<704?f`XwMro6q1ft(9qt_aoj=!4`Bv^wX)9&cS@Fd8b6-@O@YO#?iuN+SfAWr~a8Bx9 zaab)#K|F3+OsDIU%d-T3>SWGZw*O3s<0^&F4T&|}1`KbOZ@=SSIw=!WGJ3lDxvX8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|! ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g1^l#~=$>Fbx5 zm+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-hnc$LIoLrPyP?DLSrvNfBF)6>a z#8wIDQivCF3w(Xy2Imz+0}2>q`W1-<`i6Q2`nkCve}PpOmjtCEoPkw!aY$uBs(w&v zaeir0GB7^Ulwq2IVTa!$kV2qqto(~IfsvA!ryA&s6}2uT>@%`;CoV%ngk}J~cAI z?r(_R6mr5$ALtl;P~t#JEHEKp3Is9XNgv38XP(qNV2&vQW{n9iBTg_dFz)npaSW-r z^=8&Vufq-^uEM^nr-rc*`Ar=Ra6}#yc?RR=`Ztg4B~!W0kI&EK!>J zW{T;tC&jOCP5AQ2ZU-B?TXJYf***0O;mfv77x7uS)M?VCor)o)M=ST2Z#ochi`jO= z%g?cep_f-GFZDXI$4hhljJcOIExuGX>1i+3oqlAK<-yZa{t0KlNZI`&;?-^qwNf5G zr>MLAUw?4O9aw)pY2(-KH23#yLAxIa<(#iPw^+(XWy<%+Y}ZKD`UcJlw)6-0K7QGB z_3xP@XG|k+d%b6Rb7ta=)!qIVRxW?}v@S=o(cB>9p!8fewuNshQ(m6@`iE)Pta~ag zXXi}3S9#{ku64`8pK#vt$zM>kecjUVlI#P1@6UOyFFU!TWxtGR>A^b}`X=pO_9meA ur(W9nsJ6>$KJ$+*5;%q)kk?=NH!w2rDaVzwwu@KbLh*2~7Y>_Xgzv literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..b7d62136de3f9563caf34ab4f115cdb2be3205d4 GIT binary patch literal 1681 zcmbVNX;2eq7>4n*@Ia9`)Na6NXUh1)op1NM-sgGm+12xs z=L8R*G@Qj^1*;QLEi;RlH!d)M`NrH<*DzBkouH#rNh9sRD4ZoXkXbmOwqPb)i(>}Y z(u;T;i#60pr0Hm#CJE7#77+8wfKH2zK{I6WP8+7r!D%21HxX7Dr>mxp0}uuo=M$j@ z(%6)EHj$V|;i-AaY5Kezz0|;op9RD@5r)8m(-`2in5}liDdY6>BFx%*%;f<6B6N<7 zGhmcXGY?Rb6b=YMC`J#7AV36zFkc`Ri=zP^1Vdbi$Ax(@uo&U<5C{TZKO9CIWiTRI zRP|aHvy*YMY1)QxxekW|bnrovGI3$4RO;p6@nRT>7`w|#W6l_>J;KL;;&wen*l2>Z z0$xTei_E2E9LCZC7c4f7<_)pc{yI=h$hc0-#)UzMYq5C!>X)|DTKugUgG$@eTsEAm z#qDG+rDyVCjPQY(*u7hkSCFv=NudZPDVP~0^|=<@N~=*Bhq(a_gaP4+#gLpYl?z}V zUnGGU_XSG1Tq=bmDp)EOz&?&au?kdxLXaXs!WY9Zs*n)D|6pQbOsX*`YP3be6H_d}v znU0~D*0>iLn8RZEomQjrH0RCsin_U5Ajp9_s;j^mJ~o={b|WZ$i*Fn==zNr^hF~9lT*788daATUI`4oY*}IDOoU|eUM*$ zp@6e#-E85W&DZv3H-n=ej_fWaO565=tDs$@G-n@}<~$H}f9Z-14p+oiAy0qZzg8Dn zWtBHyVkaG$KLrjq4oOm!1%71SmuhfDX(X+gpyyUm26XuOhy|+(c-%gH7RnyG|5Uv6 zqVVIa-thZlx`Xrl`i!pC&t~*4!bYDC+gNE_*cjCCN|Ca2T)>)fXRh7ff%R3BlDkVi zw^oWmhYfYd8U4+W-_7oc3ue-%JX=@XZayTKQgtrWf4lNvblpmkq_4e;U;K=JCjYy- z%btTPW@Rn!EpV&%m>RJ9B^Rv}2q8qngXs#vPGkcRoidP#Y zxnZ+ot1pjzxnaZgSlzVe70Vlce3bv!c=M4f;MK^K!kP|cS3<$&zGJn#C$8h`>s?)7 zT4~es;a9JYJW1>>tFUyexw4;XNQ}$s)YFIAk*(<=`RhF%_p+ClGMbTxhBE)cg6YQE z;se5TQ?}K=@35+cxY1BKXK`4e8_YRZQfX}4wB&gB+1NuL>?TTeyLM#e{ah)0ntMPp z#&LIT=x=Oe{bgCZz0;FfrAoS9;g0&>Slm=NB!HD9_^NfXHZgY CUxkqX literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_lock.png b/java/res/drawable-mdpi/sym_keyboard_shift_lock.png deleted file mode 100644 index 244179c2def030160df47d4cf1a1b94bb0e498e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 3188 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 ArT_o{ literal 0 HcmV?d00001 diff --git a/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png b/java/res/drawable-mdpi/sym_keyboard_smiley_holo.png new file mode 100644 index 0000000000000000000000000000000000000000..a123d4cdf6454aaf9b253a9e09cec95ac09ce78a GIT binary patch literal 1479 zcmeAS@N?(olHy`uVBq!ia0vp^W8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|! ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g1^l#~=$>Fbx5 zm+O@q>*W`v>l<2HT7t|lGSUUA&@HaaD@m--%_~-hnc$LIoLrPyP?DLSrvNfBF)6>a z#8wIDQivCF3w(Xy2Imz+0}2>q`W1-<`i6Q2`nkCve}PpOmjtCEoPkw!aY$uBs(w&v zaeir0GB7^Ulwq2IVTa!$kV2qqto(~IfsvA!U{N!GGq?2|ssC|TcX4On z?@Ox2R&neb_!e+wKKPeC^VBrbY263yk zH#*kk=l^_@TQiUeAzN_{hk$-zpgu+eW6#mPD4PRo6B+e6Bi@SkL_uE9W8y%k*=k` zW0r<9AMLEYDI@8+U!&?TQt-o=H}~qnNu^;rzKxf3)gwAO9$PgK8j&^GhA4Fdh;@Q4MGN3x$L`{oA_wqxU!05^VUSg} z_L-oquO%h*bxWL#H*LlmZ5|P*0E(Ec<}{191Nba2kM_+$UJZ)2TeIrQ3<9tuQ!${TYna0*cItT;z>%k=5L6=` zpC{I=xkRCq5w>U$l!qi#)ro6X+k#2(*Np|WtyHf8h$OJ|yeXl2Wa`Rbl)J?ZIf}>| zzSUGvQN)~}OL-M&FeU_WbmNf~nWtHn3^H8MOVLb&pF-h#!@(fOk^U&fv0kdou^=`S z4n;#DZ^X~A6eUE1g1`om%tja=7mm_pY)rGDs7at~S8?o?u*{-ZK5POJ>SjvUbL9?5 zWOb-pS>3?GZ9Xh6N{Z&lPI*ev3cyr)fE+b-6`Rd3uPk7nVFZ?9oJeW!!f}_d^8e(F zK+X_ObNtgRfeH@CjMu%8|tNxhr&UViqjV{&`%!1#_;^+QL^i50u*uQh$ED75sexyBj0 zy=VGnTV|%nkG9vJdS0}1zp|%qg?^~3vhSNH!&Ki&6w;3ItTyJPBr mkiT{AXZw<}H{H8OU6ro)FURap4~ + + + + + + diff --git a/java/res/drawable/keyboard_key_feedback_honeycomb.xml b/java/res/drawable/keyboard_key_feedback_honeycomb.xml new file mode 100644 index 000000000..dd9b53e46 --- /dev/null +++ b/java/res/drawable/keyboard_key_feedback_honeycomb.xml @@ -0,0 +1,21 @@ + + + + + + + diff --git a/java/res/layout-xlarge/keyboard_popup_honeycomb.xml b/java/res/layout-xlarge/keyboard_popup_honeycomb.xml new file mode 100644 index 000000000..50e91f7ea --- /dev/null +++ b/java/res/layout-xlarge/keyboard_popup_honeycomb.xml @@ -0,0 +1,41 @@ + + + + + diff --git a/java/res/layout/input_honeycomb.xml b/java/res/layout/input_honeycomb.xml index 7bc0df427..79eb7be96 100644 --- a/java/res/layout/input_honeycomb.xml +++ b/java/res/layout/input_honeycomb.xml @@ -27,9 +27,11 @@ android:layout_height="wrap_content" android:paddingTop="@dimen/keyboard_top_padding" android:paddingBottom="@dimen/keyboard_bottom_padding" - android:background="@drawable/keyboard_dark_background" + android:background="@drawable/keyboard_background_holo" android:textStyle="bold" latin:keyBackground="@drawable/btn_keyboard_key_honeycomb" + latin:keyPreviewLayout="@layout/key_preview_honeycomb" + latin:popupLayout="@layout/keyboard_popup_honeycomb" latin:keyTextStyle="bold" /> diff --git a/java/res/layout/key_preview_honeycomb.xml b/java/res/layout/key_preview_honeycomb.xml new file mode 100644 index 000000000..a90fe5588 --- /dev/null +++ b/java/res/layout/key_preview_honeycomb.xml @@ -0,0 +1,29 @@ + + + + diff --git a/java/res/layout/keyboard_popup_honeycomb.xml b/java/res/layout/keyboard_popup_honeycomb.xml new file mode 100644 index 000000000..63b535381 --- /dev/null +++ b/java/res/layout/keyboard_popup_honeycomb.xml @@ -0,0 +1,41 @@ + + + + + diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml index 1162a3172..58fea4edf 100644 --- a/java/res/values-xlarge/dimens.xml +++ b/java/res/values-xlarge/dimens.xml @@ -21,22 +21,24 @@ 13.0mm - 2.0mm + 1.5mm 2.0mm 15.0mm 1.0mm 1.0mm - - 20.8mm + + 13.0mm 15.6mm -13.0mm - 0.175in - 0.110in - 0.245in + 24dip + 18dip + 24dip + + 18dip 46dip diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml index 28ea6fccc..ee4ec0517 100644 --- a/java/res/values/attrs.xml +++ b/java/res/values/attrs.xml @@ -126,6 +126,8 @@ + + diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml index 0073835fd..f29bc4d11 100644 --- a/java/res/values/dimens.xml +++ b/java/res/values/dimens.xml @@ -37,6 +37,8 @@ 0.13in 0.083in 40sp + + 0.13in 0.000in diff --git a/java/res/xml-xlarge/kbd_key_styles.xml b/java/res/xml-xlarge/kbd_key_styles.xml new file mode 100644 index 000000000..0643bc344 --- /dev/null +++ b/java/res/xml-xlarge/kbd_key_styles.xml @@ -0,0 +1,149 @@ + + + + + + + + + + + + 1 + + + + + + + + + + + + + + + + + + + + diff --git a/java/res/xml-xlarge/kbd_number.xml b/java/res/xml-xlarge/kbd_number.xml index dd251ea9f..f5f4fbc8a 100644 --- a/java/res/xml-xlarge/kbd_number.xml +++ b/java/res/xml-xlarge/kbd_number.xml @@ -25,13 +25,13 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > + @@ -55,12 +55,8 @@ @@ -86,11 +82,8 @@ @@ -125,9 +118,7 @@ diff --git a/java/res/xml-xlarge/kbd_numkey_styles.xml b/java/res/xml-xlarge/kbd_numkey_styles.xml new file mode 100644 index 000000000..adf45a861 --- /dev/null +++ b/java/res/xml-xlarge/kbd_numkey_styles.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml index 842c74bf5..483b022a5 100644 --- a/java/res/xml-xlarge/kbd_phone.xml +++ b/java/res/xml-xlarge/kbd_phone.xml @@ -25,13 +25,15 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > + + @@ -48,32 +50,22 @@ + latin:keyStyle="num1KeyStyle" /> + latin:keyStyle="num2KeyStyle" /> + latin:keyStyle="num3KeyStyle" /> + latin:horizontalGap="9.360%p" /> @@ -90,22 +82,16 @@ + latin:keyStyle="num4KeyStyle" /> + latin:keyStyle="num5KeyStyle" /> + latin:keyStyle="num6KeyStyle" /> @@ -126,14 +112,11 @@ + latin:keyStyle="num7KeyStyle" /> + latin:keyStyle="num8KeyStyle" /> + latin:keyStyle="num9KeyStyle" /> @@ -144,21 +127,16 @@ + latin:keyStyle="numStarKeyStyle" /> + latin:keyStyle="num0KeyStyle" /> + latin:keyStyle="numPoundKeyStyle" /> diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml index 9ba60ed85..09eb403c8 100644 --- a/java/res/xml-xlarge/kbd_phone_symbols.xml +++ b/java/res/xml-xlarge/kbd_phone_symbols.xml @@ -25,13 +25,15 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > + + @@ -52,32 +54,22 @@ + latin:keyStyle="num1KeyStyle" /> + latin:keyStyle="num2KeyStyle" /> + latin:keyStyle="num3KeyStyle" /> + latin:horizontalGap="9.360%p" /> @@ -98,22 +90,16 @@ + latin:keyStyle="num4KeyStyle" /> + latin:keyStyle="num5KeyStyle" /> + latin:keyStyle="num6KeyStyle" /> @@ -138,14 +124,11 @@ + latin:keyStyle="num7KeyStyle" /> + latin:keyStyle="num8KeyStyle" /> + latin:keyStyle="num9KeyStyle" /> @@ -156,21 +139,16 @@ + latin:keyStyle="numStarKeyStyle" /> + latin:keyStyle="num0KeyStyle" /> + latin:keyStyle="numPoundKeyStyle" /> diff --git a/java/res/xml-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_qwerty.xml index b45060497..6f6877b0b 100644 --- a/java/res/xml-xlarge/kbd_qwerty.xml +++ b/java/res/xml-xlarge/kbd_qwerty.xml @@ -24,8 +24,14 @@ latin:verticalGap="@dimen/key_bottom_gap" latin:keyHeight="@dimen/key_height" > - - - - + + + + + diff --git a/java/res/xml-xlarge/kbd_qwerty_row1.xml b/java/res/xml-xlarge/kbd_qwerty_row1.xml index eca24b6e1..159686792 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row1.xml +++ b/java/res/xml-xlarge/kbd_qwerty_row1.xml @@ -26,11 +26,9 @@ latin:keyWidth="8.272%p" > diff --git a/java/res/xml-xlarge/kbd_qwerty_row2.xml b/java/res/xml-xlarge/kbd_qwerty_row2.xml index 8dfb48885..2b9be10ab 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row2.xml +++ b/java/res/xml-xlarge/kbd_qwerty_row2.xml @@ -25,11 +25,9 @@ latin:keyWidth="8.157%p" > diff --git a/java/res/xml-xlarge/kbd_qwerty_row3.xml b/java/res/xml-xlarge/kbd_qwerty_row3.xml index c26dcc410..209ef213d 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row3.xml +++ b/java/res/xml-xlarge/kbd_qwerty_row3.xml @@ -25,12 +25,8 @@ latin:keyWidth="8.042%p" > diff --git a/java/res/xml-xlarge/kbd_qwerty_row4.xml b/java/res/xml-xlarge/kbd_qwerty_row4.xml index 8b31ec6fa..7b9049a8e 100644 --- a/java/res/xml-xlarge/kbd_qwerty_row4.xml +++ b/java/res/xml-xlarge/kbd_qwerty_row4.xml @@ -32,10 +32,7 @@ latin:mode="email" > + latin:keyStyle="comKeyStyle" /> @@ -44,18 +41,12 @@ latin:mode="url" > + latin:keyStyle="smileyKeyStyle" /> + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="37.454%p" /> + @@ -121,23 +115,17 @@ latin:popupKeyboard="@xml/kbd_popup_template" latin:popupCharacters="]}>" /> @@ -186,11 +170,8 @@ + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="37.454%p" /> + @@ -60,23 +60,17 @@ @@ -101,23 +95,17 @@ @@ -142,12 +130,9 @@ @@ -157,10 +142,7 @@ + latin:keyStyle="spaceKeyStyle" + latin:keyWidth="37.454%p" /> diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml index b80bb9ff4..9dd166a41 100644 --- a/java/res/xml/kbd_key_styles.xml +++ b/java/res/xml/kbd_key_styles.xml @@ -33,6 +33,7 @@ latin:styleName="shiftKeyStyle" latin:codes="@integer/key_shift" latin:keyIcon="@drawable/sym_keyboard_shift" + latin:shiftedIcon="@drawable/sym_keyboard_shift_locked" latin:iconPreview="@drawable/sym_keyboard_feedback_shift" latin:parentStyle="functionalKeyStyle" latin:isSticky="true" /> @@ -109,6 +110,7 @@ latin:styleName="shiftKeyStyle" latin:codes="@integer/key_shift" latin:keyIcon="@drawable/sym_bkeyboard_shift" + latin:shiftedIcon="@drawable/sym_bkeyboard_shift_locked" latin:iconPreview="@drawable/sym_keyboard_feedback_shift" latin:parentStyle="functionalKeyStyle" latin:isSticky="true" /> diff --git a/java/res/xml/kbd_numkey_styles.xml b/java/res/xml/kbd_numkey_styles.xml new file mode 100644 index 000000000..006476db2 --- /dev/null +++ b/java/res/xml/kbd_numkey_styles.xml @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml index c9b1ad631..7e146ed69 100644 --- a/java/res/xml/kbd_phone.xml +++ b/java/res/xml/kbd_phone.xml @@ -27,116 +27,8 @@ > - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml index 0d6d0e407..1bb4bac74 100644 --- a/java/res/xml/kbd_phone_symbols.xml +++ b/java/res/xml/kbd_phone_symbols.xml @@ -27,44 +27,8 @@ > - - - - - - - - - - - - + diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboard.java b/java/src/com/android/inputmethod/latin/BaseKeyboard.java index 485cc3153..00ed453c4 100644 --- a/java/src/com/android/inputmethod/latin/BaseKeyboard.java +++ b/java/src/com/android/inputmethod/latin/BaseKeyboard.java @@ -28,11 +28,14 @@ import android.content.res.TypedArray; import android.content.res.XmlResourceParser; import android.graphics.drawable.Drawable; import android.text.TextUtils; +import android.util.Log; import android.util.Xml; import java.io.IOException; import java.util.ArrayList; +import java.util.HashMap; import java.util.List; +import java.util.Map; /** * Loads an XML description of a keyboard and stores the attributes of the keys. A keyboard @@ -86,6 +89,9 @@ public class BaseKeyboard { /** List of shift keys in this keyboard */ private final List mShiftKeys = new ArrayList(); + /** List of shift keys and its shifted state icon */ + private final HashMap mShiftedIcons = new HashMap(); + /** Total height of the keyboard, including the padding and keys */ private int mTotalHeight; @@ -340,6 +346,10 @@ public class BaseKeyboard { manualTemporaryUpperCaseCode = style.getInt(a, R.styleable.BaseKeyboard_Key_manualTemporaryUpperCaseCode, 0); text = style.getText(a, R.styleable.BaseKeyboard_Key_keyOutputText); + final Drawable shiftedIcon = style.getDrawable(a, + R.styleable.BaseKeyboard_Key_shiftedIcon); + if (shiftedIcon != null) + keyboard.getShiftedIcons().put(this, shiftedIcon); if (codes == null && !TextUtils.isEmpty(label)) { codes = new int[] { label.charAt(0) }; @@ -622,6 +632,10 @@ public class BaseKeyboard { return mShiftKeys; } + public Map getShiftedIcons() { + return mShiftedIcons; + } + private void computeNearestNeighbors() { // Round-up so we don't have any pixels outside the grid mCellWidth = (getMinWidth() + GRID_WIDTH - 1) / GRID_WIDTH; @@ -686,8 +700,10 @@ public class BaseKeyboard { mTotalWidth = parser.getMaxRowWidth(); mTotalHeight = parser.getTotalHeight(); } catch (XmlPullParserException e) { + Log.w(TAG, "keyboard XML parse error: " + e); throw new IllegalArgumentException(e); } catch (IOException e) { + Log.w(TAG, "keyboard XML parse error: " + e); throw new RuntimeException(e); } } diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java b/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java index 621e875bf..38b2a1b57 100644 --- a/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java +++ b/java/src/com/android/inputmethod/latin/BaseKeyboardParser.java @@ -174,6 +174,7 @@ public class BaseKeyboardParser { keyboard.setVerticalGap(getDimensionOrFraction(a, R.styleable.BaseKeyboard_verticalGap, height, 0)); a.recycle(); + if (DEBUG_TAG) Log.d(TAG, "id=" + keyboard.mId); } private void parseKeyboardContent(XmlResourceParser parser, List keys) @@ -310,6 +311,7 @@ public class BaseKeyboardParser { checkEndTag(TAG_INCLUDE, parser); if (keyboardLayout == 0) throw new ParseException("No keyboardLayout attribute in ", parser); + if (DEBUG_TAG) Log.d(TAG, String.format(" keyboardLayout=0x%08x", keyboardLayout)); parseMerge(mResources.getLayout(keyboardLayout), row, keys); } } @@ -560,10 +562,10 @@ public class BaseKeyboardParser { } private static String debugInteger(TypedArray a, int index, String name) { - return a.hasValue(index) ? name + "=" + a.getInt(index, 0) : ""; + return a.hasValue(index) ? " " + name + "=" + a.getInt(index, 0) : ""; } private static String debugBoolean(TypedArray a, int index, String name) { - return a.hasValue(index) ? name + "=" + a.getBoolean(index, false) : ""; + return a.hasValue(index) ? " " + name + "=" + a.getBoolean(index, false) : ""; } } diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java index 129ff81a1..954f264bd 100644 --- a/java/src/com/android/inputmethod/latin/BaseKeyboardView.java +++ b/java/src/com/android/inputmethod/latin/BaseKeyboardView.java @@ -71,6 +71,7 @@ import java.util.WeakHashMap; public class BaseKeyboardView extends View implements PointerTracker.UIProxy { private static final String TAG = "BaseKeyboardView"; private static final boolean DEBUG = false; + private static final boolean DEBUG_SHOW_ALIGN = false; private static final boolean DEBUG_KEYBOARD_GRID = false; public static final int COLOR_SCHEME_WHITE = 0; @@ -252,17 +253,15 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { private final Rect mClipRegion = new Rect(0, 0, 0, 0); // This map caches key label text height in pixel as value and key label text size as map key. private final HashMap mTextHeightCache = new HashMap(); - // This map caches key label text width in pixel as value and key label text size as map key. - private final HashMap mTextWidthCache = new HashMap(); // Distance from horizontal center of the key, proportional to key label text height and width. private final float KEY_LABEL_VERTICAL_ADJUSTMENT_FACTOR_CENTER = 0.55f; private final float KEY_LABEL_VERTICAL_PADDING_FACTOR = 1.60f; - private final float KEY_LABEL_HORIZONTAL_PADDING_FACTOR = 0.80f; private final String KEY_LABEL_REFERENCE_CHAR = "H"; private final int KEY_LABEL_OPTION_ALIGN_LEFT = 1; private final int KEY_LABEL_OPTION_ALIGN_RIGHT = 2; private final int KEY_LABEL_OPTION_ALIGN_BOTTOM = 8; private final int KEY_LABEL_OPTION_FONT_NORMAL = 16; + private final int mKeyLabelHorizontalPadding; private final UIHandler mHandler = new UIHandler(); @@ -514,6 +513,8 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { mPreviewPopup.setAnimationStyle(R.style.KeyPreviewAnimation); 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); mMiniKeyboardParent = this; mMiniKeyboardPopup = new PopupWindow(context); @@ -818,44 +819,22 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { canvas.translate(key.x + kbdPaddingLeft, key.y + kbdPaddingTop); keyBackground.draw(canvas); + final int rowHeight = padding.top + key.height; boolean drawHintIcon = true; // Draw key label if (label != null) { // For characters, use large font. For labels like "Done", use small font. - final int labelSize; - if (label.length() > 1 && key.codes.length < 2) { - labelSize = mLabelTextSize; - if ((key.labelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) { - paint.setTypeface(Typeface.DEFAULT); - } else { - paint.setTypeface(Typeface.DEFAULT_BOLD); - } - } else { - labelSize = mKeyTextSize; - paint.setTypeface(mKeyTextStyle); - } - paint.setTextSize(labelSize); - - Integer labelHeightValue = mTextHeightCache.get(labelSize); - final int labelCharHeight; - final int labelCharWidth; - if (labelHeightValue != null) { - labelCharHeight = labelHeightValue; - labelCharWidth = mTextWidthCache.get(labelSize); - } else { - Rect textBounds = new Rect(); - paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, textBounds); - labelCharHeight = textBounds.height(); - labelCharWidth = textBounds.width(); - mTextHeightCache.put(labelSize, labelCharHeight); - mTextWidthCache.put(labelSize, labelCharWidth); - } + final int labelSize = getLabelSizeAndSetPaint(label, key, paint); + final int labelCharHeight = getLabelCharHeight(labelSize, paint); // Vertical label text alignment. final float baseline; if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_BOTTOM) != 0) { baseline = key.height - + labelCharHeight * KEY_LABEL_VERTICAL_PADDING_FACTOR; + if (DEBUG_SHOW_ALIGN) + drawHorizontalLine(canvas, (int)baseline, key.width, 0xc0008000, + new Paint()); } else { // Align center final float centerY = (key.height + padding.top - padding.bottom) / 2; baseline = centerY @@ -864,16 +843,20 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { // Horizontal label text alignment final int positionX; if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) { - positionX = (int)( - labelCharWidth * KEY_LABEL_HORIZONTAL_PADDING_FACTOR + padding.left); + positionX = mKeyLabelHorizontalPadding + padding.left; paint.setTextAlign(Align.LEFT); + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, positionX, rowHeight, 0xc0800080, new Paint()); } else if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) { - positionX = (int)(key.width - - labelCharWidth * KEY_LABEL_HORIZONTAL_PADDING_FACTOR - padding.right); + positionX = key.width - mKeyLabelHorizontalPadding - padding.right; paint.setTextAlign(Align.RIGHT); + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, positionX, rowHeight, 0xc0808000, new Paint()); } else { positionX = (key.width + padding.left - padding.right) / 2; paint.setTextAlign(Align.CENTER); + if (DEBUG_SHOW_ALIGN && label.length() > 1) + drawVerticalLine(canvas, positionX, rowHeight, 0xc0008080, new Paint()); } // Set a drop shadow for the text paint.setShadowLayer(mShadowRadius, 0, 0, mShadowColor); @@ -883,21 +866,44 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { } // Draw key icon if (key.label == null && key.icon != null) { - int drawableWidth = key.icon.getIntrinsicWidth(); - int drawableHeight = key.icon.getIntrinsicHeight(); - int drawableX = (key.width + padding.left - padding.right - drawableWidth) / 2; - int drawableY = (key.height + padding.top - padding.bottom - drawableHeight) / 2; + final int drawableWidth = key.icon.getIntrinsicWidth(); + final int drawableHeight = key.icon.getIntrinsicHeight(); + final int drawableX; + final int drawableY = ( + key.height + padding.top - padding.bottom - drawableHeight) / 2; + if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_LEFT) != 0) { + drawableX = padding.left + mKeyLabelHorizontalPadding; + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, drawableX, rowHeight, 0xc0800080, new Paint()); + } else if ((key.labelOption & KEY_LABEL_OPTION_ALIGN_RIGHT) != 0) { + drawableX = key.width - padding.right - mKeyLabelHorizontalPadding + - drawableWidth; + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, drawableX + drawableWidth, rowHeight, + 0xc0808000, new Paint()); + } else { // Align center + drawableX = (key.width + padding.left - padding.right - drawableWidth) / 2; + if (DEBUG_SHOW_ALIGN) + drawVerticalLine(canvas, drawableX + drawableWidth / 2, rowHeight, + 0xc0008080, new Paint()); + } drawIcon(canvas, key.icon, drawableX, drawableY, drawableWidth, drawableHeight); + if (DEBUG_SHOW_ALIGN) + drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight, + 0x80c00000, new Paint()); } if (key.hintIcon != null && drawHintIcon) { - int drawableWidth = key.width; - int drawableHeight = key.height; - int drawableX = 0; - int drawableY = HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL; + final int drawableWidth = key.width; + final int drawableHeight = key.height; + final int drawableX = 0; + final int drawableY = HINT_ICON_VERTICAL_ADJUSTMENT_PIXEL; Drawable icon = (isManualTemporaryUpperCase && key.manualTemporaryUpperCaseHintIcon != null) ? key.manualTemporaryUpperCaseHintIcon : key.hintIcon; drawIcon(canvas, icon, drawableX, drawableY, drawableWidth, drawableHeight); + if (DEBUG_SHOW_ALIGN) + drawRectangle(canvas, drawableX, drawableY, drawableWidth, drawableHeight, + 0x80c0c000, new Paint()); } canvas.translate(-key.x - kbdPaddingLeft, -key.y - kbdPaddingTop); } @@ -945,13 +951,70 @@ public class BaseKeyboardView extends View implements PointerTracker.UIProxy { mDirtyRect.setEmpty(); } - private void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width, int height) { + private int getLabelSizeAndSetPaint(CharSequence label, Key key, Paint paint) { + // For characters, use large font. For labels like "Done", use small font. + final int labelSize; + if (label.length() > 1 && key.codes.length < 2) { + labelSize = mLabelTextSize; + if ((key.labelOption & KEY_LABEL_OPTION_FONT_NORMAL) != 0) { + paint.setTypeface(Typeface.DEFAULT); + } else { + paint.setTypeface(Typeface.DEFAULT_BOLD); + } + } else { + labelSize = mKeyTextSize; + paint.setTypeface(mKeyTextStyle); + } + paint.setTextSize(labelSize); + return labelSize; + } + + private int getLabelCharHeight(int labelSize, Paint paint) { + Integer labelHeightValue = mTextHeightCache.get(labelSize); + final int labelCharHeight; + if (labelHeightValue != null) { + labelCharHeight = labelHeightValue; + } else { + Rect textBounds = new Rect(); + paint.getTextBounds(KEY_LABEL_REFERENCE_CHAR, 0, 1, textBounds); + labelCharHeight = textBounds.height(); + mTextHeightCache.put(labelSize, labelCharHeight); + } + return labelCharHeight; + } + + private static void drawIcon(Canvas canvas, Drawable icon, int x, int y, int width, + int height) { canvas.translate(x, y); icon.setBounds(0, 0, width, height); icon.draw(canvas); canvas.translate(-x, -y); } + private static void drawHorizontalLine(Canvas canvas, int y, int 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) { + 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, + Paint paint) { + paint.setStyle(Paint.Style.STROKE); + paint.setStrokeWidth(1.0f); + paint.setColor(color); + canvas.translate(x, y); + canvas.drawRect(0, 0, w, h, paint); + canvas.translate(-x, -y); + } + public void setForeground(boolean foreground) { mInForeground = foreground; } diff --git a/java/src/com/android/inputmethod/latin/KeyStyles.java b/java/src/com/android/inputmethod/latin/KeyStyles.java index e53e351a3..fceede7c3 100644 --- a/java/src/com/android/inputmethod/latin/KeyStyles.java +++ b/java/src/com/android/inputmethod/latin/KeyStyles.java @@ -104,7 +104,7 @@ public class KeyStyles { try { values[count++] = Integer.parseInt(st.nextToken()); } catch (NumberFormatException nfe) { - Log.e(TAG, "Error parsing integer CSV " + value); + Log.w(TAG, "Error parsing integer CSV " + value); } } return values; @@ -163,6 +163,7 @@ public class KeyStyles { readDrawable(a, R.styleable.BaseKeyboard_Key_keyIcon); readDrawable(a, R.styleable.BaseKeyboard_Key_iconPreview); readDrawable(a, R.styleable.BaseKeyboard_Key_keyHintIcon); + readDrawable(a, R.styleable.BaseKeyboard_Key_shiftedIcon); readResourceId(a, R.styleable.BaseKeyboard_Key_popupKeyboard); readBoolean(a, R.styleable.BaseKeyboard_Key_isModifier); readBoolean(a, R.styleable.BaseKeyboard_Key_isSticky); diff --git a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java index 58958b610..b08b97a81 100644 --- a/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/latin/KeyboardSwitcher.java @@ -691,9 +691,11 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha ).inflate(THEMES[newLayout], null); tryGC = false; } catch (OutOfMemoryError e) { + Log.w(TAG, "load keyboard failed: " + e); tryGC = LatinIMEUtil.GCUtils.getInstance().tryGCOrWait( mLayoutId + "," + newLayout, e); } catch (InflateException e) { + Log.w(TAG, "load keyboard failed: " + e); tryGC = LatinIMEUtil.GCUtils.getInstance().tryGCOrWait( mLayoutId + "," + newLayout, e); } diff --git a/java/src/com/android/inputmethod/latin/LatinKeyboard.java b/java/src/com/android/inputmethod/latin/LatinKeyboard.java index c6e911680..cae0b10b3 100644 --- a/java/src/com/android/inputmethod/latin/LatinKeyboard.java +++ b/java/src/com/android/inputmethod/latin/LatinKeyboard.java @@ -37,6 +37,7 @@ import android.view.ViewConfiguration; import java.util.HashMap; import java.util.List; import java.util.Locale; +import java.util.Map; public class LatinKeyboard extends BaseKeyboard { @@ -45,7 +46,6 @@ public class LatinKeyboard extends BaseKeyboard { private static final int OPACITY_FULLY_OPAQUE = 255; private static final int SPACE_LED_LENGTH_PERCENT = 80; - private final Drawable mShiftedIcon; private Drawable mShiftLockPreviewIcon; private final HashMap mNormalShiftIcons = new HashMap(); private Drawable mSpaceIcon; @@ -89,11 +89,9 @@ public class LatinKeyboard extends BaseKeyboard { mContext = context; mRes = res; if (id.mColorScheme == BaseKeyboardView.COLOR_SCHEME_BLACK) { - mShiftedIcon = res.getDrawable(R.drawable.sym_bkeyboard_shift_locked); mSpaceBarTextShadowColor = res.getColor( R.color.latinkeyboard_bar_language_shadow_black); } else { // default color scheme is BaseKeyboardView.COLOR_SCHEME_WHITE - mShiftedIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked); mSpaceBarTextShadowColor = res.getColor( R.color.latinkeyboard_bar_language_shadow_white); } @@ -132,9 +130,10 @@ public class LatinKeyboard extends BaseKeyboard { } public boolean setShiftLocked(boolean newShiftLockState) { + final Map shiftedIcons = getShiftedIcons(); for (final Key key : getShiftKeys()) { key.on = newShiftLockState; - key.icon = newShiftLockState ? mShiftedIcon : mNormalShiftIcons.get(key); + key.icon = newShiftLockState ? shiftedIcons.get(key) : mNormalShiftIcons.get(key); } mShiftState.setShiftLocked(newShiftLockState); return true; @@ -149,11 +148,12 @@ public class LatinKeyboard extends BaseKeyboard { if (getShiftKeys().size() == 0) return super.setShifted(newShiftState); + final Map shiftedIcons = getShiftedIcons(); for (final Key key : getShiftKeys()) { if (!newShiftState && !mShiftState.isShiftLocked()) { key.icon = mNormalShiftIcons.get(key); } else if (newShiftState && !mShiftState.isShiftedOrShiftLocked()) { - key.icon = mShiftedIcon; + key.icon = shiftedIcons.get(key); } } return mShiftState.setShifted(newShiftState);