Onyx (BOOX) MMKV Editor
February 20, 2026 · View on GitHub
Minimal Android app to view and edit an MMKV store at /onyxconfig/mmkv/onyx_config on Boox devices. The MMKV store was added around Onyx Firmware version 4.0 and replaces the previous plain text storage in /onyxconfig/eac_config. The main advantage of the MMKV store in the current Firmware versions is that no ROOT access is required to read and write it, as long as this application is granted all-files access on Android 11+ (all recent Boox devices).
TL;DR: This app allows you to edit app configurations on your Boox device, including enabling handwriting optimization for supported apps. You can enjoy low latency handwriting input in your favorite app!
Download the APK from: https://github.com/l-althueser/OnyxMMKVEditor/releases
WARNING
This application is intended for advanced users who understand the risks of modifying app configurations. Changing values without proper knowledge may lead to unexpected behavior or even render apps unusable. Always make sure to back up your data before making any changes.
Features
- List or filter keys (app configs) from the MMKV store in
/onyxconfig/mmkv/onyx_config - Tap a key (app config) to view and edit its value
- Offer to copy or edit the value as text (some values are JSON, but MMKV storage treats them as strings without structure)
- Buildin backup and restore functionality for each key/value that was once edited with this app. You can always load the first overwritten config in the editor window and save (restore backup) if you want. However, better to keep a manual backup!
- Some keys (app configs) offer to add the handwriting optimization automatically, currently supported for automatic optimization are:
- Obsidian (Ink, Excalidraw):
eac_app_md.obsidianfor view keycom.getcapacitor.CapacitorWebView - DrawboardPDF:
eac_app_com.drawboard.pdffor view keycom.getcapacitor.CapacitorWebView - DrawNote:
eac_app_com.dragonnest.drawnotefor view keycom.dragonnest.app.view.DrawingContainerView - Ibis Paint:
eac_app_jp.ne.ibis.ibispaintx.appfor view keyjp.ne.ibis.ibispaintx.app.glwtk.IbisPaintView - Joplin 'Drawing' plugin:
eac_app_net.cozic.joplinfor view keycom.reactnativecommunity.webview.RNCWebView - MediBang Paint:
eac_app_com.medibang.android.paint.tabletfor view keycom.medibang.android.paint.tablet.ui.widget.CanvasView - Penly:
eac_app_com.penly.penlyfor view keycom.penly.penly.editor.views.EditorView - Squid:
com.steadfastinnovation.android.projectpapyrusfor view keycom.steadfastinnovation.android.projectpapyrus.ui.widget.PageViewContainer - Xodo:
eac_app_com.xodo.pdf.readerfor view keycom.pdftron.pdf.PDFViewCtrl - Zotero:
eac_app_org.zotero.androidfor view keycom.pspdfkit.internal.views.page.PageLayout(seems to work only partially and no good)
- Obsidian (Ink, Excalidraw):
App screenshots
Main screen and editor for app configurations:
Resetting to default values
If you want to reset the config of an app to default values, you can either:
- Restore the backup of the app config if you have edited it before with this app
- Copy the
eac_default_app_configvalue and paste it as the value of the app config you want to reset
Details about handwriting optimization
The handwriting optimization is a special configuration that can be added to the MMKV store for certain apps to improve the handwriting experience on Boox devices. It works by enabling specific settings that optimize the performance and responsiveness of handwriting input within those apps - mainly by adding an overlay that sends the input gradualy to the underlaying app.
With information from https://gist.github.com/calliecameron/b3c62c601d255630468bd493380e3b7e:
The entry for any app looks like a json file with a structure like:
{
"appConfigMap": {
"<app name>": ...
}
}
where <app name> is the package name of the app. Take a look at the entries for OneNote (com.microsoft.office.onenote) or Evernote (com.evernote) for examples with handwriting optimisation.
If there is no entry for the app that you want to configure, open the app and change one of the optimisation settings -- doesn't matter which one -- to force the creation of an entry in the MMKV storage.
To enable handwriting optimisation, look for the following settings under your app:
"noteConfig": {
...
"enable": false,
"globalStrokeStyle": {
"enable": false,
...
},
...
"supportNoteConfig": false
...
}
and change them as follows:
"noteConfig": {
...
"drawViewKey": "<your app's view name>",
"enable": true,
"globalStrokeStyle": {
"enable": true,
...
},
...
"supportNoteConfig": true
...
}
where <your app's view name> is different for different apps. Figuring out what this should be is the hard part, see below.
Reboot the device. Now, when you open the app, the 'handwriting' tab should appear in the optimisation settings. You can change other settings to further optimize the handwriting experience. The most important ones are:
repaintLatency: how quickly the preview line changes to a real line when you stop drawing. 'Refresh time after lifting stylus' in the 'handwriting' tab.globalStrokeStyle-
strokeWidth: 'Stroke width' in the 'handwriting' tab. -
strokeStyle: values of 0, 1 and 2 used in the default config? Not sure what the difference is.- OneNote uses
1for pens and2for highlighters.
- OneNote uses
-
strokeColor: two's complement of the ARGB colour, where A is always 255. To generate in python:int.from_bytes(((255<<24) + (r<<16) + (g<<8) + b).to_bytes(4, byteorder=sys.byteorder, signed=False), byteorder=sys.byteorder, signed=True) -
strokeParamsandstrokeExtraArgs: don't know. OneNote and Evernote don't set these.
-
styleMap: somehow allows different pen styles in the app to appear differently when drawing the preview line. OneNote sets these, and the different pens there draw the preview line in different colours. But I don't know how to find the names to use as the keys, e.g.pen_1in OneNote.type: 0appears to be the style -- different for pen and highlighter.type: 2appears to be the colour.
Finding the view key of an app
- Pull the app's APK from the device (see e.g. https://stackoverflow.com/questions/4032960/how-do-i-get-an-apk-file-from-an-android-device).
adb shell pm path com.appadb pull /data/app/.../base.apk ./app.apk
- Open the APK in Android Studio via File → Profile or Debug APK.
- Inspect the XML layout files under res/layout and look for view class names that appear related to drawing or canvas functionality (custom view classes or view ids that mention “draw”, “canvas”, “pen”, etc.).
- Add a candidate view name as the
drawViewKeyin the MMKV entry (eac_config), reboot the device, and test the app. If it does not enable handwriting, repeat with the next promising class name until the correct view key is found.
Quick start guide if you want to build it from source
- Install Android Studio: https://developer.android.com/studio
- Open this folder in Android Studio (
Open an existing project). - Let Android Studio download Gradle and dependencies.
- Build and run on your Boox device (enable developer mode + USB debugging).