Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 175acb82 authored by Tadashi G. Takaoka's avatar Tadashi G. Takaoka
Browse files

Ignore microphone and settings key while typing

Bug: 5560766
Change-Id: I38b21d49b7e803bf94805ba8e13849b3c734e010
parent 620b1faf
Loading
Loading
Loading
Loading
+1 −0
Original line number Diff line number Diff line
@@ -63,6 +63,7 @@
    <integer name="config_long_press_space_key_timeout">@integer/config_long_press_key_timeout</integer>
    <integer name="config_touch_noise_threshold_millis">40</integer>
    <integer name="config_double_spaces_turn_into_period_timeout">1100</integer>
    <integer name="config_ignore_special_key_timeout">700</integer>
    <dimen name="config_touch_noise_threshold_distance">2.0mm</dimen>
    <!-- This configuration is the index of the array {@link KeyboardSwitcher.KEYBOARD_THEMES}. -->
    <string name="config_default_keyboard_theme_id" translatable="false">5</string>
+62 −25
Original line number Diff line number Diff line
@@ -241,11 +241,36 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
        private static final int MSG_FADEOUT_LANGUAGE_ON_SPACEBAR = 3;
        private static final int MSG_DISMISS_LANGUAGE_ON_SPACEBAR = 4;
        private static final int MSG_SPACE_TYPED = 5;
        private static final int MSG_SET_BIGRAM_PREDICTIONS = 6;
        private static final int MSG_PENDING_IMS_CALLBACK = 7;
        private static final int MSG_KEY_TYPED = 6;
        private static final int MSG_SET_BIGRAM_PREDICTIONS = 7;
        private static final int MSG_PENDING_IMS_CALLBACK = 8;

        private final int mDelayBeforeFadeoutLanguageOnSpacebar;
        private final int mDelayUpdateSuggestions;
        private final int mDelayUpdateShiftState;
        private final int mDurationOfFadeoutLanguageOnSpacebar;
        private final float mFinalFadeoutFactorOfLanguageOnSpacebar;
        private final long mDoubleSpacesTurnIntoPeriodTimeout;
        private final long mIgnoreSpecialKeyTimeout;

        public UIHandler(LatinIME outerInstance) {
            super(outerInstance);

            final Resources res = outerInstance.getResources();
            mDelayBeforeFadeoutLanguageOnSpacebar = res.getInteger(
                    R.integer.config_delay_before_fadeout_language_on_spacebar);
            mDelayUpdateSuggestions =
                    res.getInteger(R.integer.config_delay_update_suggestions);
            mDelayUpdateShiftState =
                    res.getInteger(R.integer.config_delay_update_shift_state);
            mDurationOfFadeoutLanguageOnSpacebar = res.getInteger(
                    R.integer.config_duration_of_fadeout_language_on_spacebar);
            mFinalFadeoutFactorOfLanguageOnSpacebar = res.getInteger(
                    R.integer.config_final_fadeout_percentage_of_language_on_spacebar) / 100.0f;
            mDoubleSpacesTurnIntoPeriodTimeout = res.getInteger(
                    R.integer.config_double_spaces_turn_into_period_timeout);
            mIgnoreSpecialKeyTimeout = res.getInteger(
                    R.integer.config_ignore_special_key_timeout);
        }

        @Override
