Skip to content

Commit 7d14bd5

Browse files
authored
Merge pull request #5 from deton/postmaze
後置型交ぜ書き変換開始機能追加(読みの文字数指定要)
2 parents 8485d1b + a4a659a commit 7d14bd5

File tree

8 files changed

+200
-4
lines changed

8 files changed

+200
-4
lines changed

README.md

+9
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ https://github.com/deton/AndroidTUTCode/releases に apk ファイルがあり
2222
* 辞書を交ぜ書き変換辞書におきかえ。
2323
* 後置型部首合成変換機能追加
2424
* 後置型カタカナ置換機能追加
25+
* 後置型交ぜ書き変換開始機能追加(読みの文字数指定要)
2526
* ASCIIモードに移行するキーと設定を追加。
2627
かなキーのトグル動作だと、現在のモードの意識が必要で面倒なので。
2728

@@ -47,6 +48,14 @@ https://github.com/deton/AndroidTUTCode/releases に apk ファイルがあり
4748
| |@tglkata|ひらがなカタカナモードのトグル|
4849
|alj|@maze |前置型交ぜ書き変換の読み入力開始|
4950
|ald|@Bushu |後置型部首合成変換。カーソル直前の2文字を部首合成後の漢字に置換|
51+
|m1 |@Maze1 |後置型交ぜ書き変換を開始。読み1文字|
52+
|m2 |@Maze2 |後置型交ぜ書き変換を開始。読み2文字|
53+
| |... | |
54+
|m9 |@Maze9 |後置型交ぜ書き変換を開始。読み9文字|
55+
|n1 |@MazeK1 |後置型交ぜ書き変換を開始(活用する語。読みに―を追加)。読み1文字|
56+
|n2 |@MazeK2 |後置型交ぜ書き変換を開始(活用する語。読みに―を追加)。読み2文字|
57+
| |... | |
58+
|n9 |@MazeK9 |後置型交ぜ書き変換を開始(活用する語。読みに―を追加)。読み9文字|
5059
|k0 |@Kata0 |後置型カタカナ置換。カタカナを伸ばす。連続するひらがな|
5160
|k1 |@Kata1 |後置型カタカナ置換。カタカナを1文字伸ばす|
5261
|k2 |@Kata2 |後置型カタカナ置換。カタカナを2文字伸ばす|

app/build.gradle

+2-2
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,8 @@ android {
88
applicationId "io.github.deton.androidtutcode"
99
minSdkVersion 14
1010
targetSdkVersion 30
11-
versionCode 4
12-
versionName "1.1.0"
11+
versionCode 5
12+
versionName "1.2.0"
1313
}
1414

1515
buildTypes {

app/src/main/assets/romajimap.txt

+18
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,23 @@
11
alj @maze
22
ald @Bushu
3+
m1 @Maze1
4+
m2 @Maze2
5+
m3 @Maze3
6+
m4 @Maze4
7+
m5 @Maze5
8+
m6 @Maze6
9+
m7 @Maze7
10+
m8 @Maze8
11+
m9 @Maze9
12+
n1 @MazeK1
13+
n2 @MazeK2
14+
n3 @MazeK3
15+
n4 @MazeK4
16+
n5 @MazeK5
17+
n6 @MazeK6
18+
n7 @MazeK7
19+
n8 @MazeK8
20+
n9 @MazeK9
321
k1 @Kata1
422
k2 @Kata2
523
k3 @Kata3

app/src/main/java/jp/deadend/noname/skk/engine/SKKEngine.kt

+37-2
Original file line numberDiff line numberDiff line change
@@ -384,6 +384,41 @@ class SKKEngine(
384384
}
385385
}
386386

