abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2/KeyboardData.java
diff options
context:
space:
mode:
Diffstat (limited to 'srcs/juloo.keyboard2/KeyboardData.java')
-rw-r--r--srcs/juloo.keyboard2/KeyboardData.java25
1 files changed, 21 insertions, 4 deletions
diff --git a/srcs/juloo.keyboard2/KeyboardData.java b/srcs/juloo.keyboard2/KeyboardData.java
index c8dcd13..25110ef 100644
--- a/srcs/juloo.keyboard2/KeyboardData.java
+++ b/srcs/juloo.keyboard2/KeyboardData.java
@@ -515,18 +515,35 @@ public final class KeyboardData
public static class Modmap
{
public final Map<KeyValue, KeyValue> shift;
+ public final Map<KeyValue, KeyValue> fn;
- public Modmap(Map<KeyValue, KeyValue> s)
+ public Modmap(Map<KeyValue, KeyValue> s, Map<KeyValue, KeyValue> f)
{
shift = s;
+ fn = f;
}
public static Modmap parse(XmlPullParser parser) throws Exception
{
HashMap<KeyValue, KeyValue> shift = new HashMap<KeyValue, KeyValue>();
- while (expect_tag(parser, "shift"))
- parse_mapping(parser, shift);
- return new Modmap(shift);
+ HashMap<KeyValue, KeyValue> fn = new HashMap<KeyValue, KeyValue>();
+
+ while (next_tag(parser))
+ {
+ switch (parser.getName())
+ {
+ case "shift":
+ parse_mapping(parser, shift);
+ break;
+ case "fn":
+ parse_mapping(parser, fn);
+ break;
+ default:
+ throw error(parser, "Expecting tag <shift> or <fn>, got <" + parser.getName() + ">");
+ }
+ }
+
+ return new Modmap(shift, fn);
}
private static void parse_mapping(XmlPullParser parser, Map<KeyValue, KeyValue> dst) throws Exception