abouttreesummaryrefslogcommitdiff
path: root/srcs/juloo.keyboard2
diff options
context:
space:
mode:
authorJules Aguillon2024-12-11 11:18:44 +0100
committerJules Aguillon2024-12-11 11:24:50 +0100
commite4a49d5256373111eb04ea7d31f3c89d1ec9f6ea (patch)
tree89874e2e35c57767e08be247ffa51c5133cda3e0 /srcs/juloo.keyboard2
parentfe7906a1945f0746a70c6323b1aef2c950ebf250 (diff)
downloadunexpected-keyboard-e4a49d5256373111eb04ea7d31f3c89d1ec9f6ea.tar.gz
unexpected-keyboard-e4a49d5256373111eb04ea7d31f3c89d1ec9f6ea.zip
Move numpad script maps to the compose system
This removes the Map_char interface, which required a lot of boilerplate to use.
Diffstat (limited to 'srcs/juloo.keyboard2')
-rw-r--r--srcs/juloo.keyboard2/ComposeKey.java2
-rw-r--r--srcs/juloo.keyboard2/ComposeKeyData.java24
-rw-r--r--srcs/juloo.keyboard2/Config.java12
-rw-r--r--srcs/juloo.keyboard2/KeyModifier.java195
4 files changed, 45 insertions, 188 deletions
diff --git a/srcs/juloo.keyboard2/ComposeKey.java b/srcs/juloo.keyboard2/ComposeKey.java
index 9575486..9a4d399 100644
--- a/srcs/juloo.keyboard2/ComposeKey.java
+++ b/srcs/juloo.keyboard2/ComposeKey.java
@@ -27,7 +27,7 @@ public final class ComposeKey
}
/** Apply the pending compose sequence to char [c]. */
- static KeyValue apply(int prev, char c)
+ public static KeyValue apply(int prev, char c)
{
char[] states = ComposeKeyData.states;
char[] edges = ComposeKeyData.edges;
diff --git a/srcs/juloo.keyboard2/ComposeKeyData.java b/srcs/juloo.keyboard2/ComposeKeyData.java
index b51c9a3..a6a9d64 100644
--- a/srcs/juloo.keyboard2/ComposeKeyData.java
+++ b/srcs/juloo.keyboard2/ComposeKeyData.java
@@ -112,9 +112,11 @@ public final class ComposeKeyData
"\u203a\uFFFF\u0072\u0065\u006d\u006f\u0076\u0065\u0064\u2213\u2219\u03f4\u220f\u2211\u03d0\u0263\u03f5\u03d1\u03f0\u03d6\u03f1\u03c2\u03d2\u03d5\u0465\uFFFF\ua641\u0456\u0458\u046b\u0467\u047b\u0455\uFFFF\ua64b\u044c\uFFFF\ua651\u044a\u0454\u0438\uFFFF\ua66f\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0073\u0065\u0067\u006f\u006c\uFFFF\u0064\u0061\u0067\u0065\u0073\u0068\uFFFF\u0068\u006f\u006c\u0061\u006d\uFFFF\u0071\u0075\u0062" +
"\u0075\u0074\u0073\uFFFF\u0068\u0069\u0072\u0069\u0071\uFFFF\u0072\u0061\u0066\u0065\uFFFF\u0073\u0065\u0067\u006f\u006c\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0070\u0061\u0074\u0061\u0068\uFFFF\u0070\u0061\u0074\u0061\u0068\uFFFF\u0074\u0073\u0065\u0072\u0065\uFFFF\u0071\u0061\u006d\u0061\u0074\u0073\uFFFF\u0068\u0061\u0074\u0061\u0066\u005f\u0071\u0061\u006d\u0061\u0074\u0073\uFFFF\u0073\u0068\u0065\u0076\u0061\u066e\u067e" +
"\u06c1\u0698\u0640\u0636\u0638\u0621\u06a4\u063a\u06a9\u06ba\u06be\u06cc\u0643\u064a\u0900\u0955\u0972\u0911\u0973\u0974\u0976\u0977\u0960\u0961\u090d\u090e\u0912\u0975\u097b\u097c\uFFFF\u0936\u094d\u091a\u0979\u0978\u097e\uFFFF\u0924\u094d\u0930\uFFFF\u0926\u094d\u0930\uFFFF\u092a\u094d\u0930\u097f\u097a\uFFFF\u0936\u094d\u0930\uFFFF\u0915\u094d\u0937\u094e\u097d\u0949\u093a\u093b\u0904\u0944\u0945\u0946\u094a\u094f\u0954\u0957" +
- "\u0963\u0965\u0971\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u22c0\u22c1\u22c2\u22c3\u222e\u22b6\u044b\u0483\u0000\u00df\u0131\u01f0\u0237\u02b0\u02b2\u02b3\u02b7\u02e1\u0a85\u0a87\u0a89\u0a8f\u0a93\u0a95\u0a97\u0a9a\u0a9c\u0a9f\u0aa1\u0aa4\u0aa6\u0aa8\u0aaa\u0aac\u0aae\u0ab2\u0ab8\u0ab9\u0abf\u0ac1\u0ac7\u0acb\u1d43\u1d47\u1d48\u1d49\u1d4d\u1d4f\u1d50\u1d52\u1d56\u1d57\u1d58\u1d5b\u1d60\u1d9c\u1da0\u1dbe\u1e97\u1e98\u1e99\u2071\u207f" +
- "\u20b9\u2190\u2191\u2192\u2193\u2196\u2197\u2198\u2199\u2500\u2502\u250c\u2510\u2514\u2518\u251c\u2524\u252c\u2534\u253c\uFFFF\u004a\u030c\uFFFF\u004a\u0307\u1d34\u1d36\u1d3f\u1d42\u1d38\u0a86\u0a88\u0a8a\u0a90\u0a94\u0a96\u0a98\u0a9b\u0a9d\u0aa0\u0aa2\u0aa5\u0aa7\u0aa3\u0aab\u0aad\u0a82\u0ab3\u0ab6\u0a83\u0ac0\u0ac2\u0ac8\u0acc\u1d2c\u1d2e\u1d30\u1d31\u1d33\u1d37\u1d39\u1d3c\u1d3e\u1d40\u1d41\u2c7d\u1db2\uFFFF\ua7f2\uFFFF\ua7f3" +
- "\u1d23\uFFFF\u0054\u0308\uFFFF\u0057\u030a\uFFFF\u0059\u030a\u1d35\u1d3a\u2550\u2551\u2554\u2557\u255a\u255d\u2560\u2563\u2566\u2569\u256c").toCharArray();
+ "\u0963\u0965\u0971\u21d4\u21d5\u21d6\u21d7\u21d8\u21d9\u22c0\u22c1\u22c2\u22c3\u222e\u22b6\u044b\u0483\u00000123456789\u09e6\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u00000123456789\u0966\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u00000123456789\u0ae6\u0ae7" +
+ "\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u00000123456789\u0660\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u00000123456789\u0ce6\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u00000123456789\u06f0\u06f1\u06f2\u06f3\u06f4\u06f5\u06f6\u06f7\u06f8\u06f9\u0000" +
+ "\u00df\u0131\u01f0\u0237\u02b0\u02b2\u02b3\u02b7\u02e1\u0a85\u0a87\u0a89\u0a8f\u0a93\u0a95\u0a97\u0a9a\u0a9c\u0a9f\u0aa1\u0aa4\u0aa6\u0aa8\u0aaa\u0aac\u0aae\u0ab2\u0ab8\u0ab9\u0abf\u0ac1\u0ac7\u0acb\u1d43\u1d47\u1d48\u1d49\u1d4d\u1d4f\u1d50\u1d52\u1d56\u1d57\u1d58\u1d5b\u1d60\u1d9c\u1da0\u1dbe\u1e97\u1e98\u1e99\u2071\u207f\u20b9\u2190\u2191\u2192\u2193\u2196\u2197\u2198\u2199\u2500\u2502\u250c\u2510\u2514\u2518\u251c\u2524\u252c" +
+ "\u2534\u253c\uFFFF\u004a\u030c\uFFFF\u004a\u0307\u1d34\u1d36\u1d3f\u1d42\u1d38\u0a86\u0a88\u0a8a\u0a90\u0a94\u0a96\u0a98\u0a9b\u0a9d\u0aa0\u0aa2\u0aa5\u0aa7\u0aa3\u0aab\u0aad\u0a82\u0ab3\u0ab6\u0a83\u0ac0\u0ac2\u0ac8\u0acc\u1d2c\u1d2e\u1d30\u1d31\u1d33\u1d37\u1d39\u1d3c\u1d3e\u1d40\u1d41\u2c7d\u1db2\uFFFF\ua7f2\uFFFF\ua7f3\u1d23\uFFFF\u0054\u0308\uFFFF\u0057\u030a\uFFFF\u0059\u030a\u1d35\u1d3a\u2550\u2551\u2554\u2557\u255a\u255d" +
+ "\u2560\u2563\u2566\u2569\u256c").toCharArray();
public static final char[] edges =
("\u0001\u0036\u0037\u0038\u0039\u003a\u003b\u003c\u003f\u0040\u0041\u0042\u0043\u0044\u0045\u0046\u0047\u0048\u0049\u004a\u004b\u004c\u004d\u004e\u004f\u0050\u0051\u0052\u0053\u0054\u0055\u0056\u0059\u005a\u005b\\\u005d\u005e\u005f\u0060\u0061\u0062\u0063\u0064\u0067\u0068\u006b\u006e\u006f\u0072\u0075\u0078\u007b\u007e\u0081\u0001\u0001\u0001\u0001\u0001\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001" +
@@ -224,9 +226,11 @@ public final class ComposeKeyData
"\u0001\u0008\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0000\u0001\u0002\u0000\u0001\u0001\u0001\u0002\u0000\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000" +
"\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0005\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u000c\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0007\u0000\u0000\u0000\u0000\u0000\u0000\r\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0000\u0006\u0000\u0000\u0000\u0000\u0000\u0001\u0001" +
"\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001\u0001\u0004\u0000\u0000\u0000\u0004\u0000\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001" +
- "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u004b\u0e75\u0e03\u1e74\u1e77\u1e7a\u1e7b\u1e7c\u1e7d\u1e7e\u1e7f\u1e80\u1e81\u1e82\u1e83\u1e84\u1e85\u1e86\u1e87\u1e88\u1e89\u1e8a\u1e8b\u1e8c\u1e8d\u1e8e\u1e8f\u1e90\u1e91\u1e92\u1e93\u1e94\u1e95\u1e96\u1e97\u1e98\u1e99\u1e9a\u1e9b\u1e9c\u1e9d\u1e9e\u1e9f\u1ea0\u1ea1\u1ea2\u1ea3\u1ea4\u1ea6\u1ea8\u1ea9\u1eac\u1eaf\u1eb2\u1eb3" +
- "\u0e66\u0d15\u0d21\u0d16\u0d24\u1e1d\u1e1e\u1e1f\u1e20\u1eb4\u1eb5\u1eb6\u1eb7\u1eb8\u1eb9\u1eba\u1ebb\u1ebc\u1ebd\u1ebe\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0000\u0002\u0000" +
- "\u0001\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001").toCharArray();
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e34\u1e35\u1e36\u1e37\u1e38\u1e39\u1e3a\u1e3b\u1e3c\u1e3d\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e49\u1e4a\u1e4b\u1e4c\u1e4d\u1e4e\u1e4f\u1e50\u1e51\u1e52\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e5e\u1e5f\u1e60\u1e61\u1e62\u1e63\u1e64\u1e65\u1e66\u1e67\u0001\u0001" +
+ "\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e73\u1e74\u1e75\u1e76\u1e77\u1e78\u1e79\u1e7a\u1e7b\u1e7c\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e88\u1e89\u1e8a\u1e8b\u1e8c\u1e8d\u1e8e\u1e8f\u1e90\u1e91\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u000b\u1e9d\u1e9e\u1e9f\u1ea0\u1ea1\u1ea2\u1ea3\u1ea4\u1ea5\u1ea6\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u004b" +
+ "\u0e75\u0e03\u1ef2\u1ef5\u1ef8\u1ef9\u1efa\u1efb\u1efc\u1efd\u1efe\u1eff\u1f00\u1f01\u1f02\u1f03\u1f04\u1f05\u1f06\u1f07\u1f08\u1f09\u1f0a\u1f0b\u1f0c\u1f0d\u1f0e\u1f0f\u1f10\u1f11\u1f12\u1f13\u1f14\u1f15\u1f16\u1f17\u1f18\u1f19\u1f1a\u1f1b\u1f1c\u1f1d\u1f1e\u1f1f\u1f20\u1f21\u1f22\u1f24\u1f26\u1f27\u1f2a\u1f2d\u1f30\u1f31\u0e66\u0d15\u0d21\u0d16\u0d24\u1e1d\u1e1e\u1e1f\u1e20\u1f32\u1f33\u1f34\u1f35\u1f36\u1f37\u1f38\u1f39\u1f3a" +
+ "\u1f3b\u1f3c\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0002\u0000\u0002\u0000\u0001\u0003\u0000\u0000\u0003\u0000\u0000\u0003\u0000\u0000\u0001\u0001\u0001\u0001\u0001\u0001\u0001\u0001" +
+ "\u0001\u0001\u0001\u0001\u0001").toCharArray();
public static final int accent_aigu = 1;
public static final int accent_arrows = 130;
@@ -253,5 +257,11 @@ public final class ComposeKeyData
public static final int accent_trema = 1172;
public static final int compose = 1270;
public static final int fn = 7207;
- public static final int shift = 7721;
+ public static final int numpad_bengali = 7721;
+ public static final int numpad_devanagari = 7742;
+ public static final int numpad_gujarati = 7763;
+ public static final int numpad_hindu = 7784;
+ public static final int numpad_kannada = 7805;
+ public static final int numpad_persian = 7826;
+ public static final int shift = 7847;
}
diff --git a/srcs/juloo.keyboard2/Config.java b/srcs/juloo.keyboard2/Config.java
index 321ed9c..56843c4 100644
--- a/srcs/juloo.keyboard2/Config.java
+++ b/srcs/juloo.keyboard2/Config.java
@@ -319,7 +319,7 @@ public final class Config
public KeyboardData modify_numpad(KeyboardData kw, KeyboardData main_kw)
{
final KeyValue action_key = action_key();
- final KeyModifier.Map_char map_digit = KeyModifier.modify_numpad_script(main_kw.numpad_script);
+ final int map_digit = KeyModifier.modify_numpad_script(main_kw.numpad_script);
return kw.mapKeys(new KeyboardData.MapKeyValues() {
public KeyValue apply(KeyValue key, boolean localized)
{
@@ -345,9 +345,9 @@ public final class Config
char c = prev_c;
if (inverse_numpad)
c = inverse_numpad_char(c);
- String modified = map_digit.apply(c);
+ KeyValue modified = ComposeKey.apply(map_digit, c);
if (modified != null) // Was modified by script
- return KeyValue.makeStringKey(modified);
+ return modified;
if (prev_c != c) // Was inverted
return key.withChar(c);
break;
@@ -359,16 +359,16 @@ public final class Config
static KeyboardData.MapKeyValues numpad_script_map(String numpad_script)
{
- final KeyModifier.Map_char map_digit = KeyModifier.modify_numpad_script(numpad_script);
+ final int map_digit = KeyModifier.modify_numpad_script(numpad_script);
return new KeyboardData.MapKeyValues() {
public KeyValue apply(KeyValue key, boolean localized)
{
switch (key.getKind())
{
case Char:
- String modified = map_digit.apply(key.getChar());
+ KeyValue modified = ComposeKey.apply(map_digit, key.getChar());
if (modified != null)
- return KeyValue.makeStringKey(modified);
+ return modified;
break;
}
return key;
diff --git a/srcs/juloo.keyboard2/KeyModifier.java b/srcs/juloo.keyboard2/KeyModifier.java
index 34590a2..3fd2dd6 100644
--- a/srcs/juloo.keyboard2/KeyModifier.java
+++ b/srcs/juloo.keyboard2/KeyModifier.java
@@ -81,7 +81,7 @@ public final class KeyModifier
case HORN: return apply_compose(k, ComposeKeyData.accent_horn);
case HOOK_ABOVE: return apply_compose(k, ComposeKeyData.accent_hook_above);
case DOUBLE_GRAVE: return apply_compose(k, ComposeKeyData.accent_double_grave);
- case ARROW_RIGHT: return apply_map_char(k, map_char_arrow_right);
+ case ARROW_RIGHT: return apply_combining_char(k, "\u20D7");
default: return k;
}
}
@@ -104,35 +104,23 @@ public final class KeyModifier
return k;
}
- public static Map_char modify_numpad_script(String numpad_script)
+ /** Return the compose state that modifies the numpad script. */
+ public static int modify_numpad_script(String numpad_script)
{
if (numpad_script == null)
- return map_char_none;
+ return -1;
switch (numpad_script)
{
- case "hindu-arabic": return map_char_numpad_hindu;
- case "bengali": return map_char_numpad_bengali;
- case "devanagari": return map_char_numpad_devanagari;
- case "persian": return map_char_numpad_persian;
- case "gujarati": return map_char_numpad_gujarati;
- case "kannada": return map_char_numpad_kannada;
- default: return map_char_none;
+ case "hindu-arabic": return ComposeKeyData.numpad_hindu;
+ case "bengali": return ComposeKeyData.numpad_bengali;
+ case "devanagari": return ComposeKeyData.numpad_devanagari;
+ case "persian": return ComposeKeyData.numpad_persian;
+ case "gujarati": return ComposeKeyData.numpad_gujarati;
+ case "kannada": return ComposeKeyData.numpad_kannada;
+ default: return -1;
}
}
- private static KeyValue apply_map_char(KeyValue k, Map_char map)
- {
- switch (k.getKind())
- {
- case Char:
- char kc = k.getChar();
- String modified = map.apply(kc);
- if (modified != null)
- return KeyValue.makeStringKey(modified, k.getFlags());
- }
- return k;
- }
-
/** Apply the given compose state or fallback to the dead_char. */
private static KeyValue apply_compose_or_dead_char(KeyValue k, int state, char dead_char)
{
@@ -172,6 +160,16 @@ public final class KeyModifier
return k;
}
+ private static KeyValue apply_combining_char(KeyValue k, String combining)
+ {
+ switch (k.getKind())
+ {
+ case Char:
+ return KeyValue.makeStringKey(k.getChar() + combining, k.getFlags());
+ }
+ return k;
+ }
+
private static KeyValue apply_shift(KeyValue k)
{
if (_modmap != null)
@@ -346,157 +344,6 @@ public final class KeyModifier
return shifted;
}
- public static abstract class Map_char
- {
- /** Modify a char or return [null] if the modifier do not apply. Return a
- [String] that can contains combining diacritics. */
- public abstract String apply(char c);
- }
-
- private static final Map_char map_char_none =
- new Map_char() {
- public String apply(char _c) { return null; }
- };
-
- private static final Map_char map_char_arrow_right =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- default: return c + "\u20D7";
- }
- }
- };
-
- // Used with Arabic despite the name; called "Hindi numerals" in Arabic
- // map_char_numpad_devanagari is used in Hindi
- private static final Map_char map_char_numpad_hindu =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "٠";
- case '1': return "١";
- case '2': return "٢";
- case '3': return "٣";
- case '4': return "٤";
- case '5': return "٥";
- case '6': return "٦";
- case '7': return "٧";
- case '8': return "٨";
- case '9': return "٩";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_bengali =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "০";
- case '1': return "১";
- case '2': return "২";
- case '3': return "৩";
- case '4': return "৪";
- case '5': return "৫";
- case '6': return "৬";
- case '7': return "৭";
- case '8': return "৮";
- case '9': return "৯";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_devanagari =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "०";
- case '1': return "१";
- case '2': return "२";
- case '3': return "३";
- case '4': return "४";
- case '5': return "५";
- case '6': return "६";
- case '7': return "७";
- case '8': return "८";
- case '9': return "९";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_persian =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "۰";
- case '1': return "۱";
- case '2': return "۲";
- case '3': return "۳";
- case '4': return "۴";
- case '5': return "۵";
- case '6': return "۶";
- case '7': return "۷";
- case '8': return "۸";
- case '9': return "۹";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_gujarati =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "૦";
- case '1': return "૧";
- case '2': return "૨";
- case '3': return "૩";
- case '4': return "૪";
- case '5': return "૫";
- case '6': return "૬";
- case '7': return "૭";
- case '8': return "૮";
- case '9': return "૯";
- default: return null;
- }
- }
- };
-
- private static final Map_char map_char_numpad_kannada =
- new Map_char() {
- public String apply(char c)
- {
- switch (c)
- {
- case '0': return "೦";
- case '1': return "೧";
- case '2': return "೨";
- case '3': return "೩";
- case '4': return "೪";
- case '5': return "೫";
- case '6': return "೬";
- case '7': return "೭";
- case '8': return "೮";
- case '9': return "೯";
- default: return null;
- }
- }
- };
-
/** Compose the precomposed initial with the medial [kv]. */
private static KeyValue combine_hangul_initial(KeyValue kv, int precomposed)
{