Add keyHintIcon attribute to BaseKeyboard.Key class
This keyHintIcon attribute is used to specify hint icon drawable at top right corner of Key. Change-Id: Icaa91e63c4473b2513396bd3fbeb8ed6fd73586c
BIN
java/res/drawable-mdpi/keyboard_hint_at.9.png
Normal file
After Width: | Height: | Size: 1.2 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_colon.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_doublecross.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_exclamation.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_greater.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_plus.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_question.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_quote.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_smaller.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
BIN
java/res/drawable-mdpi/keyboard_hint_star.9.png
Normal file
After Width: | Height: | Size: 1.1 KiB |
|
@ -106,8 +106,12 @@
|
||||||
<attr name="keyOutputText" format="string" />
|
<attr name="keyOutputText" format="string" />
|
||||||
<!-- The label to display on the key. -->
|
<!-- The label to display on the key. -->
|
||||||
<attr name="keyLabel" format="string" />
|
<attr name="keyLabel" format="string" />
|
||||||
|
<!-- The label to display on the key when keyboard is in temporary shift mode. -->
|
||||||
|
<attr name="temporaryShiftKeyLabel" format="string" />
|
||||||
<!-- The icon to display on the key instead of the label. -->
|
<!-- The icon to display on the key instead of the label. -->
|
||||||
<attr name="keyIcon" format="reference" />
|
<attr name="keyIcon" format="reference" />
|
||||||
|
<!-- The hint icon to display on the key in conjunction with the label -->
|
||||||
|
<attr name="keyHintIcon" format="reference" />
|
||||||
<!-- Mode of the keyboard. If the mode doesn't match the
|
<!-- Mode of the keyboard. If the mode doesn't match the
|
||||||
requested keyboard mode, the key will be skipped. -->
|
requested keyboard mode, the key will be skipped. -->
|
||||||
<attr name="keyboardMode" />
|
<attr name="keyboardMode" />
|
||||||
|
|
|
@ -212,6 +212,8 @@
|
||||||
<string name="label_alpha_key">ABC</string>
|
<string name="label_alpha_key">ABC</string>
|
||||||
<!-- Label for ALT modifier key. Must be short to fit on key! -->
|
<!-- Label for ALT modifier key. Must be short to fit on key! -->
|
||||||
<string name="label_alt_key">ALT</string>
|
<string name="label_alt_key">ALT</string>
|
||||||
|
<!-- Label for Shift modifier key of symbol keyboard. Must be short to fit on key! -->
|
||||||
|
<string name="label_more_key">More</string>
|
||||||
|
|
||||||
<!-- Voice related labels -->
|
<!-- Voice related labels -->
|
||||||
|
|
||||||
|
|
|
@ -34,44 +34,54 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyWidth="8.75%p"
|
latin:keyWidth="8.75%p"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p" />
|
latin:popupCharacters="@string/alternates_for_p" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -34,44 +34,54 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyWidth="8.75%p"
|
latin:keyWidth="8.75%p"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p" />
|
latin:popupCharacters="@string/alternates_for_p" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -28,43 +28,53 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="z"
|
latin:keyLabel="z"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_z" />
|
latin:popupCharacters="@string/alternates_for_z" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p"
|
latin:popupCharacters="@string/alternates_for_p"
|
||||||
latin:keyEdgeFlags="right" />
|
latin:keyEdgeFlags="right" />
|
||||||
|
|
|
@ -28,43 +28,53 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="z"
|
latin:keyLabel="z"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_z" />
|
latin:popupCharacters="@string/alternates_for_z" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p"
|
latin:popupCharacters="@string/alternates_for_p"
|
||||||
latin:keyEdgeFlags="right" />
|
latin:keyEdgeFlags="right" />
|
||||||
|
|
|
@ -28,43 +28,53 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="a"
|
latin:keyLabel="a"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_a"
|
latin:popupCharacters="@string/alternates_for_a"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="z"
|
latin:keyLabel="z"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_z" />
|
latin:popupCharacters="@string/alternates_for_z" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p"
|
latin:popupCharacters="@string/alternates_for_p"
|
||||||
latin:keyEdgeFlags="right" />
|
latin:keyEdgeFlags="right" />
|
||||||
|
|
|
@ -28,43 +28,53 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="a"
|
latin:keyLabel="a"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_a"
|
latin:popupCharacters="@string/alternates_for_a"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="z"
|
latin:keyLabel="z"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_z" />
|
latin:popupCharacters="@string/alternates_for_z" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p"
|
latin:popupCharacters="@string/alternates_for_p"
|
||||||
latin:keyEdgeFlags="right" />
|
latin:keyEdgeFlags="right" />
|
||||||
|
|
|
@ -34,44 +34,54 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyWidth="8.75%p"
|
latin:keyWidth="8.75%p"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p" />
|
latin:popupCharacters="@string/alternates_for_p" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -34,44 +34,54 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyWidth="8.75%p"
|
latin:keyWidth="8.75%p"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p" />
|
latin:popupCharacters="@string/alternates_for_p" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -28,44 +28,54 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="й"
|
latin:keyLabel="й"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="1"
|
latin:popupCharacters="1"
|
||||||
latin:keyWidth="8.75%p"
|
latin:keyWidth="8.75%p"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="ц"
|
latin:keyLabel="ц"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="2" />
|
latin:popupCharacters="2" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="у"
|
latin:keyLabel="у"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="3" />
|
latin:popupCharacters="3" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="к"
|
latin:keyLabel="к"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="4" />
|
latin:popupCharacters="4" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="е"
|
latin:keyLabel="е"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_cyrillic_e" />
|
latin:popupCharacters="@string/alternates_for_cyrillic_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="н"
|
latin:keyLabel="н"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="6" />
|
latin:popupCharacters="6" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="г"
|
latin:keyLabel="г"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="7" />
|
latin:popupCharacters="7" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="ш"
|
latin:keyLabel="ш"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="8" />
|
latin:popupCharacters="8" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="щ"
|
latin:keyLabel="щ"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="9" />
|
latin:popupCharacters="9" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="з"
|
latin:keyLabel="з"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="0" />
|
latin:popupCharacters="0" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -28,44 +28,54 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="й"
|
latin:keyLabel="й"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="1"
|
latin:popupCharacters="1"
|
||||||
latin:keyWidth="8.75%p"
|
latin:keyWidth="8.75%p"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="ц"
|
latin:keyLabel="ц"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="2" />
|
latin:popupCharacters="2" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="у"
|
latin:keyLabel="у"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="3" />
|
latin:popupCharacters="3" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="к"
|
latin:keyLabel="к"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="4" />
|
latin:popupCharacters="4" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="е"
|
latin:keyLabel="е"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_cyrillic_e" />
|
latin:popupCharacters="@string/alternates_for_cyrillic_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="н"
|
latin:keyLabel="н"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="6" />
|
latin:popupCharacters="6" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="г"
|
latin:keyLabel="г"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="7" />
|
latin:popupCharacters="7" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="ш"
|
latin:keyLabel="ш"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="8" />
|
latin:popupCharacters="8" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="щ"
|
latin:keyLabel="щ"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="9" />
|
latin:popupCharacters="9" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="з"
|
latin:keyLabel="з"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="0" />
|
latin:popupCharacters="0" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -29,43 +29,53 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="љ"
|
latin:keyLabel="љ"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="1"
|
latin:popupCharacters="1"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="њ"
|
latin:keyLabel="њ"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="2" />
|
latin:popupCharacters="2" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="е"
|
latin:keyLabel="е"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="3" />
|
latin:popupCharacters="3" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="р"
|
latin:keyLabel="р"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="4" />
|
latin:popupCharacters="4" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="т"
|
latin:keyLabel="т"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="5" />
|
latin:popupCharacters="5" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="з"
|
latin:keyLabel="з"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="6" />
|
latin:popupCharacters="6" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="у"
|
latin:keyLabel="у"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="7" />
|
latin:popupCharacters="7" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="и"
|
latin:keyLabel="и"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="8" />
|
latin:popupCharacters="8" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="о"
|
latin:keyLabel="о"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="9" />
|
latin:popupCharacters="9" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="п"
|
latin:keyLabel="п"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="0" />
|
latin:popupCharacters="0" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -29,43 +29,53 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="љ"
|
latin:keyLabel="љ"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="1"
|
latin:popupCharacters="1"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="њ"
|
latin:keyLabel="њ"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="2" />
|
latin:popupCharacters="2" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="е"
|
latin:keyLabel="е"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="3" />
|
latin:popupCharacters="3" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="р"
|
latin:keyLabel="р"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="4" />
|
latin:popupCharacters="4" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="т"
|
latin:keyLabel="т"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="5" />
|
latin:popupCharacters="5" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="з"
|
latin:keyLabel="з"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="6" />
|
latin:popupCharacters="6" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="у"
|
latin:keyLabel="у"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="7" />
|
latin:popupCharacters="7" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="и"
|
latin:keyLabel="и"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="8" />
|
latin:popupCharacters="8" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="о"
|
latin:keyLabel="о"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="9" />
|
latin:popupCharacters="9" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="п"
|
latin:keyLabel="п"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="0" />
|
latin:popupCharacters="0" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -36,44 +36,54 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyWidth="8.75%p"
|
latin:keyWidth="8.75%p"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p" />
|
latin:popupCharacters="@string/alternates_for_p" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -36,44 +36,54 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyWidth="8.75%p"
|
latin:keyWidth="8.75%p"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p" />
|
latin:popupCharacters="@string/alternates_for_p" />
|
||||||
<Key
|
<Key
|
||||||
|
|
|
@ -30,49 +30,62 @@
|
||||||
<Key
|
<Key
|
||||||
latin:codes="@integer/key_tab"
|
latin:codes="@integer/key_tab"
|
||||||
latin:keyLabel="Tab"
|
latin:keyLabel="Tab"
|
||||||
|
latin:isModifier="true"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q" />
|
latin:popupCharacters="@string/alternates_for_q" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p" />
|
latin:popupCharacters="@string/alternates_for_p" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="="
|
latin:keyLabel="="
|
||||||
|
latin:temporaryShiftKeyLabel="+"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_plus"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="+" />
|
latin:popupCharacters="+" />
|
||||||
<Key
|
<Key
|
||||||
|
@ -121,10 +134,14 @@
|
||||||
latin:popupCharacters="@string/alternates_for_l" />
|
latin:popupCharacters="@string/alternates_for_l" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel=";"
|
latin:keyLabel=";"
|
||||||
|
latin:temporaryShiftKeyLabel=":"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_colon"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters=":" />
|
latin:popupCharacters=":" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="\'"
|
latin:keyLabel="\'"
|
||||||
|
latin:temporaryShiftKeyLabel="""
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_quote"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters=""" />
|
latin:popupCharacters=""" />
|
||||||
<Key
|
<Key
|
||||||
|
@ -168,14 +185,20 @@
|
||||||
latin:keyLabel="m" />
|
latin:keyLabel="m" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel=","
|
latin:keyLabel=","
|
||||||
|
latin:temporaryShiftKeyLabel="*"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_star"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="*" />
|
latin:popupCharacters="*" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="."
|
latin:keyLabel="."
|
||||||
|
latin:temporaryShiftKeyLabel="!"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_exclamation"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="!" />
|
latin:popupCharacters="!" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="/"
|
latin:keyLabel="/"
|
||||||
|
latin:temporaryShiftKeyLabel="\?"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_question"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="\?" />
|
latin:popupCharacters="\?" />
|
||||||
<Key
|
<Key
|
||||||
|
@ -191,11 +214,15 @@
|
||||||
<!-- This row is intentionally not marked as a bottom row -->
|
<!-- This row is intentionally not marked as a bottom row -->
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="("
|
latin:keyLabel="("
|
||||||
|
latin:temporaryShiftKeyLabel="<"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_smaller"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="<"
|
latin:popupCharacters="<"
|
||||||
latin:horizontalGap="16.25%p" />
|
latin:horizontalGap="16.25%p" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel=")"
|
latin:keyLabel=")"
|
||||||
|
latin:temporaryShiftKeyLabel=">"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_greater"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters=">" />
|
latin:popupCharacters=">" />
|
||||||
<Key
|
<Key
|
||||||
|
@ -206,10 +233,14 @@
|
||||||
latin:isModifier="true" />
|
latin:isModifier="true" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="_"
|
latin:keyLabel="_"
|
||||||
|
latin:temporaryShiftKeyLabel="\@"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_at"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="\@" />
|
latin:popupCharacters="\@" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="-"
|
latin:keyLabel="-"
|
||||||
|
latin:temporaryShiftKeyLabel="#"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_doublecross"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="#" />
|
latin:popupCharacters="#" />
|
||||||
</Row>
|
</Row>
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
<Key
|
<Key
|
||||||
latin:codes="@integer/key_tab"
|
latin:codes="@integer/key_tab"
|
||||||
latin:keyLabel="Tab"
|
latin:keyLabel="Tab"
|
||||||
|
latin:isModifier="true"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="1" />
|
latin:keyLabel="1" />
|
||||||
|
@ -102,7 +103,7 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:codes="@integer/key_shift"
|
latin:codes="@integer/key_shift"
|
||||||
latin:keyIcon="@drawable/sym_keyboard_shift"
|
latin:keyLabel="@string/label_more_key"
|
||||||
latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
|
latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
|
||||||
latin:keyWidth="12.5%p"
|
latin:keyWidth="12.5%p"
|
||||||
latin:isModifier="true"
|
latin:isModifier="true"
|
||||||
|
@ -130,7 +131,7 @@
|
||||||
latin:keyLabel="\?" />
|
latin:keyLabel="\?" />
|
||||||
<Key
|
<Key
|
||||||
latin:codes="@integer/key_shift"
|
latin:codes="@integer/key_shift"
|
||||||
latin:keyIcon="@drawable/sym_keyboard_shift"
|
latin:keyLabel="@string/label_more_key"
|
||||||
latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
|
latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
|
||||||
latin:keyWidth="12.5%p"
|
latin:keyWidth="12.5%p"
|
||||||
latin:isModifier="true"
|
latin:isModifier="true"
|
||||||
|
|
|
@ -30,6 +30,7 @@
|
||||||
<Key
|
<Key
|
||||||
latin:codes="@integer/key_tab"
|
latin:codes="@integer/key_tab"
|
||||||
latin:keyLabel="Tab"
|
latin:keyLabel="Tab"
|
||||||
|
latin:isModifier="true"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="∞" />
|
latin:keyLabel="∞" />
|
||||||
|
@ -102,7 +103,7 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:codes="@integer/key_shift"
|
latin:codes="@integer/key_shift"
|
||||||
latin:keyIcon="@drawable/sym_keyboard_shift"
|
latin:keyLabel="@string/label_more_key"
|
||||||
latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
|
latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
|
||||||
latin:keyWidth="12.5%p"
|
latin:keyWidth="12.5%p"
|
||||||
latin:isModifier="true"
|
latin:isModifier="true"
|
||||||
|
@ -130,7 +131,7 @@
|
||||||
latin:keyLabel="¿" />
|
latin:keyLabel="¿" />
|
||||||
<Key
|
<Key
|
||||||
latin:codes="@integer/key_shift"
|
latin:codes="@integer/key_shift"
|
||||||
latin:keyIcon="@drawable/sym_keyboard_shift"
|
latin:keyLabel="@string/label_more_key"
|
||||||
latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
|
latin:iconPreview="@drawable/sym_keyboard_feedback_shift"
|
||||||
latin:keyWidth="12.5%p"
|
latin:keyWidth="12.5%p"
|
||||||
latin:isModifier="true"
|
latin:isModifier="true"
|
||||||
|
|
|
@ -28,43 +28,53 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p"
|
latin:popupCharacters="@string/alternates_for_p"
|
||||||
latin:keyEdgeFlags="right" />
|
latin:keyEdgeFlags="right" />
|
||||||
|
|
|
@ -28,43 +28,53 @@
|
||||||
<Row>
|
<Row>
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="q"
|
latin:keyLabel="q"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_1"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_q"
|
latin:popupCharacters="@string/alternates_for_q"
|
||||||
latin:keyEdgeFlags="left" />
|
latin:keyEdgeFlags="left" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="w"
|
latin:keyLabel="w"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_2"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_w" />
|
latin:popupCharacters="@string/alternates_for_w" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="e"
|
latin:keyLabel="e"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_3"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_e" />
|
latin:popupCharacters="@string/alternates_for_e" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="r"
|
latin:keyLabel="r"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_4"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_r" />
|
latin:popupCharacters="@string/alternates_for_r" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="t"
|
latin:keyLabel="t"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_5"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_t" />
|
latin:popupCharacters="@string/alternates_for_t" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="y"
|
latin:keyLabel="y"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_6"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_y" />
|
latin:popupCharacters="@string/alternates_for_y" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="u"
|
latin:keyLabel="u"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_7"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_u" />
|
latin:popupCharacters="@string/alternates_for_u" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="i"
|
latin:keyLabel="i"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_8"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_i" />
|
latin:popupCharacters="@string/alternates_for_i" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="o"
|
latin:keyLabel="o"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_9"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_o" />
|
latin:popupCharacters="@string/alternates_for_o" />
|
||||||
<Key
|
<Key
|
||||||
latin:keyLabel="p"
|
latin:keyLabel="p"
|
||||||
|
latin:keyHintIcon="@drawable/keyboard_hint_0"
|
||||||
latin:popupKeyboard="@xml/kbd_popup_template"
|
latin:popupKeyboard="@xml/kbd_popup_template"
|
||||||
latin:popupCharacters="@string/alternates_for_p"
|
latin:popupCharacters="@string/alternates_for_p"
|
||||||
latin:keyEdgeFlags="right" />
|
latin:keyEdgeFlags="right" />
|
||||||
|
|
|
@ -194,9 +194,13 @@ public class BaseKeyboard {
|
||||||
|
|
||||||
/** Label to display */
|
/** Label to display */
|
||||||
public CharSequence label;
|
public CharSequence label;
|
||||||
|
/** Label to display when keyboard is in temporary shift mode */
|
||||||
|
public CharSequence temporaryShiftLabel;
|
||||||
|
|
||||||
/** Icon to display instead of a label. Icon takes precedence over a label */
|
/** Icon to display instead of a label. Icon takes precedence over a label */
|
||||||
public Drawable icon;
|
public Drawable icon;
|
||||||
|
/** Hint icon to display on the key in conjunction with the label */
|
||||||
|
public Drawable hintIcon;
|
||||||
/** Preview version of the icon, for the preview popup */
|
/** Preview version of the icon, for the preview popup */
|
||||||
public Drawable iconPreview;
|
public Drawable iconPreview;
|
||||||
/** Width of the key, not including the gap */
|
/** Width of the key, not including the gap */
|
||||||
|
@ -294,22 +298,17 @@ public class BaseKeyboard {
|
||||||
TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
|
TypedArray a = res.obtainAttributes(Xml.asAttributeSet(parser),
|
||||||
R.styleable.BaseKeyboard);
|
R.styleable.BaseKeyboard);
|
||||||
|
|
||||||
width = getDimensionOrFraction(a,
|
width = getDimensionOrFraction(a, R.styleable.BaseKeyboard_keyWidth,
|
||||||
R.styleable.BaseKeyboard_keyWidth,
|
|
||||||
keyboard.mDisplayWidth, parent.defaultWidth);
|
keyboard.mDisplayWidth, parent.defaultWidth);
|
||||||
height = getDimensionOrFraction(a,
|
height = getDimensionOrFraction(a, R.styleable.BaseKeyboard_keyHeight,
|
||||||
R.styleable.BaseKeyboard_keyHeight,
|
|
||||||
keyboard.mDisplayHeight, parent.defaultHeight);
|
keyboard.mDisplayHeight, parent.defaultHeight);
|
||||||
gap = getDimensionOrFraction(a,
|
gap = getDimensionOrFraction(a, R.styleable.BaseKeyboard_horizontalGap,
|
||||||
R.styleable.BaseKeyboard_horizontalGap,
|
|
||||||
keyboard.mDisplayWidth, parent.defaultHorizontalGap);
|
keyboard.mDisplayWidth, parent.defaultHorizontalGap);
|
||||||
a.recycle();
|
a.recycle();
|
||||||
a = res.obtainAttributes(Xml.asAttributeSet(parser),
|
a = res.obtainAttributes(Xml.asAttributeSet(parser), R.styleable.BaseKeyboard_Key);
|
||||||
R.styleable.BaseKeyboard_Key);
|
|
||||||
this.x += gap;
|
this.x += gap;
|
||||||
TypedValue codesValue = new TypedValue();
|
TypedValue codesValue = new TypedValue();
|
||||||
a.getValue(R.styleable.BaseKeyboard_Key_codes,
|
a.getValue(R.styleable.BaseKeyboard_Key_codes, codesValue);
|
||||||
codesValue);
|
|
||||||
if (codesValue.type == TypedValue.TYPE_INT_DEC
|
if (codesValue.type == TypedValue.TYPE_INT_DEC
|
||||||
|| codesValue.type == TypedValue.TYPE_INT_HEX) {
|
|| codesValue.type == TypedValue.TYPE_INT_HEX) {
|
||||||
codes = new int[] { codesValue.data };
|
codes = new int[] { codesValue.data };
|
||||||
|
@ -318,29 +317,22 @@ public class BaseKeyboard {
|
||||||
}
|
}
|
||||||
|
|
||||||
iconPreview = a.getDrawable(R.styleable.BaseKeyboard_Key_iconPreview);
|
iconPreview = a.getDrawable(R.styleable.BaseKeyboard_Key_iconPreview);
|
||||||
if (iconPreview != null) {
|
setDefaultBounds(iconPreview);
|
||||||
iconPreview.setBounds(0, 0, iconPreview.getIntrinsicWidth(),
|
popupCharacters = a.getText(R.styleable.BaseKeyboard_Key_popupCharacters);
|
||||||
iconPreview.getIntrinsicHeight());
|
popupResId = a.getResourceId(R.styleable.BaseKeyboard_Key_popupKeyboard, 0);
|
||||||
}
|
repeatable = a.getBoolean(R.styleable.BaseKeyboard_Key_isRepeatable, false);
|
||||||
popupCharacters = a.getText(
|
modifier = a.getBoolean(R.styleable.BaseKeyboard_Key_isModifier, false);
|
||||||
R.styleable.BaseKeyboard_Key_popupCharacters);
|
sticky = a.getBoolean(R.styleable.BaseKeyboard_Key_isSticky, false);
|
||||||
popupResId = a.getResourceId(
|
|
||||||
R.styleable.BaseKeyboard_Key_popupKeyboard, 0);
|
|
||||||
repeatable = a.getBoolean(
|
|
||||||
R.styleable.BaseKeyboard_Key_isRepeatable, false);
|
|
||||||
modifier = a.getBoolean(
|
|
||||||
R.styleable.BaseKeyboard_Key_isModifier, false);
|
|
||||||
sticky = a.getBoolean(
|
|
||||||
R.styleable.BaseKeyboard_Key_isSticky, false);
|
|
||||||
edgeFlags = a.getInt(R.styleable.BaseKeyboard_Key_keyEdgeFlags, 0);
|
edgeFlags = a.getInt(R.styleable.BaseKeyboard_Key_keyEdgeFlags, 0);
|
||||||
edgeFlags |= parent.rowEdgeFlags;
|
edgeFlags |= parent.rowEdgeFlags;
|
||||||
|
|
||||||
icon = a.getDrawable(
|
icon = a.getDrawable(R.styleable.BaseKeyboard_Key_keyIcon);
|
||||||
R.styleable.BaseKeyboard_Key_keyIcon);
|
setDefaultBounds(icon);
|
||||||
if (icon != null) {
|
hintIcon = a.getDrawable(R.styleable.BaseKeyboard_Key_keyHintIcon);
|
||||||
icon.setBounds(0, 0, icon.getIntrinsicWidth(), icon.getIntrinsicHeight());
|
setDefaultBounds(hintIcon);
|
||||||
}
|
|
||||||
label = a.getText(R.styleable.BaseKeyboard_Key_keyLabel);
|
label = a.getText(R.styleable.BaseKeyboard_Key_keyLabel);
|
||||||
|
temporaryShiftLabel = a.getText(R.styleable.BaseKeyboard_Key_temporaryShiftKeyLabel);
|
||||||
text = a.getText(R.styleable.BaseKeyboard_Key_keyOutputText);
|
text = a.getText(R.styleable.BaseKeyboard_Key_keyOutputText);
|
||||||
|
|
||||||
if (codes == null && !TextUtils.isEmpty(label)) {
|
if (codes == null && !TextUtils.isEmpty(label)) {
|
||||||
|
@ -679,10 +671,12 @@ public class BaseKeyboard {
|
||||||
return new int[0];
|
return new int[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO should be private
|
||||||
protected Row createRowFromXml(Resources res, XmlResourceParser parser) {
|
protected Row createRowFromXml(Resources res, XmlResourceParser parser) {
|
||||||
return new Row(res, this, parser);
|
return new Row(res, this, parser);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO should be private
|
||||||
protected Key createKeyFromXml(Resources res, Row parent, int x, int y,
|
protected Key createKeyFromXml(Resources res, Row parent, int x, int y,
|
||||||
XmlResourceParser parser) {
|
XmlResourceParser parser) {
|
||||||
return new Key(res, parent, x, y, parser);
|
return new Key(res, parent, x, y, parser);
|
||||||
|
@ -707,6 +701,7 @@ public class BaseKeyboard {
|
||||||
if (TAG_ROW.equals(tag)) {
|
if (TAG_ROW.equals(tag)) {
|
||||||
inRow = true;
|
inRow = true;
|
||||||
x = 0;
|
x = 0;
|
||||||
|
// TODO createRowFromXml should not be called from BaseKeyboard constructor.
|
||||||
currentRow = createRowFromXml(res, parser);
|
currentRow = createRowFromXml(res, parser);
|
||||||
skipRow = currentRow.mode != 0 && currentRow.mode != mKeyboardMode;
|
skipRow = currentRow.mode != 0 && currentRow.mode != mKeyboardMode;
|
||||||
if (skipRow) {
|
if (skipRow) {
|
||||||
|
@ -715,6 +710,7 @@ public class BaseKeyboard {
|
||||||
}
|
}
|
||||||
} else if (TAG_KEY.equals(tag)) {
|
} else if (TAG_KEY.equals(tag)) {
|
||||||
inKey = true;
|
inKey = true;
|
||||||
|
// TODO createKeyFromXml should not be called from BaseKeyboard constructor.
|
||||||
key = createKeyFromXml(res, currentRow, x, y, parser);
|
key = createKeyFromXml(res, currentRow, x, y, parser);
|
||||||
mKeys.add(key);
|
mKeys.add(key);
|
||||||
if (key.codes[0] == KEYCODE_SHIFT) {
|
if (key.codes[0] == KEYCODE_SHIFT) {
|
||||||
|
@ -793,4 +789,10 @@ public class BaseKeyboard {
|
||||||
}
|
}
|
||||||
return defValue;
|
return defValue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected static void setDefaultBounds(Drawable drawable) {
|
||||||
|
if (drawable != null)
|
||||||
|
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(),
|
||||||
|
drawable.getIntrinsicHeight());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -62,9 +62,6 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
private Key mF1Key;
|
private Key mF1Key;
|
||||||
private Key mSpaceKey;
|
private Key mSpaceKey;
|
||||||
private Key m123Key;
|
private Key m123Key;
|
||||||
private final int NUMBER_HINT_COUNT = 10;
|
|
||||||
private Key[] mNumberHintKeys;
|
|
||||||
private Drawable[] mNumberHintIcons = new Drawable[NUMBER_HINT_COUNT];
|
|
||||||
private int mSpaceKeyIndex = -1;
|
private int mSpaceKeyIndex = -1;
|
||||||
private int mSpaceDragStartX;
|
private int mSpaceDragStartX;
|
||||||
private int mSpaceDragLastDiff;
|
private int mSpaceDragLastDiff;
|
||||||
|
@ -119,9 +116,7 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
mRes = res;
|
mRes = res;
|
||||||
mShiftLockIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked);
|
mShiftLockIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked);
|
||||||
mShiftLockPreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_shift_locked);
|
mShiftLockPreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_shift_locked);
|
||||||
mShiftLockPreviewIcon.setBounds(0, 0,
|
setDefaultBounds(mShiftLockPreviewIcon);
|
||||||
mShiftLockPreviewIcon.getIntrinsicWidth(),
|
|
||||||
mShiftLockPreviewIcon.getIntrinsicHeight());
|
|
||||||
mSpaceIcon = res.getDrawable(R.drawable.sym_keyboard_space);
|
mSpaceIcon = res.getDrawable(R.drawable.sym_keyboard_space);
|
||||||
mSpaceAutoCompletionIndicator = res.getDrawable(R.drawable.sym_keyboard_space_led);
|
mSpaceAutoCompletionIndicator = res.getDrawable(R.drawable.sym_keyboard_space_led);
|
||||||
mSpacePreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_space);
|
mSpacePreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_space);
|
||||||
|
@ -138,37 +133,11 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty
|
mIsAlphaKeyboard = xmlLayoutResId == R.xml.kbd_qwerty
|
||||||
|| xmlLayoutResId == R.xml.kbd_qwerty_black;
|
|| xmlLayoutResId == R.xml.kbd_qwerty_black;
|
||||||
mSpaceKeyIndex = indexOf(LatinIME.KEYCODE_SPACE);
|
mSpaceKeyIndex = indexOf(LatinIME.KEYCODE_SPACE);
|
||||||
initializeNumberHintResources(context);
|
|
||||||
}
|
|
||||||
|
|
||||||
private void initializeNumberHintResources(Context context) {
|
|
||||||
final Resources res = context.getResources();
|
|
||||||
mNumberHintIcons[0] = res.getDrawable(R.drawable.keyboard_hint_0);
|
|
||||||
mNumberHintIcons[1] = res.getDrawable(R.drawable.keyboard_hint_1);
|
|
||||||
mNumberHintIcons[2] = res.getDrawable(R.drawable.keyboard_hint_2);
|
|
||||||
mNumberHintIcons[3] = res.getDrawable(R.drawable.keyboard_hint_3);
|
|
||||||
mNumberHintIcons[4] = res.getDrawable(R.drawable.keyboard_hint_4);
|
|
||||||
mNumberHintIcons[5] = res.getDrawable(R.drawable.keyboard_hint_5);
|
|
||||||
mNumberHintIcons[6] = res.getDrawable(R.drawable.keyboard_hint_6);
|
|
||||||
mNumberHintIcons[7] = res.getDrawable(R.drawable.keyboard_hint_7);
|
|
||||||
mNumberHintIcons[8] = res.getDrawable(R.drawable.keyboard_hint_8);
|
|
||||||
mNumberHintIcons[9] = res.getDrawable(R.drawable.keyboard_hint_9);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: delete this method and do initialization in constructor.
|
|
||||||
private void initializeMemberVariablesAsNeeded() {
|
|
||||||
if (mNumberHintKeys == null)
|
|
||||||
mNumberHintKeys = new Key[NUMBER_HINT_COUNT];
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected Key createKeyFromXml(Resources res, Row parent, int x, int y,
|
protected Key createKeyFromXml(Resources res, Row parent, int x, int y,
|
||||||
XmlResourceParser parser) {
|
XmlResourceParser parser) {
|
||||||
// TODO: This initialization is needed because this protected method is being called from
|
|
||||||
// the base class constructor before this class constructor gets called. We need to fix
|
|
||||||
// this.
|
|
||||||
initializeMemberVariablesAsNeeded();
|
|
||||||
|
|
||||||
Key key = new LatinKey(res, parent, x, y, parser);
|
Key key = new LatinKey(res, parent, x, y, parser);
|
||||||
switch (key.codes[0]) {
|
switch (key.codes[0]) {
|
||||||
case LatinIME.KEYCODE_ENTER:
|
case LatinIME.KEYCODE_ENTER:
|
||||||
|
@ -186,17 +155,6 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// For number hints on the upper-right corner of key
|
|
||||||
int hintNumber = -1;
|
|
||||||
if (LatinKeyboardBaseView.isNumberAtLeftmostPopupChar(key)) {
|
|
||||||
hintNumber = key.popupCharacters.charAt(0) - '0';
|
|
||||||
} else if (LatinKeyboardBaseView.isNumberAtRightmostPopupChar(key)) {
|
|
||||||
hintNumber = key.popupCharacters.charAt(key.popupCharacters.length() - 1) - '0';
|
|
||||||
}
|
|
||||||
if (hintNumber >= 0 && hintNumber <= 9) {
|
|
||||||
mNumberHintKeys[hintNumber] = key;
|
|
||||||
}
|
|
||||||
|
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -251,11 +209,7 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
// Set the initial size of the preview icon
|
// Set the initial size of the preview icon
|
||||||
if (mEnterKey.iconPreview != null) {
|
setDefaultBounds(mEnterKey.iconPreview);
|
||||||
mEnterKey.iconPreview.setBounds(0, 0,
|
|
||||||
mEnterKey.iconPreview.getIntrinsicWidth(),
|
|
||||||
mEnterKey.iconPreview.getIntrinsicHeight());
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -279,7 +233,7 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
public boolean isShiftLocked() {
|
public boolean isShiftLocked() {
|
||||||
return mShiftState == SHIFT_LOCKED;
|
return mShiftState == SHIFT_LOCKED;
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public boolean setShifted(boolean shiftState) {
|
public boolean setShifted(boolean shiftState) {
|
||||||
boolean shiftChanged = false;
|
boolean shiftChanged = false;
|
||||||
|
@ -314,6 +268,10 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isTemporaryUpperCase() {
|
||||||
|
return mIsAlphaKeyboard && isShifted() && !isShiftLocked();
|
||||||
|
}
|
||||||
|
|
||||||
/* package */ boolean isAlphaKeyboard() {
|
/* package */ boolean isAlphaKeyboard() {
|
||||||
return mIsAlphaKeyboard;
|
return mIsAlphaKeyboard;
|
||||||
}
|
}
|
||||||
|
@ -335,11 +293,6 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
if (mSpaceKey != null) {
|
if (mSpaceKey != null) {
|
||||||
updateSpaceBarForLocale(isAutoCompletion, isBlack);
|
updateSpaceBarForLocale(isAutoCompletion, isBlack);
|
||||||
}
|
}
|
||||||
updateNumberHintKeys();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void setDefaultBounds(Drawable drawable) {
|
|
||||||
drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setVoiceMode(boolean hasVoiceButton, boolean hasVoice) {
|
public void setVoiceMode(boolean hasVoiceButton, boolean hasVoice) {
|
||||||
|
@ -385,14 +338,6 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
return mSpaceKey;
|
return mSpaceKey;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateNumberHintKeys() {
|
|
||||||
for (int i = 0; i < mNumberHintKeys.length; ++i) {
|
|
||||||
if (mNumberHintKeys[i] != null) {
|
|
||||||
mNumberHintKeys[i].icon = mNumberHintIcons[i];
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isLanguageSwitchEnabled() {
|
public boolean isLanguageSwitchEnabled() {
|
||||||
return mLocale != null;
|
return mLocale != null;
|
||||||
}
|
}
|
||||||
|
@ -828,8 +773,7 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
|
|
||||||
public SlidingLocaleDrawable(Drawable background, int width, int height) {
|
public SlidingLocaleDrawable(Drawable background, int width, int height) {
|
||||||
mBackground = background;
|
mBackground = background;
|
||||||
mBackground.setBounds(0, 0,
|
setDefaultBounds(mBackground);
|
||||||
mBackground.getIntrinsicWidth(), mBackground.getIntrinsicHeight());
|
|
||||||
mWidth = width;
|
mWidth = width;
|
||||||
mHeight = height;
|
mHeight = height;
|
||||||
mTextPaint = new TextPaint();
|
mTextPaint = new TextPaint();
|
||||||
|
@ -887,7 +831,7 @@ public class LatinKeyboard extends BaseKeyboard {
|
||||||
canvas.drawText(mNextLanguage, diff - width / 2, baseline, paint);
|
canvas.drawText(mNextLanguage, diff - width / 2, baseline, paint);
|
||||||
canvas.drawText(mPrevLanguage, diff + width + width / 2, baseline, paint);
|
canvas.drawText(mPrevLanguage, diff + width + width / 2, baseline, paint);
|
||||||
|
|
||||||
lArrow.setBounds(0, 0, lArrow.getIntrinsicWidth(), lArrow.getIntrinsicHeight());
|
setDefaultBounds(lArrow);
|
||||||
rArrow.setBounds(width - rArrow.getIntrinsicWidth(), 0, width,
|
rArrow.setBounds(width - rArrow.getIntrinsicWidth(), 0, width,
|
||||||
rArrow.getIntrinsicHeight());
|
rArrow.getIntrinsicHeight());
|
||||||
lArrow.draw(canvas);
|
lArrow.draw(canvas);
|
||||||
|
|
|
@ -578,7 +578,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
|
||||||
mKeys = mKeyDetector.setKeyboard(keyboard, -getPaddingLeft(),
|
mKeys = mKeyDetector.setKeyboard(keyboard, -getPaddingLeft(),
|
||||||
-getPaddingTop() + mVerticalCorrection);
|
-getPaddingTop() + mVerticalCorrection);
|
||||||
for (PointerTracker tracker : mPointerTrackers) {
|
for (PointerTracker tracker : mPointerTrackers) {
|
||||||
tracker.setKeyboard(mKeys, mKeyHysteresisDistance);
|
tracker.setKeyboard(keyboard, mKeys, mKeyHysteresisDistance);
|
||||||
}
|
}
|
||||||
requestLayout();
|
requestLayout();
|
||||||
// Hint to reallocate the buffer if the size changed
|
// Hint to reallocate the buffer if the size changed
|
||||||
|
@ -802,8 +802,19 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
|
||||||
canvas.translate(key.x + kbdPaddingLeft, key.y + kbdPaddingTop);
|
canvas.translate(key.x + kbdPaddingLeft, key.y + kbdPaddingTop);
|
||||||
keyBackground.draw(canvas);
|
keyBackground.draw(canvas);
|
||||||
|
|
||||||
boolean shouldDrawIcon = true;
|
boolean drawHintIcon = true;
|
||||||
if (label != null) {
|
if (label != null) {
|
||||||
|
// If keyboard is multi-touch capable and in temporary upper case state and key has
|
||||||
|
// tempoarary shift label, label should be hint character and hint icon should not
|
||||||
|
// be drawn.
|
||||||
|
if (mHasDistinctMultitouch
|
||||||
|
&& mKeyboard instanceof LatinKeyboard
|
||||||
|
&& ((LatinKeyboard)mKeyboard).isTemporaryUpperCase()
|
||||||
|
&& key.temporaryShiftLabel != null) {
|
||||||
|
label = key.temporaryShiftLabel.toString();
|
||||||
|
drawHintIcon = false;
|
||||||
|
}
|
||||||
|
|
||||||
// For characters, use large font. For labels like "Done", use small font.
|
// For characters, use large font. For labels like "Done", use small font.
|
||||||
if (label.length() > 1 && key.codes.length < 2) {
|
if (label.length() > 1 && key.codes.length < 2) {
|
||||||
paint.setTextSize(mLabelTextSize);
|
paint.setTextSize(mLabelTextSize);
|
||||||
|
@ -823,25 +834,26 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
|
||||||
paint);
|
paint);
|
||||||
// Turn off drop shadow
|
// Turn off drop shadow
|
||||||
paint.setShadowLayer(0, 0, 0, 0);
|
paint.setShadowLayer(0, 0, 0, 0);
|
||||||
|
|
||||||
// Usually don't draw icon if label is not null, but we draw icon for the number
|
|
||||||
// hint.
|
|
||||||
shouldDrawIcon = isNumberAtEdgeOfPopupChars(key);
|
|
||||||
}
|
}
|
||||||
if (key.icon != null && shouldDrawIcon) {
|
Drawable icon = null;
|
||||||
// Special handing for the upper-right number hint icons
|
if (key.label == null && key.icon != null)
|
||||||
final int drawableWidth = isNumberAtEdgeOfPopupChars(key) ?
|
icon = key.icon;
|
||||||
key.width : key.icon.getIntrinsicWidth();
|
if (icon == null && key.hintIcon != null && drawHintIcon)
|
||||||
final int drawableHeight = isNumberAtEdgeOfPopupChars(key) ?
|
icon = key.hintIcon;
|
||||||
key.height : key.icon.getIntrinsicHeight();
|
if (icon != null) {
|
||||||
|
// Hack for key hint icon displaying at the top right corner of the key.
|
||||||
|
final int drawableWidth = icon == key.hintIcon
|
||||||
|
? key.width : icon.getIntrinsicWidth();
|
||||||
|
final int drawableHeight = icon == key.hintIcon
|
||||||
|
? key.height : icon.getIntrinsicHeight();
|
||||||
|
|
||||||
final int drawableX = (key.width - padding.left - padding.right
|
final int drawableX = (key.width - padding.left - padding.right
|
||||||
- drawableWidth) / 2 + padding.left;
|
- drawableWidth) / 2 + padding.left;
|
||||||
final int drawableY = (key.height - padding.top - padding.bottom
|
final int drawableY = (key.height - padding.top - padding.bottom
|
||||||
- drawableHeight) / 2 + padding.top;
|
- drawableHeight) / 2 + padding.top;
|
||||||
canvas.translate(drawableX, drawableY);
|
canvas.translate(drawableX, drawableY);
|
||||||
key.icon.setBounds(0, 0, drawableWidth, drawableHeight);
|
icon.setBounds(0, 0, drawableWidth, drawableHeight);
|
||||||
key.icon.draw(canvas);
|
icon.draw(canvas);
|
||||||
canvas.translate(-drawableX, -drawableY);
|
canvas.translate(-drawableX, -drawableY);
|
||||||
}
|
}
|
||||||
canvas.translate(-key.x - kbdPaddingLeft, -key.y - kbdPaddingTop);
|
canvas.translate(-key.x - kbdPaddingLeft, -key.y - kbdPaddingTop);
|
||||||
|
@ -906,16 +918,18 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// TODO Must fix popup preview on xlarge layout
|
||||||
private void showKey(final int keyIndex, PointerTracker tracker) {
|
private void showKey(final int keyIndex, PointerTracker tracker) {
|
||||||
Key key = tracker.getKey(keyIndex);
|
Key key = tracker.getKey(keyIndex);
|
||||||
if (key == null)
|
if (key == null)
|
||||||
return;
|
return;
|
||||||
// Should not draw number hint icons
|
// Should not draw number hint icons
|
||||||
if (key.icon != null && !isNumberAtEdgeOfPopupChars(key)) {
|
if (key.icon != null && key.label == null) {
|
||||||
mPreviewText.setCompoundDrawables(null, null, null,
|
mPreviewText.setCompoundDrawables(null, null, null,
|
||||||
key.iconPreview != null ? key.iconPreview : key.icon);
|
key.iconPreview != null ? key.iconPreview : key.icon);
|
||||||
mPreviewText.setText(null);
|
mPreviewText.setText(null);
|
||||||
} else {
|
} else {
|
||||||
|
// TODO Should take care of temporaryShiftLabel here.
|
||||||
mPreviewText.setCompoundDrawables(null, null, null, null);
|
mPreviewText.setCompoundDrawables(null, null, null, null);
|
||||||
mPreviewText.setText(adjustCase(tracker.getPreviewText(key)));
|
mPreviewText.setText(adjustCase(tracker.getPreviewText(key)));
|
||||||
if (key.label.length() > 1 && key.codes.length < 2) {
|
if (key.label.length() > 1 && key.codes.length < 2) {
|
||||||
|
@ -997,7 +1011,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
|
||||||
* Invalidates a key so that it will be redrawn on the next repaint. Use this method if only
|
* Invalidates a key so that it will be redrawn on the next repaint. Use this method if only
|
||||||
* one key is changing it's content. Any changes that affect the position or size of the key
|
* one key is changing it's content. Any changes that affect the position or size of the key
|
||||||
* may not be honored.
|
* may not be honored.
|
||||||
* @param key key in the attached {@link Keyboard}.
|
* @param key key in the attached {@link BaseKeyboard}.
|
||||||
* @see #invalidateAllKeys
|
* @see #invalidateAllKeys
|
||||||
*/
|
*/
|
||||||
public void invalidateKey(Key key) {
|
public void invalidateKey(Key key) {
|
||||||
|
@ -1182,11 +1196,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
private static boolean isNumberAtEdgeOfPopupChars(Key key) {
|
private static boolean isNumberAtLeftmostPopupChar(Key key) {
|
||||||
return isNumberAtLeftmostPopupChar(key) || isNumberAtRightmostPopupChar(key);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* package */ static boolean isNumberAtLeftmostPopupChar(Key key) {
|
|
||||||
if (key.popupCharacters != null && key.popupCharacters.length() > 0
|
if (key.popupCharacters != null && key.popupCharacters.length() > 0
|
||||||
&& isAsciiDigit(key.popupCharacters.charAt(0))) {
|
&& isAsciiDigit(key.popupCharacters.charAt(0))) {
|
||||||
return true;
|
return true;
|
||||||
|
@ -1194,14 +1204,6 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* package */ static boolean isNumberAtRightmostPopupChar(Key key) {
|
|
||||||
if (key.popupCharacters != null && key.popupCharacters.length() > 0
|
|
||||||
&& isAsciiDigit(key.popupCharacters.charAt(key.popupCharacters.length() - 1))) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
private static boolean isAsciiDigit(char c) {
|
private static boolean isAsciiDigit(char c) {
|
||||||
return (c < 0x80) && Character.isDigit(c);
|
return (c < 0x80) && Character.isDigit(c);
|
||||||
}
|
}
|
||||||
|
@ -1221,7 +1223,7 @@ public class LatinKeyboardBaseView extends View implements PointerTracker.UIProx
|
||||||
final PointerTracker tracker =
|
final PointerTracker tracker =
|
||||||
new PointerTracker(i, mHandler, mKeyDetector, this, mHasDistinctMultitouch);
|
new PointerTracker(i, mHandler, mKeyDetector, this, mHasDistinctMultitouch);
|
||||||
if (keys != null)
|
if (keys != null)
|
||||||
tracker.setKeyboard(keys, mKeyHysteresisDistance);
|
tracker.setKeyboard(mKeyboard, keys, mKeyHysteresisDistance);
|
||||||
if (listener != null)
|
if (listener != null)
|
||||||
tracker.setOnKeyboardActionListener(listener);
|
tracker.setOnKeyboardActionListener(listener);
|
||||||
pointers.add(tracker);
|
pointers.add(tracker);
|
||||||
|
|
|
@ -109,9 +109,9 @@ public class LatinKeyboardView extends LatinKeyboardBaseView {
|
||||||
@Override
|
@Override
|
||||||
protected CharSequence adjustCase(CharSequence label) {
|
protected CharSequence adjustCase(CharSequence label) {
|
||||||
BaseKeyboard keyboard = getKeyboard();
|
BaseKeyboard keyboard = getKeyboard();
|
||||||
if (keyboard.isShifted()
|
if (keyboard instanceof LatinKeyboard
|
||||||
&& keyboard instanceof LatinKeyboard
|
|
||||||
&& ((LatinKeyboard) keyboard).isAlphaKeyboard()
|
&& ((LatinKeyboard) keyboard).isAlphaKeyboard()
|
||||||
|
&& keyboard.isShifted()
|
||||||
&& !TextUtils.isEmpty(label) && label.length() < 3
|
&& !TextUtils.isEmpty(label) && label.length() < 3
|
||||||
&& Character.isLowerCase(label.charAt(0))) {
|
&& Character.isLowerCase(label.charAt(0))) {
|
||||||
label = label.toString().toUpperCase();
|
label = label.toString().toUpperCase();
|
||||||
|
|
|
@ -52,6 +52,7 @@ public class PointerTracker {
|
||||||
private OnKeyboardActionListener mListener;
|
private OnKeyboardActionListener mListener;
|
||||||
private final boolean mHasDistinctMultitouch;
|
private final boolean mHasDistinctMultitouch;
|
||||||
|
|
||||||
|
private BaseKeyboard mKeyboard;
|
||||||
private Key[] mKeys;
|
private Key[] mKeys;
|
||||||
private int mKeyHysteresisDistanceSquared = -1;
|
private int mKeyHysteresisDistanceSquared = -1;
|
||||||
|
|
||||||
|
@ -179,9 +180,10 @@ public class PointerTracker {
|
||||||
mListener = listener;
|
mListener = listener;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setKeyboard(Key[] keys, float keyHysteresisDistance) {
|
public void setKeyboard(BaseKeyboard keyboard, Key[] keys, float keyHysteresisDistance) {
|
||||||
if (keys == null || keyHysteresisDistance < 0)
|
if (keyboard == null || keys == null || keyHysteresisDistance < 0)
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
|
mKeyboard = keyboard;
|
||||||
mKeys = keys;
|
mKeys = keys;
|
||||||
mKeyHysteresisDistanceSquared = (int)(keyHysteresisDistance * keyHysteresisDistance);
|
mKeyHysteresisDistanceSquared = (int)(keyHysteresisDistance * keyHysteresisDistance);
|
||||||
// Update current key index because keyboard layout has been changed.
|
// Update current key index because keyboard layout has been changed.
|
||||||
|
@ -280,7 +282,7 @@ public class PointerTracker {
|
||||||
mHandler.startKeyRepeatTimer(REPEAT_START_DELAY, keyIndex, this);
|
mHandler.startKeyRepeatTimer(REPEAT_START_DELAY, keyIndex, this);
|
||||||
mIsRepeatableKey = true;
|
mIsRepeatableKey = true;
|
||||||
}
|
}
|
||||||
mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
|
startLongPressTimer(keyIndex);
|
||||||
}
|
}
|
||||||
showKeyPreviewAndUpdateKey(keyIndex);
|
showKeyPreviewAndUpdateKey(keyIndex);
|
||||||
}
|
}
|
||||||
|
@ -292,14 +294,15 @@ public class PointerTracker {
|
||||||
return;
|
return;
|
||||||
KeyState keyState = mKeyState;
|
KeyState keyState = mKeyState;
|
||||||
int keyIndex = keyState.onMoveKey(x, y);
|
int keyIndex = keyState.onMoveKey(x, y);
|
||||||
if (isValidKeyIndex(keyIndex)) {
|
Key key = getKey(keyIndex);
|
||||||
|
if (key != null) {
|
||||||
if (keyState.getKeyIndex() == NOT_A_KEY) {
|
if (keyState.getKeyIndex() == NOT_A_KEY) {
|
||||||
keyState.onMoveToNewKey(keyIndex, x, y);
|
keyState.onMoveToNewKey(keyIndex, x, y);
|
||||||
mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
|
startLongPressTimer(keyIndex);
|
||||||
} else if (!isMinorMoveBounce(x, y, keyIndex)) {
|
} else if (!isMinorMoveBounce(x, y, keyIndex)) {
|
||||||
resetMultiTap();
|
resetMultiTap();
|
||||||
keyState.onMoveToNewKey(keyIndex, x, y);
|
keyState.onMoveToNewKey(keyIndex, x, y);
|
||||||
mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
|
startLongPressTimer(keyIndex);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
if (keyState.getKeyIndex() != NOT_A_KEY) {
|
if (keyState.getKeyIndex() != NOT_A_KEY) {
|
||||||
|
@ -415,6 +418,20 @@ public class PointerTracker {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void startLongPressTimer(int keyIndex) {
|
||||||
|
Key key = getKey(keyIndex);
|
||||||
|
// If keyboard is in temporary upper case state and the key has temporary shift label,
|
||||||
|
// long press should not be started.
|
||||||
|
if (isTemporaryUpperCase() && key.temporaryShiftLabel != null)
|
||||||
|
return;
|
||||||
|
mHandler.startLongPressTimer(LONGPRESS_TIMEOUT, keyIndex, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
private boolean isTemporaryUpperCase() {
|
||||||
|
return mKeyboard instanceof LatinKeyboard
|
||||||
|
&& ((LatinKeyboard)mKeyboard).isTemporaryUpperCase();
|
||||||
|
}
|
||||||
|
|
||||||
private void detectAndSendKey(int index, int x, int y, long eventTime) {
|
private void detectAndSendKey(int index, int x, int y, long eventTime) {
|
||||||
final OnKeyboardActionListener listener = mListener;
|
final OnKeyboardActionListener listener = mListener;
|
||||||
final Key key = getKey(index);
|
final Key key = getKey(index);
|
||||||
|
@ -442,6 +459,14 @@ public class PointerTracker {
|
||||||
}
|
}
|
||||||
code = key.codes[mTapCount];
|
code = key.codes[mTapCount];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// If keyboard is in temporary upper case state and key has temporary shift label,
|
||||||
|
// alternate character code should be sent.
|
||||||
|
if (isTemporaryUpperCase() && key.temporaryShiftLabel != null) {
|
||||||
|
code = key.temporaryShiftLabel.charAt(0);
|
||||||
|
codes[0] = code;
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Swap the first and second values in the codes array if the primary code is not
|
* Swap the first and second values in the codes array if the primary code is not
|
||||||
* the first value but the second value in the array. This happens when key
|
* the first value but the second value in the array. This happens when key
|
||||||
|
|