Vimdroid is a keyboard-first navigation for Android. Allowing you to interact with any of the apps on your device via your keyboard.
Status: Experimental
I wanted to explore Android's capabilities as a desktop device, and since I use keyboard-first navigation on my desktop, I wanted to explore the same on Android.
Known limitations:
- You need a keyboard mapper to allow it to listen to your keyboard. (If anybody knows a way to do this without a keyboard mapper, please let me know)
- I don't have a way to access the keyboard input, so I used a auto-focusable text field to allow for typing.
- Install the app
- Search for
Vimdroidin your phone's settings or go toSettings > Accessibility > Vimdroidand enable it.
This will start the service on the background listening for a broadcast; now we need a way to trigger that broadcast. You can trigger it manually by typing this in your terminal:
adb shell am broadcast -a com.feernandooff.vimdroid.ACTION_VIMDROID_COMMAND --es extra_command show_labelsTo allow listening for specific keyboard events, we need to install a keyboard mapper. For this I would recommend using the following apps:
- Key Mapper GUI Keyboard to allow to listen for keyboard events.
- Key Mapper & Floating Buttons to map those events to a broadcast that the service then can listen.
Here's a small guide on how to integreat it with Key Mapper:
- Open Key Mapper & Floating Buttons
- Add a Mapping & Record a trigger (It will give you steps on how to integrate with Key Mapper GUI Keyboard)
- Add a broadcast action to that trigger
Add action > Send Intent > Broadcast Receiver - Add a new broadcast action (
com.feernandooff.vimdroid.ACTION_VIMDROID_COMMAND) - Add a new extra Name:
extra_commandand Valueshow_labels
- Press your shortcut to show the labels
- An overlay with a lot of labels will appear on top of all the clickable elements on your screen
- Type the letters of the label you want to click on
- Press Escape or type "esc" to close the overlay
- Allow for scrolling
- Allow for selecting custom labels
- Allow for ignoring certain apps
