chleo
ff843799fc
feat(windows): 小键盘数字支持选词与直输配置 ( #354 )
...
中文组句中小键盘数字以前只能选词,打编号、型号时得切英文;加 [general] numpad_digit,缺省 select 照旧选词,direct 让数字进组句一起上屏。
Closes #217
2026-10-26 11:28:47 +08:00
yenharvey
17f819b753
feat: 打「用户名@」时候选列出常见邮箱的完整地址
...
Core 的 email_completions 原来只给 Android 用,桌面的英文直输段接上,地址按快捷候选上屏、不记学习。
直输段里按空格选中地址时不再把空格交给应用。
网址本来就能在英文直输段里打(www.example.com),不另做模式。
Closes #508
2026-10-22 15:04:39 +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
2a3746654d
feat(windows): 双拼键位提示与五笔字根图
...
照 macOS 的规则:Server 按 [general] key_hint 决定每帧带不带键盘、停顿到点由 tick 弹出;UI 线程上另开点击穿透的分层窗口贴在候选窗旁,用键盘自己的渲染器免得打断候选窗动画。
2026-10-20 15:30:19 +08:00
Chao Song
cc08b48c3c
feat(windows): 按需云联想快捷键与自动联想开关 ( #564 )
...
组句中按 Ctrl+Alt+J 手动请求云候选,结果置前;可关掉自动联想、调停键等待和最短间隔,新旧设置都能改。
Closes #177
2026-10-15 19:24:20 +08:00
yenharvey
482dd65827
feat(learning): 输入统计按小时记,每次上屏当场追加
...
以前攒在内存里每分钟落一次盘,进程被杀或关机会丢最近一分钟;现在每次上屏往 usage-hourly.tsv 追加一行,最多丢正在写的半行,读时跳过。
文件里重复的时段多了或追加失败过才整理重写(原子写)。老的按天 usage.tsv 照读不写,降级回老版本两份不冲突。
2026-10-15 18:07:41 +08:00
LING
31f3da0c97
feat(windows): 整句候选显示云端译文 ( #510 )
...
本地整句候选旁异步显示一条学习语言译文,设置「云服务」页开关,缺省关;不加候选、不改顺序,空格仍上屏原首选。
翻译与组句联想分开请求、各自返回,清空输入时撤掉还没发出的请求。
Closes #452
Closes #32
2026-10-15 10:59:27 +08:00
yenharvey
49a5cd8523
feat(windows): 符号面板,按 ↑ 或悬浮条「符」、任务栏右键菜单打开
...
- 这一版原生画:单独的分层窗口,Direct2D 绑在合成器的 DIB 上,GDI 画不出彩色 emoji;下一版换 qingjian-render
- 按键与鼠标同 macOS;Server 侧状态在 dispatch/panel,格子复用 Core 的 Grid
- 没在组句时打开:Frame::symbol_panel 让空缓冲不算空帧,IndicatorState::symbol_panel 随 ModeSync 让 DLL 进组句态吃键
- 每行几格挪进 Core(PanelSection::columns),mac 与 Windows 共用
- 老 DLL(协议 < 9)不认识颜文字 / 符号候选,发给它时降级成 Emoji,免得整条帧解析失败
2026-10-13 19:18:12 +08:00
Yuk1you
96b7f80891
feat(windows): 高亮移动键可选 ← / → ( #482 )
...
新增 [shortcut] highlight_keys,缺省 updown 与以前一致;leftright 时 ← / → 连着拼音行一起走,横排候选移高亮更顺手,组句中的 ↑ / ↓ 吃掉不漏给应用。
2026-10-12 19:33:00 +08:00
yenharvey
0cfddc6f95
fix(platform): 加德语后协议升到 9
...
0.2.0 发版时协议已是 8,Translation.language 新增 German 变体,老 DLL 解不出会整帧失败,按模块约定 +1;
fcitx5 写死的三处同步;点击上屏测试里的「老 DLL」写死为 7(点击从 8 起),不再随当前版本减一。
越南语、德语提示的「1 到 2 个」统一回「条」,与其他语言一致。
2026-10-12 16:08:44 +08:00
yenharvey
8a33dd6929
feat: 英文模式候选改成按应用白名单
...
Photoshop 画布上的 W / H / V 被英文组词吞掉;设计、3D、CAD、视频剪辑、游戏都靠单键快捷键,
黑名单列不完,英文补全又只在写成段文字的地方有用。
- [apps] english_candidates_on:缺省浏览器 / 聊天 / 办公 / 笔记,三平台各一份;["*"] 处处都给
- english_candidates_off 缺省改空,留作从白名单里排除;认不出应用时只有 "*" 给
- 偏好设置的勾选框改成「只在浏览器、聊天和文档类应用里给」:勾上写缺省白名单,去掉写 ["*"]
2026-10-10 11:03:21 +08:00
yenharvey
9a3ddbf0e0
Merge branch 'feat/click-commit'
2026-10-09 21:17:35 +08:00
GH
a3a0085913
feat: 组句中敲标点先上屏高亮候选再补标点 ( #402 )
...
中文模式组句时敲 , . ? ! 等会转全角的标点,先上屏高亮候选再补全角标点(nihao, → 你好,),与微信、搜狗一致;[general] punct_commits 开关,关掉是标点进英文直输段的老行为。
2026-10-09 21:13:16 +08:00
yenharvey
5fcba715b5
feat(windows): 鼠标点候选窗口上屏候选或它的译词
...
候选窗只在候选与译词的点击区域收鼠标,其余照旧穿透,按下不抢焦点;点中的目标交给 Router 按数字键 / 译词键同一套上屏。
Server 写不了文档,上屏的字挂在焦点会话上,DLL 下一拍轮询随 Update.commit 取走写进去,赶在轮询前来的键把它接在结果前面。
协议升到 8(本周期第一次升,Linux 插件一起改);更老的 DLL 读不到 commit,不收它们的点击。
Closes #199
Closes #233
2026-10-09 20:54:42 +08:00
yenharvey
fbe7b168a6
feat(render): 候选窗口主题可以显示输入状态
...
- 渲染器的帧加 Mode:英文、繁体、标点全角三个布尔与方案显示名;主题用 when: "mode.english" 等条件分支写字、"bind": "mode.scheme" 显示方案名,渲染器里不放「中 / 英」这类文案
- mac 组装候选帧时填:中英看 Caps Lock(与菜单栏一致),简繁、标点、方案看配置,英文模式标点算半角
- Windows 由 Router 现算(与状态条同一来源),经 CandidateSink::show 交给 UI 线程,不进 Server ↔ DLL 协议;RouterConfig 加 traditional
- 平台层加 scheme_name:同 scheme_label,单开全拼时也写「全拼」,主题要一个总有内容的名字
2026-10-09 13:54:53 +08:00
yenharvey
b6c68352a5
chore(release): 合并主线并准备 0.1.5-beta.1
...
合并三平台共用发布流程、更新检查和最新输入改动,接入含章模型的数据打包与安装路径。保留已确认的 beta 更新日志和网盘入口,修复未发布节阻断发布索引的问题。
2026-09-29 12:31:24 +08:00
yenharvey
a41d1cf82a
feat: 接入含章·通变与知微模型
...
接入含章·通变的拼音解码、整句重排与词图兜底生成,扩展 macOS、Windows 和 Linux 的模型加载路径。模型文件按正式标识归档,保留旧用户目录回退,并同步数据打包、评测记录和用户文档。
2026-09-29 12:02:00 +08:00
yenharvey
464c2599cd
fix(windows): 中英模式所有应用共用一份,切换键可多选并适配系统 Ctrl+Space
...
- 中英模式存在 Server、所有应用共用一份(与搜狗一致):用户在某个应用里切了用 ModeChanged 报上去,
激活、线程得到焦点、轮询时用 SyncMode 取回跟上;悬浮状态条上点「中 / 英」直接改这一份。
之前各应用各记一份,后台线程激活时报的模式会盖掉前台的,新打开的程序偶尔一打开就是英文。
- 只在前台窗口属于本进程时轮询:后台进程会一直以为自己在前台,它们来取模式会让悬浮条在切走输入法后
又冒出来;真在前台的应用有时收不到「得到焦点」,启动后悬浮条要等打开设置程序才出现。
- 切换键改成勾选、可多选:单击 Shift(缺省)/ 单击 Ctrl / Ctrl+Alt+Space,配置写成列表,老配置的单个值照读,
ctrl+space 转成 ctrl+alt+space。
- 系统的「输入法/非输入法切换」(缺省 Ctrl+Space)不进勾选项但照微软拼音适配:它翻的输入法开关
关 = 英文、开 = 中文;我们切模式时把开关写成一致,按一下就切;开关一变作废被截走 Space 的那次「单击 Ctrl」。
- 会话号改用线程 id:TSF 的 client id 各进程都是同样那几个值,不同应用在 Server 那边撞成同一个会话。
- 协议版本保持 7:一个版本周期里只升一次。
- 任务栏点中 / 英触发的 compartment 回调里不再回写转换模式:在它自己的 OnChange 里写会报 0x8000FFFF。
2026-09-23 16:29:51 +08:00
yenharvey
15fa244d36
feat(windows): 双拼输入框显示原始按键,候选窗口拼音行照旧全拼
...
#189 只接了 macOS:Windows 的帧只有一份拼音,开关打开后输入框仍是全拼、光标却按按键算。发给 DLL 的帧改放原始按键与对应光标,Server 自绘的拼音行照旧全拼;不改协议。
2026-09-23 14:00:47 +08:00
yenharvey
5da1e0797c
feat(windows): 任务栏中 / 英图标右键菜单,悬浮条全屏时收起
...
右键任务栏图标弹出菜单:切中文 / 英文、全角标点、显示或隐藏悬浮条、打开设置;后三项经协议 v7 的 Indicator 消息交给 Server,打勾状态随 ModeSync 下发(UWP 沙箱读不到配置文件)。前台是全屏应用时悬浮条收起,退出全屏后回来。
2026-09-23 12:04:54 +08:00
yenharvey
f0c26f1cca
docs(core): 清理辅码代码里引用仓库外编号与讲过程的注释
...
「边界 N」「spec 卷」「issue #8 卷」指向仓库外的设计工作区,读代码的人查不到;讲理由的长注释压成一句、理由留在 docs/design/aux-code.md。
顺带改正降级注释里过时的「协议 < 5」,aux_segment.rs 的文档链接指向私有类型(rustdoc 报错)改成普通代码引用。
2026-09-20 10:20:04 +08:00
Shiyuhai2023
ee86db53a2
feat(windows): 辅码:协议装配、候选注记、设置页与热加载 ( #152 )
...
Windows 壳接上辅码:触发键进辅码态、码段逐键筛候选、候选上显示码;设置页新增「辅码」页(开关、触发键录制、码表导入与开关);
配置与用户 codes 目录变化热加载;加载着旧 DLL 的会话把码段降级成普通拼音段。缺省关闭。
2026-09-20 09:58:38 +08:00
yenharvey
b0ca582949
feat(windows): 中英切换键可配置,内置英文模式可关,设置由 Server 经协议下发 ( #95 )
...
单击 Shift(缺省)/ 单击 Ctrl / Ctrl+Space / 不切换;关掉内置英文模式后固定中文。DLL 不读配置文件,两项随 SessionOpened / ModeSync 下发。
Closes #81
2026-09-18 11:15:21 +08:00
yenharvey
e8b895dcc9
feat(core): 输入拼音时 Shift 字母可选进组句,两字母缩写让中文先 ( #94 )
...
缺省行为不变:Shift+字母仍是拼音先上屏、字母交给应用,「设置 → 通用」可改成进组句。两字母全大写缩写(mp / bm)不再抢在中文前,选过的英文词照旧排第一。
2026-09-18 11:15:21 +08:00
tonywoo
9cfeec4bad
feat(core): 五笔 86 输入方案与拼音混输 ( #125 )
...
形码与拼音是两条平行管线:码表按编码前缀查,释义、生词、学习与输入日志照常。配置拆成 [general] scheme(拼音侧)与 wubi(形码侧)两条轴,两边都开就是混输;两端设置页、随包码表(极点 86,Apache-2.0)与 CLI --wubi 一并接上,macOS 顺带接了大千注音。
2026-09-18 01:06:42 +08:00
YIMING LI
8e16d0fc82
fix(windows): 拼音显示位置生效、DLL 自拉 Server、简拼联想只问整句 ( #122 )
...
拼音显示位置的设置随帧下发给 DLL;Server 没起来时 DLL 在 Medium 完整性级别下自己拉起;安装完成页加提示;简拼下云联想只请求整句。
2026-09-18 00:04:22 +08:00
yenharvey
f9561dfda9
fix(windows): 小键盘敲出的标点始终半角
...
小键盘的键归输入法管之后(#150),不跟在数字后面的小键盘 . 会被转成「。」。
2026-09-18 00:02:34 +08:00
ym lee
96820dde4c
fix(windows): 按 review 收尾:CI 两处、激活时缺省值盖设置、判键回到原口径
...
- `ipc_loop.rs` / `pipe.rs`:开会话现在多回一条 `SessionOpened`,期望的条数从 5 改成 6
(`pipe.rs` 那个是读 6 条、只取其中的 `KeyResult`)
- `protocol_loop.rs`:`EngineClient::open` 改成返回元组之后这个文件没跟着改 ——
它是 `#![cfg(unix)]`,Windows 上根本编不到,只有 CI 会红
- `Activate`:`connect()` 已经把 Server 下发的设置应用了,紧接着的
`apply_input_settings(InputSettings::default())` 又把它盖成缺省值,要等下一拍 `SyncMode` 才改回来 ——
关掉内置英文模式的人每次激活都会先登记上中 / 英按钮、之后也不会撤。缺省值改成只在没连上 Server 时用。
- `eats_key`:字母判定回到原来的口径(组句外 Shift + 大写归应用,V / U / I 例外),
`push_shifted` / `apply_chinese` 那条属于另一个改动,这个 PR 不带。
另外按 review 去掉了「`-` `=` 由壳自己插入」那个提交:main 上已经有通用机制
(Server 放行没吃掉的按键时由 DLL 自己把字符插进文档),不用为它单开一条路。
2026-09-17 22:22:36 +08:00
ym lee
281c3e1395
feat(windows): 中英切换键可配置,设置由 Server 经协议下发
...
新增 `[shortcut] switch_mode`(单击 shift / 单击 control / ctrl+space / 不切换)与
`[general] english_mode`(关掉后青简固定中文模式),设置「通用」页两项。四条切换入口——
切换键、语言栏按钮、悬浮状态条、任务栏转换模式——都汇到 `service/mode.rs::set_english_mode`,
`english_mode` 关着时一处拦住,此时连语言栏按钮都不登记。
**DLL 不读配置文件**:这两个值在按键到达之前就要知道(单击判定在 `OnTestKeyUp`、要不要登记语言栏按钮),
而 DLL 跑在每个应用进程里、拿不到 Server 那份配置,`%APPDATA%\Qingjian` 对 AppContainer 里的商店应用
也读不到(那个目录里有输入日志和 `.env`,不该给它加 ACE)。所以由 Server 读配置、经协议下发:
`InputSettings` 随 `OpenSession` 的回包带一次,之后每一拍 `SyncMode` 跟着走,DLL 不读文件、不查 mtime,
设置改完约 320 ms 生效、不用切走再切回输入法。
`SessionOpened` **只回过协议版本对得上的 DLL**:老的 `open` 是只写不读,多回一条会被它当成下一次 `Poll`
的应答而报错,那条连接就废了(旧 DLL 在没重启的应用里还会活很久)。老 DLL 从 `ModeSync` 那一拍也能拿到
同一份(多余的字段 serde 直接忽略),只是慢一拍。协议版本 4 → 5。
另两处:Ctrl+Space 走 TSF 保留键,系统「输入法/非输入法切换」占着它时不重复登记、把切换交给系统那条路,
免得两边各切一次正好抵消;「激活后 1.2 s 忽略 compartment 写回」只在 `switch_mode = "ctrl+space"` 时开
(别的切换键不借系统那条路,激活时本来就是中文)。
对应 PR #95 的审阅意见。
2026-09-17 22:17:06 +08:00
yenharvey
0d3df69dc9
feat(core): v 模式的数字多出小数读法与金额写法
...
v123.5 出 一百二十三点五 / 壹佰贰拾叁点伍 / 一百二十三元五角 / 壹佰贰拾叁元伍角,
v123 在中文数字之后追加 元整 两条。金额按票据习惯:无角分写「整」、有分无角补「零」、
不足一元不写「元」;小数超过两位只有读法。
2026-09-17 13:02:16 +08:00
yenharvey
0eb953ed9c
fix: 当前页没有第 N 个候选时数字键不再被吞,当内容进缓冲区
...
gpt6 只有三个候选时敲 6:之前 macOS 把 gpt 原样上屏并丢掉 6,Windows 没有任何反应。
现在中文模式进英文直输段、英文模式接进单词;云端占位格与问字模式仍不算。
Windows 每页不足 9 个时,超出页大小的数字也不再选到下一页的候选。
2026-09-17 13:02:08 +08:00
yenharvey
49b4feca26
feat(core): 双拼下用 Shift+V / Shift+U 进表达式与问字模式
...
双拼下 v / u / i 是音节键,之前字母模式键整个让位,两个模式缺省进不去。
照搜狗 / 微软双拼的做法:中文模式、没在组句时按住 Shift 敲模式键进入,
缓冲区存大写前缀,之后与全拼同路。Windows DLL 对 Shift+V / U / I 一律送
Server,全拼下放行后自己插入。
Fixes #11
2026-09-17 12:16:52 +08:00
yenharvey
10d9836ad4
fix(windows): 英文直输段里数字追加、空格保留,与 macOS 对齐
...
组句中进了 `-` 这类符号之后数字仍被当选词键吞掉(`gpt-6` 只出 `gpt-`):apply_printable 先看 raw_mode,可见字符一律追加,
空格整段原样上屏并保留空格。engine_loop 测试超过 800 行,按主题拆成 tests/engine_loop/ 目录。box 真机验过。
Fixes #28
2026-09-17 11:51:48 +08:00