[java-atk-wrapper] Add support for alt graph modifier



commit 6e505a1ecbacef6e0cb083dab6b972dca58fc1ad
Author: Samuel Thibault <samuel thibault ens-lyon org>
Date:   Sat Jul 27 23:05:58 2019 +0200

    Add support for alt graph modifier

 jni/src/AtkWrapper.c                             | 8 ++++++++
 wrapper/org/GNOME/Accessibility/AtkKeyEvent.java | 4 ++++
 2 files changed, 12 insertions(+)
---
diff --git a/jni/src/AtkWrapper.c b/jni/src/AtkWrapper.c
index 18a0fad..f6c5342 100644
--- a/jni/src/AtkWrapper.c
+++ b/jni/src/AtkWrapper.c
@@ -44,6 +44,7 @@ extern "C" {
 #define GDK_SHIFT_MASK (1 << 0)
 #define GDK_CONTROL_MASK (1 << 2)
 #define GDK_MOD1_MASK (1 << 3)
+#define GDK_MOD5_MASK (1 << 7)
 #define GDK_META_MASK (1 << 28)
 
 typedef enum _SignalType SignalType;
@@ -1152,6 +1153,13 @@ key_dispatch_handler (gpointer p)
     event->state |= GDK_META_MASK;
   }
 
+  jfieldID jfidAltGr = (*jniEnv)->GetFieldID(jniEnv, classAtkKeyEvent, "isAltGrKeyDown", "Z");
+  jboolean jAltGrKeyDown = (*jniEnv)->GetBooleanField(jniEnv, jAtkKeyEvent, jfidAltGr);
+  if (jAltGrKeyDown)
+  {
+    event->state |= GDK_MOD5_MASK;
+  }
+
   // keyval
   jfieldID jfidKeyval = (*jniEnv)->GetFieldID(jniEnv, classAtkKeyEvent, "keyval", "I");
   jint jkeyval = (*jniEnv)->GetIntField(jniEnv, jAtkKeyEvent, jfidKeyval);
diff --git a/wrapper/org/GNOME/Accessibility/AtkKeyEvent.java 
b/wrapper/org/GNOME/Accessibility/AtkKeyEvent.java
index edf28ec..3cb66c1 100644
--- a/wrapper/org/GNOME/Accessibility/AtkKeyEvent.java
+++ b/wrapper/org/GNOME/Accessibility/AtkKeyEvent.java
@@ -34,6 +34,7 @@ public class AtkKeyEvent {
   public boolean isCtrlKeyDown = false;
   public boolean isAltKeyDown = false;
   public boolean isMetaKeyDown = false;
+  public boolean isAltGrKeyDown = false;
   public int keyval = 0;
   public String string;
   public int keycode;
@@ -104,6 +105,9 @@ public class AtkKeyEvent {
     if ((modifierMask & InputEvent.META_DOWN_MASK) != 0) {
       isMetaKeyDown = true;
     }
+    if ((modifierMask & InputEvent.ALT_GRAPH_DOWN_MASK) != 0) {
+      isAltGrKeyDown = true;
+    }
 
     GNOMEKeyMapping.GNOMEKeyInfo keyInfo = GNOMEKeyMapping.getKey(e);
     switch (e.getKeyChar()) {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]