diff options
| author | Jules Aguillon | 2023-09-03 23:38:55 +0200 |
|---|---|---|
| committer | Jules Aguillon | 2023-09-03 23:38:55 +0200 |
| commit | 687d88f4f767190d2d60fe104a140381b6652d18 (patch) | |
| tree | e1826612c41d8e620e3b7869258366532018d925 /srcs/juloo.keyboard2/KeyModifier.java | |
| parent | b079e5cf436ccd4ef83ee00031b0955b1595ef1a (diff) | |
| download | unexpected-keyboard-687d88f4f767190d2d60fe104a140381b6652d18.tar.gz unexpected-keyboard-687d88f4f767190d2d60fe104a140381b6652d18.zip | |
Per-script numpad
The numeric layout and the optional right hand side numpad are modified
to show the digits belonging to the script used in the current layout.
The numpads are still defined as it was before. The digits are changed
in `modify_numpad` if needed.
Diffstat (limited to 'srcs/juloo.keyboard2/KeyModifier.java')
| -rw-r--r-- | srcs/juloo.keyboard2/KeyModifier.java | 105 |
1 files changed, 104 insertions, 1 deletions
diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java index 20834b9..32ee570 100644 --- a/srcs/juloo.keyboard2/KeyModifier.java +++ b/srcs/juloo.keyboard2/KeyModifier.java @@ -83,6 +83,20 @@ class KeyModifier return k; } + public static Map_char modify_numpad_script(String script) + { + if (script == null) + return map_char_none; + switch (script) + { + case "arabic": return map_char_numpad_arabic; + case "bengali": return map_char_numpad_bengali; + case "devanagari": return map_char_numpad_devanagari; + case "persian": return map_char_numpad_persian; + default: return map_char_none; + } + } + private static KeyValue apply_map_char(KeyValue k, Map_char map) { switch (k.getKind()) @@ -427,13 +441,18 @@ class KeyModifier return ks; } - private static abstract class Map_char + 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 char map_char_shift(char c) { switch (c) @@ -971,4 +990,88 @@ class KeyModifier } } }; + + private static final Map_char map_char_numpad_arabic = + 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; + } + } + }; } |
