项目简介
blockevent
是运行在 Android 用户空间的工具,类似 Android 的 getevent
工具。它提供“阻塞输入事件”和“触发停止阻塞”两种输入设备控制概念,借助 EVIOCGRAB
控制独占输入设备句柄,阻止输入事件流向 Android 平台的 EventHub
,实现对输入事件的精确控制。
项目的主要特性和功能
- 可阻塞指定设备的输入事件,防止其传递到 Android 系统。
- 接收到指定输入事件或
SIGINT
信号时,释放设备并停止阻塞。 - 支持在触摸屏上指定矩形区域进行部分阻塞。
- 能同时阻塞多个输入设备。
- 支持通过特定设备事件(如音量键、电源键等)或自定义事件触发停止阻塞。
- 提供不同级别的日志输出,便于调试和监控。
安装使用步骤
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】