From 7f0befe1f0e346ec6468f229f337eda32e19f6d8 Mon Sep 17 00:00:00 2001
From: "Tadashi G. Takaoka" <takaoka@google.com>
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<!JD%!@B5MylYVs2;*vcSj$n{`SG#U(+hX;vxu$)&lec_p4Mwn`Pb
z1$rr&DOLoXTEy&BpQF2PHUk5rqo<2wNX4xu;b*xH8SuneJzuzJ`QH<Kb`9%aADvtw
z`@`cN>&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$`78U<Nt1VlGWk2yIS&`KUy9H4w#?9;>E4|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=Bu2JZjr<OO*k-3{@oZr(cVOY3qRge#Ah!A6pP$C;9_-9JABjl(6Oy=+ee>qc
z<qR+H2Yik{tn-*%@c#b#^YI&#Tz^ec^_Ga+U+25cchRCnj|>eBBLxKo&&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&<HwJMe|>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>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RR5$`<0k_Hldz|YV@SoVH?z+A9dZyjzWa96J{7eKYHiIQ51e#2
z*wd{ZcX;}R)d$%P>{!|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^=etXp0g<?-<AV)+;RKSTLnh<6)U927oR8e6YnG-bho`R-q`<>ze36phI@
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@gmTzoYvbKUECy3<bw2QZ&o{own-x#0=7PFBcWNnI1%ncJ89=YU<-
z=dY8`?nsTi9&(?v?WLOKs#W{e?5^SG^`6A-E50~eXQOW|-`C`p-rBxJ8r@l2vzqof
z$Zx)x!?Zc^-s`Vx^0vQrb$zNdf3ng1;+}?}RHk}kpC=Q9_gp-(p8pVw4CC|r4=>nD
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&}YM<CzW(a6=%0;t5r&C%4{$kD>h(bdJk
z($dYsb#fI#ks(e++n5q!Fs!q1HnViJFm-ftGBvSqvs6+jE(uCavr5TNF3nBNEAe!(
zRjSA>&`ZfovBJ=c?$jb?r}{;6j_5NmFwXUKaSW-rbtmj>R<naZT>YemEAmc9<68GQ
z-*?pTsQNgedLc{I%j73F+&?IIRBJww{l(WBldXF&!_#BcMq_WKG*6w*Oby8yv21tW
z-~KC;KJE19Id8ILjvw4K=XRy6a~a>diH9Ru{_X61GwILVy$==im}S`&^3J5yZ<ae_
zE+A!kfO*2Nl~=QD5B=GDgg-n*i|_KwFZVw0iN0RyDbZGK{Bl=b$?m(>#|v3JC;jsN
zQ=qCm)xdL7_~}iz0!6M~^Sx|hB*EjhNhf~o5|PvTI%3^T9A#U~FQynNb~IN!<w-kv
zL*)L<6?5+D$i=&cUH``)IW3i4HTh%3pMrXK>&TtQ=1%KTpWQpv-t_kCih1gbG%iWr
z_r1KOsCoayUJ=*K<ApxneAxj<J9BTlzWHs}sJC$<M}bCM=HolFdYTk|%=K#*ySU3$
zqLATzW$^N2b&JnE|9q^#qNYJ-SDVwS$Hr5*{H0hJCHs$?=%p}vhK8!PC0>}E(DPN~
zgp)#*jiK-6`#EMC=O29_@Ba468`&pJf8I2x#6Ng{ThAujd_}F~w!3@kSR@!sf4+X1
U^<AV7m=+m4UHx3vIVCg!0Q0901poj5

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_normal_on_holo.9.png
index 9e77015ea58dae63db43568404dfcc0c1769a18a..e4469c6dc396191be1467c9d304644705e8526f3 100644
GIT binary patch
delta 1136
zcmZqRUd*T18Q|y6%O%Cdz`(%k>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+*LGzM8<WP;5)C57UWpwu+0l>Fq<+|;}hPZwLI
zirfOdl*|+>f=(@BcB<c>!+VK=fjQXI#WAGf)|;ra*}{$@^~RfbpUg`R&d%1pB__H>
zRCKQhOTJd!9aonR{vULj*!BN0%CT-#_piD%S>D{<A)uv;bzy6lQ*^fdC6n22&Yk<E
zwmWls=By)WL6=SV>wIRUq<{PSZLj(Jy}Tc5<wH0WUG!YCBK@yQX}Hw4`iWfO%xp0Y
z5nMcLPMh$SMK)%&d$qP_xm{fKr+3|nTq)Njt~)s5x}VPQb@S4k^ycglnbjvdHDwsC
z?VptVcEg9HQ0d}pXKVkI9{*$Y`N5Ru>AP$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<!&cq-x`_S_{*)_g~}UQXl{H@<61m;W}Oey{HK
zaE{jYOA}>`84JF9ZYd5>I_|{1t6X=34Clj@is|(U9QU%e<nF4edoH}ou|L`M*W_@w
z{QeEcBPQ>0Fpmgv?7K5HGqh46K<t<r>+!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|j3g1<DbI&U%G2z<f#V0IP+H1+?{jBUL+nc^0
zf$D;<g`+)vEKh58e3IMr)=zl$`AL=4Jxk}#Kl89#MEgnUMt<gH23wYRNU+;@u2@<6
zbJ@MczYO$mJFk0o)#vqFXYZ)c%I-P;gDTqoH{B3aGJdk3iHBi+|6kiMB|}kQA;RG4
L>gTe~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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~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<LR${6YBnaIqaoDlt?{Nt%*Clms2)VDlX
zks6sA({FILO`zU=b-qjBo+De$FNC*mFqv&N_gv)KFzc0Js~4=wN|>}r<7Uvxk|-Uq
zOdGlNJYTLZ?48%zmT2?j^Ut1TnG0(tr%Jy1S`|EL$=`)j1^<i79G7e?aBp;6mdSKE
zvFab!v&5Rt^SqzJ&DX1+X=?5L&%8OedZ9smoPR?7olA8y|Mx`eN{4TgO5b;-X1%bI
zo{Our#=5fk4(As=_~MxmVLa6<wIud?pN!qLNoF$fHoc!#f6}X&U82NMYGZr<*vT2a
zQ!c%BTKGVAQ6hihvgWGoldVi&o4?H4E}d&4^*qA0z3uOc1(828oo`n*>OYr@I%oWB
z?ftWkLjIEu@vY%zpCGW!(4XO8<f3Y=rgud<V^qbuH`XnC{39Z3`Lp*5vn?iZw-`v@
oTNYb!EHA*3^KxFCJrfVZd8rp~Fa5vm3{0L3p00i_>zopr0AVm0`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
zcmZ3<HJe+pGr-TCmrII^fq{Y7)59eQNXvmR2OE&IHdwc4qvBsi1tW8F14m;^M-xLM
zV>1gwLrY5&XGcd%O9KlxLrZfL!^w6`G73gcE+#Gp25znv#^#2GE^dx4F6NF-PA2BA
z#-^6eZbp-<5Q<!JD%!@B5MylYVs2;*vcSj$n{`SG#U(+hX;vxu$)&lec_p4Mwn`Pb
z1$rr&DOLoXTEy&BAD^>dhk=3dw5N+>NX4xu;og3S4Fr1cPT9s15WF$ruvN^$SE@xk
zDtrws0@ZwtM}#_k^)CA6T@d9q(+P@N=^N$PBN-knvUA(#g_*4tmpnR+zkN=BR_SE%
zJS<ee$t67~wMT2N)U2|wG=bd>=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{<!iU_YYIq;~O=WX5Fk$I^#9T<wS;!RIlEG%$1VwWou^4Rc=<{XcBhpy1nvx
z;2*Yqe)D`@f2vTwA#WI$TODcmGd{Za<&;-fPJI6>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=Bu2JZjr<OO*k-3{@oZr(cVOY3qRge#Ah!A6pP$C;9_-9JABjl(6Oy=+ee>qc
z<qR+H2Yik{tn-*%@c#b#^Y^!8X8-!dJ6q!3zFPNfzK0GuJ!)jEi>#}=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<X+`Q7xwqO)CHUA8$nISYRAgzVbCDBHL9
z9@|6)R&!C^pG-&e3rs5lq5_`WYFPc0RUm<3%Bs_c7}{<x1tuc~Pgg&ebxsLQ0Q$`D
A8~^|S

diff --git a/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-hdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index 66138edecacf83f3f375a7c21ea779a2a7284f0e..af525376351667338ebe9271aee015f7488a7b8b 100644
GIT binary patch
delta 912
zcmaFEb%aN;Gr-TCmrII^fq{Y7)59eQNV@~EJO>+)+?so#b)({6Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOe7AZjNrQ7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PD@aVpxzln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RR8Stu0;$COhAo}Ar-gYM0xhzau8XoC2id5$g;%aP6PLb2W)Sw
zUwc@(EYaBeGWOa|hi_|R8f?3cOwv|Z=%L7S&?2|s=Fj_6CI-ujx1~LP=o!DxXxrD<
zKl@WxJg<BrwqVMk#Wue#r9XJ6YIU;ez?_)hd$L6?dK4Yh-x<+g=<8bVaVvpy=c%Gq
z3aOLo{xIH*b@H2?!q5Ga<#cCf+;$(o-W2Jr8bt<wMUDOZ0zZ7viC$?WBzk?*hqIh4
zY!Tu|1Rt+(Njddois%uE=7SFo7wz2hc+P%LE#q0s{$^~A>VN$4hp`WTlZNEdhB*b>
zy10(G?Z00iu{P}e<ww?M(>}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?<T|4+?)t?n;Y_%`7nya5+YCrjn
z+6w!1%-5Zh-l(@%uTH<cX!A{<*?!B9{;Y{>+a6)=yLs3B_whHk#kT(5u=o1GrzQfj
z_w0Vn=Htq+IQIFVAd5HKoW~Pnds{aherPaZb<oMKx%Ey9Kisv}da0D~;`Bvti}sEB
zA1-I|JbEDW{<!6el&M}zWji?I5+vI`?!Nuj?rYWF+TC}jIiI@xU&=q^U8!8#$@LFd
z4K+D#N~#~@i(V&FyiHO)y?Px-Ov;oQty&7FPwbDLyK;h|M|hBz(4?f5S$qCOSN42U
m6uY!xZ{bOM$A4S~q6`KKe4_KVBnAL88H1;*pUXO@geCyd(}+C)

delta 694
zcmX@Y^M*^YGr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f
zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YM>jV|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<zkcz~mbkaC)_t4rp+ioO8X4;%>+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?<tF>2l`mJlz5eFRxjWUn
z%k4{I%8!@WXI!@}n6Y#7^qH3XtIz$MTb-u(TxN>1Ld&BtnQ2x0l^Rd$=YG2H+;h<H
z{r1V?2N#sJ=A|3`Y`1J&b8WUn<lTwSO*p?c|C+w!!jZBAnasQW5B(GmV4m@)?0NIz
z=DWI8h6O5rGk43#=yo4g+opBOBR+iIuVd-%zkJhoPW?D#eVDF$fNAZL(#j3L?_GI#
zVZ%#Dmyb0CTt=6l9J>49$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<Y$~(M%7hNwFXxu5hP-SiY)>@l;#iVfOiXOFjZAZl3KkChVe=_Ob
z;)!+%DvTa8CHb}5OXM~kYl-!i3!d@DIp6c?-?!K8c<;}uzfpasVr7O+(6kFp3C+tZ
zjM&aSS@!A8+6tHYTZ(TdmgWAOw{FhnmAbnG<b%_d^uHWEQju=)G4Vj+Njbh1cbZMp
z%RgTFJjF(J-QtipR!J(#9GvV*43g8zH^()-2ye`_R=Omypl7-C6C;_7u(?cGyG_jd
zyjmIBIr;wN<Xf3;jJMx@<93bWy+`)b<m1v7_AdA7TszgT$h-5qSG|Sd%V<x(mxkGD
zQx*lz{WN8MvD>w7{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#!+1uP<b6<`RSWGc^
My85}Sb4q9e0D`_8I{*Lx

delta 705
zcmZqS|IVe@8Q|y6%O%Cdz`(%k>ERLtq@{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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~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{<QN*0}5X@%6Qnmu9>wu~MIU>g~hQolIYMNzTxmd~tJi<>M0u
zWjmH-w%XPCe%$}W;@rX1jUrtgEq^%MKm2(uxc}j<b@y`2_C7C(;-4qVE6f2DmDHJh
zQq#_GqW$hvn^c*|h@bW;6$^q@Cw~;N+A*`Xe&+wa+3O9?<(l>VUHLR>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;<lU|i_w;uunK>rJGi*AWAeT%)AuBX#0?&l+48h^gWc
z4A;9;%{aZOqT5J)M)VFN<sj)9M_7U+vTprbHh1L<{wbN(_LYC%@2#<_pK;BKOSZ?*
zICk@boyiTydF0NTq%qq$9y#*vKvw3~)prEf820%1v;^=98*n){COXwyGOjLsGx^Bf
z=dw}JXQx~atG>48SA#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<GU_Uq$(b$oIc8oLN8d*p|5-kN5BHKY2Ap@6-$~j;%^3Vp#snKbu;w
za^9&l<NMSzr5weX=YF;ay}A?Uq4`@%dp^fzBcEehr#FS?s4;v<vMW;zF^|<VpM5rW
z-t&I7&)cuHo+&pwcI=jA?SXyg?ya<(bynxuJN-rP;+~yrG!xgI&HwmvL{-D<XXP&@
zL^y<ZbMor6<*7ehm~$aID4c1={`xiBJ~r6Ke_!)7pg8d9t@U2J)+;4m|0R~dFlnt&
V@@zHNZ@~1(;OXk;vd$@?2>_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|!<Lkpl17dJ;!b0bF!H%C_&
z14~Oc3)jh22t|%K6>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_38<OFxg`Qvf#EUtdm+q7f%)jhTw
z100#cUfawLo#b)GkXi7$ZO>z?9}Er0ue~siQ&kq?oR)xr9uzWNwm+%N$Ub-9zuRHu
z=?b}h@t41bTsC<vX1ndJ|MxY`>bi$d_;dZa=6{qq?X2dD`lbCzTrLLFm{z-PzwW(y
zdf->VH<nuzI~MOVKJxCcURAE?RH;P&?=N;_3UjVc=->FLJWOdzc~^;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&}YM<CzW(b3h=0;t5r&C%4{$kD>h(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<vOYIxRgw)ta~Bd4IM#LSs9!=)uMj0=j20#XD$>`%xnsC>QQ
z>Xik*+Wuc(AHU}N`}_Kg%ar05?9kXbjq&rl>;<l~MMXucZ``=y@b#v;LY?dNSyFp>
zl^BoMglu`jEwKN<)d!B5juW$)*G&_5XkcWRV|#j)(y6m<z?8(`>FVdQ&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#$0<h(!rFSCqF@&@Fu*%eVvFBjzY#$c+Ty*MulT8pN72S1#oLFQz2I;+Fhg<u
z7Ff$IP7q^;KpyWUnU&k(gxBKx;#wBL#DwkI;#5@M-vTb77}O-C8Yp!I)S(15-7t)s
zKvke3E2<3DDl{xjwG;)+9+7*a;n3=O?U^rrvc(Z&sU^$f@mLyb5}`XXG)=SMP}M58
zsAdNVLwPmHR!asCX90~;7Lf!LjA%ginJsdq(-7j+_fLtFY?dgVGC4=73?)U5<07t!
zb;i2*kBqt2S??glau;W0p9Z`h!_^YZbN6pYg&|jC-K7yP3fl8Xupi@ubv#?-f21%9
zE!8j-M>8EAs#?7PdHA~PIHsvI+R!v~SaQt6>agy#T%*})m>Ps$+wnZZX*PAErPWNg
zt(MqMk};G7xbz!wzcZ}!Ppsuqj2NLkLiWlI*cuT=vJpvvyIli53ZkSq7v-5o>tPx_
z!eN_|7)<hOMRWXXje3I%ZZ#XKK0od$HvFHQ$y|(FG{;}fQeN>6EVieu&kv`=gA+b6
zl#j-x`_EqRvAW*zoL>HI@blzkePQM3!nKumPb(LX(qrMqhjX7$82<WtRC#+=I8za>
VzF$0E{36g|8au5`?`8AB<KGBtIMV<C

literal 0
HcmV?d00001

diff --git a/java/res/drawable-hdpi/key_hint_at_holo.9.png b/java/res/drawable-hdpi/key_hint_at_holo.9.png
index 2b8520a92e487e9488921e0bf5b31f854c8b9677..e7ce4b065b7c977dcb170ac4ff180e0c18c39442 100644
GIT binary patch
delta 837
zcmcc0`HNezGr-TCmrII^fq{Y7)59eQNJ{{*3<n#KtbSJiZlmH~Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPHskSmIltQ7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PEua4Ooyln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RKM)4Pz(bDla{B8V@SoVEn%HSvkgS1OjwYRWIg%Zlbp~0?_X6e
zn`0JSBcSJ5ySkzMMoeK-TFya_s^jnWsqZjsD?G=W-1GS7=Jw!ob9xN~b{uw-6RJ;k
z_<Zc(gq-LElc(=f*!Q&0&)R!+qKpE=x8H?NwU^p7UAn7ZG|$rMNqKnvbWhz5W%b-k
zTaJa-&rhASO!2LwLR(1Sn~j=t4_^FPvu$qMLd!EOT9b4$H$ShRSm8NI@?NXJ$C|2X
zQ`{o9?(2PQoZBP5)|_$eQPUk(#v3mFuZTD!pxRTvdtX&$MNB2jW%1?%6M7$u2;V<%
zw)^gsZQTdHFFw6q+|{;wnbiYP6V-Yau4DDO(<blHSk@s{Z7_MW=d|Z8%^rnq^X~d7
zy<U8)=Wv5lrmTXNOJ#kvaHwG0<OLI)BI34O%L@+AC`s6|?aqUOIV$t+zOcyTJb2Gz
z?&LVlYy7j=-U`p#wLHORatQl(rAJ5J#oGO?Y%X0m<*e8e{*wo$+|pZhIN+3a)~)|L
zBkJ2Sr?p<S)95|1?T^E;X3uFs&t@o|?*6>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
zU1HfP<W-i(&3v=B?SAY@`M-Kn=NnUJeZDC3A$X(g4TYcejBE@FUIuchoL|#{IfKE|
L)z4*}Q$iB}Hq&14

delta 542
zcmeyxeU($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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~5v%ue-u;i`oU42-OvE{-7;x2}X9<ZU+KDG}hlAQ+*jUBc#;
zz-q<R6X2E+p1@+{6xk?vskpS?Lzkm9pwpvWR_9#bM%l-E#glu)1s7MHni?o&nUGra
z;MCWNR<iY-f95=iYJBeNy)UigoTz|q0Q>st2We~PE>>nQ<TPZ`(w>mHIJEvwe~HZ8
zY3v4um&8)$y|218Tcb!IlEZtEwE=_pEbn*gH%@%rZoKe#eGr$w@%w)ZRfOgp3eta3
z)1f-Q*~2>Qj7#k0Co9&QUs}KLs8@w1<Ekazw-&B>*cW<<%}@Gh8hiF*F&9(m6KpSU
zl}Pp8`7q1d?y`NRr{fx#?yH+pd<=K+DewGwIJ#c{b9lk5-t7#`4DD>m=a*b<yaJ4J
N22WQ%mvv4FO#pVkwvYe-

diff --git a/java/res/drawable-hdpi/key_hint_at_large_holo.9.png b/java/res/drawable-hdpi/key_hint_at_large_holo.9.png
index ff56845f88b7b5ae555a019d12f5038cc136a198..3e8db989c3ebe31f7f5675ea3b844a7f91701708 100644
GIT binary patch
literal 1639
zcmbVMeM}Q)7(ZYNHmiUlQ|H`SKR2cA^}EFaZI9YIN(%+nAlp28S2&?}r9ElEk0F{V
zsB;L@X|$p-Mn_<Zg{e%~fGB2uj1Nbqvc-uIQ>7XhZj0isVBP*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&Fja<G__J8BJitC<Js_^9hH{C1;KE%ILlSn8O0c
zRj52UYr-j$&H$=NI|d5b+!!-g#05nV8{!MZV(|))$A!2YE{_B8Vj!`M&y#Vv;LC?a
zTeG7USt_i4X^WQRtXzt+$v7OR)5&)7*`z&(14*S)KL?K&Lu<r1iU<mE#So5#0R|Xz
znC-ZY!bt-3Ga}jKdP>fsJ)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!D<Bzixo<xK%B@I
zN>yrJ0IMY&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}<Z;l*@uee2#k2NwKnpJWI>NPA`*v-NPAsodc?Od*I)|<wzUZ`|cZ=Lh
zwmlZ;X1bcaM~7E<qNWD-HdJjdi^mPa;R#o{9gQ9J=$!k{%kveDiySPxysR1Cr;li_
zddN%Kx(vuY`)JiOZ~keYBzfnkNc{FT$<NGt{da#Iifn1MUeX4=UyVK<Jce+hzrpn(
zDP3FKEkA^Y7#iv~nb^?<J0p#aL1Eq1z~EbLDbKqa!xJiz*}moXyCP#NLcHC7J=^Uq
zs_k@Tcisw(YueRa%~;obBr|l!jO*{-9F23knVEZ+1V^3QUH6o6{?7g@`J?+rdxy_w
z<vbmmPDuLS2&)aTxr2mBTc!-g*N**ov$!wOb1u>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;QhiFy<RR@%QFO68&PJY^deJsr0qb2j}}7
z8g$-35<c@XXR~S3kvw?K?@5)yQb9(hrk~k=3_th@WIXZEm$p3Pk|4Yy1qe!S-?V*T
z=5^1svfnUyw4!9~I|*AiXuy`~nmhVE-UcV)>AbeO{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?HpTwAm8<K7p;XBRhA#Fa!T
lck}?TDfGJ<#k56Z3@%{t8VUy?rP=@M*Cr;zb;`A+{{TH}Zwmkb

literal 362
zcmV-w0hRuVP)<h;3K|Lk000e1NJLTq001KZ001Ni1^@s61Kfk*0003oNkl<Zc-rlj
z&25B0425Z7TcCw)AuVhR+rqRkEu@x|z`%hEKN3Q~9l?>4^SrSmv|1^bodHGjq$dV5
zl0R(olO#W)Bq}N@Dk`Wb!bBLaFlAX@vMl>#=Xp+5RS{z3oFk3%9<MM+lCqJs1H=~_
zNpE@`@tekZ4+9Oua0v#(0EfUhkwS<&06tnI{*A+SnkM^p7yw+K63%R$54K!0Y>qSd
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=RfIVs44ttu<k^4f8|(u^szt%ST>t<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<n#KtbSJiZlmH~Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOfIg<`!nI7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PDzaVpxzln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RIe_k(+l+9Ur!gukcwMZLUXyB3<U1w2D4}%Jz)3ce|?m^P?t~Z
zifyZfIRy_IZ`;uPa$!$(<-BS>fj|ZZF2#nL>uS5rIr!Z=y&v8*v8~yXc0*~uXhHO?
z!(6)`uVJ!OU@CZ@mG<mWfsRtLkH@~CSNrZi-TqGAD)ZuO4ik09=k@k;n%7LN`q$%H
z+*G;zr4rK?oryt<u5*3L{r0k2f@PchovSL7t+stRbLq&2_Xe$eZYs4wdLHX`PUZ={
zd|>IGbuXM}<-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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~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=<q*E9;hpM=^x4UiH~IZ9n4<&#C|SZeI|7<jST^TN=GS&CHJ#
zbL{72{+AVHSafL5jk}V};R%P`V@hT6%K80TENeLp7?z38`Vv*L_&6|aFnGH9xvX<a
GXaWG#4b-3j

