From f901e097f60047d9e926eecdfc655467335d36c8 Mon Sep 17 00:00:00 2001 From: MeowOS Date: Mon, 31 Aug 2026 19:38:21 +0800 Subject: [PATCH] =?UTF-8?q?feat(sdk/ime):=20=E6=95=B0=E5=AD=97=E9=94=AE?= =?UTF-8?q?=E7=9B=98=E6=94=B9=E5=B1=85=E4=B8=AD=E4=B9=9D=E9=94=AE=E5=B8=83?= =?UTF-8?q?=E5=B1=80=20(1-9=20=E8=87=AA=E4=B8=8A=E8=80=8C=E4=B8=8B=203x3,0?= =?UTF-8?q?=20=E5=9E=AB=E5=BA=95=E5=B1=85=E4=B8=AD,=E5=BA=95=E8=A1=8C=20ES?= =?UTF-8?q?C|0|=E9=80=80=E6=A0=BC+OK)=20+=20=E5=85=A8=E9=93=BE=E9=87=8D?= =?UTF-8?q?=E9=93=BE=20(meow=5Fui.a=20ee71b94a;=20hello=208cb81964/files?= =?UTF-8?q?=208b2b2373/ncm=204e975d6d=20=E5=B7=B2=E7=83=AD=E6=9B=B4?= =?UTF-8?q?=E5=88=B0=E5=8D=A1)=E3=80=82=E5=AE=BF=E4=B8=BB=20test=5Fime=5Ff?= =?UTF-8?q?ix/test=5Fpinyin=20=E5=85=A8=20PASS?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- meow_ui_ime.c | 31 +++++++++++++++++-------------- 1 file changed, 17 insertions(+), 14 deletions(-) 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, '>'); } } }