abouttreesummaryrefslogcommitdiff
path: root/srcs
diff options
context:
space:
mode:
Diffstat (limited to 'srcs')
-rw-r--r--srcs/juloo.keyboard2/KeyValue.java9
-rw-r--r--srcs/juloo.keyboard2/KeyValueParser.java34
-rw-r--r--srcs/layouts/cyrl_lynyertz_sr.xml52
3 files changed, 50 insertions, 45 deletions
diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java
index b6c09d5..320eaaa 100644
--- a/srcs/juloo.keyboard2/KeyValue.java
+++ b/srcs/juloo.keyboard2/KeyValue.java
@@ -393,7 +393,14 @@ public final class KeyValue implements Comparable<KeyValue>
public static KeyValue makeCharKey(char c)
{
- return new KeyValue(String.valueOf(c), Kind.Char, c, 0);
+ return makeCharKey(c, null, 0);
+ }
+
+ public static KeyValue makeCharKey(char c, String symbol, int flags)
+ {
+ if (symbol == null)
+ symbol = String.valueOf(c);
+ return new KeyValue(symbol, Kind.Char, c, flags);
}
public static KeyValue makeComposePending(String symbol, int state, int flags)
diff --git a/srcs/juloo.keyboard2/KeyValueParser.java b/srcs/juloo.keyboard2/KeyValueParser.java
index 178046e..7e4ba26 100644
--- a/srcs/juloo.keyboard2/KeyValueParser.java
+++ b/srcs/juloo.keyboard2/KeyValueParser.java
@@ -9,21 +9,7 @@ Parse a key definition. The syntax for a key definition is:
- If [str] doesn't start with a [:] character, it is interpreted as an
arbitrary string key.
-[(kind)] specifies the kind of the key, it can be:
-- [str]: An arbitrary string key. The payload is the string to output when
- typed and is quoted by single quotes ([']). The payload can contain single
- quotes if they are escaped with a backslash ([\']).
-
-The [(attributes)] part is a space-separated list of attributes, all optional,
-of the form: [attrname='attrvalue'].
-
-Attributes can be:
-- [flags]: Add flags that change the behavior of the key.
- Value is a coma separated list of:
- - [dim]: Make the symbol dimmer on the keyboard.
- - [small]: Make the symbol smaller on the keyboard.
-- [symbol]: Specify the symbol that is rendered on the keyboard.
- It can contain single quotes if they are escaped: ([\']).
+For the different kinds and attributes, see doc/Possible-key-values.md.
Examples:
- [:str flags=dim,small symbol='MyKey':'My arbitrary string'].
@@ -36,6 +22,7 @@ public final class KeyValueParser
static Pattern ATTR_PAT;
static Pattern QUOTED_PAT;
static Pattern PAYLOAD_START_PAT;
+ static Pattern SINGLE_CHAR_PAT;
static public KeyValue parse(String str) throws ParseError
{
@@ -73,11 +60,14 @@ public final class KeyValueParser
switch (kind)
{
case "str":
- String payload = parseSingleQuotedString(m);
+ String str_payload = parseSingleQuotedString(m);
if (symbol == null)
- return KeyValue.makeStringKey(payload, flags);
- return KeyValue.makeStringKeyWithSymbol(payload, symbol, flags);
+ return KeyValue.makeStringKey(str_payload, flags);
+ return KeyValue.makeStringKeyWithSymbol(str_payload, symbol, flags);
+ case "char":
+ char char_payload = parseOneChar(m);
+ return KeyValue.makeCharKey(char_payload, symbol, flags);
default: break;
}
parseError("Unknown kind '"+kind+"'", m, 1);
@@ -91,6 +81,13 @@ public final class KeyValueParser
return m.group(1).replace("\\'", "'");
}
+ static char parseOneChar(Matcher m) throws ParseError
+ {
+ if (!match(m, SINGLE_CHAR_PAT))
+ parseError("Expected a character", m);
+ return m.group(0).charAt(0);
+ }
+
static int parseFlags(String s, Matcher m) throws ParseError
{
int flags = 0;
@@ -121,6 +118,7 @@ public final class KeyValueParser
ATTR_PAT = Pattern.compile("\\s*(\\w+)\\s*=");
QUOTED_PAT = Pattern.compile("'(([^'\\\\]+|\\\\')*)'");
PAYLOAD_START_PAT = Pattern.compile("\\s*:");
+ SINGLE_CHAR_PAT = Pattern.compile(".");
}
static void parseError(String msg, Matcher m) throws ParseError
diff --git a/srcs/layouts/cyrl_lynyertz_sr.xml b/srcs/layouts/cyrl_lynyertz_sr.xml
index 675c6b3..2d7ba60 100644
--- a/srcs/layouts/cyrl_lynyertz_sr.xml
+++ b/srcs/layouts/cyrl_lynyertz_sr.xml
@@ -8,32 +8,32 @@
<fn a="у" b="у̂" />
<fn a="cursor_left" b="home" />
<fn a="cursor_right" b="end" />
- <ctrl a="љ" b="q" />
- <ctrl a="њ" b="w" />
- <ctrl a="е" b="e" />
- <ctrl a="р" b="r" />
- <ctrl a="т" b="t" />
- <ctrl a="ж" b="y" />
- <ctrl a="у" b="u" />
- <ctrl a="и" b="i" />
- <ctrl a="о" b="o" />
- <ctrl a="п" b="p" />
- <ctrl a="а" b="a" />
- <ctrl a="с" b="s" />
- <ctrl a="д" b="d" />
- <ctrl a="ф" b="f" />
- <ctrl a="г" b="g" />
- <ctrl a="х" b="h" />
- <ctrl a="ј" b="j" />
- <ctrl a="к" b="k" />
- <ctrl a="л" b="l" />
- <ctrl a="з" b="z" />
- <ctrl a="џ" b="x" />
- <ctrl a="ц" b="c" />
- <ctrl a="в" b="v" />
- <ctrl a="б" b="b" />
- <ctrl a="н" b="n" />
- <ctrl a="м" b="m" />
+ <ctrl a="љ" b=":char symbol='љ':q" />
+ <ctrl a="њ" b=":char symbol='њ':w" />
+ <ctrl a="е" b=":char symbol='е':e" />
+ <ctrl a="р" b=":char symbol='р':r" />
+ <ctrl a="т" b=":char symbol='т':t" />
+ <ctrl a="ж" b=":char symbol='ж':y" />
+ <ctrl a="у" b=":char symbol='у':u" />
+ <ctrl a="и" b=":char symbol='и':i" />
+ <ctrl a="о" b=":char symbol='о':o" />
+ <ctrl a="п" b=":char symbol='п':p" />
+ <ctrl a="а" b=":char symbol='а':a" />
+ <ctrl a="с" b=":char symbol='с':s" />
+ <ctrl a="д" b=":char symbol='д':d" />
+ <ctrl a="ф" b=":char symbol='ф':f" />
+ <ctrl a="г" b=":char symbol='г':g" />
+ <ctrl a="х" b=":char symbol='х':h" />
+ <ctrl a="ј" b=":char symbol='ј':j" />
+ <ctrl a="к" b=":char symbol='к':k" />
+ <ctrl a="л" b=":char symbol='л':l" />
+ <ctrl a="з" b=":char symbol='з':z" />
+ <ctrl a="џ" b=":char symbol='џ':x" />
+ <ctrl a="ц" b=":char symbol='ц':c" />
+ <ctrl a="в" b=":char symbol='в':v" />
+ <ctrl a="б" b=":char symbol='б':b" />
+ <ctrl a="н" b=":char symbol='н':n" />
+ <ctrl a="м" b=":char symbol='м':m" />
</modmap>
<row>
<key key0="љ" ne="1" se="loc esc"/>