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);