diff --git a/meow_ui_ime.c b/meow_ui_ime.c index 6ebfd71..b28ad6e 100644 --- a/meow_ui_ime.c +++ b/meow_ui_ime.c @@ -197,23 +197,26 @@ static void build_kb(meow_ime_mode mode) add_key(x + GCOL, y + GCOL * 4, (GW + GAP) * 6, GH, K_SPACE, ' '); add_key(x + GCOL * 8, y + GCOL * 4, 2 * GW + GAP, GH, K_ENTER, '>'); } - } else { /* MEOW_IME_NUM:ESC(取消/关闭) + 空格 + 退格;单独一行回车(OK=只提交不关闭)。 + } else { /* MEOW_IME_NUM:居中九键数字盘(用户定案)——1-9 从上到下 3×3,0 垫底居中; + * 顶行保留常用符号;底行 ESC(取消/关闭) | 0 | 退格+OK(只提交不关闭)。 * M2.71-bug7:修掉旧版「同格重叠的 BACK+ENTER」与重复回车。 * M2.71-IME-fix:回车不再关闭(与 ASCII 一致),关闭走 ESC/背景。 */ - add_ch_row(y, "1234567890"); - add_ch_row(y + GCOL, "-/.:*#+="); + add_ch_row(y, "-/.:*#+="); /* 符号行(8 键居中) */ { - int total = 10 * GW + 9 * GAP; - int x = (480 - total) / 2; - add_key(x, y + GCOL * 2, GW, GH, K_ESC, 'X'); /* 取消/关闭(丢弃) */ - add_key(x + GCOL, y + GCOL * 2, (GW + GAP) * 7, GH, K_SPACE, ' '); /* 空格 */ - add_key(x + GCOL * 8, y + GCOL * 2, (GW + GAP) * 2 - GAP, GH, K_BACK, '<'); /* 退格 */ - } - /* 回车(OK=只提交不关闭) */ - { - int total = 10 * GW + 9 * GAP; - int x = (480 - total) / 2; - add_key(x + GCOL * 4, y + GCOL * 3, 2 * GW + GAP, GH, K_ENTER, '>'); + /* 九键:3 列 × 100px 宽、列距 20,整体 340 宽居中(x0=70,190,310)。 */ + const int NW = 100, NG = 20; + const int x0 = (480 - (3 * NW + 2 * NG)) / 2; /* = 70 */ + static const char pad[3][4] = { "123", "456", "789" }; + for (int r = 0; r < 3; r++) + for (int c = 0; c < 3; c++) + add_key(x0 + c * (NW + NG), y + GCOL * (1 + r), NW, GH, K_CH, pad[r][c]); + /* 底行:ESC(取消/关闭) | 0 | BACK + OK(只提交不关闭)。BACK/OK 各半格。 */ + int yb = y + GCOL * 4; + add_key(x0, yb, NW, GH, K_ESC, 'X'); + add_key(x0 + (NW + NG), yb, NW, GH, K_CH, '0'); + int x3 = x0 + 2 * (NW + NG); /* 第 3 列左缘 */ + add_key(x3, yb, (NW - GAP) / 2, GH, K_BACK, '<'); + add_key(x3 + (NW - GAP) / 2 + GAP, yb, (NW - GAP) / 2, GH, K_ENTER, '>'); } } }