Skip to content

titandrive/koboard

Repository files navigation

koboard.koplugin

A KOReader plugin for Android that replaces the built-in virtual keyboard with the system IME (your default Android keyboard).

Android only — this plugin does nothing on Kindle, Kobo, or other non-Android devices.

Experimental — tested on Android with KOReader nightly builds. Behaviour may vary across devices and keyboard apps.

Features

  • Replaces KOReader's built-in keyboard with your system keyboard
  • Minimal KOBoard UI under Tools → KOBoard with an enable/disable toggle
  • Update checker with optional background notifications
  • Full text input including backspace
  • Tested with Gboard, Samsung Keyboard, and Heliboard
image

Limitations

Input is routed through a file-based bridge between the Android IME and KOReader, which means basic typing and backspace work but advanced IME features do not. Swipe gestures (swipe-to-select, swipe-to-delete) will not work. Autocorrect may work depending on your keyboard app.

Installation

  1. Download koboard.koplugin.zip from the latest release and unzip it, or clone this repo.
  2. Copy the koboard.koplugin folder to /sdcard/koreader/plugins/ on your device.
  3. Restart KOReader.
  4. Enable the plugin from the KOBoard UI under Tools → KOBoard.

Once the plugin is enabled, KOBoard activates automatically whenever a text field is opened. To temporarily use KOReader's built-in keyboard instead, open Tools → KOBoard and turn Enable KOBoard off.

Menu and updates

KOBoard now includes a minimal UI under Tools → KOBoard. Open it for the plugin controls:

  • Enable KOBoard turns the Android keyboard bridge on or off.
  • Notify on wake when update available controls background update checks after KOReader starts, resumes, or leaves standby.
  • Installed version: vX.Y.Z checks GitHub releases for a newer version. When an update is available, the entry changes to Update available: vX.Y.Z → vA.B.C.

When an update is available, KOBoard shows the release notes and can download koboard.koplugin.zip, install it over the current plugin folder, and restart KOReader.

KOBoard also registers dispatcher actions for automation: koboard_enable, koboard_disable, and koboard_toggle.

How it works

KOBoard embeds a small compiled Java component (loaded at runtime via DexClassLoader) that registers a custom InputConnection with Android's InputMethodManager. This gives the system IME a real connection to type into. Keypresses and backspace are written to a file, which KOReader polls every 50ms and forwards to the active VirtualKeyboard instance.

Building from source

Requirements: Android SDK (android.jar for API 34), dx or d8.

# Compile
javac -cp /path/to/android.jar -d build/android/classes android_src/org/koreader/koboard/*.java

# Dex
d8 --output build/android/dex build/android/classes/org/koreader/koboard/*.class

# Base64-encode and embed in main.lua
base64 -i build/android/dex/classes.dex | tr -d '\n' > build/koboard_ic.dex.b64

Then replace the DEX_B64 string in koboard.koplugin/main.lua with the contents of build/koboard_ic.dex.b64.

License

MIT

About

koboard.koplugin - Use your android keyboard of choice with KoReader!

Topics

Resources

Stars

17 stars

Watchers

0 watching

Forks

Packages

 
 
 

Contributors