From dc3a303af1ef72602b58292e5cc938944d6954ba Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Mon, 18 Mar 2024 00:14:19 +0100 Subject: refactor: Allow modifier of other key kinds Allow keys of a kind other than Modifier to be a modifier. This requires writing a compareTo function for KeyValue. Fields are compared in this order: Kind, value, flags, symbol. --- srcs/juloo.keyboard2/KeyEventHandler.java | 37 ++++++++++++++++++------------- 1 file changed, 21 insertions(+), 16 deletions(-) (limited to 'srcs/juloo.keyboard2/KeyEventHandler.java') diff --git a/srcs/juloo.keyboard2/KeyEventHandler.java b/srcs/juloo.keyboard2/KeyEventHandler.java index de9fe8c..a7f9ecb 100644 --- a/srcs/juloo.keyboard2/KeyEventHandler.java +++ b/srcs/juloo.keyboard2/KeyEventHandler.java @@ -113,7 +113,7 @@ public final class KeyEventHandler implements Config.IKeyEventHandler void update_meta_state(Pointers.Modifiers mods) { // Released modifiers - Iterator it = _mods.diff(mods); + Iterator it = _mods.diff(mods); while (it.hasNext()) sendMetaKeyForModifier(it.next(), false); // Activated modifiers @@ -147,23 +147,28 @@ public final class KeyEventHandler implements Config.IKeyEventHandler } } - void sendMetaKeyForModifier(KeyValue.Modifier mod, boolean down) + void sendMetaKeyForModifier(KeyValue kv, boolean down) { - switch (mod) + switch (kv.getKind()) { - case CTRL: - sendMetaKey(KeyEvent.KEYCODE_CTRL_LEFT, KeyEvent.META_CTRL_LEFT_ON | KeyEvent.META_CTRL_ON, down); - break; - case ALT: - sendMetaKey(KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.META_ALT_LEFT_ON | KeyEvent.META_ALT_ON, down); - break; - case SHIFT: - sendMetaKey(KeyEvent.KEYCODE_SHIFT_LEFT, KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON, down); - break; - case META: - sendMetaKey(KeyEvent.KEYCODE_META_LEFT, KeyEvent.META_META_LEFT_ON | KeyEvent.META_META_ON, down); - break; - default: + case Modifier: + switch (kv.getModifier()) + { + case CTRL: + sendMetaKey(KeyEvent.KEYCODE_CTRL_LEFT, KeyEvent.META_CTRL_LEFT_ON | KeyEvent.META_CTRL_ON, down); + break; + case ALT: + sendMetaKey(KeyEvent.KEYCODE_ALT_LEFT, KeyEvent.META_ALT_LEFT_ON | KeyEvent.META_ALT_ON, down); + break; + case SHIFT: + sendMetaKey(KeyEvent.KEYCODE_SHIFT_LEFT, KeyEvent.META_SHIFT_LEFT_ON | KeyEvent.META_SHIFT_ON, down); + break; + case META: + sendMetaKey(KeyEvent.KEYCODE_META_LEFT, KeyEvent.META_META_LEFT_ON | KeyEvent.META_META_ON, down); + break; + default: + break; + } break; } } -- cgit v1.2.3