From 02124dd71ffc42bde9b2b333b87a9d3b6f67043c Mon Sep 17 00:00:00 2001 From: Jules Aguillon Date: Sun, 5 Jun 2022 13:51:09 +0200 Subject: Add combining 'accent_arrow_right' It's the first modifier that uses combining diacritics. Whether it should be represented as a modifier or a new kind of key can be reconsidered later. --- srcs/juloo.keyboard2/KeyModifier.java | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) (limited to 'srcs/juloo.keyboard2/KeyModifier.java') diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java index b4de76b..f6ffa75 100644 --- a/srcs/juloo.keyboard2/KeyModifier.java +++ b/srcs/juloo.keyboard2/KeyModifier.java @@ -64,6 +64,7 @@ class KeyModifier return maybe_modify_char(k, map_char_box(k.char_)); case KeyValue.MOD_SLASH: return maybe_modify_char(k, map_char_slash(k.char_)); + case KeyValue.MOD_ARROW_RIGHT: return apply_combining(k, "\u20D7"); default: return k; } } @@ -76,11 +77,24 @@ class KeyModifier return maybe_modify_char(k, c); } + private static KeyValue apply_combining(KeyValue k, String combining) + { + if (k.char_ == KeyValue.CHAR_NONE) + return k; + return KeyValue.getKeyByName(String.valueOf(k.char_) + combining); + } + private static KeyValue apply_shift(KeyValue k) { char c = k.char_; if (c == KeyValue.CHAR_NONE) - return k; + { + // The key is a string + if (k.code == KeyValue.EVENT_NONE) + return k.withCharAndSymbol(k.symbol.toUpperCase(), KeyValue.CHAR_NONE); + else + return k; + } c = map_char_shift(c); if (c == k.char_) c = Character.toUpperCase(c); -- cgit v1.2.3