原项目来源于:fasa70/BetterTouchpad,在原项目基础上针对欧系设备(ColorOS)优化,并使用 Miuix 组件库重写 UI。
让 Android 触控板像鼠标一样好用
随着越来越多搭载触控板的 Android 设备(平板键盘套装、外接键盘等)出现, 触控板的使用体验问题也逐渐暴露出来。
Android 生态中,触控板的处理方式高度碎片化:
- 不同厂商对触控板的驱动和事件上报方式各不相同
- 触控板的输入链路与鼠标不同,系统底层对其处理方式存在差异,这导致在串流软件(如 Moonlight)、游戏软件等对输入设备有严格要求的应用中,触控板往往无法正常使用或行为异常,使用体验远远不及鼠标
- 系统手势支持参差不齐,部分设备缺少多指手势支持
BetterTouchpad 正是为解决上述问题而生。
BetterTouchpad 是一个运行在 Android 设备上的 Root 级 Native 守护进程,附带 Android 配置界面(APK)。
- 核心:由 Native C 守护进程承担,直接在系统底层读取触控板原始事件、识别手势、并通过 uinput 注入标准鼠标事件,使触控板的行为更接近真实鼠标,以在串流软件(如 Moonlight)、游戏软件中拥有更好的表现,同时提供完整的系统级多指手势支持。
- 配置界面:Android APK 负责参数配置与守护进程的启动 / 停止
- 守护进程由 APK 通过 Root Shell 拉起,独立于 Android 应用框架运行
- 事件拦截:应用通过 Root 权限直接读取触控板对应的
/dev/input/eventX设备节点,获取原始触摸事件(支持可选的EVIOCGRAB独占模式,防止系统其他进程同时读取) - 手势识别:对原始触摸数据进行多指手势识别,判断单指/双指/三指的动作类型
- 事件转换与注入:
- 使用 uinput(Linux 内核虚拟输入设备接口)创建一个虚拟鼠标设备,将识别到的手势转换为标准鼠标移动、点击、滚轮等事件注入系统
- 多指手势通过模拟触摸注入系统,实现返回桌面、截图、分屏等操作
- 自动设备检测:通过
getevent -p自动扫描触控板设备,获取设备路径和坐标范围,无需手动配置 (在小米平板上,触控板通常名为Xiaomi Touch。其他设备的触控板待适配)
| 手势 | 行为 | 备注 |
|---|---|---|
| 单指划动 | 移动鼠标光标 | |
| 单指单击 | 鼠标左键单击 | |
| 按下触控板(物理按压) | 鼠标左键单击 | |
| 轻触两下以拖移 | 双击后拖动(拖移模式) | |
| 双指单击 | 鼠标右键单击 | |
| 双指划动 | 鼠标滚轮滚动 | 支持自然滚动 |
| 双指边缘内划 | 返回上一级 | 通过触摸注入实现 |
| 三指单击 | 鼠标中键单击 | 新增稳定性优化 |
| 三指上划 | 底部手势条向上注入 | 支持横向跟手路径 |
| 三指左/右划 | 底部手势条横向注入 | 用于系统级应用切换动效 |
| 三指下划 | 保留三点触摸注入路径 | 兼容系统截图等行为 |
- 单指划动 / 单指单击 / 物理按键单击
- 轻触两下以拖移
- 双指单击 / 双指滚动 / 自然滚动
- 双指边缘内划返回
- 三指手势
- 三指单击(鼠标中键)
| 参数 | 说明 |
|---|---|
| 光标灵敏度 | 控制鼠标光标移动速度 |
| 滚轮灵敏度 | 控制双指滚动速度 |
| 触摸注入灵敏度 | 影响边缘内划和三指手势的注入速度 |
| 参数 | 说明 |
|---|---|
| 边缘触发区域宽度 | 边缘内划的触发区域占 X 轴的比例 |
| 双击拖移间隔时间 | 两次点击间隔不超过此值时触发双击拖移(ms) |
| 参数 | 说明 |
|---|---|
| XY 轴对调 | 交换横纵方向 |
| 反转 X 轴 | 水平方向取反 |
| 反转 Y 轴 | 垂直方向取反(默认开启) |
默认开启 XY 轴对调和反转 Y 轴,以适配小米设备。如手势方向异常,可在此调整。
| 参数 | 说明 | 默认 |
|---|---|---|
| 独占设备 (EVIOCGRAB) | 独占触控板输入事件 | 开启 |
| 自动匹配触控板设备路径和坐标值范围 | 启动时自动扫描并获取设备路径及坐标最大值 | 开启 |
当关闭自动匹配时,可手动指定:
- 设备路径,如
/dev/input/event5 - X 轴坐标最大值,如
2879 - Y 轴坐标最大值,如
1799
- Android 设备需已获取 Root 权限
- 目前主要适配 小米平板 和 O 系平板(ColorOS 系列,包含 OPPO 和 一加) 带触控板的设备,如其他设备无法使用,请在项目的 Issues 页面提交一个新的 Issue。
本项目需要 Root 权限,请确保了解相关风险后再使用。 因使用本软件造成的任何问题,开发者不承担责任。