abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/ExtraKeys.java
diff options
context:
space:
mode:
authorJules Aguillon2023-06-24 23:29:24 +0200
committerJules Aguillon2023-06-24 23:29:24 +0200
commit9bcfec8bd1c1662b250c0a313505aa6e0bc06383 (patch)
tree4b1e257793f60fc812e1c2fc7d2bfaba28b496b7 /srcs/juloo.keyboard2/ExtraKeys.java
parent5fc68373d3ee0ce61cfb819f0e623e3a3f63c374 (diff)
downloadunexpected-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.java57
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;
+ }
+}