diff options
| author | Po Lu <luangruo@yahoo.com> | 2023-08-30 10:07:49 +0800 |
|---|---|---|
| committer | Po Lu <luangruo@yahoo.com> | 2023-08-30 10:07:49 +0800 |
| commit | 297ccd967f24e37bc51c057da43c862291a55ddd (patch) | |
| tree | 35c7bca464ae2fbf23c46176a698483937ddd51d /java/org/gnu/emacs/EmacsView.java | |
| parent | 2909ef8d3d73518525ce6a8a3e4f984575300f3b (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.java | 20 |
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 |
