From 46b26d9ff6f3e071b17003f024669fe037ec00b6 Mon Sep 17 00:00:00 2001 From: Jean Chalard Date: Fri, 17 Jun 2011 12:45:17 +0900 Subject: [PATCH 1/5] Fix a bug where bigram search would never return Bug: 4690487 Change-Id: Ie8f3f651508cc48bbb043a0b308f7e0d1524371c --- native/src/bigram_dictionary.cpp | 2 +- native/src/dictionary.cpp | 8 ++++++++ native/src/dictionary.h | 3 +++ native/src/unigram_dictionary.cpp | 9 +++++---- native/src/unigram_dictionary.h | 2 +- 5 files changed, 18 insertions(+), 6 deletions(-) diff --git a/native/src/bigram_dictionary.cpp b/native/src/bigram_dictionary.cpp index 4bc436537..11e6dc250 100644 --- a/native/src/bigram_dictionary.cpp +++ b/native/src/bigram_dictionary.cpp @@ -111,7 +111,7 @@ int BigramDictionary::getBigrams(unsigned short *prevWord, int prevWordLength, i mMaxBigrams = maxBigrams; if (HAS_BIGRAM && IS_LATEST_DICT_VERSION) { - int pos = mParentDictionary->isValidWord(prevWord, prevWordLength); + int pos = mParentDictionary->getBigramPosition(prevWord, prevWordLength); if (DEBUG_DICT) { LOGI("Pos -> %d", pos); } diff --git a/native/src/dictionary.cpp b/native/src/dictionary.cpp index a49769bdb..9e32ee80f 100644 --- a/native/src/dictionary.cpp +++ b/native/src/dictionary.cpp @@ -57,4 +57,12 @@ bool Dictionary::isValidWord(unsigned short *word, int length) { return mUnigramDictionary->isValidWord(word, length); } +int Dictionary::getBigramPosition(unsigned short *word, int length) { + if (IS_LATEST_DICT_VERSION) { + return mUnigramDictionary->getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length); + } else { + return mUnigramDictionary->getBigramPosition(0, word, 0, length); + } +} + } // namespace latinime diff --git a/native/src/dictionary.h b/native/src/dictionary.h index 3b360d93a..1b41f69dd 100644 --- a/native/src/dictionary.h +++ b/native/src/dictionary.h @@ -62,6 +62,9 @@ public: const int pos, unsigned short *c, int *childrenPosition, bool *terminal, int *freq); + // TODO: delete this + int getBigramPosition(unsigned short *word, int length); + private: bool hasBigram(); diff --git a/native/src/unigram_dictionary.cpp b/native/src/unigram_dictionary.cpp index 7bcdbb498..c294cf3b5 100644 --- a/native/src/unigram_dictionary.cpp +++ b/native/src/unigram_dictionary.cpp @@ -932,15 +932,16 @@ inline bool UnigramDictionary::processCurrentNodeForExactMatch(const int firstCh // TODO: use uint32_t instead of unsigned short bool UnigramDictionary::isValidWord(unsigned short *word, int length) { if (IS_LATEST_DICT_VERSION) { - return (getFrequency(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD); + return (getBigramPosition(DICTIONARY_HEADER_SIZE, word, 0, length) != NOT_VALID_WORD); } else { - return (getFrequency(0, word, 0, length) != NOT_VALID_WORD); + return (getBigramPosition(0, word, 0, length) != NOT_VALID_WORD); } } // Require strict exact match. -int UnigramDictionary::getFrequency(int pos, unsigned short *word, int offset, int length) const { +int UnigramDictionary::getBigramPosition(int pos, unsigned short *word, int offset, + int length) const { // returns address of bigram data of that word // return -99 if not found @@ -957,7 +958,7 @@ int UnigramDictionary::getFrequency(int pos, unsigned short *word, int offset, i } } else { if (childPos != 0) { - int t = getFrequency(childPos, word, offset + 1, length); + int t = getBigramPosition(childPos, word, offset + 1, length); if (t > 0) { return t; } diff --git a/native/src/unigram_dictionary.h b/native/src/unigram_dictionary.h index b8e4914fa..c47db1ad2 100644 --- a/native/src/unigram_dictionary.h +++ b/native/src/unigram_dictionary.h @@ -40,6 +40,7 @@ public: int fullWordMultiplier, int maxWordLength, int maxWords, int maxProximityChars, const bool isLatestDictVersion); bool isValidWord(unsigned short *word, int length); + int getBigramPosition(int pos, unsigned short *word, int offset, int length) const; int getSuggestions(const ProximityInfo *proximityInfo, const int *xcoordinates, const int *ycoordinates, const int *codes, const int codesSize, const int flags, unsigned short *outWords, int *frequencies); @@ -59,7 +60,6 @@ private: void getSuggestionCandidates(const int skipPos, const int excessivePos, const int transposedPos, int *nextLetters, const int nextLettersSize, const int maxDepth); - int getFrequency(int pos, unsigned short *word, int offset, int length) const; void getVersionNumber(); bool checkIfDictVersionIsLatest(); int getAddress(int *pos); From 9bb59adf27d28a2d4e146c127683c06a3dca600b Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Tue, 21 Jun 2011 02:31:33 +0900 Subject: [PATCH 2/5] Fix NPE Bug: 4727778 Change-Id: I08f1204d5f77251c197dda7d2b332441f9f7123d --- java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 8657768ee..1218a5abd 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -186,7 +186,7 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha public void onSizeChanged() { final int width = mInputMethodService.getWindow().getWindow().getDecorView().getWidth(); - if (width == 0) + if (width == 0 || mCurrentId == null) return; mKeyboardWidth = width; // Set keyboard with new width. From 7fd3466060c39b075d4e6e17477602597a14a876 Mon Sep 17 00:00:00 2001 From: Justin Ho Date: Thu, 30 Jun 2011 17:21:27 -0700 Subject: [PATCH 3/5] Updated keyboard assets Bug: 4948171 Change-Id: If1e8e5f2f0eafe29b36a10d5f5e9e1fb26d67597 --- ...n_keyboard_key_popup_background_holo.9.png | Bin 855 -> 866 bytes ...btn_keyboard_key_popup_selected_holo.9.png | Bin 339 -> 341 bytes ...eyboard_key_feedback_background_holo.9.png | Bin 2179 -> 2107 bytes ...rd_key_feedback_left_background_holo.9.png | Bin 2105 -> 2022 bytes ...y_feedback_left_more_background_holo.9.png | Bin 2237 -> 2173 bytes ...rd_key_feedback_more_background_holo.9.png | Bin 2332 -> 2262 bytes ...d_key_feedback_right_background_holo.9.png | Bin 2120 -> 2020 bytes ..._feedback_right_more_background_holo.9.png | Bin 2267 -> 2180 bytes .../drawable-hdpi/sym_keyboard_shift_holo.png | Bin 1010 -> 843 bytes .../sym_keyboard_shift_locked_holo.png | Bin 807 -> 671 bytes .../drawable-hdpi/sym_keyboard_space_holo.png | Bin 486 -> 480 bytes ...n_keyboard_key_popup_background_holo.9.png | Bin 564 -> 581 bytes ...btn_keyboard_key_popup_selected_holo.9.png | Bin 270 -> 271 bytes ...eyboard_key_feedback_background_holo.9.png | Bin 1377 -> 1335 bytes ...rd_key_feedback_left_background_holo.9.png | Bin 1388 -> 1325 bytes ...y_feedback_left_more_background_holo.9.png | Bin 1486 -> 1436 bytes ...rd_key_feedback_more_background_holo.9.png | Bin 1470 -> 1431 bytes ...d_key_feedback_right_background_holo.9.png | Bin 1367 -> 1309 bytes ..._feedback_right_more_background_holo.9.png | Bin 1457 -> 1412 bytes .../drawable-mdpi/sym_keyboard_shift_holo.png | Bin 678 -> 623 bytes .../sym_keyboard_shift_locked_holo.png | Bin 610 -> 547 bytes .../drawable-mdpi/sym_keyboard_space_holo.png | Bin 399 -> 402 bytes ...n_keyboard_key_popup_background_holo.9.png | Bin 1206 -> 1224 bytes ...btn_keyboard_key_popup_selected_holo.9.png | Bin 422 -> 423 bytes ...eyboard_key_feedback_background_holo.9.png | Bin 3120 -> 2996 bytes ...rd_key_feedback_left_background_holo.9.png | Bin 3048 -> 2945 bytes ...y_feedback_left_more_background_holo.9.png | Bin 3222 -> 3141 bytes ...rd_key_feedback_more_background_holo.9.png | Bin 3317 -> 3211 bytes ...d_key_feedback_right_background_holo.9.png | Bin 2996 -> 2892 bytes ..._feedback_right_more_background_holo.9.png | Bin 3180 -> 3101 bytes .../sym_keyboard_shift_holo.png | Bin 1336 -> 1195 bytes .../sym_keyboard_shift_locked_holo.png | Bin 1073 -> 909 bytes .../sym_keyboard_space_holo.png | Bin 523 -> 523 bytes 33 files changed, 0 insertions(+), 0 deletions(-) diff --git a/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_popup_background_holo.9.png index 046bac69e668186a3e226ab8e37723d75a684ae9..d3d831484fc02d33793853dab102125d46221267 100644 GIT binary patch delta 807 zcmV+?1K9l62I2;gNPhzaNkl@S!cAm;Km{FwyG&--|zj3d2?t5WG z5EX$1RY%}f1jD`EcY9AZ9s(XpMX4bHWYxOIC{;m)Z{?)fzT5QzMp3b=q~-`@YxN%R zR70VULIYAw-GAc%HNX|?x7PxkB?^WD)Po9V8E64Lec4tF$LcREuq8%*t8gOQ)bqAb z3#&?Maizg38mvJSHcJIl^ScQwX`huzU=E7jB?_0z1p^J{YOr$^s{(Z*>COSnMJ=>S ziskgg-oJD>Wg+|4IaWsrVZxYD%wBdToDRs!9KZ~e_J0|}r9+w6`R4#;`%Bn3=d-@7 zr?s(uW_>Z2X7dQwg=_(q*A`%TZ2^|o{yQ)!yT?NU-!IMc&>Iq`)o08Glc_e0w!dtZ z#T9LT{s#Drsp3rrVP~%{D&1WUzkfUs?dw;><@Snj8?_>UUl_+(3z#;Gx*addbe8>ub~F%6jcRDX~OWFc^c~`vkj| z9(LOctk)bz4?FisI!d9C`vxl`U7Iaw?If0VkQB?VoyCn^7~~7W|0MlB{{1BRCnKd~ zMM7o*~CN)`14#E~sAwDgqvWsdeuWaDUp6V-@${;9&po@bFWo z(|PN%(teAGnq$Qfhy`enjd%DVLr z)lrTxVN7_;UUf}4U0u0q87O0O4wnvPVZFxy^2d4I-N{a7!nTsy0Nm@CtBgzHIK zgB8^ptfO8ZUC z*r*fl|0oD%qG8|ytAzS~V#!E*%yfWtKG8sCx188C6aW*tKND6{X2jl_!!7y^W!ARz zF2>Diy9f;8F=PPEF}<)a?A-ow=VV+zMT!4k8P}NrMYIaoT9wI>QsOwd(W%<~nTDm5 a{1pX3V;dLj?$0Cu0000>g*G*@&x9gfzCxRt zSOZ+rx%|^!vwIoxeOm)1@B%!J6guP!1Rro#KmH9u~;;*SGGbhTN67b6lrq`ZE9khgd%OWp-oM! z0xs!X{%P*no%H#>eF6or0A>S)&fLClYl?gym^1m}aU92S97|*(LY8%Q`K!zH>A@nx Z6$?Hu7iPnct_%PG002ovPDHLkV1jZFe1`x4 diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_background_holo.9.png index e99456058c83230351dee0132c2f8059239da3de..36809d48329b5955c34822f8ee3610cd4e93970d 100644 GIT binary patch delta 2058 zcmV+l2=(`a5xWqONPh?2Nkl~dWYa}a zq}>$gB0yUd$TDbm-E?1|=&t<}3UnQ0(`=f$ZJgFk;HGlq*g@>*ElbwRk|;_dDRN$2 z+&P*%qv1qyNQ#p911?BvNa*U*Z_d5voJ$tOEuh z3~mBQ16h;AbEaiCWx~fvrtP?9i=9KQN1?G-hr1VNQE+pZ)pT>FdrVcWWPnbTV=Z^Y za3Kd5CpO)M zkj1isF}W>WmX$)?*0#@Q~631yL4N-Dz z38Mlw(z)P+y)VgV%O^+AX7{nG1y_xB-ViOtr=|hhw|xWEhTA~3;WkihxD8Y^T-$0d zX_1P?6MqKRtMHVzOO2S)iBV~*9CbO`xeF7kb)C#flj2j$zOk^{!CobuyMLeJC%>{t zB-?3lP^Mw<;X9M~Yq`Fft`1i&*hqb{uvXyVhf@rFb)#JKS61G3y;^nu0qhc z(x#B&Z-sxob%(xRj-2kMZ%~fItvBxgRs8K8AAjJWb8+8b0tQg!(>ss2`qCs9u3c;V zq>qW_$0r&8XaWyzSc5XuxfTLe_2+kZ@6B7h`uYoGIy#y$_m)=Y~pE?t0F9LM2Q4a>9`d-p#qO+NtE+_3=^@LX)^fWzPh0jH22(e_4} z!g_`C7Y9$(_N=;FW%M5(usrh#9@upt4{W2tr$Hbz)B+@c1+ug=5)=z%mS#5Sd+rP! zT_-;VZ!E9#-@m@k=IS&G=o;|UeO>@|@P9%>WLSXkwvT@p6@$l*Rxm0Kedqg6q>C%1 zDxcnY$o<=QF)GU_m`{OK6ku^}8MUbGThI;)CD_VP2OsjQ1?C>EkVvNJIom}%e*CL! zmT574e~!_cqiihCq2lTq3hGn5kg$apYxgZ?5ba!1SbFDWCAMX-I={}s#2V>Lnt$&8 z9I^QE%Q$SyX8yB9MsJR>G&7BD=kdUbV}s#9Vr}S|uPEm_+M@t<@Q&^HhgscadG;w! zCf7-4UC6Q4hiqFm3lmF>-u#&P@kvZW7OD*tOg$8A0Gs&1N;ue8!1=tx&wD2xQ721s zKsV3}^aE#rK6muG*E)eNy86!X;(xb?85|xU-hxiHEt@BkD~#WrqPVq=y2XpAIJ$*` znAb+Z{doz0ob{b-)b)9Pv<_IE!cmaB@gVo&0q)VRbpknZJ!csC)>WRrHb5eA^fB2q zEEdL>m>8R(yt9FVRYbXQ8wIg|g1d{2^K1RMd%!QFblBwqJE{uxFyH&sn&}|gd5(=uG>PCWvgO|GW zZJ8t%89c}mE_Bd6?&xx_=YUSq9lcz?G0deeKTj&%__Ju0vccTL1*Y!JU{vL{7O(;} zICk)yDj`5mach1LLf2tpp?|&|lf**OV;!>YW*GuL=f1C#RHldPFJIx(S1ypw*8eo+ zZn475C-Y1{n87l|eL7Sf?6x+fW*|sO`pP!WVI3!e^IfAm96B)hrt z^~(%>?INAs*=LxKU)%X2(+?i=_|an=TR??Dl}B-@UWn1FU9#;wFn?6h7g@z?)gg2z z>v1^-bH0ScG%OaUmYEovrC5;d zlt8WJRQ=W$r|Jt;-Jt3~>aD1j%Rv_hA$QQ#*U$AES2*{=S)NQTF?ny6>aG+` zJC*0(I|yMPU3fRaEB3uEDK)-_0LJ5oPTDZoF`y|K=pX4LlvjW z>faEkI)FwiYEC(ImG-}!uh8>;{b|PPEuz}s9Ebk{_}u*ucdBVz00000NkvXXt^-0~f?SCW9{>OV delta 2130 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 FV1mDv*2(|? delta 2054 zcmV+h2>JKs54jMKNq^f(L_t(|ob8;;Zrex}hJT8>IFWl=mK?d!7&yIZV}N9GwPiO3 znN61S01e~~vYprH#VoVROU!zDHlCiqxj?Wni?kCXwj_&`b-z%gMY4KPJZ6ca=y5En zEk{3aV96rw;^$MRPMxYU7-ImyFxMo-9IkVPC230cTo+x)9e>Axl7z1kfExhf!uu~( z41f*b6oBr$CmWF;C`qvB^XJe1vcA6lkHy8sJK?lPoF;h{@Jr<|CVJrZCMuPK^l-G39>B1G|lSEmoNXiy}f+^z;a9k%%a|V z0Yt#z#<#Y%o`2c4oih$z90pKRM$5LpJ z;6RReuBVWY0FX3IGd8`Z&Yn!ui~~r5J7W|co)NgNOn>o~JokoWS#!7na-5IS)F?dJ zm)CPC=EeXdY}@w6g>tk6N4KPM#6&V%93zV zlriS@?70Lvd_=HgJ(qMgLt|`Yk}=n?B##YgoM(RNHH805&Wv>|r+K#zQFFKZc3tEzwc^hsS?TMMggGc8@$dvD&n`4uiN8=lpOac}{^-re2(_5S_) zS|X9S8G37HO!<8NKZC)b1HSq&0u~sCEB*y60Drb=nw{6LU;ljP&YizW(!A6_s#GeU zUcGv?4ZbjGVi@q5yq;^rg*yOX?CtHnip659tE;Pj4!_w~U#hAe?(FRRlQGr--xxxG z1H*#oxhC9QCB1j=-u=t6tk~__xBoPyXSi}Q48z#p-~Zpi!NFSqbpTxe8b$%1NnB|V zH-CiCI@*F`aaC0tjInqolgUb7P>e7P59{{8Q+yb!T*ew8=R4Vn|#>U3x!oor#j0c^T zbX`AH6s2-_czE1uwd&w8l#IZ(!QnQ*0oR@PZ48Hmp^U)~E-kvzZW02#3?K^*_kR|E zbTXOzV=kB5T3lRQ4B@#$(_k<#E0s#ER4S>es;Z2!J~$wP+6T~ctOFibMQg(y(8R$k z&~xc~5xB873E(Smz!|uJmjR^X@%T5nT<(XZrKP3GJ^tinS(bHja?&W3N=mt0R&Cqv z!yW1AwI*2Cv5sT(x(EL(VPp~!w0}QW+V%R&qaes82hmwi+jsq&D zRiAwjGDde z)oQ?vgX2c}AfV#CG=Iu_2d0Sw74^9zx|phofGJfQ@nBh&v+L{Yo7rr3C>Pc=O(&qu zW|O9$1SH5q#oW_xP!hYmn3HV97iC z;KdJuD;`qzc6slhL}p@m3TojB0TngL1mAl+)4L{TfLE62+!loe@>~Ke&gH#b{>lRt zHR+WEdPq}vFMq~W3JG*bLj>=gDa|BMQDH38h=9FIM}6?rO@@1nlK=(*4J{W9Q(;!F zyqN^8D$8(pSNhc_LYXc79tyiG=sim0J*(xn&uXTDikeo<)o-m1@cd_uDYa#4k{DwM k*n)8F9(ckU4~{YX2JjxFvq&0i_5c6?07*qoM6N<$f=6@q<^TWy diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_left_more_background_holo.9.png index 28975d1317f714295e5fb41ce5718068f877a8e5..875c65695946543cc58b228352210e114b061e65 100644 GIT binary patch delta 2123 zcmV-R2(CrLJ74KU*g-WZ|l9y-e%_TaQ1l4 z&d!e4@viH&_bdJ6-JLx>8UwSP;-A+v0%d4_ z4WJK5Xzx#|1mFUtstL{N6a>o9EH?4ZFTOMM(v|n(1B2(4~QDj7mGlpoJ#%r-D{;A@6Q5G z)pWoj=4)#J5q}^C#GR?P-cF0?P`PO1bVt8k=;6(ja+#dZ(tnmb005IBwiBQgr~(jfNgaChS@&;#^imlB6`y`8CYNpg}Nt3rc8 z6>`M)^$5~)6Tkqr-Gv(_yDT|LUNL+;BY3W?$J+$ZhksM?hmEdu*_Ak6ni|8Gefd3C zkGVa#P8V*N97l4JydwDK0XkfDU^iR9b)$!Or5z~OQ6W@?gu1YxyRxBuDTWY!&+bZ> zsU4N%#&V2XihQ}XvnGC?c1mm1^4V=g7d?D#3J?1 z7Iv&BYJYHHq@OSK$My1xP7h+)E^mK4 z&q}`B)HzR#=U$x{Bx)GDubVvv@Y-qlS${0Tg^|9d&v|0t{%5-o_E4O3Yl{GWqQ1|W|7-z^(7r2J-W9>$ck_fT(7FW z@L7^`ueR&bI$Onjo`3#v29KAEZ#AM3TmYAQH)pu;xs%(=`3pzf&n?k*g1N zV1J<&uKpj84eWB3J0Jdu^WXR$Mz_?ktM#P?ZhvqSxiD!{3wT$4&vo(OR)7-sZ{8-} zJIUnpUu*wWcYuO%a!9vu^i;A+ z%>L^$=I(zAYy&yKq8{+B^pysELx@^O>wm3Ug5+WfArg!{JC1RJVnnG>=Hc`sKKUvx=xscauH9LVXooZ3;;sH#iY&oFiU3WG!Sb-JUhN`KjAeQAr8*(AxuBtjIBfE3gMkgr-68CP}7;0R~{%);j3;G^i{kWG^HCE?wbMNDc}?^g6GAfz%bF+7_Yu@g^9_D7Jp!9om|Id zb9INcxg^W8CXTH`(Y;gw%{MT0T>pnu2$`Kh_|9@a;C>|FA-p*3g$TnK<)v#EnS5dL zAUqB%;R?3RG^=w-R%T7gr9AaOm6z(>Ux!$y^TJn_S=x6kj~rI;`B;x}I;5^3);QhGCoxvhYafX{_8~^-CP#`d!Le3%(g{x zVV$K}lU!VcyX}NNFN4NZ>vUm|G?C8pt_!PMAuU_wE0cP}&kTx~9FWr~=K(nEJP)bvvU3G+}r_Y4}8^nWg|=cIlwZJQ2~F71^I zE5M^Dz=ko**I%Dv5&Gi>!4{;qg>dZO*rT)8*(6254*_aq}myi4$~h) zRUR6Y+<)Ofb$_)Y2W^xK>tL047Ldgc1=q!c?(g#cK}nfS?G)7E2m#gA$^<_w7q*d* za(K^esj#3tR{_@N^8PM=hePBZ2B_$1;r$*uQjC zK&Ea{yvH~dz%Za~%SGF%c2=(ZnS@$ZR*x1zaDAdJvqYsYLhUXK`X43oKdTkA&#I$= z>N>2NYtUL9)IvNKKy?{Hh_F2#$L@w(tj6Gk;Qwqxqx1uqD;@v<002ovPDHLkV1m@T BBR&8C delta 2188 zcmV;72y^%S5WNwQNq=8SL_t(|ob8-jbJ|E2$NvHWj`8erabUc)<;>G~w<=lZW^nwH zr^(a2ZdLYUWIxAzgS_P{>~m(Es@=quTd{HNL&k|KHee*o{URig)cYVcY8oNq7>Fn35+!eSQ6xa5%g+o%_95B7_*NR_nj7UcLI~)2B~&0O)XsOnA5y zsvm&=(W6IydHneCZ=xthbX}jx&7XG(f&ftz(d+f9&z?PdxV^o-2f(n61x!T#TmU`* zB7i_To&Ea2_V)HK0J?BOMjw|GVet~d@$|uQWj5Xh0bDZ-gAW^XG17HC0DmV<6~Sd+yyvnpH)NXT9Il59 z!wA3%p#fMd2gU&`Tza6NEtsb1pWUrqJlTBMkT4V$SXUO94~c{j-m~XoWb^UEVK&lp zsrn-{LWTwza}7%1Y(S$t^QzYn#*#g-8p&zi?5C(J1$Sv_39(oVKHu}y_`uprAaUc7jL zg@px3k~H=)0C@TGC6dV`8jS`TjmFs5^n^)iT`2F_n+e#=DI$idB1(eBT{?qIAny_XchQI=YaM{0r z0e`^Mb-nrK&6{6u-n{uU%>(BGipAoWot>S3!-QC@tKp?QX zy1M$e>EHJGmn_Q%uV26Z7a^nxK!pR?Gc2&4tJ^230NU^0zkhBRM&QPc8-JbAGn_kV znx^gT?fq|mfBzkT3V;>>1;c>*VrLrI1%DxQ9&N$4pe)N(LP#(kk0*pH6eBcE>wfz5 z>GQjH@7`1@l}`Z507|x10MubY*5ItZ0pJdoR@VcJ1p$cVa=D?ZDoG>~$;%9w5JF0& zQf+TD1b-~J*8#-B;qaf+>GXr8rKP1QJonVp>-F?vu~^RM z^Rg_7@G3?LQ^2ER|I z(_7JKG&;G*pS%piFpiIptNDChDijK`X__54Jw1J`FxIlIX&ZgrhI^JUG=GTjTA$0V zzM+7lumDppUIq~J`~BDN-@pGL=~ij}hB8glER{;NLZKk%ayiK`3>FIOr4(p;gwf;d zAEXD5(HY>qvYZFJ2n%ooP8{xs2tg2**VorKR##V7&jRGEB7~4irBXjSI+FAGywvS> z+ZYB)y_9YKEZhzTVbb$yY=7mw)wOuzSrvmbpdifeO$?6Y3;+fp#LQ$euR5JhXKiim zN6c_)o)AK6wOX@KD9G7tR?;-B31?|NwGM{8lz+{_q~}pDrNdlyk+bKbWzTx9{gdqh zdALLN@#Dw$s;a8DZr!@&bDK(?pz8H{OOm8wHk*|cMXAFbsDeSLJbz3YDp;UB#wgGe zJ(br@_ffMaiFZewnt}E zH5M>U)rLIS@AoG*Ha0dBiNruItSE{~f!1m@I{c(SygZc6J>5Dbw#lfwDSlnlvgGW>YnquJva&V0DCavr7*a zBzDBa!sKHp%|qRi`)>}E)g*GzQMoV+mU?FgR`G+vHQ_+#n>^nsQPVLv1T}DufU=ro zg3oWybVp!JC^60{J96pYSJ?a^nW3B<~w+fKDwJou;N)x#BYkI;%{#76I<{iK&d1zJ;b;7UZ`Q z@q4x0)>&O>psZ$9b9I}m1GxXJF{68#nFK-zJeD9_x(A-HMuQ^+{|8!M^7*!I_9*}W O002ovP6b4+LSTYOoIC6Q diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_more_background_holo.9.png index 462072c522390cf48348a3147a02eb9f9386e6cd..4bd77439562a6ae1d4ec7b0f526e9cdd98cd27b2 100644 GIT binary patch delta 2213 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 FV1hCxR_g!& diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_background_holo.9.png index 72c474c096bda980c5e6889dd6200755927a4343..e4ae59db5d9303eab2d1813da86a62f45f5322d8 100644 GIT binary patch delta 1969 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 Ao&W#< diff --git a/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-hdpi/keyboard_key_feedback_right_more_background_holo.9.png index 8035afd8dfbb2e556f74d8093c7999b921684f94..9af394e953dc6e72f7ab4c2f1718fcca628bf08a 100644 GIT binary patch delta 2130 zcmV-Y2(994V}5g066cB}f_HnN1kvIGP|BgpXxTwtLZu5JktAVIMZZAE9>R;7aE7GO97e*8B7?GuXMpNZHh++C!+?oZ>caJtRg#?Kl^#O! z+)om8(#jSBNVrif%k9Zs>9Q?#m4}g$Ta|rz*@Ci$2(}e$MIYN%wjD%*)uXm5a@89> za%DOugd2WWx+EV3w#pKqHgchAhE_Al=t`Fm`fRp_m0x5U-9ltTs#|aAUiM8?N5MVQ z6XC*uNq;C%8)$y}qCta;C*!2z;RAhN$D~>p22B3;{WAm&gMU8W;;)m-4ebN?%cW7? z8}4DZZ1bDXp70`9Z0I{XCUV~$>LF+t``eA~19)#(eijb}xOmd6* zLVtdjsT;FMR?r|^305u{7n%6@28k16B;R_wnSE_52>~MeWqn6aGbR;JH^!J6F>pE@~hxht>)^*aD9PN7Rw<9#1JCP^VwC3 zd4m%t2MC5j2th}-`I-AnUi%bS12%v(uzv&WAp_F#gR2U_3UCCqjIp(vVSZ)>+k)PK zUP9r{S*Z|0@bJzwUrpQu){$V{a7$>>>xNUi8sV&J%1XPiEjE_6crv}rZZ=Oa946iq z!!Tao!n#$qxOe?7Po^hvz^(zCKnBPmEut##^@=?AvX2f;d9sZVMYh+|JfB@+;eWv@ z<&s6zj1n~uR+l^OD&~vazIu!0`G-iT>qxNcz!nm29>)@VBiBprEJAN3%B4Lv7B`rm zdBN(lGyw757{O3`+eU6X$Hd3uq}QI}fL+Cj+HGXi=8-I_ro(=b>qMyowS@eI^j4_) zJfGWP<>@MOQ;TFbcQFD1;yqCU!GHFuz-_H=G5*mF_I4I=Y(TYj9IwseWDHfgu3uzT zPbeI?B_z;7CkM1ky9n#H*l9{=|Rd)Yj}PzbXP{CVl|61T40q+D9T0lQjh z$_}!?F7kZKc-$*i??Ol$IZGttZGuaA&= zC&?RwwMzi4lx^G0jDN+G=^4DiZsJ&hSH#v#e;bJ!9kNQzbkI&z%H{^Gzs8Y2hN&GR zLHG9eF*-KP$k`-`HyU3{Ie!Y3i)Ft2*Ox5MKSEyen^gO&8oZRp7N|4j)pd|d(jCbP zbQtf5_Og(;tC`y0IzLi>a)8mXVN!3uiP_WK+gSH@@_g~hEwJkDnK|rWqJ!3Fb?)i&K_Xi1)1x^8hDq|RB&W_L89FmaBzCyT z%G&caZeN|CTv|m!bPrq#>@KzGRzvq99py+}&o-1ltJ^KzpcPOr+t95;9UH|kOomP; zIW?9dIXXZ%da$*?g?|SN+`E1UAvTZ^>y;5?kT#%C5E=%nfHXty8iigAQn0Hp|JuRO ztGWF-N+4j8dMC-Lucdf%bilWmB!u9>7Y})KcM1tr2dmGzR1T}^1-=89AB1MAo=1*e`U!@dS)nYxO!EBEEPvGlmuh;drOJn|3|2q+ zR>%*uvJK_WuL|0U=up^X^n8lpvq^gU6a441+iWb(BLV6efwBfY)ly)6pO9?ygj+2) zXjRtKZNm*(9|-Gtv_2!$Z>6`8;4(Oam-1J=Y^YMLhBJajPV)aL_dw{*INa8uXB=Kx zhn~_Y|1BcHZGR)-DyZ&MOI7+_Ia=K(cAV5GX!k(q2CYXg$Y|U}f=pN1HcqOguZ0~6 zSamYTRgHkwtwRT`{8y!D7BX^k$V?zhb&WtR&m0+8bpq`mFVG>pr{7U+TlZX5BHh#4 zp)-P)b-LZ;H(AlGLw|fpzg?qh1ZD^!{8n1JPonv&J~$!xA2t-n-F5;?^#A|>07*qo IM6N<$f;~DwL_t(|ob8;;a@trP#y?5i1SW~Gjkr~2Y8JhkRAuEPHH&mM zvz%2gdX;q^VP0S!AWxA+KY^<&)s?D_3&)8YyP9;I6gExVHeh3J&Ba2}nZ?mT2O(s9 zZDaVVP9YF7=luBVJO6XRAcOz_!AzGaVsf47sw7;~HMd1)3V%m8Py$zE06y;dw2A;Q z0H^@E=5tntUr_v#lIdsdh~K`ZtkB~Q{TxFAw+MrTEAv8ng70g`SK?K8k`{$ zJ6r};0w6tm_UxPI&!4}MBzJ7|AP52^NrGV*jaRQ;eY>)<@*4o%EIeT1v0n>7 z1cmE+^5n^Px__?U>-Bmwu$%-zfGCQ0mY0{mUs+lCAAlY#%jko0f-8agYd{c$MP1jg ztIiW6LI`wShbW2((EbRpfdvNP@|NHO5K>jue;t*bRP}m2AAk@nThKun5`bC&FA)^D zA3)H&c%~83G|dYN*AE($13X0xhOz((*9$<_b$tfcMSr@kdts%i9#EeBB!MT*Y(WHt z>(_PN?#VN8G7N*=Ix0D-GWmEh7_|eD%bxI&D*})RA$IsP zaWeTZumhF=3`Z_7I6|A|q3)?7gt)SDi%elQa2QJ?gK&1+U!kT7?%doQB9RD0ak$xT z=OjtO!hga7g2CXKK5uGLtw>!iLjCBqGmY0_ikH?{D8eYGCjaI8Q z)@M#lwwjZvd_G@-%L=ePa(Tdduh(m))9JSlA3pr|mDhB_baHai-rCyw z41dZB7!$4mx?G_FP}Ax3&!JH0n`kup_p7YzB#97$Y&QForfE%By!v-MdmlgHAi!KZ z18@((5`ZLt`;sL6V|jV`KZ>IK?YbIplT|1bwl+34egLoo;46RiYWn zTCrH%28DVA3ib#<6%=k4mL<4Gu9NIp1YdfZrgbWnN+qAq|4}ZNYXA@o1_P2LO|)&a zTCG+(onEcgYQMt*TZR?2bbcn`oyv)Qce@9&p(c6R>gbUIy0l0333-*|sMI5;?1TU&dpX@6P?7TB^` zm>o0$v_ade!C|l1s7CS~8(W)ashJEQXqFIH=FG<+_sHJwH%q|h^UbAFsaPVBh|SN> zhi@9_TrQW(X0yM5-u8BnW!XU!)DG-m$AZhw+0!!yxt{}L5VjpS|9XHcJ^%q(mc#e& z-%rG1vFP2qcjwMc>0XAQ?cYU(1t=3(1+7-)V}=fz+|%Ut0hvt$0epTBltVPP?qO2rgK zSquaMm%8h+(P%W**4ENyM!>)_sC*vF(k+%140T>kx@c#@gXTwd_TlqcBAT7!quB>Q zjz*)=WHK356lKxp^M74vuyS~Kc(}g4p4K$23<}ZSaWSxM45wRTZAH4wo_dsRFn?y- zE$yHgP$%2qt%F_b7X(386eXHWCS%cPG~)Go&$Jd;C=?2to15bSid#_KTt@$6~Q)GMS7mEq^UV+$NI`AiPupL< zeAxnp%7f)cT`Y%X^98OQmm7qu)F^-EBif#I@cugrGT#yQGY(0TDO$K#PxsZ=Z;k4MAd zaOlH_59^gmC4UbJkk1I1HSnnx1MB(=$#ENe-Livb)0(_(*g^9h;V6&hM}+)VdL0y8 z16Jq7{FR?JWU1EJ8NoP>{3~Ve2<;h%-8%S;!zt_FQ#$6qDk!)*C|m~Bo@%j~zH>*b zy+BH4bRrI(X2`e_4vAgGO!( zG!tlIaE^d2&s-W<)__Tn6KD^dhu?ngnD<;ZMcU!Yg)@TFDm`g(8?5lw!T)^8fVmF? zgLBTOPQF~UqLZvqpjlz(?34cdPxxIYUoKj?+aP;tCveA1{Ib=B^4GIg>bA+glL)Z= s7msVH1S25?E-NjwAELQyG&n-=f4)a!#5kszp8x;=07*qoM6N<$f`&Ob8UO$Q diff --git a/java/res/drawable-hdpi/sym_keyboard_shift_holo.png b/java/res/drawable-hdpi/sym_keyboard_shift_holo.png index faf6b294bab4eebbc32a291452dae3f7c7149476..c38ef4f50981a2e242f8dc4a7d40460b093cb069 100644 GIT binary patch delta 671 zcmV;Q0$}~}2g?SKTz^wZL_t(Y$L-eHZqq;%#_?}#Czz^{DwT`A1EgXR?}Zcr5=fLA zDp3ic@_sbQ9nIG4cI-HRF2=!$o5fu&IaVY`KJ)XL@z^uc|9I>$#nP~u6iY9Zg^?>) zQliALKi?@x`pNhCSNU=a7Q2tcqcZ;$6BAuf!Fw=k$@nrRCVwJ&3^pSpB4*48nLUin zk-ulnkdT1z{_K)WYrLAD#;=2Bz?3P|`>}a4e$D|0(do1~Wx|-r-C0XUm+3fO#V_!2 zaPY&^Nn^~I5u>}YTSy@s{IEJ|j2JRxSe#ACpY~aY^(84OWrOOlF?GGoWpUcF0~4&CkSlC%>%XhyF% zq>P8No{qu6qs-y>Ww+j;Lz~WK_7?e;6OK8ef{(j4rY=4ejyUFI{H9ZH)1pQDHk*+F z_MMq9A)Sxsl(S?E<=(mNc84~WyylwL3hPKnj>@w$-hUy<{<0(eJZIs`MeB!z7Vlf1 zRhB`^kF=S6p_Wfe@mmi7qm>M0?8iT!tmoOhCujP$R*_L@{DGQnw&D59`SI*R@!I7? zk^S#UMl2L7S!-wH1KPBRrIn#TVeXy_+c8g)3_^=s7w53OPDyC4`Q~MC$HJG5@1|?J z!rO<+$Y7JlQZe!{>|uAHX+xu@@|2+^8Ht@6hCP)^i(03aRknV1AC&xjTxECdRJNlD z3EEyGNp2FZ#Fn8!a#d0(_lmCEQn6ws<}Rp&k=eP^T8JW>wg2%r@fS~cYDpxvG#8U! z0~{4IFjO%xIx{#rF*YqQH##sdP}xEolaK=(6*DkYF)%taI65&lEigAaFfbv6`lpk@ F12N!zPO|_2 delta 840 zcmV-O1GoIk2J#1xTz~pWL_t(Y$KBS;sv|`l$MIkFmG z|N8X5s=6-H|E?f*jy1c13S=Z9ze|H1VvqvuO<$J6zvXsgw|{p#;Bb02sb}@cDTf5R z4?{J1GizjIxO#T>*lbQtZf1=Phr?m(?(x`yd@XBcIGnfMl9JZ#<=KLKJ!?7~&b!au zoz$m{87KB~W4laR?>^xwwe-s|V@8aU^wHTF>2h-FKIVv+n4|GmBSxGvOvaDK=4AGU zYdI`-YCqzL2!Dei;&}A+IYWjFlJToMvjzF)ocxe0L>NiR+4FA(4CvEO&Ua%Mq{Wg> z><0^S!4ALe)2Bx-8E$6_@|K;E?=O=JcJN(~9$mW0@J1z@lkS#nTT;@@zPCy)*xnCa zI&^3!gUu`=ERoK>yPhoAnB(sKHf`FplKy&jPIgjKQh%4;<_aMjHzW)(Pjnu%XwjsZ z^j6t|d@Co%HoeVN_KAsz2v){4AS5E@&_CJ!u}PB#jfdUq9F*7@nHHpdhv#^T6Hcgc z%mE?Gk3Zm;8Yf)iY5#odrv?q`)E{={tU(I3=T7-qHKgLu$PW)B>E6*@WrkUvio0KM zcUD_&p?@TP`{XY<`9OgpccV;FB9TIcOT!ruUWl0ed&d3Reo2u`Ah}ogh1w#p{E=2B z%gB`Dme^ zex)FU*GP6H03jkH`E~E1Cb0gjFS?4RnwYgu4S!ToW}~*Qrm9q+RCKRZs z{JK}M8buTHI|}k$N65^l2N}tmKQ!HxuGwTNP_VLi7sYF;sW$B5oA>t0+C1Q2xT*ff z@~^ORMY`_q@KSUbfd^Xfb)?Nyij zBfo}N|6@P>>2>3dR85@+KV~?}G+aEq;f>J&?>SaE5wlkL@OsNnQB_uCw7GX>zP+T! zxxd>V85d7#Jo;^-S83Rvf}&IJOO}1Pnd7>PU441XPt6%3cZNzFC6*v#@?E1}Rg7wePj zweGH%9=^ow=P{KvuI|PHDn2vWxRrLO^0jX_)Ht!>MYhhx3G=s3xA6VLXt&bF`DZj| zECU0BYKdz^NlIc#s#S7PDv)9@GB7mMH89gPHV82^urju=GBndQFt;)=2)OAajiMnp XKP5A*5~@KQiw?z>U&|+dV=@E)Jty_@ delta 636 zcmV-?0)zdZ1*Zm(TYmyCNkl{n)}jI%gg`}N zg_=AGufPi+@h-HH*dQbxgG(tWO}Z*{Q*xOZ&(9)`6FVN)aW;sNj^sGbm)|ov83X^_ zAXxZXDF(uW2ZFFgKHwE1E2xH#?K-OPis#M0?Fv`I=jK=+ntw;Eb9t7a$CYqPA8Tr= zL;Y}Rc1)Tr{aaH}QE}8$%drvpO#d2_BaS%au%{lBW+U=xisXQU-e|KF89x2XT_`a48KKI%SjiwaxXVT|pR+naYo3)9Sv4EBjmD`Nr(f9#nrFWz zSxJ(5ox8YPDC4v`)$McNW?4z3yl2}}a)J6;ZLQ9*GL!Ny+q_aZUy7|YSNA5Y#3}FC zHm@!Y#z#NutqCg;c{^<5TB(e)Z1engC|IGu*SG9@Tz@YGCC}{FUS8OT5qjz-Kj6kv z8KG2ncxF84}q1Z^13<4Y#GB;E)G&(glIx{&fFgH3dFsLq;-;+H892GJ*R53I< WH8wgkIV~_ZIxsNVb1q|(ZUQkk+90t2 diff --git a/java/res/drawable-hdpi/sym_keyboard_space_holo.png b/java/res/drawable-hdpi/sym_keyboard_space_holo.png index 908f1ed9a902b592f3ed43dc263e8ecbd6b88f92..2c350d5bb0e3075ec6a57b621c00653fd262564d 100644 GIT binary patch delta 352 zcmaFH{D65vO#KT_7sn8f<8LSX<{dH+aJ!!}CrC`D;daSI>5VB@S%dhmvQF=;Vr4m5 z6MKZ$o=Nm%WN6*QB=x?1&u_@B2+^AAwKV8wyF^1>^(lR>nMonmtHB-Ve)gvH=l=6o2Rzua<@)T9o)?yvZbz^h9m|e$35ZLZD*2N!XIa7W z)tw7H85kH;OI#yLQW8s2twNKFQh_vsk%6J1u7R1Zu|bHTft9g^m7$rgfw`4|LBLHX YX%ro~`6-!cmAEx1w)|Q?c`KtK01zXRD*ylh delta 318 zcmaFB{ET@*O#M4g7sn8f<8LQB<{dH+aJ_%SGonCgN0j*8&{sPxyx%o&%)H+kE5t0c zB8-)Lf9u=8ML$1(PR=lq>UCRuF=LM=o5EoOhZ7;UgA!O6WF%!dm~3qg3^TX=+Gx$j zbgt8wDMjjwrsuCq3$j>UbB{k>@o~jkrJDf?Oah9e4FsPQeMobQ26csfx4>2^cGBvX@w$wE+w=ytTp*QXR=)T98nP@AmYMDa_KX;^Z|st z!r;!83tbF8i=Z2IBREW)$#0vkt~-mWN>@6a8Ov5g@Pnc&P34|jw~FsJB0_}3jVMJj z+DYwrr+_^m-La-g0+c{b!_HN0u7GU#;`P(s@Zm_MSwALg(SOC+^z+AOU!FgC1?T`M zSq;<>VMc+Bs7!`sw>`BTQQQRm%jPXH3WUh-*s;rcYp`LW8e{R59o1qi4C?bd<8xL z?}1Oi39z8nj|{duPTYchm)Ug!bKId4n7aR+xVdi=K!4Sbz}7Vf##lovfKvwy*ELDI z%+G*tz;|HT1X`aDaPHsM@p_o4J=a(KXPi6cbL;O*i3mzoRFwm8aFuG_+vPDHrYB(%iiN=G@3?H)c1)x&-3fWVt?^|JRW}latA1#8mJ3A zkK=fnrfI({OCJtl7!HQR;S`tw36R;Hg$^VHj^a2z2fQHw`prPck>h`703F~Y%d!{V zgnbRDov{mwfa9Vl&K?2OcR;uxo4THeoVFo|NC2DyJ!+{F$Bw8jL|b*$S4czZV0Xpa zYR^a5H2FxNJAZ!bJNj#S0{wp=S+Ca{V@&#|4vjG@c9pvkBtQw6`F#E 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 index e96c8c5dbb858246fbeba5871d8d706d8b2e9060..a2df532900f27204ab00e022856fb36d16c9b734 100644 GIT binary patch delta 176 zcmV;h08jsp0*?ZaNg=UGL_t(YiS3oa2?8+?MPJml1^ZAzE7BT7_9O_Fpe?D9Y9fDj zb({b-Fb77FwO+sl*l}9lIx!6bNgH5kkN^yU1+eu6L!zlc&}C*3jT1!P+>oeuvWl{F zQ`R5(d+7(FEEG}iqI*KkhedQw5M6zjq3L`8Dw=6rMGBrYYhrJHTA@&g!b!rpua%U# ebz21`@dlF~ACf_{B+~!@002ovPDBK*LSTZNR!4;Z delta 175 zcmV;g08syr0*(TZNg=RFL_t(YiS3oa2?8+?MPJml1^dti?Z_HL_9O_FU`?)(Y9fF3 z+%A9ysDW8ztryS&2e$QX5Yr@(v;#H<3BVLs1AAXEBw88-Lsk~iJVE5m4T(l4t0+r1 zW&M%Amwq71LJ^HFx+m0pSVWfu(babun$9PnqMOE5q~J-nCXVK(6$*tYoFtt4T1lx} dw^vXSZ>*jllKZ0=(*OVf07*qoM6LruV1mN_NNfNA 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 index f3be5fd6c257c6265fcc49cc85bd84492ff5b9fe..cc7dd86aa25e45a114b670d322c993059237a5c3 100644 GIT binary patch delta 1279 zcmVp@OK|6zC&GZB-g4P3pvn6Wek8e%(7P=1x4mwM(1a zSaJK8Mpqt>?ep_FbLN~u2mv5?wIyuM*GI;4=DdI(@bp-B+Qhz46WZryqO{G?4HLSm>|{ba?2KFW>iHcz3?iGO-3I z)IA1_`8?F`{C2tV^=H4*2`qe$^*&&v>GjVxo2K)-j=d}a#ij*b|11zdhO?#K_h@Sk zBJh-tzYB@(Z8tspD zE-Ihd;nCll$TCrH1aQKd_Na1get}Exeb`q+-O!&`7Jw?y;yJJ&LF+(;-@m&-D0YcR zY`SlT9#(sqG}q>DB4PEu7U+bvkpD&%C?Z6btKa^}JC{GgKYILYFF{sCn5=7MVJImLdOeA5DKbl?z2~{`51Y-ABMvAO-9q9oH3B zsa+$(5cR5H{c)DD@HnA~@bN0J1Z*rP`RmG6s--1h4GFuA^sZ{&f$p%{H`(5{OhIZT zLoQt=9E}hd4IClCiz&aI=g!qzEZ@6>Wv(GX*MERbAdmEF$DZv5t1hn8F!!I8LWQ-5 zTa@?e1SdlHNBSSy#axN|*Y9)x`YkHORUk10!<3J z0;>;FR7*{Q<3WZ4M-N@hm3X-Dkb8gJrkHzz1WN*|v_Z2#i7uefdjsxYz9BpQ2oM9N zfPa&~31HHm8|T#9ZxO$6j&LmG9-XcHPJzT?g4FUFGCXs@4su_n?PnI)Lx!&NRsI?J%*519YG+B1e~M|9791*pMN<;d@fGxjh8Dog%IqlXIZ+tL^hRjKxS;v ztUae7Ysj!wIi{yx^c>O8U?=oA?GV?YBTP)saDMJQ(`TnJJiUL*G%Yq)wn*GfP{^fi z5Z#l?i@QL<0cp~u!#NCWFX$2Ep4Oo!HRvc1W-M}o^B3d18K1%HYbV8Ky+!izI)919 zWoqS&12SWeEYicpgF+q@wik2&xu-)mbkqSYJ?$Tf5}!NA$=Ml_|2}2qpC`1MDkOEt zEYg!YWc{F!hlSNYuS2Uu7NiZWydAUW)a7*pc}(Q#gjDcFpn?mKy0LCZhgR8p6zS;* z(zD9LA=pd_vq5J|=K8%*KUx?aS`7mUqsmcLe;?_^S3mnTLmNs0mqYcr p1_&WAjAxh!_-Ya8;zS_?{{c8d@&lbyfM);z002ovPDHLkV1fdyY{UQn delta 1322 zcmV+_1=aeu3gHTnNPh(bNkl1M~&DjndcXrmDKBP$ZOwM3GmGgu;;2F_;(_F!+8wU7R`icrwn7!HSc=bYwUl zi|^;}a=!C{5CTB(WlOl6UyqD;?1camm>Kij=OzIRfHu(A_J1zqg)oqC=KcHkf6Zhv zKO2T&Ub&e8NeIy{m&?E1yLaywpo4^0z(R*rpx5r+z5D&`+qZx3^?FQGtQ&?wI2!l@xpxf;d3WaU~5o9r=}?R$+bU% z53Kq{6{v8(-}mP7RB136gpr^l$L5UZIYV1hD2!LyU6a1=t-1mbwr!WEsZI3i#fukje6|f8R)2jHgXhnm@0UuYlSCr1Fd6fL zQ>9Wl+TPwiK(>kcMF1~s-(Ahk&CSQ_>+3&E)Y1U->?5w=Gxw(ae)$g^yDC_|FZ8U+Z5W?Bm*!c6#ojX67ruo_T%B@zb z@#xW`KYxS}4p0SJ4804;URX(W9UeklQ zU$t6o8+Z+rfK#O7d|{O?dSqa>-END$y*(!yjn2p8@x%md|0wP6?-!pweY(+XHg|vm z67~@3U3GZ}{9%;@uD1t+fhd(q$0sKz^+Y0(jDJKTkt?+SgH)+hD*1f=+3xOcelQpm zke~(N0H`3nI+C+~uxfCnmb&ft8;wSzP$;~q*X!+AEEYFSbK;?0tyXLQN0j8^3t=4SYwu{B$ zD}N-A1C)_~CHLnOpvK$7whJ&n>A-V95=a9XU4nNf&UBJUPiM5X2&91d<>lp7%d)Ig zDwVt}q~kcJwr%f}%jG>6^3;V=pvOq?Gk;{*w()5syg={MjJsx$qmCGmKmsl@1Wvnq z^Vw{6#j-3bolbvLyD5YaM@L7_&d$z`<2WS`zj38ZJkNN?4UfC{q3+eb)XBa^Edo9fVE+*=e9 z+(bq|4++aj;B($j g?`To#Z6G1|A8r*aeF4Mp4gdfE07*qoM6N<$g7r9_+5i9m diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_left_background_holo.9.png index 51eb7ed4570e449c407766a0ca232773d23928f0..0df04cf2a6fac17d451395b307112e8c48d32b7d 100644 GIT binary patch delta 1269 zcmV1v*-8i<>G?XMXr3q9>Ss(;zC5VI~ zQP>o^K;lny2@4kd2zHfN@dH@F4xs`fbVX4Wh!g^CoRXU_abm}JXY9Eg7H3X!GMVP$ zI3@|a(vdS4OW!l^cfRkOaS%cP2+p^J$NArpvCp|M(CZxs-G6u5Bmfs^0*-cWTYd-w z2m#U2d-p%@9U8fd5sI96n4OaAm}Wlv_ob;EXX z&rqs|42VZUG^eLNw7&TCM|J}XziSa7)`~>OTbA4HSdT4NK+SR?61|R`f-VvmkWMNY zNZ168YNESgc7Is)av#u#zV(ynImj9dq>VOH@`YmDYZ?)@*0tsv@Mk-lk@ah=7iPO6=aBPQ_Co4>U z|A2gE7JoLbJhgP$h~bCFc89J=6`1wv%ban%~!kn{;g$Ntgmd4TF9`z zk_Bqss3P4f02{!%_qpj^Q?F#UPj2;Pw`|r^ z1=0%{))un}QS)M|0u>}=(fi!=KFi+q1`^cafIh3*kA-}C>e%sy&C;BM*)X~J-UN{g zoqyZ+I<`wbT_F85L-uJF$EkXN%Eht=rN9)NdJv`uY2#}-&w|x~TRvEOd#o+mJp9(= z&D)biW9`4ya2=OIwn*mhEa_wh+o~X)sUaP#Xpm*^SOGRXz$Vh1J$==$gC<`H`9R{p z0Pq4Z3cLi2(Kql46L)Tr=s(&Ey3%@u)qnXEsbm_fSwT9Z(zNUw3b5`0ZfStJiw7>| z4^wFra4!;g7`TQ4j>fJtapx8TL;F|iTB$*9ImhaJhDu>W15oqO52*@~a?tbv?(1T^ zu%OzI1nx%yzX-exj1i8E@z(8k7#h8@>s$587P+Mysbq%IMxGr9RgnpD(4V4e9)GGd z<*1NHg;n<|;ETWz5?DHH7}vP*?j)B-u8>>KkxFJM<~F>*m4nK~O=LCo1L`TNdgP(g z^e_NNy+4dxQuYCZz*S%jncBnNd613-%|qp?N@Lx@jsxmCYU|J!9(tv=kgk;2fi>9; zs<#Q{qCZ7D4ydc0KB@mSsQ2YMkZwn&Io@@>$TYljZB^1v=s4>>wSJBOF=Ts+BbS*1 z3DjgKO;w+6tCDs?omk|mN*zIhs^5=X_5#Ac_%98eTG8vfB_%yQPsQ6iLkNLk>|s6? f!5u?;frQ{61%6C)FHZF?00000NkvXXu0mjfEmmoJ delta 1333 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 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 index 1d893a5124fc121e8758dcae2bc3c48282012ead..3d5b788d5dd0ca801d021f5e4af842a4c39e2f2c 100644 GIT binary patch delta 1375 zcmV-l1)%!A3zrL!Nq;#>L_t(&f#sOXZ(Btahd(<`?D(13dG-}Too-1*#fFCj2!Vv? zn!kW0NGxH=iWRDagjljc2&5u}C`CdAQS|||X^YyZBu?7Ysq?ZO$M4tmu$VjX^|c*J zePbN>Nu#SAk8jTBb7tn8K?ngL_-{+-oc|x$_OSHTAKCtg@S|w2{6*ps_MBjPseI#^^II;@OG%N%+Rp5KoV~ znf5vNw6#*JjYv?)RjhKj6MeRjAX(J-ayhwc`(SR3L+*a&w~Os<1KF_6ZzD0-xkO7L+qYKDd zSV>hKeZTLuqbe!I%opO(gGCPFTmZ)H)O{j07AehFaeAKBf4#f zBPX69{M2#$A)j@0x>8$dA~z$%mR6AInSTVfkn3_oere_bjs)L9rfrE9g@hUC?_}3U zKk~-T3;23_V0W#f{JbhQ}wFnVn&LY80Ej{r}Rm8f(kzL~cY#CpUBuVMc=k9G)00I1e8BP__o!A>N*W;($VeI?OOFfL zDXj7PMrgH>d8tFIXoqy0N1t0p9up}VAr*WE$YTMd(OD~GgjTz^8yV>UGO{YdKI*V( zWCV@tF-sk?iUp8HC#{r%R=c-4r`2ZWM@H6xj8+y2s340pA0d`qne10pZ&-wOpt>jt z?nGul6$w|+pJf_bGRyCUy3xWIq1CVhFEM`08fAW-|;WfyJr1rvpL=Y_=xm hfB$N+Gc^MV!Cxb;7PMsg&xHU0002ovPDHLkV1h{tq8k7J delta 1414 zcmV;11$p|H3%(1GNq=BTL_t(&f#sP?Pg_S6$A1^wG4T@vws{HKa@i*m%Vd>B7nQp1 zC+ITy0R04AMvByr(M45tQ=v#G4T&PJ8VSLL)G?SCxNyPm*PSlr4!(A-NrR0G?Oz%h zACK+x^Eqec%zzLAK=9v|a5(=z(k`+2fFLl|XWmVd0BoQRw0~W;3-v;1NVwqBr%!)O zrBdH(ns(>f-5ipH5cR{u!=Ii!dGZ4i+NJ|6+^`Dt&f~|AzrJ_x-p{R8i`$gznx^6R z`^jW7-#&Zx?029+2Uz%f=KF!We!u^#X0thJUk8>Df@ZUc&*%FR7)PeFtzI8<&DD^w z;c~eg8LgYcm4D-Z1PI_N)iF9btvN4->h*ePqLRR^Vo{862&9 z!SFPNy)l}f zpXbq|N2F4z3)}ts_j&m6A%Q^PQk$1B}=TBm>*yO+-k64yv9c^xI9w6I9_d$SO z*tRpO>woL(FIQJrzZt2gL(r>NuU-OGpv5JyAVKRu<@xjHe?+6v)p$If9+{^D>g?>S zu)e;&frNFRYk_W98~JNgfuaz?Tw7cF^}&M&-vxug8{aF}YPHIX7cYJhLYP1isL_co zAbVjY)phuQJHU9O(eND}9u||yFr^}5*G+cU%A@I*8kjg7$f&(i+>e(v?_*K5^kbsNYcVGohfRfl)L8&*l+MBBD) zkZm)E-o(Xy1pEVM8ekr=2o#-EE$GjJsRetuqXK-`g3Q9K3Cdm!6*oNxw#?FW4qS<`OlX&3Y)5DSOH zsg;!#eSUs^*5~tG>;TPXvz5!`_J0h+*s0ZO$32k8&M=V?E?yP#s<8c_$B{K1b)YAE zpc6nm7z|G8y1qO!Gc%jZ<=*e^?!IfaS}G;okR~#cZpivoAqRzZzuyh57P1H(Xcg@# z#};Y0O@vi7;;0a)jNcYbQ~F372zly*mGnA-St?a1Ap0K2#{_k zhbaZER&TXWtHmsajI19Str8MYLDu+q3mMv#$#q?ux}p6zrzj+N5SaljBwW>bY|woq z8~VM_DDH^e&}wK%m=>LS?Ar_s(~(ih>%R?xA*br44hSLe*zf=StHr_eF^~}a4d`T0 Udb}FJCIA2c07*qoM6N<$f-{xE=Kufz diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_background_holo.9.png index 900e4baeeec6eee8ad1f3aaf3706473f54518f4a..a1916875af59b29ed7f3af264c4bc8aa8ca48c67 100644 GIT binary patch delta 1252 zcmVp>pTO zH$Xyg;9DSZ=||wg5l|1bRgnr+Dw;M`S_J|L0w-}^UB`KM{IcHZVRo|P_2w1FjRSva zBzt%4ou8j){`1TjAq0Tnd`mc-{~Z|zTnhjZ=e=LQvnB!9Kz{|OYuEPVg)jgU=o-9v z=d0*I`cn)ubn3%wkql8U?-o|R$$fs~OC+?73oLZlJ2YM?S9J{NfH!#RV3or+*NL)`F3t?OJDn0@wn!Yc|zjco>KxdG@5k8qUo)I~$2M zjpT4P?QO1q^a+O1SReu$x zj7>K;-P!wbe~1JS!!Q%1hEim%rs%)a$K<1Na#Ir;s9rFr>gY(IYLKm#w+d6>dc^(a zwpzy2d9RH$on_=4%{i}&NXOOx+BovSPE%fEQ*%6qo91dc(}BB?X0wR|T%y@=j|Hj* z(=P4j=uxL7P|KAY*=^+7Sww>CRbA1sk5XRME=EuDAdPEy*tsT<=2LQ7g+rE>qdfFg z%IoMV)m5okN2aWTJTa*Lu(Kc?T$kX4Y1{MwA%tHA*TF}NfKL#G5WEC&0HpLf3fBsdNq_lCL_t(&f$f>kZW>1%$3F{;VFCZ6HYtC6=qU#uBR@c;K0$AN zgGx~@eTyFb2z`O7>ZO&MOCwu~ZAI8>gM_Qb!8pOD7(;Bx(p`3Xm>qUmuw$o~n6zJM zB-kC;--r3lcYZS)a zI(vJ2U#_pO{|x+%2P{H?{yJdjy8fAESyKfHAcVlOEOcGJ4;VQuz&BVkb9HYA3ZXAdM5dyGE3N~t4R&=uAjaP2`G31Ie z0IS|8gVG(x(TBcaisZ(xGXgd!O$ad!>*}R)jdh422s_n~K8@rUHL@SA{)hcoHPUs3 z)TCn>n;ggKjkv4@VFe&6l}hvC;$i|}-Hw{gra9`mAAeT3&3X3h*}>Y{+F3jvUz|vE zV^*QJQ4b52_FoAZd zRN6I7b7^&T_47z1G8KE;cDvo!*x2|U=peUuJ$$fXUtd)&Mv!%7ywz%TkB*K`!{M-z zOeW{<@_#5do6Y*>=H?IGZud{%74R2ufrJ(?2n*g3Ovt?#wr#t2a&mH7E|+VTW!W<` zGtpQqcBeK9$H&L7o<4p0i*4Hnz#;G&I7N=It@;IFmHKAocD8%H-rGi_(I}V8ud3B* zT?ioz!-(s;e%W_SLWn?i^qytF+6>Mp2>G}TK%-xoIcS$~?VR5y5cs(;S| z2~E=y_wL>MG?&X|)9LhbBogUYbwUWSzrSBBl}bCvLg5h4aqGzCMg86J&TZPbjKiPi zstQxa<~KLLv#0QWh$Il#G%cCQWHPy2E|W^77K_DVp;D>*<^%N?45~W17N`nx+zM7< z3fw>9qvp0+#?*PQgEXCEb3Bfh=4v_f1J5AM<_!|C z%CO_!2vh|#DP891hTD>EOW=*{1#<0dAi@1r(T$H%KGZJ8pXNG)Yk1VXCXnXSaa)&n zEG^f0=!aC$(N(IeQnQClSq1stp#F#51^L1K61->H4n05!!H5cOdXE;Rh8Tf_;2*5x V@K|U0N(uk~002ovPDHLkV1nVSmz@9r diff --git a/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-mdpi/keyboard_key_feedback_right_more_background_holo.9.png index 78cb488fa49cca83559441fbdfc3b9e6ae64825e..02e84d711f003b529cb5bfda6955e0bb89f42d56 100644 GIT binary patch delta 1356 zcmV-S1+)6G3xo@hNq;6uL_t(&f#sRYZyQA%$3MG%ukAP~O^EG;5c)cB0#qb~kSM5d z;>3x6fKxee<;oEW1UHUw=z#;TL#tAxLe+{sX{$mY0h&6GCUq0XdDyXIdxyj9c-QNV zn>4QDz*ib69?!d$*f7UvPKY0XxF5>R0L+D%Hu{XF~9F#^Fr=c3(# z3M)A-eDgI>L>}*IIADE_p{iUAAa5uPmLHUvnOMXZh!E@TLDRc;mh;&KE`I+l<@JAn zS>OS%hJ+T-2n+TVjBdT>qgttPKeI^Yk1UmPm49G3MA+!AgTnmXSuUMAOSLiyOab?R zMdS=u)i5`#l5JLUaFtqho!oqm%-Ae*lM4tTh(rzi!Oi|hXEb^HFK(PWj}RFk155+= zffekV3cwpyAalKH4K4xe4XwPsN_HyCo!iqaFRTJOkysd?uX7cdX`1~0%Pq#QT}IC4 zU4JC(JzxoYR_kkav)e@<5CjY$4kUm+N9(m(0*C=obYGm*ffVTjDfXwIz~_H_;MI*P zH_lyQZt^!^1_`OsH-}uS6)HTL~RTp8R7#kJWlylVo4A z550}XRw|UZdgcO4*$HIIPFZapIim$H(0^92&i9pB1(2tI1s=r)Phdkgf`=jrhL5C4 zjwb0H=-JV}y_#F$^68%`u1;E@&NZ4xrfvn>bDChbBBx8M*;e3&1s2Di@dS?D z`WQZvX6R6wSnu}kxfW)#Tsd=|>V^W$AX7LCEF=A-ibv(NU0C-sI?dn_T7&msgMY{A zA4)QGD8;~21B4>2iw75BrOV0S1~LBRQHReK5(s!GAu+F5O^y{I&zsSum*TXiK0f$ac$Jg(-07jC-wZ zwT&6pGbYk>=8e+m$`DYskGbhXi+4Mcckg*{xHIGtK=p?%^S;Paw^wXtgpA*+p8m@}ava zx1+06SEXhRnX(GB3$Y83Nq2u&8y1*jP*Ix&WU@-W3tJS(wpa4P$TCEnku73d-NS=I165O-l;JyWi+4lwk?-f2jWd^!APc4TClCQqI` zA(cvXVhPa|zag+c+# zve?|*?8IKbeoZ72p<1n;8}pMdtdJVgkgu;=twya@>xmVM#eshPF~@P*1D#-?$QOVp zl}feK)6Bt@-)+Y9tbwx{=WhS-D)Uj64AJs2|n=+U<6` z{^G@p=YR9_^WSKicBi(ZN~KcR-rjzXWbq#H2G*<%SU^3W&#zmSHS^%XgD*oDdHRT` zUauc6E-wBEG?2%;HXhiZr>`m(L&zJ7$kEYJb7yC#5)1~7SS&U%%ClUn)ee@HmVRnB zn|}fCfWLuLB(#8DSm<8C1l(sq+qT<#dwZ2)v46PVYPIaKv9a*@`1nX26n1xa-@SbK z@)z5-w}5TnJy1c;u&w&_!zy*m%I$2o+wBjBhlhv7V)0$MTs{y&2*WTUx~`w~88@P> zt*t-T*4BO#LKJ}_Py+UVW4bpLfIqB2=DO{6wtx@b)@(LU_V@SqH#av+M@L5|K)^7J z@qb`2cw-fr<2cTnH*Yrb`TR0+Hs2y)-vd>;v)Wm+XWcFafiWNg#DN4bkuzHN z13eGc`&^k-2zmNf;8D8Z3A)fd;NfsMF*i47rqk*4Ir_=T$?@{?@~@3XW6K5g zuF)DYbz5{jX8`6h^18H|Z3P~2!QymhJV7sb6o?vzF*P?gXJ)fmGZu?o>7MK0;D2C$ zWo6|z+qM;85t+jKz!B0Vy!YP$=Z``TQ!fP}rvHxPJ%8?M40Eap5s-SjOQ^b5(^YWAmDu*V(7({v%>Q zMANibI-O3NrkS3eo}S9(a%-hh>30vPw_s4!(WOAuAcw8~DolZUXWVaXt8FaezQ;kD z&MtC|mfXJ&k&f&AY2(rZ`;_W8HnqmpCAN1v^8$|{&E^;hSZ2_1uLPmU?T&H&r54$meG@pjsnq088T;@w}Q~i#vQeBmr zZDh(S$ZLaozibrb1@}sD&9oi(0wDxG72NG#EqA300000NkvXX Hu0mjfFl5Eq diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_holo.png index 13298adb60c6a10343384e8ffadde4ff647bd0ae..2d79663d28cc02f555389d9c9660c3ba2c35dc9c 100644 GIT binary patch delta 522 zcmZ3+`krM%Ontehi(`nz>8n?K^JhB<9Q&AlATTmy=kjIpTY~bZR%H~#Ui~@mhw8fC z__D$?``HgDs`$Ni=D$1D;=mub&6{_7{6D*)Sl)nF#a1f(>EVL@$%i@GV^8vZXZJew zQS?hEtIfZlsLhicD#edgm%Y(jD6wvjK4;7OB};x^oW?tQ|HWCY^|LH_4(D!eGJU;W zqfJ|#(SJwwVS|{7Yk!=5C3CbOQRu^uHPTHF!){JupSJ$utV)}@7Uim2r7kVeY243r zer-vu{^Oq~IZ5d9rWsQdxAWVl`OGZUbQ7wp{PyO?riBX{zHB*Ga&V5M@vA{!v-K z?N>8j7_Ukwm)6zX<8c~vxSdwa$T$Bo=7>o=I4RsC7bd3!{3=OP|EvyX9bPdd{3=9HpI!U8w s$jwj5OsmALL9yl6a-arDkPX54X(i=}MX3yqDfvmM3ZA)%llz&(0YP@=umAu6 delta 505 zcmV1f~U$Tz{@fL_t(I%dON+Z__{!#_?zDh{OwRFO`t^c$_IhNJtzwfP|2G z;1DR~rR4* z;jklFd0i3+Uyh&{uKZdO@OX+tDTXV*1wssO{M&*VvqKWDnSYPrH5u9L-INKFe^Cq< zz6X5tuV`Ty+4RGh5u?v!J1K?>KRiDAm$d$bVPxaWAw!0{D259+o+A1eHLL0H1qU(j4X#>fWkK7IP1HYiDa=x+;(Me&Rl2`lY_FcRFa>mFTttF&gbd2zux zr<~wOsacBSgnu(0_ij7f(P>u{i>~-tFk{M;31dc#sLPMxdZ9;`4jt~u$;sPfSQ69F z<|#rbit19j%r(Wh-xrF{^Y==OL=V(hPKl{C%+cAY#)gFHQMWIhKapQf87fsa6y@dD zs<<(SNK&Ek`c}iV8i$FkP}2HjHny~akW5->f-McR3p%!{cvF*OU?*2qLnLW_2wdD3 zetDzCW|(chO{tnIU$J_aycV_(sw&Li`5*Jo+Pi)O7*kp0qsC)#liUFu6*4zeF*G_g vHaasoEigAaFfgbtmfw>N0vr`GH&ih+IyE*rGdV3VH##sd*>f&qlRg45{@Cqk diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png index 594ebfec2a60b3199d22078f6767257cd66112ab..05252e53bb1d9d3052ae2e841332b19d9314135d 100644 GIT binary patch delta 372 zcmaFFvY2H;Oue?Ji(`nz>8qE${SP^av^{+9!C9jJu>RGdxw{;CRX*7JKDji_JKd`? zR%FALr`wGDCZ|oBnZEDL%avd9+vY|c5b?MrVLrEAFwgBKyJDI0>0^>||0|jQruI$w z5*208e|X}iw4<-2x&(iH)ay3Yo~9EKvxrqYbz_R7lTS@wQcGQZ$(*SZ1cVLMty~SA z%vYtmx}2G5n0n2H``R4S}(+>X*U)q);w5(75Lj~WP z^hvzc`bBM?Tkc5vPv2Bhal88e&7#RWf}`KY?w-BtWBA-}zq~@XSf845(`>?)sgw0Z zS1Ee0oOFrJ^WZ+a->!Su;}W9Ka}i(f~q zKOE*QwXy?t5q~PC3DsDgc(MOyPc5URw%W5>V#Vj=vA)WUO{KG2hP-^FLYdsWzePLL z9;F(*-UKPK>BGNm5!H@LNJ!eBF!6FaByqZ@zv`CRwwNlB- zl_|F-IB8#CW=s9E8pjJmC3*?)ms0Kk001R)MObuXVUwBx5*0ExR53I9>;{xegofu()rV?DRtX_ePtA|4%8;a=Rzz^GK|ygM06k z9)7d7*o9LcJbCiO-ymRTDz8x^qY;nD3r?FzpZ2E{?TKR&g_V&~~!YuJ>N-x^N-xP9`?&h$v$Pw7upl=RrRCEedF)1H&d z)j3U5Yz}+e_XpCm%ASYsVc7M{j`c@Ui}1uhGNQ%?A%+H4#uiqFX1WIERt5$EH=U#> R>oQ`IQEd6Od~zJ4Apq)0S`GjJ delta 223 zcmbQl+|N8ArhdAoi(`nz>9>;txehA`xZGdmsraR9Z$#gP>Zbx*Uwv_&v}J{jXt-kw=uU3F_~A*byLbO|!Xy=vnwPtVF*GAXv$J(8edgsG zz&F6DyDZqyn{%Q_5p50E+M`D62{TPeL`W}T$xcL&R7k`ijrK0kCd-$EEOJT}(Qs;F zNo<(wdyh|vI+w!0Ln@GpfQdGN9x!&7BIfgDc2eQ15r1Jxwn&m%6MHG_{I$p?HzHGH zmeY$AX#txglU~iPJ_vf)(3)a>oDirI1ve;>29{(Kk>;hiS_(1PiS-rnRRQv$rA9Wa zV3Rc2ybO1jpo@JNYlx|zGlYuZ8CgP-d)8b9Vv5z6sS^IwP@|YEw5~SUE!wUXB|MN1 zEj{|V(toJk&E@cw$f=SE3M$oLqYIC89K> z6ss`Xl^~b>|5ZFxiaZop6InH^iL4sdL{<%JBCCe~1rY&6PL4)Q$KwTd^Lywm8U zoqu6#ya&Ju@E33l{DD>DA7^vy?8ffCT*=f|BE?EKbvKNFfwR++>Xd?F**T!&ow;#N z+*o65C{3}Uj>JDw4Q12?!0` z_1K-SLy?Ia=gc)FFkyizArak3nPB7o)PH@B-IpfVJnEB$mlpCa0(EfY#y)lZLpN^U zeb(zrrj$q+UK8i&kW2}EK*h`#l+T;+eom^&r>?IdrMaS!l3TgTazt4hudn$LV^wK5 zB1>ydOGrQ#Dw@=~7cwAINb|OkOi`s>$ryJtSQS*thWm2Agn1qk{&-<-sxnGQn}3F2 z4&mTosZ<@+DtPQ2)uswX!e!rIZ2SmOBDn`+nIe#>BJQYzL}XiFbA{vzi1^B+1;^a7 zt0)^d++qj|+C?NTilV htB&1;4vGl>0!Ycfy%b`2A^-pY00>D%PDHLkV1kYXK2!hz delta 1148 zcmV-?1cUp?3APE4Nq<;LL_t(&f$f^#ZsSB0#(%aGC) z$7h04iVC2dRw*jtu*Rd{J;1K0Uk21Y`njkrxaK2M0SxM@L`n@9%%#Xf$?w-w#W0x)5<3k0+DKUl$h_-<+JB{M_w!|3MQF zQtl$6Tt)I!@DC3UU+wPhzOL8nUnEIFlDLypI+|e^e%a}CzCJ!aR^4v*2Q&$rfM@k{ zL(2mKa}0saPJgHKT^NSDgTa6#Nh)9NJkP`TeVWbYtG&IwPl2C+fw`>Ep*QD5o+8o$ z(;7h#d=fMv){*HlD)UCD=qij3vax&ly}r zu#9}5rc~xx^Bky=uf|Lj_os#!)ks6@S(DwMVOn0o1KH4$qn#^3h60E{(mx4_8|5x!|De_)mO=Q)u zCbDW+6InH^iL4s_7eo}GZf|cVQ54-Ru&Wf4$z(!KWzofb6p8!&{<~7VdI0+U{#!H= zK`tSA`;*`M@+Q_W{Y{`Y91i1FtJT`t+WM$Emw&UkyuAGN^z`({>+9>^&~>dox~4TI z-Fi^Kw{C^R-TO;``276*_t9unZ#J7R+wFF%-ELP}BI@;e!(Ojqy(c2f*h*8~6;Z(iXbL)TEqu8kw{ay2kq!xCPz-H^850HU2g> zH-E#htMDBnd>C6kMu|>+=^eI#%Hf`z<8k*}hbG`~ire>UxX+mJi0##fh zvXL@H$Nj*3u9+{5(RtJ-4KJyGJqF_7#D9!EF#UIC+`joN*M&?W5jVW1#?djU67qnm zF<(%AXu{h$DJl<4UqVW9MIt4$auwx>u=cFJnJv5D0Sj4 z`}SgEM~D!~JQ#}cs{D7*8f&ZqJoA5#Wp>XUy9*suO7Sm2*vE>XDC67! O0000c{@I-l|A1B1kM!Z&f6FTqHMKBsXe0 z7<{^*s1qrIqD1tWBx8y?ks@%B+;EZHaFN{jcOvgeQ_M!$G|D2c5kX>+daEKgEN*U@ zC`GEs9q<&MC198-aIX}q`>HG85jX?Z0z zMXJa>@Eo2cm|rRIpcJb6s%zj0I0rTZLv>{e90L=jxXZOdO}otA1@?f|fN%=0wATuc zz?HCxheF16$8j9TaU92SmXpfNsH(a1)uIQNnE}m=Z~g{4Uk4#y=Kufz07*qoM6N<$ Ef_n~~AOHXW diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_background_holo.9.png index 0e4056f006b76342107a4537600d696ebfb27547..ba283596079f1eae4d71b085f8efa7514f3feaa6 100644 GIT binary patch delta 2953 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 Tg63}200000NkvXXu0mjfJk0S( diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_left_background_holo.9.png index 353deed2370aedabf5d920ffc2530603214f0802..4929780ffa7f687ba0d96aafc4a52e3f5503a848 100644 GIT binary patch delta 2901 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 Hu0mjfbsaLs delta 3276 zcmV;-3^VhK8TA>ENq?6~L_t(|ob6ppZyVPY{`eeHvPoI8BucWZz;@aILA&yA=r3ru z1^NTB3DB&%Ef8eWUA9Fx-FDqwkf3PeKuv8IksX&7-w#nVA0mewa^~JHhDSWSydzSI z-kuM*7>c|@4d>%`&bjBFdkHBe07&?_$&e!+efaQk?GQL)zkk39ulYDTkSY)<;|X*x2w+Jd7N|Ln8Re)sXmAO9g5jjmkK zXYiq5Fc=){?SJk4@$=6={|kT~05NL7G@)8DgK)_V0tf*JfAYyEzkd4k>7S*Pux%Sc z2>7A!#UT&~AQ%iH9Cp3nvuDqK`{kEk{td3lb>I>zF(wuOr0O%dk31%GX=&-_wrxX7 z3CD3R@^knAAf<#50=DhC%cZ5ICvf8x)yxLK)Ts-A0)H5h2shX<0Ibp*`?wr%;RFJK zRRD2J#wk;NQw?IsUmmLxKvW3f2Rl~?$8kacqHsA0!DAG`mC1<=k4}yQSR4+A#zkMS z4{wa_|02d}q(Dfrqjq?4JRHGTnW0O#W*;6H-Tw$&K0+7=sS^ld((ZC)M&SC(1;=qB z>WMxs4}Z38M*u8foUjQ)L+C7Jh5&?ppLw-Vlu0CNmC2zJ83kYnA!eohd|V(#_dkkB zQ#(bdmon+KAb_Bh+T?tG-gJO#UMIOy0s$O5e<0Ax8H<#G2OBdXc0O>?`wX zq2pmnp(iQsSgC#<_G&S@|HPH2xMnHS#|^?PWqxw(l)j~+oviE6cqw{PD<2yy0qGq3ARpXNPBB9Xx3$Bz*TxhZSY zG__>z?CfA|Z4CgBOeRq-m(lHZ&)jbod^39ntgo*h6G?yTu(7dm{5TeiVP!>MaWikf zS%2`!JOk8;dasH5^X@kbUS@V;7JD!l4A1oLw-mWt4#{K^%gf8KZ5w-gd)j_4U%tfS z$BzL3l}ZKGYV}P0oH=WCX8BAB0E59`FwdL4FR&~NdwYAwWF8zGX!{k5MbNFQ)oPyg zQ?vS6mc{SCX9njaGU+5)C=~Qp`yQj)?SIY;QU-$oipAp0_nOsjbpL0i;R5qSv$9gD zH2jp_)uC7{)-k~tJ!JI$#GR4VIF1D8}u`oOg5QJ`ea@b zGMP*c?n*FPlAxN|33w?}!2Ko+;eIPD0OnU;ef5t}D75+D!GlK^bNN09g+d|y%{Slt z6Yhec!Ke)}7T4U$yk}|m}$=nVAShZTMn9XMYx3jbJvtTgjSAV;o6NC^> zHk*A@tJO+yT^l#AY5+8)PA?+VD!t=^Xt>pS^5Ed0*6nutD=RChFfAnXac1=U{r-y= zFaDKIr+1~4hX9%Y8lz(iKnJe>v@rIaCz7ew%o2%_QH!z`Hcit35J@JJOCdfdAZXQu2C+RYmrFASX^9O z3h*dxxP*1!s(+Chk=O&!$C${e zVF{qGz|*bMjKN(Wco#qtz&+NMM$aVx+zE%n_dfja!$;fO+Ye%~n7^)5LATrO<@5PM zI-TBk9EVibhU*u}Prk$0SGM6suRTnYIhQgCI)$pG@)ITVLI}}nwM@rxq+u9_Pv{uU zX0yG&zn{(Jav8^Qh<_xmNb-~PTot*aYWkV0c{l}9SQJ8B7x)kzACk6J7c2rS&c ze}8RfXJ;#wO0C|;$k(=Qr(7-{Boc{8QXvu9g-a%xSFT9UBs(yl z&s2{A&ELF_7k?xGVVY*Y-EQ}!l)^9!<2EVv=;+AI<#NUS{rz04)gqJ1N#sNlne^Di zv{@xTc_N8~)9h-gZYe{19*|0@ky^Pr7uoA^Ixi3i#8*~UR=2meH&dz9Y9tc5ahW8` zvIgaH`5>Rqmm7`7AzbpP>C7r8ln5pg` zyWKV&$FZZ)Xw)!_=$zMdO|y-$ z3a!zR$bTUV)hX3jSXfAY@WBULsZ=U;=gyr=oqrIQQp$F_-7S?$l}sj67!HRWOsder zScSZ)3Zy`Y&fx(Lk*EebrzZ2f2Jz}YR@J9&52o8LOjkxIhQr~o*=%+PgMl3ig@OwU z3-Qay{W^~0R4SFjOeT}h=ko=}arhLJ&Wv)Os8b^Mi|YKO&RU%s=XF!2c8(ACp8X_Tl)2(6<&iI+LL;@3>Qtq2 z#q!rksdR2El}fE`ZEbC=uC6YhCJAAhX1`jk)(V9}rO{~AF-d@z64l04Nas?SjZTR_ z*_?XevJ&4qm3b+Ze{*&Ibn5(0r_*b-TBejzL?V%>VHgpd@I@6uhs49_<6S-OC!wfGaUI>xEh(@E)DwRsrVzF51_xo*(Z@zAv$O+}j>|rvRB_*ms&4nvb#Z^s7sZr~! zs8`p##;?M%EUR9xw;ji^L!nS87=H`~s?};OlgZ@r`Fzo~Z9c@{{!mT3@odetQ=*Ei zD(}!mzkHlZ1!M-8Z^WchRmF0p8tgr2TTfltD3QWd$Cb$ap*lt!viDTSiI+wo$5kb^ z)jTa7RfW6d)CD!qalI?@sib+GTXkmu5g1b?p2E?m6C zlh4lZ85)X!`B+sqURBjed$UTo1Q0Pi(9xMsK1S3jQT=U^D}1aejw&bm8jynC{u+_sp?!RMZv0HCDleTxoa|g z5y)q%IaYN!05|P)E^v*MsDI+RC{u;1RNeTJ-(=mo7)~ZI=`(qXjT5Q*;cF4t%!})) zOclD_s?`Ws-N!t_`tSfq4U}{NjczLH+LB1PuF6#5H7i3u<)KEuVYnpm%0Y?g=$JQ^ z#A|C#y>L^Msbbc?@*zwTNg$FO<)}*+-ZAHl_E=g-|}+$J&!UKNBo!fpkLgn*P1b5vp6st$?C!{O@0000< KMNUMnLSTZJk5&u- diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_background_holo.9.png index 58e2922aaea29ea4867ad2427f7bfc3b473526f9..a46979defa83bb840ba472d801eb4a5abb6a85c8 100644 GIT binary patch delta 2849 zcmV++3*Pj!7t9urNPi0MNklNo*X)6^6g=**GLcYi78}v?coxz_}R6A%Kxn z4gq2ym)ry7l#_ExfFNfhrzD3Qf?RXUDL{@vf-KJJ*pXz(ib&I>Wyuo7MONho?XN{!g6sN81GC3av%1GLb0>1hBg;U;NRpzB~2i*WOKK zv!x_%8Z9iqvVXvJ-0H#o58vJU`8&S`ngojVyQk@d8p*V~pJxLpAf12bXW!1h_4aRk z1Wnhc;|r2VcyzEV$XFKnv`xykXnyp!?=^q#hU z`^@e1JTO6EYSmLBva$`I6Hz6Q#q&}x{&o`#jo|rb3HV46y26N?RFx@7ltg9;h9MI; z?c536a)LOxoh&d(7yt>v==RXm4x`Krexl4%h40%yhESP3s)T?v)$U3n)7^`6z&Ngx z8TI`p=zjyx$pGU7mQpA65OK9!P z{y9Qb%GhQoWy(JAox+%0NN`dJp1)0$M706E?5ZXuRYK3O)_&1f{ zXsGRXx?6n}HJmcHpH}EJ2cMTj!gCjU;XAcn7i@XD8I+0N9~}@ ztv~*b%FZXiCh!c{1Ij=ZXaF6;%JzX~)+6{;INjF4=~P&`vw&sgDb3F$K6C`=v|2p4 z`!SWBErRDRm-4C0`FfxiH>+zi)e5}~VJ)pqv)W{JWsU8pWh`vQCiA2-Nul(Mz<@$-tDCtWvdgA*e1qTO2nBzNtPPTN`=ZX=mdcxC$uKjDO+#w zWZ7dB=L*bTFHwBCz}4wVQh%2y8s6X9=k9y=sFgPf$&(6{{<5qbQv)A|Xg25&!#qIK z+6KAwx>t$e_|!MF?s>waS!=SlS)*BP(`h?cc8cs+2K#~sO|3?o z0_#Nmq%r7G(eJ@U-q1y$)(qiLB}b?}sYdBH^V)v3<%kY(!akGBGk-l_V&;00;@nlP z6vi)9MEqoVm3#lVhw%3a&1i*CiRzeA4n>+o69;NqFM{KmHj^?vL-Vz5RlQ*j*!Ns& z{0`2z{h%a-SqoO%51MtBPSBkm>bn zsxLJq7IK8jRTZqNRewLO`_}Z~c79@lx!0yC%@-)lU1j{r`H6^K$7AWgOFUXwAynM~ zp$erUrFm@-^^tlSFP6;XC{y>Daeh-*sY|?S)z1hO>pC6E+cge$>a?33d|!~sWzKvG z(Q`c>FFoPW{m<~d1A6_V?4|FNij+QbC`C#Np^Pd;3rS=%B?oa!IdSrC2rq5gPbNFw3*(X0-&PNlb&C|;%RfIhC7 z72B*f*;%X7s29dwrUjR|*ub6?kc8@`aJxX*oRj_yG^^FXMZ% z5@6VfRZjft6VK0Gb$$}jp#BnhUA^jy{q*su?n7O}KK*>NS`i-gN`syCDy@1Or{iMV zHe=%%j(_{3UVE^{(#=m1euY4FQju|aRyAT(6=`~AL*t|e;-&v(*2XN8T2PY6{P zHy5c!ta9jaq=>a2&Ps|*%`nMcZK_&jbIR5vozov&z5q)Z9oEDREYm83$Fd>I{xL*Q)#1 zL5ejgHBPazDp7q`okKv9OqQ!rs~WND$$){g9>>L5RAw9ojbU}Q_VcxBx@?%StTc}; z0)iU!Rt89a*)L)p35gPCU705I%Q(puZ5o=oWZ;FQ=8l4kq<_pf zm=tS@h)q6L|EDlAz|u*UB&xyGi4qBygG`B|kSd8($uzBwQ={XNj3I}?Wg=6@AaeEP z7xH}5#DJc7I8hQME;E_X`(ApzVqgDH1z@gsIyE(_xa?%=&{vY{WJ{P57;uV2LPBOg zn5y`}OxUTCC}9a9hM90b6E}Ow(HfT|Aq4*i3}@CP@NB_W00000NkvXXu0mjfzUQ8i delta 2954 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 A`~Uy| diff --git a/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png b/java/res/drawable-xhdpi/keyboard_key_feedback_right_more_background_holo.9.png index 06c33c04c39e64a145a9fe6118017ef76b6da4bc..63a5f459e9c326bd20591e4d86f685f209c3e22e 100644 GIT binary patch delta 3059 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 delta 3139 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 sI&E)cX=ZrBcr;`T-F+nc%761SM delta 1169 zcmV;C1aAAQ3AhT7TYm&VNklxi(u<(k2bc( z6b}^yo2Ef6co9nv;-z@ei#MBWlQyAIDGDOB2;#Ab2N4x32!bG3RFZ7cY_dD^%*@xr zJTsZyo!Ob$CeTBlKr%1SJiq7jyv;KK?xs5<5ghVKsU8Xffq$5&tXhCQL=^=#6o3$Z zRD(Se5)jz1!$*0Nkc-yO@ZnceRue|L8c*Q`fP%LH1l5%#brd=r37+&9G&MCndKdH) z9HB!gAF;g9=)!3nMU0vVfg5|EjCKA~`jWBHqf3`AI~Tl4%5uWE@1}9oP)I-k?!Ge7 zJ*_V#w%@$7-hVrt-#hHE%{JQ&_h4CNu`trrIgKMxaim;S*Jz3GTr?v%5dvp+L7CDm zCjIuS_ZG)E!h1Q^dAI$?Hn+LWEp9j3rIf0ijz^*jAe4FaB{Y0!X!RK`o9hTC!YR~X zn`Li!oqon!O2*_*?wcHCor*%C;yoPOesAl~7F%p_lYgzb_JJa0zA)8yrei{xx2{4X zh?Z>-KD2d3K8=-p(Vv1dgfh`R>s^lLoBN}Cn)@PMlFukx?{EIK$y?FS+}1#4wlLP6 z!nhfk0UFjd_(qqi8GLB#6S>0pLRDp=JLD~!wS=7?+}C<_y~@oGH~!w>2G_aH_1V_r zdCGoaqJQJK>6<_r*4KTy9;I5A&!gJ}Cv`bxtn&`J%f`me_wLC&U9WQEqvk(NHo3+% zuFc-cRCWsm3O4GT!MGWjS{mw`TwPijKwFFQMVyV31$~*)eQa!Of7dy|eXI@Abty-9 zU$e3H-zrzR!WFL0ZuBX4gaQSdbXQlEeW zE3FhWFa$PieSkB3*<87<7HVI?hekXWLIfZ}=?Vvdf(3yxm9DYY{D9B%0h8stv$+2k z1o7U-?$+_JDaKRt_H|gMN(2xf1S4(FC{S>qOkRO4;w)+5D`pfN)4*9IZxV@h-a*db zcz^tM+4-G5A035;P7gZ@95~HY)OYfxpNsy=d3*7Gqf}9?Smz9$>ko(SbCo%7Rqx`{ zdmJ9quf~08L!i9J_y&&m2kRBWf}hc(R+cJ#jE8yp-@smY@CHH!gce`N;r>8Go;Yiy zW*zT5N$@3q3eliZetjAi?92%&aA0lTEPviN5O5!Q1Oaqr%^1Jd>|_LnndQXOX5dyO zX@LM5ZcbLSR@p*Et)K@7EZQAK3n5%|axF!m6IvMo9dmUrgex~Q*2xOG%0gzGF;eI5 z@BxXSUzHOq$XOsO1x&57c}>WjyoJny-53E23bpvHHy{NF;UPpYxX9vw3IYqN@Jk^C zqkYe91vJf7_T!5~{PXT^y500Y7})h^J!@cSlNbaX6*4zeF*G_gHaasoEigAaFfgbt jmfw>}1RNDIH&ih+IyE*rGdV3VH##sd*>f&qlX?U(0bVG% diff --git a/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-xhdpi/sym_keyboard_shift_locked_holo.png index ab4d61b9b0a1db4ab3c8e02f77055dc9461e4f04..fc2998fc6ee1da29928521e3bc21e8818ec1241f 100644 GIT binary patch delta 738 zcmV<80v-La2#p7jTYmzTNkl$kx`G9B=FGWa9!VKS z*r6k8(@IKnT*@w8n{C4lAIjf-9!%*cY|(YuYF0*3PIjo*ow?wGcP_Erl~~F3?5BTS zP7_vicEQV`Tz@kt5P%J&9DP{RZ7;aM-B66Ze@*$sLpe^^^RDk(TdHmkp>#fI=-zV9 z<+yKs(vnh5Qo0Fix;d|>e4~Ss*>;k0(72@(PAJmizNzGUiO3303Z}ItX-(2sA zuj>2DU$BBL5BU+0qG>q)7h$3G?mMYZ&OkrjgJv*p`H< zX|x>+I)6nqHi2Dc00tVlBa7MPRsbMK!a_j11%rLl$gy#5i&>9d_3{q;wYc5BweHK~ z&E!rhXsaKx-a_}@foF?x-{Rzg3B%Ug5e2&`_YsN`^!XMe9aS__gvXmw!uWh^#Ef6p zFKA)Ms0M6R->L8%J_sa`IDZ^tCTtrwH5cVL!YQjQ~n%v{V z&nZsfi+|?uJ6ezle6f?B0~{4IFjO%xIx{#rF*YqQH##sdP}xEolg|Sj6*DkYF)%ta UI65&lEigAaFfbv6`lpfvF%8OGmH+?% delta 904 zcmV;319$w52eAl{TYm#NNkl1w?$o;=zleXGNvh zR%@Epv=k9U@Z`yhC@3mY{QxQwYyCjtD|+fpdNNIRcIWS5vw7K<>}=A4hfW~uWGDN~ zZ=Tu7PJrF=e-wg4ep8Bvg1~}+;j8EcoFTes!G?nXgdg@`$A5$b1P&a1nk)PxZ|%YbHD$=-&7mwH78i2wL|d;3SE|i^L|}XQPHFKN}Xbf4rSOWG+1Y`%>Ama zHrwIoZM0T*L>cM)bLxF37+c|M)hnd5j9Li<4#v5R3(>TU-Z`zSaN$6T-(rJxXVtq% z7uuR^vdJxOv48opHEF8M7j|_Q!}XQV^f~oxFmIyFJQ=Mj{v?;N)D4z4sL_!;x9g=Z@DXIMKH0)Zw}i|6D#XI| zbmY2U$y27D=;%(ehLv8$U?BkDnO)!WHCvf340SGRxPQ{GiiuLhdCJ6x9o-4mcq^{T z7ZQLxb=IhjoKpZMOdw0c4d9JqP`SCe@`te#v?Q|lFV zEv}SaoqsyY1>BAIx_ew?rbcb$(b)RLkFL_{)v=1{WUrZ7&z`B>wz|^lQ%WayM|73< zM$22)yY+DF)4rdf(n33+p66`QnTXU*B#(8qH46te1P}@=?=Tl|fApD|mcvdiAGjY6 z{DQV15LPf}vV!Ez)VRJktX}kH!W;@LII!WSEPu8Fzzxcc-)6RhhY&!eJp2=cAD(l< z@R{2o0WfYlln9{EO1)AT1ArqWp&?LN0a-GhnF=j5Gq*SGrMh$PXS4xmdLy(qa08#B z47Y2hcU^ulc=9%xljfTlBcbVvvQ0vhpyp*8gvCM|1T-5;Q|UGe%}Ra_+iOsE-il>0 zUr9)6le`fCg8b-40kedOA=S`%m&@5e60l)m99Hh&2hi}K5e&Yhfe;$XU~fz4=oeuG zVSBhtH_{y9&%50+YWWA|Nv4~ao!s1$`T`skGB;E)G&(glIx{&fFgH3dFsLq;-;*l? e92GJ*R53I1LTQqkc|(?-}#hSGVM(E?k~?jmw4QM2b;X;^Os_yCyn3abs|EE7|t@^_xusUQ>n50SE!SAE zdXs6u>C#oLXG+Av-1kq9v%egEY@^&ollJA8uDsXPIL$Lh_rO!h6RVY-Umug~pWh=W z{J2KMV|Htd)f=;=e|etF+J5}-uk{9hH4Em*e`2lq)AHSBbIP5`6^t^X#s(pV23E!v eR)%J}2If`<1_3vnq$jV$CZpK$Yx(3`jD`S-?SPH| delta 288 zcmeBX>1LTQqh99uedW)-(|2uaXZupJWGj;(qtVQss2eX{FG*4n*eTdBQE=|te^%9V zc|^DcBrDPx9`yPf3r~D#`MSnNPD5C#%UW^UhJ&(3_GT)`+KYGfW_Xkuk* fW@T)tYhZ3=V6Z}O+WpBZvB}&l)=Qpzi_s7OEI5Cv From 9a1d6a1c6b303985fbe44a54bb2fa68f9b2d06aa Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Fri, 22 Jul 2011 12:52:12 -0700 Subject: [PATCH 4/5] Fix NPE Bug: 5067161 Change-Id: I466d40fc1bffa01efc1205a47b3330ae6f30bc66 --- .../inputmethod/deprecated/VoiceProxy.java | 65 +++++++++++++------ 1 file changed, 44 insertions(+), 21 deletions(-) diff --git a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java index b8a8169bc..9397483ce 100644 --- a/java/src/com/android/inputmethod/deprecated/VoiceProxy.java +++ b/java/src/com/android/inputmethod/deprecated/VoiceProxy.java @@ -158,7 +158,10 @@ public class VoiceProxy implements VoiceInput.UiListener { } public void flushVoiceInputLogs(boolean configurationChanged) { - if (VOICE_INSTALLED && !configurationChanged) { + if (!VOICE_INSTALLED) { + return; + } + if (!configurationChanged) { if (mAfterVoiceInput) { mVoiceInput.flushAllTextModificationCounters(); mVoiceInput.logInputEnded(); @@ -301,6 +304,9 @@ public class VoiceProxy implements VoiceInput.UiListener { } public void showPunctuationHintIfNecessary() { + if (!VOICE_INSTALLED) { + return; + } InputConnection ic = mService.getCurrentInputConnection(); if (!mImmediatelyAfterVoiceInput && mAfterVoiceInput && ic != null) { if (mHints.showPunctuationHintIfNecessary(ic)) { @@ -375,9 +381,6 @@ public class VoiceProxy implements VoiceInput.UiListener { } private void revertVoiceInput() { - if (!VOICE_INSTALLED) { - return; - } InputConnection ic = mService.getCurrentInputConnection(); if (ic != null) ic.commitText("", 1); mService.updateSuggestions(); @@ -394,7 +397,10 @@ public class VoiceProxy implements VoiceInput.UiListener { } public boolean logAndRevertVoiceInput() { - if (VOICE_INSTALLED && mVoiceInputHighlighted) { + if (!VOICE_INSTALLED) { + return false; + } + if (mVoiceInputHighlighted) { mVoiceInput.incrementTextModificationDeleteCount( mVoiceResults.candidates.get(0).toString().length()); revertVoiceInput(); @@ -505,7 +511,10 @@ public class VoiceProxy implements VoiceInput.UiListener { } public void handleClose() { - if (VOICE_INSTALLED & mRecognizing) { + if (!VOICE_INSTALLED) { + return; + } + if (mRecognizing) { mVoiceInput.cancel(); } } @@ -553,6 +562,9 @@ public class VoiceProxy implements VoiceInput.UiListener { } public void switchToRecognitionStatusView(final Configuration configuration) { + if (!VOICE_INSTALLED) { + return; + } mHandler.post(new Runnable() { @Override public void run() { @@ -597,6 +609,9 @@ public class VoiceProxy implements VoiceInput.UiListener { } private void switchToLastInputMethod() { + if (!VOICE_INSTALLED) { + return; + } final IBinder token = mService.getWindow().getWindow().getAttributes().token; new AsyncTask() { @Override @@ -662,14 +677,15 @@ public class VoiceProxy implements VoiceInput.UiListener { } public void startListening(final boolean swipe, IBinder token) { + if (!VOICE_INSTALLED) { + return; + } // TODO: remove swipe which is no longer used. - if (VOICE_INSTALLED) { - if (needsToShowWarningDialog()) { - // Calls reallyStartListening if user clicks OK, does nothing if user clicks Cancel. - showVoiceWarningDialog(swipe, token); - } else { - reallyStartListening(swipe); - } + if (needsToShowWarningDialog()) { + // Calls reallyStartListening if user clicks OK, does nothing if user clicks Cancel. + showVoiceWarningDialog(swipe, token); + } else { + reallyStartListening(swipe); } } @@ -704,17 +720,18 @@ public class VoiceProxy implements VoiceInput.UiListener { mLocaleSupportedForVoiceInput = SubtypeSwitcher.getInstance().isVoiceSupported( SubtypeSwitcher.getInstance().getInputLocaleStr()); - if (VOICE_INSTALLED) { - final String voiceMode = sp.getString(PREF_VOICE_MODE, - mService.getString(R.string.voice_mode_main)); - mVoiceButtonEnabled = !voiceMode.equals(mService.getString(R.string.voice_mode_off)) - && shouldShowVoiceButton(makeFieldContext(), attribute); - mVoiceButtonOnPrimary = voiceMode.equals(mService.getString(R.string.voice_mode_main)); - } + final String voiceMode = sp.getString(PREF_VOICE_MODE, + mService.getString(R.string.voice_mode_main)); + mVoiceButtonEnabled = !voiceMode.equals(mService.getString(R.string.voice_mode_off)) + && shouldShowVoiceButton(makeFieldContext(), attribute); + mVoiceButtonOnPrimary = voiceMode.equals(mService.getString(R.string.voice_mode_main)); } public void destroy() { - if (VOICE_INSTALLED && mVoiceInput != null) { + if (!VOICE_INSTALLED) { + return; + } + if (mVoiceInput != null) { mVoiceInput.destroy(); } } @@ -826,10 +843,16 @@ public class VoiceProxy implements VoiceInput.UiListener { } public void cancel() { + if (!VOICE_INSTALLED) { + return; + } if (mVoiceInput != null) mVoiceInput.cancel(); } public void reset() { + if (!VOICE_INSTALLED) { + return; + } if (mVoiceInput != null) mVoiceInput.reset(); } } From ab64a7c85974c8e8e319488db2dc025c33939582 Mon Sep 17 00:00:00 2001 From: "Tadashi G. Takaoka" Date: Thu, 4 Aug 2011 09:40:25 -0700 Subject: [PATCH 5/5] Fix NPE Bug: 5120674 Change-Id: Iedfd7af33a96b68d83d9a844f61ac40b9523ecdb --- .../com/android/inputmethod/keyboard/KeyboardSwitcher.java | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java index 0779964af..811470c26 100644 --- a/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +++ b/java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java @@ -187,13 +187,16 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } public void save() { + if (mCurrentId == null) { + return; + } mIsAlphabetMode = isAlphabetMode(); if (mIsAlphabetMode) { mIsShiftLocked = isShiftLocked(); mIsShifted = !mIsShiftLocked && isShiftedOrShiftLocked(); } else { mIsShiftLocked = false; - mIsShifted = mSymbolsShiftedKeyboardId.equals(mCurrentId); + mIsShifted = mCurrentId.equals(mSymbolsShiftedKeyboardId); } mIsValid = true; }