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.
- 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
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.
- Download
koboard.koplugin.zipfrom the latest release and unzip it, or clone this repo. - Copy the
koboard.kopluginfolder to/sdcard/koreader/plugins/on your device. - Restart KOReader.
- 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.
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.
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.
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.b64Then replace the DEX_B64 string in koboard.koplugin/main.lua with the contents of build/koboard_ic.dex.b64.
MIT