From 91c2e4a5a341805e2e407e414f2e65bcba569059 Mon Sep 17 00:00:00 2001 From: Darcy Wong Date: Thu, 7 May 2020 09:43:57 +0700 Subject: [PATCH] fix(android): Back button to dismiss system keyboard Cherry-pick #2950 and #3093 to stable-13.0 This allows the back button to dismiss the system keyboard if shown. Additional back-presses revert to default UI behavior. As a throw-in, I made the same change to KMSample2 --- .../main/java/com/keyman/android/SystemKeyboard.java | 12 ++++++++++++ .../java/com/keyman/kmsample2/SystemKeyboard.java | 12 ++++++++++++ android/history.md | 4 ++++ 3 files changed, 28 insertions(+) diff --git a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java index d218580724..3712f9f1d8 100644 --- a/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java +++ b/android/KMAPro/kMAPro/src/main/java/com/keyman/android/SystemKeyboard.java @@ -209,6 +209,18 @@ public class SystemKeyboard extends InputMethodService implements OnKeyboardEven @Override public boolean onKeyDown(int keyCode, KeyEvent event) { + if (event.getAction() == KeyEvent.ACTION_DOWN) { + switch (keyCode) { + case KeyEvent.KEYCODE_BACK: + // Dismiss the keyboard if currently shown + if (isInputViewShown()) { + KMManager.hideSystemKeyboard(); + return true; + } + break; + } + } + return interpreter.onKeyDown(keyCode, event); // if false, will revert to default handling. } diff --git a/android/Samples/KMSample2/app/src/main/java/com/keyman/kmsample2/SystemKeyboard.java b/android/Samples/KMSample2/app/src/main/java/com/keyman/kmsample2/SystemKeyboard.java index ddbd837c6a..58e8e7dbdf 100644 --- a/android/Samples/KMSample2/app/src/main/java/com/keyman/kmsample2/SystemKeyboard.java +++ b/android/Samples/KMSample2/app/src/main/java/com/keyman/kmsample2/SystemKeyboard.java @@ -184,6 +184,18 @@ public class SystemKeyboard extends InputMethodService implements OnKeyboardEven @Override public boolean onKeyDown(int keyCode, KeyEvent event) { + if (event.getAction() == KeyEvent.ACTION_DOWN) { + switch (keyCode) { + case KeyEvent.KEYCODE_BACK: + // Dismiss the keyboard if currently shown + if (isInputViewShown()) { + KMManager.hideSystemKeyboard(); + return true; + } + break; + } + } + return interpreter.onKeyDown(keyCode, event); // if false, will revert to default handling. } diff --git a/android/history.md b/android/history.md index 77d3257b1e..6b42b4e228 100644 --- a/android/history.md +++ b/android/history.md @@ -1,5 +1,9 @@ # Keyman for Android Version History +## 2020-05-07 13.0.6210 stable +* Bug fix: + * Back button dismisses system keyboard () + ## 2020-04-20 13.0.6209 stable * Bug fix: * Fix crash involving system keyboard update notifications (#3007)