Loading java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +4 −0 Original line number Diff line number Diff line Loading @@ -496,6 +496,10 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } else if (isShiftLocked() && !shiftKeyState.isIgnoring() && !withSliding) { // Shift has been pressed without chording while caps lock state. toggleCapsLock(); // To be able to turn off caps lock by "double tap" on shift key, we should ignore // the second tap of the "double tap" from now for a while because we just have // already turned off caps lock above. mInputView.startIgnoringDoubleTap(); } else if (isShiftedOrShiftLocked() && shiftKeyState.isPressingOnShifted() && !withSliding) { // Shift has been pressed without chording while shifted state. Loading java/src/com/android/inputmethod/keyboard/KeyboardView.java +27 −5 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ package com.android.inputmethod.keyboard; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.SubtypeSwitcher; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; Loading @@ -45,11 +41,16 @@ import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.widget.PopupWindow; import android.widget.TextView; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.SubtypeSwitcher; import java.util.ArrayList; import java.util.HashMap; import java.util.WeakHashMap; Loading Loading @@ -193,6 +194,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { private static final int MSG_REPEAT_KEY = 3; private static final int MSG_LONGPRESS_KEY = 4; private static final int MSG_LONGPRESS_SHIFT_KEY = 5; private static final int MSG_IGNORE_DOUBLE_TAP = 6; private boolean mInKeyRepeat; Loading Loading @@ -284,6 +286,16 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { public void cancelKeyTimers() { cancelKeyRepeatTimer(); cancelLongPressTimers(); removeMessages(MSG_IGNORE_DOUBLE_TAP); } public void startIgnoringDoubleTap() { sendMessageDelayed(obtainMessage(MSG_IGNORE_DOUBLE_TAP), ViewConfiguration.getDoubleTapTimeout()); } public boolean isIgnoringDoubleTap() { return hasMessages(MSG_IGNORE_DOUBLE_TAP); } public void cancelAllMessages() { Loading Loading @@ -453,6 +465,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { final PointerTracker tracker = getPointerTracker(id); // If the second down event is also on shift key. if (tracker.isOnShiftKey((int)secondDown.getX(), (int)secondDown.getY())) { // 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 // {@link KeyboardSwitcher#onReleaseShift} . final boolean ignoringDoubleTap = mHandler.isIgnoringDoubleTap(); if (!ignoringDoubleTap) onDoubleTapShiftKey(tracker); return true; } Loading @@ -472,6 +489,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval); } public void startIgnoringDoubleTap() { if (ENABLE_CAPSLOCK_BY_DOUBLETAP) mHandler.startIgnoringDoubleTap(); } public void setOnKeyboardActionListener(KeyboardActionListener listener) { mKeyboardActionListener = listener; for (PointerTracker tracker : mPointerTrackers) { Loading Loading
java/src/com/android/inputmethod/keyboard/KeyboardSwitcher.java +4 −0 Original line number Diff line number Diff line Loading @@ -496,6 +496,10 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha } else if (isShiftLocked() && !shiftKeyState.isIgnoring() && !withSliding) { // Shift has been pressed without chording while caps lock state. toggleCapsLock(); // To be able to turn off caps lock by "double tap" on shift key, we should ignore // the second tap of the "double tap" from now for a while because we just have // already turned off caps lock above. mInputView.startIgnoringDoubleTap(); } else if (isShiftedOrShiftLocked() && shiftKeyState.isPressingOnShifted() && !withSliding) { // Shift has been pressed without chording while shifted state. Loading
java/src/com/android/inputmethod/keyboard/KeyboardView.java +27 −5 Original line number Diff line number Diff line Loading @@ -16,10 +16,6 @@ package com.android.inputmethod.keyboard; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.SubtypeSwitcher; import android.content.Context; import android.content.pm.PackageManager; import android.content.res.Resources; Loading @@ -45,11 +41,16 @@ import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.ViewConfiguration; import android.view.ViewGroup.LayoutParams; import android.view.WindowManager; import android.widget.PopupWindow; import android.widget.TextView; import com.android.inputmethod.latin.LatinImeLogger; import com.android.inputmethod.latin.R; import com.android.inputmethod.latin.SubtypeSwitcher; import java.util.ArrayList; import java.util.HashMap; import java.util.WeakHashMap; Loading Loading @@ -193,6 +194,7 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { private static final int MSG_REPEAT_KEY = 3; private static final int MSG_LONGPRESS_KEY = 4; private static final int MSG_LONGPRESS_SHIFT_KEY = 5; private static final int MSG_IGNORE_DOUBLE_TAP = 6; private boolean mInKeyRepeat; Loading Loading @@ -284,6 +286,16 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { public void cancelKeyTimers() { cancelKeyRepeatTimer(); cancelLongPressTimers(); removeMessages(MSG_IGNORE_DOUBLE_TAP); } public void startIgnoringDoubleTap() { sendMessageDelayed(obtainMessage(MSG_IGNORE_DOUBLE_TAP), ViewConfiguration.getDoubleTapTimeout()); } public boolean isIgnoringDoubleTap() { return hasMessages(MSG_IGNORE_DOUBLE_TAP); } public void cancelAllMessages() { Loading Loading @@ -453,6 +465,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { final PointerTracker tracker = getPointerTracker(id); // If the second down event is also on shift key. if (tracker.isOnShiftKey((int)secondDown.getX(), (int)secondDown.getY())) { // 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 // {@link KeyboardSwitcher#onReleaseShift} . final boolean ignoringDoubleTap = mHandler.isIgnoringDoubleTap(); if (!ignoringDoubleTap) onDoubleTapShiftKey(tracker); return true; } Loading @@ -472,6 +489,11 @@ public class KeyboardView extends View implements PointerTracker.UIProxy { mKeyRepeatInterval = res.getInteger(R.integer.config_key_repeat_interval); } public void startIgnoringDoubleTap() { if (ENABLE_CAPSLOCK_BY_DOUBLETAP) mHandler.startIgnoringDoubleTap(); } public void setOnKeyboardActionListener(KeyboardActionListener listener) { mKeyboardActionListener = listener; for (PointerTracker tracker : mPointerTrackers) { Loading