abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/KeyModifier.java
diff options
context:
space:
mode:
authorJules Aguillon2024-04-01 22:57:53 +0200
committerJules Aguillon2024-04-01 23:01:21 +0200
commit3f6b6fd23253e5326d9ba29cac10be36305b3019 (patch)
treed4ab221a7ddbd45224d9742846e9531716ccf8fc /srcs/juloo.keyboard2/KeyModifier.java
parentf17afba7be0ddf91ae0e67dcfba3c24833c0f6cc (diff)
downloadunexpected-keyboard-3f6b6fd23253e5326d9ba29cac10be36305b3019.tar.gz
unexpected-keyboard-3f6b6fd23253e5326d9ba29cac10be36305b3019.zip
refactor: Apply the modmap in KeyModifier
This makes possible to apply other modifiers to mapped keys and ensures that the modmap really override the shift key behavior.
Diffstat (limited to 'srcs/juloo.keyboard2/KeyModifier.java')
-rw-r--r--srcs/juloo.keyboard2/KeyModifier.java11
1 files changed, 11 insertions, 0 deletions
diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java
index 70f7315..a5fcde2 100644
--- a/srcs/juloo.keyboard2/KeyModifier.java
+++ b/srcs/juloo.keyboard2/KeyModifier.java
@@ -10,6 +10,11 @@ public final class KeyModifier
private static HashMap<KeyValue, HashMap<Pointers.Modifiers, KeyValue>> _cache =
new HashMap<KeyValue, HashMap<Pointers.Modifiers, KeyValue>>();
+ /** The optional modmap takes priority over modifiers usual behaviors. Set to
+ [null] to disable. */
+ private static KeyboardData.Modmap _modmap = null;
+ public static void set_modmap(KeyboardData.Modmap mm) { _modmap = mm; }
+
/** Modify a key according to modifiers. */
public static KeyValue modify(KeyValue k, Pointers.Modifiers mods)
{
@@ -130,6 +135,12 @@ public final class KeyModifier
private static KeyValue apply_shift(KeyValue k)
{
+ if (_modmap != null)
+ {
+ KeyValue mapped = _modmap.shift.get(k);
+ if (mapped != null)
+ return mapped;
+ }
switch (k.getKind())
{
case Char: