Setting to move microphone to secondary keyboard.
Microphone button can be optionally moved to the symbols keyboard to get your comma back. You can also completely disable voice input. Now you can get your comma back but still use the swipe gesture to activate voice input.main
parent
7a722cbfc8
commit
b1cd701602
|
@ -252,6 +252,12 @@
|
|||
<!-- Preferences item for enabling speech input -->
|
||||
<string name="enable_voice">Voice input</string>
|
||||
|
||||
<!-- Preferences item for speech icon on primary keyboard -->
|
||||
<string name="voice_on_primary">Mic on primary</string>
|
||||
|
||||
<!-- Preferences item summary for speech icon on primary keyboard -->
|
||||
<string name="voice_on_primary_summary">Show the microphone on the primary keyboard</string>
|
||||
|
||||
<!-- Press the "enter" key after the user speaks. Option on settings.-->
|
||||
<string name="auto_submit">Auto submit after voice</string>
|
||||
|
||||
|
|
|
@ -100,7 +100,7 @@
|
|||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_globe"
|
||||
<Key android:codes="@integer/key_f1"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
|
@ -112,24 +112,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_normal_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="40%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -150,26 +132,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_url_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="/" android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:keyLabel="@string/popular_domain_0"
|
||||
android:keyOutputText="@string/popular_domain_0"
|
||||
android:popupKeyboard="@xml/popup_domains"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -189,25 +151,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_email_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="\@"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:keyLabel="@string/popular_domain_0"
|
||||
android:keyOutputText="@string/popular_domain_0"
|
||||
android:popupKeyboard="@xml/popup_domains"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -225,24 +168,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_im_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="40%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:keyLabel=":-)" android:keyOutputText=":-) "
|
||||
android:popupKeyboard="@xml/popup_smileys"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_webentry" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -261,24 +186,4 @@
|
|||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_webentry_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="9" android:keyIcon="@drawable/sym_keyboard_tab"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_tab"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
</Keyboard>
|
||||
|
|
|
@ -114,24 +114,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_normal_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="40%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -152,26 +134,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_url_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="/" android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:keyLabel="@string/popular_domain_0"
|
||||
android:keyOutputText="@string/popular_domain_0"
|
||||
android:popupKeyboard="@xml/popup_domains"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -191,25 +153,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_email_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="\@"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:keyLabel="@string/popular_domain_0"
|
||||
android:keyOutputText="@string/popular_domain_0"
|
||||
android:popupKeyboard="@xml/popup_domains"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -227,24 +170,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_im_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="40%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:keyLabel=":-)" android:keyOutputText=":-) "
|
||||
android:popupKeyboard="@xml/popup_smileys"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_webentry" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -264,25 +189,5 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_webentry_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="9" android:keyIcon="@drawable/sym_keyboard_tab"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_tab"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
</Keyboard>
|
||||
|
||||
|
|
|
@ -96,24 +96,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_normal_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="40%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -134,26 +116,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_url_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="/" android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:keyLabel="@string/popular_domain_0"
|
||||
android:keyOutputText="@string/popular_domain_0"
|
||||
android:popupKeyboard="@xml/popup_domains"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -173,25 +135,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_email_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="\@" android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:keyLabel="@string/popular_domain_0"
|
||||
android:keyOutputText="@string/popular_domain_0"
|
||||
android:popupKeyboard="@xml/popup_domains"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -209,24 +152,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_im_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="40%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:keyLabel=":-)" android:keyOutputText=":-) "
|
||||
android:popupKeyboard="@xml/popup_smileys"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_webentry" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -245,26 +170,5 @@
|
|||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_webentry_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="9" android:keyIcon="@drawable/sym_keyboard_tab"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_tab"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
</Keyboard>
|
||||
|
||||
|
|
|
@ -111,7 +111,8 @@
|
|||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_globe"
|
||||
<Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
|
@ -123,24 +124,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_normal_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="40%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_url" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -161,26 +144,6 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_url_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="/" android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:keyLabel="@string/popular_domain_0"
|
||||
android:keyOutputText="@string/popular_domain_0"
|
||||
android:popupKeyboard="@xml/popup_domains"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_email" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
|
@ -200,48 +163,12 @@
|
|||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_email_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="\@"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:keyLabel="@string/popular_domain_0"
|
||||
android:keyOutputText="@string/popular_domain_0"
|
||||
android:popupKeyboard="@xml/popup_domains"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_im" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_globe"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="40%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="46" android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:keyLabel=":-)" android:keyOutputText=":-) "
|
||||
android:popupKeyboard="@xml/popup_smileys"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_im_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
<Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
|
@ -259,26 +186,7 @@
|
|||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_globe"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
android:keyWidth="20%p" android:isRepeatable="true"/>
|
||||
<Key android:codes="9" android:keyIcon="@drawable/sym_keyboard_tab"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_tab"
|
||||
android:keyWidth="20%p"/>
|
||||
<Key android:keyLabel="." android:popupKeyboard="@xml/popup_punctuation"/>
|
||||
<Key android:codes="10" android:keyIcon="@drawable/sym_keyboard_return"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_return"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="right"/>
|
||||
</Row>
|
||||
|
||||
<Row android:keyboardMode="@+id/mode_webentry_voice" android:rowEdgeFlags="bottom">
|
||||
<Key android:codes="-2" android:keyLabel="@string/label_symbol_key"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:codes="-102" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
<Key android:codes="@integer/key_f1" android:keyIcon="@drawable/sym_keyboard_mic"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_mic"
|
||||
android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
|
|
|
@ -126,10 +126,7 @@
|
|||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="_"
|
||||
android:keyWidth="20%p" android:keyEdgeFlags="left"/>
|
||||
<Key android:keyLabel="," android:keyWidth="10%p"
|
||||
android:popupKeyboard="@xml/kbd_popup_template"
|
||||
android:popupCharacters="‚„"
|
||||
/>
|
||||
<Key android:codes="@integer/key_f1" android:keyWidth="10%p"/>
|
||||
<Key android:codes="32" android:keyIcon="@drawable/sym_keyboard_space"
|
||||
android:keyWidth="40%p"
|
||||
android:iconPreview="@drawable/sym_keyboard_feedback_space"
|
||||
|
|
|
@ -43,6 +43,16 @@
|
|||
android:persistent="false"
|
||||
android:defaultValue="@bool/voice_input_default"
|
||||
/>
|
||||
|
||||
<CheckBoxPreference
|
||||
android:key="voice_on_main"
|
||||
android:title="@string/voice_on_primary"
|
||||
android:summary="@string/voice_on_primary_summary"
|
||||
android:persistent="true"
|
||||
android:dependency="enable_voice_input"
|
||||
android:defaultValue="@bool/voice_input_default"
|
||||
/>
|
||||
|
||||
<PreferenceScreen
|
||||
android:title="@string/language_selection_title">
|
||||
<intent
|
||||
|
|
|
@ -67,16 +67,12 @@ public class KeyboardSwitcher {
|
|||
private KeyboardId mCurrentId;
|
||||
private Map<KeyboardId, LatinKeyboard> mKeyboards;
|
||||
|
||||
/**
|
||||
* Maps keyboard mode to the equivalent mode with voice.
|
||||
*/
|
||||
private Map<Integer, Integer> mModeToVoice;
|
||||
|
||||
private int mMode; /** One of the MODE_XXX values */
|
||||
private int mImeOptions;
|
||||
private int mTextMode = MODE_TEXT_QWERTY;
|
||||
private boolean mIsSymbols;
|
||||
private boolean mHasVoice;
|
||||
private boolean mVoiceOnPrimary;
|
||||
private boolean mPreferSymbols;
|
||||
private int mSymbolsModeState = SYMBOLS_MODE_STATE_NONE;
|
||||
|
||||
|
@ -87,14 +83,8 @@ public class KeyboardSwitcher {
|
|||
KeyboardSwitcher(Context context, InputMethodService ims) {
|
||||
mContext = context;
|
||||
mKeyboards = new HashMap<KeyboardId, LatinKeyboard>();
|
||||
mSymbolsId = new KeyboardId(R.xml.kbd_symbols);
|
||||
mSymbolsShiftedId = new KeyboardId(R.xml.kbd_symbols_shift);
|
||||
mModeToVoice = new HashMap<Integer, Integer>();
|
||||
mModeToVoice.put(R.id.mode_normal, R.id.mode_normal_voice);
|
||||
mModeToVoice.put(R.id.mode_url, R.id.mode_url_voice);
|
||||
mModeToVoice.put(R.id.mode_email, R.id.mode_email_voice);
|
||||
mModeToVoice.put(R.id.mode_im, R.id.mode_im_voice);
|
||||
mModeToVoice.put(R.id.mode_webentry, R.id.mode_webentry_voice);
|
||||
mSymbolsId = new KeyboardId(R.xml.kbd_symbols, false);
|
||||
mSymbolsShiftedId = new KeyboardId(R.xml.kbd_symbols_shift, false);
|
||||
mInputMethodService = ims;
|
||||
}
|
||||
|
||||
|
@ -122,8 +112,9 @@ public class KeyboardSwitcher {
|
|||
if (displayWidth == mLastDisplayWidth) return;
|
||||
mLastDisplayWidth = displayWidth;
|
||||
if (!forceCreate) mKeyboards.clear();
|
||||
mSymbolsId = new KeyboardId(R.xml.kbd_symbols);
|
||||
mSymbolsShiftedId = new KeyboardId(R.xml.kbd_symbols_shift);
|
||||
mSymbolsId = new KeyboardId(R.xml.kbd_symbols, mHasVoice && !mVoiceOnPrimary);
|
||||
mSymbolsShiftedId = new KeyboardId(R.xml.kbd_symbols_shift,
|
||||
mHasVoice && !mVoiceOnPrimary);
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -134,15 +125,17 @@ public class KeyboardSwitcher {
|
|||
public int mXml;
|
||||
public int mKeyboardMode; /** A KEYBOARDMODE_XXX value */
|
||||
public boolean mEnableShiftLock;
|
||||
public boolean mHasVoice;
|
||||
|
||||
public KeyboardId(int xml, int mode, boolean enableShiftLock) {
|
||||
public KeyboardId(int xml, int mode, boolean enableShiftLock, boolean hasVoice) {
|
||||
this.mXml = xml;
|
||||
this.mKeyboardMode = mode;
|
||||
this.mEnableShiftLock = enableShiftLock;
|
||||
this.mHasVoice = hasVoice;
|
||||
}
|
||||
|
||||
public KeyboardId(int xml) {
|
||||
this(xml, 0, false);
|
||||
public KeyboardId(int xml, boolean hasVoice) {
|
||||
this(xml, 0, false, hasVoice);
|
||||
}
|
||||
|
||||
public boolean equals(Object other) {
|
||||
|
@ -152,16 +145,29 @@ public class KeyboardSwitcher {
|
|||
public boolean equals(KeyboardId other) {
|
||||
return other.mXml == this.mXml
|
||||
&& other.mKeyboardMode == this.mKeyboardMode
|
||||
&& other.mEnableShiftLock == this.mEnableShiftLock;
|
||||
&& other.mEnableShiftLock == this.mEnableShiftLock
|
||||
&& other.mHasVoice == this.mHasVoice;
|
||||
}
|
||||
|
||||
public int hashCode() {
|
||||
return (mXml + 1) * (mKeyboardMode + 1) * (mEnableShiftLock ? 2 : 1);
|
||||
return (mXml + 1) * (mKeyboardMode + 1) * (mEnableShiftLock ? 2 : 1)
|
||||
* (mHasVoice ? 4 : 8);
|
||||
}
|
||||
}
|
||||
|
||||
void setVoiceMode(boolean enableVoice) {
|
||||
setKeyboardMode(mMode, mImeOptions, enableVoice, mIsSymbols);
|
||||
void setVoiceMode(boolean enableVoice, boolean voiceOnPrimary) {
|
||||
if (enableVoice != mHasVoice || voiceOnPrimary != mVoiceOnPrimary) {
|
||||
System.err.println("Clearing keyboards");
|
||||
mKeyboards.clear();
|
||||
}
|
||||
mHasVoice = enableVoice;
|
||||
mVoiceOnPrimary = voiceOnPrimary;
|
||||
setKeyboardMode(mMode, mImeOptions, mHasVoice,
|
||||
mIsSymbols);
|
||||
}
|
||||
|
||||
boolean hasVoiceButton(boolean isSymbols) {
|
||||
return mHasVoice && (isSymbols != mVoiceOnPrimary);
|
||||
}
|
||||
|
||||
void setKeyboardMode(int mode, int imeOptions, boolean enableVoice) {
|
||||
|
@ -181,9 +187,6 @@ public class KeyboardSwitcher {
|
|||
mInputView.setPreviewEnabled(true);
|
||||
KeyboardId id = getKeyboardId(mode, imeOptions, isSymbols);
|
||||
|
||||
if (enableVoice && mModeToVoice.containsKey(id.mKeyboardMode)) {
|
||||
id.mKeyboardMode = mModeToVoice.get(id.mKeyboardMode);
|
||||
}
|
||||
LatinKeyboard keyboard = getKeyboard(id);
|
||||
|
||||
if (mode == MODE_PHONE) {
|
||||
|
@ -211,17 +214,12 @@ public class KeyboardSwitcher {
|
|||
conf.locale = mInputLocale;
|
||||
orig.updateConfiguration(conf, null);
|
||||
LatinKeyboard keyboard = new LatinKeyboard(
|
||||
mContext, id.mXml, id.mKeyboardMode);
|
||||
mContext, id.mXml, id.mKeyboardMode, id.mHasVoice);
|
||||
if (id.mKeyboardMode == KEYBOARDMODE_NORMAL
|
||||
|| id.mKeyboardMode == KEYBOARDMODE_URL
|
||||
|| id.mKeyboardMode == KEYBOARDMODE_IM
|
||||
|| id.mKeyboardMode == KEYBOARDMODE_EMAIL
|
||||
|| id.mKeyboardMode == KEYBOARDMODE_WEB
|
||||
|| id.mKeyboardMode == R.id.mode_normal_voice
|
||||
|| id.mKeyboardMode == R.id.mode_url_voice
|
||||
|| id.mKeyboardMode == R.id.mode_im_voice
|
||||
|| id.mKeyboardMode == R.id.mode_email_voice
|
||||
|| id.mKeyboardMode == R.id.mode_webentry_voice
|
||||
) {
|
||||
keyboard.setExtension(R.xml.kbd_extension);
|
||||
}
|
||||
|
@ -238,31 +236,32 @@ public class KeyboardSwitcher {
|
|||
}
|
||||
|
||||
private KeyboardId getKeyboardId(int mode, int imeOptions, boolean isSymbols) {
|
||||
boolean hasVoice = hasVoiceButton(isSymbols);
|
||||
if (isSymbols) {
|
||||
return (mode == MODE_PHONE)
|
||||
? new KeyboardId(R.xml.kbd_phone_symbols) : new KeyboardId(R.xml.kbd_symbols);
|
||||
? new KeyboardId(R.xml.kbd_phone_symbols, hasVoice)
|
||||
: new KeyboardId(R.xml.kbd_symbols, hasVoice);
|
||||
}
|
||||
|
||||
switch (mode) {
|
||||
case MODE_TEXT:
|
||||
if (mTextMode == MODE_TEXT_QWERTY) {
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_NORMAL, true);
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_NORMAL, true, hasVoice);
|
||||
} else if (mTextMode == MODE_TEXT_ALPHA) {
|
||||
return new KeyboardId(R.xml.kbd_alpha, KEYBOARDMODE_NORMAL, true);
|
||||
return new KeyboardId(R.xml.kbd_alpha, KEYBOARDMODE_NORMAL, true, hasVoice);
|
||||
}
|
||||
break;
|
||||
case MODE_SYMBOLS:
|
||||
return new KeyboardId(R.xml.kbd_symbols);
|
||||
return new KeyboardId(R.xml.kbd_symbols, hasVoice);
|
||||
case MODE_PHONE:
|
||||
return new KeyboardId(R.xml.kbd_phone);
|
||||
return new KeyboardId(R.xml.kbd_phone, hasVoice);
|
||||
case MODE_URL:
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_URL, true);
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_URL, true, hasVoice);
|
||||
case MODE_EMAIL:
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_EMAIL, true);
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_EMAIL, true, hasVoice);
|
||||
case MODE_IM:
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_IM, true);
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_IM, true, hasVoice);
|
||||
case MODE_WEB:
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_WEB, true);
|
||||
return new KeyboardId(R.xml.kbd_qwerty, KEYBOARDMODE_WEB, true, hasVoice);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
@ -295,7 +294,7 @@ public class KeyboardSwitcher {
|
|||
boolean isAlphabetMode() {
|
||||
int currentMode = mCurrentId.mKeyboardMode;
|
||||
for (Integer mode : ALPHABET_MODES) {
|
||||
if (currentMode == mode || currentMode == mModeToVoice.get(mode)) {
|
||||
if (currentMode == mode) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -92,7 +92,8 @@ public class LatinIME extends InputMethodService
|
|||
private static final String PREF_AUTO_COMPLETE = "auto_complete";
|
||||
private static final String PREF_ENABLE_VOICE = "enable_voice_input";
|
||||
private static final String PREF_VOICE_SERVER_URL = "voice_server_url";
|
||||
|
||||
private static final String PREF_VOICE_MAIN = "voice_on_main";
|
||||
|
||||
// Whether or not the user has used voice input before (and thus, whether to show the
|
||||
// first-run warning dialog or not).
|
||||
private static final String PREF_HAS_USED_VOICE_INPUT = "has_used_voice_input";
|
||||
|
@ -211,6 +212,7 @@ public class LatinIME extends InputMethodService
|
|||
private boolean mIsShowingHint;
|
||||
private int mCorrectionMode;
|
||||
private boolean mEnableVoice = true;
|
||||
private boolean mVoiceOnPrimary;
|
||||
private int mOrientation;
|
||||
|
||||
// Indicates whether the suggestion strip is to be on in landscape
|
||||
|
@ -445,6 +447,7 @@ public class LatinIME extends InputMethodService
|
|||
}
|
||||
|
||||
mEnableVoiceButton = shouldShowVoiceButton(makeFieldContext(), attribute);
|
||||
final boolean enableVoiceButton = mEnableVoiceButton && mEnableVoice;
|
||||
|
||||
mAfterVoiceInput = false;
|
||||
mImmediatelyAfterVoiceInput = false;
|
||||
|
@ -463,15 +466,15 @@ public class LatinIME extends InputMethodService
|
|||
case EditorInfo.TYPE_CLASS_NUMBER:
|
||||
case EditorInfo.TYPE_CLASS_DATETIME:
|
||||
mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_SYMBOLS,
|
||||
attribute.imeOptions, mEnableVoiceButton);
|
||||
attribute.imeOptions, enableVoiceButton);
|
||||
break;
|
||||
case EditorInfo.TYPE_CLASS_PHONE:
|
||||
mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_PHONE,
|
||||
attribute.imeOptions, mEnableVoiceButton);
|
||||
attribute.imeOptions, enableVoiceButton);
|
||||
break;
|
||||
case EditorInfo.TYPE_CLASS_TEXT:
|
||||
mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_TEXT,
|
||||
attribute.imeOptions, mEnableVoiceButton);
|
||||
attribute.imeOptions, enableVoiceButton);
|
||||
//startPrediction();
|
||||
mPredictionOn = true;
|
||||
// Make sure that passwords are not displayed in candidate view
|
||||
|
@ -491,19 +494,19 @@ public class LatinIME extends InputMethodService
|
|||
if (variation == EditorInfo.TYPE_TEXT_VARIATION_EMAIL_ADDRESS) {
|
||||
mPredictionOn = false;
|
||||
mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_EMAIL,
|
||||
attribute.imeOptions, mEnableVoiceButton);
|
||||
attribute.imeOptions, enableVoiceButton);
|
||||
} else if (variation == EditorInfo.TYPE_TEXT_VARIATION_URI) {
|
||||
mPredictionOn = false;
|
||||
mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_URL,
|
||||
attribute.imeOptions, mEnableVoiceButton);
|
||||
attribute.imeOptions, enableVoiceButton);
|
||||
} else if (variation == EditorInfo.TYPE_TEXT_VARIATION_SHORT_MESSAGE) {
|
||||
mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_IM,
|
||||
attribute.imeOptions, mEnableVoiceButton);
|
||||
attribute.imeOptions, enableVoiceButton);
|
||||
} else if (variation == EditorInfo.TYPE_TEXT_VARIATION_FILTER) {
|
||||
mPredictionOn = false;
|
||||
} else if (variation == EditorInfo.TYPE_TEXT_VARIATION_WEB_EDIT_TEXT) {
|
||||
mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_WEB,
|
||||
attribute.imeOptions, mEnableVoiceButton);
|
||||
attribute.imeOptions, enableVoiceButton);
|
||||
// If it's a browser edit field and auto correct is not ON explicitly, then
|
||||
// disable auto correction, but keep suggestions on.
|
||||
if ((attribute.inputType & EditorInfo.TYPE_TEXT_FLAG_AUTO_CORRECT) == 0) {
|
||||
|
@ -529,7 +532,7 @@ public class LatinIME extends InputMethodService
|
|||
break;
|
||||
default:
|
||||
mKeyboardSwitcher.setKeyboardMode(KeyboardSwitcher.MODE_TEXT,
|
||||
attribute.imeOptions, mEnableVoiceButton);
|
||||
attribute.imeOptions, enableVoiceButton);
|
||||
updateShiftKeyState(attribute);
|
||||
}
|
||||
mInputView.closing();
|
||||
|
@ -790,6 +793,7 @@ public class LatinIME extends InputMethodService
|
|||
}
|
||||
mKeyboardSwitcher.setInputLocale(new Locale(mInputLanguage),
|
||||
getSelectedInputLanguages() != null);
|
||||
mKeyboardSwitcher.setVoiceMode(mEnableVoice, mVoiceOnPrimary);
|
||||
mKeyboardSwitcher.makeKeyboards(true);
|
||||
}
|
||||
|
||||
|
@ -1504,7 +1508,8 @@ public class LatinIME extends InputMethodService
|
|||
int currentKeyboardMode = mKeyboardSwitcher.getKeyboardMode();
|
||||
reloadKeyboards();
|
||||
mKeyboardSwitcher.makeKeyboards(true);
|
||||
mKeyboardSwitcher.setKeyboardMode(currentKeyboardMode, 0, mEnableVoiceButton);
|
||||
mKeyboardSwitcher.setKeyboardMode(currentKeyboardMode, 0,
|
||||
mEnableVoiceButton && mEnableVoice);
|
||||
initSuggest(mInputLanguage);
|
||||
persistInputLanguage(mInputLanguage);
|
||||
updateShiftKeyState(getCurrentInputEditorInfo());
|
||||
|
@ -1555,7 +1560,6 @@ public class LatinIME extends InputMethodService
|
|||
|
||||
private boolean shouldShowVoiceButton(FieldContext fieldContext, EditorInfo attribute) {
|
||||
return ENABLE_VOICE_BUTTON
|
||||
&& mEnableVoice
|
||||
&& fieldCanDoVoice(fieldContext)
|
||||
&& !(attribute != null && attribute.privateImeOptions != null
|
||||
&& attribute.privateImeOptions.equals(IME_OPTION_NO_MICROPHONE));
|
||||
|
@ -1719,10 +1723,13 @@ public class LatinIME extends InputMethodService
|
|||
|
||||
if (VOICE_INSTALLED) {
|
||||
boolean enableVoice = sp.getBoolean(PREF_ENABLE_VOICE, true);
|
||||
if (enableVoice != mEnableVoice && mKeyboardSwitcher != null) {
|
||||
mKeyboardSwitcher.setVoiceMode(enableVoice);
|
||||
boolean voiceOnPrimary = sp.getBoolean(PREF_VOICE_MAIN, true);
|
||||
if (mKeyboardSwitcher != null &&
|
||||
(enableVoice != mEnableVoice || voiceOnPrimary != mVoiceOnPrimary)) {
|
||||
mKeyboardSwitcher.setVoiceMode(enableVoice, voiceOnPrimary);
|
||||
}
|
||||
mEnableVoice = enableVoice;
|
||||
mVoiceOnPrimary = voiceOnPrimary;
|
||||
}
|
||||
mAutoCorrectEnabled = sp.getBoolean(PREF_AUTO_COMPLETE,
|
||||
mResources.getBoolean(R.bool.enable_autocorrect)) & mShowSuggestions;
|
||||
|
|
|
@ -38,6 +38,10 @@ public class LatinKeyboard extends Keyboard {
|
|||
private Drawable mOldShiftIcon;
|
||||
private Drawable mOldShiftPreviewIcon;
|
||||
private Drawable mSpaceIcon;
|
||||
private Drawable mMicIcon;
|
||||
private Drawable mMicPreviewIcon;
|
||||
private Drawable m123MicIcon;
|
||||
private Drawable m123MicPreviewIcon;
|
||||
private Key mShiftKey;
|
||||
private Key mEnterKey;
|
||||
private Key mF1Key;
|
||||
|
@ -45,6 +49,7 @@ public class LatinKeyboard extends Keyboard {
|
|||
/* package */ Locale mLocale;
|
||||
private Resources mRes;
|
||||
private int mMode;
|
||||
private boolean mHasVoice;
|
||||
|
||||
private int mExtensionResId;
|
||||
|
||||
|
@ -57,22 +62,26 @@ public class LatinKeyboard extends Keyboard {
|
|||
static int sSpacebarVerticalCorrection;
|
||||
|
||||
public LatinKeyboard(Context context, int xmlLayoutResId) {
|
||||
this(context, xmlLayoutResId, 0);
|
||||
this(context, xmlLayoutResId, 0, false);
|
||||
}
|
||||
|
||||
public LatinKeyboard(Context context, int xmlLayoutResId, int mode) {
|
||||
public LatinKeyboard(Context context, int xmlLayoutResId, int mode, boolean hasVoice) {
|
||||
super(context, xmlLayoutResId, mode);
|
||||
final Resources res = context.getResources();
|
||||
mMode = mode;
|
||||
mRes = res;
|
||||
mHasVoice = hasVoice;
|
||||
mShiftLockIcon = res.getDrawable(R.drawable.sym_keyboard_shift_locked);
|
||||
mShiftLockPreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_shift_locked);
|
||||
mShiftLockPreviewIcon.setBounds(0, 0,
|
||||
mShiftLockPreviewIcon.getIntrinsicWidth(),
|
||||
mShiftLockPreviewIcon.getIntrinsicHeight());
|
||||
mSpaceIcon = res.getDrawable(R.drawable.sym_keyboard_space);
|
||||
mMicIcon = res.getDrawable(R.drawable.sym_keyboard_mic);
|
||||
mMicPreviewIcon = res.getDrawable(R.drawable.sym_keyboard_feedback_mic);
|
||||
sSpacebarVerticalCorrection = res.getDimensionPixelOffset(
|
||||
R.dimen.spacebar_vertical_correction);
|
||||
setF1Key();
|
||||
}
|
||||
|
||||
public LatinKeyboard(Context context, int layoutTemplateResId,
|
||||
|
@ -227,28 +236,19 @@ public class LatinKeyboard extends Keyboard {
|
|||
}
|
||||
|
||||
private void setF1Key() {
|
||||
// TODO
|
||||
// else {
|
||||
// mSpaceKey.icon = mRes.getDrawable(R.drawable.sym_keyboard_space);
|
||||
// switch (mMode) {
|
||||
// case KeyboardSwitcher.KEYBOARDMODE_NORMAL:
|
||||
// case KeyboardSwitcher.KEYBOARDMODE_IM:
|
||||
// mF1Key.label = ",";
|
||||
// mF1Key.codes = new int[] { ',' };
|
||||
// mF1Key.icon = null;
|
||||
// mF1Key.iconPreview = null;
|
||||
// break;
|
||||
// case KeyboardSwitcher.KEYBOARDMODE_EMAIL:
|
||||
// case KeyboardSwitcher.KEYBOARDMODE_URL:
|
||||
// mF1Key.label = mRes.getString(R.string.popular_domain_0);
|
||||
// mF1Key.codes = new int[] { '.' };
|
||||
// mF1Key.text = mF1Key.label;
|
||||
// mF1Key.icon = null;
|
||||
// mF1Key.iconPreview = null;
|
||||
// mF1Key.popupResId = R.xml.popup_domains;
|
||||
// break;
|
||||
// }
|
||||
// }
|
||||
if (mF1Key == null) return;
|
||||
System.err.println("Setting F1 key");
|
||||
if (!mHasVoice) {
|
||||
mF1Key.label = ",";
|
||||
mF1Key.codes = new int[] { ',' };
|
||||
mF1Key.icon = null;
|
||||
mF1Key.iconPreview = null;
|
||||
} else {
|
||||
mF1Key.codes = new int[] { LatinKeyboardView.KEYCODE_VOICE };
|
||||
mF1Key.label = null;
|
||||
mF1Key.icon = mMicIcon;
|
||||
mF1Key.iconPreview = mMicPreviewIcon;
|
||||
}
|
||||
}
|
||||
|
||||
private void updateSpaceBarForLocale() {
|
||||
|
|
Loading…
Reference in New Issue