summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsView.java
diff options
context:
space:
mode:
authorPo Lu <luangruo@yahoo.com>2023-08-30 10:07:49 +0800
committerPo Lu <luangruo@yahoo.com>2023-08-30 10:07:49 +0800
commit297ccd967f24e37bc51c057da43c862291a55ddd (patch)
tree35c7bca464ae2fbf23c46176a698483937ddd51d /java/org/gnu/emacs/EmacsView.java
parent2909ef8d3d73518525ce6a8a3e4f984575300f3b (diff)
Facilitate typing `C-SPC' on Android
* doc/emacs/android.texi (Android Windowing): Mention C-SPC interception and how it may be disabled. * java/org/gnu/emacs/EmacsNative.java (shouldForwardCtrlSpace): New function. * java/org/gnu/emacs/EmacsView.java (onKeyPreIme): New function. If the provided key code is SPC and the event's modifier key mask contains ControlMask, relay it directly to onKeyDown. * java/org/gnu/emacs/EmacsWindow.java (eventModifiers): Export and make static. * src/android.c (shouldForwardCtrlSpace): New function. * src/androidfns.c (syms_of_androidfns) <android_intercept_control_space>: New defvar.
Diffstat (limited to 'java/org/gnu/emacs/EmacsView.java')
-rw-r--r--java/org/gnu/emacs/EmacsView.java20
1 files changed, 20 insertions, 0 deletions
diff --git a/java/org/gnu/emacs/EmacsView.java b/java/org/gnu/emacs/EmacsView.java
index 5a4bcbaa005..04c3d824027 100644
--- a/java/org/gnu/emacs/EmacsView.java
+++ b/java/org/gnu/emacs/EmacsView.java
@@ -472,6 +472,26 @@ public final class EmacsView extends ViewGroup
@Override
public boolean
+ onKeyPreIme (int keyCode, KeyEvent event)
+ {
+ /* Several Android systems intercept key events representing
+ C-SPC. Avert this by detecting C-SPC events here and relaying
+ them directly to onKeyDown.
+
+ Make this optional though, since some input methods also
+ leverage C-SPC as a shortcut for switching languages. */
+
+ if ((keyCode == KeyEvent.KEYCODE_SPACE
+ && (window.eventModifiers (event)
+ & KeyEvent.META_CTRL_MASK) != 0)
+ && !EmacsNative.shouldForwardCtrlSpace ())
+ return onKeyDown (keyCode, event);
+
+ return super.onKeyPreIme (keyCode, event);
+ }
+
+ @Override
+ public boolean
onKeyDown (int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP