diff options
Diffstat (limited to 'srcs/juloo.keyboard2/KeyValue.java')
| -rw-r--r-- | srcs/juloo.keyboard2/KeyValue.java | 51 |
1 files changed, 49 insertions, 2 deletions
diff --git a/srcs/juloo.keyboard2/KeyValue.java b/srcs/juloo.keyboard2/KeyValue.java index 1f00464..8435cae 100644 --- a/srcs/juloo.keyboard2/KeyValue.java +++ b/srcs/juloo.keyboard2/KeyValue.java @@ -86,8 +86,8 @@ public final class KeyValue implements Comparable<KeyValue> public static enum Kind { - Char, String, Keyevent, Event, Compose_pending, Modifier, Editing, - Placeholder, + Char, String, Keyevent, Event, Compose_pending, Hangul_initial, + Hangul_medial, Modifier, Editing, Placeholder, Cursor_move // Value is encoded as a 16-bit integer } @@ -195,6 +195,13 @@ public final class KeyValue implements Comparable<KeyValue> return (_code & VALUE_BITS); } + /** Defined only when [getKind()] is [Kind.Hangul_initial] or + [Kind.Hangul_medial]. */ + public int getHangulPrecomposed() + { + return (_code & VALUE_BITS); + } + /** Defined only when [getKind() == Kind.Cursor_move]. */ public short getCursorMove() { @@ -368,6 +375,25 @@ public final class KeyValue implements Comparable<KeyValue> flags | FLAG_KEY_FONT); } + public static KeyValue makeHangulInitial(String symbol, int initial_idx) + { + return new KeyValue(symbol, Kind.Hangul_initial, initial_idx * 588 + 44032, + FLAG_LATCH); + } + + public static KeyValue makeHangulMedial(int precomposed, int medial_idx) + { + precomposed += medial_idx * 28; + return new KeyValue(String.valueOf((char)precomposed), Kind.Hangul_medial, + precomposed, FLAG_LATCH); + } + + public static KeyValue makeHangulFinal(int precomposed, int final_idx) + { + precomposed += final_idx; + return KeyValue.makeCharKey((char)precomposed); + } + /** Make a key that types a string. A char key is returned for a string of length 1. */ public static KeyValue makeStringKey(String str, int flags) @@ -538,6 +564,27 @@ public final class KeyValue implements Comparable<KeyValue> case "f11_placeholder": return placeholderKey(Placeholder.F11); case "f12_placeholder": return placeholderKey(Placeholder.F12); + // Korean Hangul + case "ㄱ": return makeHangulInitial("ㄱ", 0); + case "ㄲ": return makeHangulInitial("ㄲ", 1); + case "ㄴ": return makeHangulInitial("ㄴ", 2); + case "ㄷ": return makeHangulInitial("ㄷ", 3); + case "ㄸ": return makeHangulInitial("ㄸ", 4); + case "ㄹ": return makeHangulInitial("ㄹ", 5); + case "ㅁ": return makeHangulInitial("ㅁ", 6); + case "ㅂ": return makeHangulInitial("ㅂ", 7); + case "ㅃ": return makeHangulInitial("ㅃ", 8); + case "ㅅ": return makeHangulInitial("ㅅ", 9); + case "ㅆ": return makeHangulInitial("ㅆ", 10); + case "ㅇ": return makeHangulInitial("ㅇ", 11); + case "ㅈ": return makeHangulInitial("ㅈ", 12); + case "ㅉ": return makeHangulInitial("ㅉ", 13); + case "ㅊ": return makeHangulInitial("ㅊ", 14); + case "ㅋ": return makeHangulInitial("ㅋ", 15); + case "ㅌ": return makeHangulInitial("ㅌ", 16); + case "ㅍ": return makeHangulInitial("ㅍ", 17); + case "ㅎ": return makeHangulInitial("ㅎ", 18); + /* Fallback to a string key that types its name */ default: return makeStringKey(name); } |
