aboutsummaryrefslogtreecommitdiffstats
path: root/java
diff options
context:
space:
mode:
authorJean Chalard <jchalard@google.com>2013-01-15 17:33:58 +0900
committerJean Chalard <jchalard@google.com>2013-01-15 19:12:41 +0900
commitdcfceaff1b18b102d7fe875b48b84c24cbd822d9 (patch)
tree7a126db2b08fd124c0659694e8ec19b342d67250 /java
parentc995dbcf598730f138e59f989e813b83d585d40b (diff)
downloadlatinime-dcfceaff1b18b102d7fe875b48b84c24cbd822d9.tar.gz
latinime-dcfceaff1b18b102d7fe875b48b84c24cbd822d9.tar.xz
latinime-dcfceaff1b18b102d7fe875b48b84c24cbd822d9.zip
Distinguish action-enter/shift-enter/enter
Bug: 7969231 Change-Id: I75d495ee1ea126da9be4e269ee990ee0a97793c1
Diffstat (limited to 'java')
-rw-r--r--java/res/xml/key_styles_common.xml2
-rw-r--r--java/res/xml/key_styles_enter.xml22
-rw-r--r--java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java2
-rw-r--r--java/src/com/android/inputmethod/latin/Constants.java3
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java73
5 files changed, 63 insertions, 39 deletions
diff --git a/java/res/xml/key_styles_common.xml b/java/res/xml/key_styles_common.xml
index 91ebac1da..0834adf20 100644
--- a/java/res/xml/key_styles_common.xml
+++ b/java/res/xml/key_styles_common.xml
@@ -71,7 +71,7 @@
>
<key-style
latin:styleName="enterKeyStyle"
- latin:parentStyle="defaultEnterKeyStyle" />
+ latin:parentStyle="shiftEnterKeyStyle" />
</case>
<!-- Smiley in textShortMessage field.
Overrides common enter key style. -->
diff --git a/java/res/xml/key_styles_enter.xml b/java/res/xml/key_styles_enter.xml
index 3788ca8ba..61a515bad 100644
--- a/java/res/xml/key_styles_enter.xml
+++ b/java/res/xml/key_styles_enter.xml
@@ -99,7 +99,11 @@
latin:backgroundType="functional"
latin:parentStyle="navigateMoreKeysStyle" />
<key-style
- latin:styleName="defaultActionKeyStyle"
+ latin:styleName="shiftEnterKeyStyle"
+ latin:code="!code/key_shift_enter"
+ latin:parentStyle="defaultEnterKeyStyle" />
+ <key-style
+ latin:styleName="defaultActionEnterKeyStyle"
latin:code="!code/key_action_enter"
latin:keyIcon="!icon/undefined"
latin:backgroundType="action"
@@ -112,7 +116,7 @@
>
<key-style
latin:styleName="enterKeyStyle"
- latin:parentStyle="defaultEnterKeyStyle" />
+ latin:parentStyle="shiftEnterKeyStyle" />
</case>
<case
latin:imeAction="actionGo"
@@ -120,7 +124,7 @@
<key-style
latin:styleName="enterKeyStyle"
latin:keyLabel="!text/label_go_key"
- latin:parentStyle="defaultActionKeyStyle" />
+ latin:parentStyle="defaultActionEnterKeyStyle" />
</case>
<case
latin:imeAction="actionNext"
@@ -128,7 +132,7 @@
<key-style
latin:styleName="enterKeyStyle"
latin:keyLabel="!text/label_next_key"
- latin:parentStyle="defaultActionKeyStyle" />
+ latin:parentStyle="defaultActionEnterKeyStyle" />
</case>
<case
latin:imeAction="actionPrevious"
@@ -136,7 +140,7 @@
<key-style
latin:styleName="enterKeyStyle"
latin:keyLabel="!text/label_previous_key"
- latin:parentStyle="defaultActionKeyStyle" />
+ latin:parentStyle="defaultActionEnterKeyStyle" />
</case>
<case
latin:imeAction="actionDone"
@@ -144,7 +148,7 @@
<key-style
latin:styleName="enterKeyStyle"
latin:keyLabel="!text/label_done_key"
- latin:parentStyle="defaultActionKeyStyle" />
+ latin:parentStyle="defaultActionEnterKeyStyle" />
</case>
<case
latin:imeAction="actionSend"
@@ -152,7 +156,7 @@
<key-style
latin:styleName="enterKeyStyle"
latin:keyLabel="!text/label_send_key"
- latin:parentStyle="defaultActionKeyStyle" />
+ latin:parentStyle="defaultActionEnterKeyStyle" />
</case>
<case
latin:imeAction="actionSearch"
@@ -160,7 +164,7 @@
<key-style
latin:styleName="enterKeyStyle"
latin:keyIcon="!icon/search_key"
- latin:parentStyle="defaultActionKeyStyle" />
+ latin:parentStyle="defaultActionEnterKeyStyle" />
</case>
<case
latin:imeAction="actionCustomLabel"
@@ -168,7 +172,7 @@
<key-style
latin:styleName="enterKeyStyle"
latin:keyLabelFlags="fromCustomActionLabel"
- latin:parentStyle="defaultActionKeyStyle" />
+ latin:parentStyle="defaultActionEnterKeyStyle" />
</case>
<!-- imeAction is either actionNone or actionUnspecified. -->
<default>
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
index 428e31ccd..0d852dde2 100644
--- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
+++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardCodesSet.java
@@ -51,6 +51,7 @@ public final class KeyboardCodesSet {
"key_action_enter",
"key_action_next",
"key_action_previous",
+ "key_shift_enter",
"key_language_switch",
"key_research",
"key_unspecified",
@@ -86,6 +87,7 @@ public final class KeyboardCodesSet {
Constants.CODE_ACTION_ENTER,
Constants.CODE_ACTION_NEXT,
Constants.CODE_ACTION_PREVIOUS,
+ Constants.CODE_SHIFT_ENTER,
Constants.CODE_LANGUAGE_SWITCH,
Constants.CODE_RESEARCH,
Constants.CODE_UNSPECIFIED,
diff --git a/java/src/com/android/inputmethod/latin/Constants.java b/java/src/com/android/inputmethod/latin/Constants.java
index 5c8a2edd8..483504cfb 100644
--- a/java/src/com/android/inputmethod/latin/Constants.java
+++ b/java/src/com/android/inputmethod/latin/Constants.java
@@ -184,8 +184,9 @@ public final class Constants {
public static final int CODE_ACTION_PREVIOUS = -9;
public static final int CODE_LANGUAGE_SWITCH = -10;
public static final int CODE_RESEARCH = -11;
+ public static final int CODE_SHIFT_ENTER = -12;
// Code value representing the code is not specified.
- public static final int CODE_UNSPECIFIED = -12;
+ public static final int CODE_UNSPECIFIED = -13;
public static boolean isLetterCode(final int code) {
return code >= CODE_SPACE;
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 4a3511472..ab21cff47 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -1369,9 +1369,6 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
case Constants.CODE_SHORTCUT:
mSubtypeSwitcher.switchToShortcutIME(this);
break;
- case Constants.CODE_ACTION_ENTER:
- performEditorAction(getActionId(switcher.getKeyboard()));
- break;
case Constants.CODE_ACTION_NEXT:
performEditorAction(EditorInfo.IME_ACTION_NEXT);
break;
@@ -1386,32 +1383,20 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
ResearchLogger.getInstance().onResearchKeySelected(this);
}
break;
- default:
- mSpaceState = SPACE_STATE_NONE;
- if (mSettings.getCurrent().isWordSeparator(primaryCode)) {
- didAutoCorrect = handleSeparator(primaryCode, x, y, spaceState);
- } else {
- if (SPACE_STATE_PHANTOM == spaceState) {
- if (ProductionFlag.IS_INTERNAL) {
- if (mWordComposer.isComposingWord() && mWordComposer.isBatchMode()) {
- Stats.onAutoCorrection(
- "", mWordComposer.getTypedWord(), " ", mWordComposer);
- }
- }
- commitTyped(LastComposedWord.NOT_A_SEPARATOR);
- }
- final int keyX, keyY;
- final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
- if (keyboard != null && keyboard.hasProximityCharsCorrection(primaryCode)) {
- keyX = x;
- keyY = y;
- } else {
- keyX = Constants.NOT_A_COORDINATE;
- keyY = Constants.NOT_A_COORDINATE;
- }
- handleCharacter(primaryCode, keyX, keyY, spaceState);
+ case Constants.CODE_ACTION_ENTER:
+ final int actionId = getActionId(switcher.getKeyboard());
+ if (EditorInfo.IME_ACTION_NONE != actionId
+ && EditorInfo.IME_ACTION_UNSPECIFIED != actionId) {
+ performEditorAction(actionId);
+ break;
}
- mExpectingUpdateSelection = true;
+ didAutoCorrect = handleNonSpecialCharacter(Constants.CODE_ENTER, x, y, spaceState);
+ break;
+ case Constants.CODE_SHIFT_ENTER:
+ didAutoCorrect = handleNonSpecialCharacter(Constants.CODE_ENTER, x, y, spaceState);
+ break;
+ default:
+ didAutoCorrect = handleNonSpecialCharacter(primaryCode, x, y, spaceState);
break;
}
switcher.onCodeInput(primaryCode);
@@ -1425,6 +1410,38 @@ public final class LatinIME extends InputMethodService implements KeyboardAction
mConnection.endBatchEdit();
}
+ private boolean handleNonSpecialCharacter(final int primaryCode, final int x, final int y,
+ final int spaceState) {
+ mSpaceState = SPACE_STATE_NONE;
+ final boolean didAutoCorrect;
+ if (mSettings.getCurrent().isWordSeparator(primaryCode)) {
+ didAutoCorrect = handleSeparator(primaryCode, x, y, spaceState);
+ } else {
+ didAutoCorrect = false;
+ if (SPACE_STATE_PHANTOM == spaceState) {
+ if (ProductionFlag.IS_INTERNAL) {
+ if (mWordComposer.isComposingWord() && mWordComposer.isBatchMode()) {
+ Stats.onAutoCorrection(
+ "", mWordComposer.getTypedWord(), " ", mWordComposer);
+ }
+ }
+ commitTyped(LastComposedWord.NOT_A_SEPARATOR);
+ }
+ final int keyX, keyY;
+ final Keyboard keyboard = mKeyboardSwitcher.getKeyboard();
+ if (keyboard != null && keyboard.hasProximityCharsCorrection(primaryCode)) {
+ keyX = x;
+ keyY = y;
+ } else {
+ keyX = Constants.NOT_A_COORDINATE;
+ keyY = Constants.NOT_A_COORDINATE;
+ }
+ handleCharacter(primaryCode, keyX, keyY, spaceState);
+ }
+ mExpectingUpdateSelection = true;
+ return didAutoCorrect;
+ }
+
// Called from PointerTracker through the KeyboardActionListener interface
@Override
public void onTextInput(final String rawText) {