diff --git a/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-hdpi/key_hint_exclamation_large_holo.9.png
index 0152ce21b63d58b62875506b8fb62f2193d80a92..75a450c872f25608bf8670bb811579a11db7ca37 100644
GIT binary patch
delta 674
zcmdnUH;2ouGr-TCmrII^fq{Y7)59eQNJ{{*3<n#KtbSJi4oFFsxJHx&=ckpFCl;kL
zIHu$$r7C#lCZ?wbr6#6S7M@JC*{FAevEIns+`!S;($U1w$k@!n(9qJ-#M#l&($c`f
z&Ct@^#8640BDcWT*UBY7ximL5uf)^ERtYGgmy(%cW#r^$<YsAT;%Z@RZfNM@=IG*L
z?&#!XV(w~eYU%7|1k>x8S6q^qmz)aIn~BgXX^czr<ata93dY7R=7z=~_ZXRAbKPV)
zW*G%SUYH!k>{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<a4dCpNxFa>
zkGNiI`sxP<-Lp1ne%j64ruo|Rb>nWki2KpkciI?SYS!mJe`amHUZcXvIkFd4-4{RI
zd9BK)!)vb%&#&`&e&W6pOPn$y<abt_dOE?m$VWTy)!QsBug0VQ^)An5u(;G4lvm3b
zFz@%?52lhU*bd%l-L=N+*eTwehZAfL`&B<X=Cv|q%d~9K%)?<DPi9}g<F(FpckJWr
zy_H8A{dRx7vgZ2aoz8)LD?+o@EPneW<BWvt<1aCR45v1;%=m9p(&hb-LHy#;&!3V_
zeKfhA{+@Z_hYWknq>ZWO#`l{w^4aSdPn@!PcIQm!#r2DJ?~V)MY3N}1z&2se&C~r8
fMFncO4H!<nE1W2O;MithdSmc(^>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<!ID%!@B5QAZzg|nHZqlKxXlar~5g`1_4LUBn@
zYMNC_esXDUYF>$_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%8h<k0i|3ero~Dfb>dq+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>$<v)2UskN0|edmsDywe<6=SF1EdxH9>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=9ry5cdjaE<rMZrg+?_-HO^$QvTG$-Y|NPl
zpA_x1sjaP@ckrO&&F7z06L)9xHSb)`E3{0|VGT1gb67*+ufKKf`T6UeUpx07vY2~L
zuORTjlP4+-?f2fkeJeNTK(&s&sr<4Sz54LqI@#P0=4ts@&E<1Y6ge;>u&Hs!rM-Li
zUTr;S`od~Ib8~Ij`3o+byH^(H<>gfr78XhfEuG_|W?XRg<c8d{&3h^hw2q3dPv@}-
zkaQ3iUY~jEpGEfZBtxNIx0l>n(|(%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@#<d#V_&+Z^Cuc~HYMGbWesUyQ@_
zdZ}lRWg|{YtCkD@%}(7I5tTo4mRkLCk>s|o?QLxu2W0$#neYF9W`-ThABo;c4!#QH
OGI+ZBxvX<aXaWGDb^8<m

diff --git a/java/res/drawable-hdpi/key_hint_question_holo.9.png b/java/res/drawable-hdpi/key_hint_question_holo.9.png
index 088550f5bffbd8e657e4f13715e510b37f028ccb..84bf78fd419c7783fe35c830d0b2fea5a600d502 100644
GIT binary patch
delta 636
zcmeyswTVlyGr-TCmrII^fq{Y7)59eQNJ{{*3<n#KtbSJiZlmH~Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOdIS=B9?O7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PC|a4Ooyln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RR7T3_XGn2W0I$fV@SoVEuruIn+*isZgr59vj34Bz3Bh{|EY8M
zjFYceXe58jneD{ExtO)eQ}e^adtdjK+d8-~F?et={@qs+u$!4vU{`?`llu~R#T74u
zMZU4<mGEV>mYro<pnRa}<VuERkIt{pFVi_4;w8D-KP`aKZ_ekU+VcA9ZLTLYr6d~e
zFWM1y^0L}azRnp_obF_N@D7t_Huz(7OzY`OtFA@L{*&at#+rC?D^9YMn!#6pXHDxZ
z*XQ+r|NNS!n;Lwx{FGjO{8mw;vbaOba`(LXti76j;gqhohimUHEfzbFH$UCCXzk(4
zWx;V??=GJ_rdWUYWT9Z!l*v5zJ?mwzubcbEiaFuH^P)GqzU}JnVe1GyRheilam>#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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~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^<e=gmO^Zk~8e_QrDjH7Vj
zlwUrVOH5?=l&u_OCk5~=n5%R8-n7$Cz2`lDzwf<0t7C!Z?;mlTrk&C}Z2bxTj{WMB
zJ&%9hQ^&rf$UWIFXX}q|4(A>ITJ*ga>#lE|cm6r&n)8nS1{aU+WtGvDY0o@eE$SM$
z|N3j&^<k^88}Q^mi1e#@U2Az=?MvSF>Q*z)NrEmDgnsPe+EIKa$Z}hURDYH%qw%UK
zJl|GsQWLWFDil7LV^+<u&;HoskERy`J0}@MnUp?a^YB`^>QZ2<*yUf#{!YC+b80&G
zS<dO-?N52Fi=2LLiu|2-ALdyud!%15z4%3C?tee=9VUt9A6Gvv+tL2O!Y2Jb6Ay!q
X_qE9f=9TLKlOuzttDnm{r-UW|!m12|

diff --git a/java/res/drawable-hdpi/key_hint_question_large_holo.9.png b/java/res/drawable-hdpi/key_hint_question_large_holo.9.png
index 8a9dffbe2739819015a648aa2b1fa1aab96397a6..d1e9fda0696e8088d2ad2bedbb418c9763d4c275 100644
GIT binary patch
literal 1440
zcmeAS@N?(olHy`uVBq!ia0vp^5<o1&!3HF&pVhwuQj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH
zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#%
zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&p<cXz|26w%uvtJ
z*u>o2Tt~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>a<ZY05Coz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K
zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$CpSwYOH)f%3uALbLl-wk7Z-C!
zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNtE%55KaxO|uEXgkl$<NP$rGS8p{F40Q
zjQj!x=U`I>-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf
zZwfhKrVn(CJ}7Y@B^H<vFa?5`@T3pqz%x&39x%rg0kg)}%_o7`lJSD4i(^Q|tutZX
zeuokS{{5d8B;qML)xBgTd%}CpnAO!cUo+aYv0q@`FrB%8;m+e@;%hHXaH^QTzjWD5
zDV2a<8#*V~{FTp5|2H!~E$W>G-{U#fJ%)Xs_ltG9of8tU*>OZ@nn>Ivj<ZP}lfEi6
ztY|QCU_7xUol&h}qCP+4p~VwFg*LTSF;q*Qd~I{X>8b4IXt^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-w<V0iEcpVd1s`%F6d1O?eT;}~4(OCvldp5l++%VzLvt4DfN0|S0
zGi&VVS#>X%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)<h;3K|Lk000e1NJLTq001KZ001Ni1^@s61Kfk*0007JNkl<Zc-rlj
zJ!>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<K9>-mK%@9^SRgSeV<OJD3Zx!f&dt#
zCRYrGW4Z}FAtn+DvE6PzK#2&d-|zo0nM?xwCeT)YTh9<e4q(ursZ>gAHk+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<n#KtbSJiZlmH~Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOdIS=BB2u7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PDza4Ooyln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~R3FLws~_mUGoCJvAr-gYOikoIq#)4t{#;h`B7WAt|Kr84@N;D4
zO;`V|kfb$B;9=wJ_XXc`=Iv85W>zv{Sny@P?3R0iQY|$Wj*oAgSbFrzkKilc_=AF9
zUg_97YvboN91e^T9Q&p)<ZOEVcHiaCHeU5IZSB`)#nf8PFA3!pOH0iZI~X=g<#TE2
zL|-NAHi3A>Smpz!3pX)Oo#kW|nsVyS#LFKy)Yn}IbU0IQaM)?lX_HjZf2TELx9~f8
z{#d?d5wq0-=6_5Ied$rg4AUec@@6b%xX;AHQ1UJ2$<afuxj>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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~5v%ue+hKf3NSFfdAbx;TbZ+<Fqak*~=>;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{{*3<n#KtbSJi4oFFsxJHx&=ckpFCl;kL
zIHu$$r7C#lCZ?wbr6#6S7M@JC*{FAevEIns+`!S;($U1w$k@!n(9qJ-#M#l&($c`f
z&Ct@^#8640BDcWT*UBY7ximL5uf)^ERtYGgmy(%cW#r^$X=G{Y;%Z@RZfNM@=IG*L
z?&#!XV(w~eYU%7|1k>x8S6q^qmz)aIn~BgX>5NPB<ata93dY7R=7z=~_ZXRAbKPV)
zW*G%SUYH!k>{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<E3D%!@B5QAZzg|nHZqlKxXlar~5g`1_4LUBn@
zYMNC_esXDUYF>$_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(;HTuCDrH<g1Xx&Lo3!I#rlRSBS`Esq)A~F{Qb+A5C;Ly{3bU}T`
ztJ?qHchn1iuAbR?{bOwnf8F!l<?qkU|Nejf|CJ}+mMLf0+*}bc<@8g5^PgKjR@l6}
zyg>H<3z<T`T)9I=5s!F_PChs*?^JZU!}prOL*K<09gZeVyzu(#lc|;Olm4eZnXqu}
zgPr2pX0s>9M78)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@iTJp<PYR!fQ#?*M
zxNXdl4C6T8bu{T>TztH{_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!M<Wx2&E

diff --git a/java/res/drawable-hdpi/key_hint_underline_holo.9.png b/java/res/drawable-hdpi/key_hint_underline_holo.9.png
index fef1b63697a0c457ee6763a2dfe053c56c5b8798..8d83cf93875481e13e47d52f81f9ed98525c16cb 100644
GIT binary patch
delta 436
zcmZqUe8ZvG8Q|y6%O%Cdz`(%k>ERLtq$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+d9XLSGb<s
zF>A@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%29k4p&#3p~~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<lSglEh2lX_E4Z9o@Sq@y;z1FV;&u_LBCT(-R1cvC=kosl&HsJ>{?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{<tx2tVjgPzfsn3fgeh
z2I*=tqg0Cuui`_4Sg;}>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(<l@w8Cj7nk|rop*WJ8o)(%X8zhShrb~4izAXC6GCv64wBj4WyquQ<R$TdXK2nTEp
zHAOB-rZTAm1IDEgj{Xp;rV0$lQ6kHWKAK?z12jtC7ZF9Crv_p)&-v&kM=NYJ8l(N;
zSU5Vs`e|B<iIT*L;joX3vVJ}iW185w;Xv6?K+~^={5G)Ss#qan0~wlj#xzUK2^cAu
z&~yr>g+<bSEFmkJ;p%RC>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*I<ZB1>b)i4epp<zCTQD$X*T4
dj?P@WgkFlLCsW1m)xeCq=J9A!nhPH}{s(s~W!?Y)

literal 0
HcmV?d00001

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
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}?MN0VX8GQqD<S7@`hXvhTz1^Ssad_2yvz!Pdr|4M7mLdV7AKuWQx2
zevN-0-+O<~m)oo}WQSzTW+BCb6O$1Jy)-<+eH_N8&p+WE4j3ncAsYq{t%#&jSlLKr
znsc-u?6k`~jE*q_BYc!(w)o@2xd@Wj7N0Z&7~~$FBztERAD-<GqO;@3jK%gY*eNYe
zkYW~sGCj!(tF*;Auf_M(wJd_U2|KpMg{Wb006ao5XiBgV!4?E9Bq3GPb^Sh2Ac8Vf
zWTZ5ZZmEg|Ay_^l_eSHf)%UwgU;Jc?6UK5&mS?k>G*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^W<YGi!3HFC?|JS9Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaEfri;v6eK2Rr<N!r
zrKV@**($x?y<bToGsRXZ+|<{=x4=0yBh#a*C^fjsFC@7tJJ~Wt$=*)EroswnKyGSD
zqC!P(PF}H9g{>0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|!
ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g<k>1^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!<C33Tnwy$e;^|_m1eDQB$xN{_GB-DH
zG`4g!F*GtZvoHjD-^AI`(bCeu!p+dq+{6%O23EaJE+#Gp2Ij67#^#2GE^dx4F6NF-
zPA2BA#-^6eZbmS@o_WP3iFwJXFncpW_CoZU;ni#9T$Gwvl3x^(pPvIu0Rb8LCHch}
z`2`Bj!KMnniOHFHAU-I1Aii};Ey^rQO>ryA&s6}2uT>@%`;CoV%ngk}J~cAI?r(_R
z6mr5$ALtl;P~t#JEHEKp3Is9XNgv38XP(qNV2&vQW(}i<x1$&s7=L)WIEGZ*dNX6U
z7qg>CTlsMd&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`u<dPjfOQn{DBFHi8k_n5y#
z_0sB9XJ%wO%$@Yi!}`a$iR&kpt!7Ab`q}W|-_(y2-rsI{%+|g5zTr#J`=x3B)=L{l
zd2KLbyLoWdr|na|2d-<bdTZ2lG+^TFy%TnEzAg>C_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_*2T<AS>FVdQ&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<!JD%!@B5MylYVs2;*vcSj$n{`SG#U(+hX;vxu$)&lec_p4Mwn`Pb
z1$rr&DOLoXTEy&BpQF2PHUk5rqo<2wNX4xu;b*xH8SuneJzuzJ`QH<Kb`9%aADvtw
z`@`cN>&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$`78U<Nt1VlGWk2yIS&`KUy9H4w#?9;>E4|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=Bu2JZjr<OO*k-3{@oZr(cVOY3qRge#Ah!A6pP$C;9_-9JABjl(6Oy=+ee>qc
z<qR+H2Yik{tn-*%@c#b#^YI&#Tz^ec^_Ga+U+25cchRCnj|>eBBLxKo&&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&<HwJMe|>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>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RR5$`<0k_Hldz|YV@SoVH?z+A9dZyjzWa96J{7eKYHiIQ51e#2
z*wd{ZcX;}R)d$%P>{!|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^=etXp0g<?-<AV)+;RKSTLnh<6)U927oR8e6YnG-bho`R-q`<>ze36phI@
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@gmTzoYvbKUECy3<bw2QZ&o{own-x#0=7PFBcWNnI1%ncJ89=YU<-
z=dY8`?nsTi9&(?v?WLOKs#W{e?5^SG^`6A-E50~eXQOW|-`C`p-rBxJ8r@l2vzqof
z$Zx)x!?Zc^-s`Vx^0vQrb$zNdf3ng1;+}?}RHk}kpC=Q9_gp-(p8pVw4CC|r4=>nD
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&}YM<CzW(a6=%0;t5r&C%4{$kD>h(bdJk
z($dYsb#fI#ks(e++n5q!Fs!q1HnViJFm-ftGBvSqvs6+jE(uCavr5TNF3nBNEAe!(
zRjSA>&`ZfovBJ=c?$jb?r}{;6j_5NmFwXUKaSW-rbtmj>R<naZT>YemEAmc9<68GQ
z-*?pTsQNgedLc{I%j73F+&?IIRBJww{l(WBldXF&!_#BcMq_WKG*6w*Oby8yv21tW
z-~KC;KJE19Id8ILjvw4K=XRy6a~a>diH9Ru{_X61GwILVy$==im}S`&^3J5yZ<ae_
zE+A!kfO*2Nl~=QD5B=GDgg-n*i|_KwFZVw0iN0RyDbZGK{Bl=b$?m(>#|v3JC;jsN
zQ=qCm)xdL7_~}iz0!6M~^Sx|hB*EjhNhf~o5|PvTI%3^T9A#U~FQynNb~IN!<w-kv
zL*)L<6?5+D$i=&cUH``)IW3i4HTh%3pMrXK>&TtQ=1%KTpWQpv-t_kCih1gbG%iWr
z_r1KOsCoayUJ=*K<ApxneAxj<J9BTlzWHs}sJC$<M}bCM=HolFdYTk|%=K#*ySU3$
zqLATzW$^N2b&JnE|9q^#qNYJ-SDVwS$Hr5*{H0hJCHs$?=%p}vhK8!PC0>}E(DPN~
zgp)#*jiK-6`#EMC=O29_@Ba468`&pJf8I2x#6Ng{ThAujd_}F~w!3@kSR@!sf4+X1
U^<AV7m=+m4UHx3vIVCg!0Q0901poj5

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_normal_on_holo.9.png
index 9e77015ea58dae63db43568404dfcc0c1769a18a..e4469c6dc396191be1467c9d304644705e8526f3 100644
GIT binary patch
delta 1136
zcmZqRUd*T18Q|y6%O%Cdz`(%k>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+*LGzM8<WP;5)C57UWpwu+0l>Fq<+|;}hPZwLI
zirfOdl*|+>f=(@BcB<c>!+VK=fjQXI#WAGf)|;ra*}{$@^~RfbpUg`R&d%1pB__H>
zRCKQhOTJd!9aonR{vULj*!BN0%CT-#_piD%S>D{<A)uv;bzy6lQ*^fdC6n22&Yk<E
zwmWls=By)WL6=SV>wIRUq<{PSZLj(Jy}Tc5<wH0WUG!YCBK@yQX}Hw4`iWfO%xp0Y
z5nMcLPMh$SMK)%&d$qP_xm{fKr+3|nTq)Njt~)s5x}VPQb@S4k^ycglnbjvdHDwsC
z?VptVcEg9HQ0d}pXKVkI9{*$Y`N5Ru>AP$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<!&cq-x`_S_{*)_g~}UQXl{H@<61m;W}Oey{HK
zaE{jYOA}>`84JF9ZYd5>I_|{1t6X=34Clj@is|(U9QU%e<nF4edoH}ou|L`M*W_@w
z{QeEcBPQ>0Fpmgv?7K5HGqh46K<t<r>+!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|j3g1<DbI&U%G2z<f#V0IP+H1+?{jBUL+nc^0
zf$D;<g`+)vEKh58e3IMr)=zl$`AL=4Jxk}#Kl89#MEgnUMt<gH23wYRNU+;@u2@<6
zbJ@MczYO$mJFk0o)#vqFXYZ)c%I-P;gDTqoH{B3aGJdk3iHBi+|6kiMB|}kQA;RG4
L>gTe~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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~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<LR${6YBnaIqaoDlt?{Nt%*Clms2)VDlX
zks6sA({FILO`zU=b-qjBo+De$FNC*mFqv&N_gv)KFzc0Js~4=wN|>}r<7Uvxk|-Uq
zOdGlNJYTLZ?48%zmT2?j^Ut1TnG0(tr%Jy1S`|EL$=`)j1^<i79G7e?aBp;6mdSKE
zvFab!v&5Rt^SqzJ&DX1+X=?5L&%8OedZ9smoPR?7olA8y|Mx`eN{4TgO5b;-X1%bI
zo{Our#=5fk4(As=_~MxmVLa6<wIud?pN!qLNoF$fHoc!#f6}X&U82NMYGZr<*vT2a
zQ!c%BTKGVAQ6hihvgWGoldVi&o4?H4E}d&4^*qA0z3uOc1(828oo`n*>OYr@I%oWB
z?ftWkLjIEu@vY%zpCGW!(4XO8<f3Y=rgud<V^qbuH`XnC{39Z3`Lp*5vn?iZw-`v@
oTNYb!EHA*3^KxFCJrfVZd8rp~Fa5vm3{0L3p00i_>zopr0AVm0`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
zcmZ3<HJe+pGr-TCmrII^fq{Y7)59eQNXvmR2OE&IHdwc4qvBsi1tW8F14m;^M-xLM
zV>1gwLrY5&XGcd%O9KlxLrZfL!^w6`G73gcE+#Gp25znv#^#2GE^dx4F6NF-PA2BA
z#-^6eZbp-<5Q<!JD%!@B5MylYVs2;*vcSj$n{`SG#U(+hX;vxu$)&lec_p4Mwn`Pb
z1$rr&DOLoXTEy&BAD^>dhk=3dw5N+>NX4xu;og3S4Fr1cPT9s15WF$ruvN^$SE@xk
zDtrws0@ZwtM}#_k^)CA6T@d9q(+P@N=^N$PBN-knvUA(#g_*4tmpnR+zkN=BR_SE%
zJS<ee$t67~wMT2N)U2|wG=bd>=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{<!iU_YYIq;~O=WX5Fk$I^#9T<wS;!RIlEG%$1VwWou^4Rc=<{XcBhpy1nvx
z;2*Yqe)D`@f2vTwA#WI$TODcmGd{Za<&;-fPJI6>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=Bu2JZjr<OO*k-3{@oZr(cVOY3qRge#Ah!A6pP$C;9_-9JABjl(6Oy=+ee>qc
z<qR+H2Yik{tn-*%@c#b#^Y^!8X8-!dJ6q!3zFPNfzK0GuJ!)jEi>#}=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<X+`Q7xwqO)CHUA8$nISYRAgzVbCDBHL9
z9@|6)R&!C^pG-&e3rs5lq5_`WYFPc0RUm<3%Bs_c7}{<x1tuc~Pgg&ebxsLQ0Q$`D
A8~^|S

diff --git a/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png b/java/res/drawable-mdpi/btn_keyboard_key_dark_pressed_off_holo.9.png
index 66138edecacf83f3f375a7c21ea779a2a7284f0e..af525376351667338ebe9271aee015f7488a7b8b 100644
GIT binary patch
delta 912
zcmaFEb%aN;Gr-TCmrII^fq{Y7)59eQNV@~EJO>+)+?so#b)({6Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOe7AZjNrQ7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PD@aVpxzln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RR8Stu0;$COhAo}Ar-gYM0xhzau8XoC2id5$g;%aP6PLb2W)Sw
zUwc@(EYaBeGWOa|hi_|R8f?3cOwv|Z=%L7S&?2|s=Fj_6CI-ujx1~LP=o!DxXxrD<
zKl@WxJg<BrwqVMk#Wue#r9XJ6YIU;ez?_)hd$L6?dK4Yh-x<+g=<8bVaVvpy=c%Gq
z3aOLo{xIH*b@H2?!q5Ga<#cCf+;$(o-W2Jr8bt<wMUDOZ0zZ7viC$?WBzk?*hqIh4
zY!Tu|1Rt+(Njddois%uE=7SFo7wz2hc+P%LE#q0s{$^~A>VN$4hp`WTlZNEdhB*b>
zy10(G?Z00iu{P}e<ww?M(>}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?<T|4+?)t?n;Y_%`7nya5+YCrjn
z+6w!1%-5Zh-l(@%uTH<cX!A{<*?!B9{;Y{>+a6)=yLs3B_whHk#kT(5u=o1GrzQfj
z_w0Vn=Htq+IQIFVAd5HKoW~Pnds{aherPaZb<oMKx%Ey9Kisv}da0D~;`Bvti}sEB
zA1-I|JbEDW{<!6el&M}zWji?I5+vI`?!Nuj?rYWF+TC}jIiI@xU&=q^U8!8#$@LFd
z4K+D#N~#~@i(V&FyiHO)y?Px-Ov;oQty&7FPwbDLyK;h|M|hBz(4?f5S$qCOSN42U
m6uY!xZ{bOM$A4S~q6`KKe4_KVBnAL88H1;*pUXO@geCyd(}+C)

delta 694
zcmX@Y^M*^YGr-TCmrII^fq{Y7)59eQNJ|5;I0qY${3T|hw^8vgqk@~cxtpP(xru?f
zk%5_op`nGdp^1yJshfp`iL-&3qtj$NCK&}YM>jV|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<zkcz~mbkaC)_t4rp+ioO8X4;%>+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?<tF>2l`mJlz5eFRxjWUn
z%k4{I%8!@WXI!@}n6Y#7^qH3XtIz$MTb-u(TxN>1Ld&BtnQ2x0l^Rd$=YG2H+;h<H
z{r1V?2N#sJ=A|3`Y`1J&b8WUn<lTwSO*p?c|C+w!!jZBAnasQW5B(GmV4m@)?0NIz
z=DWI8h6O5rGk43#=yo4g+opBOBR+iIuVd-%zkJhoPW?D#eVDF$fNAZL(#j3L?_GI#
zVZ%#Dmyb0CTt=6l9J>49$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<Y$~(M%7hNwFXxu5hP-SiY)>@l;#iVfOiXOFjZAZl3KkChVe=_Ob
z;)!+%DvTa8CHb}5OXM~kYl-!i3!d@DIp6c?-?!K8c<;}uzfpasVr7O+(6kFp3C+tZ
zjM&aSS@!A8+6tHYTZ(TdmgWAOw{FhnmAbnG<b%_d^uHWEQju=)G4Vj+Njbh1cbZMp
z%RgTFJjF(J-QtipR!J(#9GvV*43g8zH^()-2ye`_R=Omypl7-C6C;_7u(?cGyG_jd
zyjmIBIr;wN<Xf3;jJMx@<93bWy+`)b<m1v7_AdA7TszgT$h-5qSG|Sd%V<x(mxkGD
zQx*lz{WN8MvD>w7{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#!+1uP<b6<`RSWGc^
My85}Sb4q9e0D`_8I{*Lx

delta 705
zcmZqS|IVe@8Q|y6%O%Cdz`(%k>ERLtq@{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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~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{<QN*0}5X@%6Qnmu9>wu~MIU>g~hQolIYMNzTxmd~tJi<>M0u
zWjmH-w%XPCe%$}W;@rX1jUrtgEq^%MKm2(uxc}j<b@y`2_C7C(;-4qVE6f2DmDHJh
zQq#_GqW$hvn^c*|h@bW;6$^q@Cw~;N+A*`Xe&+wa+3O9?<(l>VUHLR>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;<lU|i_w;uunK>rJGi*AWAeT%)AuBX#0?&l+48h^gWc
z4A;9;%{aZOqT5J)M)VFN<sj)9M_7U+vTprbHh1L<{wbN(_LYC%@2#<_pK;BKOSZ?*
zICk@boyiTydF0NTq%qq$9y#*vKvw3~)prEf820%1v;^=98*n){COXwyGOjLsGx^Bf
z=dw}JXQx~atG>48SA#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<GU_Uq$(b$oIc8oLN8d*p|5-kN5BHKY2Ap@6-$~j;%^3Vp#snKbu;w
za^9&l<NMSzr5weX=YF;ay}A?Uq4`@%dp^fzBcEehr#FS?s4;v<vMW;zF^|<VpM5rW
z-t&I7&)cuHo+&pwcI=jA?SXyg?ya<(bynxuJN-rP;+~yrG!xgI&HwmvL{-D<XXP&@
zL^y<ZbMor6<*7ehm~$aID4c1={`xiBJ~r6Ke_!)7pg8d9t@U2J)+;4m|0R~dFlnt&
V@@zHNZ@~1(;OXk;vd$@?2>_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|!<Lkpl17dJ;!b0bF!H%C_&
z14~Oc3)jh22t|%K6>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_38<OFxg`Qvf#EUtdm+q7f%)jhTw
z100#cUfawLo#b)GkXi7$ZO>z?9}Er0ue~siQ&kq?oR)xr9uzWNwm+%N$Ub-9zuRHu
z=?b}h@t41bTsC<vX1ndJ|MxY`>bi$d_;dZa=6{qq?X2dD`lbCzTrLLFm{z-PzwW(y
zdf->VH<nuzI~MOVKJxCcURAE?RH;P&?=N;_3UjVc=->FLJWOdzc~^;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&}YM<CzW(b3h=0;t5r&C%4{$kD>h(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<vOYIxRgw)ta~Bd4IM#LSs9!=)uMj0=j20#XD$>`%xnsC>QQ
z>Xik*+Wuc(AHU}N`}_Kg%ar05?9kXbjq&rl>;<l~MMXucZ``=y@b#v;LY?dNSyFp>
zl^BoMglu`jEwKN<)d!B5juW$)*G&_5XkcWRV|#j)(y6m<z?8(`>FVdQ&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#$0<h(!rFSCqF@&@Fu*%eVvFBjzY#$c+Ty*MulT8pN72S1#oLFQz2I;+Fhg<u
z7Ff$IP7q^;KpyWUnU&k(gxBKx;#wBL#DwkI;#5@M-vTb77}O-C8Yp!I)S(15-7t)s
zKvke3E2<3DDl{xjwG;)+9+7*a;n3=O?U^rrvc(Z&sU^$f@mLyb5}`XXG)=SMP}M58
zsAdNVLwPmHR!asCX90~;7Lf!LjA%ginJsdq(-7j+_fLtFY?dgVGC4=73?)U5<07t!
zb;i2*kBqt2S??glau;W0p9Z`h!_^YZbN6pYg&|jC-K7yP3fl8Xupi@ubv#?-f21%9
zE!8j-M>8EAs#?7PdHA~PIHsvI+R!v~SaQt6>agy#T%*})m>Ps$+wnZZX*PAErPWNg
zt(MqMk};G7xbz!wzcZ}!Ppsuqj2NLkLiWlI*cuT=vJpvvyIli53ZkSq7v-5o>tPx_
z!eN_|7)<hOMRWXXje3I%ZZ#XKK0od$HvFHQ$y|(FG{;}fQeN>6EVieu&kv`=gA+b6
zl#j-x`_EqRvAW*zoL>HI@blzkePQM3!nKumPb(LX(qrMqhjX7$82<WtRC#+=I8za>
VzF$0E{36g|8au5`?`8AB<KGBtIMV<C

literal 0
HcmV?d00001

diff --git a/java/res/drawable-mdpi/hint_popup_holo.9.png b/java/res/drawable-mdpi/hint_popup_holo.9.png
new file mode 100644
index 0000000000000000000000000000000000000000..f3ab2448126dfdf850bbfaee4b34256d9c0459eb
GIT binary patch
literal 1266
zcmeAS@N?(olHy`uVBq!ia0vp^5<o1&!3HF&pVhwuQj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH
zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#%
zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&p<cXz|26w%uvtJ
z*u>o2Tt~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>a<ZY05Coz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K
zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtAm6C(oyGe<{LR|`vHLqiugM;8}!
zM<*u}b5~<iOJ_GDm|oAk;*!L?<W!iwnLvA?dQI@^wQ?>>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`d<o&0Oo!6({xH>P}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<lpn{FmxPvquW05z_m3nYhcYnR?{7e%mP)_b%*2
z?&p_BXBc!U3Hz5VyV&|;LCW9Y#X3{fbW~3~U!8L>;JZKqLygANhwjG7Cqbo<r>mdK
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{{*3<n#KtbSJiZlmH~Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm|t1}^5t29D;g7M5;?hAwW7E-vPdPEID~
zuEwU8&TdANs}PFJa4Ooyln`U=Xl4P_?&@S=WP;5)C57UWpwu+0l>Fq<+|;}hPZwLI
zirfOdl*|+>f=(@BcB;Rh=HSf0z$D}8;uunK>r7~O-fRPrqc;LLe1l4Z<Zs{l|9@R>
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<iE44VJkzac#j)?N14X8;
zKAYzA(57$Emsgil->$lGo&8K;vgU*v^?#1%*sXe1)srLGJoA8CYUo6sJqM(!_`h}C
zkkgasc5DsNatk~0>EGwvR~a5|g}N5zyEK+IeLJ~9+(A3_%fUxF=beS${BB*Eu-!9w
za<f@Z@Dl4i{&Q9-^DdSyvyE{~53O2#^Uw43;W5{PW@RZ>&F9+kwd}3fVa@1kAzy0E
z{JZKm`NYV~aZ8e}O?Z4yiCa<Y%!a2=kA|>0t@+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;<w{6_&jTaw#_X*)%y9>3b*pfY|pHDm|9u>eYM$<SEgzmkeklB{9Z<`!{3YH
w&mNS2s^@y3W63gs`Gx9@YBtrg|F{eoJYM<zPqeFM1m*<>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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~5v%ue-u;i`oU42-OvE{-7;x2}X9<ZU+KDG}hlAQ+*jUBc#;
zz-q<R6X2E+p1@+{6xk?vskpS?Lzkm9pwpvWR_9#bM%l-E#glu)1s7MHni?o&nUGra
z;MCWNR<iY-f95=iYJBeNy)UigoTz|q0Q>st2We~PE>>nQ<TPZ`(w>mHIJEvwe~HZ8
zY3v4um&8)$y|218Tcb!IlEZtEwE=_pEbn*gH%@%rZoKe#eGr$w@%w)ZRfOgp3eta3
z)1f-Q*~2>Qj7#k0Co9&QUs}KLs8@w1<Ekazw-&B>*cW<<%}@Gh8hiF*F&9(m6KpSU
zl}Pp8`7q1d?y`NRr{fx#?yH+pd<=K+DewGwIJ#c{b9lk5-t7#`4DD>m=a*b<yaJ4J
N22WQ%mvv4FO#oRNwt@fv

diff --git a/java/res/drawable-mdpi/key_hint_at_large_holo.9.png b/java/res/drawable-mdpi/key_hint_at_large_holo.9.png
index ff56845f88b7b5ae555a019d12f5038cc136a198..ae7b6454382095fc32fa3b1d31f1b7ad6d2d4a45 100644
GIT binary patch
literal 1639
zcmeAS@N?(olHy`uVBq!ia0vp^5<o1&!3HF&pVhwuQj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH
zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#%
zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&p<cXz|26w%uvtJ
z*u>o2Tt~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>a<ZY05Coz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K
zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtAmR|7W}Lkn{gR|`uwLqiugM;8}!
zM<*u}b5~<iOJ_GDm|oAk;*!L?<W!iwnLvA?dX4ewwQ?>>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<GSnn3!nF>
zz0JRqm+)rF>t8nyH~$s>$+cZlja8$0(!KescNx##yR5d<#j}0a!!`jPhpC_56|M|8
zpvyMNh*4m<qujamznX7teJs<c7JL2vbnm0WFI{-n^e?|`UMFC}et4p5w)~TuKh=1(
z7CigCv$RFy;h(^-4<7$?U9Xv;<j{7z;NIEv&GBxNPe$L0Kb^Yy?cd+kI}+tN1;W`M
z++i`D#Ke8BKI)ry`NkItQFl0u8~4uIoi~+9K<dJ0<D<ueRNWc#%pV)9_)xQ-l~>^D
zWcIDw&Pc7DaK4l`_J3RY{qNGA40&DWzrTJYZ)H<D=XsLx^ZBZ*iNCT|slBec81##a
z;ibZ)>)&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&DHPh<t_!`tc2RF$SV&7*>go^XTe(7#8DC0@2`;*BX}>f$
zS(78nF~BwR_Qb2!A*_B^x&<C4n7A#@&itP?t<}m=@zUp(oL#==tf8tuWd)e8`bu$3
z=*hfw!R_Y#@SXll3&P6$&RtycVM(z1s~YKsjH$&(cW!^VI6voSXY8N%=ciq9`^DhI
oaV&^A;o`gU>CHkNe?=1*SPuu3eUO}22`c(MUHx3vIVCg!03LdADgXcg

literal 362
zcmV-w0hRuVP)<h;3K|Lk000e1NJLTq001KZ001Ni1^@s61Kfk*0003oNkl<Zc-rlj
z&25B0425Z7TcCw)AuVhR+rqRkEu@x|z`%hEKN3Q~9l?>4^SrSmv|1^bodHGjq$dV5
zl0R(olO#W)Bq}N@Dk`Wb!bBLaFlAX@vMl>#=Xp+5RS{z3oFk3%9<MM+lCqJs1H=~_
zNpE@`@tekZ4+9Oua0v#(0EfUhkwS<&06tnI{*A+SnkM^p7yw+K63%R$54K!0Y>qSd
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=RfIVs44ttu<k^4f8|(u^szt%ST>t<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<n#KtbSJiZlmH~Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOfIg<`!nI7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PDzaVpxzln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RIe_k(+l+9Ur!gukcwMZLUXyB3<U1w2D4}%Jz)3ce|?m^P?t~Z
zifyZfIRy_IZ`;uPa$!$(<-BS>fj|ZZF2#nL>uS5rIr!Z=y&v8*v8~yXc0*~uXhHO?
z!(6)`uVJ!OU@CZ@mG<mWfsRtLkH@~CSNrZi-TqGAD)ZuO4ik09=k@k;n%7LN`q$%H
z+*G;zr4rK?oryt<u5*3L{r0k2f@PchovSL7t+stRbLq&2_Xe$eZYs4wdLHX`PUZ={
zd|>IGbuXM}<-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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~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=<q*E9;hpM=^x4UiH~IZ9n4<&#C|SZeI|7<jST^TN=GS&CHJ#
zbL{72{+AVHSafL5jk}V};R%P`V@hT6%K80TENeLp7?z38`Vv*L_&6|aFnGH9xvX<a
GXaWG#4b-3j

diff --git a/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png b/java/res/drawable-mdpi/key_hint_exclamation_large_holo.9.png
index 0152ce21b63d58b62875506b8fb62f2193d80a92..75a450c872f25608bf8670bb811579a11db7ca37 100644
GIT binary patch
delta 674
zcmdnUH;2ouGr-TCmrII^fq{Y7)59eQNJ{{*3<n#KtbSJi4oFFsxJHx&=ckpFCl;kL
zIHu$$r7C#lCZ?wbr6#6S7M@JC*{FAevEIns+`!S;($U1w$k@!n(9qJ-#M#l&($c`f
z&Ct@^#8640BDcWT*UBY7ximL5uf)^ERtYGgmy(%cW#r^$<YsAT;%Z@RZfNM@=IG*L
z?&#!XV(w~eYU%7|1k>x8S6q^qmz)aIn~BgXX^czr<ata93dY7R=7z=~_ZXRAbKPV)
zW*G%SUYH!k>{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<a4dCpNxFa>
zkGNiI`sxP<-Lp1ne%j64ruo|Rb>nWki2KpkciI?SYS!mJe`amHUZcXvIkFd4-4{RI
zd9BK)!)vb%&#&`&e&W6pOPn$y<abt_dOE?m$VWTy)!QsBug0VQ^)An5u(;G4lvm3b
zFz@%?52lhU*bd%l-L=N+*eTwehZAfL`&B<X=Cv|q%d~9K%)?<DPi9}g<F(FpckJWr
zy_H8A{dRx7vgZ2aoz8)LD?+o@EPneW<BWvt<1aCR45v1;%=m9p(&hb-LHy#;&!3V_
zeKfhA{+@Z_hYWknq>ZWO#`l{w^4aSdPn@!PcIQm!#r2DJ?~V)MY3N}1z&2se&C~r8
fMFncO4H!<nE1W2O;MithdSmc(^>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<!ID%!@B5QAZzg|nHZqlKxXlar~5g`1_4LUBn@
zYMNC_esXDUYF>$_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%8h<k0i|3ero~Dfb>dq+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>$<v)2UskN0|edmsDywe<6=SF1EdxH9>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=9ry5cdjaE<rMZrg+?_-HO^$QvTG$-Y|NPl
zpA_x1sjaP@ckrO&&F7z06L)9xHSb)`E3{0|VGT1gb67*+ufKKf`T6UeUpx07vY2~L
zuORTjlP4+-?f2fkeJeNTK(&s&sr<4Sz54LqI@#P0=4ts@&E<1Y6ge;>u&Hs!rM-Li
zUTr;S`od~Ib8~Ij`3o+byH^(H<>gfr78XhfEuG_|W?XRg<c8d{&3h^hw2q3dPv@}-
zkaQ3iUY~jEpGEfZBtxNIx0l>n(|(%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@#<d#V_&+Z^Cuc~HYMGbWesUyQ@_
zdZ}lRWg|{YtCkD@%}(7I5tTo4mRkLCk>s|o?QLxu2W0$#neYF9W`-ThABo;c4!#QH
OGI+ZBxvX<aXaWGDb^8<m

diff --git a/java/res/drawable-mdpi/key_hint_question_holo.9.png b/java/res/drawable-mdpi/key_hint_question_holo.9.png
index 088550f5bffbd8e657e4f13715e510b37f028ccb..84bf78fd419c7783fe35c830d0b2fea5a600d502 100644
GIT binary patch
delta 636
zcmeyswTVlyGr-TCmrII^fq{Y7)59eQNJ{{*3<n#KtbSJiZlmH~Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOdIS=B9?O7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PC|a4Ooyln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~RR7T3_XGn2W0I$fV@SoVEuruIn+*isZgr59vj34Bz3Bh{|EY8M
zjFYceXe58jneD{ExtO)eQ}e^adtdjK+d8-~F?et={@qs+u$!4vU{`?`llu~R#T74u
zMZU4<mGEV>mYro<pnRa}<VuERkIt{pFVi_4;w8D-KP`aKZ_ekU+VcA9ZLTLYr6d~e
zFWM1y^0L}azRnp_obF_N@D7t_Huz(7OzY`OtFA@L{*&at#+rC?D^9YMn!#6pXHDxZ
z*XQ+r|NNS!n;Lwx{FGjO{8mw;vbaOba`(LXti76j;gqhohimUHEfzbFH$UCCXzk(4
zWx;V??=GJ_rdWUYWT9Z!l*v5zJ?mwzubcbEiaFuH^P)GqzU}JnVe1GyRheilam>#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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~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^<e=gmO^Zk~8e_QrDjH7Vj
zlwUrVOH5?=l&u_OCk5~=n5%R8-n7$Cz2`lDzwf<0t7C!Z?;mlTrk&C}Z2bxTj{WMB
zJ&%9hQ^&rf$UWIFXX}q|4(A>ITJ*ga>#lE|cm6r&n)8nS1{aU+WtGvDY0o@eE$SM$
z|N3j&^<k^88}Q^mi1e#@U2Az=?MvSF>Q*z)NrEmDgnsPe+EIKa$Z}hURDYH%qw%UK
zJl|GsQWLWFDil7LV^+<u&;HoskERy`J0}@MnUp?a^YB`^>QZ2<*yUf#{!YC+b80&G
zS<dO-?N52Fi=2LLiu|2-ALdyud!%15z4%3C?tee=9VUt9A6Gvv+tL2O!Y2Jb6Ay!q
X_qE9f=9TLKlOuzttDnm{r-UW|!m12|

diff --git a/java/res/drawable-mdpi/key_hint_question_large_holo.9.png b/java/res/drawable-mdpi/key_hint_question_large_holo.9.png
index 8a9dffbe2739819015a648aa2b1fa1aab96397a6..d1e9fda0696e8088d2ad2bedbb418c9763d4c275 100644
GIT binary patch
literal 1440
zcmeAS@N?(olHy`uVBq!ia0vp^5<o1&!3HF&pVhwuQj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH
zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#%
zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&p<cXz|26w%uvtJ
z*u>o2Tt~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>a<ZY05Coz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K
zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$CpSwYOH)f%3uALbLl-wk7Z-C!
zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNtE%55KaxO|uEXgkl$<NP$rGS8p{F40Q
zjQj!x=U`I>-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf
zZwfhKrVn(CJ}7Y@B^H<vFa?5`@T3pqz%x&39x%rg0kg)}%_o7`lJSD4i(^Q|tutZX
zeuokS{{5d8B;qML)xBgTd%}CpnAO!cUo+aYv0q@`FrB%8;m+e@;%hHXaH^QTzjWD5
zDV2a<8#*V~{FTp5|2H!~E$W>G-{U#fJ%)Xs_ltG9of8tU*>OZ@nn>Ivj<ZP}lfEi6
ztY|QCU_7xUol&h}qCP+4p~VwFg*LTSF;q*Qd~I{X>8b4IXt^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-w<V0iEcpVd1s`%F6d1O?eT;}~4(OCvldp5l++%VzLvt4DfN0|S0
zGi&VVS#>X%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)<h;3K|Lk000e1NJLTq001KZ001Ni1^@s61Kfk*0007JNkl<Zc-rlj
zJ!>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<K9>-mK%@9^SRgSeV<OJD3Zx!f&dt#
zCRYrGW4Z}FAtn+DvE6PzK#2&d-|zo0nM?xwCeT)YTh9<e4q(ursZ>gAHk+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<n#KtbSJiZlmH~Mg=2ta|1_XOGgt!
zBV#iQLqkhT6K6+9OG^U_H$zKv6T``NOfm{aPOdIS=BB2u7RKg=hAwW7E-vPdPEID~
zuEwU8&TdANs}PDza4Ooyln`TV>|$<c46?w;1e<kA3dJQsscBXz`N^fZsd*)yF1AV)
zxdnPDnJHETom#}~R3FLws~_mUGoCJvAr-gYOikoIq#)4t{#;h`B7WAt|Kr84@N;D4
zO;`V|kfb$B;9=wJ_XXc`=Iv85W>zv{Sny@P?3R0iQY|$Wj*oAgSbFrzkKilc_=AF9
zUg_97YvboN91e^T9Q&p)<ZOEVcHiaCHeU5IZSB`)#nf8PFA3!pOH0iZI~X=g<#TE2
zL|-NAHi3A>Smpz!3pX)Oo#kW|nsVyS#LFKy)Yn}IbU0IQaM)?lX_HjZf2TELx9~f8
z{#d?d5wq0-=6_5Ied$rg4AUec@@6b%xX;AHQ1UJ2$<afuxj>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&#9&xw;cRB<XkqH;<Ya1M;by6%P+Ss}nr4-fpIn-onpfiK
zVyje<TcDScnPP>Z7u~5v%ue+hKf3NSFfdAbx;TbZ+<Fqak*~=>;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{{*3<n#KtbSJi4oFFsxJHx&=ckpFCl;kL
zIHu$$r7C#lCZ?wbr6#6S7M@JC*{FAevEIns+`!S;($U1w$k@!n(9qJ-#M#l&($c`f
z&Ct@^#8640BDcWT*UBY7ximL5uf)^ERtYGgmy(%cW#r^$X=G{Y;%Z@RZfNM@=IG*L
z?&#!XV(w~eYU%7|1k>x8S6q^qmz)aIn~BgX>5NPB<ata93dY7R=7z=~_ZXRAbKPV)
zW*G%SUYH!k>{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<E3D%!@B5QAZzg|nHZqlKxXlar~5g`1_4LUBn@
zYMNC_esXDUYF>$_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(;HTuCDrH<g1Xx&Lo3!I#rlRSBS`Esq)A~F{Qb+A5C;Ly{3bU}T`
ztJ?qHchn1iuAbR?{bOwnf8F!l<?qkU|Nejf|CJ}+mMLf0+*}bc<@8g5^PgKjR@l6}
zyg>H<3z<T`T)9I=5s!F_PChs*?^JZU!}prOL*K<09gZeVyzu(#lc|;Olm4eZnXqu}
zgPr2pX0s>9M78)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@iTJp<PYR!fQ#?*M
zxNXdl4C6T8bu{T>TztH{_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!M<Wx2&E

diff --git a/java/res/drawable-mdpi/key_hint_underline_holo.9.png b/java/res/drawable-mdpi/key_hint_underline_holo.9.png
index fef1b63697a0c457ee6763a2dfe053c56c5b8798..8d83cf93875481e13e47d52f81f9ed98525c16cb 100644
GIT binary patch
delta 436
zcmZqUe8ZvG8Q|y6%O%Cdz`(%k>ERLtq$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+d9XLSGb<s
zF>A@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%29k4p&#3p~~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-ASxadc2QKslV5o7AkLR<ogRh<1Ic^;_x``%|2xB7o$Kc}
zEp5UuY<_lwoJZ?o^tQ|nqwl^Chd!ZY3Ct8>w_S!c)diTO+a-W!O|=5@K-K&AJO=F;
z7AhNsA}r=MiJEQ3)j%iin+`%_SbK->s9FzzcnMStD@lC5bC19cJxOe7%~3fg4XVb5
z0T*-+bQZLM9!=1Rj<tBZFCqdHKo$4RUdt2xBr(n_qJ3~o68N|Z>`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_ta<mRcx%;=FKoNN(
zZgve+6t!2jwLTMAFe@hsbQ9MNU1WHkl2}3FXogL+(I|W_ElGkvwJEf~b99|!T5L*5
zrxYQRX=8bsmK8~sc`23R_zc@Bq!p%)%~~E*Ee+J|8i8E|WP}9uPpp`BfeLN6VB5X*
z4(O`d(DtgfgQvS&@tmp|Rv-uEnTS>fuCW*Biffzrcz#7=8v86O^E4Yo%5c-iJ%QE#
zCubybh76kHuV$$qp$-hTQ>~ALso?<@niv<2#?9tOFVI-s&dO53A1(bH8|w%~qwfxd
z!(k<IaddFbMwWSw4YoXexK6v@NK_YaA0=-0$hDbQ7M<8iom_M)a<X!ywEYbq8EZUy
z?tKwsibrR!|JCsJ)$P?Im4-FP{cmqUqVpBa?mQi77UuOm+3fDW|K;=Rj&0kUelg6!
z8F_r}`8_Xp`>U4iSh*s6cPQMfoE?5P>(Z$ML!m+9$C|{0;jbgluYEsuc;;oNu{8Q9
jbmnSyQ)po%x^A!mE4NU~IpM<f;NOtVbjmkUyM}%P0z7oA

literal 362
zcmeAS@N?(olHy`uVBq!ia0vp^%0R5b!3HFm?=(LIQjEnx?oJHr&dIz4auiEkBT9nv
z(@M${i&7cfixLYmGLxP2^U6|-N>YmyG(7W4QgbxR+kZ&{6@T}1aSW-L^JcmsSF?dg
z+v1H2oBEvG%H3m+NLOg3m-j!Cl=<Sf-qZI9@3N~+SEqeH?Cw-^@VrWsks14gXU3;j
z9#m2(j+EqjI=yJ+bheWRZtAH#<~g~;$!Oh#9&MG!Twvy(Ej`OW@Wu$PIS|-e-qO?V
z^2WFI(Y_`JQ@dHe?;F{iHd?58+9)J<$;wq)+iH#VdPMA<j?HUakQ;sT``$UrI1L_K
z*xgQ)Sn%2^^7_`4w9;A2ZhkqrKU&Q<c;&npF;~XyCzX7^swSy)_ax3g)BS&1>g*eP
z{>%yxluWw9A9(ip?JbVaR<ld2Q`y`jf9AFg(9i$>Gc&}=ZE4l<U;+gmgQu&X%Q~lo
FCIB){m<Rv>

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*I<f=9)xhcTQ-=Rpv>h<Nlg5b+{{t1tbS9?A{|lK1}a{eQpzcect4*XCv~%tj)S
zxl&Q7;B^YW_ot)y>pk2%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_rukMRmJfvdfW<w@fjj
zD25y?8^angf7M1>5VQUHF@pkq-7{TeIyMLywT9C{X##sX48d|$^@!N^M~T8IqXNyP
z7?P$eD~xNP?V}3(>&8TFzqaZ^sseqd<LS5_&G|7H=k9nzp(6H1TJ%g@6s@f|ddGq`
zDk*6K-;joBNUR{xGAGJB!*YovgTv=@vMh>pvcQM}&x|=HVex$~DaP4+Qp_=oQjirz
zkh57{$a8TqS7683lI<hS*5TN$iS3TC%&}N0=RplQUd?gZ;|?gd9OU>d#|61+9H^RZ
z+MyhlXBe#lJ@Ym+3Z7$uL4GB3f_+X*B(cN!Y?9?C$34Uv|C2KcJ41!d@lUgik8lTu
z+oRUU!qM<R8&8afN8|49#c*ERB}J|UpBg{={mj(q^_ff2X<GhDKXv!^-<;S<72o#`
z_6y?t=8s-k+T7m$o>70_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}?MN0VX8GQqD<S7@`hXvhTz1^Ssad_2yvz!Pdr|4M7mLdV7AKuWQx2
zevN-0-+O<~m)oo}WQSzTW+BCb6O$1Jy)-<+eH_N8&p+WE4j3ncAsYq{t%#&jSlLKr
znsc-u?6k`~jE*q_BYc!(w)o@2xd@Wj7N0Z&7~~$FBztERAD-<GqO;@3jK%gY*eNYe
zkYW~sGCj!(tF*;Auf_M(wJd_U2|KpMg{Wb006ao5XiBgV!4?E9Bq3GPb^Sh2Ac8Vf
zWTZ5ZZmEg|Ay_^l_eSHf)%UwgU;Jc?6UK5&mS?k>G*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^W<YGi!3HFC?|JS9Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaEfri;v6eK2Rr<N!r
zrKV@**($x?y<bToGsRXZ+|<{=x4=0yBh#a*C^fjsFC@7tJJ~Wt$=*)EroswnKyGSD
zqC!P(PF}H9g{>0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|!
ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g<k>1^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!<C33Tnwy$e;^|_m1eDQB$xN{_GB-DH
zG`4g!F*GtZvoHjD-^AI`(bCeu!p+dq+{6%O23EaJ&Q5MlP6n<P#^#2GE^dx4F6NF-
zPA2BA#-^6eZbmS@o_WP3iFwJXFncpW_JZ{~y5ZGp<y@4SSdw29lAoUgO925H`6c<q
z8TkbY&cUV%zKO}1c_2P0dLX`aNiE7OOHFYr%Fk5*hp$y87W<8jUCa%QK|VDy!R~K}
z-V}1eOdseNeNf^+N-QuTU<w2=;YlCJfoGo7JYbF~0%na_vCei342&;4T^vIyZoRo-
z?|s-og6%`tWxuYj7Z2D41>Ma9SzNmm_+(iM!(3dBI0^v8zA*3DrclSsu9@fbm#OcO
zy-T3?<KlwW=@YJ~?9EQDh^xqGD>$oPzVo!|>s@(jy;D_t3=VN9BM}=^4#+HFKUw<W
z*45T}<@X+US$q<I316{{KQa6M-2U!au3=UjzZ{-TsJSqqt9h1tmuKCvU6(qzxKDG3
zC^Eegj&#>jJZF2|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!<|gcY2<XA^aFr*A;7l>4?Lt7G@hwa#$2|FCM=#H$={;}s?|YDAj<DnE0@
zO00}sw=nob6jPbnM6nkJhd*&ydLFLR;V7T8ZGA{lgxa@czdPsi?|S5`rOv<q&sES(
iBC!RTm~ru!Xad9RCGR%d284=&%2H2PKbLh*2~7Z7w*TS)

literal 0
HcmV?d00001

diff --git a/java/res/drawable-mdpi/sym_keyboard_num0_holo.png b/java/res/drawable-mdpi/sym_keyboard_num0_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..39f19a48775f450635bada50b8dec94062a6a1bc
GIT binary patch
literal 1759
zcmbVNYfuwc6iz?^g&<l*g{o_yYOP6j^CTG}gd{+!;gLj(Rg{n{AwsfovyvEUTYOEW
zRxL^kVh}4RGKwfL;y{X6)KbtYSZzTRp*$<aVtCA0v>OoHAB;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`j2aEVV&#4rPoMl+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?<Oco)k?K)VGNkn`yenVAj)jT?f
z0}2>i0TZG#*Z~k8K2s<VaJgVWD8%J3p-GM@u_2-mj)=_`2QWAgBnlOXL>xg#2$Lgb
zu(-ld`XpAOH)2Y?3ZAs9b=aN2vfhg22~k*yA*cdDk|#SLDiOgDV<KVzgmM-jRjRal
zhwLcNM6@Cp)uzDeP!!Pt<N4)jr?Agph&T|#5h<NHb=(tJ_5aBk4R?m-Xpa9h%j6N>
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+<pi1z#;pUwiVmKdVYKrQZoR%pK~d46XTa-Sl0pPolC{Y?5`Fyb`)Kmzh3?g05Bc
za4*zf+SK}U_f~)6gEsG*y|b8mBfube^NVBT`hnrWEAj=NHHcFct-)*W;``GA={D;L
z_G)xmBe-%^Lzcg_HvZzu&@-vYbnE)Wthn^`USO#`j+L<(DhiI4ceMK2+`itJ8<~;c
zT+<XXly^9&Mxp7NAHAj5*iLLc@;sQ<Vm)<#=#X&P$9^;JrP1jJE-f#QY=wHe9<FMk
zmI6+oYc9N@^DNA7$+Nk?7qwisls6wMEvbB-xo_Dz%LxBA#pT(lzfzmpD%X%>3yi&l
zg3ia{!m;IjRVilzz(&L4qox<J@U0%HcxQqAGHL1cC>p8h9QDWj@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<gYt15QACAF-hQ
z8ugoLy`CppM~=IXrPukM^d8G{sRRdxT;cGrr{Z~g+%s*p1YOAkm$=)z)ArV$DeUPg
za=X5wM7y(?@yl>$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^5<o1+!3HGF^zJ<cQj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH
zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#%
zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&p<cXz|26w%uvtJ
z*u>o2Tt~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>a<ZY05Coz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K
zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$Cs!k5Hz#9P3uALbLl-wk7Z-C!
zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNtjqvKVaxO|uEXgkl$<NP$rGS8p{F40Q
zjQj!x=U`I>-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf
zZwfhKrVn(CJ}7Y@B^H<vFa?5`@T3pqz%x&39x%rg0kcM}66*&B21XT67srr_TS<TZ
z|F>t>WfW%aWjw2!pco{pEU;PeV?Fan`>e<VyhmST?Pva2?WHTglH@1w_~>i%Z3WUh
zE%ZMYHNQ#u;c-HJhfYG9)VXgzUx)wWm$xtd`}_ZWc27H|jDv{^XSt5pdv0YAxyGch
zGd%zP%fCN<ZWf*~<?9O3lM07j6C6K%zP^5@gPOhRWKI5#icgPH%`SWp^=PYK(#EP_
z#;$SZ|G&SpdBszbq7I!oV>4AstRd(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_num3_holo.png b/java/res/drawable-mdpi/sym_keyboard_num3_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..e4c5bee3a31d3bbd89ca291c0af7cca830ea9933
GIT binary patch
literal 2143
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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
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
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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
V9TS`Wsu)!Hdb;|#taD0e0sxHb6Yl^3

literal 0
HcmV?d00001

diff --git a/java/res/drawable-mdpi/sym_keyboard_num6_holo.png b/java/res/drawable-mdpi/sym_keyboard_num6_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..1827d540992cab3cf8256aeacdc913a7c216e54e
GIT binary patch
literal 2502
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

literal 0
HcmV?d00001

diff --git a/java/res/drawable-mdpi/sym_keyboard_num7_holo.png b/java/res/drawable-mdpi/sym_keyboard_num7_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..2488b7f91ec15ca06ab0c226698a6b4061d3db5a
GIT binary patch
literal 2527
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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*=<a{ZJU<f1;Ac`&GM}Yw#
zUyyLL2XsatkdZ<z58`pWX@Eq8<!f}X3Q-)4Mj)JB6mfju2neAfz$l@Zj-GG1i$)0r
zbab#i2hWLPg3-eLiBd2y(T58p9s#HVw97t}vw{W_h(L&sQix*3GMa*pe$PvT_nKoI
z8ueZUIzmUUJH_Mpp_mdWh_c7xF#z5Hk8&Vj2_!OwLfMNV;t6;ho`@q5F$4;YM5N*I
zs1FYswk8!s(gIi>A8f%A9UTopaWouGE|+8FB&<Xlg(Fa@R1F7_h=DaQvIH^2S75|4
z%MAt=C<COzI7lcFqcn{C2uVCdN5h`3haigMa6S@?Wgij+rwpgy$KeQAJWeFi#PwcV
z1_glsb>oxTGHyZ~hzkH^l6WZq*CWz$0}SWx_YG+jVQ*-@QXyOvek@A@#EU>N#Aeaa
z@C{ZV6wrti3Z6ltGROoX$-$8ThfiiQ7*s0W(StyxkO><cpTsip3<3pDc6TIE2n3b~
zgT<mS+}y|%calAo=|SAUvc)opF9yI3yF!iKbu8(3u{5R><U<lES0ahs=m5WH2_%t4
zOX5(>KzkI24+zB?SyP_%Xj!0CcnlPHNF^fF`~1>`pRi9Nu_y$RCQ>5#({Zn31^-XZ
zaIiBtO>_KDvuqr}9jMuUY<*bxI6R;jo){@S8misEHwc8zQ#OmiRZP4*<Rtm=;0|MU
zZh@$$VCvqTi`h1{jMiY64)?K5T6vZEdX`7FywKC{-qt;7t!tn#dOYBtehSl?D80Zs
zRXkC+Y#c_nNWvaXV)Wf$S8MemLtn+eZknObB=~R1K%HkNUXJ=qkQSNtuGA_OX`Y$Y
z6O!W#xOMeEUX`aA3kyvC?x>{%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~w<wJu_2Gj#DP`{t<6l?d6P@29;CV$8})XJ@O@?a~t!
zsddd=*;gBvY7m{ti|tdbK4+&Nb{ID|SD8;;7bp8>XU@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<^LC5<iBn{o<^Oh6!xfAiZD%}fSxs%M2Z=N?SZA~>kH|%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<e7egrG2DybM*
zNbz#*g6<uis{JYd+%qZn{$!0f*>*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<TX4w>~4bGX%=$Rhi8{*W!%V2OUx_1{?~eaPoY{C
z<oZN=wCT#?6~oD(sj8hxD}<ImpSHVxr}Nva7k~<QdvV}om|usQ*Z9TAi!-H89NhAs
zq7PO0<UBTmVq&)C?OoLE_1PpVa?7W(&4wO*wf6ijSik38pJ$nY#crBk^u@9h0dFS~
zu=&+#C*J)Nt%tU>QE-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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
U<Hq(}ru5&?-kL<nvh)c52jGs1*Z=?k

literal 0
HcmV?d00001

diff --git a/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png b/java/res/drawable-mdpi/sym_keyboard_numbpound_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..a9866bbac93f4173ddf408b0770e1a44d61d2200
GIT binary patch
literal 1548
zcmeAS@N?(olHy`uVBq!ia0vp^5<o1+!3HGF^zJ<cQj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH
zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#%
zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&p<cXz|26w%uvtJ
z*u>o2Tt~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>a<ZY05Coz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K
zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$XG23%M<-KP3uALbLl-wk7Z-C!
zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNtP4McqaxO|uEXgkl$<NP$rGS8p{F40Q
zjQj!x=U`I>-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf
zZwfhKrVn(CJ}7Y@B^H<vFa?5`@T3pqz%x&39x%rg0kekUf&Li`3`{njE{-7;x88)k
z_I>OiaE$*=3xnOg^}#`mnhct(3WfjQv&#lB1aUbmVz7F^&U%4Sb_Q3EN1uC>kOlk0
zHG9vjOIw?`@t~X1CC}}bQs#Er-hWeLJU_YM-12?JGlTE%`B%%ZJ3;7jg)N)+2TSf+
zL5crb2bdy4KkseW`NW!e_j%@x_Li|<HF@?He7PgicgyGM{MA?6_?r`zrTSkV+P-g7
z4dZNfGY#$s9sS4mKh!^VW8<2sneUhy<on#-wtTiNU`?>T)yXwk=V0ZeD^rt8GcSr;
zv)rG?FMUk);X(m+v$VWb!VU(Ja)%A{PSo<gH1?f8;e86@&0Akr)iL{2ac`b_Fz;RU
z+AoZ!gBU*V_+BEwrLcQxarJh7N86rvE9H-RuFKEkUyyQkORYq9qkrB1o%_m~9BjD~
z1azZ>QesR0&sn+V^qOPWo{7bksau`=!cv^^GH5wt)8Ajuj;;H^IycY#&9qe6#K;$2
zUxa2>-OpxO%~$1aFhMSbMgB?YM2>ftIFC-9q|>z7B2Va&G*^JH#jB9C&NNr{4!zFD
zJ7Tw;Tle^n+sPM;!+hh`JuNsBqV+sLDKh`Y?Gug+l5$>>y^D;mEV-O{+b-PErSpW#
zbEZ8y|2{B@7+lnycS*YN&+dQDQS}OcxxAgO7mKl%O!_@5X3xdhhRJ7nI$vb#FY-Tn
z?o_tBUrKYz|A)7Ax>J5;EqNPJ7^`{GbJCU<J_*<MoKaa_8KHMWLGi{0od%|v>XT(B
se&5hM)7`b{Ipd%Ik4+;R!Wr2ZcIy5}liT$3AgFxyboFyt=akR{0KEP>A^-pY

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^5<o1+!3HGF^zJ<cQj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaE85nHrD+&^mvr|hH
zl2X$%^K6yg@7}MZkeOnu6mIHk;9KCFnvv;IRg@ZB<rk7%m7Q#vqGWHUU{hfQG$1#%
zBvGLvHz%*ys=`(YY_1iM4HDK@QUEI{$+lI3I4Z(7K*2e`C{@8!&p<cXz|26w%uvtJ
z*u>o2Tt~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>a<ZY05Coz_7z_5lA7>HCFybnZQU%%yG$2F3nBNEAe!(RRYTBrDUd98JU|K
zI2v0zniv`xn^_nFy>H^|=xAwaVBuzHX>MW&GXtw$X9Gt=a|35r3uALbLl-wk7Z-C!
zCnpngS7TF4XE!65UeCPZlEl2^RG7V)AbTNto$%_laxO|uEXgkl$<NP$rGS8p{F40Q
zjQj!x=U`I>-^Aq1JP;ogJrLizq!wkCrKY$Q<>xAZ!`CVki~YvNF6M^DAfFnUVD~pf
zZwfhKrVn(CJ}7Y@B^H<vFa?5`@T3pqz%x&39x%rg0kg&}bNze<2F7ikE{-7;x88*M
z`W<o*(R(Wr)p(`hqU=0}Z+d$g-^Eri=N;g+VVLJ2{7vrQ5#|S+1`>@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~H8D<oT<K)%c!V<iS17X>Q(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<G(
zXuHMX9h5P{h;JKnZ2I%$->=!4`Bv^wX)9&cS@Fd8b6-@O@YO#?iuN+SfAWr~a8Bx9
zaab)#K|F3+OsDIU%d-T3>SWGZw*O3s<0^&F4T&|}1`KbOZ@=SSIw=!WGJ3lDxvX<a
GXaWG*_3)nn

literal 0
HcmV?d00001

diff --git a/java/res/drawable-mdpi/sym_keyboard_return_holo.png b/java/res/drawable-mdpi/sym_keyboard_return_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..f64c731607181962a14a9ee21743ad149b8d8d85
GIT binary patch
literal 1417
zcmeAS@N?(olHy`uVBq!ia0vp^W<YGi!3HFC?|JS9Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaEfri;v6eK2Rr<N!r
zrKV@**($x?y<bToGsRXZ+|<{=x4=0yBh#a*C^fjsFC@7tJJ~Wt$=*)EroswnKyGSD
zqC!P(PF}H9g{>0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|!
ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g<k>1^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!<C33Tnwy$e;^|_m1eDQB$xN{_GB-DH
zG`4g!F*GtZvoHjD-^AI`(bCeu!p+dq+{6%O23EaJ&Q5Mlj?S(Y#^#2GE^dx4F6NF-
zPA2BA#-^6eZbmS@o_WP3iFwJXFncpW_BuJ67&)7o;ni#9T$Gwvl3x^(pPvIu0Rb8L
zCHch}`2`Bj!KMnniOHFHAU-I1Aii};Ey^rQO>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<s_Xq_`pZ!Glz&J0YB8=w@{j#k3LiQZT&%z7`&}<YL?_qu
z9=pB)&(<ZGPHAnw9|%NcEKAQ*GoESYciDt%<FrK%-AN*gC5~#i8FmHsz?n~1E;&-X
z)q%O^U^z$9q$=q(FJ8ZiXuY#(o2snD>*`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<zC3P(>@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><a9QSg?EQdxrs%)n+hcNQWhSt1z;*g$E#C`+;lD@itP7L%ZWjTCBC
ztWyy@P^8uB=+tS|dLZIKJ&JX(j#UJu)>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*<CqSgueA#0h+%RH@?muxhKF
z#;khWr<d^R9l*-piA9tYj?pBQMv`V<1<cDPY0{oe+5ly$5YS+H!s^|7(=*^Lic`cg
z+@PXJ3(y~5gcw9WpO1=RzSmQpU~s<&u!i@E8J97J>n)D|6pQbOsX*`YP3be6H_d}v
znU0~D*0>iLn8RZEomQjrH0RCsin_U5<rB}h_N+aiO{@-?npgscY-<T?*;fAwI7+vt
zmuo#kKV0&|Ps;O(2h-dVI#ObYyj8z<ZVA|-T@+om3EkO<eqE4ql09l_k@!T<mJ@ee
ze>Ajp9_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>R<xwgv@#S~Yjbgh0uNmt_&T^475C$9|@<ingQ0e}CR3q|q-X
z-T783S@=(AUeu|3O&MU+HZ==BS{zc;71O=Cq-6;^(p3KE3Fn3KJLb<iwoJ3ty4Q`^
z!)~m8)S(D}Q8RgC(Y`0sZ<Ie)y$ESKIVOL1z>J9B^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_^NfX<MA)vpM*Lg8U0?7>HZgY
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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
a(B}X!ahV3Re~vi-0000<MNUMnLSTZAS?Txy

diff --git a/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png b/java/res/drawable-mdpi/sym_keyboard_shift_locked_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..c432bf4a33b318e98f8dfb4687288862775c1d18
GIT binary patch
literal 1480
zcmeAS@N?(olHy`uVBq!ia0vp^W<YGi!3HFC?|JS9Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaEfri;v6eK2Rr<N!r
zrKV@**($x?y<bToGsRXZ+|<{=x4=0yBh#a*C^fjsFC@7tJJ~Wt$=*)EroswnKyGSD
zqC!P(PF}H9g{>0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|!
ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g<k>1^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!<C33Tnwy$e;^|_m1eDQB$xN{_GB-DH
zG`4g!F*GtZvoHjD-^AI`(bCeu!p+dq+{6%O23EaJE+#Gp2Ij67#^#2GE^dx4F6NF-
zPA2BA#-^6eZbmS@o_WP3iFwJXFncpW_CoZU;ni#9T$Gwvl3x^(pPvIu0Rb8LCHch}
z`2`Bj!KMnniOHFHAU-I1Aii};Ey^rQO>ryA&s6}2uT>@%`;CoV%ngk}J~cAI?r(_R
z6mr5$ALtl;P~t#JEHEKp3Is9XNgv38XP(qNV2&vQW(}i<x1$&s7=L)WIEGZ*dNX6U
z7qg>CTlsMd&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`u<dPjfOQn{DBFHi8k_n5y#
z_0sB9XJ%wO%$@Yi!}`a$iR&kpt!7Ab`q}W|-_(y2-rsI{%+|g5zTr#J`=x3B)=L{l
zd2KLbyLoWdr|na|2d-<bdTZ2lG+^TFy%TnEzAg>C_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_*2T<AS>FVdQ&MBb@0E?p?
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^W<YGi!3HFC?|JS9Qj#UE5hcO-X(i=}MX3yqDfvmM
z3ZA)%>8U}fi7AzZCsS=07?{&CLn2Bde0{8v^K<nQL2C3WatnaEfri;v6eK2Rr<N!r
zrKV@**($x?y<bToGsRXZ+|<{=x4=0yBh#a*C^fjsFC@7tJJ~Wt$=*)EroswnKyGSD
zqC!P(PF}H9g{>0UTq__OB&@Hb09I0xZL0)vRD^GUf^&XRs)DJWfo`&anSp|tp`M|!
ziMhGCj)IYap@F`Ek-njkuA#Y=v5}R5fdUjL0c|TvNwW%aaf8|g<k>1^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!<C33Tnwy$e;^|_m1eDQB$xN{_GB-DH
zG`4g!F*GtZvoHjD-^AI`(bCeu!p+dq+{6%O1~$D;uI7f87G_4S7RHu_hAwW7E-vPd
zPEID~uEwU8&Td99y`Fi+C5d^-sW5vpf%Zc68sgP!<y@4SSdw29lAoUgO925H`6c<q
z8TkbY&cUV%zKO}1c_2P0dLX`aNiE7OOHFYr%Fk5*hp$y87W<7Y%q)Noc6G8aGQsX|
zh~5-(!b~6N7=2LUKuRnyAz%swG2uxc$bn~`)I4C0DFSAVE&OJo3=E9lJzX3_DsH`*
z<?naMLF8EXHh~EmdOjuj{14*z7HmJTSNsEmoWpk@dKLG5$ML=IOxhX(Jmz}tQ;Szy
znrL{8asTu^d&*|C{XF~I+~mq9oBnHoW{XTk8##Rvn1p8>U{N!GGq?2|ssC|TcX4On
z?@Ox2R&neb_!e+wKKPeC^<a|261Qr%cDMB(BAMQ^PEY2oNao)bXq4V|l)vD<X;stf
zwF2Gktv8klco)R8nYZq3wl%J5NS}1!z^o0=-Q*K0=NuL5+Ii8g^4$zG4UG*+%l&1e
zpEb_eb8Y#A9;Yu66Tf`#J3FCxjVx1jqi?O4$^6j5p1b?n+(hLzBwO#0yHwG2p(ik<
ziDC8ve$$mX(bXwmF3qfVZcTQ0oEty!$?ksN1!1qAOr2^Ml$&r|I41qcMDFx=yM^l<
zo43vlnj66PRs72)t5*5&6FMpzT4t?_eIs0Sy6xF^<8r^hZ!etODtXH>VBrbY263yk
zH#*kk=l^_@T<E#aCR}GrYkE-Cvx}B_tc=?@cl+O~TFks&yYz<K8{KE=`wrB!Ci%4<
z`nKXaSN_NI(>QiUeAzN_{hk$-zpgu+eW6#mPD4PRo6B+e6Bi@SkL_uE9W8y%k*=k`
zW0r<9AMLEYDI@8+U!&?TQt-o=H}<pr7EEBMIG3qy%~!kzRJ3}!`njxgN@xNATw)hC

literal 0
HcmV?d00001

diff --git a/java/res/drawable-mdpi/sym_keyboard_space_holo.png b/java/res/drawable-mdpi/sym_keyboard_space_holo.png
new file mode 100644
index 0000000000000000000000000000000000000000..d1ef4414e8fb185ca965a58ead33e651855ab4b8
GIT binary patch
literal 1194
zcmbVMTWHfz819&eOg9u%bRvZ8ZP@14E=^b+ZPRL*-AY$oQJiMU=^EBtOitHqD2g&f
zAAIu73*v(lr<+43=<vc6b$gl!bJQC?DBjQq1<@BhS=Z^q*n@%Ood2Bv`~G{5C0e#r
zSJhUzT(0WaRw0Sj2J|*ATZ+E!SFtg)tcQ^_Y|}HaAez7xl=V)4#Z<8iB!MXR?wbIO
zE>~qnNu^;rzKxf3)gwAO9$PgK8j&^GhA4Fdh;@Q4MGN3x$L`{oA_wqxU!05^VUSg}
z_L-oquO%h*bxWL#H*LlmZ5|P*0E(Ec<}{191Nba2kM_<nfn&2OuseX4oJz+NSXeg!
z=JSwliEJRT2FgP*UY2DyVKhmR1W6MV?WS0sp?Q+T<{lhbGvy4Q6ryvskQBhP5E?u|
z6bc1Tf$`{O7eR3x=Wx)p8)>+$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_ObNtgR<s;OA&UU`_kuX0zKtmH_qS5FWAE`lORg4M2lwJHh-CQ+JuI_(x{m!|I
z{;3GpbLPbElQlvl@#OoGFWB+^3r7-@2j8r$-TC-Yb!_?9+Z#I9+&ffJxpc)ka_=IW
zJ-+1H$p>feH@CjMu%8|tNxhr&UViqjV{&`%!1#_;^+QL^i50u*uQh$ED75sexyBj0
zy=VGnTV|%nkG9vJdS0}1zp|%q<?G<^AgsJ{W8>g?^~3vhSNH!&Ki&6w;3ItTyJPBr
mkiT{AXZw<}H{H8OU6ro)FURap4~<LC-y;@j5r#s05B~vJ3yop`

literal 0
HcmV?d00001

diff --git a/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml b/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml
new file mode 100644
index 0000000000..87e952c60f
--- /dev/null
+++ b/java/res/drawable/btn_keyboard_key_honeycomb_popup.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_pressed="true"
+          android:drawable="@drawable/btn_keyboard_key_popup_selected_holo" />
+    <item android:drawable="@drawable/btn_keyboard_key_light_popup_normal" />
+</selector>
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 0000000000..dd9b53e463
--- /dev/null
+++ b/java/res/drawable/keyboard_key_feedback_honeycomb.xml
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!-- Copyright (C) 2010 The Android Open Source Project
+
+     Licensed under the Apache License, Version 2.0 (the "License");
+     you may not use this file except in compliance with the License.
+     You may obtain a copy of the License at
+
+          http://www.apache.org/licenses/LICENSE-2.0
+
+     Unless required by applicable law or agreed to in writing, software
+     distributed under the License is distributed on an "AS IS" BASIS,
+     WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+     See the License for the specific language governing permissions and
+     limitations under the License.
+-->
+
+<selector xmlns:android="http://schemas.android.com/apk/res/android">
+    <item android:state_long_pressable="true"
+            android:drawable="@drawable/keyboard_key_feedback_more_background" />
+    <item android:drawable="@drawable/keyboard_key_feedback_background_holo" />
+</selector>
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 0000000000..50e91f7ea7
--- /dev/null
+++ b/java/res/layout-xlarge/keyboard_popup_honeycomb.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:background="@drawable/keyboard_popup_panel_background_holo"
+        android:paddingLeft="44dip"
+        android:paddingRight="32dip"
+        >
+    <com.android.inputmethod.latin.BaseKeyboardView
+            xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+            android:id="@+id/BaseKeyboardView"
+            android:layout_alignParentBottom="true"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/latinkeyboard_transparent"
+
+            latin:keyBackground="@drawable/btn_keyboard_key_honeycomb_popup"
+            latin:keyHysteresisDistance="0dip"
+            latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction"
+            />
+</LinearLayout>
diff --git a/java/res/layout/input_honeycomb.xml b/java/res/layout/input_honeycomb.xml
index 7bc0df4272..79eb7be964 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 0000000000..a90fe55885
--- /dev/null
+++ b/java/res/layout/key_preview_honeycomb.xml
@@ -0,0 +1,29 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<TextView xmlns:android="http://schemas.android.com/apk/res/android"
+    android:layout_width="wrap_content"
+    android:layout_height="80sp"
+    android:textSize="40sp"
+    android:textColor="@color/latinkeyboard_key_color_white"
+    android:minWidth="24dip"
+    android:gravity="center"
+    android:background="@drawable/keyboard_key_feedback_honeycomb"
+    />
diff --git a/java/res/layout/keyboard_popup_honeycomb.xml b/java/res/layout/keyboard_popup_honeycomb.xml
new file mode 100644
index 0000000000..63b5353813
--- /dev/null
+++ b/java/res/layout/keyboard_popup_honeycomb.xml
@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+<LinearLayout
+        xmlns:android="http://schemas.android.com/apk/res/android"
+        android:layout_width="match_parent"
+        android:layout_height="wrap_content"
+        android:orientation="horizontal"
+        android:background="@drawable/keyboard_popup_panel_background_holo"
+        android:paddingLeft="24dip"
+        android:paddingRight="24dip"
+        >
+    <com.android.inputmethod.latin.BaseKeyboardView
+            xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+            android:id="@+id/BaseKeyboardView"
+            android:layout_alignParentBottom="true"
+            android:layout_width="match_parent"
+            android:layout_height="wrap_content"
+            android:background="@color/latinkeyboard_transparent"
+
+            latin:keyBackground="@drawable/btn_keyboard_key_honeycomb_popup"
+            latin:keyHysteresisDistance="0dip"
+            latin:verticalCorrection="@dimen/mini_keyboard_vertical_correction"
+            />
+</LinearLayout>
diff --git a/java/res/values-xlarge/dimens.xml b/java/res/values-xlarge/dimens.xml
index 1162a31722..58fea4edf6 100644
--- a/java/res/values-xlarge/dimens.xml
+++ b/java/res/values-xlarge/dimens.xml
@@ -21,22 +21,24 @@
 <resources>
     <!-- key_height + key_bottom_gap = popup_key_height -->
     <dimen name="key_height">13.0mm</dimen>
-    <dimen name="key_bottom_gap">2.0mm</dimen>
+    <dimen name="key_bottom_gap">1.5mm</dimen>
     <dimen name="key_horizontal_gap">2.0mm</dimen>
     <dimen name="popup_key_height">15.0mm</dimen>
     <dimen name="keyboard_top_padding">1.0mm</dimen>
     <dimen name="keyboard_bottom_padding">1.0mm</dimen>
-    <!-- key_height x 1.6 -->
-    <dimen name="key_preview_height">20.8mm</dimen>
+    <!-- key_height x 1.0 -->
+    <dimen name="key_preview_height">13.0mm</dimen>
     <!-- Amount of allowance for selecting keys in a mini popup keyboard by sliding finger. -->
     <!-- popup_key_height x 1.2 -->
     <dimen name="mini_keyboard_slide_allowance">15.6mm</dimen>
     <!-- popup_key_height x -1.0 -->
     <dimen name="mini_keyboard_vertical_correction">-13.0mm</dimen>
 
-    <dimen name="key_text_size">0.175in</dimen>
-    <dimen name="key_label_text_size">0.110in</dimen>
-    <dimen name="key_preview_text_size_large">0.245in</dimen>
+    <dimen name="key_text_size">24dip</dimen>
+    <dimen name="key_label_text_size">18dip</dimen>
+    <dimen name="key_preview_text_size_large">24dip</dimen>
+    <!-- left or right padding for of label alignment -->
+    <dimen name="key_label_horizontal_alignment_padding">18dip</dimen>
 
     <dimen name="candidate_strip_height">46dip</dimen>
 </resources>
diff --git a/java/res/values/attrs.xml b/java/res/values/attrs.xml
index 28ea6fcccf..ee4ec05177 100644
--- a/java/res/values/attrs.xml
+++ b/java/res/values/attrs.xml
@@ -126,6 +126,8 @@
         <attr name="manualTemporaryUpperCaseHintIcon" format="reference" />
         <!-- The key style to specify a set of key attributes defined by <key_style/> -->
         <attr name="keyStyle" format="string" />
+        <!-- Shift key icon for shifted state -->
+        <attr name="shiftedIcon" format="reference" />
     </declare-styleable>
 
     <declare-styleable name="BaseKeyboard_Row">
diff --git a/java/res/values/dimens.xml b/java/res/values/dimens.xml
index 0073835fda..f29bc4d113 100644
--- a/java/res/values/dimens.xml
+++ b/java/res/values/dimens.xml
@@ -37,6 +37,8 @@
     <dimen name="key_text_size">0.13in</dimen>
     <dimen name="key_label_text_size">0.083in</dimen>
     <dimen name="key_preview_text_size_large">40sp</dimen>
+    <!-- left or right padding for of label alignment -->
+    <dimen name="key_label_horizontal_alignment_padding">0.13in</dimen>
     <dimen name="key_preview_offset">0.000in</dimen>
     <!-- We use "inch", not "dip" because this value tries dealing with physical distance related
          to user's finger. -->
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 0000000000..0643bc3446
--- /dev/null
+++ b/java/res/xml-xlarge/kbd_key_styles.xml
@@ -0,0 +1,149 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <!-- Functional key styles -->
+    <switch>
+        <case
+            latin:colorScheme="white"
+        >
+            <key-style
+                latin:styleName="functionalKeyStyle"
+                latin:isModifier="true" />
+            <key-style
+                latin:styleName="shiftKeyStyle"
+                latin:codes="@integer/key_shift"
+                latin:keyIcon="@drawable/sym_keyboard_shift_holo"
+                latin:shiftedIcon="@drawable/sym_keyboard_shift_locked_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isSticky="true" />
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:codes="@integer/key_delete"
+                latin:keyIcon="@drawable/sym_keyboard_delete_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isRepeatable="true" />
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:codes="@integer/key_return"
+                latin:keyIcon="@drawable/sym_keyboard_return_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:parentStyle="functionalKeyStyle" />
+            1
+            <key-style
+                latin:styleName="spaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_keyboard_space_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_keyboard_space_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="smileyKeyStyle"
+                latin:codes="0"
+                latin:keyIcon="@drawable/sym_keyboard_smiley_holo"
+                latin:keyOutputText=";-) "
+                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:popupKeyboard="@xml/popup_smileys" />
+        </case>
+        <case
+            latin:colorScheme="black"
+        >
+            <key-style
+                latin:styleName="functionalKeyStyle" />
+            <key-style
+                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" />
+            <key-style
+                latin:styleName="deleteKeyStyle"
+                latin:codes="@integer/key_delete"
+                latin:keyIcon="@drawable/sym_bkeyboard_delete"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+                latin:parentStyle="functionalKeyStyle"
+                latin:isRepeatable="true" />
+            <key-style
+                latin:styleName="returnKeyStyle"
+                latin:codes="@integer/key_return"
+                latin:keyIcon="@drawable/sym_bkeyboard_return"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_return"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="spaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_bkeyboard_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+                latin:parentStyle="functionalKeyStyle" />
+            <key-style
+                latin:styleName="nonSpecialBackgroundSpaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_bkeyboard_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+            <key-style
+                latin:styleName="smileyKeyStyle"
+                latin:keyLabel=";-)"
+                latin:keyOutputText=";-) "
+                latin:keyHintIcon="@drawable/hint_popup_holo"
+                latin:popupKeyboard="@xml/popup_smileys" />
+        </case>
+    </switch>
+    <key-style
+        latin:styleName="tabKeyStyle"
+        latin:codes="@integer/key_tab"
+        latin:keyLabel="@string/label_tab_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="toSymbolKeyStyle"
+        latin:codes="@integer/key_switch_alpha_symbol"
+        latin:keyLabel="@string/label_to_symbol_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="toAlphaKeyStyle"
+        latin:codes="@integer/key_switch_alpha_symbol"
+        latin:keyLabel="@string/label_to_alpha_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle" />
+    <key-style
+        latin:styleName="moreKeyStyle"
+        latin:codes="@integer/key_shift"
+        latin:keyLabel="@string/label_more_key"
+        latin:keyLabelOption="fontNormal"
+        latin:parentStyle="functionalKeyStyle"
+        latin:isSticky="true" />
+    <key-style
+        latin:styleName="comKeyStyle"
+        latin:keyLabel=".com"
+        latin:keyLabelOption="fontNormal"
+        latin:keyHintIcon="@drawable/hint_popup_holo"
+        latin:popupKeyboard="@xml/popup_domains" />
+</merge>
diff --git a/java/res/xml-xlarge/kbd_number.xml b/java/res/xml-xlarge/kbd_number.xml
index dd251ea9fb..f5f4fbc8aa 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"
 >
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
     <!-- This row is intentionally not marked as a top row -->
     <Row>
         <Key
-            latin:codes="@integer/key_tab"
-            latin:keyLabel="@string/label_tab_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
-            latin:isModifier="true"
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyEdgeFlags="left" />
         <Spacer
             latin:horizontalGap="4.458%p" />
@@ -55,12 +55,8 @@
         <Spacer
             latin:horizontalGap="9.360%p" />
         <Key
-            latin:codes="@integer/key_delete"
-            latin:keyLabel="@string/label_backspace_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
+            latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="9.804%p"
-            latin:isModifier="true"
-            latin:isRepeatable="true"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
@@ -86,11 +82,8 @@
         <Spacer
             latin:horizontalGap="4.458%p" />
         <Key
-            latin:codes="@integer/key_return"
-            latin:keyLabel="@string/label_return_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
+            latin:keyStyle="returnKeyStyle"
             latin:keyWidth="14.706%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
@@ -125,9 +118,7 @@
         <Spacer
             latin:horizontalGap="16.406%p" />
         <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
             latin:keyWidth="24.127%p" />
         <Spacer
             latin:horizontalGap="4.458%p" />
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 0000000000..adf45a8610
--- /dev/null
+++ b/java/res/xml-xlarge/kbd_numkey_styles.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:colorScheme="white"
+        >
+            <key-style
+                latin:styleName="num0KeyStyle"
+                latin:codes="48"
+                latin:keyIcon="@drawable/sym_keyboard_num0_holo" />
+            <key-style
+                latin:styleName="num1KeyStyle"
+                latin:codes="49"
+                latin:keyIcon="@drawable/sym_keyboard_num1_holo" />
+            <key-style
+                latin:styleName="num2KeyStyle"
+                latin:codes="50"
+                latin:keyIcon="@drawable/sym_keyboard_num2_holo" />
+            <key-style
+                latin:styleName="num3KeyStyle"
+                latin:codes="51"
+                latin:keyIcon="@drawable/sym_keyboard_num3_holo" />
+            <key-style
+                latin:styleName="num4KeyStyle"
+                latin:codes="52"
+                latin:keyIcon="@drawable/sym_keyboard_num4_holo" />
+            <key-style
+                latin:styleName="num5KeyStyle"
+                latin:codes="53"
+                latin:keyIcon="@drawable/sym_keyboard_num5_holo" />
+            <key-style
+                latin:styleName="num6KeyStyle"
+                latin:codes="54"
+                latin:keyIcon="@drawable/sym_keyboard_num6_holo" />
+            <key-style
+                latin:styleName="num7KeyStyle"
+                latin:codes="55"
+                latin:keyIcon="@drawable/sym_keyboard_num7_holo" />
+            <key-style
+                latin:styleName="num8KeyStyle"
+                latin:codes="56"
+                latin:keyIcon="@drawable/sym_keyboard_num8_holo" />
+            <key-style
+                latin:styleName="num9KeyStyle"
+                latin:codes="57"
+                latin:keyIcon="@drawable/sym_keyboard_num9_holo" />
+            <key-style
+                latin:styleName="numStarKeyStyle"
+                latin:codes="42"
+                latin:keyIcon="@drawable/sym_keyboard_numbstar_holo" />
+            <key-style
+                latin:styleName="numPoundKeyStyle"
+                latin:codes="35"
+                latin:keyIcon="@drawable/sym_keyboard_numbpound_holo" />
+            <key-style
+                latin:styleName="numAltKeyStyle"
+                latin:codes="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="@drawable/sym_keyboard_numalt"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_keyboard_space_holo"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+        </case>
+        <case
+            latin:colorScheme="black"
+        >
+            <key-style
+                latin:styleName="num0KeyStyle"
+                latin:codes="48"
+                latin:keyIcon="@drawable/sym_bkeyboard_num0" />
+            <key-style
+                latin:styleName="num1KeyStyle"
+                latin:codes="49"
+                latin:keyIcon="@drawable/sym_bkeyboard_num1" />
+            <key-style
+                latin:styleName="num2KeyStyle"
+                latin:codes="50"
+                latin:keyIcon="@drawable/sym_bkeyboard_num2" />
+            <key-style
+                latin:styleName="num3KeyStyle"
+                latin:codes="51"
+                latin:keyIcon="@drawable/sym_bkeyboard_num3" />
+            <key-style
+                latin:styleName="num4KeyStyle"
+                latin:codes="52"
+                latin:keyIcon="@drawable/sym_bkeyboard_num4" />
+            <key-style
+                latin:styleName="num5KeyStyle"
+                latin:codes="53"
+                latin:keyIcon="@drawable/sym_bkeyboard_num5" />
+            <key-style
+                latin:styleName="num6KeyStyle"
+                latin:codes="54"
+                latin:keyIcon="@drawable/sym_bkeyboard_num6" />
+            <key-style
+                latin:styleName="num7KeyStyle"
+                latin:codes="55"
+                latin:keyIcon="@drawable/sym_bkeyboard_num7" />
+            <key-style
+                latin:styleName="num8KeyStyle"
+                latin:codes="56"
+                latin:keyIcon="@drawable/sym_bkeyboard_num8" />
+            <key-style
+                latin:styleName="num9KeyStyle"
+                latin:codes="57"
+                latin:keyIcon="@drawable/sym_bkeyboard_num9" />
+            <key-style
+                latin:styleName="numStarKeyStyle"
+                latin:codes="42"
+                latin:keyIcon="@drawable/sym_bkeyboard_numstar" />
+            <key-style
+                latin:styleName="numPoundKeyStyle"
+                latin:codes="35"
+                latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
+            <key-style
+                latin:styleName="numAltKeyStyle"
+                latin:codes="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="@drawable/sym_bkeyboard_numalt"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_bkeyboard_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+        </case>
+    </switch>
+</merge>
diff --git a/java/res/xml-xlarge/kbd_phone.xml b/java/res/xml-xlarge/kbd_phone.xml
index 842c74bf55..483b022a52 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"
 >
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <include
+        latin:keyboardLayout="@xml/kbd_numkey_styles" />
     <!-- This row is intentionally not marked as a top row -->
     <Row>
         <Key
-            latin:codes="@integer/key_tab"
-            latin:keyLabel="@string/label_tab_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
-            latin:isModifier="true"
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyEdgeFlags="left" />
         <!-- To match one character label size with "Tab", I placed spaces around the char '-'
              and '+'. -->
@@ -48,32 +50,22 @@
         <Spacer
             latin:horizontalGap="8.479%p" />
         <Key
-            latin:codes="49"
-            latin:keyIcon="@drawable/sym_keyboard_num1" />
+            latin:keyStyle="num1KeyStyle" />
         <Key
-            latin:codes="50"
-            latin:keyIcon="@drawable/sym_keyboard_num2" />
+            latin:keyStyle="num2KeyStyle" />
         <Key
-            latin:codes="51"
-            latin:keyIcon="@drawable/sym_keyboard_num3" />
+            latin:keyStyle="num3KeyStyle" />
         <Spacer
-            latin:horizontalGap="4.458%p" />
+            latin:horizontalGap="9.360%p" />
         <Key
-            latin:codes="@integer/key_delete"
-            latin:keyLabel="@string/label_backspace_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
-            latin:keyWidth="14.706%p"
-            latin:isModifier="true"
-            latin:isRepeatable="true"
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.804%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
         <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_more_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
-            latin:isModifier="true"
-            latin:isSticky="true"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyEdgeFlags="left" />
         <!-- To match one character label size with "More", I placed spaces around the char ','
              and '.'. -->
@@ -90,22 +82,16 @@
         <Spacer
             latin:horizontalGap="8.479%p" />
         <Key
-            latin:codes="52"
-            latin:keyIcon="@drawable/sym_keyboard_num4" />
+            latin:keyStyle="num4KeyStyle" />
         <Key
-            latin:codes="53"
-            latin:keyIcon="@drawable/sym_keyboard_num5" />
+            latin:keyStyle="num5KeyStyle" />
         <Key
-            latin:codes="54"
-            latin:keyIcon="@drawable/sym_keyboard_num6" />
+            latin:keyStyle="num6KeyStyle" />
         <Spacer
             latin:horizontalGap="4.458%p" />
         <Key
-            latin:codes="@integer/key_return"
-            latin:keyLabel="@string/label_return_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
+            latin:keyStyle="returnKeyStyle"
             latin:keyWidth="14.706%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
@@ -126,14 +112,11 @@
         <Spacer
             latin:horizontalGap="8.479%p" />
         <Key
-            latin:codes="55"
-            latin:keyIcon="@drawable/sym_keyboard_num7" />
+            latin:keyStyle="num7KeyStyle" />
         <Key
-            latin:codes="56"
-            latin:keyIcon="@drawable/sym_keyboard_num8" />
+            latin:keyStyle="num8KeyStyle" />
         <Key
-            latin:codes="57"
-            latin:keyIcon="@drawable/sym_keyboard_num9" />
+            latin:keyStyle="num9KeyStyle" />
         <!-- There is an empty area bellow the "Enter" key and right of the "9" key.  To ignore
              the touch event on the area, "9" is intentionally not marked as a right edge key. -->
         </Row>
@@ -144,21 +127,16 @@
         <Spacer
             latin:horizontalGap="20.427%p" />
         <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
             latin:keyWidth="16.085%p" />
         <Spacer
             latin:horizontalGap="8.479%p" />
         <Key
-            latin:codes="42"
-            latin:keyIcon="@drawable/sym_keyboard_numstar" />
+            latin:keyStyle="numStarKeyStyle" />
         <Key
-            latin:codes="48"
-            latin:keyIcon="@drawable/sym_keyboard_num0" />
+            latin:keyStyle="num0KeyStyle" />
         <Key
-            latin:codes="35"
-            latin:keyIcon="@drawable/sym_keyboard_numpound" />
+            latin:keyStyle="numPoundKeyStyle" />
         <!-- There is an empty area bellow the "Enter" key and right of the "#" key.  To ignore
              the touch event on the area, "#" is intentionally not marked as a right edge key. -->
     </Row>
diff --git a/java/res/xml-xlarge/kbd_phone_symbols.xml b/java/res/xml-xlarge/kbd_phone_symbols.xml
index 9ba60ed858..09eb403c86 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"
 >
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <include
+        latin:keyboardLayout="@xml/kbd_numkey_styles" />
     <!-- This row is intentionally not marked as a top row -->
     <Row>
         <Key
-            latin:codes="@integer/key_tab"
-            latin:keyLabel="@string/label_tab_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
-            latin:isModifier="true"
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyEdgeFlags="left" />
         <Spacer
             latin:horizontalGap="4.458%p" />
@@ -52,32 +54,22 @@
         <Spacer
             latin:horizontalGap="4.458%p" />
         <Key
-            latin:codes="49"
-            latin:keyIcon="@drawable/sym_keyboard_num1" />
+            latin:keyStyle="num1KeyStyle" />
         <Key
-            latin:codes="50"
-            latin:keyIcon="@drawable/sym_keyboard_num2" />
+            latin:keyStyle="num2KeyStyle" />
         <Key
-            latin:codes="51"
-            latin:keyIcon="@drawable/sym_keyboard_num3" />
+            latin:keyStyle="num3KeyStyle" />
         <Spacer
-            latin:horizontalGap="4.458%p" />
+            latin:horizontalGap="9.360%p" />
         <Key
-            latin:codes="@integer/key_delete"
-            latin:keyLabel="@string/label_backspace_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
-            latin:keyWidth="14.706%p"
-            latin:isModifier="true"
-            latin:isRepeatable="true"
+            latin:keyStyle="deleteKeyStyle"
+            latin:keyWidth="9.804%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
         <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_more_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
-            latin:isModifier="true"
-            latin:isSticky="true"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyEdgeFlags="left" />
         <Spacer
             latin:horizontalGap="4.458%p" />
@@ -98,22 +90,16 @@
         <Spacer
             latin:horizontalGap="4.458%p" />
         <Key
-            latin:codes="52"
-            latin:keyIcon="@drawable/sym_keyboard_num4" />
+            latin:keyStyle="num4KeyStyle" />
         <Key
-            latin:codes="53"
-            latin:keyIcon="@drawable/sym_keyboard_num5" />
+            latin:keyStyle="num5KeyStyle" />
         <Key
-            latin:codes="54"
-            latin:keyIcon="@drawable/sym_keyboard_num6" />
+            latin:keyStyle="num6KeyStyle" />
         <Spacer
             latin:horizontalGap="4.458%p" />
         <Key
-            latin:codes="@integer/key_return"
-            latin:keyLabel="@string/label_return_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
+            latin:keyStyle="returnKeyStyle"
             latin:keyWidth="14.706%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row>
@@ -138,14 +124,11 @@
         <Spacer
             latin:horizontalGap="4.458%p" />
         <Key
-            latin:codes="55"
-            latin:keyIcon="@drawable/sym_keyboard_num7" />
+            latin:keyStyle="num7KeyStyle" />
         <Key
-            latin:codes="56"
-            latin:keyIcon="@drawable/sym_keyboard_num8" />
+            latin:keyStyle="num8KeyStyle" />
         <Key
-            latin:codes="57"
-            latin:keyIcon="@drawable/sym_keyboard_num9" />
+            latin:keyStyle="num9KeyStyle" />
         <!-- There is an empty area bellow the "Enter" key and right of the "9" key.  To ignore
              the touch event on the area, "9" is intentionally not marked as a right edge key. -->
     </Row>
@@ -156,21 +139,16 @@
         <Spacer
             latin:horizontalGap="16.406%p" />
         <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
+            latin:keyStyle="nonSpecialBackgroundSpaceKeyStyle"
             latin:keyWidth="24.127%p" />
         <Spacer
             latin:horizontalGap="4.458%p" />
         <Key
-            latin:codes="42"
-            latin:keyIcon="@drawable/sym_keyboard_numstar" />
+            latin:keyStyle="numStarKeyStyle" />
         <Key
-            latin:codes="48"
-            latin:keyIcon="@drawable/sym_keyboard_num0" />
+            latin:keyStyle="num0KeyStyle" />
         <Key
-            latin:codes="35"
-            latin:keyIcon="@drawable/sym_keyboard_numpound" />
+            latin:keyStyle="numPoundKeyStyle" />
         <!-- There is an empty area bellow the "Enter" key and right of the "#" key.  To ignore
              the touch event on the area, "#" is intentionally not marked as a right edge key. -->
     </Row>
diff --git a/java/res/xml-xlarge/kbd_qwerty.xml b/java/res/xml-xlarge/kbd_qwerty.xml
index b45060497a..6f6877b0bf 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"
 >
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row1" />
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row2" />
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row3" />
-    <include latin:keyboardLayout="@xml/kbd_qwerty_row4" />
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row1" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row2" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row3" />
+    <include
+        latin:keyboardLayout="@xml/kbd_qwerty_row4" />
 </Keyboard>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row1.xml b/java/res/xml-xlarge/kbd_qwerty_row1.xml
index eca24b6e15..1596867928 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"
     >
         <Key
-            latin:codes="@integer/key_tab"
-            latin:keyLabel="@string/label_tab_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyWidth="7.949%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="q"
@@ -73,12 +71,8 @@
             latin:popupKeyboard="@xml/kbd_popup_template"
             latin:popupCharacters="@string/alternates_for_p" />
         <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_keyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+            latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="9.331%p"
-            latin:isModifier="true"
-            latin:isRepeatable="true"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row2.xml b/java/res/xml-xlarge/kbd_qwerty_row2.xml
index 8dfb488858..2b9be10abb 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"
     >
         <Key
-            latin:codes="@integer/key_switch_alpha_symbol"
-            latin:keyLabel="@string/label_to_symbol_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="toSymbolKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyWidth="11.167%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="a"
@@ -60,11 +58,8 @@
             latin:popupKeyboard="@xml/kbd_popup_template"
             latin:popupCharacters="@string/alternates_for_l" />
         <Key
-            latin:codes="@integer/key_return"
-            latin:keyLabel="@string/label_return_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
+            latin:keyStyle="returnKeyStyle"
             latin:keyWidth="15.750%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row3.xml b/java/res/xml-xlarge/kbd_qwerty_row3.xml
index c26dcc4104..209ef213d8 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"
     >
         <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_shift_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="shiftKeyStyle"
             latin:keyWidth="15.192%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="z"
@@ -81,12 +77,8 @@
             </default>
         </switch>
         <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_shift_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
-            latin:keyWidth="12.430%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
+            latin:keyStyle="shiftKeyStyle"
+            latin:keyWidth="12.530%p"
             latin:keyEdgeFlags="right" />
     </Row>
 </merge>
diff --git a/java/res/xml-xlarge/kbd_qwerty_row4.xml b/java/res/xml-xlarge/kbd_qwerty_row4.xml
index 8b31ec6fa6..7b9049a8ec 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"
             >
                 <Key
-                    latin:keyLabel=".com"
-                    latin:keyOutputText=".com"
-                    latin:keyHintIcon="@drawable/hint_popup"
-                    latin:popupKeyboard="@xml/popup_domains" />
+                    latin:keyStyle="comKeyStyle" />
                 <Key
                     latin:keyLabel="\@" />
             </case>
@@ -44,18 +41,12 @@
                 latin:mode="url"
             >
                 <Key
-                    latin:keyLabel=".com"
-                    latin:keyOutputText=".com"
-                    latin:keyHintIcon="@drawable/hint_popup"
-                    latin:popupKeyboard="@xml/popup_domains"
+                    latin:keyStyle="comKeyStyle"
                     latin:keyWidth="16.084%p" />
             </case>
             <default>
                 <Key
-                    latin:keyLabel=":-)"
-                    latin:keyOutputText=":-)"
-                    latin:keyHintIcon="@drawable/hint_popup"
-                    latin:popupKeyboard="@xml/popup_smileys" />
+                    latin:keyStyle="smileyKeyStyle" />
                 <Key
                     latin:keyLabel="/"
                     latin:manualTemporaryUpperCaseCode="64"
@@ -66,11 +57,8 @@
             </default>
         </switch>
         <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="37.454%p"
-            latin:isModifier="true" />
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="37.454%p" />
         <switch>
             <case
                 latin:mode="email"
diff --git a/java/res/xml-xlarge/kbd_symbols.xml b/java/res/xml-xlarge/kbd_symbols.xml
index 317c32b810..7197115d68 100644
--- a/java/res/xml-xlarge/kbd_symbols.xml
+++ b/java/res/xml-xlarge/kbd_symbols.xml
@@ -24,16 +24,16 @@
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:keyHeight="@dimen/key_height"
 >
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
     <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="8.272%p"
     >
         <Key
-            latin:codes="@integer/key_tab"
-            latin:keyLabel="@string/label_tab_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyWidth="7.949%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="1"
@@ -70,23 +70,17 @@
             latin:popupKeyboard="@xml/kbd_popup_template"
             latin:popupCharacters="ⁿ∅" />
         <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_keyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+            latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="9.331%p"
-            latin:isModifier="true"
-            latin:isRepeatable="true"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
         latin:keyWidth="8.157%p"
     >
         <Key
-            latin:codes="@integer/key_switch_alpha_symbol"
-            latin:keyLabel="@string/label_to_alpha_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="toAlphaKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyWidth="11.167%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="#" />
@@ -121,23 +115,17 @@
             latin:popupKeyboard="@xml/kbd_popup_template"
             latin:popupCharacters="]}&gt;" />
         <Key
-            latin:codes="@integer/key_return"
-            latin:keyLabel="@string/label_return_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
+            latin:keyStyle="returnKeyStyle"
             latin:keyWidth="15.750%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
         latin:keyWidth="8.042%p"
     >
         <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_more_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyWidth="15.192%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="&lt;"
@@ -166,13 +154,9 @@
             latin:popupKeyboard="@xml/kbd_popup_template"
             latin:popupCharacters="¿" />
         <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_more_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
-            latin:keyWidth="12.430%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyLabelOption="alignRight"
+            latin:keyWidth="12.530%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <!-- This row is intentionally not marked as a bottom row -->
@@ -186,11 +170,8 @@
         <Key
             latin:keyLabel="\@" />
         <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="37.454%p"
-            latin:isModifier="true" />
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="37.454%p" />
         <Key
             latin:keyLabel="&quot;"
             latin:popupKeyboard="@xml/kbd_popup_template"
diff --git a/java/res/xml-xlarge/kbd_symbols_shift.xml b/java/res/xml-xlarge/kbd_symbols_shift.xml
index 603b36b4ee..4742967326 100644
--- a/java/res/xml-xlarge/kbd_symbols_shift.xml
+++ b/java/res/xml-xlarge/kbd_symbols_shift.xml
@@ -24,16 +24,16 @@
     latin:verticalGap="@dimen/key_bottom_gap"
     latin:keyHeight="@dimen/key_height"
 >
+    <include
+        latin:keyboardLayout="@xml/kbd_key_styles" />
     <!-- This row is intentionally not marked as a top row -->
     <Row
         latin:keyWidth="8.272%p"
     >
         <Key
-            latin:codes="@integer/key_tab"
-            latin:keyLabel="@string/label_tab_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="tabKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyWidth="7.949%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="~" />
@@ -60,23 +60,17 @@
         <Key
             latin:keyLabel="}" />
         <Key
-            latin:codes="@integer/key_delete"
-            latin:keyIcon="@drawable/sym_keyboard_delete"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_delete"
+            latin:keyStyle="deleteKeyStyle"
             latin:keyWidth="9.331%p"
-            latin:isModifier="true"
-            latin:isRepeatable="true"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
         latin:keyWidth="8.157%p"
     >
         <Key
-            latin:codes="@integer/key_switch_alpha_symbol"
-            latin:keyLabel="@string/label_to_alpha_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="toAlphaKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyWidth="11.167%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="£" />
@@ -101,23 +95,17 @@
         <Key
             latin:keyLabel="]" />
         <Key
-            latin:codes="@integer/key_return"
-            latin:keyLabel="@string/label_return_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
+            latin:keyStyle="returnKeyStyle"
             latin:keyWidth="15.750%p"
-            latin:isModifier="true"
             latin:keyEdgeFlags="right" />
     </Row>
     <Row
         latin:keyWidth="8.042%p"
     >
         <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_more_key"
-            latin:keyLabelOption="fontNormal|alignLeft|alignBottom"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyLabelOption="alignLeft"
             latin:keyWidth="15.192%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
             latin:keyEdgeFlags="left" />
         <Key
             latin:keyLabel="©" />
@@ -142,12 +130,9 @@
         <Key
             latin:keyLabel="¿" />
         <Key
-            latin:codes="@integer/key_shift"
-            latin:keyLabel="@string/label_more_key"
-            latin:keyLabelOption="fontNormal|alignRight|alignBottom"
-            latin:keyWidth="12.430%p"
-            latin:isModifier="true"
-            latin:isSticky="true"
+            latin:keyStyle="moreKeyStyle"
+            latin:keyLabelOption="alignRight"
+            latin:keyWidth="12.530%p"
             latin:keyEdgeFlags="right" />
     </Row>
     <!-- This row is intentionally not marked as a bottom row -->
@@ -157,10 +142,7 @@
         <Spacer
             latin:horizontalGap="32.488%p" />
         <Key
-            latin:codes="@integer/key_space"
-            latin:keyIcon="@drawable/sym_keyboard_space"
-            latin:iconPreview="@drawable/sym_keyboard_feedback_space"
-            latin:keyWidth="37.454%p"
-            latin:isModifier="true" />
+            latin:keyStyle="spaceKeyStyle"
+            latin:keyWidth="37.454%p" />
     </Row>
 </Keyboard>
diff --git a/java/res/xml/kbd_key_styles.xml b/java/res/xml/kbd_key_styles.xml
index b80bb9ff4f..9dd166a411 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 0000000000..006476db27
--- /dev/null
+++ b/java/res/xml/kbd_numkey_styles.xml
@@ -0,0 +1,150 @@
+<?xml version="1.0" encoding="utf-8"?>
+<!--
+/*
+**
+** Copyright 2010, The Android Open Source Project
+**
+** Licensed under the Apache License, Version 2.0 (the "License");
+** you may not use this file except in compliance with the License.
+** You may obtain a copy of the License at
+**
+**     http://www.apache.org/licenses/LICENSE-2.0
+**
+** Unless required by applicable law or agreed to in writing, software
+** distributed under the License is distributed on an "AS IS" BASIS,
+** WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+** See the License for the specific language governing permissions and
+** limitations under the License.
+*/
+-->
+
+<merge
+    xmlns:latin="http://schemas.android.com/apk/res/com.android.inputmethod.latin"
+>
+    <switch>
+        <case
+            latin:colorScheme="white"
+        >
+            <key-style
+                latin:styleName="num0KeyStyle"
+                latin:codes="48"
+                latin:keyIcon="@drawable/sym_keyboard_num0" />
+            <key-style
+                latin:styleName="num1KeyStyle"
+                latin:codes="49"
+                latin:keyIcon="@drawable/sym_keyboard_num1" />
+            <key-style
+                latin:styleName="num2KeyStyle"
+                latin:codes="50"
+                latin:keyIcon="@drawable/sym_keyboard_num2" />
+            <key-style
+                latin:styleName="num3KeyStyle"
+                latin:codes="51"
+                latin:keyIcon="@drawable/sym_keyboard_num3" />
+            <key-style
+                latin:styleName="num4KeyStyle"
+                latin:codes="52"
+                latin:keyIcon="@drawable/sym_keyboard_num4" />
+            <key-style
+                latin:styleName="num5KeyStyle"
+                latin:codes="53"
+                latin:keyIcon="@drawable/sym_keyboard_num5" />
+            <key-style
+                latin:styleName="num6KeyStyle"
+                latin:codes="54"
+                latin:keyIcon="@drawable/sym_keyboard_num6" />
+            <key-style
+                latin:styleName="num7KeyStyle"
+                latin:codes="55"
+                latin:keyIcon="@drawable/sym_keyboard_num7" />
+            <key-style
+                latin:styleName="num8KeyStyle"
+                latin:codes="56"
+                latin:keyIcon="@drawable/sym_keyboard_num8" />
+            <key-style
+                latin:styleName="num9KeyStyle"
+                latin:codes="57"
+                latin:keyIcon="@drawable/sym_keyboard_num9" />
+            <key-style
+                latin:styleName="numStarKeyStyle"
+                latin:codes="42"
+                latin:keyIcon="@drawable/sym_keyboard_numstar" />
+            <key-style
+                latin:styleName="numPoundKeyStyle"
+                latin:codes="35"
+                latin:keyIcon="@drawable/sym_keyboard_numpound" />
+            <key-style
+                latin:styleName="numAltKeyStyle"
+                latin:codes="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="@drawable/sym_keyboard_numalt"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_keyboard_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+        </case>
+        <case
+            latin:colorScheme="black"
+        >
+            <key-style
+                latin:styleName="num0KeyStyle"
+                latin:codes="48"
+                latin:keyIcon="@drawable/sym_bkeyboard_num0" />
+            <key-style
+                latin:styleName="num1KeyStyle"
+                latin:codes="49"
+                latin:keyIcon="@drawable/sym_bkeyboard_num1" />
+            <key-style
+                latin:styleName="num2KeyStyle"
+                latin:codes="50"
+                latin:keyIcon="@drawable/sym_bkeyboard_num2" />
+            <key-style
+                latin:styleName="num3KeyStyle"
+                latin:codes="51"
+                latin:keyIcon="@drawable/sym_bkeyboard_num3" />
+            <key-style
+                latin:styleName="num4KeyStyle"
+                latin:codes="52"
+                latin:keyIcon="@drawable/sym_bkeyboard_num4" />
+            <key-style
+                latin:styleName="num5KeyStyle"
+                latin:codes="53"
+                latin:keyIcon="@drawable/sym_bkeyboard_num5" />
+            <key-style
+                latin:styleName="num6KeyStyle"
+                latin:codes="54"
+                latin:keyIcon="@drawable/sym_bkeyboard_num6" />
+            <key-style
+                latin:styleName="num7KeyStyle"
+                latin:codes="55"
+                latin:keyIcon="@drawable/sym_bkeyboard_num7" />
+            <key-style
+                latin:styleName="num8KeyStyle"
+                latin:codes="56"
+                latin:keyIcon="@drawable/sym_bkeyboard_num8" />
+            <key-style
+                latin:styleName="num9KeyStyle"
+                latin:codes="57"
+                latin:keyIcon="@drawable/sym_bkeyboard_num9" />
+            <key-style
+                latin:styleName="numStarKeyStyle"
+                latin:codes="42"
+                latin:keyIcon="@drawable/sym_bkeyboard_numstar" />
+            <key-style
+                latin:styleName="numPoundKeyStyle"
+                latin:codes="35"
+                latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
+            <key-style
+                latin:styleName="numAltKeyStyle"
+                latin:codes="@integer/key_switch_alpha_symbol"
+                latin:keyIcon="@drawable/sym_bkeyboard_numalt"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
+            <key-style
+                latin:styleName="numSpaceKeyStyle"
+                latin:codes="@integer/key_space"
+                latin:keyIcon="@drawable/sym_bkeyboard_space"
+                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
+        </case>
+    </switch>
+</merge>
diff --git a/java/res/xml/kbd_phone.xml b/java/res/xml/kbd_phone.xml
index c9b1ad6314..7e146ed69d 100644
--- a/java/res/xml/kbd_phone.xml
+++ b/java/res/xml/kbd_phone.xml
@@ -27,116 +27,8 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
-    <switch>
-        <case
-            latin:colorScheme="white"
-        >
-            <key-style
-                latin:styleName="num0KeyStyle"
-                latin:codes="48"
-                latin:keyIcon="@drawable/sym_keyboard_num0" />
-            <key-style
-                latin:styleName="num1KeyStyle"
-                latin:codes="49"
-                latin:keyIcon="@drawable/sym_keyboard_num1" />
-            <key-style
-                latin:styleName="num2KeyStyle"
-                latin:codes="50"
-                latin:keyIcon="@drawable/sym_keyboard_num2" />
-            <key-style
-                latin:styleName="num3KeyStyle"
-                latin:codes="51"
-                latin:keyIcon="@drawable/sym_keyboard_num3" />
-            <key-style
-                latin:styleName="num4KeyStyle"
-                latin:codes="52"
-                latin:keyIcon="@drawable/sym_keyboard_num4" />
-            <key-style
-                latin:styleName="num5KeyStyle"
-                latin:codes="53"
-                latin:keyIcon="@drawable/sym_keyboard_num5" />
-            <key-style
-                latin:styleName="num6KeyStyle"
-                latin:codes="54"
-                latin:keyIcon="@drawable/sym_keyboard_num6" />
-            <key-style
-                latin:styleName="num7KeyStyle"
-                latin:codes="55"
-                latin:keyIcon="@drawable/sym_keyboard_num7" />
-            <key-style
-                latin:styleName="num8KeyStyle"
-                latin:codes="56"
-                latin:keyIcon="@drawable/sym_keyboard_num8" />
-            <key-style
-                latin:styleName="num9KeyStyle"
-                latin:codes="57"
-                latin:keyIcon="@drawable/sym_keyboard_num9" />
-            <key-style
-                latin:styleName="numAltKeyStyle"
-                latin:codes="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_keyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:codes="@integer/key_space"
-                latin:keyIcon="@drawable/sym_keyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-        <case
-            latin:colorScheme="black"
-        >
-            <key-style
-                latin:styleName="num0KeyStyle"
-                latin:codes="48"
-                latin:keyIcon="@drawable/sym_bkeyboard_num0" />
-            <key-style
-                latin:styleName="num1KeyStyle"
-                latin:codes="49"
-                latin:keyIcon="@drawable/sym_bkeyboard_num1" />
-            <key-style
-                latin:styleName="num2KeyStyle"
-                latin:codes="50"
-                latin:keyIcon="@drawable/sym_bkeyboard_num2" />
-            <key-style
-                latin:styleName="num3KeyStyle"
-                latin:codes="51"
-                latin:keyIcon="@drawable/sym_bkeyboard_num3" />
-            <key-style
-                latin:styleName="num4KeyStyle"
-                latin:codes="52"
-                latin:keyIcon="@drawable/sym_bkeyboard_num4" />
-            <key-style
-                latin:styleName="num5KeyStyle"
-                latin:codes="53"
-                latin:keyIcon="@drawable/sym_bkeyboard_num5" />
-            <key-style
-                latin:styleName="num6KeyStyle"
-                latin:codes="54"
-                latin:keyIcon="@drawable/sym_bkeyboard_num6" />
-            <key-style
-                latin:styleName="num7KeyStyle"
-                latin:codes="55"
-                latin:keyIcon="@drawable/sym_bkeyboard_num7" />
-            <key-style
-                latin:styleName="num8KeyStyle"
-                latin:codes="56"
-                latin:keyIcon="@drawable/sym_bkeyboard_num8" />
-            <key-style
-                latin:styleName="num9KeyStyle"
-                latin:codes="57"
-                latin:keyIcon="@drawable/sym_bkeyboard_num9" />
-            <key-style
-                latin:styleName="numAltKeyStyle"
-                latin:codes="@integer/key_switch_alpha_symbol"
-                latin:keyIcon="@drawable/sym_bkeyboard_numalt"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_numalt" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:codes="@integer/key_space"
-                latin:keyIcon="@drawable/sym_bkeyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-    </switch>
+    <include
+        latin:keyboardLayout="@xml/kbd_numkey_styles" />
     <Row
         latin:rowEdgeFlags="top"
     >
diff --git a/java/res/xml/kbd_phone_symbols.xml b/java/res/xml/kbd_phone_symbols.xml
index 0d6d0e4071..1bb4bac74a 100644
--- a/java/res/xml/kbd_phone_symbols.xml
+++ b/java/res/xml/kbd_phone_symbols.xml
@@ -27,44 +27,8 @@
 >
     <include
         latin:keyboardLayout="@xml/kbd_key_styles" />
-    <switch>
-        <case
-            latin:colorScheme="white"
-        >
-            <key-style
-                latin:styleName="numStarKeyStyle"
-                latin:codes="42"
-                latin:keyIcon="@drawable/sym_keyboard_numstar"
-                latin:keyEdgeFlags="left" />
-            <key-style
-                latin:styleName="numPoundKeyStyle"
-                latin:codes="35"
-                latin:keyIcon="@drawable/sym_keyboard_numpound" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:codes="@integer/key_space"
-                latin:keyIcon="@drawable/sym_keyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-        <case
-            latin:colorScheme="black"
-        >
-            <key-style
-                latin:styleName="numStarKeyStyle"
-                latin:codes="42"
-                latin:keyIcon="@drawable/sym_bkeyboard_numstar"
-                latin:keyEdgeFlags="left" />
-            <key-style
-                latin:styleName="numPoundKeyStyle"
-                latin:codes="35"
-                latin:keyIcon="@drawable/sym_bkeyboard_numpound" />
-            <key-style
-                latin:styleName="numSpaceKeyStyle"
-                latin:codes="@integer/key_space"
-                latin:keyIcon="@drawable/sym_bkeyboard_space"
-                latin:iconPreview="@drawable/sym_keyboard_feedback_space" />
-        </case>
-    </switch>
+    <include
+        latin:keyboardLayout="@xml/kbd_numkey_styles" />
     <Row
         latin:rowEdgeFlags="top"
     >
diff --git a/java/src/com/android/inputmethod/latin/BaseKeyboard.java b/java/src/com/android/inputmethod/latin/BaseKeyboard.java
index 485cc3153f..00ed453c4e 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<Key> mShiftKeys = new ArrayList<Key>();
 
+    /** List of shift keys and its shifted state icon */
+    private final HashMap<Key, Drawable> mShiftedIcons = new HashMap<Key, Drawable>();
+
     /** 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<Key, Drawable> 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 621e875bff..38b2a1b57c 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<Key> keys)
@@ -310,6 +311,7 @@ public class BaseKeyboardParser {
             checkEndTag(TAG_INCLUDE, parser);
             if (keyboardLayout == 0)
                 throw new ParseException("No keyboardLayout attribute in <include/>", 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 129ff81a1c..954f264bdd 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<Integer, Integer> mTextHeightCache = new HashMap<Integer, Integer>();
-    // This map caches key label text width in pixel as value and key label text size as map key.
-    private final HashMap<Integer, Integer> mTextWidthCache = new HashMap<Integer, Integer>();
     // Distance from horizontal center of the key, proportional to key label text height and width.
     private 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 e53e351a3c..fceede7c3d 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 58958b6108..b08b97a810 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 c6e9116804..cae0b10b3e 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<Key, Drawable> mNormalShiftIcons = new HashMap<Key, Drawable>();
     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<Key, Drawable> 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<Key, Drawable> 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);
-- 
GitLab