diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardContainer.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardContainer.java index 51e5df5..7786dc9 100644 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardContainer.java +++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardContainer.java @@ -815,8 +815,8 @@ public class LeanbackKeyboardContainer { setTouchState(LeanbackKeyboardContainer.TOUCH_STATE_NO_TOUCH); return true; } else if (keyCode == LeanbackKeyboardView.ASCII_SPACE) { - onLangKeyPress(); - setTouchState(LeanbackKeyboardContainer.TOUCH_STATE_NO_TOUCH); + LeanbackUtils.showKeyboardPicker(mContext); + //setTouchState(LeanbackKeyboardContainer.TOUCH_STATE_NO_TOUCH); return true; } else if (keyCode == LeanbackKeyboardView.KEYCODE_LANG_TOGGLE) { Helpers.startActivity(mContext, KbSettingsActivity.class); @@ -1072,11 +1072,7 @@ public class LeanbackKeyboardContainer { * Switch to next keyboard (looped). * {@link KeyboardManager KeyboardManager} is the source behind all keyboard implementations */ - public void onLangKeyPress() { - switchToNextKeyboard(); - } - - private void switchToNextKeyboard() { + public void switchToNextKeyboard() { LeanbackKeyboardView keyboardView = mMainKeyboardView; Keyboard keyboard = mKeyboardManager.getNextKeyboard(); @@ -1140,8 +1136,7 @@ public class LeanbackKeyboardContainer { } public void onLangKeyClick() { - onLangKeyPress(); - // setTouchState(LeanbackKeyboardContainer.TOUCH_STATE_NO_TOUCH); + switchToNextKeyboard(); } public void onClipboardClick(InputListener listener) { diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardController.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardController.java index 03fec9f..2433d37 100644 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardController.java +++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackKeyboardController.java @@ -111,16 +111,16 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi private boolean applyLETVFixesUp(int keyCode) { switch (keyCode) { case KeyEvent.KEYCODE_MENU: - this.mContainer.onLangKeyPress(); + mContainer.switchToNextKeyboard(); break; case KeyEvent.KEYCODE_MEDIA_PLAY_PAUSE: - this.fakeKeyIndex(0, 2); + fakeKeyIndex(0, 2); break; case KeyEvent.KEYCODE_MEDIA_REWIND: - this.fakeKeyCode(-5); + fakeKeyCode(-5); break; case KeyEvent.KEYCODE_MEDIA_FAST_FORWARD: - this.fakeKeyCode(32); + fakeKeyCode(32); break; default: return false; diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackUtils.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackUtils.java index 3257179..bb3898b 100644 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackUtils.java +++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/android/leanback/ime/LeanbackUtils.java @@ -2,6 +2,7 @@ package com.liskovsoft.leankeyboard.keyboard.android.leanback.ime; import android.annotation.SuppressLint; import android.content.Context; +import android.inputmethodservice.InputMethodService; import android.os.Handler; import android.text.InputType; import android.util.DisplayMetrics; @@ -12,6 +13,7 @@ import android.view.WindowManager; import android.view.accessibility.AccessibilityEvent; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; +import android.view.inputmethod.InputMethodManager; import androidx.core.content.ContextCompat; import com.liskovsoft.leankeyboard.keyboard.leanback.ime.LeanbackImeService; @@ -135,4 +137,16 @@ public class LeanbackUtils { return metrics; } + + public static void showKeyboardPicker(InputMethodService context) { + if (context != null) { + InputMethodManager imeManager = (InputMethodManager) context.getApplicationContext().getSystemService(Context.INPUT_METHOD_SERVICE); + if (imeManager != null) { + imeManager.showInputMethodPicker(); + + Log.d(TAG, "Keyboard may stuck on screen. Fixing it..."); + context.stopSelf(); + } + } + } } diff --git a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/leanback/ime/LeanbackImeService.java b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/leanback/ime/LeanbackImeService.java index de00d49..633b907 100644 --- a/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/leanback/ime/LeanbackImeService.java +++ b/leankeykeyboard/src/main/java/com/liskovsoft/leankeyboard/keyboard/leanback/ime/LeanbackImeService.java @@ -2,7 +2,6 @@ package com.liskovsoft.leankeyboard.keyboard.leanback.ime; import android.annotation.SuppressLint; import android.app.Service; -import android.content.Context; import android.content.Intent; import android.inputmethodservice.InputMethodService; import android.os.Build.VERSION; @@ -14,7 +13,6 @@ import android.view.InputDevice; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; -import android.view.WindowManager; import android.view.inputmethod.CompletionInfo; import android.view.inputmethod.EditorInfo; import android.view.inputmethod.InputConnection; @@ -297,6 +295,8 @@ public class LeanbackImeService extends InputMethodService { @Override public int onStartCommand(final Intent intent, final int flags, final int startId) { if (intent != null) { + Log.d(TAG, "onStartCommand: " + intent.toUri(0)); + if (intent.getBooleanExtra(COMMAND_RESTART, false)) { Log.d(TAG, "onStartCommand: trying to restart service"); diff --git a/leankeykeyboard/src/main/res/values-hdpi/dimens.xml b/leankeykeyboard/src/main/res/values-hdpi/dimens.xml new file mode 100644 index 0000000..5958d17 --- /dev/null +++ b/leankeykeyboard/src/main/res/values-hdpi/dimens.xml @@ -0,0 +1,35 @@ + + + + + 37.0dip + 37.0dip + + 245.0dip + 16.0dip + 11.0dip + 32.0dip + 24.0sp + 21.0sp + 16.0dip + + 42.0dip + 24.0sp + 21.0dip + + 8.0dip + 37.0dip + + 84.0dip + 125.0dip + + 37.0dip + 73.0dip + 24.0sp + 21.0dip + 6.0dip +