From ea98a6af2f30eccfed3e152149c6a039bd16ff33 Mon Sep 17 00:00:00 2001 From: Po Lu Date: Sun, 12 May 2024 15:46:38 +0800 Subject: Additional changes to processing of Num Lock on Android * java/org/gnu/emacs/EmacsView.java (onKeyDown, onKeyMultiple) (onKeyDown): Disregard Num and Scroll Lock keys, and return value of window functions to the system. * java/org/gnu/emacs/EmacsWindow.java (eventModifiers): Return normalized meta state, not only those bits the system considers modifiers. (onKeyDown, onKeyUp): Ignore numpad keys to which no base characters are assigned, so that the system may generate the proper action keys instead. --- java/org/gnu/emacs/EmacsView.java | 45 +++++++++++++++++++++------------------ 1 file changed, 24 insertions(+), 21 deletions(-) (limited to 'java/org/gnu/emacs/EmacsView.java') diff --git a/java/org/gnu/emacs/EmacsView.java b/java/org/gnu/emacs/EmacsView.java index 977ad90310d..074e7242540 100644 --- a/java/org/gnu/emacs/EmacsView.java +++ b/java/org/gnu/emacs/EmacsView.java @@ -505,42 +505,45 @@ public final class EmacsView extends ViewGroup public boolean onKeyDown (int keyCode, KeyEvent event) { - if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP - || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN - || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) - && !EmacsNative.shouldForwardMultimediaButtons ()) - return false; + if (((keyCode == KeyEvent.KEYCODE_VOLUME_UP + || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN + || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) + && !EmacsNative.shouldForwardMultimediaButtons ()) + || keyCode == KeyEvent.KEYCODE_SCROLL_LOCK + || keyCode == KeyEvent.KEYCODE_NUM_LOCK) + return super.onKeyDown (keyCode, event); - window.onKeyDown (keyCode, event); - return true; + return window.onKeyDown (keyCode, event); } @Override public boolean onKeyMultiple (int keyCode, int repeatCount, KeyEvent event) { - if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP - || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN - || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) - && !EmacsNative.shouldForwardMultimediaButtons ()) - return false; + if (((keyCode == KeyEvent.KEYCODE_VOLUME_UP + || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN + || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) + && !EmacsNative.shouldForwardMultimediaButtons ()) + || keyCode == KeyEvent.KEYCODE_SCROLL_LOCK + || keyCode == KeyEvent.KEYCODE_NUM_LOCK) + return super.onKeyMultiple (keyCode, repeatCount, event); - window.onKeyDown (keyCode, event); - return true; + return window.onKeyDown (keyCode, event); } @Override public boolean onKeyUp (int keyCode, KeyEvent event) { - if ((keyCode == KeyEvent.KEYCODE_VOLUME_UP - || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN - || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) - && !EmacsNative.shouldForwardMultimediaButtons ()) - return false; + if (((keyCode == KeyEvent.KEYCODE_VOLUME_UP + || keyCode == KeyEvent.KEYCODE_VOLUME_DOWN + || keyCode == KeyEvent.KEYCODE_VOLUME_MUTE) + && !EmacsNative.shouldForwardMultimediaButtons ()) + || keyCode == KeyEvent.KEYCODE_SCROLL_LOCK + || keyCode == KeyEvent.KEYCODE_NUM_LOCK) + return super.onKeyUp (keyCode, event); - window.onKeyUp (keyCode, event); - return true; + return window.onKeyUp (keyCode, event); } @Override -- cgit v1.3