abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/KeyModifier.java
diff options
context:
space:
mode:
Diffstat (limited to 'srcs/juloo.keyboard2/KeyModifier.java')
-rw-r--r--srcs/juloo.keyboard2/KeyModifier.java195
1 files changed, 21 insertions, 174 deletions
diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java
index 34590a2..3fd2dd6 100644
--- a/srcs/juloo.keyboard2/KeyModifier.java
+++ b/srcs/juloo.keyboard2/KeyModifier.java
@@ -81,7 +81,7 @@ public final class KeyModifier
case HORN: return apply_compose(k, ComposeKeyData.accent_horn);
case HOOK_ABOVE: return apply_compose(k, ComposeKeyData.accent_hook_above);
case DOUBLE_GRAVE: return apply_compose(k, ComposeKeyData.accent_double_grave);
- case ARROW_RIGHT: return apply_map_char(k, map_char_arrow_right);
+ case ARROW_RIGHT: return apply_combining_char(k, "\u20D7");
default: return k;
}
}
@@ -104,35 +104,23 @@ public final class KeyModifier
return k;
}
- public static Map_char modify_numpad_script(String numpad_script)
+ /** Return the compose state that modifies the numpad script. */
+ public static int modify_numpad_script(String numpad_script)
{
if (numpad_script == null)
- return map_char_none;
+ return -1;
switch (numpad_script)
{
- case "hindu-arabic": return map_char_numpad_hindu;
- case "bengali": return map_char_numpad_bengali;
- case "devanagari": return map_char_numpad_devanagari;
- case "persian": return map_char_numpad_persian;
- case "gujarati": return map_char_numpad_gujarati;
- case "kannada": return map_char_numpad_kannada;
- default: return map_char_none;
+ case "hindu-arabic": return ComposeKeyData.numpad_hindu;
+ case "bengali": return ComposeKeyData.numpad_bengali;
+ case "devanagari": return ComposeKeyData.numpad_devanagari;
+ case "persian": return ComposeKeyData.numpad_persian;
+ case "gujarati": return ComposeKeyData.numpad_gujarati;
+ case "kannada": return ComposeKeyData.numpad_kannada;
+ default: return -1;
}
}
- private static KeyValue apply_map_char(KeyValue k, Map_char map)
- {
- switch (k.getKind())
- {
- case Char:
- char kc = k.getChar();
- String modified = map.apply(kc);
- if (modified != null)
- return KeyValue.makeStringKey(modified, k.getFlags());
- }
- return k;
- }
-
/** Apply the given compose state or fallback to the dead_char. */
private static KeyValue apply_compose_or_dead_char(KeyValue k, int state, char dead_char)
{
@@ -172,6 +160,16 @@ public final class KeyModifier
return k;
}
+ private static KeyValue apply_combining_char(KeyValue k, String combining)
+ {
+ switch (k.getKind())
+ {
+ case Char:
+ return KeyValue.makeStringKey(k.getChar() + combining, k.getFlags());
+ }
+ return k;
+ }
+
private static KeyValue apply_shift(KeyValue k)
{
if (_modmap != null)
@@ -346,157 +344,6 @@ public final class KeyModifier
return shifted;
}
- public static abstract class Map_char
- {
- /** Modify a char or return [null] if the modifier do not apply. Return a
- [String] that can contains combining diacritics. */
- public abstract String apply(char c);
- }
-
- private static final Map_char map_char_none =
- new Map_char() {
- public String apply(char _c) { return null; }
- };
-
- private static final Map_char map_char_arrow_right =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- default: return c + "\u20D7";
- }
- }
- };
-
- // Used with Arabic despite the name; called "Hindi numerals" in Arabic
- // map_char_numpad_devanagari is used in Hindi
- private static final Map_char map_char_numpad_hindu =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "٠";
- case '1': return "١";
- case '2': return "٢";
- case '3': return "٣";
- case '4': return "٤";
- case '5': return "٥";
- case '6': return "٦";
- case '7': return "٧";
- case '8': return "٨";
- case '9': return "٩";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_bengali =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "০";
- case '1': return "১";
- case '2': return "২";
- case '3': return "৩";
- case '4': return "৪";
- case '5': return "৫";
- case '6': return "৬";
- case '7': return "৭";
- case '8': return "৮";
- case '9': return "৯";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_devanagari =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "०";
- case '1': return "१";
- case '2': return "२";
- case '3': return "३";
- case '4': return "४";
- case '5': return "५";
- case '6': return "६";
- case '7': return "७";
- case '8': return "८";
- case '9': return "९";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_persian =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "۰";
- case '1': return "۱";
- case '2': return "۲";
- case '3': return "۳";
- case '4': return "۴";
- case '5': return "۵";
- case '6': return "۶";
- case '7': return "۷";
- case '8': return "۸";
- case '9': return "۹";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_gujarati =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "૦";
- case '1': return "૧";
- case '2': return "૨";
- case '3': return "૩";
- case '4': return "૪";
- case '5': return "૫";
- case '6': return "૬";
- case '7': return "૭";
- case '8': return "૮";
- case '9': return "૯";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_kannada =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "೦";
- case '1': return "೧";
- case '2': return "೨";
- case '3': return "೩";
- case '4': return "೪";
- case '5': return "೫";
- case '6': return "೬";
- case '7': return "೭";
- case '8': return "೮";
- case '9': return "೯";
- default: return null;
- }
- }
- };
-
/** Compose the precomposed initial with the medial [kv]. */
private static KeyValue combine_hangul_initial(KeyValue kv, int precomposed)
{