summaryrefslogtreecommitdiff
path: root/java/org/gnu/emacs/EmacsNative.java
diff options
context:
space:
mode:
Diffstat (limited to 'java/org/gnu/emacs/EmacsNative.java')
-rw-r--r--java/org/gnu/emacs/EmacsNative.java72
1 files changed, 72 insertions, 0 deletions
diff --git a/java/org/gnu/emacs/EmacsNative.java b/java/org/gnu/emacs/EmacsNative.java
new file mode 100644
index 00000000000..6550e6fa2a1
--- /dev/null
+++ b/java/org/gnu/emacs/EmacsNative.java
@@ -0,0 +1,72 @@
+/* Communication module for Android terminals. -*- c-file-style: "GNU" -*-
+
+Copyright (C) 2023 Free Software Foundation, Inc.
+
+This file is part of GNU Emacs.
+
+GNU Emacs is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or (at
+your option) any later version.
+
+GNU Emacs is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Emacs. If not, see <https://www.gnu.org/licenses/>. */
+
+package org.gnu.emacs;
+
+import java.lang.System;
+
+import android.content.res.AssetManager;
+
+public class EmacsNative
+{
+ /* Set certain parameters before initializing Emacs. This proves
+ that libemacs.so is being loaded from Java code.
+
+ assetManager must be the asset manager associated with the
+ context that is loading Emacs. It is saved and remains for the
+ remainder the lifetime of the Emacs process.
+
+ filesDir must be the package's data storage location for the
+ current Android user.
+
+ libDir must be the package's data storage location for native
+ libraries. It is used as PATH.
+
+ emacsService must be the emacsService singleton. */
+ public static native void setEmacsParams (AssetManager assetManager,
+ String filesDir,
+ String libDir,
+ EmacsService emacsService);
+
+ /* Initialize Emacs with the argument array ARGV. Each argument
+ must contain a NULL terminated string, or else the behavior is
+ undefined. */
+ public static native void initEmacs (String argv[]);
+
+ /* Abort and generate a native core dump. */
+ public static native void emacsAbort ();
+
+ /* Send an ANDROID_CONFIGURE_NOTIFY event. */
+ public static native void sendConfigureNotify (short window, long time,
+ int x, int y, int width,
+ int height);
+
+ /* Send an ANDROID_KEY_PRESS event. */
+ public static native void sendKeyPress (short window, long time, int state,
+ int keyCode);
+
+ /* Send an ANDROID_KEY_RELEASE event. */
+ public static native void sendKeyRelease (short window, long time, int state,
+ int keyRelease);
+
+ static
+ {
+ System.loadLibrary ("emacs");
+ };
+};