Input Events
逐条记下键盘和鼠标操作(草案)
输入事件 Observer 记下每一次键盘和鼠标操作。键盘事件和鼠标事件由同一个程序实例形成,Observer 相同。
实体
| 实体 | 资源名 | 说明 |
|---|---|---|
| Input Event | input-events | 一次键盘或鼠标事件 |
各平台只要事件的含义、字段和时间规则相同,就共用这一种业务类型;各平台怎样读取事件属于实现。
程序实例
程序实例重启或升级后沿用原来的身份。身份怎样生成、保存在哪里,尚未确定。
采集
键盘的按下和释放分别记下,长按时系统产生的自动重复被过滤掉;组合键中的每个键各自形成事件。具体的粒度见 Input Event · 粒度。
输入事件 Observer 只记下取得的操作,事件的取舍与其他 Observer 的状态无关,见 Desktop · 各自的时间线。
具体按键记录
用户可以切换“记录具体按键”,默认开启。开启时,事件记下按的是哪个键;关闭时,仍记下按下和释放,但省略具体的键。两种情况都只记按键,最终输入的文字始终不记,见 Input Event · 具体按键。
事实时间
每次事件是一个时间点:startAt = endAt = t,t 是事件发生的时刻。每次事件有自己的身份,时间戳相同的事件分别记下。
提交
接入时登记程序实例和 Input Event 的 EntitySchema,第一次输入之前就完成登记。之后业务代码为每次事件形成观测内容和 Observation,交给所在平台的 SDK,提交规则见 Submission。
待定
- 程序实例身份的生成和本地保存。
- 原生时间值的纪元(进程、开机或 Unix)和精度换算;取不到绝对时刻时怎样处理。
- 鼠标移动和滚动的粒度。
- 隐私抑制、空字符串和读取失败的表示。
- 与设备的关联。
- 提交策略和发送安排。