diff --git a/assets/keylayout/cj5-sc.han b/assets/keylayout/cj5-sc.han index 0e09deacd..c0791f06e 100644 --- a/assets/keylayout/cj5-sc.han +++ b/assets/keylayout/cj5-sc.han @@ -2,13 +2,14 @@ hi,的 hi,我 hi,得 ao,是 -klg,在 +kg,在 od,他 mn,到 vo,以 yu,就 mr,可 of,你 +op,您 ml,而 sl,那 hl,所 diff --git a/assets/keylayout/cj5-tc.han b/assets/keylayout/cj5-tc.han index da27fb802..761f8ed79 100644 --- a/assets/keylayout/cj5-tc.han +++ b/assets/keylayout/cj5-tc.han @@ -2,13 +2,14 @@ hi,的 hi,我 hi,得 ao,是 -klg,在 +kg,在 od,他 mn,到 vo,以 yu,就 mr,可 of,你 +op,您 ml,而 sl,那 hl,所 diff --git a/src/net/torvald/terrarum/gamecontroller/IMEProviderDelegate.kt b/src/net/torvald/terrarum/gamecontroller/IMEProviderDelegate.kt index 8056e0122..70a5819c0 100644 --- a/src/net/torvald/terrarum/gamecontroller/IMEProviderDelegate.kt +++ b/src/net/torvald/terrarum/gamecontroller/IMEProviderDelegate.kt @@ -27,13 +27,15 @@ class IMEDictionary(private val filename: String) { private fun loadDict() { val reader = FileReader(File("assets/keylayout/", filename)) reader.forEachLine { - val (key, value) = it.split(',') - if (candidates.containsKey(key)) { - candidates[key] += ",$value" - } - else { - candidates[key] = value - keys.add(key) + if (it.contains(',')) { + val (key, value) = it.split(',') + if (candidates.containsKey(key)) { + candidates[key] += ",$value" + } + else { + candidates[key] = value + keys.add(key) + } } } @@ -55,7 +57,7 @@ class IMEDictionary(private val filename: String) { var index = keys.searchForInterval(key) { it }.second val allRelevantKeys = ArrayList() // oh, oha, ohag, ohbt, ohby, ... - for (i in 0 until 10) { + for (i in 0 until 400) { // lookahead for length-first sorting, longest lookahead possible is around 300, so I'll give it 400 if (index + 1 >= keys.size) break val keysym = keys[index + i] if (!keysym.startsWith(key)) break