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

Commit 04df05b2 authored by Konsta's avatar Konsta Committed by Gerrit Code Review
Browse files

Port "Option to control cursor in text fields using volume keys (1/2)"

This feature is moved to framework so it also works with third party keyboards.
Patch Set 3: Added missin @hide statements

Change-Id: I8e20240e7bee5351ab20bb3d701eb95a5fd3e112
parent f050150b
Loading
Loading
Loading
Loading
+43 −1
Original line number Diff line number Diff line
@@ -248,6 +248,20 @@ public class InputMethodService extends AbstractInputMethodService {
     */
    public static final int IME_VISIBLE = 0x2;

    int mVolumeKeyCursorControl = 0;
    /**
     * @hide
     */
    public static final int VOLUME_CURSOR_OFF = 0;
    /**
     * @hide
     */
    public static final int VOLUME_CURSOR_ON = 1;
    /**
     * @hide
     */
    public static final int VOLUME_CURSOR_ON_REVERSE = 2;

    InputMethodManager mImm;
    
    int mTheme = 0;
@@ -1757,6 +1771,26 @@ public class InputMethodService extends AbstractInputMethodService {
            }
            return false;
        }
        if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP) {
            mVolumeKeyCursorControl = Settings.System.getInt(getContentResolver(),
                    Settings.System.VOLUME_KEY_CURSOR_CONTROL, 0);
            if (isInputViewShown() && (mVolumeKeyCursorControl != VOLUME_CURSOR_OFF)) {
                sendDownUpKeyEvents((mVolumeKeyCursorControl == VOLUME_CURSOR_ON_REVERSE)
                        ? KeyEvent.KEYCODE_DPAD_RIGHT : KeyEvent.KEYCODE_DPAD_LEFT);
                return true;
            }
            return false;
        }
        if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_DOWN) {
            mVolumeKeyCursorControl = Settings.System.getInt(getContentResolver(),
                    Settings.System.VOLUME_KEY_CURSOR_CONTROL, 0);
            if (isInputViewShown() && (mVolumeKeyCursorControl != VOLUME_CURSOR_OFF)) {
                sendDownUpKeyEvents((mVolumeKeyCursorControl == VOLUME_CURSOR_ON_REVERSE)
                        ? KeyEvent.KEYCODE_DPAD_LEFT : KeyEvent.KEYCODE_DPAD_RIGHT);
                return true;
            }
            return false;
        }
        return doMovementKey(keyCode, event, MOVEMENT_DOWN);
    }

@@ -1802,7 +1836,15 @@ public class InputMethodService extends AbstractInputMethodService {
                && !event.isCanceled()) {
            return handleBack(true);
        }
        
        if (event.getKeyCode() == KeyEvent.KEYCODE_VOLUME_UP
                 || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN) {
            mVolumeKeyCursorControl = Settings.System.getInt(getContentResolver(),
                    Settings.System.VOLUME_KEY_CURSOR_CONTROL, 0);
            if (isInputViewShown() && (mVolumeKeyCursorControl != VOLUME_CURSOR_OFF)) {
                return true;
            }
            return false;
        }
        return doMovementKey(keyCode, event, MOVEMENT_UP);
    }

+9 −0
Original line number Diff line number Diff line
@@ -3024,6 +3024,15 @@ public final class Settings {
         */
        public static final String UI_FORCE_OVERFLOW_BUTTON = "ui_force_overflow_button";

         /**
          * Volume keys control cursor in text fields (default is 0)
          * 0 - Disabled
          * 1 - Volume up/down moves cursor left/right
          * 2 - Volume up/down moves cursor right/left
          * @hide
          */
         public static final String VOLUME_KEY_CURSOR_CONTROL = "volume_key_cursor_control";

        /**
         * Settings to backup. This is here so that it's in the same place as the settings
         * keys and easy to update.