diff --git a/leankeykeyboard/build.gradle b/leankeykeyboard/build.gradle index c160a47..bc5a470 100644 --- a/leankeykeyboard/build.gradle +++ b/leankeykeyboard/build.gradle @@ -8,8 +8,8 @@ android { applicationId "org.liskovsoft.leankeykeyboard.pro" minSdkVersion project.properties.minSdkVersion targetSdkVersion project.properties.targetSdkVersion - versionCode 73 - versionName "4.3.23" + versionCode 74 + versionName "4.3.24" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" diff --git a/leankeykeyboard/src/main/java/com/google/android/leanback/ime/LeanbackKeyboardController.java b/leankeykeyboard/src/main/java/com/google/android/leanback/ime/LeanbackKeyboardController.java index ba93dc4..097bfc2 100644 --- a/leankeykeyboard/src/main/java/com/google/android/leanback/ime/LeanbackKeyboardController.java +++ b/leankeykeyboard/src/main/java/com/google/android/leanback/ime/LeanbackKeyboardController.java @@ -439,8 +439,7 @@ public class LeanbackKeyboardController implements LeanbackKeyboardContainer.Voi private boolean handleKeyUpEvent(int keyCode, long currTime) { keyCode = getSimplifiedKey(keyCode); boolean handled; - // NOTE: hide keyboard on ESC key - // https://github.com/yuliskov/SmartYouTubeTV/issues/142 + if (keyCode == KeyEvent.KEYCODE_BACK || keyCode == KeyEvent.KEYCODE_ESCAPE) { handled = false; } else if (mContainer.isVoiceVisible()) { diff --git a/leankeykeyboard/src/main/java/com/google/leanback/ime/LeanbackImeService.java b/leankeykeyboard/src/main/java/com/google/leanback/ime/LeanbackImeService.java index dd17e54..41f0869 100644 --- a/leankeykeyboard/src/main/java/com/google/leanback/ime/LeanbackImeService.java +++ b/leankeykeyboard/src/main/java/com/google/leanback/ime/LeanbackImeService.java @@ -272,14 +272,39 @@ public class LeanbackImeService extends InputMethodService { @Override public boolean onKeyDown(int keyCode, KeyEvent event) { + // NOTE: hide keyboard on ESC key + // https://github.com/yuliskov/SmartYouTubeTV/issues/142 + event = mapEscToBack(event); + keyCode = mapEscToBack(keyCode); + return isInputViewShown() && mKeyboardController.onKeyDown(keyCode, event) || super.onKeyDown(keyCode, event); } @Override public boolean onKeyUp(int keyCode, KeyEvent event) { + // NOTE: hide keyboard on ESC key + // https://github.com/yuliskov/SmartYouTubeTV/issues/142 + event = mapEscToBack(event); + keyCode = mapEscToBack(keyCode); + return isInputViewShown() && mKeyboardController.onKeyUp(keyCode, event) || super.onKeyUp(keyCode, event); } + private KeyEvent mapEscToBack(KeyEvent event) { + if (event.getKeyCode() == KeyEvent.KEYCODE_ESCAPE) { + // pay attention, you must pass the same action + event = new KeyEvent(event.getAction(), KeyEvent.KEYCODE_BACK); + } + return event; + } + + private int mapEscToBack(int keyCode) { + if (keyCode == KeyEvent.KEYCODE_ESCAPE) { + keyCode = KeyEvent.KEYCODE_BACK; + } + return keyCode; + } + // FireTV fix //@Override //public boolean onShowInputRequested(int flags, boolean configChange) {