Fix haptic and audio feedback of caps-lock mode changing
Bug: 5435669 Change-Id: Ic1c1eb00d7e535a3ac602b9b505fd8bf43da5a8dmain
parent
381adec657
commit
f44aeb6618
|
@ -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;
|
||||||
|
|
||||||
|
|
|
@ -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.
|
||||||
|
|
|
@ -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();
|
||||||
|
|
Loading…
Reference in New Issue