aboutsummaryrefslogtreecommitdiffstats
path: root/java/src
diff options
context:
space:
mode:
authorTadashi G. Takaoka <takaoka@google.com>2013-07-16 10:26:10 +0000
committerAndroid (Google) Code Review <android-gerrit@google.com>2013-07-16 10:26:10 +0000
commit1a894aeb82b635d345fbdf1e520d7c21395d7acb (patch)
treed033f5c45b71cbd7eb8f559f8f830994b4860e56 /java/src
parent06aa3d0286173bd6ffde646e2c813fbf489943f1 (diff)
parent6455172a707a1137eb15db8073774982db9dd1fa (diff)
downloadlatinime-1a894aeb82b635d345fbdf1e520d7c21395d7acb.tar.gz
latinime-1a894aeb82b635d345fbdf1e520d7c21395d7acb.tar.xz
latinime-1a894aeb82b635d345fbdf1e520d7c21395d7acb.zip
Merge "Distinguish key press in repeat key"
Diffstat (limited to 'java/src')
-rw-r--r--java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java5
-rw-r--r--java/src/com/android/inputmethod/keyboard/MainKeyboardView.java4
-rw-r--r--java/src/com/android/inputmethod/keyboard/PointerTracker.java3
-rw-r--r--java/src/com/android/inputmethod/latin/LatinIME.java26
4 files changed, 24 insertions, 14 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
index 00ea20d2c..b26698665 100644
--- a/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
+++ b/java/src/com/android/inputmethod/keyboard/KeyboardActionListener.java
@@ -26,9 +26,10 @@ public interface KeyboardActionListener {
*
* @param primaryCode the unicode of the key being pressed. If the touch is not on a valid key,
* the value will be zero.
+ * @param isRepeatKey true if pressing has occurred while key repeat input.
* @param isSinglePointer true if pressing has occurred while no other key is being pressed.
*/
- public void onPressKey(int primaryCode, boolean isSinglePointer);
+ public void onPressKey(int primaryCode, boolean isRepeatKey, boolean isSinglePointer);
/**
* Called when the user releases a key. This is sent after the {@link #onCodeInput} is called.
@@ -102,7 +103,7 @@ public interface KeyboardActionListener {
public static class Adapter implements KeyboardActionListener {
@Override
- public void onPressKey(int primaryCode, boolean isSinglePointer) {}
+ public void onPressKey(int primaryCode, boolean isRepeatKey, boolean isSinglePointer) {}
@Override
public void onReleaseKey(int primaryCode, boolean withSliding) {}
@Override
diff --git a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
index f85e60449..8cd5b1a63 100644
--- a/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
+++ b/java/src/com/android/inputmethod/keyboard/MainKeyboardView.java
@@ -246,7 +246,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
startTypingStateTimer(currentKey);
final KeyboardActionListener listener =
keyboardView.getKeyboardActionListener();
- listener.onPressKey(code, true /* isSinglePointer */);
+ listener.onPressKey(code, true /* isRepeatKey */, true /* isSinglePointer */);
listener.onCodeInput(code,
Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
}
@@ -987,7 +987,7 @@ public final class MainKeyboardView extends KeyboardView implements PointerTrack
if (key.hasNoPanelAutoMoreKey()) {
final int moreKeyCode = key.mMoreKeys[0].mCode;
tracker.onLongPressed();
- listener.onPressKey(moreKeyCode, true /* isSinglePointer */);
+ listener.onPressKey(moreKeyCode, false /* isRepeatKey */, true /* isSinglePointer */);
listener.onCodeInput(moreKeyCode,
Constants.NOT_A_COORDINATE, Constants.NOT_A_COORDINATE);
listener.onReleaseKey(moreKeyCode, false /* withSliding */);
diff --git a/java/src/com/android/inputmethod/keyboard/PointerTracker.java b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
index 53207597a..0f4dbd5e0 100644
--- a/java/src/com/android/inputmethod/keyboard/PointerTracker.java
+++ b/java/src/com/android/inputmethod/keyboard/PointerTracker.java
@@ -456,7 +456,8 @@ public final class PointerTracker implements PointerTrackerQueue.Element {
return false;
}
if (key.isEnabled()) {
- mListener.onPressKey(key.mCode, getActivePointerTrackerCount() == 1);
+ mListener.onPressKey(key.mCode, false /* isRepeatKey */,
+ getActivePointerTrackerCount() == 1);
final boolean keyboardLayoutHasBeenChanged = mKeyboardLayoutHasBeenChanged;
mKeyboardLayoutHasBeenChanged = false;
mTimerProxy.startTypingStateTimer(key);
diff --git a/java/src/com/android/inputmethod/latin/LatinIME.java b/java/src/com/android/inputmethod/latin/LatinIME.java
index 8f5e57182..7890dbb3f 100644
--- a/java/src/com/android/inputmethod/latin/LatinIME.java
+++ b/java/src/com/android/inputmethod/latin/LatinIME.java
@@ -2677,22 +2677,30 @@ public class LatinIME extends InputMethodService implements KeyboardActionListen
}
}
+ private void hapticAndAudioFeedback(final int code, final boolean isRepeatKey) {
+ final MainKeyboardView keyboardView = mKeyboardSwitcher.getMainKeyboardView();
+ if (keyboardView != null && keyboardView.isInSlidingKeyInput()) {
+ // No need to feedback while sliding input.
+ return;
+ }
+ if (isRepeatKey && code == Constants.CODE_DELETE && !mConnection.canDeleteCharacters()) {
+ // No need to feedback when repeating delete key will have no effect.
+ return;
+ }
+ AudioAndHapticFeedbackManager.getInstance().hapticAndAudioFeedback(code, keyboardView);
+ }
+
// Callback of the {@link KeyboardActionListener}. This is called when a key is depressed;
// release matching call is {@link #onReleaseKey(int,boolean)} below.
@Override
- public void onPressKey(final int primaryCode, final boolean isSinglePointer) {
+ public void onPressKey(final int primaryCode, final boolean isRepeatKey,
+ final boolean isSinglePointer) {
mKeyboardSwitcher.onPressKey(primaryCode, isSinglePointer);
- final MainKeyboardView mKeyboardView = mKeyboardSwitcher.getMainKeyboardView();
- final boolean noFeedback = (mKeyboardView != null && mKeyboardView.isInSlidingKeyInput())
- || (primaryCode == Constants.CODE_DELETE && !mConnection.canDeleteCharacters());
- if (!noFeedback) {
- AudioAndHapticFeedbackManager.getInstance().hapticAndAudioFeedback(
- primaryCode, mKeyboardView);
- }
+ hapticAndAudioFeedback(primaryCode, isRepeatKey);
}
// Callback of the {@link KeyboardActionListener}. This is called when a key is released;
- // press matching call is {@link #onPressKey(int,boolean)} above.
+ // press matching call is {@link #onPressKey(int,boolean,boolean)} above.
@Override
public void onReleaseKey(final int primaryCode, final boolean withSliding) {
mKeyboardSwitcher.onReleaseKey(primaryCode, withSliding);