Files
b4d2f26319
CI / Core C++ Tests (push) Has been cancelled
CI / Android Build (push) Has been cancelled
CI / NDK ABI Build (arm64-v8a) (push) Has been cancelled
CI / NDK ABI Build (armeabi-v7a) (push) Has been cancelled
CI / NDK ABI Build (x86_64) (push) Has been cancelled
feat: Initial commit — libswipetype v0.1.0-dev
Complete swipe typing engine with:
- swipetype-core: C++17 gesture recognition (DTW, adaptive scoring)
- swipetype-android: JNI bridge + Android AAR packaging
- sample-app: Functional IME demo with space bar zone detection
- 48 unit tests (GTest), CI/CD workflows (GitHub Actions)
- Full documentation suite (architecture, API, contributing, security)

Co-authored-by: inventory69 <inventory69@users.noreply.github.com>
Co-authored-by: Hyphonical <Hyphonical@users.noreply.github.com>
2026-02-26 23:02:03 +01:00
..

HeliBoard Adapter

Reference adapter for integrating the libswipetype with HeliBoard.

Integration Approaches

Add this adapter as a Gradle dependency in your HeliBoard fork:

  1. Add to HeliBoard's settings.gradle:

    include ':swipetype-android', ':adapters:heliboard'
    
  2. Add dependency in HeliBoard's app/build.gradle:

    implementation project(':adapters:heliboard')
    
  3. In HeliBoard's LatinIME.java, initialize the adapter:

    HeliboardSwipeTypeAdapter glideAdapter = new HeliboardSwipeTypeAdapter(
        new HeliboardSwipeTypeAdapter.CandidateCallback() {
            @Override
            public void onCandidates(String[] words, int[] scores, int count) {
                // Convert to SuggestedWordInfo and show in suggestion bar
            }
            @Override
            public void onError(String message) {
                Log.e("LatinIME", "Glide error: " + message);
            }
        }
    );
    glideAdapter.initialize(this, openDictionaryStream());
    
  4. In HeliBoard's gesture input handler, route to the adapter:

    if (isGestureInput) {
        glideAdapter.onGestureInput(
            inputPointers.getXCoordinates(),
            inputPointers.getYCoordinates(),
            inputPointers.getTimes(),
            inputPointers.getPointerSize()
        );
    }
    

Approach 2: Drop-in .so Replacement (Future)

Build the library as libjni_latinime.so and place it in HeliBoard's files directory. This requires the HeliboardJNIBridge.cpp to be completed with full JNI registration.

HeliBoard Version Compatibility

This adapter is designed against HeliBoard's main branch as of 2026-02-18. Key interfaces observed:

  • BinaryDictionary.getSuggestionsNative() — gesture/typing suggestion entry point
  • ProximityInfo.setProximityInfoNative() — keyboard layout setup
  • NativeSuggestOptions — gesture mode flag (index 0)
  • InputPointers — touch coordinate container

If HeliBoard changes these interfaces, the adapter may need updating. See the version compatibility section in the main README.