Git Product home page Git Product logo

tapstrapapp's Introduction

Introduction

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.

Present Features:

  • 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. There is no AirMouse.
  • Super Untested And Unfinished Code: You won't see that from Tap Systems!

Upcoming Features:

  • 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...
  • Better UI/In-app Configuration
  • System service to make it useful even when Android doesn't want to use the IME (anytime you're not in a text entry, basically) -- work more like a hardware keyboard.
  • I'd still like to add a HID "passthrough" that allows you to connect your phone to another device and actually use the Tap Strap with these IME features on any bluetooth device. But so far, no luck.

IMPORTANT NOTE:

It's full of bugs and will probably set your phone on fire. I can't take any responsibility for you choosing to use what's OBVIOUSLY unfinished code!

Getting Started

"Quick" Start:

  • 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.

Creating your own mappings:

  • 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 config.
  • 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.

USAGE NOTES:

  • The only way to activate mouse mode when using the IME is to use the tap command to start it. By default it's double-tap w, 10101. But you can set STARTMOUSE to any tap you like in your own config.
  • Even more importantly, the only way to get out of mouse mode is by tapping all four fingers, think 'h' or 01111.

JUST KEEP TAPPING. // Hey, is this an app name?

The way the tap timeout works in this app, the character you tap will be input when:

  1. As soon as you tap a different character/tap pattern.
  2. Instantly if you have no further options for this tap.
  3. After your configured timeout has expired; default is 300ms. The unlabeled slider in the app goes from 0 to 1 second.

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 third tap the character(s) will be input instantly.

Unless you have the tap Cycling option enabled, in which case you can keep tapping to cycle back to single-tap.

Developer's Note(s)

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, but it can only take you so far.

If this project eventually becomes useful to you and you'd like to show support, the developer appreciates donations to the Kitten.Academy Patreon. https://www.patreon.com/kittenacademy

Copyright

Copyright Chris Jansen, etc, etc, you can use this for yourself, but we haven't arranged any licensing for you to modify the source or redistribute yet.

Aside from the Android boilerplate and the actual Tap Systems SDK, this is all original code so as of now the licensing is pretty much my problem. I'm supposed to say "all rights reserved" here, right?

I'm not easy to contact but you can try [email protected] if you like.

tapstrapapp's People

Contributors

scribblej avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.