littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于Android系统的输入事件控制工具

项目简介

blockevent 是运行在 Android 用户空间的工具,类似 Android 的 getevent 工具。它提供“阻塞输入事件”和“触发停止阻塞”两种输入设备控制概念,借助 EVIOCGRAB 控制独占输入设备句柄,阻止输入事件流向 Android 平台的 EventHub,实现对输入事件的精确控制。

项目的主要特性和功能

  1. 可阻塞指定设备的输入事件,防止其传递到 Android 系统。
  2. 接收到指定输入事件或 SIGINT 信号时,释放设备并停止阻塞。
  3. 支持在触摸屏上指定矩形区域进行部分阻塞。
  4. 能同时阻塞多个输入设备。
  5. 支持通过特定设备事件(如音量键、电源键等)或自定义事件触发停止阻塞。
  6. 提供不同级别的日志输出,便于调试和监控。

安装使用步骤

1. 获取可执行文件

2. 在设备上运行

将可执行文件复制到 Android 设备上,并赋予执行权限: bash su # tsu for Termux cp blockevent_* /data/local/tmp/ chmod +x /data/local/tmp/blockevent_* ./data/local/tmp/blockevent_*

3. 使用 ADB 运行

也可通过 ADB 来运行: bash adb push blockevent_* /data/local/tmp/ adb shell su -c "chmod +x /data/local/tmp/blockevent_*" adb shell su -c /data/local/tmp/blockevent_*

4. 常用命令示例

  • 阻塞触摸屏: bash ./data/local/tmp/blockevent_* -d 0
  • 阻塞触摸屏的左半部分: bash ./data/local/tmp/blockevent_* -d 0 -r 0,2400,540,0 -W 1080 -H 2400
  • 阻塞触摸屏并在按下音量下键时停止阻塞: bash ./data/local/tmp/blockevent_* -d 0 -s 1
  • 阻塞触摸屏并在指定矩形区域双击时停止阻塞: bash ./data/local/tmp/blockevent_* -d 0 -s 0 -r 400,1100,750,800 -W 1080 -H 2400
  • 阻塞其他设备: bash ./data/local/tmp/blockevent_* -d /dev/input/event6

编译与构建

1. 配置环境

确保已安装 Android NDK 和 Bazel,并设置好环境变量: bash export ANDROID_NDK_HOME=/YOUR/NDK/PATH

2. 使用脚本编译

项目提供 release.sh 脚本,可编译所有目标平台的可执行文件: bash ./release.sh

3. 编译特定目标

也可使用 Bazel 编译特定目标: bash bazel build //src:blockevent --config=TARGET

待开发任务(TODO)

  • [ ] 添加安装脚本
  • [ ] 优化设备阻塞行为,支持事件过滤机制

注意事项

使用 blockevent 时,需确保理解其工作原理,并小心操作,避免对设备造成损害。

下载地址

点击下载 【提取码: 4003】【解压密码: www.makuang.net】