Intelligent ghost tap filtering for failing Android touchscreens.
If your device has a failing digitizer causing random phantom touches (ghost taps), InputBlocker is for you. Most solutions block off chunks of your screen entirely, making it unusable. InputBlocker works differently β it filters touches at the system level based on their physical properties, keeping your screen usable while killing the ghosts.
Instead of a blind screen block, InputBlocker uses conditional touch filtering:
- Pressure check β Ghost taps from electrical noise have very low pressure. Real finger presses pass through.
- Duration check β Stuck pixels produce unnaturally long touch holds. Real taps are brief.
- Coordinate filtering β Block only specific screen regions where ghost taps occur.
The engine hooks directly into Android's input dispatcher (system_server), intercepting touches before they reach your apps.
The core module. Hooks InputDispatcher.dispatchMotionLocked to filter touches system-wide.
A visual editor for configuring blocking regions:
- Draw regions (Rectangles, Circles, Ellipses) on a screen preview.
- Tune pressure and duration thresholds per region.
- Analyze
blocklog.txtwith DBSCAN clustering to find ghost tap hotspots. - Push configs to your device via ADB.
Provides on-device management:
- Visual overlay showing active blocking regions.
- Emergency reset gesture (Volume Down Γ3 β Volume Up Γ3).
- Crash detection with automatic safe mode.
- Log viewer and sharing.
- Root access β Magisk, KernelSU, or APatch.
- LSPosed / Vector framework installed.
- ADB set up on your PC with USB Debugging enabled on the device.
- Flash the module β Download the latest
InputBlockerModule.zipfrom Releases and flash via your root manager. - Enable in LSPosed β Activate the module for the System Framework scope and reboot.
- Configure β Run the PC Designer (or the companion app), define your blocking regions, and save.
- Verify β The overlay will show active regions. Ghost taps in filtered zones should be eliminated.
β οΈ Version Note: During the active testing phase, all releases use version0.1.0regardless of changes included. This ensures consistent distribution while we validate core functionality. Version0.1.0is treated as a rolling release β once testing concludes, strict semantic versioning will be applied.
We need real-world data from devices with ghost taps to refine the filtering logic. If you're testing InputBlocker, please report your findings.
- Filter tuning β Adjust
minPressureandmaxDuration. Does it block ghosts without affecting your real touches? - Region layering β Create a blocking zone with an exclude zone inside it. Do exclude zones reliably pass touches through?
- Emergency reset β Trigger the gesture combo. Does blocking disable immediately?
- Profile switching β Set up different configs for different apps. Do they switch correctly?
- Performance β Any perceptible input lag? Unusual battery drain?
When reporting issues on the issue tracker, include:
- Device model & Android version
- What happened β e.g., "Filter too aggressive," "Module crashed on reboot"
- Logs β Use the Share Log button in the companion app to export
blocklog.txtandlatency.log - Config β Attach the
.conffile you were using
| Scenario | Action |
|---|---|
| Overlay blocks everything | Use emergency gesture (Vol Down Γ3 β Vol Up Γ3) |
| Boot loop after install | Boot into Safe Mode, disable module in LSPosed |
| Crash flag triggered | adb shell rm /data/adb/modules/inputblocker/config/crash_detected |
| Need hard disable | Create /data/adb/modules/inputblocker/config/kill_switch with content 1 |
| Platform | Format | Link |
|---|---|---|
| Android module | .zip |
Releases page |
| PC Designer (Windows) | .exe |
Releases page |
| PC Designer (Linux) | .deb |
Releases page |
| PC Designer (macOS) | .dmg |
Releases page |
| Companion APK | .apk |
Packaged inside module ZIP |
- Resolution independent β Normalized coordinates (0.0β1.0) mean one config works across screen sizes.
- Sub-millisecond filtering β The hook operates in the input dispatcher's hot path with minimal overhead.
- Async logging β Dedicated logger thread prevents I/O from blocking touch dispatch.
- Crash-safe β Two-layer crash protection (hot-path try/catch + boot-time detection) prevents lockouts.
- DBSCAN analysis β Clustering algorithm identifies ghost tap hotspots from log data.
See BUILD.md for complete build instructions.
./gradlew buildAll -PVERSION_NAME="0.1.0" -PVERSION_CODE=1
| Document | Description |
|---|---|
| BUILD.md | Build instructions and CI/CD overview |
| DOCUMENTATION.md | In-depth technical documentation |
| CONTRIBUTING.md | Contribution guidelines |
| SECURITY.md | Security vulnerability reporting |
| CHANGELOG.md | Release history |
This tool modifies system-level input handling. Use it at your own risk. The maintainers are not responsible for any damage to your device.