abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/KeyboardData.java
diff options
context:
space:
mode:
authorJules Aguillon2022-11-26 22:30:45 +0100
committerJules Aguillon2022-11-26 22:30:45 +0100
commite745c812691462380695da2275757e3f29bbbdb2 (patch)
tree1a6c9e62fffa6085455b9e2323533927a01a292d /srcs/juloo.keyboard2/KeyboardData.java
parent09d984a1ab597cceab8a416b3f3cbf60bc1a5525 (diff)
downloadunexpected-keyboard-e745c812691462380695da2275757e3f29bbbdb2.tar.gz
unexpected-keyboard-e745c812691462380695da2275757e3f29bbbdb2.zip
Allow using a custom layout
Add an option for specifying an XML layout description as a string. The option is a bit rough at the moment: - No documentation, users have to be aware of the keyboard's code to use this option. - No error are shown, the layout will fallback to qwerty on error.
Diffstat (limited to 'srcs/juloo.keyboard2/KeyboardData.java')
-rw-r--r--srcs/juloo.keyboard2/KeyboardData.java23
1 files changed, 22 insertions, 1 deletions
diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java
index 640ed3b..7b50f98 100644
--- a/srcs/juloo.keyboard2/KeyboardData.java
+++ b/srcs/juloo.keyboard2/KeyboardData.java
@@ -1,6 +1,9 @@
package juloo.keyboard2;
import android.content.res.Resources;
+import android.content.res.XmlResourceParser;
+import android.util.Xml;
+import java.io.StringReader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -126,6 +129,7 @@ class KeyboardData
return _pin_entry;
}
+ /** Load a layout from a resource ID. Returns [null] on error. */
public static KeyboardData load(Resources res, int id)
{
KeyboardData l = _layoutCache.get(id);
@@ -133,7 +137,9 @@ class KeyboardData
{
try
{
- l = parse_keyboard(res.getXml(id));
+ XmlResourceParser parser = res.getXml(id);
+ l = parse_keyboard(parser);
+ parser.close();
_layoutCache.put(id, l);
}
catch (Exception e)
@@ -144,6 +150,21 @@ class KeyboardData
return l;
}
+ /** Load a layout from a string. Returns [null] on error. */
+ public static KeyboardData load_string(String src)
+ {
+ try
+ {
+ XmlPullParser parser = Xml.newPullParser();
+ parser.setInput(new StringReader(src));
+ return parse_keyboard(parser);
+ }
+ catch (Exception e)
+ {
+ return null;
+ }
+ }
+
private static KeyboardData parse_keyboard(XmlPullParser parser) throws Exception
{
if (!expect_tag(parser, "keyboard"))