Skip to main content

Module touch

Module touch 

Source
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)。
TouchTuning
计价参数,单位是词网格的自然对数分。sigma_*、bias_y 以键为单位。默认值在三端宿主导出的几何上扫参得到(见模块注释里的笔记)。

Enums§

KeyGeometryError
几何不合格的原因,整份拒绝。

Constants§

TOUCH_OFFSET_LIMIT
偏移钳到 ±1.5 键:更远的落点宿主不会归给这个键。
TOUCH_STEPS_PER_KEY
偏移的量化单位:一个键分成这么多份。打分和缓存签名用同一个量化值,命中缓存的答案和重新计算的一致。

Type Aliases§

KeyRect
宿主给的一个键:[cx, cy, w, h],宿主坐标。