NavButtons
NavButtons is an Android LSPosed module for customizing the three-button navigation bar.
It lets you choose what should happen when Back, Home, or Recents is pressed or long-pressed, and lets you configure the long-press duration per button.
It also adds side arrow keys into the navigation bar for cursor movement.
AI Assistance
This project was developed with help from AI-assisted coding tools. The design decisions, physical device testing, and final behaviour are still manually reviewed.
Features
- Configure press and long-press actions for Back, Home, and Recents.
- Individually configure custom long-press durations for all buttons.
- Add optional side-arrow buttons for moving the text cursor left and right.
- Long-press side arrows for repeated cursor movement with configurable speed.
- Test long-press durations from the settings screen.
Supported actions:
Stock: keep the default behavior for that button.None: suppress the button.Back: perform the normal Back action.Home: perform the normal Home action.Assistant: open the assistant.Recents: open recent apps.Kill foreground app: force close the currently active app.Toggle auto-rotate: toggle the device's auto-rotate setting.Toggle flashlight: toggle the flashlight.
Requirements
- Android device using three-button navigation.
- LSPosed with Xposed API 101 or newer.
- Android (One UI, AOSP, Google APIs, LineageOS) version listed in the compatibility list.
- The module scope enabled for the relevant navigation packages.
The module declares scope entries for:
androidandsystem, used for privileged actions such as killing the foreground app.com.android.systemui, used for phone navigation bars.com.android.launcher3andcom.google.android.apps.nexuslauncher, used for AOSP, Google APIs, and LineageOS taskbar navigation.com.sec.android.app.launcher, used for Samsung/One UI unfolded taskbar navigation.
Compatibility
Supported targets are expected to support all features.
Samsung, tested on real hardware:
- One UI 8 / Android 16 on a Galaxy Z Fold5.
AOSP emulator images:
- Android 14 / API 34.
- Android 15 / API 35.
- Android 16 / API 36.
Google APIs emulator images:
- Android 15 / API 35.
- Android 16 / API 36.
LineageOS emulator images:
- LineageOS 22.2 / Android 15 / API 35.
- LineageOS 23.2 / Android 16 / API 36.
Emulator validation used Magisk and LSPosed. Emulator results confirm compatibility with those images, not with every ROM derived from the same Android version. Vendor System UI and launcher implementations can differ enough to require separate support. On emulators, flashlight support is validated by confirming that the flashlight signal is sent; real hardware behavior depends on the device camera/flash implementation.