@@ -270,17 +295,15 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
            case MSG_FADEOUT_LANGUAGE_ON_SPACEBAR:
                if (inputView != null) {
                    inputView.setSpacebarTextFadeFactor(
                            (1.0f + latinIme.mSettingsValues.
                                    mFinalFadeoutFactorOfLanguageOnSpacebar) / 2,
                            (1.0f + mFinalFadeoutFactorOfLanguageOnSpacebar) / 2,
                            (LatinKeyboard)msg.obj);
                }
                sendMessageDelayed(obtainMessage(MSG_DISMISS_LANGUAGE_ON_SPACEBAR, msg.obj),
                        latinIme.mSettingsValues.mDurationOfFadeoutLanguageOnSpacebar);
                        mDurationOfFadeoutLanguageOnSpacebar);
                break;
            case MSG_DISMISS_LANGUAGE_ON_SPACEBAR:
                if (inputView != null) {
                    inputView.setSpacebarTextFadeFactor(
                            latinIme.mSettingsValues.mFinalFadeoutFactorOfLanguageOnSpacebar,
                    inputView.setSpacebarTextFadeFactor(mFinalFadeoutFactorOfLanguageOnSpacebar,
                            (LatinKeyboard)msg.obj);
                }
                break;
@@ -289,8 +312,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar

        public void postUpdateSuggestions() {
            removeMessages(MSG_UPDATE_SUGGESTIONS);
            sendMessageDelayed(obtainMessage(MSG_UPDATE_SUGGESTIONS),
                    getOuterInstance().mSettingsValues.mDelayUpdateSuggestions);
            sendMessageDelayed(obtainMessage(MSG_UPDATE_SUGGESTIONS), mDelayUpdateSuggestions);
        }

        public void cancelUpdateSuggestions() {
@@ -303,8 +325,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar

        public void postUpdateShiftKeyState() {
            removeMessages(MSG_UPDATE_SHIFT_STATE);
            sendMessageDelayed(obtainMessage(MSG_UPDATE_SHIFT_STATE),
                    getOuterInstance().mSettingsValues.mDelayUpdateShiftState);
            sendMessageDelayed(obtainMessage(MSG_UPDATE_SHIFT_STATE), mDelayUpdateShiftState);
        }

        public void cancelUpdateShiftState() {
@@ -313,8 +334,7 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar

        public void postUpdateBigramPredictions() {
            removeMessages(MSG_SET_BIGRAM_PREDICTIONS);
            sendMessageDelayed(obtainMessage(MSG_SET_BIGRAM_PREDICTIONS),
                    getOuterInstance().mSettingsValues.mDelayUpdateSuggestions);
            sendMessageDelayed(obtainMessage(MSG_SET_BIGRAM_PREDICTIONS), mDelayUpdateSuggestions);
        }

        public void cancelUpdateBigramPredictions() {
@@ -334,26 +354,24 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
                final LatinKeyboard keyboard = latinIme.mKeyboardSwitcher.getLatinKeyboard();
                // The language is always displayed when the delay is negative.
                final boolean needsToDisplayLanguage = localeChanged
                        || latinIme.mSettingsValues.mDelayBeforeFadeoutLanguageOnSpacebar < 0;
                        || mDelayBeforeFadeoutLanguageOnSpacebar < 0;
                // The language is never displayed when the delay is zero.
                if (latinIme.mSettingsValues.mDelayBeforeFadeoutLanguageOnSpacebar != 0) {
                if (mDelayBeforeFadeoutLanguageOnSpacebar != 0) {
                    inputView.setSpacebarTextFadeFactor(needsToDisplayLanguage ? 1.0f
                            : latinIme.mSettingsValues.mFinalFadeoutFactorOfLanguageOnSpacebar,
                            : mFinalFadeoutFactorOfLanguageOnSpacebar,
                            keyboard);
                }
                // The fadeout animation will start when the delay is positive.
                if (localeChanged
                        && latinIme.mSettingsValues.mDelayBeforeFadeoutLanguageOnSpacebar > 0) {
                if (localeChanged && mDelayBeforeFadeoutLanguageOnSpacebar > 0) {
                    sendMessageDelayed(obtainMessage(MSG_FADEOUT_LANGUAGE_ON_SPACEBAR, keyboard),
                            latinIme.mSettingsValues.mDelayBeforeFadeoutLanguageOnSpacebar);
                            mDelayBeforeFadeoutLanguageOnSpacebar);
                }
            }
        }

        public void startDoubleSpacesTimer() {
            removeMessages(MSG_SPACE_TYPED);
            sendMessageDelayed(obtainMessage(MSG_SPACE_TYPED),
                    getOuterInstance().mSettingsValues.mDoubleSpacesTurnIntoPeriodTimeout);
            sendMessageDelayed(obtainMessage(MSG_SPACE_TYPED), mDoubleSpacesTurnIntoPeriodTimeout);
        }

        public void cancelDoubleSpacesTimer() {
@@ -364,6 +382,15 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
            return hasMessages(MSG_SPACE_TYPED);
        }

        public void startKeyTypedTimer() {
            removeMessages(MSG_KEY_TYPED);
            sendMessageDelayed(obtainMessage(MSG_KEY_TYPED), mIgnoreSpecialKeyTimeout);
        }

        public boolean isIgnoringSpecialKey() {
            return hasMessages(MSG_KEY_TYPED);
        }

        // Working variables for the following methods.
        private boolean mIsOrientationChanging;
        private boolean mPendingSuccesiveImsCallback;
@@ -1246,15 +1273,16 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
    // Implementation of {@link KeyboardActionListener}.
    @Override
    public void onCodeInput(int primaryCode, int[] keyCodes, int x, int y) {
        long when = SystemClock.uptimeMillis();
        final long when = SystemClock.uptimeMillis();
        if (primaryCode != Keyboard.CODE_DELETE || when > mLastKeyTime + QUICK_PRESS) {
            mDeleteCount = 0;
        }
        mLastKeyTime = when;
        KeyboardSwitcher switcher = mKeyboardSwitcher;
        final KeyboardSwitcher switcher = mKeyboardSwitcher;
        final boolean distinctMultiTouch = switcher.hasDistinctMultitouch();
        final boolean lastStateOfJustReplacedDoubleSpace = mJustReplacedDoubleSpace;
        mJustReplacedDoubleSpace = false;
        boolean shouldStartKeyTypedTimer = true;
        switch (primaryCode) {
        case Keyboard.CODE_DELETE:
            handleBackspace(lastStateOfJustReplacedDoubleSpace);
@@ -1278,7 +1306,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
            }
            break;
        case Keyboard.CODE_SETTINGS:
            if (!mHandler.isIgnoringSpecialKey()) {
                onSettingsKeyPressed();
            }
            shouldStartKeyTypedTimer = false;
            break;
        case Keyboard.CODE_CAPSLOCK:
            switcher.toggleCapsLock();
@@ -1289,7 +1320,10 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
            playKeyClick(primaryCode);
            break;
        case Keyboard.CODE_SHORTCUT:
            if (!mHandler.isIgnoringSpecialKey()) {
                mSubtypeSwitcher.switchToShortcutIME();
            }
            shouldStartKeyTypedTimer = false;
            break;
        case Keyboard.CODE_TAB:
            handleTab();
@@ -1314,6 +1348,9 @@ public class LatinIME extends InputMethodServiceCompatWrapper implements Keyboar
        switcher.onKey(primaryCode);
        // Reset after any single keystroke
        mEnteredText = null;
        if (shouldStartKeyTypedTimer) {
            mHandler.startKeyTypedTimer();
        }
    }

    @Override
+0 −18
Original line number Diff line number Diff line
@@ -102,13 +102,7 @@ public class Settings extends InputMethodSettingsActivity

    public static class Values {
        // From resources:
        public final int mDelayBeforeFadeoutLanguageOnSpacebar;
        public final int mDelayUpdateSuggestions;
        public final int mDelayUpdateOldSuggestions;
        public final int mDelayUpdateShiftState;
        public final int mDurationOfFadeoutLanguageOnSpacebar;
        public final float mFinalFadeoutFactorOfLanguageOnSpacebar;
        public final long mDoubleSpacesTurnIntoPeriodTimeout;
        public final String mWordSeparators;
        public final String mMagicSpaceStrippers;
        public final String mMagicSpaceSwappers;
@@ -147,20 +141,8 @@ public class Settings extends InputMethodSettingsActivity
            }

            // Get the resources
            mDelayBeforeFadeoutLanguageOnSpacebar = res.getInteger(
                    R.integer.config_delay_before_fadeout_language_on_spacebar);
            mDelayUpdateSuggestions =
                    res.getInteger(R.integer.config_delay_update_suggestions);
            mDelayUpdateOldSuggestions = res.getInteger(
                    R.integer.config_delay_update_old_suggestions);
            mDelayUpdateShiftState =
                    res.getInteger(R.integer.config_delay_update_shift_state);
            mDurationOfFadeoutLanguageOnSpacebar = res.getInteger(
                    R.integer.config_duration_of_fadeout_language_on_spacebar);
            mFinalFadeoutFactorOfLanguageOnSpacebar = res.getInteger(
                    R.integer.config_final_fadeout_percentage_of_language_on_spacebar) / 100.0f;
            mDoubleSpacesTurnIntoPeriodTimeout = res.getInteger(
                    R.integer.config_double_spaces_turn_into_period_timeout);
            mMagicSpaceStrippers = res.getString(R.string.magic_space_stripping_symbols);
            mMagicSpaceSwappers = res.getString(R.string.magic_space_swapping_symbols);
            String wordSeparators = mMagicSpaceStrippers + mMagicSpaceSwappers