am 40e5f403
: Merge "Add special case for speaking ACTION_ENTER keys." into jb-dev
* commit '40e5f403af49d8da1f25d9368d18541390e05c38': Add special case for speaking ACTION_ENTER keys.
This commit is contained in:
commit
d30cfee577
2 changed files with 53 additions and 0 deletions
|
@ -188,6 +188,8 @@
|
||||||
<string name="spoken_description_smiley">Smiley face</string>
|
<string name="spoken_description_smiley">Smiley face</string>
|
||||||
<!-- Spoken description for the "Return" keyboard key. -->
|
<!-- Spoken description for the "Return" keyboard key. -->
|
||||||
<string name="spoken_description_return">Return</string>
|
<string name="spoken_description_return">Return</string>
|
||||||
|
<!-- Spoken description for the "Search" keyboard key. -->
|
||||||
|
<string name="spoken_description_search">Search</string>
|
||||||
<!-- Spoken description for the "U+2022" (BULLET) keyboard key. -->
|
<!-- Spoken description for the "U+2022" (BULLET) keyboard key. -->
|
||||||
<string name="spoken_description_dot">Dot</string>
|
<string name="spoken_description_dot">Dot</string>
|
||||||
|
|
||||||
|
|
|
@ -19,6 +19,7 @@ package com.android.inputmethod.accessibility;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.text.TextUtils;
|
import android.text.TextUtils;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
import android.view.inputmethod.EditorInfo;
|
||||||
|
|
||||||
import com.android.inputmethod.keyboard.Key;
|
import com.android.inputmethod.keyboard.Key;
|
||||||
import com.android.inputmethod.keyboard.Keyboard;
|
import com.android.inputmethod.keyboard.Keyboard;
|
||||||
|
@ -104,6 +105,10 @@ public class KeyCodeDescriptionMapper {
|
||||||
return getDescriptionForShiftKey(context, keyboard);
|
return getDescriptionForShiftKey(context, keyboard);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if (code == Keyboard.CODE_ACTION_ENTER) {
|
||||||
|
return getDescriptionForActionKey(context, keyboard, key);
|
||||||
|
}
|
||||||
|
|
||||||
if (!TextUtils.isEmpty(key.mLabel)) {
|
if (!TextUtils.isEmpty(key.mLabel)) {
|
||||||
final String label = key.mLabel.toString().trim();
|
final String label = key.mLabel.toString().trim();
|
||||||
|
|
||||||
|
@ -191,6 +196,52 @@ public class KeyCodeDescriptionMapper {
|
||||||
return context.getString(resId);
|
return context.getString(resId);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a context-sensitive description of the "Enter" action key.
|
||||||
|
*
|
||||||
|
* @param context The package's context.
|
||||||
|
* @param keyboard The keyboard on which the key resides.
|
||||||
|
* @param key The key to describe.
|
||||||
|
* @return Returns a context-sensitive description of the "Enter" action
|
||||||
|
* key.
|
||||||
|
*/
|
||||||
|
private String getDescriptionForActionKey(Context context, Keyboard keyboard, Key key) {
|
||||||
|
final KeyboardId keyboardId = keyboard.mId;
|
||||||
|
final int actionId = keyboardId.imeActionId();
|
||||||
|
final int resId;
|
||||||
|
|
||||||
|
// Always use the label, if available.
|
||||||
|
if (!TextUtils.isEmpty(key.mLabel)) {
|
||||||
|
return key.mLabel.toString().trim();
|
||||||
|
}
|
||||||
|
|
||||||
|
// Otherwise, use the action ID.
|
||||||
|
switch (actionId) {
|
||||||
|
case EditorInfo.IME_ACTION_SEARCH:
|
||||||
|
resId = R.string.spoken_description_search;
|
||||||
|
break;
|
||||||
|
case EditorInfo.IME_ACTION_GO:
|
||||||
|
resId = R.string.label_go_key;
|
||||||
|
break;
|
||||||
|
case EditorInfo.IME_ACTION_SEND:
|
||||||
|
resId = R.string.label_send_key;
|
||||||
|
break;
|
||||||
|
case EditorInfo.IME_ACTION_NEXT:
|
||||||
|
resId = R.string.label_next_key;
|
||||||
|
break;
|
||||||
|
case EditorInfo.IME_ACTION_DONE:
|
||||||
|
resId = R.string.label_done_key;
|
||||||
|
break;
|
||||||
|
case EditorInfo.IME_ACTION_PREVIOUS:
|
||||||
|
resId = R.string.label_previous_key;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
resId = R.string.spoken_description_return;
|
||||||
|
}
|
||||||
|
|
||||||
|
return context.getString(resId);
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns a localized character sequence describing what will happen when
|
* Returns a localized character sequence describing what will happen when
|
||||||
* the specified key is pressed based on its key code.
|
* the specified key is pressed based on its key code.
|
||||||
|
|
Loading…
Reference in a new issue