abouttreesummaryrefslogcommitdiff
diff options
context:
space:
mode:
-rw-r--r--srcs/juloo.keyboard2/KeyEventHandler.java2
-rw-r--r--srcs/juloo.keyboard2/KeyModifier.java11
2 files changed, 12 insertions, 1 deletions
diff --git a/srcs/juloo.keyboard2/KeyEventHandler.java b/srcs/juloo.keyboard2/KeyEventHandler.java
index 17c7d7b..a0487d7 100644
--- a/srcs/juloo.keyboard2/KeyEventHandler.java
+++ b/srcs/juloo.keyboard2/KeyEventHandler.java
@@ -420,7 +420,7 @@ public final class KeyEventHandler
void evaluate_macro_loop(final KeyValue[] keys, int i, Pointers.Modifiers mods, final boolean autocap_paused)
{
boolean should_delay = false;
- KeyValue kv = KeyModifier.modify(keys[i], mods);
+ KeyValue kv = KeyModifier.modify_no_modmap(keys[i], mods);
if (kv != null)
{
if (kv.hasFlagsAny(KeyValue.FLAG_LATCH))
diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java
index 2ef5445..cf9af3b 100644
--- a/srcs/juloo.keyboard2/KeyModifier.java
+++ b/srcs/juloo.keyboard2/KeyModifier.java
@@ -29,6 +29,17 @@ public final class KeyModifier
return r;
}
+ /** Like [modify] but do not apply user modmaps. Used when evaluating macros
+ to avoid loops. */
+ public static KeyValue modify_no_modmap(KeyValue k, Pointers.Modifiers mods)
+ {
+ Modmap saved = _modmap;
+ _modmap = null;
+ KeyValue r = modify(k, mods);
+ _modmap = saved;
+ return r;
+ }
+
public static KeyValue modify(KeyValue k, KeyValue mod)
{
switch (mod.getKind())