This is very much a Work-In-Progress and that'll be evident at this early stage.
TapStrapApp (//TODO: Get a real name), Android Input Method Editor (IME) designed for use with the Tap Strap chording keyboard. This project aims to significantly enhance the typing experience for Tap Strap users by addressing the inherent limitations of the device's firmware.
- Useable for More Than Text: Overcomes the Tap Strap's issue of typing the wrong letter followed by a backspace.
- On-Screen IME Keyboard: Displays the current state, indicating the recently chorded fingers and held meta keys (ALT, SHIFT, CTRL, META). These indicators are also clickable for convenience.
- Advanced Chording Feedback: Shows the output for single, double, and triple taps (and beyond). These are also clickable if you like.
- Local Chord Mapping: This IME allows local programming of any chord using standard CSV files, providing flexibility and extensive customization.
- Any Chord: Yes, any! You bothered by several chords being reserved and un-editable in the Tap Systems Tapmapper? We got you.
- More Taps: You want triple-taps? Quad-taps? There's no limit! I just don't know what you call 5 or more. You want SHIFT mode to do double-taps, triple taps? Have it! You want SWITCH mode to... okay you get it.
- More shifts/switches: You can define as many different modes as you like and each can have infinite taps.
- (Optional) Tap Cycling: If you keep double-triple-etc tapping, after you go past the end of what's configured, it wraps back around to single-tap again, so you can "go back" without getting the wrong output first.
- Does All the Keys: You know the list of like a thousand Android KeyCodes? Well, we do! ( See /config/DEFAULT_1 )
- Multiple Configuration Profiles: Supports switching between unlimited chording configurations to suit different use cases.
- Easier Switching Between Mouse and Not: You can set a tap command to activate the mouse instead of all the fiddling about with trying to get the firmware to recognize you want mouse mode. In the default keymap, double-tap w to activate mouse mode. Mouse motion uses the TapStrap's optical sensor — there is no AirMouse (IMU-gesture mouse). On a phone, the cursor is rendered by an Accessibility-service overlay; on Samsung DeX you can opt in to a Shizuku-driven path that injects native pointer events.
- HID Output to Another Device: This Android device can act as a Bluetooth HID keyboard/mouse to a paired target — type/click on a different device using your TapStrap. Local IME and HID-output are mutually exclusive at runtime; switching is a single toggle.
- Word Prediction: Built-in autocomplete with an on-screen suggestion strip.
- Built-in Typing Tutor: A simple curriculum activity for learning the chords.
- Raw-Sensor Input Mode (experimental): Skip the firmware's tap detection and decide what's a tap from the IMU stream ourselves — useful when the firmware's defaults don't suit you. Requires Developer Mode in the TapManager app.
- Hopefully nothing -- it would be infintely prefereable to see Tap Systems make these features available on-device, most particularly the elimination of the backspace behavior and the ability to program chords offline. But until they do...
This is aimed at TapStrap enthusiasts who are comfortable with adb, CSV config files, and the occasional rough edge. It's the developer's daily driver and is generally stable, but it's still a personal project — expect surprises, and don't use it for anything mission-critical.
- Install APK
- (Optional) See the next section to create your own mapping(s).
- Go to your Android settings, find the keyboard settings (it varies) and you should find a page there where you can chose which of your installed IME/Kayboards are allowed to run. Turn on TapStrapIME. You can and should leave your usual keyboards enabled as well.
- (Optional but HIGHLY suggested:) If you have an option to always display the keyboard switcher (maybe "Keyboard button") make sure it's turned on.
- (Optional but suggested:) Probably on another settings screen, find the option to display the software keyboard even if a physical keyboard is attached.
- Start up your Tap Strap, make sure it's connected to your Android device successfully.
- Use the settings menu or the "Keyboard button" you just turned on to switch your default keyboard to the TapStrapIME.
- Find someplace to input text and try it out. The provided config files should match the defaults in the TapStrap hardware.
- Run the "TapStrapIME" App and take note of the directory it tells you to put the configuration files into.
- Copy the default configuration from /config in this repository or write you own and put them in the indicated directory on your phone. You can use any file manager, or adb, there's a script in the project root to push all configs to an adb debuggable device.
- The configuration file named DEFAULT_1.csv is where the TapIME will start and defines the actions taken on single-taps. DEFAULT_2.csv defines the double-taps, and so on.
- If you use mulitple maps, they can be named whatever you like, but still must end in _1.csv for the first tap, _2 for the second, etc.
- Comments in DEFAULT_1.csv in the /config directory here will give you some clues.
The way the tap timeout works in this app, the character you tap will be input when:
- As soon as you tap a different character/tap pattern.
- Instantly if you have no further options for this tap.
- After your configured timeout has expired; default is 300ms.
I think option 2 needs a little explanation; if you have only single taps configured and no double-taps, then every tap will be instantaneous.
You can still use the entire keybaord; just use the map shifting to use multiple maps each of which only have single-taps. If that's your jam.
I don't judge. Similarly, if you have double and triple taps configured, then when you reach the final tap character(s) will be input instantly. (Is 'final tap' a good app name?)
...Unless you have the tap Cycling option enabled, in which case you can keep tapping to cycle back to single-tap.
I absolutely love the Tap Strap, but as soon as I finished learning all the single-tap letters, I realized I'd never be able to use it as a general-purpose keyboard while it had this typing-the-wrong-character-then-backspacing behavior.
Although the best way to fix the problem would be in the Tap Strap firmware directly, Tap Systems haven't implemented an option to toggle the bizarre backspace behavior... yet. They did provide a really nice SDK we used for this project.
If this project eventually becomes useful to you and you'd like to show support, pester Tap Systems to either implement it in firmware or give us the tools to do so. I'm more than cpaable of writing a firmware for this device if I just know how to deploy it and how to talk to the uC peripherals.
Copyright Chris Jansen, etc, etc, and now with help from AI, carefully audited. Released under the MIT license; use as you like, give me some credit.
Aside from the Android boilerplate and the vendored Tap Systems SDK (which carries its own license), this is all original code.
I'm not easy to contact but you can try scribblecj@gmail.com if you like.