diff options
| author | Jules Aguillon | 2023-06-24 23:29:24 +0200 |
|---|---|---|
| committer | Jules Aguillon | 2023-06-24 23:29:24 +0200 |
| commit | 9bcfec8bd1c1662b250c0a313505aa6e0bc06383 (patch) | |
| tree | 4b1e257793f60fc812e1c2fc7d2bfaba28b496b7 /srcs/juloo.keyboard2/ExtraKeys.java | |
| parent | 5fc68373d3ee0ce61cfb819f0e623e3a3f63c374 (diff) | |
| download | unexpected-keyboard-9bcfec8bd1c1662b250c0a313505aa6e0bc06383.tar.gz unexpected-keyboard-9bcfec8bd1c1662b250c0a313505aa6e0bc06383.zip | |
Per-script extra keys
Allows to define a locale's script in 'method.xml' and use that to add
the extra keys for a locale to layouts of the same script only.
A locale of an undefined script will add its extra keys to every
layouts. A layout of an undefined script will have the extra keys of all
the enabled locales.
Diffstat (limited to 'srcs/juloo.keyboard2/ExtraKeys.java')
| -rw-r--r-- | srcs/juloo.keyboard2/ExtraKeys.java | 57 |
1 files changed, 57 insertions, 0 deletions
diff --git a/srcs/juloo.keyboard2/ExtraKeys.java b/srcs/juloo.keyboard2/ExtraKeys.java new file mode 100644 index 0000000..22187c1 --- /dev/null +++ b/srcs/juloo.keyboard2/ExtraKeys.java @@ -0,0 +1,57 @@ +package juloo.keyboard2; + +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; +import java.util.Set; + +class ExtraKeys +{ + Map<String, List<KeyValue>> _keys_per_script; + + public ExtraKeys() + { + _keys_per_script = new HashMap<String, List<KeyValue>>(); + } + + public void add_keys_for_script(String script, List<KeyValue> kvs) + { + List<KeyValue> ks = _keys_per_script.get(script); + if (ks == null) ks = new ArrayList<KeyValue>(); + ks.addAll(kvs); + _keys_per_script.put(script, ks); + } + + /** Add the keys that should be added to the keyboard into [dst]. [null] is + a valid script. */ + public void compute(Set<KeyValue> dst, String script) + { + if (script == null) + { + for (String sc : _keys_per_script.keySet()) + get_keys_of_script(dst, sc); + } + else + { + get_keys_of_script(dst, null); + get_keys_of_script(dst, script); + } + } + + void get_keys_of_script(Set<KeyValue> dst, String script) + { + List<KeyValue> ks = _keys_per_script.get(script); + if (ks != null) + dst.addAll(ks); + } + + public static List<KeyValue> parse_extra_keys(String str) + { + List<KeyValue> dst = new ArrayList<KeyValue>(); + String[] ks = str.split("\\|"); + for (int i = 0; i < ks.length; i++) + dst.add(KeyValue.getKeyByName(ks[i])); + return dst; + } +} |