387+
/**
388+
* 後置型交ぜ書き置換を開始。
389+
* @param nchars 読みの文字数
390+
* @param isKatuyo 活用する語として変換を開始するかどうか
391+
*/
392+
fun startPostMaze(nchars: Int, isKatuyo: Boolean) {
393+
mComposing.setLength(0)
394+
setComposingTextSKK("", 1)
395+
var yomi: CharSequence
396+
val firstEntry = mRegistrationStack.peekFirst()?.entry
397+
if (firstEntry != null) {
398+
yomi = firstEntry.takeLast(nchars)
399+
if (yomi.length != nchars) {
400+
return
401+
}
402+
firstEntry.setLength(firstEntry.length - nchars)
403+
} else {
404+
val ic = mService.currentInputConnection ?: return
405+
yomi = ic.getTextBeforeCursor(nchars, 0) ?: return
406+
if (yomi.length != nchars) {
407+
return
408+
}
409+
ic.deleteSurroundingText(nchars, 0)
410+
}
411+
mKanjiKey.setLength(0)
412+
mKanjiKey.append(yomi)
413+
if (isKatuyo) {
414+
// 交ぜ書き変換辞書に活用する語として登録されている読みで検索する
415+
mKanjiKey.append("")
416+
}
417+
changeState(SKKKanjiState)
418+
setComposingTextSKK(mKanjiKey, 1)
419+
conversionStart(mKanjiKey)
420+
}
421+
387422
// 後置型部首合成変換
388423
fun changeLastCharsByBushuConv() {
389424
fun bushuconv(cs: CharSequence, commitFunc: (kanji: String) -> Unit) {
@@ -406,8 +441,8 @@ class SKKEngine(
406441
}
407442
}
408443
mKanjiKey.isEmpty() -> {
409-
val firstEntry = mRegistrationStack.peekFirst()?.entry
410-
if (firstEntry != null) {
444+
val firstEntry = mRegistrationStack.peekFirst()?.entry
445+
if (firstEntry != null) {
411446
val cs = firstEntry.takeLast(2)
412447
bushuconv(cs) { kanji ->
413448
firstEntry.setLength(firstEntry.length - 2)

app/src/main/java/jp/deadend/noname/skk/engine/SKKHiraganaState.kt

+54
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,60 @@ object SKKHiraganaState : SKKState {
115115
context.setComposingTextSKK("", 1);
116116
context.changeLastCharsToKatakana(-6)
117117
}
118+
"@Maze1" -> { // 後置型交ぜ書き変換開始。読み1文字
119+
context.startPostMaze(1, false)
120+
}
121+
"@Maze2" -> { // 後置型交ぜ書き変換開始。読み2文字
122+
context.startPostMaze(2, false)
123+
}
124+
"@Maze3" -> { // 後置型交ぜ書き変換開始。読み3文字
125+
context.startPostMaze(3, false)
126+
}
127+
"@Maze4" -> { // 後置型交ぜ書き変換開始。読み4文字
128+
context.startPostMaze(4, false)
129+
}
130+
"@Maze5" -> { // 後置型交ぜ書き変換開始。読み5文字
131+
context.startPostMaze(5, false)
132+
}
133+
"@Maze6" -> { // 後置型交ぜ書き変換開始。読み6文字
134+
context.startPostMaze(6, false)
135+
}
136+
"@Maze7" -> { // 後置型交ぜ書き変換開始。読み7文字
137+
context.startPostMaze(7, false)
138+
}
139+
"@Maze8" -> { // 後置型交ぜ書き変換開始。読み8文字
140+
context.startPostMaze(8, false)
141+
}
142+
"@Maze9" -> { // 後置型交ぜ書き変換開始。読み9文字
143+
context.startPostMaze(9, false)
144+
}
145+
"@MazeK1" -> { // 後置型交ぜ書き変換開始(活用する語)。読み1文字
146+
context.startPostMaze(1, true)
147+
}
148+
"@MazeK2" -> { // 後置型交ぜ書き変換開始(活用する語)。読み2文字
149+
context.startPostMaze(2, true)
150+
}
151+
"@MazeK3" -> { // 後置型交ぜ書き変換開始(活用する語)。読み3文字
152+
context.startPostMaze(3, true)
153+
}
154+
"@MazeK4" -> { // 後置型交ぜ書き変換開始(活用する語)。読み4文字
155+
context.startPostMaze(4, true)
156+
}
157+
"@MazeK5" -> { // 後置型交ぜ書き変換開始(活用する語)。読み5文字
158+
context.startPostMaze(5, true)
159+
}
160+
"@MazeK6" -> { // 後置型交ぜ書き変換開始(活用する語)。読み6文字
161+
context.startPostMaze(6, true)
162+
}
163+
"@MazeK7" -> { // 後置型交ぜ書き変換開始(活用する語)。読み7文字
164+
context.startPostMaze(7, true)
165+
}
166+
"@MazeK8" -> { // 後置型交ぜ書き変換開始(活用する語)。読み8文字
167+
context.startPostMaze(8, true)
168+
}
169+
"@MazeK9" -> { // 後置型交ぜ書き変換開始(活用する語)。読み9文字
170+
context.startPostMaze(9, true)
171+
}
118172
else -> commitFunc(context, hchr) // 確定できるものがあれば確定
119173
}
120174
}

app/src/main/java/jp/deadend/noname/skk/engine/SKKKanjiState.kt

+54
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,60 @@ object SKKKanjiState : SKKState {
9090
"@Kata-6" -> { // 後置型カタカナ置換。カタカナを伸ばす。連続するひらがな(6文字残す)
9191
context.changeLastCharsToKatakana(-6)
9292
}
93+
"@Maze1" -> { // 後置型交ぜ書き変換開始
94+
composing.setLength(0) // 無視する。XXX:読みの長さを変更する?
95+
}
96+
"@Maze2" -> {
97+
composing.setLength(0)
98+
}
99+
"@Maze3" -> {
100+
composing.setLength(0)
101+
}
102+
"@Maze4" -> {
103+
composing.setLength(0)
104+
}
105+
"@Maze5" -> {
106+
composing.setLength(0)
107+
}
108+
"@Maze6" -> {
109+
composing.setLength(0)
110+
}
111+
"@Maze7" -> {
112+
composing.setLength(0)
113+
}
114+
"@Maze8" -> {
115+
composing.setLength(0)
116+
}
117+
"@Maze9" -> {
118+
composing.setLength(0)
119+
}
120+
"@MazeK1" -> { // 後置型交ぜ書き変換開始(活用する語)
121+
composing.setLength(0) // 無視する。XXX:読みの長さを変更する?
122+
}
123+
"@MazeK2" -> {
124+
composing.setLength(0)
125+
}
126+
"@MazeK3" -> {
127+
composing.setLength(0)
128+
}
129+
"@MazeK4" -> {
130+
composing.setLength(0)
131+
}
132+
"@MazeK5" -> {
133+
composing.setLength(0)
134+
}
135+
"@MazeK6" -> {
136+
composing.setLength(0)
137+
}
138+
"@MazeK7" -> {
139+
composing.setLength(0)
140+
}
141+
"@MazeK8" -> {
142+
composing.setLength(0)
143+
}
144+
"@MazeK9" -> {
145+
composing.setLength(0)
146+
}
93147
else -> { // ローマ字シーケンスに対応するかな/漢字があった→hchr
94148
composing.setLength(0)
95149
kanjiKey.append(hchr)

tcode.txt

+8
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,13 @@
11
fj @maze
22
77 @Bushu
3+
18 @Maze1
4+
28 @Maze2
5+
38 @Maze3
6+
48 @Maze4
7+
29 @MazeK2
8+
39 @MazeK3
9+
49 @MazeK4
10+
59 @MazeK5
311
,1 借
412
.1 須
513
p1 象

tutcode.txt

+18
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,24 @@
11
' @tglkata
22
alj @maze
33
ald @Bushu
4+
m1 @Maze1
5+
m2 @Maze2
6+
m3 @Maze3
7+
m4 @Maze4
8+
m5 @Maze5
9+
m6 @Maze6
10+
m7 @Maze7
11+
m8 @Maze8
12+
m9 @Maze9
13+
n1 @MazeK1
14+
n2 @MazeK2
15+
n3 @MazeK3
16+
n4 @MazeK4
17+
n5 @MazeK5
18+
n6 @MazeK6
19+
n7 @MazeK7
20+
n8 @MazeK8
21+
n9 @MazeK9
422
k1 @Kata1
523
k2 @Kata2
624
k3 @Kata3

0 commit comments

Comments
 (0)