Fix haptic and audio feedback of caps-lock mode changing

Bug: 5435669
Change-Id: Ic1c1eb00d7e535a3ac602b9b505fd8bf43da5a8d
This commit is contained in:
Tadashi G. Takaoka 2011-10-11 11:34:56 +09:00
parent 381adec657
commit f44aeb6618
3 changed files with 11 additions and 5 deletions

View file

@ -75,6 +75,7 @@ public class Keyboard {
public static final int CODE_DELETE = -5; public static final int CODE_DELETE = -5;
public static final int CODE_SETTINGS = -6; public static final int CODE_SETTINGS = -6;
public static final int CODE_SHORTCUT = -7; public static final int CODE_SHORTCUT = -7;
public static final int CODE_HAPTIC_AND_AUDIO_FEEDBACK_ONLY = -98;
// Code value representing the code is not specified. // Code value representing the code is not specified.
public static final int CODE_UNSPECIFIED = -99; public static final int CODE_UNSPECIFIED = -99;

View file

@ -193,9 +193,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
// Detected a double tap on shift key. If we are in the ignoring double tap // Detected a double tap on shift key. If we are in the ignoring double tap
// mode, it means we have already turned off caps lock in // mode, it means we have already turned off caps lock in
// {@link KeyboardSwitcher#onReleaseShift} . // {@link KeyboardSwitcher#onReleaseShift} .
final boolean ignoringDoubleTap = mKeyTimerHandler.isIgnoringDoubleTap(); onDoubleTapShiftKey(tracker, mKeyTimerHandler.isIgnoringDoubleTap());
if (!ignoringDoubleTap)
onDoubleTapShiftKey(tracker);
return true; return true;
} }
// Otherwise these events should not be handled as double tap. // Otherwise these events should not be handled as double tap.
@ -346,11 +344,14 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
return onLongPress(parentKey, tracker); return onLongPress(parentKey, tracker);
} }
private void onDoubleTapShiftKey(@SuppressWarnings("unused") PointerTracker tracker) { private void onDoubleTapShiftKey(@SuppressWarnings("unused") PointerTracker tracker,
final boolean ignore) {
// When shift key is double tapped, the first tap is correctly processed as usual tap. And // When shift key is double tapped, the first tap is correctly processed as usual tap. And
// the second tap is treated as this double tap event, so that we need not mark tracker // the second tap is treated as this double tap event, so that we need not mark tracker
// calling setAlreadyProcessed() nor remove the tracker from mPointerQueue. // calling setAlreadyProcessed() nor remove the tracker from mPointerQueue.
mKeyboardActionListener.onCodeInput(Keyboard.CODE_CAPSLOCK, null, 0, 0); final int primaryCode = ignore ? Keyboard.CODE_HAPTIC_AND_AUDIO_FEEDBACK_ONLY
: Keyboard.CODE_CAPSLOCK;
mKeyboardActionListener.onCodeInput(primaryCode, null, 0, 0);
} }
// This default implementation returns a more keys panel. // This default implementation returns a more keys panel.

View file

@ -1265,7 +1265,11 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
break; break;
case Keyboard.CODE_CAPSLOCK: case Keyboard.CODE_CAPSLOCK:
switcher.toggleCapsLock(); switcher.toggleCapsLock();
//$FALL-THROUGH$
case Keyboard.CODE_HAPTIC_AND_AUDIO_FEEDBACK_ONLY:
// Dummy code for haptic and audio feedbacks.
vibrate(); vibrate();
playKeyClick(primaryCode);
break; break;
case Keyboard.CODE_SHORTCUT: case Keyboard.CODE_SHORTCUT:
mSubtypeSwitcher.switchToShortcutIME(); mSubtypeSwitcher.switchToShortcutIME();