diff --git a/README.md b/README.md index 4d1bfaf..304c84c 100644 --- a/README.md +++ b/README.md @@ -22,6 +22,7 @@ https://github.com/deton/AndroidTUTCode/releases に apk ファイルがあり * 辞書を交ぜ書き変換辞書におきかえ。 * 後置型部首合成変換機能追加 * 後置型カタカナ置換機能追加 +* 後置型交ぜ書き変換開始機能追加(読みの文字数指定要) * ASCIIモードに移行するキーと設定を追加。 かなキーのトグル動作だと、現在のモードの意識が必要で面倒なので。 @@ -47,6 +48,14 @@ https://github.com/deton/AndroidTUTCode/releases に apk ファイルがあり | |@tglkata|ひらがなカタカナモードのトグル| |alj|@maze |前置型交ぜ書き変換の読み入力開始| |ald|@Bushu |後置型部首合成変換。カーソル直前の2文字を部首合成後の漢字に置換| +|m1 |@Maze1 |後置型交ぜ書き変換を開始。読み1文字| +|m2 |@Maze2 |後置型交ぜ書き変換を開始。読み2文字| +| |... | | +|m9 |@Maze9 |後置型交ぜ書き変換を開始。読み9文字| +|n1 |@MazeK1 |後置型交ぜ書き変換を開始(活用する語。読みに―を追加)。読み1文字| +|n2 |@MazeK2 |後置型交ぜ書き変換を開始(活用する語。読みに―を追加)。読み2文字| +| |... | | +|n9 |@MazeK9 |後置型交ぜ書き変換を開始(活用する語。読みに―を追加)。読み9文字| |k0 |@Kata0 |後置型カタカナ置換。カタカナを伸ばす。連続するひらがな| |k1 |@Kata1 |後置型カタカナ置換。カタカナを1文字伸ばす| |k2 |@Kata2 |後置型カタカナ置換。カタカナを2文字伸ばす| diff --git a/app/build.gradle b/app/build.gradle index 078bcdc..b1db448 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -8,8 +8,8 @@ android { applicationId "io.github.deton.androidtutcode" minSdkVersion 14 targetSdkVersion 30 - versionCode 4 - versionName "1.1.0" + versionCode 5 + versionName "1.2.0" } buildTypes { diff --git a/app/src/main/assets/romajimap.txt b/app/src/main/assets/romajimap.txt index 383b27f..a8515c1 100644 --- a/app/src/main/assets/romajimap.txt +++ b/app/src/main/assets/romajimap.txt @@ -1,5 +1,23 @@ alj @maze ald @Bushu +m1 @Maze1 +m2 @Maze2 +m3 @Maze3 +m4 @Maze4 +m5 @Maze5 +m6 @Maze6 +m7 @Maze7 +m8 @Maze8 +m9 @Maze9 +n1 @MazeK1 +n2 @MazeK2 +n3 @MazeK3 +n4 @MazeK4 +n5 @MazeK5 +n6 @MazeK6 +n7 @MazeK7 +n8 @MazeK8 +n9 @MazeK9 k1 @Kata1 k2 @Kata2 k3 @Kata3 diff --git a/app/src/main/java/jp/deadend/noname/skk/engine/SKKEngine.kt b/app/src/main/java/jp/deadend/noname/skk/engine/SKKEngine.kt index e6b01a9..ed1cb1b 100644 --- a/app/src/main/java/jp/deadend/noname/skk/engine/SKKEngine.kt +++ b/app/src/main/java/jp/deadend/noname/skk/engine/SKKEngine.kt @@ -384,6 +384,41 @@ class SKKEngine( } } + /** + * 後置型交ぜ書き置換を開始。 + * @param nchars 読みの文字数 + * @param isKatuyo 活用する語として変換を開始するかどうか + */ + fun startPostMaze(nchars: Int, isKatuyo: Boolean) { + mComposing.setLength(0) + setComposingTextSKK("", 1) + var yomi: CharSequence + val firstEntry = mRegistrationStack.peekFirst()?.entry + if (firstEntry != null) { + yomi = firstEntry.takeLast(nchars) + if (yomi.length != nchars) { + return + } + firstEntry.setLength(firstEntry.length - nchars) + } else { + val ic = mService.currentInputConnection ?: return + yomi = ic.getTextBeforeCursor(nchars, 0) ?: return + if (yomi.length != nchars) { + return + } + ic.deleteSurroundingText(nchars, 0) + } + mKanjiKey.setLength(0) + mKanjiKey.append(yomi) + if (isKatuyo) { + // 交ぜ書き変換辞書に活用する語として登録されている読みで検索する + mKanjiKey.append("―") + } + changeState(SKKKanjiState) + setComposingTextSKK(mKanjiKey, 1) + conversionStart(mKanjiKey) + } + // 後置型部首合成変換 fun changeLastCharsByBushuConv() { fun bushuconv(cs: CharSequence, commitFunc: (kanji: String) -> Unit) { @@ -406,8 +441,8 @@ class SKKEngine( } } mKanjiKey.isEmpty() -> { - val firstEntry = mRegistrationStack.peekFirst()?.entry - if (firstEntry != null) { + val firstEntry = mRegistrationStack.peekFirst()?.entry + if (firstEntry != null) { val cs = firstEntry.takeLast(2) bushuconv(cs) { kanji -> firstEntry.setLength(firstEntry.length - 2) diff --git a/app/src/main/java/jp/deadend/noname/skk/engine/SKKHiraganaState.kt b/app/src/main/java/jp/deadend/noname/skk/engine/SKKHiraganaState.kt index 2d94523..7c5aa62 100644 --- a/app/src/main/java/jp/deadend/noname/skk/engine/SKKHiraganaState.kt +++ b/app/src/main/java/jp/deadend/noname/skk/engine/SKKHiraganaState.kt @@ -115,6 +115,60 @@ object SKKHiraganaState : SKKState { context.setComposingTextSKK("", 1); context.changeLastCharsToKatakana(-6) } + "@Maze1" -> { // 後置型交ぜ書き変換開始。読み1文字 + context.startPostMaze(1, false) + } + "@Maze2" -> { // 後置型交ぜ書き変換開始。読み2文字 + context.startPostMaze(2, false) + } + "@Maze3" -> { // 後置型交ぜ書き変換開始。読み3文字 + context.startPostMaze(3, false) + } + "@Maze4" -> { // 後置型交ぜ書き変換開始。読み4文字 + context.startPostMaze(4, false) + } + "@Maze5" -> { // 後置型交ぜ書き変換開始。読み5文字 + context.startPostMaze(5, false) + } + "@Maze6" -> { // 後置型交ぜ書き変換開始。読み6文字 + context.startPostMaze(6, false) + } + "@Maze7" -> { // 後置型交ぜ書き変換開始。読み7文字 + context.startPostMaze(7, false) + } + "@Maze8" -> { // 後置型交ぜ書き変換開始。読み8文字 + context.startPostMaze(8, false) + } + "@Maze9" -> { // 後置型交ぜ書き変換開始。読み9文字 + context.startPostMaze(9, false) + } + "@MazeK1" -> { // 後置型交ぜ書き変換開始(活用する語)。読み1文字 + context.startPostMaze(1, true) + } + "@MazeK2" -> { // 後置型交ぜ書き変換開始(活用する語)。読み2文字 + context.startPostMaze(2, true) + } + "@MazeK3" -> { // 後置型交ぜ書き変換開始(活用する語)。読み3文字 + context.startPostMaze(3, true) + } + "@MazeK4" -> { // 後置型交ぜ書き変換開始(活用する語)。読み4文字 + context.startPostMaze(4, true) + } + "@MazeK5" -> { // 後置型交ぜ書き変換開始(活用する語)。読み5文字 + context.startPostMaze(5, true) + } + "@MazeK6" -> { // 後置型交ぜ書き変換開始(活用する語)。読み6文字 + context.startPostMaze(6, true) + } + "@MazeK7" -> { // 後置型交ぜ書き変換開始(活用する語)。読み7文字 + context.startPostMaze(7, true) + } + "@MazeK8" -> { // 後置型交ぜ書き変換開始(活用する語)。読み8文字 + context.startPostMaze(8, true) + } + "@MazeK9" -> { // 後置型交ぜ書き変換開始(活用する語)。読み9文字 + context.startPostMaze(9, true) + } else -> commitFunc(context, hchr) // 確定できるものがあれば確定 } } diff --git a/app/src/main/java/jp/deadend/noname/skk/engine/SKKKanjiState.kt b/app/src/main/java/jp/deadend/noname/skk/engine/SKKKanjiState.kt index 7aa9987..37b2ca8 100644 --- a/app/src/main/java/jp/deadend/noname/skk/engine/SKKKanjiState.kt +++ b/app/src/main/java/jp/deadend/noname/skk/engine/SKKKanjiState.kt @@ -90,6 +90,60 @@ object SKKKanjiState : SKKState { "@Kata-6" -> { // 後置型カタカナ置換。カタカナを伸ばす。連続するひらがな(6文字残す) context.changeLastCharsToKatakana(-6) } + "@Maze1" -> { // 後置型交ぜ書き変換開始 + composing.setLength(0) // 無視する。XXX:読みの長さを変更する? + } + "@Maze2" -> { + composing.setLength(0) + } + "@Maze3" -> { + composing.setLength(0) + } + "@Maze4" -> { + composing.setLength(0) + } + "@Maze5" -> { + composing.setLength(0) + } + "@Maze6" -> { + composing.setLength(0) + } + "@Maze7" -> { + composing.setLength(0) + } + "@Maze8" -> { + composing.setLength(0) + } + "@Maze9" -> { + composing.setLength(0) + } + "@MazeK1" -> { // 後置型交ぜ書き変換開始(活用する語) + composing.setLength(0) // 無視する。XXX:読みの長さを変更する? + } + "@MazeK2" -> { + composing.setLength(0) + } + "@MazeK3" -> { + composing.setLength(0) + } + "@MazeK4" -> { + composing.setLength(0) + } + "@MazeK5" -> { + composing.setLength(0) + } + "@MazeK6" -> { + composing.setLength(0) + } + "@MazeK7" -> { + composing.setLength(0) + } + "@MazeK8" -> { + composing.setLength(0) + } + "@MazeK9" -> { + composing.setLength(0) + } else -> { // ローマ字シーケンスに対応するかな/漢字があった→hchr composing.setLength(0) kanjiKey.append(hchr) diff --git a/tcode.txt b/tcode.txt index 4957949..5fdae9f 100644 --- a/tcode.txt +++ b/tcode.txt @@ -1,5 +1,13 @@ fj @maze 77 @Bushu +18 @Maze1 +28 @Maze2 +38 @Maze3 +48 @Maze4 +29 @MazeK2 +39 @MazeK3 +49 @MazeK4 +59 @MazeK5 ,1 借 .1 須 p1 象 diff --git a/tutcode.txt b/tutcode.txt index 27b55ba..574234d 100644 --- a/tutcode.txt +++ b/tutcode.txt @@ -1,6 +1,24 @@ ' @tglkata alj @maze ald @Bushu +m1 @Maze1 +m2 @Maze2 +m3 @Maze3 +m4 @Maze4 +m5 @Maze5 +m6 @Maze6 +m7 @Maze7 +m8 @Maze8 +m9 @Maze9 +n1 @MazeK1 +n2 @MazeK2 +n3 @MazeK3 +n4 @MazeK4 +n5 @MazeK5 +n6 @MazeK6 +n7 @MazeK7 +n8 @MazeK8 +n9 @MazeK9 k1 @Kata1 k2 @Kata2 k3 @Kata3