So7o Z Trackpad 0.4.0
A floating trackpad for Android, built on-device in Termux with a hand-rolled build: no Gradle, no Kotlin, no SDK install. This release is about a problem you only notice once you have several floating windows open.
The window at the back
Android’s pop-up windows overlap, and the ones underneath are unreachable in a specific way: they are still running, still drawn, and nothing on screen names them. You cannot tap what you cannot see, and Recents lists tasks rather than windows.
So 0.4.0 adds a list. A fourth dot sits on the left edge, and tapping it opens every window on the display:
- The full-screen app comes first. Being behind the floating windows is exactly what makes it hard to reach, so it is the row the list exists for — and keeping it last would move it down the panel every time another window opened.
- Then the floating windows, front-most first, each
marked for what it is:
full screen,hiddenwhen it is behind something or minimized, orparkedif the app had to move it out of the way. - Tapping a row brings that window forward. A hidden one comes back.
Nothing in the platform can raise a full-screen app above floating windows — it lives in the window layer below theirs, so focusing it only reorders it within its own layer. So the app moves the obstruction instead: it taps each pop-up’s own minimize button, checks that it actually worked, and only then falls back to shrinking the window into a strip at the bottom edge. There is no minimize API; the button is a real input target, and the check is what makes that assumption safe.
What else is in it
- A CONTROLS panel, on a gear dot docked outermost in the pad: the keys layout choice, on/off switches for the two optional dots, and links to the keys guide and the issue tracker. The pad’s own dot has no switch, deliberately: it is the only way to show the pad, and it carries the gear, so hiding it would strand the way back.
- Full keyboard or your favourite shortcuts. The keys panel was already driven by a spec string; now it can hold two, and the gear switches between the built-in layout and yours without a rebuild.
- The split-divider buttons are gone, and so is the nudge behind them: that edge of the pad is the scroll strip, and a thumb there is scrolling.
- Edge scrolling moves half as far by design: a 100px swipe down the side scrolls 33.6 units instead of 64.
Links
- Source, README and the keys guide: https://github.com/jan5o7o/ztrackpad
- This release, with the signed APK: https://github.com/jan5o7o/ztrackpad/releases/tag/v0.4.0
versionCode3, so an existing install updates in place.