From 8ff8a7fd5c50aaa7721a562a11836b4ec733ba5e Mon Sep 17 00:00:00 2001 From: Po Lu Date: Wed, 2 Aug 2023 09:09:53 +0800 Subject: Fix reporting of key events containing SYM and META * doc/emacs/android.texi (Android)::(What is Android?): (Android Startup, Android File System, Android Environment) (Android Windowing, Android Fonts, Android Troubleshooting): Improve section titles. (Android Windowing): Describe the relation between keyboard modifiers reported by Android and those in key events. * java/org/gnu/emacs/EmacsWindow.java (onKeyDown, onKeyUp): Clear META_SYM_ON and META_META_MASK when retrieving ASCII characters. * src/androidgui.h: Add ANDROID_META_MASK. * src/androidterm.c (android_android_to_emacs_modifiers) (android_emacs_to_android_modifiers): Transform META to Alt, and vice versa. --- java/org/gnu/emacs/EmacsWindow.java | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) (limited to 'java') diff --git a/java/org/gnu/emacs/EmacsWindow.java b/java/org/gnu/emacs/EmacsWindow.java index 8118479319e..a1f70644e16 100644 --- a/java/org/gnu/emacs/EmacsWindow.java +++ b/java/org/gnu/emacs/EmacsWindow.java @@ -616,10 +616,13 @@ public final class EmacsWindow extends EmacsHandleObject state = eventModifiers (event); - /* Ignore meta-state understood by Emacs for now, or Ctrl+C will - not be recognized as an ASCII key press event. */ + /* Ignore meta-state understood by Emacs for now, or key presses + such as Ctrl+C and Meta+C will not be recognized as an ASCII + key press event. */ + state_1 - = state & ~(KeyEvent.META_ALT_MASK | KeyEvent.META_CTRL_MASK); + = state & ~(KeyEvent.META_ALT_MASK | KeyEvent.META_CTRL_MASK + | KeyEvent.META_SYM_ON | KeyEvent.META_META_MASK); synchronized (eventStrings) { @@ -646,10 +649,13 @@ public final class EmacsWindow extends EmacsHandleObject /* Compute the event's modifier mask. */ state = eventModifiers (event); - /* Ignore meta-state understood by Emacs for now, or Ctrl+C will - not be recognized as an ASCII key press event. */ + /* Ignore meta-state understood by Emacs for now, or key presses + such as Ctrl+C and Meta+C will not be recognized as an ASCII + key press event. */ + state_1 - = state & ~(KeyEvent.META_ALT_MASK | KeyEvent.META_CTRL_MASK); + = state & ~(KeyEvent.META_ALT_MASK | KeyEvent.META_CTRL_MASK + | KeyEvent.META_SYM_ON | KeyEvent.META_META_MASK); EmacsNative.sendKeyRelease (this.handle, event.getEventTime (), -- cgit v1.2.1