Expand description
触屏按键的落点(#10018):宿主注册的字母键几何、每次按键相对被按键中心的偏移,以及按落点给双拼纠错计价。
只有触屏宿主经 msime_client_set_key_geometry、msime_client_touch_character 送进来;桌面宿主和实体键盘永远不调用,所有用到它的地方在没有触点时都走原来的路径,结果逐字节不变。坐标系由宿主自定,引擎按字母键键宽、键高的中位数归一,一个键是单位大小,不论宿主的像素、密度和键距如何。
罚分看落点离候选键和离被按键各有多远:pen(j) = clamp(B + s·(d²(P, c_j) − d²(P, c_k)), P_MIN, P_MAX),d² 按 σx、σy 各向异性,并按纵向偏置 b_y 把每个键的瞄准点往下挪。单位与词网格的边分相同(自然对数),纠错边从对数概率里扣它,解码不用改。设计和取值见 .agents/notes/implemented/feature/2026-10-27-shuangpin-touch-correction.md。
Structs§
- KeyGeometry
- 宿主注册的一份字母键几何,按键宽、键高的中位数归一。
id是宿主分配的非零代次,布局一变(旋转、分离、单手、键高、微软;显隐)就换一个。 - KeyTouch
- 一次按键的落点:相对被按键中心的偏移,单位 1/20 键(
TOUCH_STEPS_PER_KEY),钳到 ±TOUCH_OFFSET_LIMIT。copy是这个字母的第几个实例:0 是keys里的那个,1 起依次是duplicates里同一字母的各个(分离键盘两边各有一个 G、V)。 - Touch
Tuning - 计价参数,单位是词网格的自然对数分。
sigma_*、bias_y以键为单位。默认值在三端宿主导出的几何上扫参得到(见模块注释里的笔记)。
Enums§
- KeyGeometry
Error - 几何不合格的原因,整份拒绝。
Constants§
- TOUCH_
OFFSET_ LIMIT - 偏移钳到 ±1.5 键:更远的落点宿主不会归给这个键。
- TOUCH_
STEPS_ PER_ KEY - 偏移的量化单位:一个键分成这么多份。打分和缓存签名用同一个量化值,命中缓存的答案和重新计算的一致。
Type Aliases§
- KeyRect
- 宿主给的一个键:
[cx, cy, w, h],宿主坐标。