diff --git a/res/values/arrays.xml b/res/values/arrays.xml
index 2b2514a..60a956b 100644
--- a/res/values/arrays.xml
+++ b/res/values/arrays.xml
@@ -28,6 +28,8 @@
- jcuken_ua
- bangla
- hindi
+ - he_il_1452_1
+ - he_il_1452_2
- custom
@@ -58,6 +60,8 @@
- ЙЦУКЕН (Українська)
- বাংলা
- हिन्दी
+ - Hebrew SI-1452-1
+ - Hebrew SI-1452-2
- @string/pref_layout_e_custom
diff --git a/res/xml/he_il_1452_1.xml b/res/xml/he_il_1452_1.xml
new file mode 100644
index 0000000..c007bbb
--- /dev/null
+++ b/res/xml/he_il_1452_1.xml
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/xml/he_il_1452_2.xml b/res/xml/he_il_1452_2.xml
new file mode 100644
index 0000000..78d1536
--- /dev/null
+++ b/res/xml/he_il_1452_2.xml
@@ -0,0 +1,39 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/res/xml/method.xml b/res/xml/method.xml
index 28977ab..3cdfd62 100644
--- a/res/xml/method.xml
+++ b/res/xml/method.xml
@@ -9,6 +9,7 @@
+
diff --git a/res/xml/qwerty.xml b/res/xml/qwerty.xml
index 31429c1..87b56f5 100644
--- a/res/xml/qwerty.xml
+++ b/res/xml/qwerty.xml
@@ -4,7 +4,7 @@
-
+
diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java
index bd0db23..87ce92d 100644
--- a/srcs/juloo.keyboard2/Config.java
+++ b/srcs/juloo.keyboard2/Config.java
@@ -362,6 +362,8 @@ final class Config
case "qwertz_hu": id = R.xml.qwertz_hu; break;
case "qwertz_sk": id = R.xml.qwertz_sk; break;
case "ru_jcuken": id = R.xml.local_ru_jcuken; break;
+ case "he_il_1452_1": id = R.xml.he_il_1452_1; break;
+ case "he_il_1452_2": id = R.xml.he_il_1452_2; break;
}
return KeyboardData.load(res, id);
}
diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java
index 454cc29..c00ff07 100644
--- a/srcs/juloo.keyboard2/KeyModifier.java
+++ b/srcs/juloo.keyboard2/KeyModifier.java
@@ -156,6 +156,10 @@ class KeyModifier
{
case F11: return "f11";
case F12: return "f12";
+ case SHINDOT: return "shindot";
+ case SINDOT: return "sindot";
+ case OLE: return "ole";
+ case METEG: return "meteg";
default: return null;
}
}
@@ -198,6 +202,7 @@ class KeyModifier
case ',': return "·";
case '!': return "¡";
case '?': return "¿";
+ case '|': return "¦";
// arrows
case '↖': return "⇖";
case '↑': return "⇑";
@@ -243,6 +248,20 @@ class KeyModifier
case '⊂': return "⊆";
case '⊃': return "⊇";
case '±': return "∓";
+ // hebrew niqqud
+ case 'ק': return "qamats"; // kamatz
+ case 'ר': return "hataf_qamats"; // reduced kamatz
+ case 'ו': return "holam";
+ case 'ם': return "rafe";
+ case 'פ': return "patah"; // patach
+ case 'ש': return "sheva";
+ case 'ד': return "dagesh"; // or mapiq
+ case 'ח': return "hiriq";
+ case 'ף': return "hataf_patah"; // reduced patach
+ case 'ז': return "qubuts"; // kubuts
+ case 'ס': return "segol";
+ case 'ב': return "hataf_segol"; // reduced segol
+ case 'צ': return "tsere";
// other
case ' ': return "nbsp";
default: return null;
diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java
index 4a6223e..e93e61f 100644
--- a/srcs/juloo.keyboard2/KeyValue.java
+++ b/srcs/juloo.keyboard2/KeyValue.java
@@ -72,7 +72,11 @@ final class KeyValue
{
REMOVED,
F11,
- F12
+ F12,
+ SHINDOT,
+ SINDOT,
+ OLE,
+ METEG
}
public static enum Kind
@@ -357,10 +361,50 @@ final class KeyValue
case "space": return charKey("\r", ' ', FLAG_KEY_FONT | FLAG_SECONDARY);
case "nbsp": return charKey("\u237d", '\u00a0', FLAG_SMALLER_FONT);
+ /* bidi */
+ case "lrm": return charKey("↱", '\u200e', 0); // Send left-to-right mark
+ case "rlm": return charKey("↰", '\u200f', 0); // Send right-to-left mark
+ case "b(": return charKey("(", ')', 0);
+ case "b)": return charKey(")", '(', 0);
+ case "b[": return charKey("[", ']', 0);
+ case "b]": return charKey("]", '[', 0);
+ case "b{": return charKey("{", '}', 0);
+ case "b}": return charKey("}", '{', 0);
+ case "blt": return charKey("<", '>', 0);
+ case "bgt": return charKey(">", '<', 0);
+
case "removed": return placeholderKey(Placeholder.REMOVED);
case "f11_placeholder": return placeholderKey(Placeholder.F11);
case "f12_placeholder": return placeholderKey(Placeholder.F12);
+ /* hebrew niqqud */
+ case "qamats": return charKey("\u05E7\u05B8", '\u05B8', 0); // kamatz
+ case "patah": return charKey("\u05E4\u05B7", '\u05B7', 0); // patach
+ case "sheva": return charKey("\u05E9\u05B0", '\u05B0', 0);
+ case "dagesh": return charKey("\u05D3\u05BC", '\u05BC', 0); // or mapiq
+ case "hiriq": return charKey("\u05D7\u05B4", '\u05B4', 0);
+ case "segol": return charKey("\u05E1\u05B6", '\u05B6', 0);
+ case "tsere": return charKey("\u05E6\u05B5", '\u05B5', 0);
+ case "holam": return charKey("\u05D5\u05B9", '\u05B9', 0);
+ case "qubuts": return charKey("\u05E7\u05BB", '\u05BB', 0); // kubuts
+ case "hataf_patah": return charKey("\u05D7\u05B2\u05E4\u05B7", '\u05B2', 0); // reduced patach
+ case "hataf_qamats": return charKey("\u05D7\u05B3\u05E7\u05B8", '\u05B3', 0); // reduced kamatz
+ case "hataf_segol": return charKey("\u05D7\u05B1\u05E1\u05B6", '\u05B1', 0); // reduced segol
+ case "shindot": return charKey("\u05E9\u05C1", '\u05C1', 0);
+ case "shindot_placeholder": return placeholderKey(Placeholder.SHINDOT);
+ case "sindot": return charKey("\u05E9\u05C2", '\u05C2', 0);
+ case "sindot_placeholder": return placeholderKey(Placeholder.SINDOT);
+ /* hebrew punctuation */
+ case "geresh": return charKey("\u05F3", '\u05F3', 0);
+ case "gershayim": return charKey("\u05F4", '\u05F4', 0);
+ case "maqaf": return charKey("\u05BE", '\u05BE', 0);
+ /* hebrew biblical */
+ case "rafe": return charKey("\u05E4\u05BF", '\u05BF', 0);
+ case "ole": return charKey("\u05E2\u05AB", '\u05AB', 0);
+ case "ole_placeholder": return placeholderKey(Placeholder.OLE);
+ case "meteg": return charKey("\u05DE\u05BD", '\u05BD', 0); // or siluq or sof-pasuq
+ case "meteg_placeholder": return placeholderKey(Placeholder.METEG);
+
case "copy": return editingKey("copy", Editing.COPY);
case "paste": return editingKey("paste", Editing.PASTE);
case "cut": return editingKey("cut", Editing.CUT);