@end menu
@node What is Android?
-@section Android history
+@section Android History
Android is an operating system for mobile devices developed by the
Open Handset Alliance, a group of companies interested in developing
hope this taste of freedom will inspire users to escape from them.
@node Android Startup
-@section Starting up Emacs on Android
+@section Starting Emacs on Android
Emacs is not installed on Android devices from source code or
through a package manager. Instead, Emacs is compiled for Android on
opened.
@node Android File System
-@section What files Emacs can access under Android
+@section What Files Emacs Can Access on Android
@cindex /assets directory, android
Emacs exposes a special directory on Android systems: the name of
on some proprietary versions of Android.
@node Android Document Providers
-@section Accessing files from other programs under Android
+@section Accessing Files from Other Programs on Android
@cindex document providers, Android
@cindex /content/storage directory, Android
$ adb shell "settings put global settings_enable_monitor_phantom_procs false"
@end example
-@section Running Emacs in the background
+@section Running Emacs in the Background
@cindex emacs killed, android
@cindex emacs in the background, android
list of such troublesome manufacturers and sometimes workarounds at
@url{https://dontkillmyapp.com/}.
-@section Android permissions
+@section Android Permissions
@cindex external storage, android
Android also defines a permissions system that determines what
@end itemize
@node Android Windowing
-@section The Android window system
+@section The Android Window System
Android has an unusual window system; there, all windows are
maximized or full-screen, and only one window can be displayed at a
menu in the system settings, but this procedure may vary by device.
+@cindex keyboard modifiers, android
+ There is a direct relation between physical modifier keys and Emacs
+modifiers (@pxref{Modifier Keys}) reported within key events, subject
+to a single exception: if @key{Alt} on your keyboard is depressed,
+then the @key{Meta} modifier will be reported by Emacs in its place,
+and vice versa. This irregularity is since most keyboards posses no
+special @key{Meta} key, and the @key{Alt} modifier is seldom employed
+in Emacs.
+
+ Bear in mind that Android uses a different name for the @key{Super}
+modifier: it is referred to as @key{SYM} on Android keyboards and
+within the Settings keymap menu.
+
@node Android Fonts
-@section Font backends and selection under Android
+@section Font Backends and Selection under Android
@cindex fonts, android
Emacs supports two font backends under Android: they are respectively
to provide that style.
@node Android Troubleshooting
-@section What to do when something goes wrong on Android
+@section Troubleshooting Startup Problems on Android
@cindex troubleshooting, android
@cindex emacs -Q, android
your initialization or dump files from there instead.
@node Android Software
-@section Installing extra software on Android
+@section Installing Extra Software on Android
@cindex installing extra software on Android
@cindex installing Unix software on Android
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)
{
/* 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 (),
return (((state & ANDROID_CONTROL_MASK) ? ctrl_modifier : 0)
| ((state & ANDROID_SHIFT_MASK) ? shift_modifier : 0)
| ((state & ANDROID_ALT_MASK) ? meta_modifier : 0)
- | ((state & ANDROID_SUPER_MASK) ? super_modifier : 0));
+ | ((state & ANDROID_SUPER_MASK) ? super_modifier : 0)
+ | ((state & ANDROID_META_MASK) ? alt_modifier : 0));
}
static int
return (((state & ctrl_modifier) ? ANDROID_CONTROL_MASK : 0)
| ((state & shift_modifier) ? ANDROID_SHIFT_MASK : 0)
| ((state & meta_modifier) ? ANDROID_ALT_MASK : 0)
- | ((state & super_modifier) ? ANDROID_SUPER_MASK : 0));
+ | ((state & super_modifier) ? ANDROID_SUPER_MASK : 0)
+ | ((state & alt_modifier) ? ANDROID_META_MASK : 0));
}
static void android_frame_rehighlight (struct android_display_info *);