Merge "Fix long press caps lock handling (DO NOT MERGE)" into ics-mr1
This commit is contained in:
commit
875c16adc3
4 changed files with 36 additions and 7 deletions
|
@ -170,6 +170,10 @@ public class Keyboard {
|
||||||
return mShiftState.isShiftLocked();
|
return mShiftState.isShiftLocked();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isShiftLockShifted() {
|
||||||
|
return mShiftState.isShiftLockShifted();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean setShifted(boolean newShiftState) {
|
public boolean setShifted(boolean newShiftState) {
|
||||||
for (final Key key : mShiftKeys) {
|
for (final Key key : mShiftKeys) {
|
||||||
if (!newShiftState && !mShiftState.isShiftLocked()) {
|
if (!newShiftState && !mShiftState.isShiftLocked()) {
|
||||||
|
|
|
@ -386,6 +386,13 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private boolean isShiftLockShifted() {
|
||||||
|
LatinKeyboard latinKeyboard = getLatinKeyboard();
|
||||||
|
if (latinKeyboard != null)
|
||||||
|
return latinKeyboard.isShiftLockShifted();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAutomaticTemporaryUpperCase() {
|
public boolean isAutomaticTemporaryUpperCase() {
|
||||||
LatinKeyboard latinKeyboard = getLatinKeyboard();
|
LatinKeyboard latinKeyboard = getLatinKeyboard();
|
||||||
if (latinKeyboard != null)
|
if (latinKeyboard != null)
|
||||||
|
@ -559,6 +566,9 @@ public class KeyboardSwitcher implements SharedPreferences.OnSharedPreferenceCha
|
||||||
if (shiftKeyState.isMomentary()) {
|
if (shiftKeyState.isMomentary()) {
|
||||||
// After chording input while normal state.
|
// After chording input while normal state.
|
||||||
toggleShift();
|
toggleShift();
|
||||||
|
} else if (isShiftLocked() && !isShiftLockShifted() && shiftKeyState.isPressing()
|
||||||
|
&& !withSliding) {
|
||||||
|
// Shift has been long pressed, ignore this release.
|
||||||
} else if (isShiftLocked() && !shiftKeyState.isIgnoring() && !withSliding) {
|
} else if (isShiftLocked() && !shiftKeyState.isIgnoring() && !withSliding) {
|
||||||
// Shift has been pressed without chording while caps lock state.
|
// Shift has been pressed without chording while caps lock state.
|
||||||
toggleCapsLock();
|
toggleCapsLock();
|
||||||
|
|
|
@ -351,7 +351,7 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
|
||||||
// calling setAlreadyProcessed() nor remove the tracker from mPointerQueue.
|
// calling setAlreadyProcessed() nor remove the tracker from mPointerQueue.
|
||||||
final int primaryCode = ignore ? Keyboard.CODE_HAPTIC_AND_AUDIO_FEEDBACK_ONLY
|
final int primaryCode = ignore ? Keyboard.CODE_HAPTIC_AND_AUDIO_FEEDBACK_ONLY
|
||||||
: Keyboard.CODE_CAPSLOCK;
|
: Keyboard.CODE_CAPSLOCK;
|
||||||
mKeyboardActionListener.onCodeInput(primaryCode, null, 0, 0);
|
invokeCodeInput(primaryCode);
|
||||||
}
|
}
|
||||||
|
|
||||||
// This default implementation returns a more keys panel.
|
// This default implementation returns a more keys panel.
|
||||||
|
@ -399,18 +399,22 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
|
||||||
if (primaryCode == Keyboard.CODE_DIGIT0 && latinKeyboard.isPhoneKeyboard()) {
|
if (primaryCode == Keyboard.CODE_DIGIT0 && latinKeyboard.isPhoneKeyboard()) {
|
||||||
tracker.onLongPressed();
|
tracker.onLongPressed();
|
||||||
// Long pressing on 0 in phone number keypad gives you a '+'.
|
// Long pressing on 0 in phone number keypad gives you a '+'.
|
||||||
return invokeOnKey(Keyboard.CODE_PLUS);
|
invokeCodeInput(Keyboard.CODE_PLUS);
|
||||||
|
invokeReleaseKey(primaryCode);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
if (primaryCode == Keyboard.CODE_SHIFT && latinKeyboard.isAlphaKeyboard()) {
|
if (primaryCode == Keyboard.CODE_SHIFT && latinKeyboard.isAlphaKeyboard()) {
|
||||||
tracker.onLongPressed();
|
tracker.onLongPressed();
|
||||||
return invokeOnKey(Keyboard.CODE_CAPSLOCK);
|
invokeCodeInput(Keyboard.CODE_CAPSLOCK);
|
||||||
|
invokeReleaseKey(primaryCode);
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (primaryCode == Keyboard.CODE_SETTINGS || primaryCode == Keyboard.CODE_SPACE) {
|
if (primaryCode == Keyboard.CODE_SETTINGS || primaryCode == Keyboard.CODE_SPACE) {
|
||||||
// Both long pressing settings key and space key invoke IME switcher dialog.
|
// Both long pressing settings key and space key invoke IME switcher dialog.
|
||||||
if (getKeyboardActionListener().onCustomRequest(
|
if (invokeCustomRequest(LatinIME.CODE_SHOW_INPUT_METHOD_PICKER)) {
|
||||||
LatinIME.CODE_SHOW_INPUT_METHOD_PICKER)) {
|
|
||||||
tracker.onLongPressed();
|
tracker.onLongPressed();
|
||||||
|
invokeReleaseKey(primaryCode);
|
||||||
return true;
|
return true;
|
||||||
} else {
|
} else {
|
||||||
return openMoreKeysPanel(parentKey, tracker);
|
return openMoreKeysPanel(parentKey, tracker);
|
||||||
|
@ -420,11 +424,18 @@ public class LatinKeyboardView extends KeyboardView implements PointerTracker.Ke
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean invokeOnKey(int primaryCode) {
|
private boolean invokeCustomRequest(int code) {
|
||||||
|
return getKeyboardActionListener().onCustomRequest(code);
|
||||||
|
}
|
||||||
|
|
||||||
|
private void invokeCodeInput(int primaryCode) {
|
||||||
getKeyboardActionListener().onCodeInput(primaryCode, null,
|
getKeyboardActionListener().onCodeInput(primaryCode, null,
|
||||||
KeyboardActionListener.NOT_A_TOUCH_COORDINATE,
|
KeyboardActionListener.NOT_A_TOUCH_COORDINATE,
|
||||||
KeyboardActionListener.NOT_A_TOUCH_COORDINATE);
|
KeyboardActionListener.NOT_A_TOUCH_COORDINATE);
|
||||||
return true;
|
}
|
||||||
|
|
||||||
|
private void invokeReleaseKey(int primaryCode) {
|
||||||
|
getKeyboardActionListener().onRelease(primaryCode, false);
|
||||||
}
|
}
|
||||||
|
|
||||||
private boolean openMoreKeysPanel(Key parentKey, PointerTracker tracker) {
|
private boolean openMoreKeysPanel(Key parentKey, PointerTracker tracker) {
|
||||||
|
|
|
@ -103,6 +103,10 @@ public class KeyboardShiftState {
|
||||||
return mState == SHIFT_LOCKED || mState == SHIFT_LOCK_SHIFTED;
|
return mState == SHIFT_LOCKED || mState == SHIFT_LOCK_SHIFTED;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isShiftLockShifted() {
|
||||||
|
return mState == SHIFT_LOCK_SHIFTED;
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isAutomaticTemporaryUpperCase() {
|
public boolean isAutomaticTemporaryUpperCase() {
|
||||||
return mState == AUTO_SHIFTED;
|
return mState == AUTO_SHIFTED;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue