yenharvey
|
b554dbe7bc
|
fix(android): 重启输入的应用里打得快也不丢组句
之前(fbd5d342)同一输入框重启输入时,用重启给的光标把框里的拼音重新标成组合文字。打得快时这个光标与光标前的文字
是应用那边稍早的状态,我们后面的改动还在路上,对不上就丢掉组句;支付宝里淘宝闪购的搜索框快打快删时候选照样消失。
- 重启时只要在组句就留着,只记下「输入框里的组合文字标记没了」(重启后拼音还在框里,成了普通文字)
- 下一次真要改输入框时再读光标前的文字:认出它停在这段组句交过的哪一版拼音(最近 8 版里最长的那个),先删掉再写新的;
重启那一刻新连接可能还没就绪,读不准,所以不在重启时读
- 读不到或哪一版都对不上就不删,组句照旧
取舍:重启到下一键之间框里的拼音没有下划线,下一键就恢复。
测试:真机(小米 14 Pro)支付宝淘宝闪购搜索框快打 nihao、连删三下,候选一直在、框里没有重复字母,空格上屏干净的 你;
点联想词 是、国家 一路接着给下一批;用户真机按平常速度试过
|
2026-11-05 18:38:21 +08:00 |
|
yenharvey
|
fbd5d34224
|
fix(android): 应用每改一次内容就重启输入时组句不再被丢掉
之前同一个输入框重新开始输入(restartInput)时,键盘一律丢掉组句。支付宝里淘宝闪购的搜索框每改一次内容就重启一次输入,
于是每敲一个字母拼音就被清掉,候选闪一下就没了,打不出中文。
- 同一输入框重启时,光标前正好是这段拼音就重新标成组合文字(setComposingRegion),接着组句
- 应用改了内容、光标对不上时照旧丢掉组句
- 不在组句、候选条上放着联想词或电话邮箱、「撤销」时也留着;上屏这一下同样会触发重启
测试:真机(小米 14 Pro)支付宝淘宝闪购搜索框打 nihao 空格上屏 你好,每个键后的重启都接上了组句(日志 composition kept across restartInput)
|
2026-11-05 18:19:23 +08:00 |
|
yenharvey
|
aa3ee8c545
|
feat(android): 上屏后联想下一个词
之前安卓选完词,候选条就空了,接着打下一个词要从头敲拼音(#861)。
- 中文词上屏、组句结束后,候选条接着给可能跟在后面的词,最多 8 个;点了直接上屏,再给下一批,可以一路点下去
- 先列个人 n-gram 里用户在这个词后面接过的,再补随包二元语言模型里的常见接续;只给 1–4 个字的汉字词
- 全在本机:二元模型按前词分组,取后继只排前 N 个,常见词也在 0.2 ms 内
- 点过的联想词照常记词频与转移,推进上文;输入日志与统计的来源记为 follow_up,不算选词、不计键数
- 只在候选条上点选:空格、回车、数字、标点照常交给应用,接着打字、挪光标、删字就收起,删除键不先收联想
- 「设置 → 输入 → 上屏后联想」可关,缺省开
取舍:桌面端不做,数字键选词会和联想冲突。三元模型没实现取后继,安卓也不用它。
Closes #861
测试:真机(小米 14 Pro)支付宝淘宝闪购搜索框打 women 空格出 的 都 一起…,点 一起 接着出 去 加油 吃…,删除键照常删字;Core、语言模型、Android 会话加了测试
|
2026-11-05 18:19:23 +08:00 |
|
yenharvey
|
63df0b0415
|
fix(settings): 统计页三条速度各自说明什么时候才有数
之前今天速度、平均速度、最快的一天共用一句说明,只讲了停顿超过 5 秒不算。
最快的一天只算打满 5 分钟的日子,打得少但很快的那天不进来,看起来像没更新。
- 今天速度写明今天打满 30 秒才显示,平均速度写明累计打满 5 分钟,最快的一天写明一天打满 5 分钟才算
- Android 统计详情的说明也补上最快的一天的条件
测试:设置程序编译与测试通过,没开界面看提示
|
2026-11-05 16:41:30 +08:00 |
|
yenharvey
|
ff00f766f7
|
fix(android): 浏览器地址栏这类网址框能用 26 键打中文
之前网址框(inputType 带 URI,Brave、Edge 的地址栏都是)与密码框一样按键直接上屏,
26 键打不出中文;九宫格的数字键不看这个开关,所以九宫格能打。
- 网址框照常组句、出候选;地址栏也是搜索框,要能打中文
- 网址框里标点保持半角(中文键盘的「。」也落 `.`),组句中敲标点先原样落下敲的字母,
`baidu.com` 不会把 baidu 换成候选
- 密码与邮箱框不变,仍直接上屏、不学习
测试:真机(小米,MIUI)Brave 地址栏 26 键打 nihao 出 你好,打 baidu.com. 原样上屏
|
2026-11-05 16:41:14 +08:00 |
|
yenharvey
|
7e76aba542
|
feat: 九宫格点拼音行挪光标,按住拼音行拖动挪光标
之前点拼音行挪光标(#881)只支持全拼与双拼,九宫格点了拼音行没有反应,只能用左栏选音节;
拼音行能点的范围也只有字的高度(十几 dp),不容易点中。
- 九宫格:读出的拼音一个字母对一个键,点在第几个字母后就停在第几个键后,选定的音节也一样;
接着打的数字插在光标处,候选只按光标前的键给
- 挪光标时记下挪之前拼音行的读法:光标前的候选仍按它排、光标后的键仍按它显示
(ni'hao 点在 ni 后,前面还是 ni、后面还是 hao,不换成单独查时的 mi、gao);只挪光标时一直用最早那份
- 光标前是选定的音节时,退格先退回成数字(同末尾);在中间删键时记着的读法跟着删,前后两段读法不变
- 光标在中间时在拼音列选音节只改光标前的键,光标后的原样留着
- Android 候选条:按住拼音行左右拖,光标跟着手指一格一格挪,每过一格轻震一下;候选行以上整条都能点
- 按在拼音行上不再弹候选的译词气泡(长按与拖动冲突:长按一触发就收不到拖动)
取舍:没做放大镜。拼音行在输入法窗口最上沿,放大镜画在手指上方会出窗口,画在下方会被手指挡住;
改为拖动时光标在拼音行上跟着走、每格震动。
测试:真机(小米,MIUI)九宫格打 64426(ni'hao):点 ni 后光标停在 ni|hao、首选 你;按住拼音行左右拖到开头再拖回来,
读法不变;左栏选 ni 后点在 ni 后按两次退格,先退回成数字、再删一个键,显示 ni|hao → n|hao;Core 加了 6 个测试
|
2026-11-05 15:05:18 +08:00 |
|
yenharvey
|
31aa4abe5e
|
refactor(android): 游戏键盘与云端服务配置从输入法服务里拆出
之前 QingjianInputMethodService 有 820 行,超过单文件 800 行的上限;游戏键盘的判断、浮层与按钮,
以及云联想、释义兜底、快捷翻译、语音识别的配置下发都写在服务里。
- GameMode:哪个应用用游戏键盘、建浮层、触摸区、拖动栏按钮与横屏应用登记;服务经 GameMode.Host 提供包名、写设置与重建键盘
- CloudServices:云端与语音识别配置交给引擎,配置页改了跟着换(与剪贴板的局域网同步无关)
- 服务里「写设置时不重建键盘」统一成 writeSettings,服务现在 726 行
不改行为;拖动栏「换回普通键盘」重建前也先收起面板,与功能面板里的开关一致。
测试:真机(小米,MIUI)试打框弹键盘正常;浏览器里功能面板开、关游戏键盘,设置里的应用列表随之增删、勾选状态正确;横屏浮层没在游戏里验
|
2026-11-05 13:59:39 +08:00 |
|
yenharvey
|
f2f430d47f
|
fix(android): 按住删除键连删时往上偏不再触发上划清空
之前按住删除键连删的过程中,手指只要往上偏过上滑距离,抬手就会清掉光标前的全部文字。
现在连删一开始(按下 400 ms 后),这一笔就不再算上划清空,只有按下后、连删前往上划才清空。
测试:真机按住删除键 0.7 秒后上移,只连删、不清空,候选条不出「撤销」。
|
2026-11-05 12:44:34 +08:00 |
|
yenharvey
|
71d60c38b3
|
feat(android): 九宫格已选音节加下划线、退格整段退回,删除键上划清空可撤销
之前九宫格在拼音列选定的音节与没定的看起来一样;退格把选定的音节一个字母一个字母地拆,退回成数字后还会换成默认读法(ni 变成 mi)。之前也没有一次删掉已上屏文字的办法,上屏联系人名字后按删除会连名字一起删,按重输不起作用。
- 九宫格:拼音行上选定的音节画下划线(渲染器新增 `PreeditStyle::Pinned`)
- 九宫格退格:先撤回已选的字,末尾是选定的音节就取消选定、整个退回成按键,可以重选,之后再逐个删键;删完它后面的键时自动接的分隔符一起去掉
- 退回成按键后,候选与拼音行仍按用户选过的写法排,`64` 还读 ni;打了新键就不再偏向
- 在拼音列选音节不再清掉前面选好还没上屏的词
- 删除键上划(「设置 → 键盘 → 手势 → 上划删除键清空」,缺省开)删掉光标前的全部文字,最多 5000 字;候选条给「撤销」,点了原样放回,包括按下那一下删掉的字;打拼音时上划只清拼音
- 候选条上放着联系人的电话邮箱或「撤销」时,删除键、重输键的第一下只收起它们,不删已上屏的字
测试:Core、会话层单元测试;真机(Android 16)九宫格 64426 选 ni、hao 后逐次退格;上划清空后撤销;上屏联系人后按重输、删除只收起号码。
|
2026-11-05 12:37:19 +08:00 |
|
yenharvey
|
d26e404abb
|
feat(android): 通讯录里的名字进候选,上屏后接着给电话、邮箱
之前只能靠导入词库或自定义短语打人名,Android 读不了系统通讯录。
- 「设置 → 词库 → 通讯录」打开时才申请读取联系人的权限,缺省关;Kotlin 在后台读名字、电话、邮箱,整份交给会话,通讯录变了自动重读
- Core 把 2–6 个汉字的名字收成一张小词库并进查词,全拼、简拼、双拼、九宫格都能打;整段对得上的名字排在第一页第二位,不压过原本的首选;与词库词重名时只出一个候选
- 名字读音先看多音字姓(曾、单、解、尉迟……),再看整词在词库里的读音,否则逐字取常见读音
- 候选右上角画人头,由壳画,所有主题都有
- 上屏名字后候选条接着给这个人的电话、邮箱(可单独关),点了才上屏;接着打字、按空格或光标前不再是这个名字就收起,空格、回车的含义不变
- 名字和号码只在内存里:上屏不记学习、不写输入日志,云联想请求里去掉名字,关掉开关即清掉
- 只给「仅在使用中允许」时 MIUI 在输入法后台启动那次返回空结果,读到零个时在键盘弹出时重读
测试:Core 与会话层单元测试;真机(Android 16,MIUI)九宫格 zengxiaoxian 出「曾小贤」排第二带人头,上屏后给出号码与邮箱,点号码上屏、按空格收起;在系统设置的搜索框里同样能打出。
Closes #876
|
2026-11-05 11:37:35 +08:00 |
|
yenharvey
|
94ed1917f2
|
feat(android): 全面屏底栏两个角都不放键时收起,键盘贴着手势条
之前左下角、右下角都选「不放」时,键盘下面仍留着一条 40dp 的空白操作条,导航栏上方空出一截。
现在两个角都不放键时不建这条操作条,只让出导航栏或手势条的高度,和关掉全面屏适配一样;任意一个角放了键时照旧。
导航栏那一截仍然让出来,键不会被三键导航或手势条盖住。
测试:真机(Android 16,手势导航)两个角都选「不放」后键盘下沉到手势条上方,改回缺省后底栏恢复。
Closes #889
|
2026-11-05 10:49:10 +08:00 |
|
yenharvey
|
11807b9427
|
feat(android): 九宫格底排去掉逗号句号,空格加宽
- 左侧拼音列不在输入时已经放着 ,。?!,底排再放一份就显得挤,空格也短
- 只改九宫格,空格宽度从 3 改成 5;全键盘、双拼等其他布局不变
Closes #905
|
2026-11-05 10:26:44 +08:00 |
|
yenharvey
|
c97ad80558
|
fix(android): 候选条里的 emoji 只画一份
- 渲染器能画出彩色 emoji 的系统上(报在 Android 17),位图里的 emoji 和壳用 Canvas 补画的那份上下错开,看起来像重影
- 位图里 emoji 候选改成全角空格占位,点击区域和宽度不变,彩色 emoji 只由壳画一次
Closes #902
|
2026-11-05 10:26:43 +08:00 |
|
yenharvey
|
ec1bb853a9
|
feat(android): 上滑按扇形判定、可选长按出大写,点拼音行挪光标
- 上滑只看方向不看列:离开按下点后一路在往上约 50° 的扇形里、往上过 18dp 就算,出的总是按下的键;中途偏出扇形作废,交给滑行或点按
- 手指一进扇形就撤掉等着的长按:慢慢斜着划时长按先弹气泡、手指再一歪就选上左边的大写,这是误触大写的来由
- 新设置「长按出大写」(缺省关):长按不滑抬手出大写;上滑仍是角标,两条手势各管各的,不随状态换含义
- 点拼音行挪光标:渲染器给出拼音行各字之间的位置(PreeditHit),Core 的 move_cursor_to_marked 换回缓冲区光标,全拼按字母、双拼按音节;纠错、辅码、注音、九宫格对不上就不挪
- 光标在开头时退格先挪到末尾再删:屏幕键盘没有方向键,不然退格会卡住
Closes #881
Closes #882
|
2026-11-04 20:33:39 +08:00 |
|
yenharvey
|
706af8e80f
|
feat(android): 设置里可选候选后面配几个 emoji / 颜文字 / 符号
Android 没有 PC「候选」页的这三项,emoji 总是跟在候选后面占地方,想要只出字词的人关不掉。
「输入 → 候选后面」三行各选不显示 / 1 / 2 / 3,交给引擎原有的 set_emoji_limit 一类接口,全拼、双拼、九键都生效;
缺省 emoji 3、颜文字与符号各 1,同 PC,旧设置里没有这几项时也按它来。几档与缺省值从 Rust 的 SettingChoices 取。
真机(小米 Android 16)验过:emoji 不显示后 kaixin 只剩颜文字,再关颜文字只剩字词,改回缺省 emoji 回来。
Closes #872
|
2026-11-04 19:40:49 +08:00 |
|
yenharvey
|
f121eb6a69
|
feat: Android 日志落盘并能打包发送,各端日志包附系统信息
反馈问题时拿不到日志:Android 的日志只进 logcat,用户不接电脑拿不出来;PC 的日志包里没有系统版本,没法排查。
Android:tracing 同时写 files/logs/ime.<日期>.log(按天、留 7 天,不经后台线程,没接住的异常记完再退),Kotlin 经 AppLog 写同一份;
应用一起来补记上回之后的进程退出原因(崩溃、ANR、被系统清理),输入法记弹出、收起、onEvaluateInputViewShown 不显示的原因。
文件缺省只记 info,开了「详细日志」才记 debug(会带打的字),开关存在单独的 prefs,免得触发键盘重建。
「数据 → 日志 → 打包日志」:发送给…(系统分享,QQ / 微信 / 邮件)排第一,手机上存下来的文件多数人找不到;也能存到手机。
包里是日志、设置清单(抹掉像密钥的项)与 device.txt(机型、系统、省电限制与待机分组、已启用输入法、实体键盘、随包数据清单),
每项单独取,读不到写 unknown,不让整包失败。
PC:打包到桌面时多一份 system.txt(版本、系统与 build 号、架构、区域,Windows 的 DPI,macOS 的机型,Linux 的发行版、桌面、会话与输入法框架)。
真机(小米 Android 16)验过打包、发送与存到手机;PC 只在 Windows 上验过 system.txt,macOS 与 Linux 分支没验。
有助于定位 #891(键盘有时候弹不出来),本身不修它。
Refs #891
|
2026-11-04 19:10:15 +08:00 |
|
yenharvey
|
8501c96cf0
|
fix(android): 类别为 0 但带文本标志的输入框照常组句,抖音直播间 26 键能打汉字
抖音直播间的输入框报 inputType=0x20000(类别 0,只有多行标志),原来非文本类别一律直输,字母原样上屏。
只有 inputType 整个是 0(终端一类要原始按键的)才直输;数字、电话、日期照旧。
九键不看这个判断,所以之前九键正常。真机在抖音直播间验过 26 键出组字串与候选。
Closes #867
|
2026-11-04 19:10:14 +08:00 |
|
yenharvey
|
61ca4b4150
|
feat: 符号面板加「翻译」组,删掉 Windows 的整句候选翻译
- 整句候选翻译译的是猜出来的候选,猜错就白发;改成用户在面板的框里自己打一句、停键后再译,整句只发确认过的内容
- 翻译组排在最前,每种目标语言算一个分类([ ] 换),打拼音时按 ↑ 直接落在这组;没在打字时 [shortcut] translate_panel(Ctrl+Alt+Y / ⌃⌥Y)打开
- Core panel/translate:原文带光标,停键 800 ms、两个字以上才发,内容没变不重发,没翻出来 2 秒后自动重试一次、再失败等回车;译文按原文 + 语言缓存在内存(换提供方清空),不落盘
- 译文放进应用的 preedit:Windows 译文靠轮询送到,DLL 记着写进文档的组句文字,变了就补一次编辑会话;行内不显示拼音的设置下也照样放
- 框的排版抽成 bamboo-slip 的 TextFlow,与设置程序的 TextField 共用;面板不是 Ui 搭的,布局后按各字位置给出 PanelHit::Caret
- [predict] sentence_translation 不再认(旧配置里写着不报错),两个设置程序的开关与文档一并去掉;生词本整句翻译保留
- Windows dispatch/composed/mod.rs 超了 800 行,按联想、导航、出帧拆开
- 初音主题当前分组胶囊改纯色
|
2026-11-04 16:18:39 +08:00 |
|
yenharvey
|
cd56d700a8
|
fix(android): 游戏键盘不贴到屏幕底边
- 贴底时最下一排键(符、123、空格、发送)落进系统底部手势的感应区,MIUI 上点下去被当成手势吃掉,还会让应用收起键盘
- 可挪范围的底边让出 32dp;已记的位置照比例换算,自然落在线上
|
2026-11-04 14:31:43 +08:00 |
|
yenharvey
|
671560d054
|
refactor(android): 改版与游戏键盘收尾
- 删掉改版后没人用的单选行 SettingsWidgets.choice 与字符串 stats_days、game_keyboard_title
- 游戏键盘设置页回到前台时重画:透明度、勾选在游戏里也能改
- GameFrame 算可触摸区域不再每次新建数组
- 注释跟上现状:App 深浅色按「外观」走、顶栏不再滚动后浮起
- crate-notes 的内置主题列表补上素笺
|
2026-11-04 13:20:34 +08:00 |
|
yenharvey
|
a121541ef5
|
feat(android): 横屏游戏键盘
- 勾上的应用里横屏打字时换成半透明悬浮小键盘,键盘外的点击透给游戏(onComputeInsets 只收键盘那一块,内容区不顶起),也不进横屏全屏编辑
- 顶栏拖动、透明度一键换档、换回普通键盘、收起;位置按应用记住(存成可挪范围里的比例,换屏幕尺寸也落在屏内)
- 设置 › 键盘 › 游戏键盘:总开关、透明度、大小、译词(缺省关,关时不记生词)与应用列表;列表只列横屏打过字的应用
- 功能面板「常用功能」加「游戏键盘」一格,在应用里直接给它开关,不用退出去设置
- manifest 声明查桌面应用,设置页才取得到应用名与图标
|
2026-11-04 13:20:34 +08:00 |
|
yenharvey
|
c9510d2ebc
|
fix(android): App 界面也按「深浅色」设置,不再只跟随系统
- 用户文档早写着「应用与键盘一起变」,实际只有键盘按设置、App 页面只看系统夜间模式
- Android 12 起用按应用的夜间模式(UiModeManager.setApplicationNightMode),不动系统设置;更早的版本 App 仍跟随系统,文档注明
- 外观页脚注改为「键盘与本 App 都按它」
|
2026-11-04 13:20:34 +08:00 |
|
yenharvey
|
70ff0901b8
|
feat(android): 生词本、统计、词库、同步、语音与关于页按「素笺」重排
- 生词本:搜索框与 全部 / 生词 / 近 7 天 / 认识了 分段收进固定顶栏;去掉三个汇总数字(统计页有),词数与学习语言放在词表上方;每行右边是等级与 认识 / 眼熟 / 生词 标签
- 统计:顶上分段切时段,下面这一段的字数与柱状图(今天按小时,其余按天),打字质量两行两列,其他数字与词汇各一组
- 词库、局域网同步、语音识别、关于改成分组卡片,说明放到组下的脚注;删除与清除密钥用危险红
- 柱状图没有刻度时不再留写字的空白
译本待更新:i18n/en/platforms/android-settings.md
|
2026-11-04 13:20:34 +08:00 |
|
yenharvey
|
0ba1f529a2
|
feat(android): App 界面按「素笺」重做,设置项重新分组
- 配色换成浅灰底、白色分组卡片、单一竹青强调色,跟随系统深浅色;去掉顶部渐变与彩色图标块
- 顶栏标题居中、与各页同字号,顶栏与底部 tab 栏都铺栏底色加细线,把内容区框出来;顶部留白按系统给的状态栏与刘海高度
- 底部 tab 改为 首页 / 生词本 / 设置:「我的」与首页统计重复,去掉;首页只放今日统计、最近见过的生词与试打框,没切到青简时换成两步引导
- 原「键盘设置」拆开:输入(方案、拼音、中英混打、标点字形、学习习惯)、键盘(尺寸、按键、手势)、剪贴板、云端大模型各一页,学习语言放在设置页
- 震动开关与强度合成一个 关 / 轻 / 标准 / 重 分段;开关自绘(系统 Switch 换轨道后会被裁掉一截)
- 键盘工具栏的设置按钮落到设置 tab,翻译缺配置时直接进云端大模型页
- 生词标签色与危险操作红收进 AppColors
译本待更新:i18n/en/platforms/android-settings.md、android-tools.md、android.md
|
2026-11-04 13:20:34 +08:00 |
|
yenharvey
|
15000fda65
|
feat(render): 符号面板改由青简渲染器画,跟随主题
两端原来各画一套(Windows Direct2D、mac AppKit),换主题面板不变、两边细节也对不齐。
现在 render 出位图和点击区域,壳只贴图、转鼠标;候选窗选系统绘制时面板照样用渲染器(青简绿)。
主题加 panel 一节:排法固定、尺寸与内容无关,字体、尺寸、颜色可改,底、当前分组与高亮格可写渐变或图片。
没走节点树:节点树按候选窗数据建,接面板要大改 builder;以后要的话在 panel 下加 root,同状态条。
Windows 去掉只有旧面板用的 Direct2D / DirectWrite 功能。
|
2026-11-04 12:50:55 +08:00 |
|
yenharvey
|
1b6166ca46
|
refactor(clipboard): 按约定整理目录与注释
一个类型一个文件,同前缀的收进目录;app 按职责拆成几个 impl。
霓虹灯的窗口与动画分开,安卓同步相关的类进 clipboard/sync。
待办里的同步一项移出平台缺口列表,那个列表要和设置程序的表一一对应。
|
2026-11-03 10:09:25 +08:00 |
|
yenharvey
|
d764441eda
|
feat(clipboard): 局域网同步,Windows 与 Android 互传文字和图片
不想再靠聊天软件在设备之间传内容,也不经过任何服务器。
配对输 6 位码(SPAKE2 + Noise),PC 之间没法扫码;合并按内容取 id、比修改时刻,手动删除才同步,裁掉和清空只影响本机。
安卓读不到网卡标志,mDNS 库用不了,改走系统的 NsdManager;有的路由器不转发组播,再加同网段扫描兜底。
连接状态只看实际连接结果:mDNS 看不见时同步照样通,显示不在线会被当成配对失败。
收内容时边缘亮霓虹灯,颜色随速度,成功转绿、失败转红。
调试版可用 -PsideBySide 并排装,不用卸发版签名的包。
|
2026-11-03 10:09:25 +08:00 |
|
yenharvey
|
ced91e904c
|
chore(release): 开发版 0.3.3-dev
|
2026-10-30 11:31:26 +08:00 |
|
yenharvey
|
b4001c17d8
|
chore(release): 0.3.2
|
2026-10-30 11:09:37 +08:00 |
|
yenharvey
|
684231b67a
|
fix(android): 换了手势 / 三键导航后键盘底边跟着重量,不被导航栏盖住
底边让出的导航栏高度只在建视图时量一次;换导航方式时输入法进程不一定重建视图,
从手势换到三键后,三键导航栏盖住最下一排键的下半截,要杀掉输入法进程才恢复。
每次弹键盘时重量一次,变了就重建视图。
小米 14 Pro(Android 16):改前手势 → 三键复现了遮挡;改后同一进程里三键 → 手势跟着重排,反方向没在改后再切一次。
Ref #771
|
2026-10-29 19:40:21 +08:00 |
|
yenharvey
|
59555b20fd
|
fix(android): 语音、快捷翻译没配好时在工具栏位置提示,点了进设置页
没填识别服务或云端大模型时点话筒、翻译,原来只弹一个 toast,一闪就过,用户反馈像点了没反应。
改成在工具栏的位置放一行提示,点它打开「语音识别」或「键盘设置」;5 秒后或出候选时收起。
键盘还没建起来时仍退回 toast。
|
2026-10-29 19:40:21 +08:00 |
|
yenharvey
|
1fdc98c0fe
|
feat(android): 键面字号与按键震动强度可在键盘设置里调
键面字号与候选字号分开,同样小 / 标准 / 大 / 特大四档,键上的字与按键气泡一起缩放;放不下的双拼韵母照旧按宽度缩。
震动强度分轻 / 标准 / 重,标准保持原来的预置效果;预置效果不能缩放,轻一档用合成振动缩小 tick,旧机器退回小振幅短震。
震动关着时不显示强度一项。
Closes #826
Closes #775
|
2026-10-29 19:40:20 +08:00 |
|
yenharvey
|
d6eacf2c09
|
feat(android): 键盘设置加拼写纠错开关,与 PC 同名同缺省
名字用 PC 的 [general] spelling_correction,缺省开;整份 InputOptions 交会话时调 Engine::set_spelling_correction。
放在「输入」里模糊音下面,说明文字与 PC 设置程序一致。
|
2026-10-29 19:40:20 +08:00 |
|
yenharvey
|
1b7fd5701d
|
feat(android): 空格滑动移动光标加开关,只认横向,组句中不响应
参考小米「全面屏键盘优化」的快捷移动光标:按住空格左右滑,每 14dp 挪一个字,缺省开,可在键盘设置关掉。
起判要求横向位移大于竖向,起手在空格上,与字母键起手的滑行输入、上滑输入分开。
组句中不响应:Core 有按字母挪拼音光标的能力,但安卓会话没接、候选条也不画拼音光标,接上要动会话、帧与渲染,不在这次范围;
原来的做法是先把拼音原样上屏再挪,会把没选的字母落进输入框,不如不动。
|
2026-10-29 19:40:20 +08:00 |
|
yenharvey
|
56c99635c8
|
feat(android): 电话、数字、日期时间输入框弹出直接是数字键盘
原来这类输入框也弹 26 键,要再点「123」;按 inputType 的类别判断,换输入框时照旧回到字母页,所以离开后是原来的键盘。
数字键盘仍有「返回」,需要字母(如带分机号的备注)还能换回去。
|
2026-10-29 19:40:20 +08:00 |
|
yenharvey
|
9309ec1cdd
|
feat(android): 工具栏可定制,功能面板「定制工具栏」里勾选要放的工具
工具栏中间一排按用户勾选的先后排,存 ToolbarTool 名字;没定制过仍是原来七个,「恢复默认」回到这七个。
全部工具比原来多常用语、切换输入法、设置,都是现有入口,不新增行为。
两头的 logo 与收起键盘固定不动,进功能面板与收起的位置不随定制变。
少于五个时平分中间那段,多于五个照旧横滑。
Closes #777
|
2026-10-29 19:40:20 +08:00 |
|
yenharvey
|
fd5d73edfb
|
feat: 设置程序与候选菜单支持七种界面语言
- 新 crate bamboo-slip-i18n:各 crate 的 locales/*.toml 编译时嵌入,tr 按进程级的界面语言查,缺的文案退到英文再退到中文;各文案表有测试核对废键与参数
- 设置程序、core、platform 里给用户看的文字都进了文案表,简体、繁体、英、日、西、越、德七种齐全;日志与报错类型不翻
- 界面语言放在设置侧栏左下角(文A 加当前语言自己的叫法),看不懂当前界面的人也找得到;配置是 [general] ui_language,缺省简体中文(不少中文用户的系统首选语言是英文),system 跟随系统
- 数字、日期跟着语言写:中日按万 / 亿,其余按 K / M,小数点与千位分隔按语言;统计页的数字卡片放不下时两张一排
- 生词本里的整句译词与原句换行,不再冲出卡片、压住右边的时间
Closes #823
|
2026-10-29 18:24:57 +08:00 |
|
yenharvey
|
aac39240b1
|
feat(android): 符号面板改偶数列,加「左手便捷」布局把分类列放左边
符号一行改成偶数格(一字一格六格,网格窄了排四格;宽的四格或两格):目录里成对的括号引号都从偶数位起,偶数列就不会把【】《》“” 拆到两行。只是排列,不动位置语义,直接改默认。
分类放左边、返回挪左下是改按键位置,按用户定的原则不动默认(肌肉记忆),做成另一套键位排法 Settings.Arrangement:「默认」与「左手便捷」,在键盘设置的「按键 → 布局」和功能面板常用功能的「左手布局」里切。
左手便捷的符号面板:分类竖排成左边一列(Tabs 加 COLUMN 样式,可竖着拖),左下角是返回;右上的返回和右下的键盘图标是同一个功能,两个都去掉,右列只剩删除与锁定,也不再要底排。表情面板不变。
功能面板要就地改一个选项设置,PanelActions 加 setChoice(同 setToggle,写字符串值)。
|
2026-10-29 17:21:58 +08:00 |
|
yenharvey
|
cab2e498fa
|
feat(android): Shift 双击锁定、上滑输入角标、英文敲字母串、双拼键面可关、微软双拼 ; 占 Shift 位
用户群反馈的一批键盘问题,都直接改在默认键盘上(不动已有键的位置,微软双拼按用户定的跟方案走)。
Shift 改成三态:点一下单次,350 ms 内再点锁定(键亮着再加右上角一个品牌色小点,与只大写一次分开;微软双拼的 ; 同样显示),锁定时点一下解锁;单次的出过一个字母就熄。拼音、日语组句中 Shift 仍不响应,英文组句中可以,好敲大小写混着的串。
上滑输入(缺省开,可关):在键上往上划过 18dp、不偏出本列就上屏长按不滑直接抬手的那一项(字母键角标、九宫格数字)。要求起终点同列,与跨键的滑行区分;两者都成立时上滑优先,竖着相邻两键的滑行词很少。
英文模式之前敲验证码卡在:数字、标点会顶首选,首选是补全或纠错出的词,字母串被换掉。现在空格、数字、标点前都原样落下敲的字母,要词点候选;不改 Core 的英文候选,只改壳里这几个键怎么结束组句。
双拼键上的声韵母小字加开关(缺省显示)。
微软双拼照手机键盘的习惯把 ; 放到 Shift 位、二排回到九个键:点按永远是 ;,上滑是 Shift(快速上滑两次锁定)。没做成搜狗那样按组句状态换含义的键,同一个动作在什么时候都是同一个意思;其他用 ; 的方案键盘不变。
|
2026-10-29 17:21:58 +08:00 |
|
yenharvey
|
937b3ae119
|
fix(android): 删掉的剪贴板记录不再被收回来
键盘每次弹出都会读一遍系统剪贴板(监听在输入法没起来时收不到),用户删掉的那条若还是系统剪贴板的当前内容,下次弹键盘又被记回历史,看起来就是删除没生效。
同一份剪贴板按 ClipDescription 的时间戳只记一次;时间戳存在 prefs 里,输入法进程被杀重起后也认得。
用户再复制一次(时间戳变了)才重新记,与「删了就是不要」的预期一致;不去改 Rust 侧的历史存储,删除本来就落盘了。
|
2026-10-29 17:21:58 +08:00 |
|
yenharvey
|
6f2b756f20
|
fix: mac 与安卓的 panic 日志不记正文
切片越界之类的 panic 消息会带上用户打的字;与 Windows(#832)一致,只记位置(mac 另记回溯)。
mac 回调边界的 catch_panic 也不再单记 payload,安卓不再接回会打出正文的默认 hook。
|
2026-10-28 17:21:44 +08:00 |
|
yenharvey
|
6d76cdf941
|
feat(render): 页码两侧的翻页箭头能点,Windows 候选窗滚轮翻页
主题节点加 action(previous_page / next_page),写了的节点出 HitTarget::Page 点击区域,
四周放 4 点免得小箭头难点;条件 page.previous / page.next 让翻不动的一侧画淡。
七个内置主题横竖排都在页码两侧画箭头:青简绿系新加矢量 chevron 图标跟主题色,
图片主题给原有箭头标上 action,竖排补上小箭头。mac / Windows 点箭头与翻页键同路;
Windows 另收候选窗上的滚轮,攒够一格翻一页。安卓候选条没有箭头,只补字段。
Closes #250
|
2026-10-27 16:31:00 +08:00 |
|
Haoyu Xi
|
dd2657e305
|
feat: 词库导入支持只有词的表,读音按随包词库派生 (#787)
只有词的 txt 与混了无读音行的 Rime 词库以前认不出或静默丢词;现在按随包基础词库与领域词库派生读音,四个导入入口都接上。
Closes #698
|
2026-10-26 09:50:20 +08:00 |
|
yenharvey
|
4a076d4506
|
chore(release): 开发版 0.3.2-dev
|
2026-10-22 18:43:31 +08:00 |
|
yenharvey
|
a5126ac090
|
chore(release): 0.3.1
|
2026-10-22 17:48:52 +08:00 |
|
yenharvey
|
58d5d4b2f7
|
chore(release): 开发版 0.3.1-dev
|
2026-10-22 16:31:42 +08:00 |
|
yenharvey
|
393656df5e
|
chore(release): 0.3.0
产品数据升到 data-v8:并入青简词库后的 dict.qj、补充词库 dicts/general.qj,去掉用不上的含章·知微。
|
2026-10-22 15:33:17 +08:00 |
|
yenharvey
|
b6319013e8
|
feat: 候选右键菜单:置顶、降权、删除(#749)
macOS、Windows 右键候选(macOS 也可 ⌃ 点按)弹出菜单,菜单由青简自己画:
bamboo-slip 新增 PopupMenu 组件(与设置页下拉菜单同一套样式),
qingjian-render 的 render_menu 出位图,壳只给不抢焦点的弹出窗、管悬停与点击。
- 置顶:给当前输入码加一条比同码短语都高的自定义短语(封顶 999),可在设置里看到、改、删;取消置顶删掉它
- 降权:记进学习数据 user-demoted.tsv,每降一次往后挪一格,词库词也能降;可取消
- 删除:原来 Shift + 数字删候选的那套,挪进菜单;Shift + 数字删候选去掉,回到普通符号
- 菜单项与动作在平台层 candidate_menu,两个壳共用;Esc 只关菜单,敲键、候选窗重画或收起时关
- Linux 候选窗由 Fcitx 画,暂无此菜单
|
2026-10-22 14:39:00 +08:00 |
|
yenharvey
|
95b2e19684
|
feat(phrases): 自定义短语改按权重排
固定位置 1–9 换成可以直接填的权重(1–999,新建 10,可以相同):同一个输入码下权重大的在前,
相同的按列表顺序,都排在普通候选前面;与短语同字的普通候选去掉,不再出两遍。
旧配置的 position 读进来换成权重(第 1 位是 10),保存时原地改成 weight、注释保留。
Android 常用语的输入码上限与 Core 一致(32 个字母),以前存下的超长码转换时跳过,不再让整组常用语挂不上。
|
2026-10-22 12:23:34 +08:00 |
|
yenharvey
|
9b2acacae0
|
ci(android): CI 编 Android,发版出签名的 APK
ci.yml 加 android job 编 debug APK,Kotlin 与 Gradle 以前没有任何检查。
release.yml 加 android job:带产品数据出 arm64 APK,签名后 apksigner 验过才上传;v 标签连 Android 一起发,单发用 android-v。
APK 的 versionName / versionCode 改从 core/Cargo.toml 算,发版门禁同样核对它;0.3.0 起 Android 与桌面同号,成熟度用「预览版」标注。
.qj 不再设 noCompress,APK 从 225 MB 降到 95 MB,只多在首次启动解压时花几秒。
README、译本与用户文档把 Android 从「需从源码构建」改成下载 APK;发版文档补签名密钥的生成与 Secrets。
|
2026-10-22 10:01:35 +08:00 |
|