# Table of Contents - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [KOReader Documentation](#koreader-documentation) - [Email Protection | Cloudflare](#email-protection-cloudflare) - [KOReader Documentation](#koreader-documentation) - [KOReader](#koreader) - [Page not found · GitHub Pages](#page-not-found-github-pages) - [KOReader logo gallery](#koreader-logo-gallery) - [Page not found · GitHub Pages](#page-not-found-github-pages) - [Page not found · GitHub Pages](#page-not-found-github-pages) - [KOReader User Guide](#koreader-user-guide) - [Page not found · GitHub Pages](#page-not-found-github-pages) - [Page not found · GitHub Pages](#page-not-found-github-pages) --- # KOReader Documentation KOReader ======== Modules ------- * [android](modules/android.html) * [apps.filemanager.filemanagerbookinfo](modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](modules/apps.reader.readerui.html) * [baseexporter](modules/baseexporter.html) * [cache](modules/cache.html) * [cacheitem](modules/cacheitem.html) * [datetime](modules/datetime.html) * [dbg](modules/dbg.html) * [depgraph](modules/depgraph.html) * [device.generic.device](modules/device.generic.device.html) * [device.gesturedetector](modules/device.gesturedetector.html) * [device.input](modules/device.input.html) * [device.kindle.mockrtc](modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](modules/device.sysfs_light.html) * [device.wakeupmgr](modules/device.wakeupmgr.html) * [dispatcher](modules/dispatcher.html) * [docsettings](modules/docsettings.html) * [document.doccache](modules/document.doccache.html) * [document.documentregistry](modules/document.documentregistry.html) * [document.koptinterface](modules/document.koptinterface.html) * [dump](modules/dump.html) * [ffi.blitbuffer](modules/ffi.blitbuffer.html) * [ffi.crypto](modules/ffi.crypto.html) * [ffi.framebuffer](modules/ffi.framebuffer.html) * [ffi.freetype](modules/ffi.freetype.html) * [ffi.jpeg](modules/ffi.jpeg.html) * [ffi.koptcontext](modules/ffi.koptcontext.html) * [ffi.loadlib](modules/ffi.loadlib.html) * [ffi.md5](modules/ffi.md5.html) * [ffi.mupdf](modules/ffi.mupdf.html) * [ffi.png](modules/ffi.png.html) * [ffi.rtc](modules/ffi.rtc.html) * [ffi.sdl2\_0](modules/ffi.sdl2_0.html) * [ffi.utf8proc](modules/ffi.utf8proc.html) * [ffi.util](modules/ffi.util.html) * [ffi.webp](modules/ffi.webp.html) * [ffi.zipwriter](modules/ffi.zipwriter.html) * [ffi.zlib](modules/ffi.zlib.html) * [ffi.zstd](modules/ffi.zstd.html) * [gettext](modules/gettext.html) * [koplugin.HelloWorld](modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](modules/koplugin.QRClipboard.html) * [koplugin.autodim](modules/koplugin.autodim.html) * [koplugin.autowarmth](modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](modules/koplugin.coverimage.html) * [koplugin.exporter](modules/koplugin.exporter.html) * [koplugin.japanese](modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](modules/koplugin.terminal.html) * [koplugin.terminal](modules/koplugin.terminal.html) * [koplugin.vocabbuilder](modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](modules/koplugin.wallabag.html) * [languagesupport](modules/languagesupport.html) * [logger](modules/logger.html) * [luadata](modules/luadata.html) * [luadefaults](modules/luadefaults.html) * [luasettings](modules/luasettings.html) * [optmath](modules/optmath.html) * [provider](modules/provider.html) * [random](modules/random.html) * [socketutil](modules/socketutil.html) * [sort](modules/sort.html) * [suntime](modules/suntime.html) * [time](modules/time.html) * [ui.bidi](modules/ui.bidi.html) * [ui.data.css\_tweaks](modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](modules/ui.data.optionsutil.html) * [ui.downloadmgr](modules/ui.downloadmgr.html) * [ui.event](modules/ui.event.html) * [ui.font](modules/ui.font.html) * [ui.geometry](modules/ui.geometry.html) * [ui.hook\_container](modules/ui.hook_container.html) * [ui.menusorter](modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](modules/ui.network.wpa_supplicant.html) * [ui.otamanager](modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](modules/ui.plugin.switch_plugin.html) * [ui.quickstart](modules/ui.quickstart.html) * [ui.renderimage](modules/ui.renderimage.html) * [ui.rendertext](modules/ui.rendertext.html) * [ui.size](modules/ui.size.html) * [ui.translator](modules/ui.translator.html) * [ui.trapper](modules/ui.trapper.html) * [ui.uimanager](modules/ui.uimanager.html) * [ui.viewhtml](modules/ui.viewhtml.html) * [ui.widget.bboxwidget](modules/ui.widget.bboxwidget.html) * [ui.widget.button](modules/ui.widget.button.html) * [ui.widget.buttondialog](modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](modules/ui.widget.linewidget.html) * [ui.widget.listview](modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](modules/ui.widget.networksetting.html) * [ui.widget.notification](modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](modules/ui.widget.textviewer.html) * [ui.widget.textwidget](modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](modules/ui.widget.verticalgroup.html) * [ui.widget.widget](modules/ui.widget.widget.html) * [userpatch](modules/userpatch.html) * [util](modules/util.html) * [version](modules/version.html) Topics ------ * [Collaborating with Git](topics/Collaborating_with_Git.md.html) * [DataStore](topics/DataStore.md.html) * [Development Guide](topics/Development_guide.md.html) * [Events](topics/Events.md.html) * [Hacking](topics/Hacking.md.html) * [Porting](topics/Porting.md.html) * [README](topics/README.md.html) * [Unit Tests](topics/Unit_tests.md.html) Multi-platform ebook reader --------------------------- An ebook reader application supports PDF, DJVU, EPUB, FB2 and many more formats, running on Kindle, Kobo, PocketBook, Ubuntu Touch and Android devices. Modules ------- | | | | --- | --- | | [android](modules/android.html) | FFI bindings for android native APIs and Java Native Interface (JNI). | | [apps.filemanager.filemanagerbookinfo](modules/apps.filemanager.filemanagerbookinfo.html) | This module provides a way to display book information (filename and book metadata) | | [apps.filemanager.filemanagerconverter](modules/apps.filemanager.filemanagerconverter.html) | This module is responsible for converting files. | | [apps.filemanager.filemanagerutil](modules/apps.filemanager.filemanagerutil.html) | This module contains miscellaneous helper functions for FileManager | | [apps.filemanager.lib.md](modules/apps.filemanager.lib.md.html) | Stream Utils | | [apps.reader.modules.readerlink](modules/apps.reader.modules.readerlink.html) | ReaderLink is an abstraction for document-specific link interfaces. | | [apps.reader.modules.readerview](modules/apps.reader.modules.readerview.html) | ReaderView module handles all the screen painting for document browsing. | | [apps.reader.readerui](modules/apps.reader.readerui.html) | | | [baseexporter](modules/baseexporter.html) | Base for highlight exporters. | | [cache](modules/cache.html) | It's apparently unusable, purge it and refresh the snapshot. | | [cacheitem](modules/cacheitem.html) | NOTE: As far as size estimations go, the assumption is that a key, value pair should roughly take two words,

and the most common items we cache are Geom-like tables (i.e., 4 key-value pairs). | | [datetime](modules/datetime.html) | This module contains date translations and helper functions for the KOReader frontend. | | [dbg](modules/dbg.html) | This module provides development-only asserts and other debug guards. | | [depgraph](modules/depgraph.html) | DepGraph module. | | [device.generic.device](modules/device.generic.device.html) | Generic device abstraction. | | [device.gesturedetector](modules/device.gesturedetector.html) | This module detects gestures. | | [device.input](modules/device.input.html) | An interface to get input events. | | [device.kindle.mockrtc](modules/device.kindle.mockrtc.html) | Checks if the alarm we set matches the current time. | | [device.kobo.nickel\_conf](modules/device.kobo.nickel_conf.html) | Access and modify values in `Kobo eReader.conf` used by Nickel. | | [device.sysfs\_light](modules/device.sysfs_light.html) | | | [device.wakeupmgr](modules/device.wakeupmgr.html) | RTC wakeup interface. | | [dispatcher](modules/dispatcher.html) | This module is responsible for dispatching events. | | [docsettings](modules/docsettings.html) | This module is responsible for reading and writing `metadata.lua` files in the so-called sidecar directory ([Wikipedia definition](https://en.wikipedia.org/wiki/Sidecar_file)
). | | [document.doccache](modules/document.doccache.html) | ...otherwise, effectively disable the cache by making it single slot... | | [document.documentregistry](modules/document.documentregistry.html) | This is a registry for document providers | | [document.koptinterface](modules/document.koptinterface.html) | Interface to k2pdfoptlib backend. | | [dump](modules/dump.html) | A simple serialization function which won't do uservalues, functions, or loops. | | [ffi.blitbuffer](modules/ffi.blitbuffer.html) | Generic blitbuffer/GFX stuff that works on memory buffers | | [ffi.crypto](modules/ffi.crypto.html) | LuaJIT FFI wrapper for libcrypto (OpenSSL). | | [ffi.framebuffer](modules/ffi.framebuffer.html) | Framebuffer API. | | [ffi.freetype](modules/ffi.freetype.html) | Freetype library interface (text rendering) | | [ffi.jpeg](modules/ffi.jpeg.html) | Module for JPEG decoding/encoding. | | [ffi.koptcontext](modules/ffi.koptcontext.html) | Leptonica cheatsheet:

\-- Data structures:
PIX \-- basic data structure - stores image
BOX \-- stores rectangle (x, y, w, h)
BOXA \-- array of BOX
NUMA \-- array of numbers | | [ffi.loadlib](modules/ffi.loadlib.html) | Helper for loading native libraries. | | [ffi.md5](modules/ffi.md5.html) | MD5 hash library. | | [ffi.mupdf](modules/ffi.mupdf.html) | MuPDF API

This is a FFI wrapper for what was a Lua-based API in the past Some kind of C wrapper is needed for muPDF since muPDF uses a setjmp/longjmp based approach to error/exception handling. | | [ffi.png](modules/ffi.png.html) | Module for PNG decoding/encoding. | | [ffi.rtc](modules/ffi.rtc.html) | Module for interfacing with the RTC (real time clock). | | [ffi.sdl2\_0](modules/ffi.sdl2_0.html) | Module for interfacing SDL 2.0 video/input facilities | | [ffi.utf8proc](modules/ffi.utf8proc.html) | Module for utf8 string operations. | | [ffi.util](modules/ffi.util.html) | Module for various utility functions. | | [ffi.webp](modules/ffi.webp.html) | Module for WebP decoding. | | [ffi.zipwriter](modules/ffi.zipwriter.html) | Zip packing workflow & code from luarocks' zip.lua : https://github.com/luarocks/luarocks/blob/master/src/luarocks/tools/zip.lua Modified to not require lua-zlib (we can wrap zlib with ffi) cf: http://luajit.org/ext_ffi_tutorial.html, which uses zlib as an example ! Simplified to take filename and content from strings and not from disk | | [ffi.zlib](modules/ffi.zlib.html) | LuaJIT FFI wrapper for zlib. | | [ffi.zstd](modules/ffi.zstd.html) | LuaJIT FFI wrapper for ZSTD. | | [gettext](modules/gettext.html) | A pure Lua implementation of a gettext subset. | | [koplugin.HelloWorld](modules/koplugin.HelloWorld.html) | This is a debug plugin to test Plugin functionality. | | [koplugin.QRClipboard](modules/koplugin.QRClipboard.html) | This plugin generates a QR code from clipboard content. | | [koplugin.autodim](modules/koplugin.autodim.html) | Plugin for automatic dimming of the frontlight after an idle period. | | [koplugin.autowarmth](modules/koplugin.autowarmth.html) | Plugin for setting screen warmth based on the sun position and/or a time schedule | | [koplugin.calibre.metadata](modules/koplugin.calibre.metadata.html) | This module implements functions for loading, saving and editing calibre metadata files. | | [koplugin.coverimage](modules/koplugin.coverimage.html) | | | [koplugin.exporter](modules/koplugin.exporter.html) | Export highlights to different targets. | | [koplugin.japanese](modules/koplugin.japanese.html) | Japanese language support for KOReader, modelled after Yomichan. | | [koplugin.japanese.deinflector](modules/koplugin.japanese.deinflector.html) | Yomichan deinflector implementation in pure Lua. | | [koplugin.terminal](modules/koplugin.terminal.html) | module used for terminal emulator to override InputText | | [koplugin.terminal](modules/koplugin.terminal.html) | This plugin provides a terminal emulator (VT52 (+some ANSI and some VT100)) | | [koplugin.vocabbuilder](modules/koplugin.vocabbuilder.html) | This plugin processes dictionary word lookups and uses spaced repetition to help you remember new words. | | [koplugin.wallabag](modules/koplugin.wallabag.html) | This plugin downloads a set number of the newest arcticles in your Wallabag "Unread" list. | | [languagesupport](modules/languagesupport.html) | Language-specific handling module. | | [logger](modules/logger.html) | Logger module. | | [luadata](modules/luadata.html) | Handles append-mostly data such as KOReader's bookmarks and dictionary search history. | | [luadefaults](modules/luadefaults.html) | Subclass of LuaSettings dedicated to handling the legacy global constants. | | [luasettings](modules/luasettings.html) | This module handles generic settings as well as KOReader's global settings system. | | [optmath](modules/optmath.html) | Simple math helper functions | | [provider](modules/provider.html) | Registers an implementation of a feature. | | [random](modules/random.html) | A set of functions to extend math.random and math.randomseed. | | [socketutil](modules/socketutil.html) | This module contains miscellaneous helper functions specific to our usage of LuaSocket/LuaSec. | | [sort](modules/sort.html) | This module contains a collection of comparison functions (or factories for comparison functions) for [table.sort](https://www.lua.org/manual/5.1/manual.html#pdf-table.sort)
. | | [suntime](modules/suntime.html) | \-- Author: Martin Zwicknagl (zwim) -- Date: 2021-10-29 -- The current source code of this file can be found on https://github.com/zwim/suntime. | | [time](modules/time.html) | A runtime optimized module to compare and do simple arithmetic with fixed point time values (which are called fts in here). | | [ui.bidi](modules/ui.bidi.html) | Bidirectional text and UI mirroring setup and helpers. | | [ui.data.css\_tweaks](modules/ui.data.css_tweaks.html) | CSS tweaks must have the following attributes: - id: unique ID identifying this tweak, to be stored in settings - title: menu item title (must not be too long) - css: stylesheet text to append to external stylesheet They may have the following optional attributes: - description: text displayed when holding on menu item - priority: higher numbers are appended after lower numbers (if not specified, default to 0) - conflicts_with: a string with the id of another tweak that should be disabled when this tweak is enabled, or an array/table of tweaks ids, or a function(other_id) return true for ids conflicting. | | [ui.data.keyboardlayouts.generic\_ime](modules/ui.data.keyboardlayouts.generic_ime.html) | Generic input method engine -- | | [ui.data.keyboardlayouts.ja\_keyboard](modules/ui.data.keyboardlayouts.ja_keyboard.html) | Japanese 12-key flick keyboard layout, modelled after Android's flick keyboard. | | [ui.data.keyboardlayouts.ja\_keyboard\_keys](modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) | | | [ui.data.keyboardlayouts.ko\_KR\_helper](modules/ui.data.keyboardlayouts.ko_KR_helper.html) | | | [ui.data.keyboardlayouts.zh\_keyboard](modules/ui.data.keyboardlayouts.zh_keyboard.html) | Chinese stroke-based input method for Lua/KOReader. | | [ui.data.optionsutil](modules/ui.data.optionsutil.html) | This module contains miscellaneous helper functions for the creoptions and koptoptions. | | [ui.downloadmgr](modules/ui.downloadmgr.html) | This module displays a PathChooser widget to choose a download directory. | | [ui.event](modules/ui.event.html) | Events are messages that are passed through the widget tree. | | [ui.font](modules/ui.font.html) | Font module. | | [ui.geometry](modules/ui.geometry.html) | Utilities for 2D geometry. | | [ui.hook\_container](modules/ui.hook_container.html) | HookContainer allows listeners to register and unregister a hook for speakers to execute. | | [ui.menusorter](modules/ui.menusorter.html) | This module is responsible for constructing the KOReader menu based on a list of menu\_items and a separate menu order. | | [ui.network.wpa\_supplicant](modules/ui.network.wpa_supplicant.html) | WPA client helper for Kobo. | | [ui.otamanager](modules/ui.otamanager.html) | Checks for updates on the specified nightly build server. | | [ui.plugin.background\_task\_plugin](modules/ui.plugin.background_task_plugin.html) | BackgroundTaskPlugin creates a plugin with a switch to enable or disable it and executes a background task. | | [ui.plugin.switch\_plugin](modules/ui.plugin.switch_plugin.html) | SwitchPlugin creates a plugin with a switch to enable or disable it. | | [ui.quickstart](modules/ui.quickstart.html) | This module is responsible for generating the quickstart guide. | | [ui.renderimage](modules/ui.renderimage.html) | Image rendering module. | | [ui.rendertext](modules/ui.rendertext.html) | Text rendering module. | | [ui.size](modules/ui.size.html) | This module provides a standardized set of sizes for use in widgets. | | [ui.translator](modules/ui.translator.html) | This module translates text using Google Translate. | | [ui.trapper](modules/ui.trapper.html) | Trapper module: provides methods for simple interaction with UI, without the need for explicit callbacks, for use by linear jobs between their steps. | | [ui.uimanager](modules/ui.uimanager.html) | This module manages widgets. | | [ui.viewhtml](modules/ui.viewhtml.html) | This module shows HTML code and CSS content from crengine documents. | | [ui.widget.bboxwidget](modules/ui.widget.bboxwidget.html) | BBoxWidget shows a bbox for page cropping. | | [ui.widget.button](modules/ui.widget.button.html) | A button widget that shows text or an icon and handles callback when tapped. | | [ui.widget.buttondialog](modules/ui.widget.buttondialog.html) | A button dialog widget that shows a grid of buttons. | | [ui.widget.checkbutton](modules/ui.widget.checkbutton.html) | Button widget that shows a checkmark (`✓`) when checked and an empty box (`□`) when unchecked. | | [ui.widget.checkmark](modules/ui.widget.checkmark.html) | Widget that shows a checkmark (`✓`), an empty box (`□`) or nothing of the same size. | | [ui.widget.confirmbox](modules/ui.widget.confirmbox.html) | Widget that shows a confirmation alert with a message and Cancel/OK buttons. | | [ui.widget.container.alphacontainer](modules/ui.widget.container.alphacontainer.html) | AlphaContainer will paint its content (a single widget) at the specified opacity level (0..1) | | [ui.widget.container.bottomcontainer](modules/ui.widget.container.bottomcontainer.html) | BottomContainer contains its content (1 widget) at the bottom of its own dimensions | | [ui.widget.container.centercontainer](modules/ui.widget.container.centercontainer.html) | CenterContainer centers its content (1 widget) within its own dimensions | | [ui.widget.container.framecontainer](modules/ui.widget.container.framecontainer.html) | A FrameContainer is some graphics content (1 widget) that is surrounded by a frame | | [ui.widget.container.inputcontainer](modules/ui.widget.container.inputcontainer.html) | An InputContainer is a WidgetContainer that handles user input events including multi touches and key presses. | | [ui.widget.container.leftcontainer](modules/ui.widget.container.leftcontainer.html) | LeftContainer aligns its content (1 widget) at the left of its own dimensions | | [ui.widget.container.movablecontainer](modules/ui.widget.container.movablecontainer.html) | A MovableContainer can have its content moved on screen with Swipe/Hold/Pan. | | [ui.widget.container.rightcontainer](modules/ui.widget.container.rightcontainer.html) | RightContainer aligns its content (1 widget) at the right of its own dimensions | | [ui.widget.container.scrollablecontainer](modules/ui.widget.container.scrollablecontainer.html) | ScrollableContainer allows scrolling its content (1 widget) within its own dimensions

This scrollable container needs to be known as widget.cropping\_widget in the widget using it that is passed to UIManager:show() for UIManager to ensure proper interception of inner widget self-repainting/invert (mostly used when flashing for UI feedback that we want to limit to the cropped area). | | [ui.widget.container.topcontainer](modules/ui.widget.container.topcontainer.html) | TopContainer contains its content (1 widget) at the top of its own dimensions | | [ui.widget.container.underlinecontainer](modules/ui.widget.container.underlinecontainer.html) | An UnderlineContainer is a WidgetContainer that is able to paint a line under its child node. | | [ui.widget.container.widgetcontainer](modules/ui.widget.container.widgetcontainer.html) | WidgetContainer is a container for one or multiple Widgets. | | [ui.widget.datetimewidget](modules/ui.widget.datetimewidget.html) | Widget for setting the date or time. | | [ui.widget.eventlistener](modules/ui.widget.eventlistener.html) | The EventListener is an interface that handles events. | | [ui.widget.horizontalgroup](modules/ui.widget.horizontalgroup.html) | A layout widget that puts objects besides each other. | | [ui.widget.htmlboxwidget](modules/ui.widget.htmlboxwidget.html) | HTML widget (without scroll bars). | | [ui.widget.iconbutton](modules/ui.widget.iconbutton.html) | Button with a big icon image! Designed for touch devices. | | [ui.widget.iconwidget](modules/ui.widget.iconwidget.html) | | | [ui.widget.imageviewer](modules/ui.widget.imageviewer.html) | ImageViewer displays an image with some simple manipulation options. | | [ui.widget.imagewidget](modules/ui.widget.imagewidget.html) | ImageWidget shows an image from a file or memory. | | [ui.widget.infomessage](modules/ui.widget.infomessage.html) | Widget that displays an informational message. | | [ui.widget.inputdialog](modules/ui.widget.inputdialog.html) | Widget for taking user input. | | [ui.widget.keyboardlayoutdialog](modules/ui.widget.keyboardlayoutdialog.html) | This widget displays a keyboard layout dialog. | | [ui.widget.keyvaluepage](modules/ui.widget.keyvaluepage.html) | Widget that presents a multi-page to show key value pairs. | | [ui.widget.linewidget](modules/ui.widget.linewidget.html) | Widget that displays a line. | | [ui.widget.listview](modules/ui.widget.listview.html) | Widget component that handles pagination for a list of items. | | [ui.widget.multiconfirmbox](modules/ui.widget.multiconfirmbox.html) | Widget that shows a message and cancel/choice1/choice2 buttons | | [ui.widget.multiinputdialog](modules/ui.widget.multiinputdialog.html) | Widget for taking multiple user inputs. | | [ui.widget.networksetting](modules/ui.widget.networksetting.html) | Network setting widget. | | [ui.widget.notification](modules/ui.widget.notification.html) | Widget that displays a tiny notification at the top of the screen. | | [ui.widget.numberpickerwidget](modules/ui.widget.numberpickerwidget.html) | A customizable number picker. | | [ui.widget.openwithdialog](modules/ui.widget.openwithdialog.html) | This widget displays an open with dialog. | | [ui.widget.overlapgroup](modules/ui.widget.overlapgroup.html) | A layout widget that puts objects above each other. | | [ui.widget.progresswidget](modules/ui.widget.progresswidget.html) | Widget for displaying progress bar. | | [ui.widget.qrmessage](modules/ui.widget.qrmessage.html) | Widget that displays a qr code. | | [ui.widget.radiobuttontable](modules/ui.widget.radiobuttontable.html) | A button table to be used in dialogs and widgets. | | [ui.widget.radiobuttonwidget](modules/ui.widget.radiobuttonwidget.html) | Widget that allows selecting an entry from a [RadioButton](modules/ui.widget.radiobuttontable.html#)
list. | | [ui.widget.scrollhtmlwidget](modules/ui.widget.scrollhtmlwidget.html) | HTML widget with vertical scroll bar. | | [ui.widget.scrolltextwidget](modules/ui.widget.scrolltextwidget.html) | Text widget with vertical scroll bar. | | [ui.widget.textboxwidget](modules/ui.widget.textboxwidget.html) | A TextWidget that handles long text wrapping | | [ui.widget.textviewer](modules/ui.widget.textviewer.html) | Displays some text in a scrollable view. | | [ui.widget.textwidget](modules/ui.widget.textwidget.html) | A TextWidget puts a string on a single line. | | [ui.widget.toggleswitch](modules/ui.widget.toggleswitch.html) | Displays a button that toggles between states. | | [ui.widget.touchmenu](modules/ui.widget.touchmenu.html) | TouchMenu widget for hierarchical menus. | | [ui.widget.trapwidget](modules/ui.widget.trapwidget.html) | Invisible full screen widget for catching UI events. | | [ui.widget.verticalgroup](modules/ui.widget.verticalgroup.html) | A layout widget that puts objects under each other. | | [ui.widget.widget](modules/ui.widget.widget.html) | This is a generic Widget interface, which is the base class for all other widgets. | | [userpatch](modules/userpatch.html) | Allows applying developer patches while running KOReader. | | [util](modules/util.html) | This module contains miscellaneous helper functions for the KOReader frontend. | | [version](modules/version.html) | This module helps with retrieving version information. | Topics ------ | | | | --- | --- | | [Collaborating\_with\_Git.md](topics/Collaborating_with_Git.md.html) | | | [DataStore.md](topics/DataStore.md.html) | | | [Development\_guide.md](topics/Development_guide.md.html) | | | [Events.md](topics/Events.md.html) | | | [Hacking.md](topics/Hacking.md.html) | | | [Porting.md](topics/Porting.md.html) | | | [README.md](topics/README.md.html) | | | [Unit\_tests.md](topics/Unit_tests.md.html) | | _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * **android** * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `android` ================ FFI bindings for android native APIs and Java Native Interface (JNI). see https://developer.android.com/ndk/reference/struct/a-native-activity and https://developer.android.com/reference/games/game-activity/group/android-native-app-glue [Functions](#Functions) ------------------------ | | | | --- | --- | | [asset\_loader (modulename)](#asset_loader) | A loader function for Lua which will look for assets when loading modules. | | [getFlavor ()](#getFlavor) | Build identification. | | [getScreenWidth ()](#getScreenWidth) | Gets screen width. | | [getScreenHeight ()](#getScreenHeight) | Gets screen height. | | [canWriteSettings ()](#canWriteSettings) | Android permission check. | Functions --------- **asset\_loader (modulename)** A loader function for Lua which will look for assets when loading modules. ### Parameters: * modulename [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: module or error message **getFlavor ()** Build identification. ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) flavor **getScreenWidth ()** Gets screen width. ### Returns: int screen width **getScreenHeight ()** Gets screen height. ### Returns: int screen height **canWriteSettings ()** Android permission check. ### Returns: bool hasWriteSettingsPermission _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * **apps.filemanager.filemanagerconverter** * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `apps.filemanager.filemanagerconverter` ============================================== This module is responsible for converting files. [Functions](#Functions) ------------------------ | | | | --- | --- | | [FileConverter:mdToHtml (markdown, title)](#FileConverter:mdToHtml) | Converts a markdown fragment to a full HTML document. | Functions --------- **FileConverter:mdToHtml (markdown, title)** Converts a markdown fragment to a full HTML document. ### Parameters: * markdown [string](https://www.lua.org/manual/5.1/manual.html#5.4) the markdown fragment * title [string](https://www.lua.org/manual/5.1/manual.html#5.4) an optional title for the HTML document ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) an HTML document _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * **apps.filemanager.filemanagerbookinfo** * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `apps.filemanager.filemanagerbookinfo` ============================================= This module provides a way to display book information (filename and book metadata) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * **apps.filemanager.filemanagerutil** * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `apps.filemanager.filemanagerutil` ========================================= This module contains miscellaneous helper functions for FileManager _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * **apps.filemanager.lib.md** * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `apps.filemanager.lib.md` ================================ Stream Utils _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * **apps.reader.modules.readerlink** * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `apps.reader.modules.readerlink` ======================================= ReaderLink is an abstraction for document-specific link interfaces. [Functions](#Functions) ------------------------ | | | | --- | --- | | [ReaderLink:isXpointerCoherent (a\_xpointer)](#ReaderLink:isXpointerCoherent) | Check if a xpointer to node really points to itself | | [ReaderLink:getLinkFromGes (ges)](#ReaderLink:getLinkFromGes) | Gets link from gesture. | | [ReaderLink:showLinkBox (link, allow\_footnote\_popup)](#ReaderLink:showLinkBox) | Highlights a linkbox if available and goes to it. | | [ReaderLink:onGotoLink (link, neglect\_current\_location, allow\_footnote\_popup)](#ReaderLink:onGotoLink) | Goes to link. | | [ReaderLink:onGoBackLink (show\_notification\_if\_empty)](#ReaderLink:onGoBackLink) | Goes back to previous location. | | [ReaderLink:onGoForwardLink ()](#ReaderLink:onGoForwardLink) | Goes to next location. | | [ReaderLink:onGoToPageLink (ges, internal\_links\_only, max\_distance)](#ReaderLink:onGoToPageLink) | Goes to link nearest to the gesture (or first link in page) | Functions --------- **ReaderLink:isXpointerCoherent (a\_xpointer)** Check if a xpointer to node really points to itself ### Parameters: * a\_xpointer Get screen coordinates of xpointer **ReaderLink:getLinkFromGes (ges)** Gets link from gesture. `Document:getLinkFromPosition()` behaves differently depending on document type, so this function provides a wrapper. ### Parameters: * ges **ReaderLink:showLinkBox (link, allow\_footnote\_popup)** Highlights a linkbox if available and goes to it. ### Parameters: * link * allow\_footnote\_popup **ReaderLink:onGotoLink (link, neglect\_current\_location, allow\_footnote\_popup)** Goes to link. (This is called by other modules (highlight, search) to jump to a xpointer, they should not provide allow_footnote_popup=true) ### Parameters: * link * neglect\_current\_location * allow\_footnote\_popup **ReaderLink:onGoBackLink (show\_notification\_if\_empty)** Goes back to previous location. ### Parameters: * show\_notification\_if\_empty **ReaderLink:onGoForwardLink ()** Goes to next location. **ReaderLink:onGoToPageLink (ges, internal\_links\_only, max\_distance)** Goes to link nearest to the gesture (or first link in page) ### Parameters: * ges * internal\_links\_only * max\_distance _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * **apps.reader.modules.readerview** * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `apps.reader.modules.readerview` ======================================= ReaderView module handles all the screen painting for document browsing. [Functions](#Functions) ------------------------ | | | | --- | --- | | [ReaderView:registerViewModule (name, widget)](#ReaderView:registerViewModule) | Register a view UI widget module for document browsing. | | [ReaderView:onRotationUpdate (rotation)](#ReaderView:onRotationUpdate) | | [Issues](#Issues) ------------------ | | | | --- | --- | | [ReaderView:onRotationUpdate-fixme1](#ReaderView:onRotationUpdate-fixme1) | : The awful readerhighlight\_spec test _relies_ on this pointer being left dangling... | Functions --------- **ReaderView:registerViewModule (name, widget)** Register a view UI widget module for document browsing. ### Parameters: * name [string](https://www.lua.org/manual/5.1/manual.html#5.4) module name, registered widget can be accessed by readerui.view.view\_modules\[name\]. * widget [ui.widget.widget.Widget](../modules/ui.widget.widget.html#Widget) paintable widget, i.e. has a paintTo method. ### Usage: local ImageWidget = require("ui/widget/imagewidget") local dummy\_image = ImageWidget:new{ file = "resources/koreader.png", } \-- the image will be painted on all book pages readerui.view:registerViewModule('dummy\_image', dummy\_image) **ReaderView:onRotationUpdate (rotation)** ### Parameters: * rotation Issues ------ **ReaderView:onRotationUpdate-fixme1** : The awful readerhighlight\_spec test _relies_ on this pointer being left dangling... _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== Modules ------- * [android](modules/android.html) * [apps.filemanager.filemanagerbookinfo](modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](modules/apps.reader.readerui.html) * [baseexporter](modules/baseexporter.html) * [cache](modules/cache.html) * [cacheitem](modules/cacheitem.html) * [datetime](modules/datetime.html) * [dbg](modules/dbg.html) * [depgraph](modules/depgraph.html) * [device.generic.device](modules/device.generic.device.html) * [device.gesturedetector](modules/device.gesturedetector.html) * [device.input](modules/device.input.html) * [device.kindle.mockrtc](modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](modules/device.sysfs_light.html) * [device.wakeupmgr](modules/device.wakeupmgr.html) * [dispatcher](modules/dispatcher.html) * [docsettings](modules/docsettings.html) * [document.doccache](modules/document.doccache.html) * [document.documentregistry](modules/document.documentregistry.html) * [document.koptinterface](modules/document.koptinterface.html) * [dump](modules/dump.html) * [ffi.blitbuffer](modules/ffi.blitbuffer.html) * [ffi.crypto](modules/ffi.crypto.html) * [ffi.framebuffer](modules/ffi.framebuffer.html) * [ffi.freetype](modules/ffi.freetype.html) * [ffi.jpeg](modules/ffi.jpeg.html) * [ffi.koptcontext](modules/ffi.koptcontext.html) * [ffi.loadlib](modules/ffi.loadlib.html) * [ffi.md5](modules/ffi.md5.html) * [ffi.mupdf](modules/ffi.mupdf.html) * [ffi.png](modules/ffi.png.html) * [ffi.rtc](modules/ffi.rtc.html) * [ffi.sdl2\_0](modules/ffi.sdl2_0.html) * [ffi.utf8proc](modules/ffi.utf8proc.html) * [ffi.util](modules/ffi.util.html) * [ffi.webp](modules/ffi.webp.html) * [ffi.zipwriter](modules/ffi.zipwriter.html) * [ffi.zlib](modules/ffi.zlib.html) * [ffi.zstd](modules/ffi.zstd.html) * [gettext](modules/gettext.html) * [koplugin.HelloWorld](modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](modules/koplugin.QRClipboard.html) * [koplugin.autodim](modules/koplugin.autodim.html) * [koplugin.autowarmth](modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](modules/koplugin.coverimage.html) * [koplugin.exporter](modules/koplugin.exporter.html) * [koplugin.japanese](modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](modules/koplugin.terminal.html) * [koplugin.terminal](modules/koplugin.terminal.html) * [koplugin.vocabbuilder](modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](modules/koplugin.wallabag.html) * [languagesupport](modules/languagesupport.html) * [logger](modules/logger.html) * [luadata](modules/luadata.html) * [luadefaults](modules/luadefaults.html) * [luasettings](modules/luasettings.html) * [optmath](modules/optmath.html) * [provider](modules/provider.html) * [random](modules/random.html) * [socketutil](modules/socketutil.html) * [sort](modules/sort.html) * [suntime](modules/suntime.html) * [time](modules/time.html) * [ui.bidi](modules/ui.bidi.html) * [ui.data.css\_tweaks](modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](modules/ui.data.optionsutil.html) * [ui.downloadmgr](modules/ui.downloadmgr.html) * [ui.event](modules/ui.event.html) * [ui.font](modules/ui.font.html) * [ui.geometry](modules/ui.geometry.html) * [ui.hook\_container](modules/ui.hook_container.html) * [ui.menusorter](modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](modules/ui.network.wpa_supplicant.html) * [ui.otamanager](modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](modules/ui.plugin.switch_plugin.html) * [ui.quickstart](modules/ui.quickstart.html) * [ui.renderimage](modules/ui.renderimage.html) * [ui.rendertext](modules/ui.rendertext.html) * [ui.size](modules/ui.size.html) * [ui.translator](modules/ui.translator.html) * [ui.trapper](modules/ui.trapper.html) * [ui.uimanager](modules/ui.uimanager.html) * [ui.viewhtml](modules/ui.viewhtml.html) * [ui.widget.bboxwidget](modules/ui.widget.bboxwidget.html) * [ui.widget.button](modules/ui.widget.button.html) * [ui.widget.buttondialog](modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](modules/ui.widget.linewidget.html) * [ui.widget.listview](modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](modules/ui.widget.networksetting.html) * [ui.widget.notification](modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](modules/ui.widget.textviewer.html) * [ui.widget.textwidget](modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](modules/ui.widget.verticalgroup.html) * [ui.widget.widget](modules/ui.widget.widget.html) * [userpatch](modules/userpatch.html) * [util](modules/util.html) * [version](modules/version.html) Topics ------ * [Collaborating with Git](topics/Collaborating_with_Git.md.html) * [DataStore](topics/DataStore.md.html) * [Development Guide](topics/Development_guide.md.html) * [Events](topics/Events.md.html) * [Hacking](topics/Hacking.md.html) * [Porting](topics/Porting.md.html) * [README](topics/README.md.html) * [Unit Tests](topics/Unit_tests.md.html) Multi-platform ebook reader --------------------------- An ebook reader application supports PDF, DJVU, EPUB, FB2 and many more formats, running on Kindle, Kobo, PocketBook, Ubuntu Touch and Android devices. Modules ------- | | | | --- | --- | | [android](modules/android.html) | FFI bindings for android native APIs and Java Native Interface (JNI). | | [apps.filemanager.filemanagerbookinfo](modules/apps.filemanager.filemanagerbookinfo.html) | This module provides a way to display book information (filename and book metadata) | | [apps.filemanager.filemanagerconverter](modules/apps.filemanager.filemanagerconverter.html) | This module is responsible for converting files. | | [apps.filemanager.filemanagerutil](modules/apps.filemanager.filemanagerutil.html) | This module contains miscellaneous helper functions for FileManager | | [apps.filemanager.lib.md](modules/apps.filemanager.lib.md.html) | Stream Utils | | [apps.reader.modules.readerlink](modules/apps.reader.modules.readerlink.html) | ReaderLink is an abstraction for document-specific link interfaces. | | [apps.reader.modules.readerview](modules/apps.reader.modules.readerview.html) | ReaderView module handles all the screen painting for document browsing. | | [apps.reader.readerui](modules/apps.reader.readerui.html) | | | [baseexporter](modules/baseexporter.html) | Base for highlight exporters. | | [cache](modules/cache.html) | It's apparently unusable, purge it and refresh the snapshot. | | [cacheitem](modules/cacheitem.html) | NOTE: As far as size estimations go, the assumption is that a key, value pair should roughly take two words,

and the most common items we cache are Geom-like tables (i.e., 4 key-value pairs). | | [datetime](modules/datetime.html) | This module contains date translations and helper functions for the KOReader frontend. | | [dbg](modules/dbg.html) | This module provides development-only asserts and other debug guards. | | [depgraph](modules/depgraph.html) | DepGraph module. | | [device.generic.device](modules/device.generic.device.html) | Generic device abstraction. | | [device.gesturedetector](modules/device.gesturedetector.html) | This module detects gestures. | | [device.input](modules/device.input.html) | An interface to get input events. | | [device.kindle.mockrtc](modules/device.kindle.mockrtc.html) | Checks if the alarm we set matches the current time. | | [device.kobo.nickel\_conf](modules/device.kobo.nickel_conf.html) | Access and modify values in `Kobo eReader.conf` used by Nickel. | | [device.sysfs\_light](modules/device.sysfs_light.html) | | | [device.wakeupmgr](modules/device.wakeupmgr.html) | RTC wakeup interface. | | [dispatcher](modules/dispatcher.html) | This module is responsible for dispatching events. | | [docsettings](modules/docsettings.html) | This module is responsible for reading and writing `metadata.lua` files in the so-called sidecar directory ([Wikipedia definition](https://en.wikipedia.org/wiki/Sidecar_file)
). | | [document.doccache](modules/document.doccache.html) | ...otherwise, effectively disable the cache by making it single slot... | | [document.documentregistry](modules/document.documentregistry.html) | This is a registry for document providers | | [document.koptinterface](modules/document.koptinterface.html) | Interface to k2pdfoptlib backend. | | [dump](modules/dump.html) | A simple serialization function which won't do uservalues, functions, or loops. | | [ffi.blitbuffer](modules/ffi.blitbuffer.html) | Generic blitbuffer/GFX stuff that works on memory buffers | | [ffi.crypto](modules/ffi.crypto.html) | LuaJIT FFI wrapper for libcrypto (OpenSSL). | | [ffi.framebuffer](modules/ffi.framebuffer.html) | Framebuffer API. | | [ffi.freetype](modules/ffi.freetype.html) | Freetype library interface (text rendering) | | [ffi.jpeg](modules/ffi.jpeg.html) | Module for JPEG decoding/encoding. | | [ffi.koptcontext](modules/ffi.koptcontext.html) | Leptonica cheatsheet:

\-- Data structures:
PIX \-- basic data structure - stores image
BOX \-- stores rectangle (x, y, w, h)
BOXA \-- array of BOX
NUMA \-- array of numbers | | [ffi.loadlib](modules/ffi.loadlib.html) | Helper for loading native libraries. | | [ffi.md5](modules/ffi.md5.html) | MD5 hash library. | | [ffi.mupdf](modules/ffi.mupdf.html) | MuPDF API

This is a FFI wrapper for what was a Lua-based API in the past Some kind of C wrapper is needed for muPDF since muPDF uses a setjmp/longjmp based approach to error/exception handling. | | [ffi.png](modules/ffi.png.html) | Module for PNG decoding/encoding. | | [ffi.rtc](modules/ffi.rtc.html) | Module for interfacing with the RTC (real time clock). | | [ffi.sdl2\_0](modules/ffi.sdl2_0.html) | Module for interfacing SDL 2.0 video/input facilities | | [ffi.utf8proc](modules/ffi.utf8proc.html) | Module for utf8 string operations. | | [ffi.util](modules/ffi.util.html) | Module for various utility functions. | | [ffi.webp](modules/ffi.webp.html) | Module for WebP decoding. | | [ffi.zipwriter](modules/ffi.zipwriter.html) | Zip packing workflow & code from luarocks' zip.lua : https://github.com/luarocks/luarocks/blob/master/src/luarocks/tools/zip.lua Modified to not require lua-zlib (we can wrap zlib with ffi) cf: http://luajit.org/ext_ffi_tutorial.html, which uses zlib as an example ! Simplified to take filename and content from strings and not from disk | | [ffi.zlib](modules/ffi.zlib.html) | LuaJIT FFI wrapper for zlib. | | [ffi.zstd](modules/ffi.zstd.html) | LuaJIT FFI wrapper for ZSTD. | | [gettext](modules/gettext.html) | A pure Lua implementation of a gettext subset. | | [koplugin.HelloWorld](modules/koplugin.HelloWorld.html) | This is a debug plugin to test Plugin functionality. | | [koplugin.QRClipboard](modules/koplugin.QRClipboard.html) | This plugin generates a QR code from clipboard content. | | [koplugin.autodim](modules/koplugin.autodim.html) | Plugin for automatic dimming of the frontlight after an idle period. | | [koplugin.autowarmth](modules/koplugin.autowarmth.html) | Plugin for setting screen warmth based on the sun position and/or a time schedule | | [koplugin.calibre.metadata](modules/koplugin.calibre.metadata.html) | This module implements functions for loading, saving and editing calibre metadata files. | | [koplugin.coverimage](modules/koplugin.coverimage.html) | | | [koplugin.exporter](modules/koplugin.exporter.html) | Export highlights to different targets. | | [koplugin.japanese](modules/koplugin.japanese.html) | Japanese language support for KOReader, modelled after Yomichan. | | [koplugin.japanese.deinflector](modules/koplugin.japanese.deinflector.html) | Yomichan deinflector implementation in pure Lua. | | [koplugin.terminal](modules/koplugin.terminal.html) | module used for terminal emulator to override InputText | | [koplugin.terminal](modules/koplugin.terminal.html) | This plugin provides a terminal emulator (VT52 (+some ANSI and some VT100)) | | [koplugin.vocabbuilder](modules/koplugin.vocabbuilder.html) | This plugin processes dictionary word lookups and uses spaced repetition to help you remember new words. | | [koplugin.wallabag](modules/koplugin.wallabag.html) | This plugin downloads a set number of the newest arcticles in your Wallabag "Unread" list. | | [languagesupport](modules/languagesupport.html) | Language-specific handling module. | | [logger](modules/logger.html) | Logger module. | | [luadata](modules/luadata.html) | Handles append-mostly data such as KOReader's bookmarks and dictionary search history. | | [luadefaults](modules/luadefaults.html) | Subclass of LuaSettings dedicated to handling the legacy global constants. | | [luasettings](modules/luasettings.html) | This module handles generic settings as well as KOReader's global settings system. | | [optmath](modules/optmath.html) | Simple math helper functions | | [provider](modules/provider.html) | Registers an implementation of a feature. | | [random](modules/random.html) | A set of functions to extend math.random and math.randomseed. | | [socketutil](modules/socketutil.html) | This module contains miscellaneous helper functions specific to our usage of LuaSocket/LuaSec. | | [sort](modules/sort.html) | This module contains a collection of comparison functions (or factories for comparison functions) for [table.sort](https://www.lua.org/manual/5.1/manual.html#pdf-table.sort)
. | | [suntime](modules/suntime.html) | \-- Author: Martin Zwicknagl (zwim) -- Date: 2021-10-29 -- The current source code of this file can be found on https://github.com/zwim/suntime. | | [time](modules/time.html) | A runtime optimized module to compare and do simple arithmetic with fixed point time values (which are called fts in here). | | [ui.bidi](modules/ui.bidi.html) | Bidirectional text and UI mirroring setup and helpers. | | [ui.data.css\_tweaks](modules/ui.data.css_tweaks.html) | CSS tweaks must have the following attributes: - id: unique ID identifying this tweak, to be stored in settings - title: menu item title (must not be too long) - css: stylesheet text to append to external stylesheet They may have the following optional attributes: - description: text displayed when holding on menu item - priority: higher numbers are appended after lower numbers (if not specified, default to 0) - conflicts_with: a string with the id of another tweak that should be disabled when this tweak is enabled, or an array/table of tweaks ids, or a function(other_id) return true for ids conflicting. | | [ui.data.keyboardlayouts.generic\_ime](modules/ui.data.keyboardlayouts.generic_ime.html) | Generic input method engine -- | | [ui.data.keyboardlayouts.ja\_keyboard](modules/ui.data.keyboardlayouts.ja_keyboard.html) | Japanese 12-key flick keyboard layout, modelled after Android's flick keyboard. | | [ui.data.keyboardlayouts.ja\_keyboard\_keys](modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) | | | [ui.data.keyboardlayouts.ko\_KR\_helper](modules/ui.data.keyboardlayouts.ko_KR_helper.html) | | | [ui.data.keyboardlayouts.zh\_keyboard](modules/ui.data.keyboardlayouts.zh_keyboard.html) | Chinese stroke-based input method for Lua/KOReader. | | [ui.data.optionsutil](modules/ui.data.optionsutil.html) | This module contains miscellaneous helper functions for the creoptions and koptoptions. | | [ui.downloadmgr](modules/ui.downloadmgr.html) | This module displays a PathChooser widget to choose a download directory. | | [ui.event](modules/ui.event.html) | Events are messages that are passed through the widget tree. | | [ui.font](modules/ui.font.html) | Font module. | | [ui.geometry](modules/ui.geometry.html) | Utilities for 2D geometry. | | [ui.hook\_container](modules/ui.hook_container.html) | HookContainer allows listeners to register and unregister a hook for speakers to execute. | | [ui.menusorter](modules/ui.menusorter.html) | This module is responsible for constructing the KOReader menu based on a list of menu\_items and a separate menu order. | | [ui.network.wpa\_supplicant](modules/ui.network.wpa_supplicant.html) | WPA client helper for Kobo. | | [ui.otamanager](modules/ui.otamanager.html) | Checks for updates on the specified nightly build server. | | [ui.plugin.background\_task\_plugin](modules/ui.plugin.background_task_plugin.html) | BackgroundTaskPlugin creates a plugin with a switch to enable or disable it and executes a background task. | | [ui.plugin.switch\_plugin](modules/ui.plugin.switch_plugin.html) | SwitchPlugin creates a plugin with a switch to enable or disable it. | | [ui.quickstart](modules/ui.quickstart.html) | This module is responsible for generating the quickstart guide. | | [ui.renderimage](modules/ui.renderimage.html) | Image rendering module. | | [ui.rendertext](modules/ui.rendertext.html) | Text rendering module. | | [ui.size](modules/ui.size.html) | This module provides a standardized set of sizes for use in widgets. | | [ui.translator](modules/ui.translator.html) | This module translates text using Google Translate. | | [ui.trapper](modules/ui.trapper.html) | Trapper module: provides methods for simple interaction with UI, without the need for explicit callbacks, for use by linear jobs between their steps. | | [ui.uimanager](modules/ui.uimanager.html) | This module manages widgets. | | [ui.viewhtml](modules/ui.viewhtml.html) | This module shows HTML code and CSS content from crengine documents. | | [ui.widget.bboxwidget](modules/ui.widget.bboxwidget.html) | BBoxWidget shows a bbox for page cropping. | | [ui.widget.button](modules/ui.widget.button.html) | A button widget that shows text or an icon and handles callback when tapped. | | [ui.widget.buttondialog](modules/ui.widget.buttondialog.html) | A button dialog widget that shows a grid of buttons. | | [ui.widget.checkbutton](modules/ui.widget.checkbutton.html) | Button widget that shows a checkmark (`✓`) when checked and an empty box (`□`) when unchecked. | | [ui.widget.checkmark](modules/ui.widget.checkmark.html) | Widget that shows a checkmark (`✓`), an empty box (`□`) or nothing of the same size. | | [ui.widget.confirmbox](modules/ui.widget.confirmbox.html) | Widget that shows a confirmation alert with a message and Cancel/OK buttons. | | [ui.widget.container.alphacontainer](modules/ui.widget.container.alphacontainer.html) | AlphaContainer will paint its content (a single widget) at the specified opacity level (0..1) | | [ui.widget.container.bottomcontainer](modules/ui.widget.container.bottomcontainer.html) | BottomContainer contains its content (1 widget) at the bottom of its own dimensions | | [ui.widget.container.centercontainer](modules/ui.widget.container.centercontainer.html) | CenterContainer centers its content (1 widget) within its own dimensions | | [ui.widget.container.framecontainer](modules/ui.widget.container.framecontainer.html) | A FrameContainer is some graphics content (1 widget) that is surrounded by a frame | | [ui.widget.container.inputcontainer](modules/ui.widget.container.inputcontainer.html) | An InputContainer is a WidgetContainer that handles user input events including multi touches and key presses. | | [ui.widget.container.leftcontainer](modules/ui.widget.container.leftcontainer.html) | LeftContainer aligns its content (1 widget) at the left of its own dimensions | | [ui.widget.container.movablecontainer](modules/ui.widget.container.movablecontainer.html) | A MovableContainer can have its content moved on screen with Swipe/Hold/Pan. | | [ui.widget.container.rightcontainer](modules/ui.widget.container.rightcontainer.html) | RightContainer aligns its content (1 widget) at the right of its own dimensions | | [ui.widget.container.scrollablecontainer](modules/ui.widget.container.scrollablecontainer.html) | ScrollableContainer allows scrolling its content (1 widget) within its own dimensions

This scrollable container needs to be known as widget.cropping\_widget in the widget using it that is passed to UIManager:show() for UIManager to ensure proper interception of inner widget self-repainting/invert (mostly used when flashing for UI feedback that we want to limit to the cropped area). | | [ui.widget.container.topcontainer](modules/ui.widget.container.topcontainer.html) | TopContainer contains its content (1 widget) at the top of its own dimensions | | [ui.widget.container.underlinecontainer](modules/ui.widget.container.underlinecontainer.html) | An UnderlineContainer is a WidgetContainer that is able to paint a line under its child node. | | [ui.widget.container.widgetcontainer](modules/ui.widget.container.widgetcontainer.html) | WidgetContainer is a container for one or multiple Widgets. | | [ui.widget.datetimewidget](modules/ui.widget.datetimewidget.html) | Widget for setting the date or time. | | [ui.widget.eventlistener](modules/ui.widget.eventlistener.html) | The EventListener is an interface that handles events. | | [ui.widget.horizontalgroup](modules/ui.widget.horizontalgroup.html) | A layout widget that puts objects besides each other. | | [ui.widget.htmlboxwidget](modules/ui.widget.htmlboxwidget.html) | HTML widget (without scroll bars). | | [ui.widget.iconbutton](modules/ui.widget.iconbutton.html) | Button with a big icon image! Designed for touch devices. | | [ui.widget.iconwidget](modules/ui.widget.iconwidget.html) | | | [ui.widget.imageviewer](modules/ui.widget.imageviewer.html) | ImageViewer displays an image with some simple manipulation options. | | [ui.widget.imagewidget](modules/ui.widget.imagewidget.html) | ImageWidget shows an image from a file or memory. | | [ui.widget.infomessage](modules/ui.widget.infomessage.html) | Widget that displays an informational message. | | [ui.widget.inputdialog](modules/ui.widget.inputdialog.html) | Widget for taking user input. | | [ui.widget.keyboardlayoutdialog](modules/ui.widget.keyboardlayoutdialog.html) | This widget displays a keyboard layout dialog. | | [ui.widget.keyvaluepage](modules/ui.widget.keyvaluepage.html) | Widget that presents a multi-page to show key value pairs. | | [ui.widget.linewidget](modules/ui.widget.linewidget.html) | Widget that displays a line. | | [ui.widget.listview](modules/ui.widget.listview.html) | Widget component that handles pagination for a list of items. | | [ui.widget.multiconfirmbox](modules/ui.widget.multiconfirmbox.html) | Widget that shows a message and cancel/choice1/choice2 buttons | | [ui.widget.multiinputdialog](modules/ui.widget.multiinputdialog.html) | Widget for taking multiple user inputs. | | [ui.widget.networksetting](modules/ui.widget.networksetting.html) | Network setting widget. | | [ui.widget.notification](modules/ui.widget.notification.html) | Widget that displays a tiny notification at the top of the screen. | | [ui.widget.numberpickerwidget](modules/ui.widget.numberpickerwidget.html) | A customizable number picker. | | [ui.widget.openwithdialog](modules/ui.widget.openwithdialog.html) | This widget displays an open with dialog. | | [ui.widget.overlapgroup](modules/ui.widget.overlapgroup.html) | A layout widget that puts objects above each other. | | [ui.widget.progresswidget](modules/ui.widget.progresswidget.html) | Widget for displaying progress bar. | | [ui.widget.qrmessage](modules/ui.widget.qrmessage.html) | Widget that displays a qr code. | | [ui.widget.radiobuttontable](modules/ui.widget.radiobuttontable.html) | A button table to be used in dialogs and widgets. | | [ui.widget.radiobuttonwidget](modules/ui.widget.radiobuttonwidget.html) | Widget that allows selecting an entry from a [RadioButton](modules/ui.widget.radiobuttontable.html#)
list. | | [ui.widget.scrollhtmlwidget](modules/ui.widget.scrollhtmlwidget.html) | HTML widget with vertical scroll bar. | | [ui.widget.scrolltextwidget](modules/ui.widget.scrolltextwidget.html) | Text widget with vertical scroll bar. | | [ui.widget.textboxwidget](modules/ui.widget.textboxwidget.html) | A TextWidget that handles long text wrapping | | [ui.widget.textviewer](modules/ui.widget.textviewer.html) | Displays some text in a scrollable view. | | [ui.widget.textwidget](modules/ui.widget.textwidget.html) | A TextWidget puts a string on a single line. | | [ui.widget.toggleswitch](modules/ui.widget.toggleswitch.html) | Displays a button that toggles between states. | | [ui.widget.touchmenu](modules/ui.widget.touchmenu.html) | TouchMenu widget for hierarchical menus. | | [ui.widget.trapwidget](modules/ui.widget.trapwidget.html) | Invisible full screen widget for catching UI events. | | [ui.widget.verticalgroup](modules/ui.widget.verticalgroup.html) | A layout widget that puts objects under each other. | | [ui.widget.widget](modules/ui.widget.widget.html) | This is a generic Widget interface, which is the base class for all other widgets. | | [userpatch](modules/userpatch.html) | Allows applying developer patches while running KOReader. | | [util](modules/util.html) | This module contains miscellaneous helper functions for the KOReader frontend. | | [version](modules/version.html) | This module helps with retrieving version information. | Topics ------ | | | | --- | --- | | [Collaborating\_with\_Git.md](topics/Collaborating_with_Git.md.html) | | | [DataStore.md](topics/DataStore.md.html) | | | [Development\_guide.md](topics/Development_guide.md.html) | | | [Events.md](topics/Events.md.html) | | | [Hacking.md](topics/Hacking.md.html) | | | [Porting.md](topics/Porting.md.html) | | | [README.md](topics/README.md.html) | | | [Unit\_tests.md](topics/Unit_tests.md.html) | | _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * **apps.reader.readerui** * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `apps.reader.readerui` ============================= _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * **baseexporter** * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `baseexporter` ===================== Base for highlight exporters. Each target should inherit from this class and implement _at least_ an [export](../modules/baseexporter.html#BaseExporter:export) function. [Functions](#Functions) ------------------------ | | | | --- | --- | | [BaseExporter:getTimeStamp ()](#BaseExporter:getTimeStamp) | Export timestamp | | [BaseExporter:getVersion ()](#BaseExporter:getVersion) | Exporter version | | [BaseExporter:loadSettings ()](#BaseExporter:loadSettings) | Loads settings for the exporter | | [BaseExporter:saveSettings ()](#BaseExporter:saveSettings) | Saves settings for the exporter | | [BaseExporter:export (t)](#BaseExporter:export) | Exports a table of booknotes to local format or remote service | | [BaseExporter:getFilePath (t)](#BaseExporter:getFilePath) | File path where the exporter writes its output | | [BaseExporter:getMenuTable ()](#BaseExporter:getMenuTable) | Configuration menu for the exporter | | [BaseExporter:isReadyToExport ()](#BaseExporter:isReadyToExport) | Checks if the exporter is ready to export | | [BaseExporter:isEnabled ()](#BaseExporter:isEnabled) | Checks if the exporter was enabled by the user and it is ready to export | | [BaseExporter:toggleEnabled ()](#BaseExporter:toggleEnabled) | Toggles exporter enabled state if it's ready to export | | [BaseExporter:shareText (text, title)](#BaseExporter:shareText) | Shares text with other apps | Functions --------- **BaseExporter:getTimeStamp ()** Export timestamp ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) timestamp **BaseExporter:getVersion ()** Exporter version ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) version **BaseExporter:loadSettings ()** Loads settings for the exporter **BaseExporter:saveSettings ()** Saves settings for the exporter **BaseExporter:export (t)** Exports a table of booknotes to local format or remote service ### Parameters: * t table of booknotes ### Returns: bool success **BaseExporter:getFilePath (t)** File path where the exporter writes its output ### Parameters: * t table of booknotes ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) absolute path or nil **BaseExporter:getMenuTable ()** Configuration menu for the exporter ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) menu with exporter settings **BaseExporter:isReadyToExport ()** Checks if the exporter is ready to export ### Returns: bool ready **BaseExporter:isEnabled ()** Checks if the exporter was enabled by the user and it is ready to export ### Returns: bool enabled **BaseExporter:toggleEnabled ()** Toggles exporter enabled state if it's ready to export **BaseExporter:shareText (text, title)** Shares text with other apps ### Parameters: * text * title _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * **dbg** * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `dbg` ============ This module provides development-only asserts and other debug guards. Instead of a regular Lua [assert](https://www.lua.org/manual/5.1/manual.html#pdf-assert) (), use [dbg.dassert](../modules/dbg.html#Dbg.dassert) () which can be toggled at runtime. dbg.dassert(important\_variable ~= nil) For checking whether the input given to a function is sane, you can use [dbg.guard](../modules/dbg.html#Dbg.guard) (). dbg:guard(NickelConf.frontLightLevel, "set", function(new\_intensity) assert(type(new\_intensity) == "number", "Wrong brightness value type (expected number)!") assert(new\_intensity >= 0 and new\_intensity <= 100, "Wrong brightness value given!") end) These functions don't do anything when debugging is turned off. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Dbg:turnOn ()](#Dbg:turnOn) | Turn on debug mode. | | [Dbg.guard (\_, mod, method, pre\_guard, post\_guard)](#Dbg.guard) | Pass a guard function to detect bad input values. | | [Dbg.dassert (check, msg)](#Dbg.dassert) | Use this instead of a regular Lua [assert](https://www.lua.org/manual/5.1/manual.html#pdf-assert)
(). | | [Dbg:turnOff ()](#Dbg:turnOff) | Turn off debug mode. | | [Dbg:setVerbose (verbose)](#Dbg:setVerbose) | Turn on verbose mode. | | [Dbg:v (...)](#Dbg:v) | Simple table dump. | | [Dbg.log (...)](#Dbg.log) | Conditional logging with a stable ref. | | [Dbg:traceback ()](#Dbg:traceback) | Simple traceback. | Functions --------- **Dbg:turnOn ()** Turn on debug mode. This should only be used in tests and at the user's request. **Dbg.guard (\_, mod, method, pre\_guard, post\_guard)** Pass a guard function to detect bad input values. ### Parameters: * \_ * mod * method * pre\_guard * post\_guard **Dbg.dassert (check, msg)** Use this instead of a regular Lua [assert](https://www.lua.org/manual/5.1/manual.html#pdf-assert) (). ### Parameters: * check * msg **Dbg:turnOff ()** Turn off debug mode. This should only be used in tests and at the user's request. **Dbg:setVerbose (verbose)** Turn on verbose mode. This should only be used in tests and at the user's request. ### Parameters: * verbose **Dbg:v (...)** Simple table dump. ### Parameters: * ... **Dbg.log (...)** Conditional logging with a stable ref. ### Parameters: * ... **Dbg:traceback ()** Simple traceback. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * **cache** * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `cache` ============== It's apparently unusable, purge it and refresh the snapshot. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * **datetime** * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `datetime` ================= This module contains date translations and helper functions for the KOReader frontend. [Functions](#Functions) ------------------------ | | | | --- | --- | | [secondsToClock (seconds, withoutSeconds)](#secondsToClock) | Converts seconds to a clock string. | | [secondsToHClock (seconds, withoutSeconds, hmsFormat, withDays, compact)](#secondsToHClock) | Converts seconds to a period of time string. | | [secondsToClockDuration (Either, withoutSeconds, withDays, compact)](#secondsToClockDuration) | Converts seconds to a clock type (classic or modern), based on the given format preference "Classic" format calls secondsToClock, "Modern" and "Letters" formats call secondsToHClock | | [secondsToHour (seconds, twelve\_hour\_clock)](#secondsToHour) | Converts timestamp to an hour string | | [secondsToDate (seconds)](#secondsToDate) | Converts timestamp to a date string | | [secondsToDateTime (seconds, twelve\_hour\_clock)](#secondsToDateTime) | Converts timestamp to a date+time string | | [stringToSeconds (YYYY)](#stringToSeconds) | Converts a date+time string to seconds | Functions --------- **secondsToClock (seconds, withoutSeconds)** Converts seconds to a clock string. Source: [https://gist.github.com/jesseadams/791673](https://gist.github.com/jesseadams/791673) ### Parameters: * seconds integer number of seconds * withoutSeconds boolean if true 00:00, if false 00:00:00 ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) clock string in the form of 00:00 or 00:00:00 **secondsToHClock (seconds, withoutSeconds, hmsFormat, withDays, compact)** Converts seconds to a period of time string. ### Parameters: * seconds integer number of seconds * withoutSeconds boolean if true 1h30', if false 1h30'10" * hmsFormat boolean , if true format 1h 30m 10s * withDays boolean , if true format 1d12h30'10" or 1d 12h 30m 10s * compact boolean , if set removes all leading zeros (incl. units if necessary) and turns thinspaces into hairspaces (if present) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) clock string in the form of 1h30'10" or 1h 30m 10s **secondsToClockDuration (Either, withoutSeconds, withDays, compact)** Converts seconds to a clock type (classic or modern), based on the given format preference "Classic" format calls secondsToClock, "Modern" and "Letters" formats call secondsToHClock ### Parameters: * Either [string](https://www.lua.org/manual/5.1/manual.html#5.4) "modern" for 1h30'10", "letters" for 1h 30m 10s, or "classic" for 1:30:10 * withoutSeconds boolean if true 1h30' or 1h 30m, if false 1h30'10" or 1h 30m 10s * withDays boolean , if hours>=24 include days in clock string 1d12h10'10" or 1d 12h 10m 10s * compact boolean , if set removes all leading zeros (incl. units if necessary) and turns thinspaces into hairspaces (if present) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) clock string in the specific format of 1h30', 1h30'10" resp. 1h 30m, 1h 30m 10s **secondsToHour (seconds, twelve\_hour\_clock)** Converts timestamp to an hour string ### Parameters: * seconds integer number of seconds * twelve\_hour\_clock boolean ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) hour string **secondsToDate (seconds)** Converts timestamp to a date string ### Parameters: * seconds integer number of seconds ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) date string **secondsToDateTime (seconds, twelve\_hour\_clock)** Converts timestamp to a date+time string ### Parameters: * seconds integer number of seconds * twelve\_hour\_clock boolean ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) date+time **stringToSeconds (YYYY)** Converts a date+time string to seconds ### Parameters: * YYYY [string](https://www.lua.org/manual/5.1/manual.html#5.4) -MM-DD HH:MM:SS", time may be absent ### Returns: seconds _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * **depgraph** * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `depgraph` ================= DepGraph module. Library for constructing dependency graphs. Example: local dg = DepGraph:new{} dg:addNode('a1', {'a2', 'b1'}) dg:addNode('b1', {'a2', 'c1'}) dg:addNode('c1') \-- The return value of dg:serialize() will be: \-- {'a2', 'c1', 'b1', 'a1'} NOTE: Insertion order is preserved, duplicates are automatically prevented (both as main nodes and as deps). _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * **device.kindle.mockrtc** * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `device.kindle.mockrtc` ============================== Checks if the alarm we set matches the current time. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * **device.generic.device** * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `device.generic.device` ============================== Generic device abstraction. This module defines stubs for common methods. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Device:performHapticFeedback (type)](#Device:performHapticFeedback) | Device specific method for performing haptic feedback. | | [Device:canExecuteScript (filename)](#Device:canExecuteScript) | Returns true if the file is a script we allow running Basically a helper method to check a specific list of file extensions for executable scripts | | [Device:unpackArchive (archive, extract\_to, with\_stripped\_root)](#Device:unpackArchive) | Unpack an archive. | [Issues](#Issues) ------------------ | | | | --- | --- | | [Device:performHapticFeedback-todo2](#Device:performHapticFeedback-todo2) | : Build an IPv6 variant of getDefaultRoute that parses /proc/net/ipv6\_route | Functions --------- **Device:performHapticFeedback (type)** Device specific method for performing haptic feedback. ### Parameters: * type [string](https://www.lua.org/manual/5.1/manual.html#5.4) Type of haptic feedback. See [https://developer.android.com/reference/android/view/HapticFeedbackConstants.html](https://developer.android.com/reference/android/view/HapticFeedbackConstants.html) . **Device:canExecuteScript (filename)** Returns true if the file is a script we allow running Basically a helper method to check a specific list of file extensions for executable scripts ### Parameters: * filename [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: boolean **Device:unpackArchive (archive, extract\_to, with\_stripped\_root)** Unpack an archive. Extract the contents of an archive, detecting its format by filename extension. Inspired by luarocks archive\_unpack() ### Parameters: * archive string: Filename of archive. * extract\_to string: Destination directory. * with\_stripped\_root boolean: true if root directory in archive should be stripped ### Returns: boolean or (boolean, string): true on success, false and an error message on failure. Issues ------ **Device:performHapticFeedback-todo2** : Build an IPv6 variant of getDefaultRoute that parses /proc/net/ipv6\_route _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * **device.gesturedetector** * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `device.gesturedetector` =============================== This module detects gestures. Current detectable gestures: * `touch` (emitted once on first contact down) * `tap` (touch action detected as single tap) * `pan` * `hold` * `swipe` * `pinch` * `spread` * `rotate` * `hold_pan` (will emit `hold_release` on contact lift, unlike its two-finger variant) * `double_tap` * `inward_pan` * `outward_pan` * `pan_release` * `hold_release` * `two_finger_hold` * `two_finger_hold_release` * `two_finger_tap` * `two_finger_pan` * `two_finger_hold_pan` * `two_finger_swipe` * `two_finger_pan_release` * `two_finger_hold_pan_release` You change the state machine by feeding it touch events, i.e. calling [GestureDetector:feedEvent(tev)](../modules/device.gesturedetector.html#GestureDetector:feedEvent) . a touch event should have following format: tev = { slot = 1, id = 46, x = 0, y = 1, timev = time.s(123.23), } Don't confuse `tev` with raw evs from kernel, `tev` is built according to ev. [GestureDetector:feedEvent(tev)](../modules/device.gesturedetector.html#GestureDetector:feedEvent) will return a detection result when you feed a touch release event to it. [Functions](#Functions) ------------------------ | | | | --- | --- | | [GestureDetector:feedEvent (tevs)](#GestureDetector:feedEvent) | Feeds touch events to state machine. | | [Contact:getPath (simple, diagonal, initial\_tev)](#Contact:getPath) | Compares `current_tev` with `initial_tev`. | | [GestureDetector:probeClockSource (timev)](#GestureDetector:probeClockSource) | Attempts to figure out which clock source tap events are using... | | [Contact:tapState (new\_tap)](#Contact:tapState) | Handles both single and double tap. | | [Contact:handleDoubleTap ()](#Contact:handleDoubleTap) | Emits both tap & double\_tap gestures. | | [Contact:handleNonTap (new\_tap)](#Contact:handleNonTap) | Handles move (switch to panState) & hold (switch to holdState). | | [Contact:panState (keep\_contact)](#Contact:panState) | Handles the full panel of pans & swipes, including their two-finger variants. | | [Contact:voidState ()](#Contact:voidState) | Used to ignore a buddy slot part of a MT gesture, so that we don't send duplicate events. | | [Contact:handleSwipe ()](#Contact:handleSwipe) | Emits the swipe & multiswipe gestures. | | [Contact:handlePan ()](#Contact:handlePan) | Emits the pan gestures and handles their two finger variants. | | [Contact:handleTwoFingerPan (buddy\_contact)](#Contact:handleTwoFingerPan) | Emits the pan, two_finger_pan, two_finger_hold_pan, inward_pan, outward\_pan & rotate gestures. | | [Contact:handlePanRelease (keep\_contact)](#Contact:handlePanRelease) | Emits the pan_release & two_finger_pan_release gestures. | | [Contact:holdState (new\_hold)](#Contact:holdState) | Emits the hold, hold_release & hold_pan gestures and their two\_finger variants. | | [GestureDetector:adjustGesCoordinate (ges)](#GestureDetector:adjustGesCoordinate) | Changes gesture's `x` and `y` coordinates according to screen view mode. | Functions --------- **GestureDetector:feedEvent (tevs)** Feeds touch events to state machine. Note that, in a single input frame, if the same slot gets multiple events, only the last one is kept. Every slot in the input frame is consumed, and that in FIFO order (slot order based on appearance in the frame). ### Parameters: * tevs **Contact:getPath (simple, diagonal, initial\_tev)** Compares `current_tev` with `initial_tev`. The first boolean argument `simple` results in only four directions if true. ### Parameters: * simple * diagonal * initial\_tev ### Returns: (direction, distance) pan direction and distance **GestureDetector:probeClockSource (timev)** Attempts to figure out which clock source tap events are using... ### Parameters: * timev We'll check if that timestamp is +/- 2.5s away from the three potential clock sources supported by evdev. We have bigger issues than this if we're parsing events more than 3s late ;). **Contact:tapState (new\_tap)** Handles both single and double tap. `new_tap` is true for the initial contact down event. ### Parameters: * new\_tap **Contact:handleDoubleTap ()** Emits both tap & double_tap gestures. Contact is up (but down is still true) or pending a double_tap timer. **Contact:handleNonTap (new\_tap)** Handles move (switch to panState) & hold (switch to holdState). Contact is down. `new_tap` is true for the initial contact down event. ### Parameters: * new\_tap **Contact:panState (keep\_contact)** Handles the full panel of pans & swipes, including their two-finger variants. ### Parameters: * keep\_contact **Contact:voidState ()** Used to ignore a buddy slot part of a MT gesture, so that we don't send duplicate events. **Contact:handleSwipe ()** Emits the swipe & multiswipe gestures. Contact is up. ST only (i.e., there isn't any buddy contact active). **Contact:handlePan ()** Emits the pan gestures and handles their two finger variants. Contact is down (and either in holdState or panState). **Contact:handleTwoFingerPan (buddy\_contact)** Emits the pan, two_finger_pan, two_finger_hold_pan, inward_pan, outward\_pan & rotate gestures. Contact is down in panState or holdState, or up in panState if it was lifted below the swipe interval. ### Parameters: * buddy\_contact logger.dbg("Contact handleTwoFingerPan for slot", self.slot) **Contact:handlePanRelease (keep\_contact)** Emits the pan_release & two_finger_pan_release gestures. Contact is up (but down is still true) and in panState. ### Parameters: * keep\_contact logger.dbg("Contact handlePanRelease for slot", self.slot) **Contact:holdState (new\_hold)** Emits the hold, hold_release & hold_pan gestures and their two\_finger variants. ### Parameters: * new\_hold **GestureDetector:adjustGesCoordinate (ges)** Changes gesture's `x` and `y` coordinates according to screen view mode. ### Parameters: * ges gesture that you want to adjust ### Returns: adjusted gesture. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * **device.input** * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `device.input` ===================== An interface to get input events. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Input:disableRotationMap ()](#Input:disableRotationMap) | Setup a rotation\_map that does nothing (for platforms where the events we get are already translated). | | [Input:open (path, name)](#Input:open) | Wrapper for our Lua/C input module's open. | | [Input:fdopen (fd, path, name)](#Input:fdopen) | Wrapper for our Lua/C input module's fdopen. | | [Input:close (path)](#Input:close) | Wrapper for our Lua/C input module's close. | | [Input:teardown ()](#Input:teardown) | Wrapper for our Lua/C input module's closeAll. | | [Input:registerEventAdjustHook (hook, hook\_params)](#Input:registerEventAdjustHook) | Different device models can implement their own hooks and register them. | | [Input:adjustABS\_SwitchXY (ev)](#Input:adjustABS_SwitchXY) | Catalog of predefined hooks. | | [Input:handleTouchEv (ev)](#Input:handleTouchEv) | Parse each touch ev from kernel and build up tev. | | [Input:handleMiscGyroEv (ev)](#Input:handleMiscGyroEv) | Accelerometer, in a platform-agnostic, custom format (EV_MSC:MSC_GYRO). | | [Input:toggleGyroEvents (toggle)](#Input:toggleGyroEvents) | Allow toggling the accelerometer at runtime. | | [Input:waitEvent (now, deadline)](#Input:waitEvent) | Main event handling. | | [Input:inhibitInputUntil (set\_or\_seconds)](#Input:inhibitInputUntil) | Request all input events to be ignored for some duration. | [Issues](#Issues) ------------------ | | | | --- | --- | | [Input:adjustABS\_SwitchXY-fixme3](#Input:adjustABS_SwitchXY-fixme3) | Crappy event staggering!

The Forma & co repeats every 80ms after a 400ms delay, and 500ms roughly corresponds to a flashing update, so stuff is usually in sync when you release the key. Obvious downside is that this ends up slower than just mashing the key.

A better approach would be an onKeyRelease handler that flushes the Event queue... | Functions --------- **Input:disableRotationMap ()** Setup a rotation\_map that does nothing (for platforms where the events we get are already translated). **Input:open (path, name)** Wrapper for our Lua/C input module's open. Note that we adhere to the "." syntax here for compatibility. The `name` argument is optional, and used for logging purposes only. ### Parameters: * path * name **Input:fdopen (fd, path, name)** Wrapper for our Lua/C input module's fdopen. Note that we adhere to the "." syntax here for compatibility. The `name` argument is optional, and used for logging purposes only. `path` is mandatory, though! ### Parameters: * fd * path * name Make sure we don't open the same device twice. **Input:close (path)** Wrapper for our Lua/C input module's close. Note that we adhere to the "." syntax here for compatibility. ### Parameters: * path **Input:teardown ()** Wrapper for our Lua/C input module's closeAll. Note that we adhere to the "." syntax here for compatibility. **Input:registerEventAdjustHook (hook, hook\_params)** Different device models can implement their own hooks and register them. ### Parameters: * hook * hook\_params **Input:adjustABS\_SwitchXY (ev)** Catalog of predefined hooks. These are _not_ usable directly as hooks, they're just building blocks (c.f., Kobo) ### Parameters: * ev **Input:handleTouchEv (ev)** Parse each touch ev from kernel and build up tev. tev will be sent to GestureDetector:feedEvent Events for a single tap motion from Linux kernel (MT protocol B): MT_TRACK_ID: 0 MT_X: 222 MT_Y: 207 SYN REPORT MT_TRACK_ID: -1 SYN REPORT Notice that each line is a single event. From kernel document: For type B devices, the kernel driver should associate a slot with each identified contact, and use that slot to propagate changes for the contact. Creation, replacement and destruction of contacts is achieved by modifying the C.ABS_MT_TRACKING\_ID of the associated slot. A non-negative tracking id is interpreted as a contact, and the value -1 denotes an unused slot. A tracking id not previously present is considered new, and a tracking id no longer present is considered removed. Since only changes are propagated, the full state of each initiated contact has to reside in the receiving end. Upon receiving an MT event, one simply updates the appropriate attribute of the current slot. ### Parameters: * ev **Input:handleMiscGyroEv (ev)** Accelerometer, in a platform-agnostic, custom format (EV_MSC:MSC_GYRO). (Translation should be done via registerEventAdjustHook in Device implementations). This needs to be called _via handleGyroEv_ in a handleMiscEv implementation (c.f., Kobo, Kindle or PocketBook). ### Parameters: * ev **Input:toggleGyroEvents (toggle)** Allow toggling the accelerometer at runtime. ### Parameters: * toggle **Input:waitEvent (now, deadline)** Main event handling. `now` corresponds to UIManager:getTime() (an fts time), and it's just been updated by UIManager. `deadline` (an fts time) is the absolute deadline imposed by UIManager:handleInput() (a.k.a., our main event loop ^^): it's either nil (meaning block forever waiting for input), or the earliest UIManager deadline (in most cases, that's the next scheduled task, in much less common cases, that's the earliest of UIManager.INPUT_TIMEOUT (currently, only KOSync ever sets it) or UIManager.ZMQ_TIMEOUT if there are pending ZMQs). ### Parameters: * now * deadline On the first iteration of the loop, we don't need to update now, we're following closely (a couple ms at most) behind UIManager. **Input:inhibitInputUntil (set\_or\_seconds)** Request all input events to be ignored for some duration. ### Parameters: * set\_or\_seconds either `true`, in which case a platform-specific delay is chosen, or a duration in seconds (**_int_**). Issues ------ **Input:adjustABS\_SwitchXY-fixme3** Crappy event staggering! The Forma & co repeats every 80ms after a 400ms delay, and 500ms roughly corresponds to a flashing update, so stuff is usually in sync when you release the key. Obvious downside is that this ends up slower than just mashing the key. A better approach would be an onKeyRelease handler that flushes the Event queue... _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * **cacheitem** * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `cacheitem` ================== NOTE: As far as size estimations go, the assumption is that a key, value pair should roughly take two words, and the most common items we cache are Geom-like tables (i.e., 4 key-value pairs). That's generally a low estimation, especially for larger tables, where memory allocation trickery may be happening. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * **device.kobo.nickel\_conf** * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `device.kobo.nickel_conf` ================================ Access and modify values in `Kobo eReader.conf` used by Nickel. Only PowerOptions:FrontLightLevel is currently supported. [Functions](#Functions) ------------------------ | | | | --- | --- | | [NickelConf.frontLightLevel.get ()](#NickelConf.frontLightLevel.get) | Get frontlight level. | | [NickelConf.frontLightState.get ()](#NickelConf.frontLightState.get) | Get frontlight state. | | [NickelConf.colorSetting.get ()](#NickelConf.colorSetting.get) | Get color setting. | | [NickelConf.\_write\_kobo\_conf (re\_Match, key, value, dontcreate)](#NickelConf._write_kobo_conf) | Write Kobo configuration. | | [NickelConf.frontLightLevel.set (new\_intensity)](#NickelConf.frontLightLevel.set) | Set frontlight level. | | [NickelConf.frontLightState.set (new\_state)](#NickelConf.frontLightState.set) | Set frontlight state. | | [NickelConf.colorSetting.set (new\_color)](#NickelConf.colorSetting.set) | Set color setting. | Functions --------- **NickelConf.frontLightLevel.get ()** Get frontlight level. ### Returns: int Frontlight level. **NickelConf.frontLightState.get ()** Get frontlight state. This entry will be missing for devices that do not have a hardware toggle button. We return nil in this case. ### Returns: int Frontlight state (or nil). **NickelConf.colorSetting.get ()** Get color setting. ### Returns: int Color setting. **NickelConf.\_write\_kobo\_conf (re\_Match, key, value, dontcreate)** Write Kobo configuration. ### Parameters: * re\_Match [string](https://www.lua.org/manual/5.1/manual.html#5.4) Lua pattern. * key [string](https://www.lua.org/manual/5.1/manual.html#5.4) Kobo conf key. * value * dontcreate boolean Don't create if key doesn't exist. **NickelConf.frontLightLevel.set (new\_intensity)** Set frontlight level. ### Parameters: * new\_intensity integer **NickelConf.frontLightState.set (new\_state)** Set frontlight state. ### Parameters: * new\_state boolean **NickelConf.colorSetting.set (new\_color)** Set color setting. ### Parameters: * new\_color integer >= 1500 and <= 6400 _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * **dispatcher** * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `dispatcher` =================== This module is responsible for dispatching events. To add a new action an entry must be added to `settingsList` & `dispatcher_menu_order` This can also be done at runtime via [registerAction](../modules/dispatcher.html#Dispatcher:registerAction) (). `settingsList` contains the list of dispatchable settings. Each setting contains: * category: one of: \* none: a direct event call \* arg: a event that expects a gesture object or an argument \* absolutenumber: event that sets a number \* incrementalnumber: event that increments a number & accepts a gesture object \* string: event with a list of arguments to chose from \* configurable: like string but instead of an event it updates the configurable (used by kopt) * event: what to call. * title: for use in ui. * section: under which menu to display (currently: general, device, screen, filemanager, reader, rolling, paging) and optionally * min/max: for number * step: for number * default * args: allowed values for string. * toggle: display name for args * separator: put a separator after in the menu list * configurable: can be parsed from cre/kopt and used to set `document.configurable`. Should not be set manually [Functions](#Functions) ------------------------ | | | | --- | --- | | [Dispatcher:init ()](#Dispatcher:init) | add settings from CreOptions / KoptOptions | | [Dispatcher:registerAction (name, value)](#Dispatcher:registerAction) | Adds settings at runtime. | | [Dispatcher:removeAction (name)](#Dispatcher:removeAction) | Removes settings at runtime. | | [Dispatcher:addSubMenu (caller, menu, location, settings)](#Dispatcher:addSubMenu) | Add a submenu to edit which items are dispatched arguments are:

1) the caller so dispatcher can set the updated flag
2) the table representing the submenu (can be empty)
3) the object (table) in which the settings table is found
4) the name of the settings table


example usage:

Dispatcher:addSubMenu(self, sub_items, self.data, "profile1") | | [Dispatcher:execute (settings, exec\_props)](#Dispatcher:execute) | Calls the events in a settings list arguments are:

1) the settings table
2) execution management table: { qm_show = true\|false} - forcibly show QM / run
{ qm_anchor = ges.pos } - anchor position
{ gesture = ges } - a gestures object | Functions --------- **Dispatcher:init ()** add settings from CreOptions / KoptOptions **Dispatcher:registerAction (name, value)** Adds settings at runtime. ### Parameters: * name the key to use in the table * value a table per settingsList above ### Usage: function Hello:onDispatcherRegisterActions() Dispatcher:registerAction("helloworld\_action", {category="none", event="HelloWorld", title=\_("Hello World"), general=true}) end function Hello:init() self:onDispatcherRegisterActions() end **Dispatcher:removeAction (name)** Removes settings at runtime. ### Parameters: * name the key to use in the table **Dispatcher:addSubMenu (caller, menu, location, settings)** Add a submenu to edit which items are dispatched arguments are: 1) the caller so dispatcher can set the updated flag 2) the table representing the submenu (can be empty) 3) the object (table) in which the settings table is found 4) the name of the settings table example usage: Dispatcher:addSubMenu(self, sub_items, self.data, "profile1") ### Parameters: * caller * menu * location * settings **Dispatcher:execute (settings, exec\_props)** Calls the events in a settings list arguments are: 1) the settings table 2) execution management table: { qm_show = true|false} - forcibly show QM / run { qm_anchor = ges.pos } - anchor position { gesture = ges } - a gestures object ### Parameters: * settings * exec\_props _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * **document.doccache** * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `document.doccache` ========================== ...otherwise, effectively disable the cache by making it single slot... _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * **device.wakeupmgr** * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `device.wakeupmgr` ========================= RTC wakeup interface. Many devices can schedule hardware wakeups with a real time clock alarm. On embedded devices this can typically be easily manipulated by the user through `/sys/class/rtc/rtc0/wakealarm`. Some, like the Kobo Aura H2O, can only schedule wakeups through ioctl. See [ffi.rtc](../modules/ffi.rtc.html#) for implementation details. See also: [https://linux.die.net/man/4/rtc](https://linux.die.net/man/4/rtc) . [Functions](#Functions) ------------------------ | | | | --- | --- | | [WakeupMgr:new (o)](#WakeupMgr:new) | Initiate a WakeupMgr instance. | | [WakeupMgr:addTask (seconds\_from\_now, callback)](#WakeupMgr:addTask) | Add a task to the queue. | | [WakeupMgr:removeTasks (epoch, callback)](#WakeupMgr:removeTasks) | Remove task(s) from queue. | | [WakeupMgr:removeTask (idx)](#WakeupMgr:removeTask) | Variant of [removeTasks](../modules/device.wakeupmgr.html#WakeupMgr:removeTasks)
that will only remove a single task, identified by its task queue index. | | [WakeupMgr:wakeupAction (proximity)](#WakeupMgr:wakeupAction) | Execute wakeup action. | | [WakeupMgr:setWakeupAlarm (epoch, enabled)](#WakeupMgr:setWakeupAlarm) | Set wakeup alarm. | | [WakeupMgr:unsetWakeupAlarm ()](#WakeupMgr:unsetWakeupAlarm) | Unset wakeup alarm. | | [WakeupMgr:getWakeupAlarm ()](#WakeupMgr:getWakeupAlarm) | Get wakealarm as set by us. | | [WakeupMgr:getWakeupAlarmEpoch ()](#WakeupMgr:getWakeupAlarmEpoch) | Get wakealarm epoch as set by us. | | [WakeupMgr:getWakeupAlarmSys ()](#WakeupMgr:getWakeupAlarmSys) | Get RTC wakealarm from system. | | [WakeupMgr:validateWakeupAlarmByProximity (task\_alarm\_epoch, proximity)](#WakeupMgr:validateWakeupAlarmByProximity) | Validate wakeup alarm. | | [WakeupMgr:isWakeupAlarmScheduled ()](#WakeupMgr:isWakeupAlarmScheduled) | Check if a wakeup is scheduled. | [Tables](#Tables) ------------------ | | | | --- | --- | | [WakeupMgr](#WakeupMgr) | WakeupMgr base class. | Functions --------- **WakeupMgr:new (o)** Initiate a WakeupMgr instance. ### Parameters: * o ### Usage: local WakeupMgr = require("device/wakeupmgr") local wakeup\_mgr = WakeupMgr:new{ \-- The default is `/dev/rtc0`, but some devices have more than one RTC. \-- You might therefore need to use `/dev/rtc1`, etc. dev\_rtc = "/dev/rtc0", } **WakeupMgr:addTask (seconds\_from\_now, callback)** Add a task to the queue. ### Parameters: * seconds\_from\_now * callback Make sure we passed valid input, so that stuff doesn't break in fun and interesting ways (especially in removeTasks). **WakeupMgr:removeTasks (epoch, callback)** Remove task(s) from queue. This method removes one or more tasks by either scheduled time or callback. If any tasks are left on exit, the upcoming one will automatically be scheduled (if necessary). ### Parameters: * epoch integer The epoch for when this task is scheduled to wake up. Normally the preferred method for outside callers. * callback integer A scheduled callback function. Store a reference for use with anonymous functions. ### Returns: bool (true if one or more tasks were removed; false otherwise; nil if the task queue is empty). **WakeupMgr:removeTask (idx)** Variant of [removeTasks](../modules/device.wakeupmgr.html#WakeupMgr:removeTasks) that will only remove a single task, identified by its task queue index. ### Parameters: * idx integer Task queue index. Mainly useful within this module. ### Returns: bool (true if a task was removed; false otherwise). **WakeupMgr:wakeupAction (proximity)** Execute wakeup action. This method should be called by the device resume logic in case of a scheduled wakeup. It checks if the wakeup was scheduled by us using [validateWakeupAlarmByProximity](../modules/device.wakeupmgr.html#WakeupMgr:validateWakeupAlarmByProximity) , in which case the task is executed. If necessary, the next upcoming task (if any) is scheduled on exit. ### Parameters: * proximity integer Proximity window to the scheduled wakeup (passed to [validateWakeupAlarmByProximity](../modules/device.wakeupmgr.html#WakeupMgr:validateWakeupAlarmByProximity) ). ### Returns: bool (true if we were truly woken up by the scheduled wakeup; false otherwise; nil if there weren't any tasks scheduled). **WakeupMgr:setWakeupAlarm (epoch, enabled)** Set wakeup alarm. Simple wrapper for [ffi.rtc.setWakeupAlarm](../modules/ffi.rtc.html#RTC:setWakeupAlarm) . ### Parameters: * epoch * enabled **WakeupMgr:unsetWakeupAlarm ()** Unset wakeup alarm. Simple wrapper for [ffi.rtc.unsetWakeupAlarm](../modules/ffi.rtc.html#RTC:unsetWakeupAlarm) . **WakeupMgr:getWakeupAlarm ()** Get wakealarm as set by us. Simple wrapper for [ffi.rtc.getWakeupAlarm](../modules/ffi.rtc.html#RTC:getWakeupAlarm) . **WakeupMgr:getWakeupAlarmEpoch ()** Get wakealarm epoch as set by us. Simple wrapper for [ffi.rtc.getWakeupAlarmEpoch](../modules/ffi.rtc.html#RTC:getWakeupAlarmEpoch) . **WakeupMgr:getWakeupAlarmSys ()** Get RTC wakealarm from system. Simple wrapper for [ffi.rtc.getWakeupAlarmSys](../modules/ffi.rtc.html#RTC:getWakeupAlarmSys) . **WakeupMgr:validateWakeupAlarmByProximity (task\_alarm\_epoch, proximity)** Validate wakeup alarm. Checks if we set the alarm. Simple wrapper for [ffi.rtc.validateWakeupAlarmByProximity](../modules/ffi.rtc.html#RTC:validateWakeupAlarmByProximity) . ### Parameters: * task\_alarm\_epoch * proximity **WakeupMgr:isWakeupAlarmScheduled ()** Check if a wakeup is scheduled. Simple wrapper for [ffi.rtc.isWakeupAlarmScheduled](../modules/ffi.rtc.html#RTC:isWakeupAlarmScheduled) . Tables ------ **WakeupMgr** WakeupMgr base class. ### Fields: * dev\_rtc RTC device * \_task\_queue Table with epoch at which to schedule the task and the function to be scheduled. * rtc The RTC implementation to use, defaults to the RTC module. * dodgy\_rtc If the RTC has trouble with timers further away than UINT16\_MAX (e.g., on i.MX5). _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * **device.sysfs\_light** * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `device.sysfs_light` =========================== _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * **docsettings** * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `docsettings` ==================== This module is responsible for reading and writing `metadata.lua` files in the so-called sidecar directory ([Wikipedia definition](https://en.wikipedia.org/wiki/Sidecar_file) ). [Functions](#Functions) ------------------------ | | | | --- | --- | | [DocSettings:getSidecarDir (doc\_path, force\_location)](#DocSettings:getSidecarDir) | Returns path to sidecar directory (`filename.sdr`). | | [DocSettings:hasSidecarFile (doc\_path)](#DocSettings:hasSidecarFile) | Returns `true` if there is a `metadata.lua` file. | | [DocSettings:findSidecarFile (doc\_path, no\_legacy)](#DocSettings:findSidecarFile) | Returns path of `metadata.lua` file if it exists, or nil. | | [DocSettings:open (doc\_path)](#DocSettings:open) | Opens a document's individual settings (font, margin, dictionary, etc.) | | [DocSettings.openSettingsFile (sidecar\_file)](#DocSettings.openSettingsFile) | Light version of open(). | | [DocSettings:flush (data, no\_custom\_metadata)](#DocSettings:flush) | Serializes settings and writes them to `metadata.lua`. | | [DocSettings:purge (sidecar\_to\_keep, data\_to\_purge)](#DocSettings:purge) | Purges (removes) sidecar directory. | | [DocSettings.removeSidecarDir (dir)](#DocSettings.removeSidecarDir) | Removes sidecar dir iff empty. | | [DocSettings.updateLocation (doc\_path, new\_doc\_path, copy)](#DocSettings.updateLocation) | Updates sdr location for file rename/copy/move/delete operations. | | [DocSettings:findCustomCoverFile (doc\_path)](#DocSettings:findCustomCoverFile) | Returns path to book custom cover file if it exists, or nil. | | [DocSettings:findCustomMetadataFile (doc\_path)](#DocSettings:findCustomMetadataFile) | Returns path to book custom metadata file if it exists, or nil. | Functions --------- **DocSettings:getSidecarDir (doc\_path, force\_location)** Returns path to sidecar directory (`filename.sdr`). Sidecar directory is the file without _last_ suffix. ### Parameters: * doc\_path [string](https://www.lua.org/manual/5.1/manual.html#5.4) path to the document (e.g., `/foo/bar.pdf`) * force\_location [string](https://www.lua.org/manual/5.1/manual.html#5.4) prefer e.g., "hash" or "dir" location over standard "doc", if available ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) path to the sidecar directory (e.g., `/foo/bar.sdr`) **DocSettings:hasSidecarFile (doc\_path)** Returns `true` if there is a `metadata.lua` file. ### Parameters: * doc\_path [string](https://www.lua.org/manual/5.1/manual.html#5.4) path to the document (e.g., `/foo/bar.pdf`) ### Returns: bool **DocSettings:findSidecarFile (doc\_path, no\_legacy)** Returns path of `metadata.lua` file if it exists, or nil. ### Parameters: * doc\_path [string](https://www.lua.org/manual/5.1/manual.html#5.4) path to the document (e.g., `/foo/bar.pdf`) * no\_legacy boolean set to true to skip check of the legacy history file ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) (or nil on failure) **DocSettings:open (doc\_path)** Opens a document's individual settings (font, margin, dictionary, etc.) ### Parameters: * doc\_path [string](https://www.lua.org/manual/5.1/manual.html#5.4) path to the document (e.g., `/foo/bar.pdf`) ### Returns: DocSettings object **DocSettings.openSettingsFile (sidecar\_file)** Light version of open(). Opens a sidecar file or a custom metadata file. Returned object cannot be used to save changes to the sidecar file (flush()). Must be used to save changes to the custom metadata file (flushCustomMetadata()). ### Parameters: * sidecar\_file **DocSettings:flush (data, no\_custom\_metadata)** Serializes settings and writes them to `metadata.lua`. ### Parameters: * data * no\_custom\_metadata **DocSettings:purge (sidecar\_to\_keep, data\_to\_purge)** Purges (removes) sidecar directory. ### Parameters: * sidecar\_to\_keep * data\_to\_purge **DocSettings.removeSidecarDir (dir)** Removes sidecar dir iff empty. ### Parameters: * dir **DocSettings.updateLocation (doc\_path, new\_doc\_path, copy)** Updates sdr location for file rename/copy/move/delete operations. ### Parameters: * doc\_path * new\_doc\_path * copy **DocSettings:findCustomCoverFile (doc\_path)** Returns path to book custom cover file if it exists, or nil. ### Parameters: * doc\_path **DocSettings:findCustomMetadataFile (doc\_path)** Returns path to book custom metadata file if it exists, or nil. ### Parameters: * doc\_path _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * **document.documentregistry** * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `document.documentregistry` ================================== This is a registry for document providers [Functions](#Functions) ------------------------ | | | | --- | --- | | [DocumentRegistry:hasProvider (file, include\_aux)](#DocumentRegistry:hasProvider) | Returns true if file has provider. | | [DocumentRegistry:getProvider (file, include\_aux)](#DocumentRegistry:getProvider) | Returns the preferred registered document handler or fallback provider. | | [DocumentRegistry:getProviders (file)](#DocumentRegistry:getProviders) | Returns the registered document handlers. | | [DocumentRegistry:getExtensions ()](#DocumentRegistry:getExtensions) | Get mapping of file extensions to providers | | [DocumentRegistry:setProvider (file, all)](#DocumentRegistry:setProvider) | Sets the preferred registered document handler. | | [DocumentRegistry:openDocument (file, provider)](#DocumentRegistry:openDocument) | Returns a new Document instance on success | | [DocumentRegistry:closeDocument (file)](#DocumentRegistry:closeDocument) | Does _NOT_ finalize a Document instance, call its :close() instead if that's what you're looking for! (i.e., nothing but Document:close should call this!) | | [DocumentRegistry:getReferenceCount (file)](#DocumentRegistry:getReferenceCount) | Queries the current refcount for a given file | [Issues](#Issues) ------------------ | | | | --- | --- | | [DocumentRegistry:getProviders-todo4](#DocumentRegistry:getProviders-todo4) | some implementation based on mime types? | Functions --------- **DocumentRegistry:hasProvider (file, include\_aux)** Returns true if file has provider. ### Parameters: * file [string](https://www.lua.org/manual/5.1/manual.html#5.4) * include\_aux boolean include auxiliary (non-document) providers ### Returns: boolean **DocumentRegistry:getProvider (file, include\_aux)** Returns the preferred registered document handler or fallback provider. ### Parameters: * file [string](https://www.lua.org/manual/5.1/manual.html#5.4) * include\_aux boolean include auxiliary (non-document) providers ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) provider **DocumentRegistry:getProviders (file)** Returns the registered document handlers. ### Parameters: * file [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) providers, or nil **DocumentRegistry:getExtensions ()** Get mapping of file extensions to providers ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) mapping file extensions to a list of providers **DocumentRegistry:setProvider (file, all)** Sets the preferred registered document handler. ### Parameters: * file [string](https://www.lua.org/manual/5.1/manual.html#5.4) * all boolean **DocumentRegistry:openDocument (file, provider)** Returns a new Document instance on success ### Parameters: * file * provider force a GC, so that any previous document used memory can be reused immediately by this new document without having to wait for the next regular gc. The second call may help reclaming more memory. **DocumentRegistry:closeDocument (file)** Does _NOT_ finalize a Document instance, call its :close() instead if that's what you're looking for! (i.e., nothing but Document:close should call this!) ### Parameters: * file **DocumentRegistry:getReferenceCount (file)** Queries the current refcount for a given file ### Parameters: * file Issues ------ **DocumentRegistry:getProviders-todo4** some implementation based on mime types? _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * **document.koptinterface** * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `document.koptinterface` =============================== Interface to k2pdfoptlib backend. [Functions](#Functions) ------------------------ | | | | --- | --- | | [KoptInterface:createContext (doc, pageno, bbox)](#KoptInterface:createContext) | Get reflow context. | | [KoptInterface:getAutoBBox (doc, pageno)](#KoptInterface:getAutoBBox) | Auto detect bbox. | | [KoptInterface:getSemiAutoBBox (doc, pageno)](#KoptInterface:getSemiAutoBBox) | Detect bbox within user restricted bbox. | | [KoptInterface:getCachedContext (doc, pageno)](#KoptInterface:getCachedContext) | Get cached koptcontext for a certain page. | | [KoptInterface:getPageDimensions (doc, pageno, zoom, rotation)](#KoptInterface:getPageDimensions) | Get page dimensions. | | [KoptInterface:getRFPageDimensions (doc, pageno, zoom, rotation)](#KoptInterface:getRFPageDimensions) | Get reflowed page dimensions. | | [KoptInterface:getCoverPageImage (doc)](#KoptInterface:getCoverPageImage) | Get first page image. | | [KoptInterface:renderReflowedPage (doc, pageno, rect, zoom, rotation)](#KoptInterface:renderReflowedPage) | Render reflowed page into tile cache. | | [KoptInterface:renderOptimizedPage (doc, pageno, rect, zoom, rotation, hinting)](#KoptInterface:renderOptimizedPage) | Render optimized page into tile cache. | | [KoptInterface:hintReflowedPage (doc, pageno, zoom, rotation, gamma, hinting)](#KoptInterface:hintReflowedPage) | Render reflowed page into cache in background thread. | | [KoptInterface:drawContextPage (doc, target, x, y, rect, pageno, zoom, rotation)](#KoptInterface:drawContextPage) | Draw cached tile pixels into target blitbuffer. | | [KoptInterface:getReflowedTextBoxes (doc, pageno)](#KoptInterface:getReflowedTextBoxes) | Get text boxes in reflowed page via rectmaps in koptcontext. | | [KoptInterface:getNativeTextBoxes (doc, pageno)](#KoptInterface:getNativeTextBoxes) | Get text boxes in native page via rectmaps in koptcontext. | | [KoptInterface:getReflowedTextBoxesFromScratch (doc, pageno)](#KoptInterface:getReflowedTextBoxesFromScratch) | Get text boxes in reflowed page via optical method. | | [KoptInterface:getNativeTextBoxesFromScratch (doc, pageno)](#KoptInterface:getNativeTextBoxesFromScratch) | Get text boxes in native page via optical method. | | [KoptInterface:getPageBlock (doc, pageno, x, y)](#KoptInterface:getPageBlock) | Get page regions in native page via optical method. | | [KoptInterface:getOCRWord (doc, pageno, wbox)](#KoptInterface:getOCRWord) | Get word from OCR providing selected word box. | | [KoptInterface:getReflewOCRWord (doc, pageno, rect)](#KoptInterface:getReflewOCRWord) | Get word from OCR in reflew page. | | [KoptInterface:getNativeOCRWord (doc, pageno, rect)](#KoptInterface:getNativeOCRWord) | Get word from OCR in native page. | | [KoptInterface:getOCRText (doc, pageno, tboxes)](#KoptInterface:getOCRText) | Get text from OCR providing selected text boxes. | | [KoptInterface:getWordFromBoxes (boxes, pos)](#KoptInterface:getWordFromBoxes) | Get word and word box around `pos`. | | [KoptInterface:getTextFromBoxes (boxes, pos0, pos1)](#KoptInterface:getTextFromBoxes) | Get text and text boxes between `pos0` and `pos1`. | | [KoptInterface:getWordFromPosition (doc, pos)](#KoptInterface:getWordFromPosition) | Get word and word box from `doc` position. | | [KoptInterface:getWordFromReflowPosition (doc, boxes, pos)](#KoptInterface:getWordFromReflowPosition) | Get word and word box from position in reflowed page. | | [KoptInterface:getWordFromNativePosition (doc, boxes, pos)](#KoptInterface:getWordFromNativePosition) | Get word and word box from position in native page. | | [KoptInterface:getLinkFromPosition (doc, pageno, pos)](#KoptInterface:getLinkFromPosition) | Get link from position in screen page. | | [KoptInterface:nativeToReflowPosTransform (doc, pageno, pos)](#KoptInterface:nativeToReflowPosTransform) | Transform position in native page to reflowed page. | | [KoptInterface:reflowToNativePosTransform (doc, pageno, abs\_pos, rel\_pos)](#KoptInterface:reflowToNativePosTransform) | Transform position in reflowed page to native page. | | [KoptInterface:getTextFromPositions (doc, pos0, pos1)](#KoptInterface:getTextFromPositions) | Get text and text boxes from screen positions. | | [KoptInterface:getTextFromReflowPositions (doc, native\_boxes, pos0, pos1)](#KoptInterface:getTextFromReflowPositions) | Get text and text boxes from screen positions for reflowed page. | | [KoptInterface:getTextFromNativePositions (doc, native\_boxes, pos0, pos1)](#KoptInterface:getTextFromNativePositions) | Get text and text boxes from screen positions for native page. | | [KoptInterface:getPageBoxesFromPositions (doc, pageno, ppos0, ppos1)](#KoptInterface:getPageBoxesFromPositions) | Get text boxes from page positions. | | [KoptInterface:comparePositions (doc, ppos1, ppos2)](#KoptInterface:comparePositions) | Compare positions within one page. | | [KoptInterface:nativeToPageRectTransform (doc, pageno, rect)](#KoptInterface:nativeToPageRectTransform) | Get page rect from native rect. | | [KoptInterface:logReflowDuration (pageno, dur)](#KoptInterface:logReflowDuration) | Log reflow duration. | Functions --------- **KoptInterface:createContext (doc, pageno, bbox)** Get reflow context. ### Parameters: * doc * pageno * bbox Now koptcontext keeps track of its dst bitmap reflowed by libk2pdfopt. So there is no need to check background context when creating new context. **KoptInterface:getAutoBBox (doc, pageno)** Auto detect bbox. ### Parameters: * doc * pageno **KoptInterface:getSemiAutoBBox (doc, pageno)** Detect bbox within user restricted bbox. ### Parameters: * doc * pageno use manual bbox **KoptInterface:getCachedContext (doc, pageno)** Get cached koptcontext for a certain page. If the context doesn't exist in cache, make a new context and reflow the src page immediately, or wait for the background thread with reflowed context. ### Parameters: * doc * pageno **KoptInterface:getPageDimensions (doc, pageno, zoom, rotation)** Get page dimensions. ### Parameters: * doc * pageno * zoom * rotation **KoptInterface:getRFPageDimensions (doc, pageno, zoom, rotation)** Get reflowed page dimensions. ### Parameters: * doc * pageno * zoom * rotation **KoptInterface:getCoverPageImage (doc)** Get first page image. ### Parameters: * doc **KoptInterface:renderReflowedPage (doc, pageno, rect, zoom, rotation)** Render reflowed page into tile cache. Inherited from common document interface. ### Parameters: * doc * pageno * rect * zoom * rotation **KoptInterface:renderOptimizedPage (doc, pageno, rect, zoom, rotation, hinting)** Render optimized page into tile cache. Inherited from common document interface. ### Parameters: * doc * pageno * rect * zoom * rotation * hinting **KoptInterface:hintReflowedPage (doc, pageno, zoom, rotation, gamma, hinting)** Render reflowed page into cache in background thread. This method returns immediately, leaving the precache flag on in context. Subsequent usage of this context should wait for the precache flag off by calling self:waitForContext(kctx) Inherited from common document interface. ### Parameters: * doc * pageno * zoom * rotation * gamma * hinting **KoptInterface:drawContextPage (doc, target, x, y, rect, pageno, zoom, rotation)** Draw cached tile pixels into target blitbuffer. Inherited from common document interface. ### Parameters: * doc * target * x * y * rect * pageno * zoom * rotation **KoptInterface:getReflowedTextBoxes (doc, pageno)** Get text boxes in reflowed page via rectmaps in koptcontext. ### Parameters: * doc * pageno **KoptInterface:getNativeTextBoxes (doc, pageno)** Get text boxes in native page via rectmaps in koptcontext. ### Parameters: * doc * pageno **KoptInterface:getReflowedTextBoxesFromScratch (doc, pageno)** Get text boxes in reflowed page via optical method. Done by OCR pre-processing in Tesseract and Leptonica. ### Parameters: * doc * pageno **KoptInterface:getNativeTextBoxesFromScratch (doc, pageno)** Get text boxes in native page via optical method. Done by OCR pre-processing in Tesseract and Leptonica. ### Parameters: * doc * pageno **KoptInterface:getPageBlock (doc, pageno, x, y)** Get page regions in native page via optical method. ### Parameters: * doc * pageno * x * y **KoptInterface:getOCRWord (doc, pageno, wbox)** Get word from OCR providing selected word box. ### Parameters: * doc * pageno * wbox **KoptInterface:getReflewOCRWord (doc, pageno, rect)** Get word from OCR in reflew page. ### Parameters: * doc * pageno * rect **KoptInterface:getNativeOCRWord (doc, pageno, rect)** Get word from OCR in native page. ### Parameters: * doc * pageno * rect **KoptInterface:getOCRText (doc, pageno, tboxes)** Get text from OCR providing selected text boxes. ### Parameters: * doc * pageno * tboxes **KoptInterface:getWordFromBoxes (boxes, pos)** Get word and word box around `pos`. ### Parameters: * boxes * pos **KoptInterface:getTextFromBoxes (boxes, pos0, pos1)** Get text and text boxes between `pos0` and `pos1`. ### Parameters: * boxes * pos0 * pos1 **KoptInterface:getWordFromPosition (doc, pos)** Get word and word box from `doc` position. ### Parameters: * doc * pos **KoptInterface:getWordFromReflowPosition (doc, boxes, pos)** Get word and word box from position in reflowed page. ### Parameters: * doc * boxes * pos **KoptInterface:getWordFromNativePosition (doc, boxes, pos)** Get word and word box from position in native page. ### Parameters: * doc * boxes * pos **KoptInterface:getLinkFromPosition (doc, pageno, pos)** Get link from position in screen page. ### Parameters: * doc * pageno * pos **KoptInterface:nativeToReflowPosTransform (doc, pageno, pos)** Transform position in native page to reflowed page. ### Parameters: * doc * pageno * pos **KoptInterface:reflowToNativePosTransform (doc, pageno, abs\_pos, rel\_pos)** Transform position in reflowed page to native page. ### Parameters: * doc * pageno * abs\_pos * rel\_pos **KoptInterface:getTextFromPositions (doc, pos0, pos1)** Get text and text boxes from screen positions. ### Parameters: * doc * pos0 * pos1 **KoptInterface:getTextFromReflowPositions (doc, native\_boxes, pos0, pos1)** Get text and text boxes from screen positions for reflowed page. ### Parameters: * doc * native\_boxes * pos0 * pos1 **KoptInterface:getTextFromNativePositions (doc, native\_boxes, pos0, pos1)** Get text and text boxes from screen positions for native page. ### Parameters: * doc * native\_boxes * pos0 * pos1 **KoptInterface:getPageBoxesFromPositions (doc, pageno, ppos0, ppos1)** Get text boxes from page positions. ### Parameters: * doc * pageno * ppos0 * ppos1 **KoptInterface:comparePositions (doc, ppos1, ppos2)** Compare positions within one page. Returns 1 if positions are ordered (if ppos2 is after ppos1), -1 if not, 0 if same. Positions of the word boxes containing ppos1 and ppos2 are compared. ### Parameters: * doc * ppos1 * ppos2 **KoptInterface:nativeToPageRectTransform (doc, pageno, rect)** Get page rect from native rect. ### Parameters: * doc * pageno * rect **KoptInterface:logReflowDuration (pageno, dur)** Log reflow duration. ### Parameters: * pageno * dur _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * **dump** * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `dump` ============= A simple serialization function which won't do uservalues, functions, or loops. If you need a more full-featured variant, serpent is available in ffi/serpent ;). [Functions](#Functions) ------------------------ | | | | --- | --- | | [dump (data, max\_lv)](#dump) | Serializes whatever is in `data` to a string that is parseable by Lua. | Functions --------- **dump (data, max\_lv)** Serializes whatever is in `data` to a string that is parseable by Lua. You can optionally specify a maximum recursion depth in `max_lv`. ### Parameters: * data the object you want serialized (table, string, number, boolean, nil) * max\_lv optional maximum recursion depth _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * **ffi.blitbuffer** * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.blitbuffer` ======================= Generic blitbuffer/GFX stuff that works on memory buffers _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * **ffi.crypto** * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.crypto` =================== LuaJIT FFI wrapper for libcrypto (OpenSSL). _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * **ffi.framebuffer** * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.framebuffer` ======================== Framebuffer API. This will be extended by implementations of this API. [Functions](#Functions) ------------------------ | | | | --- | --- | | [fb:scaleByDPI (dp)](#fb:scaleByDPI) | Calculate pixel from density-independent pixel | | [fb:getScreenMode ()](#fb:getScreenMode) | This reflects how the screen _looks_ like, not the screen layout relative to its native orientation... | | [fb:getScreenOrientation ()](#fb:getScreenOrientation) | This reflects the current layout in terms of _rotation_ modes | Functions --------- **fb:scaleByDPI (dp)** Calculate pixel from density-independent pixel ### Parameters: * dp integer density-independent pixel ### Returns: int pixel **fb:getScreenMode ()** This reflects how the screen _looks_ like, not the screen layout relative to its native orientation... **fb:getScreenOrientation ()** This reflects the current layout in terms of _rotation_ modes _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * **ffi.freetype** * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.freetype` ===================== Freetype library interface (text rendering) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * **ffi.jpeg** * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.jpeg` ================= Module for JPEG decoding/encoding. This is a LuaJIT FFI wrapper for turbojpeg. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * **ffi.koptcontext** * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.koptcontext` ======================== Leptonica cheatsheet: \-- Data structures: PIX \-- basic data structure - stores image BOX \-- stores rectangle (x, y, w, h) BOXA \-- array of BOX NUMA \-- array of numbers \-- Functions: \-- note that all of them take/return pointers, or null/nil on failure pixDestroy(pix) \-- free memory from PIX boxDestroy(box) \-- free memory from BOX selDestroy(sel) \-- free memory from SEL boxaDestroy(boxa) \-- free memory from BOXA numaGetIValue(nai, counter\_w, counter\_l) \-- returns int value from NUMA pixGetWidth(pix) \-- return pix width pixGetHeight(pix) \-- return pix height pixConvertTo32(pix) \-- converts pix to 32bpp boxaCombineOverlaps(boxa) \-- return intersection of all box in a boxa boxCreate(x, y, w, h) \-- create box with given dimensions boxaGetCount(boxa) \-- get number of elements in boxa array \-- get element from BOXA flag can be C.L\_COPY (creates new copy) or \-- C.L\_CLONE (returns ref-counted handle) boxaGetBox(boxa, index, flag) \-- add box to boxa array, flag can be C.L\_INSERT, or C.L\_COPY boxaAddBox(boxa, box, flag) \-- adjust box's size by given deltas and write it to boxd boxAdjustSides(boxd, boxs, d\_left, d\_right, d\_top, d\_bottom) \-- returns boxa where each element intersects with box, \-- or is removed if it doesn't intersect boxaClipToBox(boxa, box) \-- returns intersection of both box, or null if they don't intersect boxOverlapRegion(box, box) \-- returns new black-white PIX, \-- if the source pixel is < threshold, \-- resulting pixel is 1 (black), \-- otherwise 0 (white) pixThresholdToBinary(pix, threshold) \-- returns 0 on success and 1 on failure, output\_\* are PIX pixGetRegionsBinary(input\_pix, output\_halftonemask, output\_textline\_mask, output\_textblock\_mask, debug) \-- draw boxa elements in random color with given width pixDrawBoxaRandom(pix, boxa, width) \-- creates png from pix, useful for debugging pixWritePng(path, pix, gamma) \-- multiplies box part of pixs by color and writes it to pixd pixMultiplyByColor(pixd, pixs, box, color) \-- converts float\_array to NUMA, flag is either C.L\_INSERT or C.L\_COPY numaCreateFromFArray(float\_array, size, flag) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * **ffi.loadlib** * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.loadlib` ==================== Helper for loading native libraries. **Example:** local sdl = ffi.loadlib("SDL2-2.0", 0, "SDL2-2.0", nil, "SDL2", nil) Will search `lib_search_path` for the following candidates on Linux: `libSDL2-2.0.so.0`, `libSDL2-2.0.so`, `libSDL2.so`. The first one found will be loaded with `ffi.load`, falling back to the first candidate otherwise (which should be a versioned library to ensure ABI compatibility). [Functions](#Functions) ------------------------ | | | | --- | --- | | [ffi.loadlib (...)](#ffi.loadlib) | Load a native library. | Functions --------- **ffi.loadlib (...)** Load a native library. ### Parameters: * ... list of candidates (library name, version) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * **ffi.png** * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.png` ================ Module for PNG decoding/encoding. Currently, this is a LuaJIT FFI wrapper for lodepng lib. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * **ffi.md5** * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.md5` ================ MD5 hash library. Deprecated except for sumFile. Use sha2 instead. [Functions](#Functions) ------------------------ | | | | --- | --- | | [sumFile (filename)](#sumFile) | Calculate md5 sum for a file. | Functions --------- **sumFile (filename)** Calculate md5 sum for a file. ### Parameters: * filename [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) md5 sum in Lua string _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * **ffi.mupdf** * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.mupdf` ================== MuPDF API This is a FFI wrapper for what was a Lua-based API in the past Some kind of C wrapper is needed for muPDF since muPDF uses a setjmp/longjmp based approach to error/exception handling. That's one of the very few things we can't deal with using LuaJIT's FFI. [Functions](#Functions) ------------------------ | | | | --- | --- | | [openDocument (filename)](#openDocument) | Opens a document. | | [renderImage (data, size, width, height)](#renderImage) | Renders image data. | | [renderImageFile (filename, width, height)](#renderImageFile) | Renders image file. | | [scaleBlitBuffer (bb, width, height)](#scaleBlitBuffer) | Scales a blitbuffer. | [Issues](#Issues) ------------------ | | | | --- | --- | | [ffi.mupdf-fixme16](#ffi.mupdf-fixme16) | : Don't make cache\_size too low, at least not until we bump MµPDF,

as there's a pernicious issue that corrupts its store cache on overcommit on old versions.
c.f., https://github.com/koreader/koreader/issues/7627
(FZ_STORE_DEFAULT is 256MB, we used to set it to 8MB).
And when we bump MµPDF, it'll likely have *more* stuff to store in there,
so, don't make that too low, period ;).
NOTE: Revisit when we bump MµPDF by doing a few tests with the tracing memory allocators,
as even 32MB is likely to be too conservative. | Functions --------- **openDocument (filename)** Opens a document. ### Parameters: * filename **renderImage (data, size, width, height)** Renders image data. ### Parameters: * data * size * width * height **renderImageFile (filename, width, height)** Renders image file. ### Parameters: * filename * width * height **scaleBlitBuffer (bb, width, height)** Scales a blitbuffer. MµPDF's scaling is of much better quality than the very naive implementation in blitbuffer.lua. (see fz_scale_pixmap\_cached() in mupdf/source/fitz/draw-scale-simple.c). Same arguments as BlitBuffer:scale() for easy replacement. Unlike BlitBuffer:scale(), this _ignores_ the blitbuffer's rotation (i.e., where possible, we simply wrap the BlitBuffer's data in a fitz pixmap, with no data copy, so the buffer's _native_ memory layout is followed). If you actually want to preserve the rotation, you'll have to fudge with the width & height arguments and tweak the returned buffer's rotation flag, or go through a temporary copy to ensure that the buffer's memory is laid out accordingly. ### Parameters: * bb * width * height We need first to convert our BlitBuffer to a pixmap Issues ------ **ffi.mupdf-fixme16** : Don't make cache\_size too low, at least not until we bump MµPDF, as there's a pernicious issue that corrupts its store cache on overcommit on old versions. c.f., https://github.com/koreader/koreader/issues/7627 (FZ_STORE_DEFAULT is 256MB, we used to set it to 8MB). And when we bump MµPDF, it'll likely have *more* stuff to store in there, so, don't make that too low, period ;). NOTE: Revisit when we bump MµPDF by doing a few tests with the tracing memory allocators, as even 32MB is likely to be too conservative. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * **ffi.rtc** * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.rtc` ================ Module for interfacing with the RTC (real time clock). This module provides the ability to schedule wakeups through RTC. See [http://man7.org/linux/man-pages/man4/rtc.4.html](http://man7.org/linux/man-pages/man4/rtc.4.html) for technical details. Things to keep in mind: the RTC tracks time in UTC. So do we, as the API only passes around what amounts to time\_t values, i.e., a Posix epoch, which is intrinsically UTC. [Functions](#Functions) ------------------------ | | | | --- | --- | | [RTC:secondsFromNowToEpoch (seconds\_from\_now)](#RTC:secondsFromNowToEpoch) | Adds seconds to epoch. | | [RTC:toggleAlarmInterrupt (enabled)](#RTC:toggleAlarmInterrupt) | Enable/Disable the alarm interrupt. | | [RTC:setWakeupAlarm (Epoch)](#RTC:setWakeupAlarm) | Set wakeup alarm. | | [RTC:unsetWakeupAlarm ()](#RTC:unsetWakeupAlarm) | Unset wakeup alarm. | | [RTC:getWakeupAlarm ()](#RTC:getWakeupAlarm) | Get a copy of the wakealarm we set (if any). | | [RTC:getWakeupAlarmEpoch ()](#RTC:getWakeupAlarmEpoch) | Return the timestamp of the alarm we set (if any). | | [RTC:getWakeupAlarmSys ()](#RTC:getWakeupAlarmSys) | Get RTC wakealarm from system. | | [RTC:readHardwareClock ()](#RTC:readHardwareClock) | Get RTC clock from system. | | [RTC:validateWakeupAlarmByProximity (task\_alarm, proximity)](#RTC:validateWakeupAlarmByProximity) | Checks if the alarm we set matches the system alarm as well as the current time. | | [RTC:isWakeupAlarmScheduled ()](#RTC:isWakeupAlarmScheduled) | Checks if we scheduled a wakeup alarm. | | [RTC:HCToSys ()](#RTC:HCToSys) | Sets the system clock based on the hardware clock. | Functions --------- **RTC:secondsFromNowToEpoch (seconds\_from\_now)** Adds seconds to epoch. ### Parameters: * seconds\_from\_now integer Number of seconds. ### Returns: int (cdata) Epoch (UTC). **RTC:toggleAlarmInterrupt (enabled)** Enable/Disable the alarm interrupt. The use of RTC_WKALM_SET allows us to bypass the need for RTC_AIE_\* calls, thanks to the enabled field in the rtc_wkalrm struct. Busybox rtcwake still does an RTC_AIE_OFF when resuming from an alarm wakeup, as does Nickel when powering off. In this scenario, the modern util-linux rtcwake, which never uses legacy RTC_ALM_SET calls, instead uses RTC_WKALM_SET filled from RTC_WKALM\_RD but with enabled set to 0. ### Parameters: * enabled ### Returns: 1. bool Success. 2. re Error code (if any). 3. err Error string (if any). **RTC:setWakeupAlarm (Epoch)** Set wakeup alarm. If you want to set the alarm to a certain amount of time from now, you can process your value with [secondsFromNowToEpoch](../modules/ffi.rtc.html#RTC:secondsFromNowToEpoch) . ### Parameters: * Epoch integer (UTC). ### Returns: 1. bool Success. 2. re Error code (if any). 3. err Error string (if any). **RTC:unsetWakeupAlarm ()** Unset wakeup alarm. **RTC:getWakeupAlarm ()** Get a copy of the wakealarm we set (if any). This value is compared with [getWakeupAlarmSys](../modules/ffi.rtc.html#RTC:getWakeupAlarmSys) in [validateWakeupAlarmByProximity](../modules/ffi.rtc.html#RTC:validateWakeupAlarmByProximity) . ### Returns: tm (time struct) **RTC:getWakeupAlarmEpoch ()** Return the timestamp of the alarm we set (if any). ### Returns: Epoch (UTC) **RTC:getWakeupAlarmSys ()** Get RTC wakealarm from system. ### Returns: tm (time struct) **RTC:readHardwareClock ()** Get RTC clock from system. ### Returns: tm (time struct) **RTC:validateWakeupAlarmByProximity (task\_alarm, proximity)** Checks if the alarm we set matches the system alarm as well as the current time. ### Parameters: * task\_alarm * proximity In principle alarm time and current time should match within a second, but let's be absurdly generous and assume anything within 30 is a match. In practice, Kobo's suspend() schedules check_unexpected_wakeup 15s _after_ the actual wakeup, so we need to account for at least that much ;). **RTC:isWakeupAlarmScheduled ()** Checks if we scheduled a wakeup alarm. ### Returns: bool **RTC:HCToSys ()** Sets the system clock based on the hardware clock. (e.g., hwclock --hctosys). Heavily inspired by busybox's hwclock applet. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * **ffi.sdl2\_0** * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.sdl2_0` =================== Module for interfacing SDL 2.0 video/input facilities This module is intended to provide input/output facilities on a typical desktop (rather than a dedicated e-ink reader, for which there would probably be raw framebuffer/input device access instead). _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * **ffi.utf8proc** * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.utf8proc` ===================== Module for utf8 string operations. This is a LuaJIT FFI wrapper for utf8proc. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Utf8Proc.lowercase (str, normalize)](#Utf8Proc.lowercase) | Lowercases an utf8-encoded string | | [Utf8Proc.normalize\_NFC (str)](#Utf8Proc.normalize_NFC) | Normalizes an utf8-encoded string | | [Utf8Proc.count (str)](#Utf8Proc.count) | Counts codepoints in an utf8-encoded string | Functions --------- **Utf8Proc.lowercase (str, normalize)** Lowercases an utf8-encoded string ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) string to lowercase * normalize boolean normalizes the string during operation ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) the lowercased string **Utf8Proc.normalize\_NFC (str)** Normalizes an utf8-encoded string ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) string to lowercase ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) the normalized string **Utf8Proc.count (str)** Counts codepoints in an utf8-encoded string ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) to count codepoints in ### Returns: (int, bool) number of codepoints, operation successfull _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * **ffi.util** * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.util` ================= Module for various utility functions. [Functions](#Functions) ------------------------ | | | | --- | --- | | [copyFile (from, to)](#copyFile) | Copies file. | | [joinPath (path1, path2)](#joinPath) | Joins paths. | | [purgeDir (dir)](#purgeDir) | Purges directory. | | [execute (...)](#execute) | Executes child process. | | [runInSubProcess (func, with\_pipe, double\_fork)](#runInSubProcess) | Run lua code (func) in a forked subprocess

With with\_pipe=true, sets up a pipe for communication from children towards parent. | | [isSubProcessDone (pid, wait)](#isSubProcessDone) | Collect subprocess so it does not become a zombie. | | [terminateSubProcess (pid)](#terminateSubProcess) | Terminate subprocess pid by sending SIGKILL | | [getNonBlockingReadSize (fd\_or\_luafile)](#getNonBlockingReadSize) | Returns the length of data that can be read immediately without blocking | | [writeToFD (fd, data, close\_fd)](#writeToFD) | Write data to file descriptor, and optionally close it when done

May block if data is large until the other end has read it. | | [writeToSysfs (val, file)](#writeToSysfs) | Simple wrapper to write a string (will be coerced if not) to a file (mainly aimed at sysfs/procfs knobs). | | [readAllFromFD (fd)](#readAllFromFD) | Read all data from file descriptor, and close it. | | [fsyncOpenedFile (fd\_or\_luafile, sync\_metadata)](#fsyncOpenedFile) | Ensure content written to lua file or fd is flushed to the storage device. | | [fsyncDirectory (path)](#fsyncDirectory) | Ensure directory content updates are flushed to the storage device. | | [utf8charcode (charstring)](#utf8charcode) | Gets UTF-8 charcode. | | [multiByteToUTF8 (str, codepage)](#multiByteToUTF8) | Converts multibyte string to utf-8 encoded string on Windows. | | [isAndroid ()](#isAndroid) | Returns true if Android. | | [loadSDL2 ()](#loadSDL2) | Returns SDL2 library | | [idiv (a, b)](#idiv) | Division with integer result. | | [template (str, ...)](#template) | The util.template function allows for better translations through dynamic positioning of place markers. | Functions --------- **copyFile (from, to)** Copies file. ### Parameters: * from * to **joinPath (path1, path2)** Joins paths. NOTE: If `path2` is an absolute path, then this function ignores `path1` and returns `path2` directly. ### Parameters: * path1 * path2 **purgeDir (dir)** Purges directory. ### Parameters: * dir **execute (...)** Executes child process. ### Parameters: * ... **runInSubProcess (func, with\_pipe, double\_fork)** Run lua code (func) in a forked subprocess With with_pipe=true, sets up a pipe for communication from children towards parent. func is called with the child pid as 1st argument, and, if with_pipe: a fd for writting This function returns (to parent): the child pid, and, if with_pipe: a fd for reading what the child wrote if double_fork: do a double fork so the child gets reparented to init, ensuring automatic reaping of zombies. NOTE: In this case, the pid returned will *already* have been reaped, making it fairly useless. This means you do NOT have to call isSubProcessDone on it. It is safe to do so, though, it'll just immediately return success, as waitpid will return -1 w/ an ECHILD errno. NOTE: Assumes the target platform is POSIX compliant. ### Parameters: * func * with\_pipe * double\_fork **isSubProcessDone (pid, wait)** Collect subprocess so it does not become a zombie. This does not block, unless `wait` is `true`. Returns true if process was collected or has already exited, false if process is still running. ### Parameters: * pid * wait **terminateSubProcess (pid)** Terminate subprocess pid by sending SIGKILL ### Parameters: * pid **getNonBlockingReadSize (fd\_or\_luafile)** Returns the length of data that can be read immediately without blocking Accepts a low-level file descriptor, or a higher level lua file object returns 0 if not readable yet, otherwise len of available data returns nil when unsupported: caller may read (with possible blocking) Caveats with pipes: returns 0 too if other side of pipe has exited without writing anything ### Parameters: * fd\_or\_luafile **writeToFD (fd, data, close\_fd)** Write data to file descriptor, and optionally close it when done May block if data is large until the other end has read it. If data fits into kernel pipe buffer, it can return before the other end has started reading it. ### Parameters: * fd * data * close\_fd **writeToSysfs (val, file)** Simple wrapper to write a string (will be coerced if not) to a file (mainly aimed at sysfs/procfs knobs). ### Parameters: * val NOTE * file We do things by hand via ffi, because io.write uses fwrite, which isn't a great fit for procfs/sysfs (e.g., we lose failure cases like EBUSY, as it only reports failures to write to the _stream_, not to the disk/file!). **readAllFromFD (fd)** Read all data from file descriptor, and close it. This blocks until remote side has closed its side of the fd ### Parameters: * fd **fsyncOpenedFile (fd\_or\_luafile, sync\_metadata)** Ensure content written to lua file or fd is flushed to the storage device. Accepts a low-level file descriptor, or a higher level lua file object, which must still be opened (call :close() only after having called this). If optional parameter sync\_metadata is true, use fsync() to also flush file metadata (timestamps...), otherwise use fdatasync() to only flush file content and file size. Returns true if syscall successful See https://stackoverflow.com/questions/37288453/calling-fsync2-after-close2 ### Parameters: * fd\_or\_luafile * sync\_metadata **fsyncDirectory (path)** Ensure directory content updates are flushed to the storage device. Accepts the directory path as a string, or a file path (from which we can deduce the directory to sync). Returns true if syscall successful See http://blog.httrack.com/blog/2013/11/15/everything-you-always-wanted-to-know-about-fsync/ ### Parameters: * path **utf8charcode (charstring)** Gets UTF-8 charcode. See unicodeCodepointToUtf8 in frontend/util for an encoder. ### Parameters: * charstring **multiByteToUTF8 (str, codepage)** Converts multibyte string to utf-8 encoded string on Windows. ### Parameters: * str * codepage if codepage is not provided we will query the system codepage **isAndroid ()** Returns true if Android. For now, we just check if the "android" module can be loaded. **loadSDL2 ()** Returns SDL2 library **idiv (a, b)** Division with integer result. ### Parameters: * a * b **template (str, ...)** The util.template function allows for better translations through dynamic positioning of place markers. The range of place markers runs from %1 to %99, but normally no more than two or three should be required. There are no provisions for escaping place markers. ### Parameters: * str * ... ### Usage: output = util.template( \_("Hello %1, welcome to %2."), name, company ) This function was inspired by Qt: _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * **ffi.webp** * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.webp` ================= Module for WebP decoding. This is a LuaJIT FFI wrapper for libwebp. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * **ffi.zipwriter** * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.zipwriter` ====================== Zip packing workflow & code from luarocks' zip.lua : https://github.com/luarocks/luarocks/blob/master/src/luarocks/tools/zip.lua Modified to not require lua-zlib (we can wrap zlib with ffi) cf: http://luajit.org/ext_ffi_tutorial.html, which uses zlib as an example ! Simplified to take filename and content from strings and not from disk [Functions](#Functions) ------------------------ | | | | --- | --- | | [ZipWriter:\_open\_new\_file\_in\_zip (filename)](#ZipWriter:_open_new_file_in_zip) | Begin a new file to be stored inside the zipfile. | | [ZipWriter:\_write\_file\_in\_zip (data, no\_compression)](#ZipWriter:_write_file_in_zip) | Write data to the file currently being stored in the zipfile. | | [ZipWriter:\_close\_file\_in\_zip ()](#ZipWriter:_close_file_in_zip) | Complete the writing of a file stored in the zipfile. | | [ZipWriter:close ()](#ZipWriter:close) | Complete the writing of the zipfile. | Functions --------- **ZipWriter:\_open\_new\_file\_in\_zip (filename)** Begin a new file to be stored inside the zipfile. ### Parameters: * filename **ZipWriter:\_write\_file\_in\_zip (data, no\_compression)** Write data to the file currently being stored in the zipfile. ### Parameters: * data * no\_compression **ZipWriter:\_close\_file\_in\_zip ()** Complete the writing of a file stored in the zipfile. **ZipWriter:close ()** Complete the writing of the zipfile. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * **ffi.zstd** * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.zstd` ================= LuaJIT FFI wrapper for ZSTD. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * **ffi.zlib** * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ffi.zlib` ================= LuaJIT FFI wrapper for zlib. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * **koplugin.HelloWorld** * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.HelloWorld` ============================ This is a debug plugin to test Plugin functionality. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * **koplugin.autowarmth** * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.autowarmth` ============================ Plugin for setting screen warmth based on the sun position and/or a time schedule _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * **gettext** * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `gettext` ================ A pure Lua implementation of a gettext subset. Example: local \_ = require("gettext") \-- [gettext](../modules/gettext.html#gettext) () local C\_ = \_.pgettext \-- [pgettext](../modules/gettext.html#pgettext) () local N\_ = \_.ngettext \-- [ngettext](../modules/gettext.html#ngettext) () local NC\_ = \_.npgettext \-- [npgettext](../modules/gettext.html#npgettext) () local T = require("ffi/util").template \-- [ffi.util.template](../modules/ffi.util.html#template) () \-- The most common use case with regular [gettext](../modules/gettext.html#gettext) (). local simple\_string = \_("item") \-- A more complex example. The correct plural form will be automatically \-- selected by [ngettext](../modules/gettext.html#ngettext) () based on the number. local numbered\_string = T(N\_("1 item", "%1 items", num\_items), num\_items) It's required to pass along the number twice, because [ngettext](../modules/gettext.html#ngettext) () doesn't do anything with placeholders. See [ffi.util.template](../modules/ffi.util.html#template) () for more information about the template function. [Functions](#Functions) ------------------------ | | | | --- | --- | | [gettext (msgid)](#gettext) | Returns a translation. | | [ngettext (msgid, msgid\_plural, n)](#ngettext) | Returns a plural form. | | [npgettext (msgctxt, msgid, msgid\_plural, n)](#npgettext) | Returns a context-disambiguated plural form. | | [pgettext (msgctxt, msgid)](#pgettext) | Returns a context-disambiguated translation. | Functions --------- **gettext (msgid)** Returns a translation. ### Parameters: * msgid [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) translation ### Usage: local \_ = require("gettext") local translation = \_("A meaningful message.") **ngettext (msgid, msgid\_plural, n)** Returns a plural form. Many languages have more forms than just singular and plural. This function abstracts the complexity away. The translation can contain as many pluralizations as it requires. See [gettext plural forms](https://www.gnu.org/software/gettext/manual/html_node/Plural-forms.html) and [translating plural forms](https://www.gnu.org/software/gettext/manual/html_node/Translating-plural-forms.html) for more information. It's required to pass along the number twice, because [ngettext](../modules/gettext.html#ngettext) () doesn't do anything with placeholders. See [ffi.util.template](../modules/ffi.util.html#template) () for more information about the template function. ### Parameters: * msgid [string](https://www.lua.org/manual/5.1/manual.html#5.4) * msgid\_plural [string](https://www.lua.org/manual/5.1/manual.html#5.4) * n integer ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) translation ### Usage: local \_ = require("gettext") local N\_ = \_.ngettext local T = require("ffi/util").template local items\_string = T(N\_("1 item", "%1 items", num\_items), num\_items) **npgettext (msgctxt, msgid, msgid\_plural, n)** Returns a context-disambiguated plural form. This is the logical combination between [ngettext](../modules/gettext.html#ngettext) () and [pgettext](../modules/gettext.html#pgettext) (). Please refer there for more information. ### Parameters: * msgctxt [string](https://www.lua.org/manual/5.1/manual.html#5.4) * msgid [string](https://www.lua.org/manual/5.1/manual.html#5.4) * msgid\_plural [string](https://www.lua.org/manual/5.1/manual.html#5.4) * n integer ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) translation ### Usage: local \_ = require("gettext") local NC\_ = \_.npgettext local T = require("ffi/util").template local statistics\_items\_string = T(NC\_("Statistics", "1 item", "%1 items", num\_items), num\_items) local books\_items\_string = T(NC\_("Books", "1 item", "%1 items", num\_items), num\_items) **pgettext (msgctxt, msgid)** Returns a context-disambiguated translation. The same string might occur multiple times, but require a different translation based on context. An example within KOReader is **Pages** meaning _page styles_ (within the context of style tweaks) and **Pages** meaning _number of pages_. We generally don't apply context unless a conflict is known. This is only likely to occur with short strings, of which of course there are many. See [gettext contexts](https://www.gnu.org/software/gettext/manual/html_node/Contexts.html) for more information. ### Parameters: * msgctxt [string](https://www.lua.org/manual/5.1/manual.html#5.4) * msgid [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) translation ### Usage: local \_ = require("gettext") local C\_ = \_.pgettext local copy\_file = C\_("File", "Copy") local copy\_text = C\_("Text", "Copy") _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * **koplugin.QRClipboard** * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.QRClipboard` ============================= This plugin generates a QR code from clipboard content. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * **koplugin.coverimage** * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.coverimage` ============================ [Functions](#Functions) ------------------------ | | | | --- | --- | | [CoverImage:getCacheFile (custom\_cover)](#CoverImage:getCacheFile) | cache handling functions | | [migrate (key)](#migrate) | chooses a path or (an existing) file | | [callback (setting, title, min, max, default)](#callback) | Update a specific G_reader_setting's value via a Spinner | | [migrate (key, title, help, info, the, folder\_only, new\_file)](#migrate) | Menu entry for setting an specific G_reader_setting key for a path/file | Functions --------- **CoverImage:getCacheFile (custom\_cover)** cache handling functions ### Parameters: * custom\_cover **migrate (key)** chooses a path or (an existing) file ### Parameters: * key [string](https://www.lua.org/manual/5.1/manual.html#5.4) is the G_reader_setting key which is used and changed **callback (setting, title, min, max, default)** Update a specific G_reader_setting's value via a Spinner ### Parameters: * setting [string](https://www.lua.org/manual/5.1/manual.html#5.4) is the G_reader_setting key which is used and changed * title [string](https://www.lua.org/manual/5.1/manual.html#5.4) shown in the spinner * min integer minimum value of the spinner * max integer maximum value of the spinner * default integer default value of the spinner **migrate (key, title, help, info, the, folder\_only, new\_file)** Menu entry for setting an specific G_reader_setting key for a path/file ### Parameters: * key [string](https://www.lua.org/manual/5.1/manual.html#5.4) is the G_reader_setting key which is used and changed * title [string](https://www.lua.org/manual/5.1/manual.html#5.4) shown in the menu * help [string](https://www.lua.org/manual/5.1/manual.html#5.4) shown in the menu * info [string](https://www.lua.org/manual/5.1/manual.html#5.4) shown in the menu (if containing %1, the value of the key is shown) * the [string](https://www.lua.org/manual/5.1/manual.html#5.4) default value * folder\_only boolean sets if only folders can be selected * new\_file boolean sets if a new filename can be entered _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * **koplugin.exporter** * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.exporter` ========================== Export highlights to different targets. Some conventions: * Target: each local format or remote service this plugin can translate to. Each new target should inherit from "formats/base" and implement _at least_ an export function. * Highlight: Text or image in document. Stored in "highlights" table of documents sidecar file. Parser uses this table. If highlight._._.text field is empty the parser uses highlight._._.pboxes field to get an image instead. * Bookmarks: Data in bookmark explorer. Stored in "bookmarks" table of documents sidecar file. Every field in bookmarks.\_ has "text" and "notes" fields. When user edits a highlight or "renames" bookmark the text field is created or updated. The parser looks to bookmarks._.text field for edited notes. bookmarks._.notes isn't used for exporting operations. * Clippings: Parsed form of highlights. Single table for all documents. * Booknotes: Every table in clippings table. clippings = {"title" = booknotes} [Functions](#Functions) ------------------------ | | | | --- | --- | | [Exporter:onExportCurrentNotes ()](#Exporter:onExportCurrentNotes) | Parse and export highlights from the currently opened document. | | [Exporter:onExportAllNotes ()](#Exporter:onExportAllNotes) | Parse and export highlights from all the documents in History and from the Kindle "My Clippings.txt". | | [Exporter:exportFilesNotes (files)](#Exporter:exportFilesNotes) | Parse and export highlights from selected documents. | Functions --------- **Exporter:onExportCurrentNotes ()** Parse and export highlights from the currently opened document. **Exporter:onExportAllNotes ()** Parse and export highlights from all the documents in History and from the Kindle "My Clippings.txt". **Exporter:exportFilesNotes (files)** Parse and export highlights from selected documents. ### Parameters: * files [table](https://www.lua.org/manual/5.1/manual.html#5.5) list of files as a table of {\[file\_path\] = true} _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * **koplugin.autodim** * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.autodim` ========================= Plugin for automatic dimming of the frontlight after an idle period. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * **koplugin.calibre.metadata** * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.calibre.metadata` ================================== This module implements functions for loading, saving and editing calibre metadata files. Calibre uses JSON to store metadata on device after each wired transfer. In wireless transfers calibre sends the same metadata to the client, which is in charge of storing it. [Functions](#Functions) ------------------------ | | | | --- | --- | | [CalibreMetadata:loadDeviceInfo (file)](#CalibreMetadata:loadDeviceInfo) | loads driveinfo from JSON file | Functions --------- **CalibreMetadata:loadDeviceInfo (file)** loads driveinfo from JSON file ### Parameters: * file _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * **koplugin.terminal** * **koplugin.terminal** * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.terminal` ========================== This plugin provides a terminal emulator (VT52 (+some ANSI and some VT100)) [Functions](#Functions) ------------------------ | | | | --- | --- | | [Terminal:killShell (ask)](#Terminal:killShell) | kills a running shell | Functions --------- **Terminal:killShell (ask)** kills a running shell ### Parameters: * ask if true ask if a shell is running, don't kill ### Returns: pid if shell is running, -1 otherwise _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * **koplugin.vocabbuilder** * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.vocabbuilder` ============================== This plugin processes dictionary word lookups and uses spaced repetition to help you remember new words. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * **koplugin.japanese** * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.japanese` ========================== Japanese language support for KOReader, modelled after Yomichan. This plugin extends KOReader's built-in dictionary and selection system to support Yomichan-style deinflection and text scanning, allowing for one-tap searches of inflected verbs and multi-character words and phrases. As such, this plugin removes the need for synonym-based deinflection rules for StarDict-converted Japanese dictionaries. [Functions](#Functions) ------------------------ | | | | --- | --- | | [onWordLookup (args)](#onWordLookup) | Called from [languagesupport.extraDictionaryFormCandidates](../modules/languagesupport.html#LanguageSupport:extraDictionaryFormCandidates)
for Japanese text. | | [onWordSelection (args)](#onWordSelection) | Called from [languagesupport.improveWordSelection](../modules/languagesupport.html#LanguageSupport:improveWordSelection)
for Japanese text. | [Issues](#Issues) ------------------ | | | | --- | --- | | [onWordLookup-todo11](#onWordLookup-todo11) | Try to repeatedly reduce the text and deinflect the shortened text

to provide more candidates. This is particularly needed because
JMDict has a habit of creating entries for compounds or phrases
that do not exist in monolingual dictionaries (even in 大辞林 or
広辞苑) and our onWordSelection expansion accepts any dictionary's
largest entry. Unfortunately doing this nicely requires a bit of
extra work to be efficient (since we need to remove the last
character in the string). | | [onWordLookup-todo11-todo12](#onWordLookup-todo11-todo12) | Pass up the reasons list (formatted Yomichan style) to the

dictionary pop-up so you can get some more information about the
inflection. But this would require adding some kind of tag
metadata that we have to pass through from the lookup to the
dictionary pop-up. | Functions --------- **onWordLookup (args)** Called from [languagesupport.extraDictionaryFormCandidates](../modules/languagesupport.html#LanguageSupport:extraDictionaryFormCandidates) for Japanese text. Tries to find and return any possible deinflections for the given text. ### Parameters: * args arguments from language support ### Returns: [{string,...}](https://www.lua.org/manual/5.1/manual.html#5.4) extra dictionary form candiadates found (or nil) ### See also: * [languagesupport.extraDictionaryFormCandidates](../modules/languagesupport.html#LanguageSupport:extraDictionaryFormCandidates) * [languagesupport.registerPlugin](../modules/languagesupport.html#LanguageSupport:registerPlugin) **onWordSelection (args)** Called from [languagesupport.improveWordSelection](../modules/languagesupport.html#LanguageSupport:improveWordSelection) for Japanese text. Tries to expand the word selection defined by args. ### Parameters: * args arguments from language support ### Returns: {pos0,pos1} the new selection range (or nil) ### See also: * [languagesupport.improveWordSelection](../modules/languagesupport.html#LanguageSupport:improveWordSelection) * [languagesupport.registerPlugin](../modules/languagesupport.html#LanguageSupport:registerPlugin) Issues ------ **onWordLookup-todo11** Try to repeatedly reduce the text and deinflect the shortened text to provide more candidates. This is particularly needed because JMDict has a habit of creating entries for compounds or phrases that do not exist in monolingual dictionaries (even in 大辞林 or 広辞苑) and our onWordSelection expansion accepts any dictionary's largest entry. Unfortunately doing this nicely requires a bit of extra work to be efficient (since we need to remove the last character in the string). **onWordLookup-todo11-todo12** Pass up the reasons list (formatted Yomichan style) to the dictionary pop-up so you can get some more information about the inflection. But this would require adding some kind of tag metadata that we have to pass through from the lookup to the dictionary pop-up. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * **koplugin.japanese.deinflector** * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.japanese.deinflector` ====================================== Yomichan deinflector implementation in pure Lua. This is very heavily modelled after Yomichan's deinflection code, with some minor changes to make it slightly more performant in the more restricted environment KOReader tends to run in. [Functions](#Functions) ------------------------ | | | | --- | --- | | [deinflectVerbatim (text)](#deinflectVerbatim) | Deinflect some text as-is (without trying any possible conversions between types of kana or any other such modifications). | | [deinflect (text)](#deinflect) | Return the set of deinflections (and the reason path taken) for the provided text. | | [init ()](#init) | Initialise a Deflector instance with the set of rules defined in yomichan-deflect.json. | | [new (o)](#new) | Create a new Deflector instance. | [Tables](#Tables) ------------------ | | | | --- | --- | | [DeinflectResult](#DeinflectResult) | A single deinflection result. | [Issues](#Issues) ------------------ | | | | --- | --- | | [init-todo10](#init-todo10) | Maybe make this location configurable or look in the user-controlled data directory too? | Functions --------- **deinflectVerbatim (text)** Deinflect some text as-is (without trying any possible conversions between types of kana or any other such modifications). You probably want to use Deinflector:deinflect() because it is more thorough. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) Japanese text to deinflect verbatim. ### Returns: [{DeinflectResult,...}](../modules/koplugin.japanese.deinflector.html#DeinflectResult) An array of possible deinflections (including the text given). ### See also: [deinflect](../modules/koplugin.japanese.deinflector.html#deinflect) **deinflect (text)** Return the set of deinflections (and the reason path taken) for the provided text. In addition to the verbatim text provided, several cleanups will be attempted on the text (conversion from half-width kana, conversion between katakana and hiragana, and collapsing of any emphatic sequences) and any valid deinflections found will also be returned. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) Japanese text to deinflect. ### Returns: [{DeinflectResult,...}](../modules/koplugin.japanese.deinflector.html#DeinflectResult) An array of possible deinflections (including the text given). **init ()** Initialise a Deflector instance with the set of rules defined in yomichan-deflect.json. **new (o)** Create a new Deflector instance. ### Parameters: * o Tables ------ **DeinflectResult** A single deinflection result. ### Fields: * term Deinflected form of the term (string). * rules Rules bitmask the term has applied (int). * reasons Array of reasons applied to reach the term ({string,...}). Issues ------ **init-todo10** Maybe make this location configurable or look in the user-controlled data directory too? _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * **koplugin.wallabag** * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `koplugin.wallabag` ========================== This plugin downloads a set number of the newest arcticles in your Wallabag "Unread" list. As epubs, or in their original formats. It can archive or delete articles from Wallabag when you finish them in KOReader. And it will delete or archive them locally when you finish them elsewhere. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Wallabag:addToMainMenu (menu\_items)](#Wallabag:addToMainMenu) | Add Wallabag to the Tools menu in both the file manager and the reader. | | [Wallabag:getBearerToken ()](#Wallabag:getBearerToken) | Validate server settings and request an OAuth bearer token. | | [Wallabag:getArticleList ()](#Wallabag:getArticleList) | Get a JSON formatted list of articles from the server. | | [Wallabag:filterIgnoredTags (article\_list)](#Wallabag:filterIgnoredTags) | Remove all the articles from the list containing one of the ignored tags. | | [Wallabag:downloadArticle (A)](#Wallabag:downloadArticle) | Download a single article from the Wallabag server given by id in the article table. | | [Wallabag:callAPI (method, url\[, headers\[, body\[, filepath\[, quiet=false\]\]\]\])](#Wallabag:callAPI) | Call the Wallabag API. | | [Wallabag:downloadArticles ()](#Wallabag:downloadArticles) | Add articles from local queue to Wallabag, then download new articles. | | [Wallabag:uploadQueue (\[quiet=true\])](#Wallabag:uploadQueue) | Upload any articles that were added to the queue. | | [Wallabag:processRemoteDeletes (remote\_article\_ids)](#Wallabag:processRemoteDeletes) | Compare local IDs with remote_article_ids and delete or archive any that are missing. | | [Wallabag:uploadStatuses (\[quiet\])](#Wallabag:uploadStatuses) | Archive (or delete) locally finished articles on the Wallabag server. | | [Wallabag:addArticle (article\_url)](#Wallabag:addArticle) | Add a new article (including any auto\_tags) to the Wallabag server. | | [Wallabag:addTagsFromReview (path)](#Wallabag:addTagsFromReview) | Add tags from the local review to the article on Wallabag. | | [Wallabag:archiveArticle (path)](#Wallabag:archiveArticle) | Archive an article on Wallabag, or if delete\_instead, then delete. | | [Wallabag:archiveLocalArticle (path)](#Wallabag:archiveLocalArticle) | Move an article and its sidecar to archive\_directory. | | [Wallabag:deleteLocalArticle (path)](#Wallabag:deleteLocalArticle) | Delete an article and its sidecar locally. | | [Wallabag:getArticleID (path)](#Wallabag:getArticleID) | Extract the Wallabag ID from the file name. | | [Wallabag:setTagsDialog (touchmenu\_instance, title, description, value, callback)](#Wallabag:setTagsDialog) | A dialog used for setting filter_tag, ignore_tags and auto\_tags. | | [Wallabag:editServerSettings ()](#Wallabag:editServerSettings) | The dialog shown when clicking "Configure Wallabag server". | | [Wallabag:setArticlesPerSync (touchmenu\_instance)](#Wallabag:setArticlesPerSync) | The dialog shown when clicking "Number of articles to keep locally". | | [Wallabag:setDownloadDirectory (touchmenu\_instance)](#Wallabag:setDownloadDirectory) | The dialog shown when clicking "Download folder". | | [Wallabag:setArchiveDirectory (touchmenu\_instance)](#Wallabag:setArchiveDirectory) | The dialog shown when clicking "Archive folder" | | [Wallabag:onAddWallabagArticle (article\_url)](#Wallabag:onAddWallabagArticle) | Handler for addWallabagArticle event. | | [Wallabag:getLastPercent ()](#Wallabag:getLastPercent) | Get percent read of the opened article. | | [Wallabag:onCloseDocument ()](#Wallabag:onCloseDocument) | Handler for the CloseDocument event. | [Issues](#Issues) ------------------ | | | | --- | --- | | [Wallabag:uploadQueue-todo15](#Wallabag:uploadQueue-todo15) | Add error handling | Functions --------- **Wallabag:addToMainMenu (menu\_items)** Add Wallabag to the Tools menu in both the file manager and the reader. ### Parameters: * menu\_items **Wallabag:getBearerToken ()** Validate server settings and request an OAuth bearer token. Do not request a new token if the saved one is valid for more than 5 minutes. **Wallabag:getArticleList ()** Get a JSON formatted list of articles from the server. The list should have self.article_per_sync item, or less if an error occurred. If filter_tag is set, only articles containing this tag are queried. If ignore_tags is defined, articles containing any of the tags are skipped. ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) List of article tables **Wallabag:filterIgnoredTags (article\_list)** Remove all the articles from the list containing one of the ignored tags. ### Parameters: * article\_list [table](https://www.lua.org/manual/5.1/manual.html#5.5) Array containing a JSON formatted list of articles ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) Same array, but without any articles that contain an ignored tag. **Wallabag:downloadArticle (A)** Download a single article from the Wallabag server given by id in the article table. ### Parameters: * A [table](https://www.lua.org/manual/5.1/manual.html#5.5) list of article tables, see https://doc.wallabag.org/developer/api/methods/#getting-existing-entries ### Returns: int 1 failed, 2 skipped, 3 downloaded **Wallabag:callAPI (method, url\[, headers\[, body\[, filepath\[, quiet=false\]\]\]\])** Call the Wallabag API. See https://app.wallabag.it/api/doc/ for methods and parameters. ### Parameters: * method GET, POST, DELETE, PATCH, etc… * url URL endpoint on Wallabag server without hostname, or full URL for external link * headers Defaults to Authorization for API endpoints, none for external (_optional_) * body Body to include in the request, if needed (_optional_) * filepath Downloads the file if provided, returns JSON otherwise (_optional_) * quiet (_default_ false) ### Returns: 1. bool Whether the request was successful 2. [string](https://www.lua.org/manual/5.1/manual.html#5.4) Error type if unsuccessful, filepath if success with path, JSON if without 3. int HTTP response code if unsuccessful (e.g. 404, 503, …) **Wallabag:downloadArticles ()** Add articles from local queue to Wallabag, then download new articles. If self.auto\_archive is true, then local article statuses are uploaded before downloading. ### Returns: bool Whether the synchronization process reached the end (with or without errors) **Wallabag:uploadQueue (\[quiet=true\])** Upload any articles that were added to the queue. In case there was no network connection to upload them at the time. ### Parameters: * quiet bool Whether to supress the info message or not (_default_ true) ### Returns: int Number of article URLs added to the server **Wallabag:processRemoteDeletes (remote\_article\_ids)** Compare local IDs with remote_article_ids and delete or archive any that are missing. ### Parameters: * remote\_article\_ids [table](https://www.lua.org/manual/5.1/manual.html#5.5) Article IDs of articles downloaded this sync run ### Returns: int Number of locally deleted or archived articles **Wallabag:uploadStatuses (\[quiet\])** Archive (or delete) locally finished articles on the Wallabag server. ### Parameters: * quiet bool Whether to supress the info message or not (_optional_) **Wallabag:addArticle (article\_url)** Add a new article (including any auto\_tags) to the Wallabag server. ### Parameters: * article\_url [string](https://www.lua.org/manual/5.1/manual.html#5.4) Full URL of the article ### Returns: bool Whether the API call could be made successfully **Wallabag:addTagsFromReview (path)** Add tags from the local review to the article on Wallabag. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) Local path of the article ### Returns: nil **Wallabag:archiveArticle (path)** Archive an article on Wallabag, or if delete\_instead, then delete. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) Local path of the article ### Returns: bool Whether archiving or deleting was completed **Wallabag:archiveLocalArticle (path)** Move an article and its sidecar to archive\_directory. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) Local path of the article ### Returns: int 1 if successful, 0 if not **Wallabag:deleteLocalArticle (path)** Delete an article and its sidecar locally. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) Local path of the article ### Returns: int 1 if successful, 0 if not **Wallabag:getArticleID (path)** Extract the Wallabag ID from the file name. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) Local path of the article ### Returns: ID as string if successful, nil if not **Wallabag:setTagsDialog (touchmenu\_instance, title, description, value, callback)** A dialog used for setting filter_tag, ignore_tags and auto\_tags. ### Parameters: * touchmenu\_instance * title * description * value * callback **Wallabag:editServerSettings ()** The dialog shown when clicking "Configure Wallabag server". Or automatically, when getBearerToken is run with an incomplete server configuration. **Wallabag:setArticlesPerSync (touchmenu\_instance)** The dialog shown when clicking "Number of articles to keep locally". ### Parameters: * touchmenu\_instance **Wallabag:setDownloadDirectory (touchmenu\_instance)** The dialog shown when clicking "Download folder". Or automatically, when getBearerToken is run with an incomplete server configuration. ### Parameters: * touchmenu\_instance **Wallabag:setArchiveDirectory (touchmenu\_instance)** The dialog shown when clicking "Archive folder" ### Parameters: * touchmenu\_instance **Wallabag:onAddWallabagArticle (article\_url)** Handler for addWallabagArticle event. Uploads a new article to Wallabag directly if there is a network connection, or add it to the local upload queue. ### Parameters: * article\_url **Wallabag:getLastPercent ()** Get percent read of the opened article. **Wallabag:onCloseDocument ()** Handler for the CloseDocument event. If the opened article/book is saved in the Wallabag directory, and if any of the remove_from_history settings are set and matching, then remove it from history Issues ------ **Wallabag:uploadQueue-todo15** Add error handling _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * **languagesupport** * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `languagesupport` ======================== Language-specific handling module. This module defines a somewhat generic system by which language-specific plugins can improve KOReader's support for languages that are not close enough to European languages to "just work". This was originally designed to improve KoReader's Japanese support through the Japanese plugin (plugins/japanese.koplugin) but it should be generic enough for other language plugins to build off this framework. Examples of languages which may require such a plugin include highly inflected/agglutinative languages (Japanese and Korean) and languages where spaces are not used as a delimiting character between words (Japanese and Chinese) and languages that use a character set where KoReader's dependencies define a "word" as being a single character. This module works by providing a mechanism to define a series of callbacks (not unlike UI Events) which are called during operations where language-specific knowledge may be necessary (such as during text selection and dictionary lookup of a text fragment). [Functions](#Functions) ------------------------ | | | | --- | --- | | [LanguageSupport:registerPlugin (Plugin)](#LanguageSupport:registerPlugin) | Registers a new language-specific plugin with given language\_code. | | [LanguageSupport:hasActiveLanguagePlugins ()](#LanguageSupport:hasActiveLanguagePlugins) | Returns whether there are any language plugins currently enabled. | | [LanguageSupport:improveWordSelection (selection)](#LanguageSupport:improveWordSelection) | Called from ReaderHighlight:onHold after the document-specific handler has successfully grabbed a "word" from the document. | | [LanguageSupport:extraDictionaryFormCandidates (text)](#LanguageSupport:extraDictionaryFormCandidates) | Called from ReaderHighlight:startSdcv after the selected has text has been OCR'd, cleaned, and otherwise made ready for sdcv. | Functions --------- **LanguageSupport:registerPlugin (Plugin)** Registers a new language-specific plugin with given language\_code. If a plugin using the same language code already exists, the loading is skipped. The language code is used to prioritise which language plugin should be called first (if that plugin fails to handle the text, there is no such plugin, or the document has no language defined then all of the plugins are called one-by-one until one succeeds). The follow handlers are defined (if you wish to support the handler create the corresponding onHandler method): * WordSelection (onWordSelection) is called when a highlight is first created and can be used to modify the default "word boundary" word selection to match user expectations. Note that "XPointer" is used here but code written should take it as an opaque object and only use the given callbacks since in future this feature may work with PDFs and all of the XPointers will instead be PDF equivalents. Called with { pos0 = [XPointer], pos1 = [XPointer], callbacks = { -- Equivalent to document:getPrevVisibleChar(pos). get_prev_char_pos(pos: XPointer) -> XPointer, -- Equivalent to document:getNextVisibleChar(pos). get_next_char_pos(pos: XPointer) -> XPointer, -- Equivalent to document:getTextFromXPointers(pos0, pos1). get_text_in_range(pos0: XPointer, pos1: XPointer) -> string, } } table as the only argument. Must return the new (pos0, pos1) XPointers or nil if the word couldn't be expanded. * WordLookup (onWordLookup) is called when a dictionary lookup is triggered on some text and can be used to adjust the word such that it is in the dictionary form and can be found in the dictionary. This is primarily useful for languages where StarDict "fuzzy searching" is not usable. Called with { text = [string] } table as the only argument. Must return an array of candidate words (in decreasing order of preference) which will be looked up or nil if no candidate words could be generated. Note that if more than one candidate is found in the dictionary they will all be displayed to the user. It is not necessary to include the original word in the candidate list -- it will always be given highest priority. ### Parameters: * Plugin to register (plugin.name is used as the internal name and must not be nil or ""). ### Returns: bool Whether the plugin was successfully registered. **LanguageSupport:hasActiveLanguagePlugins ()** Returns whether there are any language plugins currently enabled. ### Returns: bool whether there are any registered plugins **LanguageSupport:improveWordSelection (selection)** Called from ReaderHighlight:onHold after the document-specific handler has successfully grabbed a "word" from the document. If the selection is to updated, improveWordSelection will also update the document's internal selection state (for crengine) to correctly display the right selection. ### Parameters: * selection Text selection table to improve if possible. ### Returns: New updated selected\_text table which should be used (or nil). **LanguageSupport:extraDictionaryFormCandidates (text)** Called from ReaderHighlight:startSdcv after the selected has text has been OCR'd, cleaned, and otherwise made ready for sdcv. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) Original text being searched by the user. ### Returns: [{string,...}](https://www.lua.org/manual/5.1/manual.html#5.4) Extra dictionary form candidates to search (or nil). _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * **logger** * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `logger` =============== Logger module. See [Logger.levels](../modules/logger.html#Logger.levels) for list of supported levels. Example: local logger = require("logger") logger.info("Something happened.") logger.err("House is on fire!") [Functions](#Functions) ------------------------ | | | | --- | --- | | [Logger:setLevel (new\_lvl)](#Logger:setLevel) | Set logging level. | [Tables](#Tables) ------------------ | | | | --- | --- | | [Logger.levels](#Logger.levels) | Supported logging levels | Functions --------- **Logger:setLevel (new\_lvl)** Set logging level. By default, level is set to info. ### Parameters: * new\_lvl integer new logging level, must be one of the levels from [Logger.levels](../modules/logger.html#Logger.levels) ### Usage: Logger:setLevel(Logger.levels.warn) Tables ------ **Logger.levels** Supported logging levels ### Fields: * dbg debug * info informational (default level) * warn warning * err error _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * **luadata** * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `luadata` ================ Handles append-mostly data such as KOReader's bookmarks and dictionary search history. [Functions](#Functions) ------------------------ | | | | --- | --- | | [LuaData:open (file\_path, name)](#LuaData:open) | Creates a new LuaData instance. | | [LuaData:saveSetting (key, value)](#LuaData:saveSetting) | Saves a setting. | | [LuaData:delSetting (key)](#LuaData:delSetting) | Deletes a setting. | | [LuaData:addTableItem (table\_name, value)](#LuaData:addTableItem) | Adds item to table. | | [LuaData:removeTableItem (key, index)](#LuaData:removeTableItem) | Removes index from table. | | [LuaData:append (data)](#LuaData:append) | Appends settings to disk. | | [LuaData:reset (table)](#LuaData:reset) | Replaces existing settings with table. | | [LuaData:flush ()](#LuaData:flush) | Writes all settings to disk (does not append). | Functions --------- **LuaData:open (file\_path, name)** Creates a new LuaData instance. ### Parameters: * file\_path * name Backwards compat, just in case... **LuaData:saveSetting (key, value)** Saves a setting. ### Parameters: * key * value **LuaData:delSetting (key)** Deletes a setting. ### Parameters: * key **LuaData:addTableItem (table\_name, value)** Adds item to table. ### Parameters: * table\_name * value **LuaData:removeTableItem (key, index)** Removes index from table. ### Parameters: * key * index **LuaData:append (data)** Appends settings to disk. ### Parameters: * data **LuaData:reset (table)** Replaces existing settings with table. ### Parameters: * table **LuaData:flush ()** Writes all settings to disk (does not append). _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * **luadefaults** * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `luadefaults` ==================== Subclass of LuaSettings dedicated to handling the legacy global constants. [Functions](#Functions) ------------------------ | | | | --- | --- | | [LuaDefaults:open (path)](#LuaDefaults:open) | Opens a settings file. | | [LuaDefaults:readSetting (key, default)](#LuaDefaults:readSetting) | Reads a setting, optionally initializing it to a default. | | [LuaDefaults:saveSetting (key, value)](#LuaDefaults:saveSetting) | Saves a setting. | | [LuaDefaults:delSetting (key)](#LuaDefaults:delSetting) | Deletes a setting. | | [LuaDefaults:has (key)](#LuaDefaults:has) | Checks if setting exists. | | [LuaDefaults:hasNot (key)](#LuaDefaults:hasNot) | Checks if setting does not exist. | | [LuaDefaults:hasBeenCustomized (key)](#LuaDefaults:hasBeenCustomized) | Checks if setting has been customized. | | [LuaDefaults:hasNotBeenCustomized (key)](#LuaDefaults:hasNotBeenCustomized) | Checks if setting has NOT been customized. | | [LuaDefaults:isTrue (key)](#LuaDefaults:isTrue) | Checks if setting is `true` (boolean). | | [LuaDefaults:isFalse (key)](#LuaDefaults:isFalse) | Checks if setting is `false` (boolean). | | [LuaDefaults:getDataTables ()](#LuaDefaults:getDataTables) | Low-level API for filemanagersetdefaults | | [LuaDefaults:flush ()](#LuaDefaults:flush) | Writes settings to disk. | Functions --------- **LuaDefaults:open (path)** Opens a settings file. ### Parameters: * path **LuaDefaults:readSetting (key, default)** Reads a setting, optionally initializing it to a default. ### Parameters: * key * default **LuaDefaults:saveSetting (key, value)** Saves a setting. ### Parameters: * key * value **LuaDefaults:delSetting (key)** Deletes a setting. ### Parameters: * key **LuaDefaults:has (key)** Checks if setting exists. ### Parameters: * key **LuaDefaults:hasNot (key)** Checks if setting does not exist. ### Parameters: * key **LuaDefaults:hasBeenCustomized (key)** Checks if setting has been customized. ### Parameters: * key **LuaDefaults:hasNotBeenCustomized (key)** Checks if setting has NOT been customized. ### Parameters: * key **LuaDefaults:isTrue (key)** Checks if setting is `true` (boolean). ### Parameters: * key **LuaDefaults:isFalse (key)** Checks if setting is `false` (boolean). ### Parameters: * key **LuaDefaults:getDataTables ()** Low-level API for filemanagersetdefaults **LuaDefaults:flush ()** Writes settings to disk. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * **optmath** * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `optmath` ================ Simple math helper functions [Functions](#Functions) ------------------------ | | | | --- | --- | | [Math.roundPercent (percent)](#Math.roundPercent) | Rounds a percentage. | | [Math.roundAwayFromZero (num)](#Math.roundAwayFromZero) | Rounds away from zero. | | [Math.round (num)](#Math.round) | Rounds a number. | | [Math.oddEven (number)](#Math.oddEven) | Determines if a number is odd or even. | | [Math.tmin (tab, func)](#Math.tmin) | Returns the minimum element of a table. | | [Math.tmax (tab, func)](#Math.tmax) | Returns the maximum element of a table. | | [Math.clamp (value, min, max)](#Math.clamp) | Restricts a value within an interval. | Functions --------- **Math.roundPercent (percent)** Rounds a percentage. ### Parameters: * percent float ### Returns: int rounded percentage **Math.roundAwayFromZero (num)** Rounds away from zero. ### Parameters: * num float ### Returns: int ceiled above 0, floored under 0 **Math.round (num)** Rounds a number. No support for decimal points. ### Parameters: * num float ### Returns: int rounded number **Math.oddEven (number)** Determines if a number is odd or even. ### Parameters: * number integer ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) "odd" or "even" **Math.tmin (tab, func)** Returns the minimum element of a table. The optional argument func specifies a one-argument ordering function. ### Parameters: * tab [table](https://www.lua.org/manual/5.1/manual.html#5.5) * func func ### Returns: dynamic minimum element of a table **Math.tmax (tab, func)** Returns the maximum element of a table. The optional argument func specifies a one-argument ordering function. ### Parameters: * tab [table](https://www.lua.org/manual/5.1/manual.html#5.5) * func func ### Returns: dynamic maximum element of a table **Math.clamp (value, min, max)** Restricts a value within an interval. ### Parameters: * value number * min number * max number ### Returns: number value clamped to the interval \[min,max\] _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * **provider** * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `provider` ================= Registers an implementation of a feature. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Provider:unregister (feature, name)](#Provider:unregister) | Unregisters an implementation of a feature. | | [Provider:size (feature)](#Provider:size) | Counts providers for a given feature | | [Provider:getProvidersTable (feature)](#Provider:getProvidersTable) | Get providers for a given feature | Functions --------- **Provider:unregister (feature, name)** Unregisters an implementation of a feature. ### Parameters: * feature string feature identifier * name string provider identifier ### Returns: bool unregistered **Provider:size (feature)** Counts providers for a given feature ### Parameters: * feature string feature identifier ### Returns: int number **Provider:getProvidersTable (feature)** Get providers for a given feature ### Parameters: * feature string feature identifier ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) provider/implementation k/v pairs. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * **luasettings** * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `luasettings` ==================== This module handles generic settings as well as KOReader's global settings system. [Functions](#Functions) ------------------------ | | | | --- | --- | | [LuaSettings:open (file\_path)](#LuaSettings:open) | Opens a settings file. | | [LuaSettings:child (key)](#LuaSettings:child) | Reads child settings. | | [LuaSettings:readSetting (key, default)](#LuaSettings:readSetting) | Reads a setting, optionally initializing it to a default. | | [LuaSettings:saveSetting (key, value)](#LuaSettings:saveSetting) | Saves a setting. | | [LuaSettings:delSetting (key)](#LuaSettings:delSetting) | Deletes a setting. | | [LuaSettings:has (key)](#LuaSettings:has) | Checks if setting exists. | | [LuaSettings:hasNot (key)](#LuaSettings:hasNot) | Checks if setting does not exist. | | [LuaSettings:isTrue (key)](#LuaSettings:isTrue) | Checks if setting is `true` (boolean). | | [LuaSettings:isFalse (key)](#LuaSettings:isFalse) | Checks if setting is `false` (boolean). | | [LuaSettings:nilOrTrue (key)](#LuaSettings:nilOrTrue) | Checks if setting is `nil` or `true`. | | [LuaSettings:nilOrFalse (key)](#LuaSettings:nilOrFalse) | Checks if setting is `nil` or `false`. | | [LuaSettings:flipNilOrTrue (key)](#LuaSettings:flipNilOrTrue) | Flips `nil` or `true` to `false`, and `false` to `nil`. | | [LuaSettings:flipNilOrFalse (key)](#LuaSettings:flipNilOrFalse) | Flips `nil` or `false` to `true`, and `true` to `nil`. | | [LuaSettings:flipTrue (key)](#LuaSettings:flipTrue) | Flips a setting between `true` and `nil`. | | [LuaSettings:flipFalse (key)](#LuaSettings:flipFalse) | Flips a setting between `false` and `nil`. | | [LuaSettings:toggle (key)](#LuaSettings:toggle) | Toggles a boolean setting | | [LuaSettings:addTableItem (key, value)](#LuaSettings:addTableItem) | Adds item to table. | | [LuaSettings:removeTableItem (key, index)](#LuaSettings:removeTableItem) | Removes index from table. | | [LuaSettings:reset (table)](#LuaSettings:reset) | Replaces existing settings with table. | | [LuaSettings:flush ()](#LuaSettings:flush) | Writes settings to disk. | | [LuaSettings:close ()](#LuaSettings:close) | Closes settings file. | | [LuaSettings:purge ()](#LuaSettings:purge) | Purges settings file. | Functions --------- **LuaSettings:open (file\_path)** Opens a settings file. ### Parameters: * file\_path **LuaSettings:child (key)** Reads child settings. ### Parameters: * key ### Usage: Settings:saveSetting("key", { a = "b", c = true, d = false, }) local child = Settings:child("key") child:readSetting("a") \-- result "b" **LuaSettings:readSetting (key, default)** Reads a setting, optionally initializing it to a default. If default is provided, and the key doesn't exist yet, it is initialized to default first. This ensures both that the defaults are actually set if necessary, and that the returned reference actually belongs to the LuaSettings object straight away, without requiring further interaction (e.g., saveSetting) from the caller. This is mainly useful if the data type you want to retrieve/store is assigned/returned/passed by reference (e.g., a table), and you never actually break that reference by assigning another one to the same variable, (by e.g., assigning it a new object). c.f., [https://www.lua.org/manual/5.1/manual.html#2.2](https://www.lua.org/manual/5.1/manual.html#2.2) . ### Parameters: * key The setting's key * default Initialization data (Optional) **LuaSettings:saveSetting (key, value)** Saves a setting. ### Parameters: * key * value **LuaSettings:delSetting (key)** Deletes a setting. ### Parameters: * key **LuaSettings:has (key)** Checks if setting exists. ### Parameters: * key **LuaSettings:hasNot (key)** Checks if setting does not exist. ### Parameters: * key **LuaSettings:isTrue (key)** Checks if setting is `true` (boolean). ### Parameters: * key **LuaSettings:isFalse (key)** Checks if setting is `false` (boolean). ### Parameters: * key **LuaSettings:nilOrTrue (key)** Checks if setting is `nil` or `true`. ### Parameters: * key **LuaSettings:nilOrFalse (key)** Checks if setting is `nil` or `false`. ### Parameters: * key **LuaSettings:flipNilOrTrue (key)** Flips `nil` or `true` to `false`, and `false` to `nil`. e.g., a setting that defaults to true. ### Parameters: * key **LuaSettings:flipNilOrFalse (key)** Flips `nil` or `false` to `true`, and `true` to `nil`. e.g., a setting that defaults to false. ### Parameters: * key **LuaSettings:flipTrue (key)** Flips a setting between `true` and `nil`. ### Parameters: * key **LuaSettings:flipFalse (key)** Flips a setting between `false` and `nil`. ### Parameters: * key **LuaSettings:toggle (key)** Toggles a boolean setting ### Parameters: * key **LuaSettings:addTableItem (key, value)** Adds item to table. ### Parameters: * key * value **LuaSettings:removeTableItem (key, index)** Removes index from table. ### Parameters: * key * index **LuaSettings:reset (table)** Replaces existing settings with table. ### Parameters: * table **LuaSettings:flush ()** Writes settings to disk. **LuaSettings:close ()** Closes settings file. **LuaSettings:purge ()** Purges settings file. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * **random** * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `random` =============== A set of functions to extend math.random and math.randomseed. [Functions](#Functions) ------------------------ | | | | --- | --- | | [seed ()](#seed) | Uses current time as seed to randomize. | | [uuid (with\_dash)](#uuid) | Returns a UUID (v4, random). | Functions --------- **seed ()** Uses current time as seed to randomize. **uuid (with\_dash)** Returns a UUID (v4, random). ### Parameters: * with\_dash _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * **sort** * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `sort` ============= This module contains a collection of comparison functions (or factories for comparison functions) for [table.sort](https://www.lua.org/manual/5.1/manual.html#pdf-table.sort) . [Functions](#Functions) ------------------------ | | | | --- | --- | | [natsort\_cmp (cache)](#natsort_cmp) | Generates a natural sorting comparison function for table.sort. | Functions --------- **natsort\_cmp (cache)** Generates a natural sorting comparison function for table.sort. ### Parameters: * cache Optional, hashmap used to cache the processed strings to speed up sorting ### Returns: 1. The cmp function to feed to [table.sort](https://www.lua.org/manual/5.1/manual.html#pdf-table.sort) 2. The cache used (same object as the passed one, if any; will be created if not) ### Usage: \-- t is an array of strings, we don't want to keep the cache around table.sort(t, sort.natsort\_cmp()) \-- t is an array of arrays, we want to sort the strings in the "text" field of the inner arrays, and we want to keep the cache around. local cmp, cache cmp, cache = sort.natsort\_cmp(cache) table.sort(t, function(a, b) return cmp(a.text, b.text) end) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Fields](#Fields) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * **socketutil** * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `socketutil` =================== This module contains miscellaneous helper functions specific to our usage of LuaSocket/LuaSec. [Functions](#Functions) ------------------------ | | | | --- | --- | | [set\_timeout (block\_timeout, total\_timeout)](#set_timeout) | Update the timeout values. | | [reset\_timeout ()](#reset_timeout) | Reset timeout values to LuaSocket defaults. | | [file\_sink (handle, io\_err)](#file_sink) | Custom version of `ltn12.sink.file` that honors total\_timeout | [Fields](#Fields) ------------------ | | | | --- | --- | | [LARGE\_BLOCK\_TIMEOUT](#LARGE_BLOCK_TIMEOUT) | Common timeout values Large content | | [TIMEOUT\_CODE](#TIMEOUT_CODE) | Various timeout return codes | Functions --------- **set\_timeout (block\_timeout, total\_timeout)** Update the timeout values. Note that this only affects socket polling, c.f., LuaSocket's timeout\_getretry @ src/timeout.c & usage in src/usocket.c Moreover, the timeout is actually _reset_ between polls (via timeout_markstart, e.g. in buffer_meth\_receive). So, in practice, this timeout only helps _very_ bad connections (on one end or the other), and you'd be hard-pressed to ever hit the _total_ timeout, since the starting point is reset extremely often. In our case, we want to enforce an _actual_ limit on how much time we're willing to block for, start to finish. We do that via the custom sinks below, which will start ticking as soon as the first chunk of data is received. To simplify, in most cases, the socket timeout matters _before_ we receive data, and the sink timeout _once_ we've started receiving data (at which point the socket timeout is reset every chunk). In practice, that means you don't want to set block\_timeout too low, as that's what the socket timeout will end up using most of the time. Note that name resolution happens earlier and one level lower (e.g., glibc), so name resolution delays will fall outside of these timeouts. ### Parameters: * block\_timeout * total\_timeout **reset\_timeout ()** Reset timeout values to LuaSocket defaults. **file\_sink (handle, io\_err)** Custom version of `ltn12.sink.file` that honors total\_timeout ### Parameters: * handle * io\_err Fields ------ **LARGE\_BLOCK\_TIMEOUT** Common timeout values Large content **TIMEOUT\_CODE** Various timeout return codes _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Fields](#Fields) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * **suntime** * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `suntime` ================ \-- Author: Martin Zwicknagl (zwim) -- Date: 2021-10-29 -- The current source code of this file can be found on https://github.com/zwim/suntime. Module to calculate ephemeris and other times depending on the sun position. Maximal errors from 2020-2050 (compared to https://midcdmz.nrel.gov/spa/) are: * \-43.52° Christchurch 66s * \-20.16° Mauritius: 25s * 20.30° Honolulu: 47s * 33.58° Casablanca: 24s * 35.68° Tokio: 50s * 37.97° Athene: 24s * 38° Sacramento: 67s * 41.91° Rome: 27s * 47.25° Innsbruck: 13s * 52.32° Berlin: 30s * 59.92° Oslo: 42s * 64.14° Reykjavik: 69s * 65.69° Akureyri: <24s (except \*) * 70.67° Hammerfest: <105s (except \*\*) \*) A few days around beginning of summer (error <290s) \*\*) A few days after and before midnight sun (error <1200s) ### Usage: local SunTime = require("suntime") time\_zone = 0 altitude = 50 degree = true SunTime:setPosition("Reykjavik", 64.14381, -21.92626, timezone, altitude, degree) SunTime:setAdvanced() SunTime:setDate() SunTime:calculateTimes() print(SunTime.rise, SunTime.set, SunTime.set\_civil) -- or similar see calculateTime() [Functions](#Functions) ------------------------ | | | | --- | --- | | [SunTime:setPosition (name, latitude, longitude, time\_zone, altitude, degree)](#SunTime:setPosition) | Set position for later calculations | | [SunTime:setSimple ()](#SunTime:setSimple) | Use a simple equation of time (valid for the years 2008-2027) | | [SunTime:setAdvanced ()](#SunTime:setAdvanced) | Use an advanced equation of time (valid for the years 1800-2200 at least) | | [SunTime:calculateTimes (fast\_twilight)](#SunTime:calculateTimes) | Calculates the ephemeris and twilight times | [Fields](#Fields) ------------------ | | | | --- | --- | | [SunTime.getZgl](#SunTime.getZgl) | Function to get the equation of time, can be set by setSimple() or setAdvanced() | Functions --------- **SunTime:setPosition (name, latitude, longitude, time\_zone, altitude, degree)** Set position for later calculations ### Parameters: * name Name of the location * latitude Geographical latitude, North is positive * longitude Geographical longitude, West is negative * time\_zone Timezone e.g. CET = +1; if nil try to autodetect the current zone * altitude Altitude of the location above the sea level * degree if `nil` latitude and longitude are in radian, else in decimal degree **SunTime:setSimple ()** Use a simple equation of time (valid for the years 2008-2027) **SunTime:setAdvanced ()** Use an advanced equation of time (valid for the years 1800-2200 at least) **SunTime:calculateTimes (fast\_twilight)** Calculates the ephemeris and twilight times ### Parameters: * fast\_twilight If not nil, then exact twilight times will be calculated. ### Usage: SunTime:calculateTimes(fast\_twilight) Times are in hours or `nil` if not applicable. You can then access: self.midnight\_beginning self.rise\_astronomic self.rise\_nautic self.rise\_civil self.rise self.noon self.set self.set\_civil self.set\_nautic self.set\_astronomic self.midnight Or as values in a table: self.times\[1\] midnight\_beginning self.times\[2\] rise\_astronomic self.times\[3\] rise\_nautic self.times\[4\] rise\_civil self.times\[5\] rise self.times\[6\] noon self.times\[7\] set self.times\[8\] set\_civil self.times\[9\] set\_nautic self.times\[10\] set\_astronomic self.times\[11\] midnight Fields ------ **SunTime.getZgl** Function to get the equation of time, can be set by setSimple() or setAdvanced() _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * **ui.bidi** * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.bidi` ================ Bidirectional text and UI mirroring setup and helpers. There are 2 concepts we attempt to handle: - Text direction: Left-To-Right (LTR) or Right-To-Left (RTL) - UI elements mirroring: not-mirrored, or mirrored These 2 concepts are somehow orthogonal to each other in their implementation, even if in the real world there are only 2 valid combinations: - LTR and not-mirrored: for western languages, CJK, Indic... - RTL and mirrored: for Arabic, Hebrew, Farsi and a few others. Text direction is handled by the libkoreader-xtext.so C module, and the TextWidget and TextBoxWidget widgets that handle text alignment. We just need here to set the default global paragraph direction (that widgets can override if needed). UI mirroring is to be handled by our widget themselves, with the help of a few functions defined here. Fortunately, low level widgets like LeftContainer, RightContainer, FrameContainer, HorizontalGroup, OverlapGroup... will do most of the work. But some care must be taken in other widgets and apps when: - some arrow symbols are used (for next, previous, first, last...): they might need to be swapped, or some alternative symbols or images can be used. - some geometry arithmetic is done (e.g. detecting if a tap is on the right part of screen, to go forward), which need to be adapted/reversed. - handling left or right swipe, whose action might need to be reversed - some TextBoxWidget/InputText might need to be forced to be LTR (when showing HTML or CSS code, or entering URLs, path...) Some overview at: https://material.io/design/usability/bidirectionality.html _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Fields](#Fields) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * **time** * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `time` ============= A runtime optimized module to compare and do simple arithmetic with fixed point time values (which are called fts in here). Also implements functions to retrieve time from various system clocks (monotonic, monotonic_coarse, realtime, realtime_coarse, boottime ...). **Encode:** Don't store a numerical constant in an fts encoded time. Use the functions provided here! To convert real world units to an fts, you can use the following functions: time.s(seconds), time.ms(milliseconds), time.us(microseconds). You can calculate an fts encoded time of 3 s with `time.s(3)`. Special values: `0` can be used for a zero time and [time.huge](../modules/time.html#huge) can be used for the longest possible time. Beware of float encoding precision, though. For instance, take 2.1s: 2.1 cannot be encoded with full precision, so time.s(2.1) would be slightly inaccurate. (For small values (under 10 secs) the error will be ±1µs, for values below a minute the error will be below ±2µs, for values below an hour the error will be ±100µs.) When full precision is necessary, use `time.s(2) + time.ms(100)` or `time.s(2) + time.us(100000)` instead. (For more information about floating-point-representation see: https://stackoverflow.com/questions/3448777/how-to-represent-0-1-in-floating-point-arithmetic-and-decimal) **Decode:** You can get the number of seconds in an fts encoded time with `time.to_s(time_fts)`. You can get the number of milliseconds in an fts encoded time with `time.to_ms(time_fts)`. You can get the number of microseconds in an fts encoded time with `time.to_us(time_fts)`. Please be aware, that [time.to\_number](../modules/time.html#to_number) is the same as a [time.to\_s](../modules/time.html#to_s) with a precision of four decimal places. **Supported calculations:** You can add and subtract all fts encoded times, without any problems. You can multiply or divide fts encoded times by numerical constants. So if you need the half of a time, `time_fts/2` is correct. A division of two fts encoded times would give you a number. (e.g., `time.s(2.5)/time.s(0.5)` equals `5`). The functions `math.abs()`, `math.min()`, `math.max()` and [math.huge](https://www.lua.org/manual/5.1/manual.html#pdf-math.huge) will work as expected. Comparisons (`>`, `>=`, `==`, `<`, `<=` and `~=`) of two fts encoded times work as expected. If you want a duration form a given time\_fts to _now_, `time.since(time_fts)` as a shortcut (or simply use `fts.now - time_fts`) will return an fts encoded time. If you need milliseconds use `time.to_ms(time.since(time_fts))`. **Unsupported calculations:** Don't add a numerical constant to an fts time (in the best case, the numerical constant is interpreted as µs). Don't multiply two fts\_encoded times (the position of the comma is wrong). But please be aware that _all other not explicitly supported_ math on fts encoded times (`math.xxx()`) won't work as expected. (If you really, really need that, you have to shift the position of the comma yourself!) **Background:** Numbers in Lua are double float which have a mantissa (precision) of 53 bit (plus sign + exponent) We won't use the exponent here. So we can store 2^53 = 9.0072E15 different values. If we use the lower 6 digits for µs, we can store up to 9.0072E9 seconds. A year has 365.25_24_3600 = 3.15576E7 s, so we can store up to 285 years (9.0072E9/3.15576E7) with µs precision. The module has been tested with the fixed point comma at 10^6 (other values might work, but are not really tested). **Recommendations:** If the name of a variable implies a time (now, when, until, xxxdeadline, xxxtime, getElapsedTimeSinceBoot, lastxxxtimexxx, ...) we assume this value to be a time (fts encoded). Other objects which are times (like `last_tap`, `tap_interval_override`, ...) shall be renamed to something like `last_tap_time` (so to make it clear that they are fts encoded). All other time variables (a handful) get the appropriate suffix `_ms`, `_us`, `_s` (`_m`, `_h`, `_d`) denoting their status as plain Lua numbers and their resolution. ### Usage: local time = require("ui/time") local start\_time = time.now() -- Do some stuff. -- You can add and subtract \`fts times\` objects local duration = time.now() - start\_time -- and convert that object to various more human-readable formats, e.g., print(string.format("Stuff took %.3fms", time.to\_ms(duration))) local offset = time.s(100) print(string.format("Stuff plus 100s took %.3fms", time.to\_ms(duration + offset))) [Functions](#Functions) ------------------------ | | | | --- | --- | | [s (seconds)](#s) | Creates a time (fts) from a number in seconds. | | [ms (msec)](#ms) | Creates a time (fts) from a number in milliseconds. | | [us (usec)](#us) | Creates a time (fts) from a number in microseconds. | | [timeval (tv)](#timeval) | Creates a time (fts) from a structure similar to timeval. | | [to\_number (time\_fts)](#to_number) | Converts an fts time to a Lua (decimal) number (sec.usecs) (accurate to the ms, rounded to 4 decimal places) | | [to\_s (time\_fts)](#to_s) | Converts an fts to a Lua (int) number (resolution: 1µs) | | [to\_ms (time\_fts)](#to_ms) | Converts a fts to a Lua (int) number (resolution: 1ms, rounded). | | [to\_us (time\_fts)](#to_us) | Converts an fts to a Lua (int) number (resolution: 1µs, rounded) | | [since (start\_time)](#since) | Compare a past _MONOTONIC_ fts time to _now_, returning the elapsed time between the two. | | [split\_s\_us (time\_fts)](#split_s_us) | Splits an fts to seconds and microseconds. | | [realtime ()](#realtime) | Returns an fts time based on the current wall clock time. | | [monotonic ()](#monotonic) | Returns an fts time based on the current value from the system's MONOTONIC clock source. | | [monotonic\_coarse ()](#monotonic_coarse) | Ditto, but w/ CLOCK_MONOTONIC_COARSE if it's available and has a 1ms resolution or better (uses CLOCK\_MONOTONIC otherwise). | | [boottime ()](#boottime) | Ditto, but w/ CLOCK\_BOOTTIME (will return an fts time set to 0, 0 if the clock source is unsupported, as it's 2.6.39+) Only use it if you _know_ it's going to be supported, otherwise, prefer the four following aliases. | | [format\_time (time\_fts)](#format_time) | Converts an fts time to a string (seconds with 6 decimal places) | [Fields](#Fields) ------------------ | | | | --- | --- | | [huge](#huge) | Sometimes we need a very large time. | | [now](#now) | Alias for [monotonic\_coarse](../modules/time.html#monotonic_coarse)
. | Functions --------- **s (seconds)** Creates a time (fts) from a number in seconds. ### Parameters: * seconds **ms (msec)** Creates a time (fts) from a number in milliseconds. ### Parameters: * msec **us (usec)** Creates a time (fts) from a number in microseconds. ### Parameters: * usec **timeval (tv)** Creates a time (fts) from a structure similar to timeval. ### Parameters: * tv **to\_number (time\_fts)** Converts an fts time to a Lua (decimal) number (sec.usecs) (accurate to the ms, rounded to 4 decimal places) ### Parameters: * time\_fts Round to 4 decimal places **to\_s (time\_fts)** Converts an fts to a Lua (int) number (resolution: 1µs) ### Parameters: * time\_fts Time in seconds with µs precision (without decimal places) **to\_ms (time\_fts)** Converts a fts to a Lua (int) number (resolution: 1ms, rounded). (Mainly useful when computing a time lapse for benchmarking purposes). ### Parameters: * time\_fts Time in milliseconds ms (without decimal places) **to\_us (time\_fts)** Converts an fts to a Lua (int) number (resolution: 1µs, rounded) ### Parameters: * time\_fts Time in microseconds µs (without decimal places) **since (start\_time)** Compare a past _MONOTONIC_ fts time to _now_, returning the elapsed time between the two. (sec.usecs variant) Returns a Lua (decimal) number (sec.usecs, with decimal places) (accurate to the µs). ### Parameters: * start\_time Time difference **split\_s\_us (time\_fts)** Splits an fts to seconds and microseconds. If argument is nil, returns nil,nil. ### Parameters: * time\_fts **realtime ()** Returns an fts time based on the current wall clock time. (e.g., gettimeofday / clock_gettime(CLOCK_REALTIME). This is a simple wrapper around clock_gettime(CLOCK_REALTIME) to get all the niceties of a time. If you don't need sub-second precision, prefer os.time(). Which means that, yes, this is a fancier POSIX Epoch ;). ### Returns: fts fixed point time ### Usage: local time = require("ui/time") local fts\_start = time.realtime() \-- Do some stuff. \-- You can add and subtract fts times local fts\_duration = time.realtime() - fts\_start **monotonic ()** Returns an fts time based on the current value from the system's MONOTONIC clock source. (e.g., clock_gettime(CLOCK_MONOTONIC).) POSIX guarantees that this clock source will _never_ go backwards (but it _may_ return the same value multiple times). On Linux, this will not account for time spent with the device in suspend (unlike CLOCK\_BOOTTIME). ### Returns: fts fixed point time **monotonic\_coarse ()** Ditto, but w/ CLOCK_MONOTONIC_COARSE if it's available and has a 1ms resolution or better (uses CLOCK\_MONOTONIC otherwise). **boottime ()** Ditto, but w/ CLOCK\_BOOTTIME (will return an fts time set to 0, 0 if the clock source is unsupported, as it's 2.6.39+) Only use it if you _know_ it's going to be supported, otherwise, prefer the four following aliases. **format\_time (time\_fts)** Converts an fts time to a string (seconds with 6 decimal places) ### Parameters: * time\_fts Fields ------ **huge** Sometimes we need a very large time. **now** Alias for [monotonic\_coarse](../modules/time.html#monotonic_coarse) . The assumption being anything that requires accurate timestamps expects a monotonic clock source. This is certainly true for KOReader's UI scheduling. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * **ui.data.css\_tweaks** * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.data.css_tweaks` =========================== CSS tweaks must have the following attributes: - id: unique ID identifying this tweak, to be stored in settings - title: menu item title (must not be too long) - css: stylesheet text to append to external stylesheet They may have the following optional attributes: - description: text displayed when holding on menu item - priority: higher numbers are appended after lower numbers (if not specified, default to 0) - conflicts_with: a string with the id of another tweak that should be disabled when this tweak is enabled, or an array/table of tweaks ids, or a function(other_id) return true for ids conflicting. It is also used with "hold / use on all books", unless the next property is provided. - global_conflicts_with: similar to 'conflicts\_with', but used with "hold / use on all books". If 'false', no conflict check is done. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * **ui.data.keyboardlayouts.generic\_ime** * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.data.keyboardlayouts.generic_ime` ============================================ Generic input method engine -- [Functions](#Functions) ------------------------ | | | | --- | --- | | [IME:delHintChars (inputbox)](#IME:delHintChars) | inputbox operation | Functions --------- **IME:delHintChars (inputbox)** inputbox operation ### Parameters: * inputbox _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * **ui.data.keyboardlayouts.ja\_keyboard\_keys** * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.data.keyboardlayouts.ja_keyboard_keys` ================================================= _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * **ui.data.keyboardlayouts.ja\_keyboard** * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.data.keyboardlayouts.ja_keyboard` ============================================ Japanese 12-key flick keyboard layout, modelled after Android's flick keyboard. Rather than being modal, it has the ability to apply modifiers to the previous character. In addition, users can tap a kana key to cycle through the various kana in that kana row (and associated small kana). Note that because we cannot have tri-state buttons (and we want to be able to input katakana) we emulate a quad-state button using the symbol and shift layers. Users just have to tap whatever mode they want and they should be able to get there easily. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * **ui.data.keyboardlayouts.ko\_KR\_helper** * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.data.keyboardlayouts.ko_KR_helper` ============================================= Hangul-input-method Kit for Lua/KOReader ======================================== Input method implemented: 2-beolsik (for simplicity, can retrieve many articles for implementation) --------------------------------------------------------------------------------------------------- Classes and their features -------------------------- * HgSylbls (= Hangul Syllables) * Determine if a character is in Hangul consonnant, vowel, initial, medial, or final character * Combine initial, medial\[, and final\] character into a complete syllables * Determine if a medial (or final) character can be a double one (can combine another medial (or final) one) * HgFSM (= Hangul Finite State Machine) * Process Hangul syllabus combination if the character that user inputs are valid one to be combined * UIHandler * To communicate with the actual UI text input box References ---------- [https://ehclub.co.kr/2482](https://ehclub.co.kr/2482) :: Hangul syllables combination formula, Hangul unicode composition, FSM reference [https://en.wikipedia.org/wiki/Hangul\_consonant\_and\_vowel\_tables](https://en.wikipedia.org/wiki/Hangul_consonant_and_vowel_tables) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * **ui.data.keyboardlayouts.zh\_keyboard** * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.data.keyboardlayouts.zh_keyboard` ============================================ Chinese stroke-based input method for Lua/KOReader. Uses five basic strokes plus a wildcard stroke to input Chinese characters. Supports both simplified and traditional. Characters hardcoded on keys are uniform, no translation needed. In-place candidates can be turned off in keyboard settings. A Separation key 分隔 is used to finish inputting a character. A Switch key 下一字 is used to iterate candidates. Stroke-wise deletion (input not finished) mapped to the default Del key. Character-wise deletion mapped to north of Separation key. rf. https://en.wikipedia.org/wiki/Stroke_count_method _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * **ui.event** * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.event` ================= Events are messages that are passed through the widget tree. Events need a "name" attribute as minimal data. To see how event propagation works and how to make widgets event-aware see the implementation in [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html#) . A detailed guide to events can be found in [the event programmer's guide](../topics/Events.md.html#) . [Functions](#Functions) ------------------------ | | | | --- | --- | | [Event:new (name\[, arguments\])](#Event:new) | Creates a new event. | [Tables](#Tables) ------------------ | | | | --- | --- | | [Event](#Event) | | Functions --------- **Event:new (name\[, arguments\])** Creates a new event. ### Parameters: * name [string](https://www.lua.org/manual/5.1/manual.html#5.4) * arguments ... for the event (_optional_) ### Returns: [Event](../modules/ui.event.html#Event) ### Usage: local Event = require("ui/event") Event:new("GotoPage", 1) Tables ------ **Event** ### Fields: * handler name for the handler method: `"on"..Event.name` * args array of arguments for the event _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * **ui.downloadmgr** * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.downloadmgr` ======================= This module displays a PathChooser widget to choose a download directory. It can be used as a callback on a button or menu item. Example: callback = function() require("ui/downloadmgr"):new{ title = \_("Choose download directory"), onConfirm = function(path) logger.dbg("set download directory to", path) G\_reader\_settings:saveSetting("download\_dir", path) UIManager:nextTick(function() \-- reinitialize dialog end) end, }:chooseDir() end [Functions](#Functions) ------------------------ | | | | --- | --- | | [DownloadMgr:chooseDir (dir)](#DownloadMgr:chooseDir) | Displays a PathChooser widget for picking a (download) directory. | Functions --------- **DownloadMgr:chooseDir (dir)** Displays a PathChooser widget for picking a (download) directory. ### Parameters: * dir ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) path chosen by the user _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * **ui.data.optionsutil** * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.data.optionsutil` ============================ This module contains miscellaneous helper functions for the creoptions and koptoptions. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * **ui.font** * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.font` ================ Font module. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Font:getFace (font, size, faceindex)](#Font:getFace) | Gets font face object. | | [Font:getAdjustedFace (provided, bold)](#Font:getAdjustedFace) | Returns an alternative face instance to be used for measuring and drawing (in most cases, the one provided untouched)

If 'bold' is true, or if 'face' is a real bold face, we may need to use an alternative instance of the font, with possibly the associated real bold font, and/or with tweaks so fallback fonts are rendered bold too, without affecting the regular 'face'. | [Tables](#Tables) ------------------ | | | | --- | --- | | [FontFaceObj](#FontFaceObj) | Freetype font face wrapper object | Functions --------- **Font:getFace (font, size, faceindex)** Gets font face object. ### Parameters: * font [string](https://www.lua.org/manual/5.1/manual.html#5.4) * size integer optional size * faceindex integer optional index of font face in font file ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) [FontFaceObj](../modules/ui.font.html#FontFaceObj) **Font:getAdjustedFace (provided, bold)** Returns an alternative face instance to be used for measuring and drawing (in most cases, the one provided untouched) If 'bold' is true, or if 'face' is a real bold face, we may need to use an alternative instance of the font, with possibly the associated real bold font, and/or with tweaks so fallback fonts are rendered bold too, without affecting the regular 'face'. (This function should only be used by TextWidget and TextBoxWidget. Other widgets should not use it, and neither \_getFallbackFont() which will do its own processing.) ### Parameters: * provided [ui.font.FontFaceObj](../modules/ui.font.html#FontFaceObj) face font face * bold boolean whether bold is requested ### Returns: 1. [ui.font.FontFaceObj](../modules/ui.font.html#FontFaceObj) face face to use for drawing 2. bool bold adjusted bold properties Tables ------ **FontFaceObj** Freetype font face wrapper object ### Fields: * orig\_font font name requested * size size of the font face (after scaled by screen size) * orig\_size raw size of the font face (before scale) * ftsize font size object from freetype * hash hash key for this font face _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * **ui.network.wpa\_supplicant** * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.network.wpa_supplicant` ================================== WPA client helper for Kobo. [Functions](#Functions) ------------------------ | | | | --- | --- | | [WpaSupplicant:getNetworkList ()](#WpaSupplicant:getNetworkList) | Gets network list. | | [WpaSupplicant:authenticateNetwork (network)](#WpaSupplicant:authenticateNetwork) | Authenticates network. | [Issues](#Issues) ------------------ | | | | --- | --- | | [WpaSupplicant:getNetworkList-todo5](#WpaSupplicant:getNetworkList-todo5) | verify saved\_nw.flags == network.flags? This will break if user changed the network setting, e.g., from \[WPA-PSK-TKIP+CCMP\]\[WPS\]\[ESS\] to \[WPA-PSK-TKIP+CCMP\]\[ESS\] | Functions --------- **WpaSupplicant:getNetworkList ()** Gets network list. **WpaSupplicant:authenticateNetwork (network)** Authenticates network. ### Parameters: * network Issues ------ **WpaSupplicant:getNetworkList-todo5** verify saved\_nw.flags == network.flags? This will break if user changed the network setting, e.g., from \[WPA-PSK-TKIP+CCMP\]\[WPS\]\[ESS\] to \[WPA-PSK-TKIP+CCMP\]\[ESS\] _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * **ui.geometry** * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.geometry` ==================== Utilities for 2D geometry. All of these apply to full rectangles: local Geom = require("ui/geometry") Geom:new{ x = 1, y = 0, w = Screen:scaleBySize(100), h = Screen:scaleBySize(200), } Some behaviour is defined for points: Geom:new{ x = 0, y = 0, } Some behaviour is defined for dimensions: Geom:new{ w = Screen:scaleBySize(600), h = Screen:scaleBySize(800), } Just use it on simple tables that have x, y and/or w, h or define your own types using this as a metatable. Where [BlitBuffer](../modules/ffi.blitbuffer.html#) is concerned, a point at (0, 0) means the top-left corner. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Geom:copy ()](#Geom:copy) | Makes a deep copy of itself. | | [Geom:offsetBy (dx, dy)](#Geom:offsetBy) | Offsets rectangle or point by relative values | | [Geom:offsetTo (x, y)](#Geom:offsetTo) | Offsets rectangle or point to certain coordinates | | [Geom:scaleBy (zx, zy)](#Geom:scaleBy) | Scales rectangle (top-left corner is rounded down, bottom-right corner is rounded up) or dimension | | [Geom:transformByScale (zx, zy)](#Geom:transformByScale) | This method also takes care of x and y on top of [Geom:scaleBy](../modules/ui.geometry.html#Geom:scaleBy)
, c.f., fz_round_rect in MµPDF,

| | [Geom:area ()](#Geom:area) | Returns area of itself. | | [Geom:changeSizeBy (dw, dh)](#Geom:changeSizeBy) | Enlarges or shrinks dimensions or rectangles | | [Geom:combine (rect\_b)](#Geom:combine) | Returns a new outer rectangle that contains both us and a given rectangle | | [Geom:intersect (rect\_b)](#Geom:intersect) | Returns a new rectangle for the part that we and a given rectangle share | | [Geom:notIntersectWith (rect\_b)](#Geom:notIntersectWith) | Returns true if self does not share any area or edge with rect\_b | | [Geom:intersectWith (rect\_b)](#Geom:intersectWith) | Returns true if self geom shares area with rect\_b. | | [Geom:notOpenIntersectWith (rect\_b)](#Geom:notOpenIntersectWith) | Returns true if self does not share any area with rect\_b | | [Geom:openIntersectWith (rect\_b)](#Geom:openIntersectWith) | Returns true if self geom shares area or an edge with rect\_b. | | [Geom:setSizeTo (rect\_b)](#Geom:setSizeTo) | Set size of dimension or rectangle to size of given dimension/rectangle. | | [Geom:contains (geom)](#Geom:contains) | Checks whether geom is within current rectangle

Works for dimensions, too. | | [Geom:\_\_eq (rect\_b)](#Geom:__eq) | Checks for equality. | | [Geom:equalSize (rect\_b)](#Geom:equalSize) | Checks the size of a dimension/rectangle for equality. | | [Geom:\_\_lt (rect\_b)](#Geom:__lt) | Checks if our size is smaller than the size of the given dimension/rectangle. | | [Geom:\_\_le (rect\_b)](#Geom:__le) | Checks if our size is smaller or equal to the size of the given dimension/rectangle. | | [Geom:offsetWithin (rect\_b, dx, dy)](#Geom:offsetWithin) | Offsets the current rectangle by dx, dy while fitting it into the space of a given rectangle. | | [Geom:centerWithin (rect\_b, dx, dy)](#Geom:centerWithin) | Centers the current rectangle at position x and y of a given rectangle. | | [Geom:distance (rect\_b)](#Geom:distance) | Returns the Euclidean distance between two geoms. | | [Geom:midpoint (geom)](#Geom:midpoint) | Returns the midpoint of two geoms. | | [Geom:center ()](#Geom:center) | Returns the center point of this geom. | | [Geom:clear ()](#Geom:clear) | Resets an existing Geom object to zero. | | [Geom:isEmpty ()](#Geom:isEmpty) | Checks if a dimension or rectangle is empty. | | [Geom.boundingBox (rectangles)](#Geom.boundingBox) | Returns a bounding box which encompasses all passed rectangles. | [Tables](#Tables) ------------------ | | | | --- | --- | | [Geom](#Geom) | Represents a full rectangle (all fields are set), a point (x & y are set), or a dimension (w & h are set). | Functions --------- **Geom:copy ()** Makes a deep copy of itself. ### Returns: [Geom](../modules/ui.geometry.html#Geom) **Geom:offsetBy (dx, dy)** Offsets rectangle or point by relative values ### Parameters: * dx integer x delta * dy integer y delta **Geom:offsetTo (x, y)** Offsets rectangle or point to certain coordinates ### Parameters: * x integer new x * y integer new y **Geom:scaleBy (zx, zy)** Scales rectangle (top-left corner is rounded down, bottom-right corner is rounded up) or dimension If a single factor is given, it is applied to both width and height ### Parameters: * zx integer scale for x axis * zy integer scale for y axis **Geom:transformByScale (zx, zy)** This method also takes care of x and y on top of [Geom:scaleBy](../modules/ui.geometry.html#Geom:scaleBy) , c.f., fz_round_rect in MµPDF, ### Parameters: * zx integer scale for x axis * zy integer scale for y axis **Geom:area ()** Returns area of itself. ### Returns: int **Geom:changeSizeBy (dw, dh)** Enlarges or shrinks dimensions or rectangles Note that for rectangles the offset stays the same ### Parameters: * dw integer width delta * dh integer height delta **Geom:combine (rect\_b)** Returns a new outer rectangle that contains both us and a given rectangle Works for rectangles, dimensions and points ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) ### Returns: [Geom](../modules/ui.geometry.html#Geom) **Geom:intersect (rect\_b)** Returns a new rectangle for the part that we and a given rectangle share ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) ### Returns: [Geom](../modules/ui.geometry.html#Geom) **Geom:notIntersectWith (rect\_b)** Returns true if self does not share any area or edge with rect\_b ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:intersectWith (rect\_b)** Returns true if self geom shares area with rect\_b. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:notOpenIntersectWith (rect\_b)** Returns true if self does not share any area with rect\_b ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:openIntersectWith (rect\_b)** Returns true if self geom shares area or an edge with rect\_b. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:setSizeTo (rect\_b)** Set size of dimension or rectangle to size of given dimension/rectangle. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:contains (geom)** Checks whether geom is within current rectangle Works for dimensions, too. For points, it is basically an equality check. ### Parameters: * geom [Geom](../modules/ui.geometry.html#Geom) **Geom:\_\_eq (rect\_b)** Checks for equality. Works for rectangles, points, and dimensions. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:equalSize (rect\_b)** Checks the size of a dimension/rectangle for equality. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:\_\_lt (rect\_b)** Checks if our size is smaller than the size of the given dimension/rectangle. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:\_\_le (rect\_b)** Checks if our size is smaller or equal to the size of the given dimension/rectangle. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:offsetWithin (rect\_b, dx, dy)** Offsets the current rectangle by dx, dy while fitting it into the space of a given rectangle. This can also be called with dx=0 and dy=0, which will fit the current rectangle into the given rectangle. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) * dx integer * dy integer **Geom:centerWithin (rect\_b, dx, dy)** Centers the current rectangle at position x and y of a given rectangle. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) * dx integer * dy integer **Geom:distance (rect\_b)** Returns the Euclidean distance between two geoms. ### Parameters: * rect\_b [Geom](../modules/ui.geometry.html#Geom) **Geom:midpoint (geom)** Returns the midpoint of two geoms. ### Parameters: * geom [Geom](../modules/ui.geometry.html#Geom) ### Returns: [Geom](../modules/ui.geometry.html#Geom) **Geom:center ()** Returns the center point of this geom. ### Returns: [Geom](../modules/ui.geometry.html#Geom) **Geom:clear ()** Resets an existing Geom object to zero. ### Returns: [Geom](../modules/ui.geometry.html#Geom) **Geom:isEmpty ()** Checks if a dimension or rectangle is empty. ### Returns: bool **Geom.boundingBox (rectangles)** Returns a bounding box which encompasses all passed rectangles. ### Parameters: * rectangles [Geom](../modules/ui.geometry.html#Geom) to encompass ### Returns: [Geom](../modules/ui.geometry.html#Geom) bounding box or nil if no rectangles passed Tables ------ **Geom** Represents a full rectangle (all fields are set), a point (x & y are set), or a dimension (w & h are set). ### Fields: * x left origin * y top origin * w width * h height _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * **ui.menusorter** * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.menusorter` ====================== This module is responsible for constructing the KOReader menu based on a list of menu\_items and a separate menu order. [Functions](#Functions) ------------------------ | | | | --- | --- | | [MenuSorter:sort (item\_table, order)](#MenuSorter:sort) | Sorts a flat table of menu items into a hierarchical menu based on supplied order. | | [MenuSorter:findById (tbl, needle\_id)](#MenuSorter:findById) | Returns a menu item by ID. | Functions --------- **MenuSorter:sort (item\_table, order)** Sorts a flat table of menu items into a hierarchical menu based on supplied order. ### Parameters: * item\_table [table](https://www.lua.org/manual/5.1/manual.html#5.5) menu item table * order [table](https://www.lua.org/manual/5.1/manual.html#5.5) sorting order ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) the sorted menu item table **MenuSorter:findById (tbl, needle\_id)** Returns a menu item by ID. ### Parameters: * tbl [table](https://www.lua.org/manual/5.1/manual.html#5.5) Lua table * needle\_id [string](https://www.lua.org/manual/5.1/manual.html#5.4) Menu item ID string ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) a reference to the table item if found _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * **ui.hook\_container** * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.hook_container` ========================== HookContainer allows listeners to register and unregister a hook for speakers to execute. It's an experimental feature: use with cautions, it can easily pin an object in memory and unblock GC from recycling the memory. [Functions](#Functions) ------------------------ | | | | --- | --- | | [HookContainer:register (name, func)](#HookContainer:register) | Register a function to name. | | [HookContainer:registerWidget (name, widget)](#HookContainer:registerWidget) | Register a widget to name. | | [HookContainer:unregister (name, func)](#HookContainer:unregister) | Unregister a function from name. | | [HookContainer:execute (name, args)](#HookContainer:execute) | Execute all registered functions of name. | Functions --------- **HookContainer:register (name, func)** Register a function to name. Must be called with self. ### Parameters: * name [string](https://www.lua.org/manual/5.1/manual.html#5.4) The name of the hook. Can only be an non-empty string. * func function The function to handle the hook. Can only be a function. **HookContainer:registerWidget (name, widget)** Register a widget to name. Must be called with self. ### Parameters: * name [string](https://www.lua.org/manual/5.1/manual.html#5.4) The name of the hook. Can only be an non-empty string. * widget [table](https://www.lua.org/manual/5.1/manual.html#5.5) The widget to handle the hook. Can only be a table with required functions. **HookContainer:unregister (name, func)** Unregister a function from name. Must be called with self. ### Parameters: * name [string](https://www.lua.org/manual/5.1/manual.html#5.4) The name of the hook. Can only be an non-empty string. * func function The function to handle the hook. Can only be a function. ### Returns: boolean Return true if the function is found and removed, otherwise false. **HookContainer:execute (name, args)** Execute all registered functions of name. Must be called with self. ### Parameters: * name [string](https://www.lua.org/manual/5.1/manual.html#5.4) The name of the hook. Can only be an non-empty string. * args Any kind of arguments sending to the functions. ### Returns: number The number of functions have been executed. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * **ui.otamanager** * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.otamanager` ====================== Checks for updates on the specified nightly build server. [Functions](#Functions) ------------------------ | | | | --- | --- | | [OTAManager:\_buildLocalPackage ()](#OTAManager:_buildLocalPackage) | Uses zsync and tar to prepare an update package. | [Issues](#Issues) ------------------ | | | | --- | --- | | [OTAManager:\_buildLocalPackage-todo6](#OTAManager:_buildLocalPackage-todo6) | Validate the installed package? | Functions --------- **OTAManager:\_buildLocalPackage ()** Uses zsync and tar to prepare an update package. Issues ------ **OTAManager:\_buildLocalPackage-todo6** Validate the installed package? _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * **ui.plugin.background\_task\_plugin** * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.plugin.background_task_plugin` ========================================= BackgroundTaskPlugin creates a plugin with a switch to enable or disable it and executes a background task. See spec/unit/background_task_plugin\_spec.lua for the usage. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * **ui.plugin.switch\_plugin** * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.plugin.switch_plugin` ================================ SwitchPlugin creates a plugin with a switch to enable or disable it. See spec/unit/switch_plugin_spec.lua for the usage. [Functions](#Functions) ------------------------ | | | | --- | --- | | [SwitchPlugin:\_showConfirmBox ()](#SwitchPlugin:_showConfirmBox) | Show a ConfirmBox to ask for enabling or disabling this plugin. | Functions --------- **SwitchPlugin:\_showConfirmBox ()** Show a ConfirmBox to ask for enabling or disabling this plugin. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * **ui.quickstart** * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.quickstart` ====================== This module is responsible for generating the quickstart guide. [Functions](#Functions) ------------------------ | | | | --- | --- | | [QuickStart:isShown ()](#QuickStart:isShown) | Returns `true` if shown, `false` if the quickstart guide hasn't been shown yet or if display is forced through a higher version number than when it was first shown. | | [QuickStart:getQuickStart ()](#QuickStart:getQuickStart) | Generates the quickstart guide in the user's language and returns its location. | Functions --------- **QuickStart:isShown ()** Returns `true` if shown, `false` if the quickstart guide hasn't been shown yet or if display is forced through a higher version number than when it was first shown. **QuickStart:getQuickStart ()** Generates the quickstart guide in the user's language and returns its location. The fileformat is `quickstart-en-v2015.11-985-g88308992.html`, `en` being the language of the generated file and `v2015.11-985-g88308992` the KOReader version used to generate the file. ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) path to generated HTML quickstart guide _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * **ui.renderimage** * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.renderimage` ======================= Image rendering module. All the render\* functions should return a BlitBuffer object on success, nil otherwise. [Functions](#Functions) ------------------------ | | | | --- | --- | | [RenderImage:renderImageFile (filename\[, want\_frames=false\], width, height)](#RenderImage:renderImageFile) | Renders image file as a BlitBuffer with the best renderer | | [RenderImage:renderImageData (string, size\[, want\_frames=false\], width, height)](#RenderImage:renderImageData) | Renders image data as a BlitBuffer with the best renderer | | [RenderImage:renderImageDataWithMupdf (string, size, width, height)](#RenderImage:renderImageDataWithMupdf) | Renders image data as a BlitBuffer with MuPDF | | [RenderImage:renderSVGImageDataWithCRengine (string, size, width, height)](#RenderImage:renderSVGImageDataWithCRengine) | Renders SVG image data as a BlitBuffer with CRengine (and extended LunaSVG) | | [RenderImage:renderGifImageDataWithGifLib (string, size\[, want\_frames=false\], width, height)](#RenderImage:renderGifImageDataWithGifLib) | Renders image data as a BlitBuffer with GifLib | | [RenderImage:renderWebpImageDataWithLibwebp (string, size\[, want\_frames=false\], width, height)](#RenderImage:renderWebpImageDataWithLibwebp) | Renders image data as a BlitBuffer with libwebp | | [RenderImage:scaleBlitBuffer (BlitBuffer, width, height\[, free\_orig\_bb=true\])](#RenderImage:scaleBlitBuffer) | Rescales a BlitBuffer to the requested size if needed | | [RenderImage:renderSVGImageFile (filename, width, height, zoom)](#RenderImage:renderSVGImageFile) | Renders SVG image file as a BlitBuffer with the best renderer | | [RenderImage:renderCheckerboard (width, height, bb\_type)](#RenderImage:renderCheckerboard) | Renders a checkerboard pattern (useful as a fallback after a decoding failure) | Functions --------- **RenderImage:renderImageFile (filename\[, want\_frames=false\], width, height)** Renders image file as a BlitBuffer with the best renderer ### Parameters: * filename [string](https://www.lua.org/manual/5.1/manual.html#5.4) image file path * want\_frames boolean whether to return a list of animated GIF frames (_default_ false) * width integer requested width * height integer requested height ### Returns: BlitBuffer or list of frames (each a function returning a Blitbuffer) **RenderImage:renderImageData (string, size\[, want\_frames=false\], width, height)** Renders image data as a BlitBuffer with the best renderer ### Parameters: * string data or userdata (pointer) with image bytes * size integer size of data * want\_frames boolean whether to return a list of animated GIF frames (_default_ false) * width integer requested width * height integer requested height ### Returns: BlitBuffer or list of frames (each a function returning a Blitbuffer) **RenderImage:renderImageDataWithMupdf (string, size, width, height)** Renders image data as a BlitBuffer with MuPDF ### Parameters: * string data or userdata (pointer) with image bytes * size integer size of data * width integer requested width * height integer requested height ### Returns: BlitBuffer **RenderImage:renderSVGImageDataWithCRengine (string, size, width, height)** Renders SVG image data as a BlitBuffer with CRengine (and extended LunaSVG) ### Parameters: * string data or userdata (pointer) with image bytes * size integer size of data * width integer requested width * height integer requested height ### Returns: BlitBuffer **RenderImage:renderGifImageDataWithGifLib (string, size\[, want\_frames=false\], width, height)** Renders image data as a BlitBuffer with GifLib ### Parameters: * string data or userdata (pointer) with image bytes * size integer size of data * want\_frames boolean whether to also return a list with animated GIF frames (_default_ false) * width integer requested width * height integer requested height ### Returns: BlitBuffer or list of frames (each a function returning a Blitbuffer) **RenderImage:renderWebpImageDataWithLibwebp (string, size\[, want\_frames=false\], width, height)** Renders image data as a BlitBuffer with libwebp ### Parameters: * string data or userdata (pointer) with image bytes * size integer size of data * want\_frames boolean whether to also return a list with animated WebP frames (_default_ false) * width integer requested width * height integer requested height ### Returns: BlitBuffer or list of frames (each a function returning a Blitbuffer) **RenderImage:scaleBlitBuffer (BlitBuffer, width, height\[, free\_orig\_bb=true\])** Rescales a BlitBuffer to the requested size if needed ### Parameters: * BlitBuffer bb * width integer * height integer * free\_orig\_bb boolean free() original bb if scaled (_default_ true) ### Returns: BlitBuffer **RenderImage:renderSVGImageFile (filename, width, height, zoom)** Renders SVG image file as a BlitBuffer with the best renderer ### Parameters: * filename [string](https://www.lua.org/manual/5.1/manual.html#5.4) image file path * width integer requested width * height integer requested height * zoom number requested zoom ### Returns: BlitBuffer **RenderImage:renderCheckerboard (width, height, bb\_type)** Renders a checkerboard pattern (useful as a fallback after a decoding failure) ### Parameters: * width * height * bb\_type _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * **ui.translator** * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.translator` ====================== This module translates text using Google Translate. [https://translate.googleapis.com/translate\_a/single?client=gtx&sl=auto&tl=fr&dt=t&q=alea%20jacta%20est](https://translate.googleapis.com/translate_a/single?client=gtx&sl=auto&tl=fr&dt=t&q=alea%20jacta%20est) [Functions](#Functions) ------------------------ | | | | --- | --- | | [Translator:loadPage (text, target\_lang, source\_lang)](#Translator:loadPage) | Returns decoded JSON table from translate server. | | [Translator:detect (text)](#Translator:detect) | Tries to automatically detect language of `text`. | | [Translator:translate (text, target\_lang, source\_lang)](#Translator:translate) | Translate text, returns translation as a single string. | | [Translator:showTranslation (text, detailed\_view, source\_lang, target\_lang)](#Translator:showTranslation) | Show translated text in TextViewer, with alternate translations | Functions --------- **Translator:loadPage (text, target\_lang, source\_lang)** Returns decoded JSON table from translate server. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) * target\_lang [string](https://www.lua.org/manual/5.1/manual.html#5.4) * source\_lang [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) result, or nil **Translator:detect (text)** Tries to automatically detect language of `text`. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) lang (`"en"`, `"fr"`, `…`) **Translator:translate (text, target\_lang, source\_lang)** Translate text, returns translation as a single string. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) * target\_lang [string](https://www.lua.org/manual/5.1/manual.html#5.4) \[opt\] (`"en"`, `"fr"`, `…`) * source\_lang [string](https://www.lua.org/manual/5.1/manual.html#5.4) \[opt="auto"\] (`"en"`, `"fr"`, `…`) or `"auto"` to auto-detect source language ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) translated text, or nil **Translator:showTranslation (text, detailed\_view, source\_lang, target\_lang)** Show translated text in TextViewer, with alternate translations ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) * detailed\_view boolean "true" to show alternate translation, definition, additional buttons * source\_lang [string](https://www.lua.org/manual/5.1/manual.html#5.4) \[opt="auto"\] (`"en"`, `"fr"`, `…`) or `"auto"` to auto-detect source language * target\_lang [string](https://www.lua.org/manual/5.1/manual.html#5.4) \[opt\] (`"en"`, `"fr"`, `…`) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * **ui.rendertext** * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.rendertext` ====================== Text rendering module. [Functions](#Functions) ------------------------ | | | | --- | --- | | [RenderText:getGlyph (face, charcode\[, bold=false\])](#RenderText:getGlyph) | Returns a rendered glyph | | [RenderText:getSubTextByWidth (text, face, width\[, kerning=false\[, bold=false\]\])](#RenderText:getSubTextByWidth) | Returns a substring of a given text that meets the maximum width (in pixels) restriction. | | [RenderText:sizeUtf8Text (x, width, face, text\[, kerning=false\[, bold=false\]\])](#RenderText:sizeUtf8Text) | Measure rendered size for a given text. | | [RenderText:renderUtf8Text (dest\_bb, x, baseline, face, text\[, kerning=false\[, bold=false\[, fgcolor=Blitbuffer.COLOR\_BLACK\[, width=nil\[, char\_pads\]\]\]\]\])](#RenderText:renderUtf8Text) | Render a given text into a given BlitBuffer | | [RenderText:truncateTextByWidth (text, face, width\[, kerning=false\[, bold=false\]\])](#RenderText:truncateTextByWidth) | Returns a substring of a given text that meets the maximum width (in pixels) restriction with ellipses (…) at the end if required. | | [RenderText:getGlyphByIndex (face, glyph\[, bold=false\[, bolder=false\]\])](#RenderText:getGlyphByIndex) | Returns a rendered glyph by glyph index xtext/Harfbuzz, after shaping, gives glyph indexes in the font, which is usually different from the unicode codepoint of the original char) | [Tables](#Tables) ------------------ | | | | --- | --- | | [RenderTextSize](#RenderTextSize) | RenderText size information | Functions --------- **RenderText:getGlyph (face, charcode\[, bold=false\])** Returns a rendered glyph ### Parameters: * face [ui.font.FontFaceObj](../modules/ui.font.html#FontFaceObj) font face for the text * charcode integer * bold boolean whether the text should be measured as bold (_default_ false) ### Returns: glyph **RenderText:getSubTextByWidth (text, face, width\[, kerning=false\[, bold=false\]\])** Returns a substring of a given text that meets the maximum width (in pixels) restriction. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text to truncate * face [ui.font.FontFaceObj](../modules/ui.font.html#FontFaceObj) font face for the text * width integer maximum width in pixels * kerning boolean whether the text should be measured with kerning (_default_ false) * bold boolean whether the text should be measured as bold (_default_ false) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### See also: [truncateTextByWidth](../modules/ui.rendertext.html#RenderText:truncateTextByWidth) **RenderText:sizeUtf8Text (x, width, face, text\[, kerning=false\[, bold=false\]\])** Measure rendered size for a given text. Note this function does not render the text into a bitmap. Use it if you only need the estimated size information. ### Parameters: * x integer start position for a given text (within maximum width) * width integer maximum rendering width in pixels (think of it as size of the bitmap) * face [ui.font.FontFaceObj](../modules/ui.font.html#FontFaceObj) font face that will be used for rendering * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text to measure * kerning boolean whether the text should be measured with kerning (_default_ false) * bold boolean whether the text should be measured as bold (_default_ false) ### Returns: [RenderTextSize](../modules/ui.rendertext.html#RenderTextSize) **RenderText:renderUtf8Text (dest\_bb, x, baseline, face, text\[, kerning=false\[, bold=false\[, fgcolor=Blitbuffer.COLOR\_BLACK\[, width=nil\[, char\_pads\]\]\]\]\])** Render a given text into a given BlitBuffer ### Parameters: * dest\_bb BlitBuffer Buffer to blit into * x integer starting x coordinate position within dest\_bb * baseline integer y coordinate for baseline, within dest\_bb * face [ui.font.FontFaceObj](../modules/ui.font.html#FontFaceObj) font face that will be used for rendering * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text to render * kerning boolean whether the text should be measured with kerning (_default_ false) * bold boolean whether the text should be measured as bold (_default_ false) * fgcolor Blitbuffer.COLOR foreground color (_default_ Blitbuffer.COLOR\_BLACK) * width integer maximum rendering width (_default_ nil) * char\_pads [table](https://www.lua.org/manual/5.1/manual.html#5.5) array of integers, nb of pixels to add, one for each utf8 char in text (_optional_) ### Returns: int width of rendered bitmap **RenderText:truncateTextByWidth (text, face, width\[, kerning=false\[, bold=false\]\])** Returns a substring of a given text that meets the maximum width (in pixels) restriction with ellipses (…) at the end if required. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text to truncate * face [ui.font.FontFaceObj](../modules/ui.font.html#FontFaceObj) font face for the text * width integer maximum width in pixels * kerning boolean whether the text should be measured with kerning (_default_ false) * bold boolean whether the text should be measured as bold (_default_ false) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### See also: [getSubTextByWidth](../modules/ui.rendertext.html#RenderText:getSubTextByWidth) **RenderText:getGlyphByIndex (face, glyph\[, bold=false\[, bolder=false\]\])** Returns a rendered glyph by glyph index xtext/Harfbuzz, after shaping, gives glyph indexes in the font, which is usually different from the unicode codepoint of the original char) ### Parameters: * face [ui.font.FontFaceObj](../modules/ui.font.html#FontFaceObj) font face for the text * glyph integer index * bold boolean whether the glyph should be artificially boldened (_default_ false) * bolder boolean whether the glyph should be _even more_ artificially boldened (_can_ stack with bold, but can also be used solo) (_default_ false) ### Returns: glyph Tables ------ **RenderTextSize** RenderText size information ### Fields: * x length of the text on x coordinate * y\_top distance between top-most pixel (scanline) and baseline (bearingY) * y\_bottom distance between bottom-most pixel (scanline) and baseline (height - y\_top) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * **ui.trapper** * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.trapper` =================== Trapper module: provides methods for simple interaction with UI, without the need for explicit callbacks, for use by linear jobs between their steps. Allows code to trap UI (give progress info to UI, ask for user choice), or get trapped by UI (get interrupted). Mostly done with coroutines, but hides their usage for simplicity. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Trapper:wrap (func)](#Trapper:wrap) | Executes a function and allows it to be trapped (that is: to use our other methods). | | [Trapper:isWrapped ()](#Trapper:isWrapped) | Returns if code is wrapped | | [Trapper:clear ()](#Trapper:clear) | Clears left-over widget | | [Trapper:reset ()](#Trapper:reset) | Clears left-over widget and resets Trapper state | | [Trapper:info (text)](#Trapper:info) | Displays an InfoMessage, and catches dismissal. | | [Trapper:setPausedText (text, abort\_text, continue\_text)](#Trapper:setPausedText) | Overrides text and button texts on the Paused ConfirmBox. | | [Trapper:confirm (text, cancel\_text, ok\_text)](#Trapper:confirm) | Displays a ConfirmBox and gets user's choice. | | [Trapper:dismissablePopen (cmd, trap\_widget\_or\_string)](#Trapper:dismissablePopen) | Dismissable wrapper for [io.popen(`cmd`)](https://www.lua.org/manual/5.1/manual.html#pdf-io.popen)
. | | [Trapper:dismissableRunInSubprocess (task, trap\_widget\_or\_string)](#Trapper:dismissableRunInSubprocess) | Run a function (task) in a sub-process, allowing it to be dismissed, and returns its return value(s). | Functions --------- **Trapper:wrap (func)** Executes a function and allows it to be trapped (that is: to use our other methods). Simple wrapper function for a coroutine, which is a prerequisite for all our methods (this simply abstracts the [coroutine](https://www.lua.org/manual/5.1/manual.html#5.2) business to our callers), and execute it. (If some code is not wrap()'ed, most of the other methods, when called, will simply log or fallback to a non-UI action or OK choice.) This call should be the last step in some event processing code, as it may return early (the first [coroutine.yield()](https://www.lua.org/manual/5.1/manual.html#pdf-coroutine.yield) in any of the other methods will return from this function), and later be resumed by [UIManager](../modules/ui.uimanager.html#) . So any following (unwrapped) code would be then executed while `func` is half-done, with unintended consequences. ### Parameters: * func function reference to function to wrap and execute **Trapper:isWrapped ()** Returns if code is wrapped ### Returns: boolean true if code is wrapped by Trapper, false otherwise **Trapper:clear ()** Clears left-over widget **Trapper:reset ()** Clears left-over widget and resets Trapper state **Trapper:info (text)** Displays an InfoMessage, and catches dismissal. Display a InfoMessage with text, or keep existing InfoMessage if text = nil, and return true. UNLESS the previous widget was itself a InfoMessage and it has been dismissed (by Tap on the screen), in which case the new InfoMessage is not displayed, and false is returned. One can only know a InfoMessage has been dismissed when trying to display a new one (we can't do better than that with coroutines). So, don't hesitate to call it regularly (each call costs 100ms), between steps of the work, to provide good responsiveness. Trapper:info() is a shortcut to get dismiss info while keeping the existing InfoMessage displayed. Optional fast\_refresh parameter should only be used when displaying an InfoMessage over a previous InfoMessage of the exact same size. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text to display as an InfoMessage (or nil to keep existing one) ### Returns: boolean true if InfoMessage was not dismissed, false if dismissed ### Usage: Trapper:info("some text about step or progress") go\_on = Trapper:info() **Trapper:setPausedText (text, abort\_text, continue\_text)** Overrides text and button texts on the Paused ConfirmBox. A ConfirmBox is displayed when an InfoMessage is dismissed in Trapper:info(), with default text "Paused", and default buttons "Abort" and "Continue". ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) ConfirmBox text (default: "Paused") * abort\_text [string](https://www.lua.org/manual/5.1/manual.html#5.4) ConfirmBox "Abort" button text (Trapper:info() returns false) * continue\_text [string](https://www.lua.org/manual/5.1/manual.html#5.4) ConfirmBox "Continue" button text **Trapper:confirm (text, cancel\_text, ok\_text)** Displays a ConfirmBox and gets user's choice. Display a ConfirmBox with the text and cancel_text/ok_text buttons, block and wait for user's choice, and return the choice made: false if Cancel tapped or dismissed, true if OK tapped ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text to display in a ConfirmBox * cancel\_text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text for ConfirmBox Cancel button * ok\_text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text for ConfirmBox Ok button ### Returns: boolean false if Cancel tapped or dismissed, true if OK tapped ### Usage: go\_on = Trapper:confirm("Do you want to go on?") that\_selected = Trapper:confirm("Do you want to do this or that?", "this", "that")) **Trapper:dismissablePopen (cmd, trap\_widget\_or\_string)** Dismissable wrapper for [io.popen(`cmd`)](https://www.lua.org/manual/5.1/manual.html#pdf-io.popen) . Notes and limitations: 1) It is dismissable as long as `cmd` as not yet output anything. Once output has started, the reading will block till it is done. (Some shell tricks, included in `cmd`, could probably be used to accumulate `cmd` output in some variable, and to output the whole variable to stdout at the end.) 2) `cmd` needs to output something (we will wait till some data is available) If there are chances for it to not output anything, append `"; echo"` to `cmd` 3) We need a [TrapWidget](../modules/ui.widget.trapwidget.html#) or [InfoMessage](../modules/ui.widget.infomessage.html#) , that, as a modal, will catch any [Tap event](../modules/ui.event.html#) happening during `cmd` execution. This can be an existing already displayed widget, or provided as a string (a new TrapWidget will be created). If nil, true or false, an invisible TrapWidget will be used instead (if nil or true, the event will be resent; if false, the event will not be resent). If we really need to have more control, we would need to use `select()` via `ffi` or do low level non-blocking reading on the file descriptor. If there are `cmd` that may not exit, that we would be trying to collect indefinitely, the best option would be to compile any `timeout.c` and use it as a wrapper. ### Parameters: * cmd [string](https://www.lua.org/manual/5.1/manual.html#5.4) shell `cmd` to execute and get output from * trap\_widget\_or\_string already shown widget, string, or nil, true or false ### Returns: 1. boolean completed (`true` if not interrupted, `false` if dismissed) 2. [string](https://www.lua.org/manual/5.1/manual.html#5.4) output of command **Trapper:dismissableRunInSubprocess (task, trap\_widget\_or\_string)** Run a function (task) in a sub-process, allowing it to be dismissed, and returns its return value(s). Notes and limitations: 1) As function is run in a sub-process, it can't modify the main KOReader process (its parent). It has access to the state of KOReader at the time the sub-process was started. It should not use any service/driver that would make the parent process vision of the device state incoherent (ie: it should not use UIManager, display widgets, change settings, enable wifi...). It is allowed to modify the filesystem, as long as KOreader has not a cached vision of this filesystem part. Its returned value(s) are returned to the parent. 2) task may return complex data structures (but with simple lua types, no function) or a single string. If task returns a string or nil, set task_returns_simple\_string to true, allowing for some optimisations to be made. 3) If dismissed, the sub-process is killed with SIGKILL, and task is aborted without any chance for cleanup work: use of temporary files should so be limited (do some cleanup of dirty files from previous aborted executions at the start of each new execution if needed), and try to keep important operations as atomic as possible. 4) We need a [TrapWidget](../modules/ui.widget.trapwidget.html#) or [InfoMessage](../modules/ui.widget.infomessage.html#) , that, as a modal, will catch any [Tap event](../modules/ui.event.html#) happening during `cmd` execution. This can be an existing already displayed widget, or provided as a string (a new TrapWidget will be created). If nil, true or false, an invisible TrapWidget will be used instead (if nil or true, the event will be resent; if false, the event will not be resent). ### Parameters: * task lua function to execute and get return values from * trap\_widget\_or\_string already shown widget, string, or nil, true or false ### Returns: 1. boolean completed (`true` if not interrupted, `false` if dismissed) 2. ... return values of task _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * **ui.viewhtml** * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.viewhtml` ==================== This module shows HTML code and CSS content from crengine documents. It it used by ReaderHighlight as an action after text selection. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * **ui.size** * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.size` ================ This module provides a standardized set of sizes for use in widgets. There are values for borders, margins, paddings, radii, and lines. Have a look at the code for full details. If you are considering to deviate from one of the defaults, please take a second to consider: 1. Why you want to differ in the first place. We consciously strive toward consistency in the UI, which is typically valued higher than one pixel more or less in a specific context. 2. If there really isn't anything close to what you want, whether it should be added to the arsenal of default sizes rather than as a local exception. ### Usage: local Size = require("ui/size") local frame -- just an example widget frame = FrameContainer:new{ radius = Size.radius.window, bordersize = Size.border.window, padding = Size.padding.default, margin = Size.margin.default, VerticalGroup:new{ -- etc } } _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * **ui.widget.checkbutton** * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.checkbutton` ============================== Button widget that shows a checkmark (`✓`) when checked and an empty box (`□`) when unchecked. Example: local CheckButton = require("ui/widget/CheckButton") local parent\_widget = OverlapGroup:new{} table.insert(parent\_widget, CheckButton:new{ text = \_("Show password"), callback = function() end, }) UIManager:show(parent\_widget) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * **ui.uimanager** * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.uimanager` ===================== This module manages widgets. [Functions](#Functions) ------------------------ | | | | --- | --- | | [UIManager:show (widget, refreshtype, refreshregion, x, y, refreshdither)](#UIManager:show) | Registers and shows a widget. | | [UIManager:close (widget, refreshtype, refreshregion, refreshdither)](#UIManager:close) | Unregisters a widget. | | [UIManager:shiftScheduledTasksBy (time)](#UIManager:shiftScheduledTasksBy) | Shift the execution times of all scheduled tasks. | | [UIManager:scheduleIn (seconds, action, ...)](#UIManager:scheduleIn) | Schedules a task to be run a certain amount of seconds from now. | | [UIManager:nextTick (action, ...)](#UIManager:nextTick) | Schedules a task for the next UI tick. | | [UIManager:tickAfterNext (action, ...)](#UIManager:tickAfterNext) | Schedules a task to be run two UI ticks from now. | | [UIManager:unschedule (action)](#UIManager:unschedule) | Unschedules a previously scheduled task. | | [UIManager:setDirty (widget, refreshtype, refreshregion, refreshdither)](#UIManager:setDirty) | Mark a window-level widget as dirty, enqueuing a repaint & refresh request for that widget, to be processed on the next UI tick. | | [UIManager:setRefreshRate (rate, night\_rate)](#UIManager:setRefreshRate) | Sets the full refresh rate for e-ink screens (`FULL_REFRESH_COUNT`). | | [UIManager:getRefreshRate ()](#UIManager:getRefreshRate) | Returns the full refresh rate for e-ink screens (`FULL_REFRESH_COUNT`). | | [UIManager:ToggleNightMode (night\_mode)](#UIManager:ToggleNightMode) | Toggles Night Mode (i.e., inverted rendering). | | [UIManager:getNthTopWidget (n)](#UIManager:getNthTopWidget) | Get n.th topmost widget | | [UIManager:topdown\_widgets\_iter ()](#UIManager:topdown_widgets_iter) | Top-to-bottom widgets iterator NOTE: VirtualKeyboard can be instantiated multiple times, and is a modal,

so don't be surprised if you find a couple of instances of it at the top ;). | | [UIManager:getTopmostVisibleWidget ()](#UIManager:getTopmostVisibleWidget) | Get the topmost visible widget | | [UIManager:isSubwidgetShown (widget, max\_depth)](#UIManager:isSubwidgetShown) | Check if a widget is still in the window stack, or is a subwidget of a widget still in the window stack. | | [UIManager:isWidgetShown (widget)](#UIManager:isWidgetShown) | Same as [isSubwidgetShown](../modules/ui.uimanager.html#UIManager:isSubwidgetShown)
, but only check window-level widgets (e.g., what's directly registered in the window stack), don't recurse. | | [UIManager:quit (exit\_code, implicit)](#UIManager:quit) | Signals to quit. | | [UIManager:sendEvent (event)](#UIManager:sendEvent) | Transmits an [Event](../modules/ui.event.html#Event)
to active widgets, top to bottom. | | [UIManager:broadcastEvent (event)](#UIManager:broadcastEvent) | Transmits an [Event](../modules/ui.event.html#Event)
to all registered widgets. | | [UIManager:getTime ()](#UIManager:getTime) | Returns a time (fts) corresponding to the last tick. | | [UIManager:getElapsedTimeSinceBoot ()](#UIManager:getElapsedTimeSinceBoot) | Returns a time (fts) corresponding to the last UI tick plus the time in standby. | | [UIManager:forceRePaint ()](#UIManager:forceRePaint) | Explicitly drain the paint & refresh queues _now_, instead of waiting for the next UI tick. | | [UIManager:waitForVSync ()](#UIManager:waitForVSync) | Ask the EPDC to _block_ until our previous refresh ioctl has completed. | | [UIManager:yieldToEPDC (sleep\_us)](#UIManager:yieldToEPDC) | Yield to the EPDC. | | [UIManager:widgetRepaint (widget, x, y)](#UIManager:widgetRepaint) | Used to repaint a specific sub-widget that isn't on the `_window_stack` itself. | | [UIManager:widgetInvert (widget, x, y, w, h)](#UIManager:widgetInvert) | Same idea as [widgetRepaint](../modules/ui.uimanager.html#UIManager:widgetRepaint)
, but does a simple `bb:invertRect` on the Screen buffer, without actually going through the widget's `paintTo` method. | | [UIManager:run ()](#UIManager:run) | This is the main loop of the UI controller. | | [UIManager:suspend ()](#UIManager:suspend) | Executes all the operations of a suspension (i.e., sleep) request. | | [UIManager:allowStandby ()](#UIManager:allowStandby) | Release standby lock. | | [UIManager:preventStandby ()](#UIManager:preventStandby) | Prevent standby. | | [UIManager:flushSettings ()](#UIManager:flushSettings) | Broadcasts a `FlushSettings` Event to _all_ widgets. | | [UIManager:restartKOReader ()](#UIManager:restartKOReader) | Sanely restart KOReader (on supported platforms). | | [UIManager:abort ()](#UIManager:abort) | Sanely abort KOReader (e.g., exit sanely, but with a non-zero return code). | [Issues](#Issues) ------------------ | | | | --- | --- | | [UIManager:widgetInvert-fixme7](#UIManager:widgetInvert-fixme7) | Force close looper when there is unhandled error, otherwise the looper will hang. Any better solution? | Functions --------- **UIManager:show (widget, refreshtype, refreshregion, x, y, refreshdither)** Registers and shows a widget. Widgets are registered in a stack, from bottom to top in registration order, with a few tweaks to handle modals & toasts: toast widgets are stacked together on top, then modal widgets are stacked together, and finally come standard widgets. If you think about how painting will be handled (also bottom to top), this makes perfect sense ;). For more details about refreshtype, refreshregion & refreshdither see the description of [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) . If refreshtype is omitted, no refresh will be enqueued at this time. ### Parameters: * widget a [widget](../modules/ui.widget.widget.html#) object * refreshtype [string](https://www.lua.org/manual/5.1/manual.html#5.4) `"full"`, `"flashpartial"`, `"flashui"`, `"[partial]"`, `"[ui]"`, `"partial"`, `"ui"`, `"fast"`, `"a2"` (optional) * refreshregion a rectangle [Geom](../modules/ui.geometry.html#Geom) object (optional, requires refreshtype to be set) * x integer horizontal screen offset (optional, `0` if omitted) * y integer vertical screen offset (optional, `0` if omitted) * refreshdither boolean `true` if widget requires dithering (optional, requires refreshtype to be set) ### See also: [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) **UIManager:close (widget, refreshtype, refreshregion, refreshdither)** Unregisters a widget. It will be removed from the stack. Will flag uncovered widgets as dirty. For more details about refreshtype, refreshregion & refreshdither see the description of [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) . If refreshtype is omitted, no extra refresh will be enqueued at this time, leaving only those from the uncovered widgets. ### Parameters: * widget a [widget](../modules/ui.widget.widget.html#) object * refreshtype [string](https://www.lua.org/manual/5.1/manual.html#5.4) `"full"`, `"flashpartial"`, `"flashui"`, `"[partial]"`, `"[ui]"`, `"partial"`, `"ui"`, `"fast"`, `"a2"` (optional) * refreshregion a rectangle [Geom](../modules/ui.geometry.html#Geom) object (optional, requires refreshtype to be set) * refreshdither boolean `true` if the refresh requires dithering (optional, requires refreshtype to be set) ### See also: [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) **UIManager:shiftScheduledTasksBy (time)** Shift the execution times of all scheduled tasks. UIManager uses CLOCK\_MONOTONIC (which doesn't tick during standby), so shifting the execution time by a negative value will lead to an execution at the expected time. ### Parameters: * time if positive execute the tasks later, if negative they should be executed earlier **UIManager:scheduleIn (seconds, action, ...)** Schedules a task to be run a certain amount of seconds from now. ### Parameters: * seconds number scheduling delay in seconds (supports decimal values, 1ms resolution). * action function reference to the task to be scheduled (may be anonymous) * ... optional arguments passed to action ### See also: [unschedule](../modules/ui.uimanager.html#UIManager:unschedule) **UIManager:nextTick (action, ...)** Schedules a task for the next UI tick. ### Parameters: * action function reference to the task to be scheduled (may be anonymous) * ... optional arguments passed to action ### See also: [scheduleIn](../modules/ui.uimanager.html#UIManager:scheduleIn) **UIManager:tickAfterNext (action, ...)** Schedules a task to be run two UI ticks from now. Useful to run UI callbacks ASAP without skipping repaints. ### Parameters: * action function reference to the task to be scheduled (may be anonymous) * ... optional arguments passed to action ### Returns: A reference to the initial nextTick wrapper function, necessary if the caller wants to unschedule action _before_ it actually gets inserted in the task queue by nextTick. ### See also: [nextTick](../modules/ui.uimanager.html#UIManager:nextTick) **UIManager:unschedule (action)** Unschedules a previously scheduled task. In order to unschedule anonymous functions, store a reference. ### Parameters: * action function ### See also: [scheduleIn](../modules/ui.uimanager.html#UIManager:scheduleIn) ### Usage: self.anonymousFunction = function() self:regularFunction() end UIManager:scheduleIn(10.5, self.anonymousFunction) UIManager:unschedule(self.anonymousFunction) **UIManager:setDirty (widget, refreshtype, refreshregion, refreshdither)** Mark a window-level widget as dirty, enqueuing a repaint & refresh request for that widget, to be processed on the next UI tick. The second parameter (refreshtype) can either specify a refreshtype (optionally in combination with a refreshregion - which is suggested, and an even more optional refreshdither flag if the content requires dithering); or a function that returns a refreshtype, refreshregion tuple (or a refreshtype, refreshregion, refreshdither triple), which will be called _after_ painting the widget. This is an interesting distinction, because a widget's geometry, usually stored in a field named `dimen`, is (generally) only computed at painting time (e.g., during `paintTo`). The TL;DR being: if you already know the region, you can pass everything by value directly, (it'll make for slightly more readable debug logs), but if the region will only be known after the widget has been painted, pass a function. Note that, technically, it means that stuff passed by value will be enqueued earlier in the refresh stack. In practice, since the stack of (both types of) refreshes is optimized into as few actual refresh ioctls as possible, and that during the next `_repaint` tick (which is when `paintTo` for dirty widgets happens), this shouldn't change much in the grand scheme of things, but it ought to be noted ;). See `_repaint` for more details about how the repaint & refresh queues are processed, and `handleInput` for more details about when those queues are actually drained. What you should essentially remember is that [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) doesn't actually "do" anything visible on its own. It doesn't block, and when it returns, nothing new has actually been painted or refreshed. It just appends stuff to the paint and/or refresh queues. Here's a quick rundown of what each refreshtype should be used for: * `full`: high-fidelity flashing refresh (e.g., large images). Highest quality, but highest latency. Don't abuse if you only want a flash (in this case, prefer `flashui` or `flashpartial`). * `partial`: medium fidelity refresh (e.g., text on a white background). Can be promoted to flashing after `FULL\_REFRESH\_COUNT` refreshes. Don't abuse to avoid spurious flashes. In practice, this means this should mostly always be limited to ReaderUI. * `[partial]`: variant of partial that asks the driver not to merge this update with surrounding ones. Equivalent to partial on platforms where this distinction is not implemented. * `ui`: medium fidelity refresh (e.g., mixed content). Should apply to most UI elements. When in doubt, use this. * `[ui]`: variant of ui that asks the driver not to merge this update with surrounding ones. Equivalent to ui on platforms where this distinction is not implemented. * `fast`: low fidelity refresh (e.g., monochrome content (technically, from any to B&W)). Should apply to most highlighting effects achieved through inversion. Note that if your highlighted element contains text, you might want to keep the unhighlight refresh as `"ui"` instead, for crisper text. (Or optimize that refresh away entirely, if you can get away with it). * `a2`: low fidelity refresh (e.g., monochrome content (technically, from B&W to B&W only)). Should be limited to very specific use-cases (e.g., keyboard) * `flashui`: like `ui`, but flashing. Can be used when showing a UI element for the first time, or when closing one, to avoid ghosting. * `flashpartial`: like `partial`, but flashing (and not counting towards flashing promotions). Can be used when closing an UI element (usually over ReaderUI), to avoid ghosting. You can even drop the region in these cases, to ensure a fullscreen flash. NOTE: On REAGL devices, `flashpartial` will NOT actually flash (by design). As such, even onCloseWidget, you might prefer `flashui` in most instances. NOTE: You'll notice a trend on UI elements that are usually shown _over_ some kind of text (generally ReaderUI) of using `"ui"` onShow & onUpdate, but `"partial"` onCloseWidget. This is by design: `"partial"` is what the reader (ReaderUI) uses, as it's tailor-made for pure text over a white background, so this ensures we resume the usual flow of the reader. The same dynamic is true for their flashing counterparts, in the rare instances we enforce flashes. Any kind of `"partial"` refresh _will_ count towards a flashing promotion after `FULL_REFRESH_COUNT` refreshes, so making sure your stuff only applies to the proper region is key to avoiding spurious large black flashes. That said, depending on your use case, using `"ui"` onCloseWidget can be a perfectly valid decision, and will ensure never seeing a flash because of that widget. Remember that the FM uses `"ui"`, so, if said widgets are shown over the FM, prefer using `"ui"` or `"flashui"` onCloseWidget. The final parameter (refreshdither) is an optional hint for devices with hardware dithering support that this repaint could benefit from dithering (e.g., because it contains an image). As far as the actual lifecycle of a widget goes, the rules are: * What you [show](../modules/ui.uimanager.html#UIManager:show) , you [close](../modules/ui.uimanager.html#UIManager:close) . * If you know the dimensions of the widget (or simply of the region you want to refresh), you can pass it directly: * to [show](../modules/ui.uimanager.html#UIManager:show) (as [show](../modules/ui.uimanager.html#UIManager:show) calls [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) ), * to [close](../modules/ui.uimanager.html#UIManager:close) (as [close](../modules/ui.uimanager.html#UIManager:close) will also call [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) on the remaining dirty and visible widgets, and will also enqueue a refresh based on that if there are dirty widgets). * Otherwise, you can use, respectively, a widget's `Show` & `CloseWidget` handlers for that via [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) calls. This can also be useful if _child_ widgets have specific needs (e.g., flashing, dithering) that they want to inject in the refresh queue. * Remember that events propagate children first (in array order, starting at the top), and that if _any_ event handler returns true, the propagation of that specific event for this widget tree stops _immediately_. (This generally means that, unless you know what you're doing (e.g., a widget that will _always_ be used as a parent), you generally _don't_ want to return true in `Show` or `CloseWidget` handlers). * If any widget requires freeing non-Lua resources (e.g., FFI/C), having a `free` method called from its `CloseWidget` handler is ideal: this'll ensure that _any_ widget including it will be sure that resources are freed when it (or its parent) are closed. * Note that there _is_ a `Close` event, but it has very specific use-cases, generally involving _programmatically_ [close](../modules/ui.uimanager.html#UIManager:close) ing a [show](../modules/ui.uimanager.html#UIManager:show) n widget: * It is broadcast (e.g., sent to every widget in the window stack; the same rules about propagation apply, but only per _window-level widget_) at poweroff/reboot. * It can also be used as a keypress handler by [InputContainer](../modules/ui.widget.container.inputcontainer.html#) , generally bound to the Back key. Please refrain from implementing custom `onClose` methods if that's not their intended purpose ;). On the subject of widgets and child widgets, you might have noticed an unspoken convention across the codebase of widgets having a field called `show_parent`. Since handling this is entirely at the programmer's behest, here's how we usually use it: Basically, we cascade a field named `show_parent` to every child widget that matter (e.g., those that serve an UI purpose, as opposed to, say, a container). This ensures that every subwidget can reference its actual parent (ideally, all the way to the window-level widget it belongs to, i.e., the one that was passed to [show](../modules/ui.uimanager.html#UIManager:show) , hence the name ;)), to, among other things, flag the right widget for repaint via [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) (c.f., those pesky debug warnings when that's done wrong ;p) when they want to request a repaint. This is why you often see stuff doing, when instantiating a new widget, `FancyWidget:new{ show_parent = self.show_parent or self }`; meaning, if I'm already a subwidget, cascade my parent, otherwise, it means I'm a window-level widget, so cascade myself as that widget's parent ;). Another convention (that a few things rely on) is naming a (persistent) MovableContainer wrapping a full widget `movable`, accessible as an instance field. This is useful when it's used for transparency purposes, which, e.g., [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) and [Button](../modules/ui.widget.button.html#) rely on to handle updating translucent widgets properly, by checking if self.show\_parent.movable exists and is currently translucent ;). When I mentioned passing the _right_ widget to [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) earlier, what I meant is that [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) will only actually flag a widget for repaint _if_ that widget is a window-level widget (that is, a widget that was passed to [show](../modules/ui.uimanager.html#UIManager:show) earlier and hasn't been [close](../modules/ui.uimanager.html#UIManager:close) 'd yet), hence the `self.show_parent` convention detailed above to get at the proper widget from within a subwidget ;). Otherwise, you'll notice in debug mode that a debug guard will shout at you if that contract is broken, and what happens in practice is the same thing as if an explicit `nil` were passed: no widgets will actually be flagged for repaint, and only the _refresh_ matching the requested region _will_ be enqueued. This is why you'll find a number of valid use-cases for passing a `nil` here, when you _just_ want a screen refresh without a repaint :). The string `"all"` is also accepted in place of a widget, and will do the obvious thing: flag the _full_ window stack, bottom to top, for repaint, while still honoring the refresh region (e.g., this doesn't enforce a full-screen refresh). ### Parameters: * widget a window-level widget object, `"all"`, or `nil` * refreshtype `"full"`, `"flashpartial"`, `"flashui"`, `"[partial]"`, `"[ui]"`, `"partial"`, `"ui"`, `"fast"`, `"a2"` (or a lambda, see description above) * refreshregion a rectangle [Geom](../modules/ui.geometry.html#Geom) object (optional, omitting it means the region will cover the full screen) * refreshdither boolean `true` if widget requires dithering (optional) ### Usage: UIManager:setDirty(self.widget, "partial") UIManager:setDirty(self.widget, "partial", Geom:new{x=10,y=10,w=100,h=50}) UIManager:setDirty(self.widget, function() return "ui", self.someelement.dimen end) **UIManager:setRefreshRate (rate, night\_rate)** Sets the full refresh rate for e-ink screens (`FULL_REFRESH_COUNT`). This is the amount of `"partial"` refreshes before the next one gets promoted to `"full"`. Also makes the refresh rate persistent in global reader settings. ### Parameters: * rate * night\_rate ### See also: [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) **UIManager:getRefreshRate ()** Returns the full refresh rate for e-ink screens (`FULL_REFRESH_COUNT`). **UIManager:ToggleNightMode (night\_mode)** Toggles Night Mode (i.e., inverted rendering). ### Parameters: * night\_mode **UIManager:getNthTopWidget (n)** Get n.th topmost widget ### Parameters: * n **UIManager:topdown\_widgets\_iter ()** Top-to-bottom widgets iterator NOTE: VirtualKeyboard can be instantiated multiple times, and is a modal, so don't be surprised if you find a couple of instances of it at the top ;). **UIManager:getTopmostVisibleWidget ()** Get the topmost visible widget **UIManager:isSubwidgetShown (widget, max\_depth)** Check if a widget is still in the window stack, or is a subwidget of a widget still in the window stack. ### Parameters: * widget * max\_depth **UIManager:isWidgetShown (widget)** Same as [isSubwidgetShown](../modules/ui.uimanager.html#UIManager:isSubwidgetShown) , but only check window-level widgets (e.g., what's directly registered in the window stack), don't recurse. ### Parameters: * widget **UIManager:quit (exit\_code, implicit)** Signals to quit. An exit\_code of false is not allowed. ### Parameters: * exit\_code * implicit **UIManager:sendEvent (event)** Transmits an [Event](../modules/ui.event.html#Event) to active widgets, top to bottom. Stops at the first handler that returns `true`. Note that most complex widgets are based on ???, which itself will take care of propagating an event to its members. ### Parameters: * event an [Event](../modules/ui.event.html#Event) object **UIManager:broadcastEvent (event)** Transmits an [Event](../modules/ui.event.html#Event) to all registered widgets. ### Parameters: * event an [Event](../modules/ui.event.html#Event) object **UIManager:getTime ()** Returns a time (fts) corresponding to the last tick. This is essentially a cached time.now(), computed at the top of every iteration of the main UI loop, (right before checking/running scheduled tasks). This is mainly useful to compute/schedule stuff in the same time scale as the UI loop (i.e., MONOTONIC), without having to resort to a syscall. It should never be significantly stale, assuming the UI is in use (e.g., there are input events), unless you're blocking the UI for a significant amount of time in a single UI frame. That is to say, its granularity is an UI frame. Prefer the appropriate time function for your needs if you require perfect accuracy or better granularity (e.g., when you're actually working on the event loop _itself_ (UIManager, Input, GestureDetector), or if you're dealing with intra-frame timers). This is _NOT_ wall clock time (REALTIME). **UIManager:getElapsedTimeSinceBoot ()** Returns a time (fts) corresponding to the last UI tick plus the time in standby. **UIManager:forceRePaint ()** Explicitly drain the paint & refresh queues _now_, instead of waiting for the next UI tick. **UIManager:waitForVSync ()** Ask the EPDC to _block_ until our previous refresh ioctl has completed. This interacts sanely with the existing low-level handling of this in `framebuffer_mxcfb` (i.e., it doesn't even try to wait for a marker that fb has already waited for, and vice-versa). Will return immediately if it has already completed. If the device isn't a Linux + MXCFB device, this is a NOP. **UIManager:yieldToEPDC (sleep\_us)** Yield to the EPDC. This is a dumb workaround for potential races with the EPDC when we request a refresh on a specific region, and then proceed to _write_ to the framebuffer, in the same region, very, very, very soon after that. This basically just puts ourselves to sleep for a very short amount of time, to let the kernel do its thing in peace. ### Parameters: * sleep\_us integer Amount of time to sleep for (in µs). (Optional, defaults to 1ms). **UIManager:widgetRepaint (widget, x, y)** Used to repaint a specific sub-widget that isn't on the `_window_stack` itself. Useful to avoid repainting a complex widget when we just want to invert an icon, for instance. No safety checks on x & y _by design_. I want this to blow up if used wrong. This is an explicit repaint _now_: it bypasses and ignores the paint queue (unlike [setDirty](../modules/ui.uimanager.html#UIManager:setDirty) ). ### Parameters: * widget a [widget](../modules/ui.widget.widget.html#) object * x integer left origin of widget (in the Screen buffer, e.g., `widget.dimen.x`) * y integer top origin of widget (in the Screen buffer, e.g., `widget.dimen.y`) **UIManager:widgetInvert (widget, x, y, w, h)** Same idea as [widgetRepaint](../modules/ui.uimanager.html#UIManager:widgetRepaint) , but does a simple `bb:invertRect` on the Screen buffer, without actually going through the widget's `paintTo` method. ### Parameters: * widget a [widget](../modules/ui.widget.widget.html#) object * x integer left origin of the rectangle to invert (in the Screen buffer, e.g., `widget.dimen.x`) * y integer top origin of the rectangle (in the Screen buffer, e.g., `widget.dimen.y`) * w integer width of the rectangle (optional, will use `widget.dimen.w` like `paintTo` would if omitted) * h integer height of the rectangle (optional, will use `widget.dimen.h` like `paintTo` would if omitted) ### See also: [widgetRepaint](../modules/ui.uimanager.html#UIManager:widgetRepaint) **UIManager:run ()** This is the main loop of the UI controller. It is intended to manage input events and delegate them to dialogs. **UIManager:suspend ()** Executes all the operations of a suspension (i.e., sleep) request. This function usually puts the device into suspension. **UIManager:allowStandby ()** Release standby lock. Called once we're done with whatever we were doing in the background. Standby is re-enabled only after all issued prevents are paired with allowStandby for each one. **UIManager:preventStandby ()** Prevent standby. i.e., something is happening in background, yet UI may tick. **UIManager:flushSettings ()** Broadcasts a `FlushSettings` Event to _all_ widgets. **UIManager:restartKOReader ()** Sanely restart KOReader (on supported platforms). **UIManager:abort ()** Sanely abort KOReader (e.g., exit sanely, but with a non-zero return code). Issues ------ **UIManager:widgetInvert-fixme7** Force close looper when there is unhandled error, otherwise the looper will hang. Any better solution? _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * **ui.widget.buttondialog** * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.buttondialog` =============================== A button dialog widget that shows a grid of buttons. ### Usage: local button\_dialog = ButtonDialog:new{ buttons = { { { text = "First row, left side", callback = function() end, hold\_callback = function() end }, { text = "First row, middle", callback = function() end }, { text = "First row, right side", callback = function() end } }, { { text = "Second row, full span", callback = function() end } }, { { text = "Third row, left side", callback = function() end }, { text = "Third row, right side", callback = function() end } } } } _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * **ui.widget.checkmark** * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.checkmark` ============================ Widget that shows a checkmark (`✓`), an empty box (`□`) or nothing of the same size. Example: local CheckMark = require("ui/widget/CheckMark") local parent\_widget = FrameContainer:new{} table.insert(parent\_widget, CheckMark:new{ checkable = false, \-- shows nothing when false, defaults to true checked = function() end, \-- whether the box has a checkmark in it }) UIManager:show(parent\_widget) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * **ui.widget.confirmbox** * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.confirmbox` ============================= Widget that shows a confirmation alert with a message and Cancel/OK buttons. Example: UIManager:show(ConfirmBox:new{ text = \_("Save the document?"), ok\_text = \_("Save"), \-- ok\_text defaults to \_("OK") ok\_callback = function() \-- save document end, }) It is strongly recommended to set a custom `ok_text` describing the action to be confirmed, as demonstrated in the example above. No ok\_text should be specified if the resulting phrase would be longer than three words. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * **ui.widget.bboxwidget** * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.bboxwidget` ============================= BBoxWidget shows a bbox for page cropping. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * **ui.widget.button** * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.button` ========================= A button widget that shows text or an icon and handles callback when tapped. ### Usage: local Button = require("ui/widget/button") local button = Button:new{ text = \_("Press me!"), enabled = false, -- defaults to true callback = some\_callback\_function, width = Screen:scaleBySize(50), bordersize = Screen:scaleBySize(3), margin = 0, padding = Screen:scaleBySize(2), } _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * **ui.widget.container.alphacontainer** * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.alphacontainer` =========================================== AlphaContainer will paint its content (a single widget) at the specified opacity level (0..1) Example: local alpha alpha = AlphaContainer:new{ alpha = 0.7, FrameContainer:new{ background = Blitbuffer.COLOR\_WHITE, bordersize = Size.border.default, margin = 0, padding = Size.padding.default } } _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * **ui.widget.container.bottomcontainer** * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.bottomcontainer` ============================================ BottomContainer contains its content (1 widget) at the bottom of its own dimensions _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * **ui.widget.container.inputcontainer** * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.inputcontainer` =========================================== An InputContainer is a WidgetContainer that handles user input events including multi touches and key presses. See [InputContainer:registerTouchZones](../modules/ui.widget.container.inputcontainer.html#InputContainer:registerTouchZones) for examples of how to listen for multi touch input. This example illustrates how to listen for a key press input event via the `key_events` hashmap: key\_events = { PanBy20 = { { "Shift", Input.group.Cursor }, \-- Shift + (any member of) Cursor event = "Pan", args = 20, is\_inactive = true, }, PanNormal = { { Input.group.Cursor }, \-- Any member of Cursor (itself an array) event = "Pan", args = 10, }, Exit = { { "Alt", "F4" }, \-- Alt + F4 { "Ctrl", "Q" }, \-- Ctrl + Q }, Home = { { { "Home", "H" } }, \-- Any of Home or H (note the extra nesting!) }, End = { { "End" }, \-- NOTE: For a \*single\* key, we can forgo the nesting (c.f., match @ device/key). }, }, It is recommended to reference configurable sequences from another table and to store that table as a configuration setting. [Functions](#Functions) ------------------------ | | | | --- | --- | | [InputContainer:registerTouchZones (zones)](#InputContainer:registerTouchZones) | Register touch zones into this InputContainer. | | [InputContainer:updateTouchZonesOnScreenResize (new\_screen\_dimen)](#InputContainer:updateTouchZonesOnScreenResize) | Updates touch zones based on new screen dimensions. | Functions --------- **InputContainer:registerTouchZones (zones)** Register touch zones into this InputContainer. See gesturedetector for a list of supported gestures. NOTE: You are responsible for calling self:[updateTouchZonesOnScreenResize](../modules/ui.widget.container.inputcontainer.html#InputContainer:updateTouchZonesOnScreenResize) with the new screen dimensions whenever the screen is rotated or resized. ### Parameters: * zones [table](https://www.lua.org/manual/5.1/manual.html#5.5) list of touch zones to register ### Usage: local InputContainer = require("ui/widget/container/inputcontainer") local test\_widget = InputContainer:new{} test\_widget:registerTouchZones({ { id = "foo\_tap", ges = "tap", \-- This binds the handler to the full screen screen\_zone = { ratio\_x = 0, ratio\_y = 0, ratio\_w = 1, ratio\_h = 1, }, handler = function(ges) print('User tapped on screen!') return true end }, { id = "foo\_swipe", ges = "swipe", \-- This binds the handler to bottom half of the screen screen\_zone = { ratio\_x = 0, ratio\_y = 0.5, ratio\_w = 1, ratio\_h = 0.5, }, handler = function(ges) print("User swiped at the bottom with direction:", ges.direction) return true end }, }) require("ui/uimanager"):show(test\_widget) **InputContainer:updateTouchZonesOnScreenResize (new\_screen\_dimen)** Updates touch zones based on new screen dimensions. ### Parameters: * new\_screen\_dimen [ui.geometry.Geom](../modules/ui.geometry.html#Geom) new screen dimensions _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * **ui.widget.container.centercontainer** * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.centercontainer` ============================================ CenterContainer centers its content (1 widget) within its own dimensions _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * **ui.widget.container.framecontainer** * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.framecontainer` =========================================== A FrameContainer is some graphics content (1 widget) that is surrounded by a frame Example: local frame frame = FrameContainer:new{ radius = Size.radius.window, bordersize = Size.border.window, padding = 0, margin = 0, background = Blitbuffer.COLOR\_WHITE, VerticalGroup:new{ \-- etc } } _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * **ui.widget.container.leftcontainer** * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.leftcontainer` ========================================== LeftContainer aligns its content (1 widget) at the left of its own dimensions _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * **ui.widget.container.movablecontainer** * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.movablecontainer` ============================================= A MovableContainer can have its content moved on screen with Swipe/Hold/Pan. Can optionally apply alpha transparency to its content. With Swipe: the widget will be constrained to screen borders. With Hold and pan, the widget can overflow the borders. Hold with no move will reset the widget to its original position. If the widget has not been moved or is already at its original position, Hold will toggle between full opacity and 0.7 transparency. This container's content is expected to not change its width and height. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * **ui.widget.container.rightcontainer** * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.rightcontainer` =========================================== RightContainer aligns its content (1 widget) at the right of its own dimensions _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * **ui.widget.container.widgetcontainer** * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.widgetcontainer` ============================================ WidgetContainer is a container for one or multiple Widgets. It is the base class for all the container widgets. Child widgets are stored in WidgetContainer as conventional array items: WidgetContainer:new{ ChildWidgetFoo:new{}, ChildWidgetBar:new{}, ... } It handles event propagation and painting (with different alignments) for its children. [Functions](#Functions) ------------------------ | | | | --- | --- | | [WidgetContainer:clear (skip\_free)](#WidgetContainer:clear) | Deletes all child widgets. | | [WidgetContainer:handleEvent (event)](#WidgetContainer:handleEvent) | WidgetContainer will pass event to its children by calling their handleEvent methods. | Functions --------- **WidgetContainer:clear (skip\_free)** Deletes all child widgets. ### Parameters: * skip\_free HorizontalGroup & VerticalGroup call us after already having called free, so allow skipping this one ;). **WidgetContainer:handleEvent (event)** WidgetContainer will pass event to its children by calling their handleEvent methods. If no child consumes the event (by returning true), it will try to react to the event by itself. ### Parameters: * event [ui.event.Event](../modules/ui.event.html#Event) ### Returns: bool true if event is consumed, otherwise false. A consumed event will not be sent to other widgets. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * **ui.widget.container.scrollablecontainer** * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.scrollablecontainer` ================================================ ScrollableContainer allows scrolling its content (1 widget) within its own dimensions This scrollable container needs to be known as widget.cropping\_widget in the widget using it that is passed to UIManager:show() for UIManager to ensure proper interception of inner widget self-repainting/invert (mostly used when flashing for UI feedback that we want to limit to the cropped area). If we notice some inner element flashing leaking outside the scrollable area, it's probably some 'show\_parent' forwarding missing from the main widget to some of the inner widgets: chase the missing ones and add them. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * **ui.widget.container.topcontainer** * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.topcontainer` ========================================= TopContainer contains its content (1 widget) at the top of its own dimensions _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * **ui.widget.container.underlinecontainer** * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.container.underlinecontainer` =============================================== An UnderlineContainer is a WidgetContainer that is able to paint a line under its child node. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * **ui.widget.datetimewidget** * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.datetimewidget` ================================= Widget for setting the date or time. Example for input a time: local DateTimeWidget = require("ui/widget/datetimewidget") local [\_](../modules/gettext.html#) = require("gettext") local time\_widget = DateTimeWidget:new{ hour = 10, min = 30, ok\_text = \_("Set time"), title\_text = \_("Set time"), info\_text = \_("Some information"), callback = function(time) \-- use time.hour and time.min here end } UIManager:show(time\_widget) Example for input a date: local DateTimeWidget = require("ui/widget/datetimewidget") local [\_](../modules/gettext.html#) = require("gettext") local date\_widget = DateTimeWidget:new{ year = 2021, month = 12, day = 31, ok\_text = \_("Set date"), title\_text = \_("Set date"), callback = function(time) \-- use time.year, time.month, time.day here end } UIManager:show(date\_widget) Example to input a duration in days, hours and minutes: local DateTimeWidget = require("ui/widget/datetimewidget") local [\_](../modules/gettext.html#) = require("gettext") local date\_widget = DateTimeWidget:new{ day = 5, hour = 12, min = 0, ok\_text = \_("Set"), title\_text = \_("Set duration"), callback = function(time) \-- use time.day, time.hour, time.min here end } UIManager:show(date\_widget) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * **ui.widget.iconbutton** * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.iconbutton` ============================= Button with a big icon image! Designed for touch devices. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * **ui.widget.horizontalgroup** * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.horizontalgroup` ================================== A layout widget that puts objects besides each other. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * **ui.widget.htmlboxwidget** * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.htmlboxwidget` ================================ HTML widget (without scroll bars). _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * **ui.widget.eventlistener** * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.eventlistener` ================================ The EventListener is an interface that handles events. This is the base class for [Widget](../modules/ui.widget.widget.html#) EventListeners have a rudimentary event handler/dispatcher that will call a method "onEventName" for an event with name "EventName" [Functions](#Functions) ------------------------ | | | | --- | --- | | [EventListener:handleEvent (event)](#EventListener:handleEvent) | Invoke handler method for an event. | Functions --------- **EventListener:handleEvent (event)** Invoke handler method for an event. Handler method name is determined by [ui.event.Event](../modules/ui.event.html#Event) 's handler field. By default, it's `"on"..Event.name`. ### Parameters: * event [ui.event.Event](../modules/ui.event.html#Event) ### Returns: bool return true if event is consumed successfully. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * **ui.widget.iconwidget** * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.iconwidget` ============================= _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * **ui.widget.imageviewer** * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.imageviewer` ============================== ImageViewer displays an image with some simple manipulation options. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * **ui.widget.imagewidget** * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.imagewidget` ============================== ImageWidget shows an image from a file or memory. Show image from file example: UIManager:show(ImageWidget:new{ file = "resources/koreader.png", \-- Make sure alpha is set to true if png has transparent background \-- alpha = true, }) Show image from memory example: UIManager:show(ImageWidget:new{ \-- bitmap\_buffer should be a block of memory that holds the raw \-- uncompressed bitmap. image = bitmap\_buffer, }) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * **ui.widget.infomessage** * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.infomessage` ============================== Widget that displays an informational message. It vanishes on key press or after a given timeout. Example: local InfoMessage = require("ui/widget/infomessage") local UIManager = require("ui/uimanager") local \_ = require("gettext") local Screen = require("device").screen local sample sample = InfoMessage:new{ text = \_("Some message"), \-- Usually the height of a InfoMessage is self-adaptive. If this field is actively set, a \-- scrollbar may be shown. This variable is usually helpful to display a large chunk of text \-- which may exceed the height of the screen. height = Screen:scaleBySize(400), \-- Set to false to hide the icon, and also the span between the icon and text. show\_icon = false, timeout = 5, \-- This widget will vanish in 5 seconds. } UIManager:show(sample) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * **ui.widget.keyboardlayoutdialog** * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.keyboardlayoutdialog` ======================================= This widget displays a keyboard layout dialog. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * **ui.widget.inputdialog** * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.inputdialog` ============================== Widget for taking user input. Example: local InputDialog = require("ui/widget/inputdialog") local [UIManager](../modules/ui.uimanager.html#) = require("ui/uimanager") local [logger](../modules/logger.html#) = require("logger") local [\_](../modules/gettext.html#) = require("gettext") local sample\_input sample\_input = InputDialog:new{ title = \_("Dialog title"), input = "default value", \-- A placeholder text shown in the text box. input\_hint = \_("Hint text"), \-- input\_type = nil, -- default for text \-- A description shown above the input. description = \_("Some more description."), \-- text\_type = "password", buttons = { { { text = \_("Cancel"), id = "close", callback = function() UIManager:close(sample\_input) end, }, { text = \_("Save"), \-- button with is\_enter\_default set to true will be \-- triggered after user press the enter key from keyboard is\_enter\_default = true, callback = function() logger.dbg("Got user input as raw text:", sample\_input:getInputText()) logger.dbg("Got user input as value:", sample\_input:getInputValue()) end, }, } }, } UIManager:show(sample\_input) sample\_input:onShowKeyboard() To get a full screen text editor, use: fullscreen = true, \-- No need to provide any height and width. condensed = true, allow\_newline = true, cursor\_at\_end = false, \-- and one of these: add\_scroll\_buttons = true, add\_nav\_bar = true, To add |Save|Close| buttons, use: save\_callback = function(content, closing) \-- ...Deal with the edited content... if closing then UIManager:nextTick( \-- Stuff to do when InputDialog is closed, if anything. ) end return nil \-- success, default notification shown return true, success\_notif\_text return false, error\_infomsg\_text end To additionally add a Reset button and have |Reset|Save|Close|, use: reset\_callback = function() return original\_content \-- success return original\_content, success\_notif\_text return nil, error\_infomsg\_text end If you don't need more buttons than these, use these options for consistency between dialogs, and don't provide any buttons. Text used on these buttons and their messages and notifications can be changed by providing alternative text with these additional options: reset\_button\_text save\_button\_text close\_button\_text close\_unsaved\_confirm\_text close\_cancel\_button\_text close\_discard\_button\_text close\_save\_button\_text close\_discarded\_notif\_text If it would take the user more than half a minute to recover from a mistake, a "Cancel" button _must_ be added to the dialog. The cancellation button should be kept on the left and the button executing the action on the right. It is strongly recommended to use a text describing the action to be executed, as demonstrated in the example above. If the resulting phrase would be longer than three words it should just read "OK". _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Fields](#Fields) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * **ui.widget.keyvaluepage** * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.keyvaluepage` =============================== Widget that presents a multi-page to show key value pairs. Example: local Foo = KeyValuePage:new{ title = "Statistics", kv\_pairs = { {"Current period", "00:00:00"}, \-- single or more "-" will generate a solid line "----------------------------", {"Page to read", "5"}, {"Time to read", "00:01:00"}, {"Press me", "will invoke the callback", callback = function() print("hello") end }, }, } UIManager:show(Foo) [Fields](#Fields) ------------------ | | | | --- | --- | | [self.page\_return\_arrow](#self.page_return_arrow) | | Fields ------ **self.page\_return\_arrow** _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Fields](#Fields) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * **ui.widget.linewidget** * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.linewidget` ============================= Widget that displays a line. [Fields](#Fields) ------------------ | | | | --- | --- | | [empty\_segments](#empty_segments) | | Fields ------ **empty\_segments** _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * **ui.widget.multiconfirmbox** * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.multiconfirmbox` ================================== Widget that shows a message and cancel/choice1/choice2 buttons Example: UIManager:show(MultiConfirmBox:new{ text = T( \_("Set %1 as fallback font?"), face), choice1\_text = \_("Default"), choice1\_callback = function() \-- set as default font end, choice2\_text = \_("Fallback"), choice2\_callback = function() \-- set as fallback font end, }) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * **ui.widget.listview** * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.listview` =========================== Widget component that handles pagination for a list of items. Example: local list\_view = ListView:new{ height = Screen:scaleBySize(400), width = Screen:scaleBySize(200), page\_update\_cb = function(curr\_page\_num, total\_pages) \-- This callback function will be called whenever a page \-- turn event is triggered. You can use it to update \-- information on the parent widget. end, items = { FrameContainer:new{ bordersize = 0, background = Blitbuffer.COLOR\_WHITE, TextWidget:new{ text = "foo", face = Font:getFace("cfont"), } }, FrameContainer:new{ bordersize = 0, background = Blitbuffer.COLOR\_LIGHT\_GRAY, TextWidget:new{ text = "bar", face = Font:getFace("cfont"), } }, \-- You can add as many widgets as you want here... } } Note that ListView is created mainly to be used as a building block for other widgets like [NetworkSetting](../modules/ui.widget.networksetting.html#) , so they can share the same pagination code. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * **ui.widget.networksetting** * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.networksetting` ================================= Network setting widget. Example: local network\_list = { { ssid = "foo", signal\_level = -58, flags = "\[WPA2-PSK-CCMP\]\[ESS\]", signal\_quality = 84, password = "123abc", connected = true, }, { ssid = "bar", signal\_level = -258, signal\_quality = 44, flags = "\[WEP\]\[ESS\]", }, } UIManager:show(require("ui/widget/networksetting"):new{ network\_list = network\_list, connect\_callback = function() \-- connect\_callback will be called when a \*connect\* (NOT disconnect) \-- attempt has been successful. \-- You can update UI widgets in the callback. end, disconnect\_callback = function() \-- This one will fire unconditionally after a disconnect attempt. end, }) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * **ui.widget.multiinputdialog** * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.multiinputdialog` =================================== Widget for taking multiple user inputs. Example for input of two strings and a number: local MultiInputDialog = require("ui/widget/multiinputdialog") local [UIManager](../modules/ui.uimanager.html#) = require("ui/uimanager") local [\_](../modules/gettext.html#) = require("gettext") local sample\_input sample\_input = MultiInputDialog:new{ title = \_("Title to show"), fields = { { description = \_("Describe this field"), \-- input\_type = nil, -- default for text text = \_("First input"), hint = \_("Name"), }, { text = "", hint = \_("Address"), }, { description = \_("Enter a number"), input\_type = "number", text = 666, hint = 123, }, }, buttons = { { { text = \_("Cancel"), id = "close", callback = function() UIManager:close(sample\_input) end }, { text = \_("Info"), callback = function() \-- do something end }, { text = \_("Use settings"), callback = function(touchmenu\_instance) local fields = sample\_input:getFields() \-- check for user input if fields\[1\] ~= "" and fields\[2\] ~= "" and fields\[3\] ~= 0 then \-- insert code here UIManager:close(sample\_input) \-- If we have a touch menu: Update menu entries, \-- when called from a menu if touchmenu\_instance then touchmenu\_instance:updateItems() end else \-- not all fields where entered end end }, }, }, } UIManager:show(sample\_input) sample\_input:onShowKeyboard() It is strongly recommended to use a text describing the action to be executed, as demonstrated in the example above. If the resulting phrase would be longer than three words it should just read "OK". _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * **ui.widget.overlapgroup** * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.overlapgroup` =============================== A layout widget that puts objects above each other. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * **ui.widget.notification** * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.notification` =============================== Widget that displays a tiny notification at the top of the screen. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * **ui.widget.progresswidget** * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.progresswidget` ================================= Widget for displaying progress bar. Configurable attributes: * width * height * margin\_v -- vertical margin between border and fill bar * margin\_h -- horizontal margin between border and fill bar * radius * bordersize * bordercolor * bgcolor * fillcolor -- color of the main fill bar * altcolor -- color of the alt fill bar * ticks (list) -- default to nil, use this if you want to insert markers * tick\_width * last -- maximum tick, used with ticks Example: local foo\_bar = ProgressWidget:new{ width = Screen:scaleBySize(400), height = Screen:scaleBySize(10), percentage = 50/100, } UIManager:show(foo\_bar) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * **ui.widget.numberpickerwidget** * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.numberpickerwidget` ===================================== A customizable number picker. Example: local NumberPickerWidget = require("ui/widget/numberpickerwidget") local numberpicker = NumberPickerWidget:new{ \-- for floating point (decimals), use something like "%.2f" precision = "%02d", value = 0, value\_min = 0, value\_max = 23, value\_step = 1, value\_hold\_step = 4, wrap = true, } [Functions](#Functions) ------------------------ | | | | --- | --- | | [NumberPickerWidget:update ()](#NumberPickerWidget:update) | Update. | | [NumberPickerWidget:changeValue (value, step, max, min, wrap)](#NumberPickerWidget:changeValue) | Change value. | | [NumberPickerWidget:getDaysInMonth (month, year)](#NumberPickerWidget:getDaysInMonth) | Get days in month. | | [NumberPickerWidget:getValue ()](#NumberPickerWidget:getValue) | Get value. | Functions --------- **NumberPickerWidget:update ()** Update. **NumberPickerWidget:changeValue (value, step, max, min, wrap)** Change value. ### Parameters: * value * step * max * min * wrap **NumberPickerWidget:getDaysInMonth (month, year)** Get days in month. ### Parameters: * month * year **NumberPickerWidget:getValue ()** Get value. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * **ui.widget.openwithdialog** * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.openwithdialog` ================================= This widget displays an open with dialog. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * **ui.widget.radiobuttontable** * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.radiobuttontable` =================================== A button table to be used in dialogs and widgets. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * **ui.widget.qrmessage** * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.qrmessage` ============================ Widget that displays a qr code. It vanishes on key press or after a given timeout. Example: local UIManager = require("ui/uimanager") local \_ = require("gettext") local Screen = require("device").screen local sample sample = QRMessage:new{ text = \_("my message"), height = Screen:scaleBySize(400), width = Screen:scaleBySize(400), timeout = 5, \-- This widget will vanish in 5 seconds. } UIManager:show(sample) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * **ui.widget.radiobuttonwidget** * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.radiobuttonwidget` ==================================== Widget that allows selecting an entry from a [RadioButton](../modules/ui.widget.radiobuttontable.html#) list. Example: local RadioButtonWidget = require("ui/widget/radiobuttonwidget") local radio\_buttons = { { {text = \_("Radio 1"), provider = 1} }, { {text = \_("Radio 2"), provider = 2, checked = true} }, { {text = \_("Radio 3"), provider = "identifier"} }, } UIManager:show(RadioButtonWidget:new{ title\_text = \_("Example Title"), info\_text = \_("Some more information"), cancel\_text = \_("Close"), ok\_text = \_("Apply"), width\_factor = 0.9, radio\_buttons = radio\_buttons, callback = function(radio) if radio.provider == 1 then \-- do something here elseif radio.provider == 2 then \-- do some other things here elseif radio.provider == "identifier" then \-- or do a third thing here end end, }) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * **ui.widget.scrollhtmlwidget** * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.scrollhtmlwidget` =================================== HTML widget with vertical scroll bar. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * **ui.widget.scrolltextwidget** * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.scrolltextwidget` =================================== Text widget with vertical scroll bar. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * **ui.widget.textviewer** * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.textviewer` ============================= Displays some text in a scrollable view. ### Usage: local textviewer = TextViewer:new{ title = \_("I can scroll!"), text = \_("I'll need to be longer than this example to scroll."), } UIManager:show(textviewer) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * **ui.widget.toggleswitch** * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.toggleswitch` =============================== Displays a button that toggles between states. Used in bottom configuration panel. ### Usage: local ToggleSwitch = require("ui/widget/toggleswitch") _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * **ui.widget.textwidget** * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.textwidget` ============================= A TextWidget puts a string on a single line. Example: UIManager:show(TextWidget:new{ text = "Make it so.", face = Font:getFace("cfont"), bold = true, fgcolor = Blitbuffer.COLOR\_DARK\_GRAY, }) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * **ui.widget.trapwidget** * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.trapwidget` ============================= Invisible full screen widget for catching UI events. (for use with or by Trapper to interrupt its processing). Can optionally display a text message at bottom left of screen (ie: "Loading…") _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Issues](#Issues) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * **ui.widget.textboxwidget** * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.textboxwidget` ================================ A TextWidget that handles long text wrapping Example: local Foo = TextBoxWidget:new{ face = Font:getFace("cfont", 25), text = 'We can show multiple lines.\\nFoo.\\nBar.', \-- width = math.floor(Screen:getWidth() \* 2/3), } UIManager:show(Foo) [Functions](#Functions) ------------------------ | | | | --- | --- | | [TextBoxWidget:\_renderText (start\_row\_idx, end\_row\_idx)](#TextBoxWidget:_renderText) | Lays out text. | [Issues](#Issues) ------------------ | | | | --- | --- | | [TextBoxWidget:\_renderText-todo8](#TextBoxWidget:_renderText-todo8) | Be more clever with RTL, and at bidi boundaries, may be depending on line.para_is_rtl and xglyph.bidi\_level | | [TextBoxWidget:\_renderText-todo8-fixme9](#TextBoxWidget:_renderText-todo8-fixme9) | This might break if kerning is enabled. | Functions --------- **TextBoxWidget:\_renderText (start\_row\_idx, end\_row\_idx)** Lays out text. ### Parameters: * start\_row\_idx * end\_row\_idx Issues ------ **TextBoxWidget:\_renderText-todo8** Be more clever with RTL, and at bidi boundaries, may be depending on line.para_is_rtl and xglyph.bidi\_level **TextBoxWidget:\_renderText-todo8-fixme9** This might break if kerning is enabled. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * **userpatch** * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `userpatch` ================== Allows applying developer patches while running KOReader. The contents in `koreader/patches/` are applied on calling `userpatch.applyPatches(priority)`. [Functions](#Functions) ------------------------ | | | | --- | --- | | [applyPatches (priority)](#applyPatches) | This function applies lua patches from `/koreader/patches` | Functions --------- **applyPatches (priority)** This function applies lua patches from `/koreader/patches` ### Parameters: * priority [string](https://www.lua.org/manual/5.1/manual.html#5.4) ... one of the defined priorities in the userpatch hashtable _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * **ui.widget.widget** * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.widget` ========================= This is a generic Widget interface, which is the base class for all other widgets. Widgets can be queried about their size and can be painted on screen. that's it for now. Probably we need something more elaborate later. If the table that was given to us as parameter has an "init" method, it will be called. use this to set _instance_ variables rather than class variables. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Widget:extend (subclass)](#Widget:extend) | Use this method to define a widget subclass that's inherited from a base class widget. | | [Widget:new (o)](#Widget:new) | Use this method to initiate an instance of a class. | | [Widget:paintTo (bb, x, y)](#Widget:paintTo) | Paint widget to a BlitBuffer. | [Tables](#Tables) ------------------ | | | | --- | --- | | [Widget](#Widget) | Widget base class | Functions --------- **Widget:extend (subclass)** Use this method to define a widget subclass that's inherited from a base class widget. It only setups the metatable (or prototype chain) and will not initiate a real instance, i.e. call self:init(). ### Parameters: * subclass [table](https://www.lua.org/manual/5.1/manual.html#5.5) ### Returns: [Widget](../modules/ui.widget.widget.html#Widget) **Widget:new (o)** Use this method to initiate an instance of a class. Do NOT use it for class definitions because it also calls self:init(). ### Parameters: * o [table](https://www.lua.org/manual/5.1/manual.html#5.5) ### Returns: [Widget](../modules/ui.widget.widget.html#Widget) **Widget:paintTo (bb, x, y)** Paint widget to a BlitBuffer. ### Parameters: * bb BlitBuffer BlitBuffer to paint to. If it's the screen BlitBuffer, then widget will show up on screen refresh. * x integer x offset within the BlitBuffer * y integer y offset within the BlitBuffer Tables ------ **Widget** Widget base class _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * **ui.widget.touchmenu** * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.touchmenu` ============================ TouchMenu widget for hierarchical menus. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * **ui.widget.verticalgroup** * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `ui.widget.verticalgroup` ================================ A layout widget that puts objects under each other. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * **version** Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `version` ================ This module helps with retrieving version information. [Functions](#Functions) ------------------------ | | | | --- | --- | | [Version:getCurrentRevision ()](#Version:getCurrentRevision) | Returns current KOReader git-rev. | | [Version:getNormalizedVersion (rev)](#Version:getNormalizedVersion) | Returns normalized version of KOReader git-rev input string. | | [Version:getNormalizedCurrentVersion ()](#Version:getNormalizedCurrentVersion) | Returns current version of KOReader. | | [Version:getShortVersion ()](#Version:getShortVersion) | Returns current version of KOReader, in short form. | | [Version:getBuildDate ()](#Version:getBuildDate) | Returns the release date of the current version of KOReader, YYYYmmdd, in UTC. | | [Version:getLastLogLine ()](#Version:getLastLogLine) | Get last line in `VERSION_LOG_FILE`. | | [Version:appendToLogFile (text)](#Version:appendToLogFile) | Append text to a `VERSION_LOG_FILE`. | | [Version:updateVersionLog (model)](#Version:updateVersionLog) | Updates `VERSION_LOG_FILE` and keep the file small | Functions --------- **Version:getCurrentRevision ()** Returns current KOReader git-rev. ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) full KOReader git-rev such as `v2015.11-982-g704d4238` **Version:getNormalizedVersion (rev)** Returns normalized version of KOReader git-rev input string. ### Parameters: * rev [string](https://www.lua.org/manual/5.1/manual.html#5.4) full KOReader git-rev such as `v2015.11-982-g704d4238` ### Returns: 1. int version in the form of a 12 digit number such as `201511000982` 2. [string](https://www.lua.org/manual/5.1/manual.html#5.4) short git commit version hash such as `704d4238` **Version:getNormalizedCurrentVersion ()** Returns current version of KOReader. ### Returns: 1. int version in the form of a 12 digit number such as `201511000982` 2. [string](https://www.lua.org/manual/5.1/manual.html#5.4) short git commit version hash such as `704d4238` ### See also: [getNormalizedVersion](../modules/version.html#Version:getNormalizedVersion) **Version:getShortVersion ()** Returns current version of KOReader, in short form. ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) version, without the git details (i.e., at most YYYY.MM.P-R) **Version:getBuildDate ()** Returns the release date of the current version of KOReader, YYYYmmdd, in UTC. Technically closer to the build date, but close enough where official builds are concerned ;). ### Returns: int date **Version:getLastLogLine ()** Get last line in `VERSION_LOG_FILE`. ### Returns: last line in `VERSION_LOG_FILE` or an empty string **Version:appendToLogFile (text)** Append text to a `VERSION_LOG_FILE`. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text to be appended **Version:updateVersionLog (model)** Updates `VERSION_LOG_FILE` and keep the file small ### Parameters: * model [string](https://www.lua.org/manual/5.1/manual.html#5.4) device model (may contain spaces) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Basic](#Basic) * [How to pull the latest code from the KOReader repository](#How_to_pull_the_latest_code_from_the_KOReader_repository) * [Getting the latest patches from other developer's branch](#Getting_the_latest_patches_from_other_developer_s_branch) * [Quickly testing a patch from a PR](#Quickly_testing_a_patch_from_a_PR) * [Submitting code change](#Submitting_code_change) Topics ------ * **Collaborating with Git** * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Collaborating with Git ====================== Basic ----- If you are new to Git, you might find some of the following resources useful: * [GitHub's blog post](https://github.com/blog/120-new-to-git) * [http://try.github.com/](https://try.github.com/) * [http://sixrevisions.com/resources/git-tutorials-beginners/](http://sixrevisions.com/resources/git-tutorials-beginners/) * [http://rogerdudler.github.io/git-guide/](http://rogerdudler.github.io/git-guide/) How to pull the latest code from the KOReader repository -------------------------------------------------------- First you need to add the official repo to your remote repo list: git remote add upstream [\[email protected\]](/cdn-cgi/l/email-protection) :koreader/koreader.git For koreader-base that is: git remote add upstream [\[email protected\]](/cdn-cgi/l/email-protection) :koreader/koreader-base.git You can verify the remote repo is successfully added by using: git remote -v show Now you can pull the latest development code: git pull upstream master If you've made some local changes, you'll often want to rebase your local commits on top of the most recent upstream: git pull -r upstream master You might want to test that in a new branch first. Getting the latest patches from other developer's branch -------------------------------------------------------- First you need to add their own repo to your remote repo list: git remote add NAME REPO\_ADDR Where `NAME` is the alias name you want to give for the remote repo, for example: git remote add dpavlin git://github.com/dpavlin/kindlepdfviewer.git You can verify the remote repo was successfully added by using: git remote -v show Now you can merge their branch to your local branch. But before you do this, I recommend you create a new branch first and do experimental stuff on top of the new branch so you won't mess with the master branch: git checkout -b NEW\_TEST\_BRANCH\_NAME git pull dpavlin REMOTE\_BRANCH\_NAME Quickly testing a patch from a PR --------------------------------- The following example is not directly related to Git, but exclusive to GitHub, although Bitbucket, GitLab etc. tend to provide similar mechanisms. First, you have to figure out the PR number. It'll be prominently listed on the PR page as well as in the URL. As an example, we'll take `#6282`. Now you can fetch and checkout that code using the GitHub-specific reference: git fetch upstream pull/6282/head git checkout FETCH\_HEAD Once you've finished testing, you can just `git checkout master` and it'll be as if nothing ever happened. Submitting code change ---------------------- How to submit my change on top of current development (which is master branch at origin). This assumes that your repository clone have `origin` which points to upstream official repository as shown below. If you did checkout from your forked copy, and origin points to your local fork, you can always add another remote and replace `origin` in this instructions with another remote name. dpavlin$ git remote -v | grep origin origin [email protected]:koreader/koreader.git (fetch) origin [email protected]:koreader/koreader.git (push) dpavlin$ git fetch origin dpavlin$ git checkout -b issue-235-toc-position origin/master M djvulibre M kpvcrlib/crengine M mupdf Branch issue-235-toc-position set up to track remote branch master from origin. Switched to a new branch 'issue-235-toc-position' integrate changes from this issue (or diff, patch, git cherry-pick sha-commit) dpavlin$ git add -p unireader.lua interactively select just changes which are not whitespace dpavlin$ git commit --author NuPogodi -m 'TOC position on current place in the tree #235' [issue-235-toc-position 25edd31] TOC position on current place in the tree #235 Author: NuPogodi <[email protected]> 1 file changed, 9 insertions(+), 5 deletions(-) dpavlin$ git show verify that commit looks sane, if I wasn't happy I would do `git --commit --amend` dpavlin$ git push dpavlin issue-235-toc-position Counting objects: 5, done. Delta compression using up to 2 threads. Compressing objects: 100% (3/3), done. Writing objects: 100% (3/3), 489 bytes, done. Total 3 (delta 2), reused 0 (delta 0) To [email protected]:dpavlin/koreader.git * [new branch] issue-235-toc-position -> issue-235-toc-position This assumes that your copy of github source is named `dpavlin` as here: dpavlin$ git remote -v | grep dpavlin dpavlin [email protected]:dpavlin/koreader.git (fetch) dpavlin [email protected]:dpavlin/koreader.git (push) Go to your github page and issue pull request _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [LuaSettings](#LuaSettings) * [DocSettings](#DocSettings) * [SQLite3](#SQLite3) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * **DataStore** * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Data Store ========== LuaSettings ----------- TODO DocSettings ----------- TODO SQLite3 ------- KOReader ships with the SQLite3 library, which is a great embedded database for desktop and mobile applications. [lua-ljsqlite3](http://scilua.org/ljsqlite3.html) is used to export SQLite3 C interfaces as LUA functions. Following is a quick example: local SQ3 = require("lua-ljsqlite3/init") local conn = SQ3.open("/path/to/database.sqlite3") \-- Execute SQL commands separated by the ';' character: conn:exec(\[\[\ -- time is in unit of seconds\ CREATE TABLE IF NOT EXISTS page\_read\_time(page INTEGER, time INTEGER);\ CREATE TABLE IF NOT EXISTS book\_property(title TEXT, author TEXT, language TEXT);\ \]\]) \-- Prepared statements are supported, with this you can bind different values \-- to the same statement. Let's set the read time for the first 10 pages in the \-- book to 5 seconds local stmt = conn:prepare("INSERT INTO page\_read\_time VALUES(?, ?)") for i=1,10 do stmt:reset():bind(i, 5):step() end \-- Now we can retrieve all read time stats for the first 10 pages: local results = conn:exec("SELECT \* FROM page\_read\_time") \-- Records are by column. \-- Access to results via column numbers or names: assert(results\[1\] == results.page) assert(results\[2\] == results.time) \-- Nested indexing corresponds to the record(row) number, access value for 4th page: assert(results\[1\]\[4\] == 4) assert(results\[2\]\[4\] == 5) \-- access value for 2nd page: assert(results.page\[2\] == 2) assert(results.time\[2\] == 5) \-- Convenience function returns multiple values for one record: local page, time = conn:rowexec("SELECT \* FROM page\_read\_time WHERE page==3") print(page, time) \--> 3 5 \-- We can also use builtin aggregate functions to do simple analytic task local total\_time = conn:rowexec("SELECT SUM(time) FROM page\_read\_time") print(total\_time) \--> 50 conn:close() \-- Do not forget to close stmt after you are done For more information on supported SQL queries, check out [SQLite3's official documentation](https://www.sqlite.org/docs.html) . _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * **Development Guide** * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Development Guide ================= The whole frontend part of KOReader is scripted in [Lua](http://www.lua.org/about.html) programming language which means you can start development with just a decent text editor. Instructions about how to get and compile the source of the backend part on a linux OS are [here](https://github.com/koreader/koreader#building-prerequisites) The source tree of frontend looks like this: frontend ├── apps │ ├── filemanager │ │ ├── filemanagerhistory.lua │ │ ├── filemanager.lua │ │ └── filemanagermenu.lua │ └── reader * │ ├── modules │ │ ├── readeractivityindicator.lua │ │ ├── readerbookmark.lua │ │ ├── readerconfig.lua │ │ ├── readercoptlistener.lua │ │ ├── readercropping.lua │ │ ├── readerdictionary.lua │ │ ├── readerdogear.lua │ │ ├── readerflipping.lua │ │ ├── readerfont.lua │ │ ├── readerfooter.lua │ │ ├── readergoto.lua │ │ ├── readerhighlight.lua │ │ ├── readerhinting.lua │ │ ├── readerhyphenation.lua │ │ ├── readerkoptlistener.lua │ │ ├── readerlink.lua │ │ ├── readermenu.lua │ │ ├── readerpaging.lua │ │ ├── readerpanning.lua │ │ ├── readerrolling.lua │ │ ├── readerrotation.lua │ │ ├── readerscreenshot.lua │ │ ├── readertoc.lua │ │ ├── readertypeset.lua │ │ ├── readerview.lua │ │ └── readerzooming.lua │ ├── pluginloader.lua │ └── readerui.lua ├── cacheitem.lua ├── cache.lua ├── configurable.lua ├── dbg.lua ├── docsettings.lua ├── document * │ ├── credocument.lua │ ├── djvudocument.lua │ ├── document.lua │ ├── documentregistry.lua │ ├── koptinterface.lua │ ├── pdfdocument.lua │ ├── picdocument.lua │ └── tilecacheitem.lua ├── gettext.lua ├── JSON.lua ├── optmath.lua └── ui ├── data │ ├── creoptions.lua │ ├── koptoptions.lua │ └── strings.lua ├── device │ ├── basepowerd.lua │ ├── kindlepowerd.lua │ ├── kobopowerd.lua │ └── screen.lua ├── device.lua ├── event.lua ├── font.lua ├── geometry.lua ├── gesturedetector.lua ├── gesturerange.lua ├── input.lua ├── language.lua ├── rendertext.lua ├── screen.lua ├── timeval.lua ├── uimanager.lua └── widget * ├── bboxwidget.lua ├── buttondialog.lua ├── button.lua ├── buttontable.lua ├── closebutton.lua ├── configdialog.lua ├── confirmbox.lua ├── container │ ├── bottomcontainer.lua │ ├── centercontainer.lua │ ├── framecontainer.lua │ ├── inputcontainer.lua │ ├── leftcontainer.lua │ ├── rightcontainer.lua │ ├── underlinecontainer.lua │ └── widgetcontainer.lua ├── dictquicklookup.lua ├── eventlistener.lua ├── filechooser.lua ├── fixedtextwidget.lua ├── focusmanager.lua ├── horizontalgroup.lua ├── horizontalspan.lua ├── iconbutton.lua ├── imagewidget.lua ├── infomessage.lua ├── inputdialog.lua ├── inputtext.lua ├── linewidget.lua ├── menu.lua ├── notification.lua ├── overlapgroup.lua ├── progresswidget.lua ├── rectspan.lua ├── scrolltextwidget.lua ├── textboxwidget.lua ├── textwidget.lua ├── toggleswitch.lua ├── touchmenu.lua ├── verticalgroup.lua ├── verticalscrollbar.lua ├── verticalspan.lua ├── virtualkeyboard.lua └── widget.lua in which you will find the asterisked `frontend/document`, `frontend/apps/reader` and `frontend/ui/widget` the most interesting parts. ### document: API for document parsing and rendering ### reader: reader functionality implementation ### widget: a light-weight widget toolkit _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Overview](#Overview) * [Builtin events](#Builtin_events) * [Event propagation](#Event_propagation) * [Event system](#Event_system) * [Draw Page Code Path](#Draw_Page_Code_Path) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * **Events** * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Events ====== Overview -------- All widgets are a subclass of [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html#) , therefore they inherit the [handleEvent](../modules/ui.widget.eventlistener.html#EventListener:handleEvent) method. To send an event to a widget, you can simply invoke the handleEvent method like the following: widget\_foo:handleEvent(Event:new("Timeout")) If the widget can be destroyed during the event you should call [UIManager:sendEvent](../modules/ui.uimanager.html#UIManager:sendEvent) to propagate the event from the topmost widget or [UIManager:broadcastEvent](../modules/ui.uimanager.html#UIManager:broadcastEvent) to send the event to all widgets. Events are passed to child Widgets (or child containers) before their own handler sees them. See the implementation of WidgetContainer:handleEvent(). So a child widget, for instance a text input widget, gets the input events before the layout manager. The child widgets can "consume" an event by returning `true` from the event handler. Thus a text input widget just implements an input handler and consumes left/right presses, returning `true` in those cases. It can even make its return code dependent on whether the cursor is on the last position (do not consume press to right) or first position (do not consume press to left) to have proper focus movement in those cases. Builtin events -------------- ### Reader events * UpdatePos: emitted by typesetting related modules to notify other modules to recalculate the view based on the new typesetting. * PosUpdate: emitted by readerrolling module to signal a change in pos. Event propagation ----------------- Most UI components are a subclass of [WidgetContainer](../modules/ui.widget.container.widgetcontainer.html#) . A WidgetContainer is an array that stores a list of children widgets. When [WidgetContainer:handleEvent](../modules/ui.widget.container.widgetcontainer.html#WidgetContainer:handleEvent) is called with a new event, it will run roughly the following code: \-- First propagate event to its children for \_, widget in ipairs(self) do if widget:handleEvent(event) then \-- stop propagating when an event handler returns true return true end end \-- If not consumed by children, consume it ourself return self\["on"..event.name\](self, unpack(event.args, 1, event.args.n)) Event system ------------ The [Event](../modules/ui.event.html#) system is used by widgets to communicate. Each event is an object that has two properties: `args` and `handler`. `handler` is the name of function that will be called on receive. `args` is a table that contains all the arguments needed to be passed to the event handler. When a widget receives a event, it will first check to see if `self[event.handler]` exists. If yes, the `self[event.handler]` function will be called and the return value of the handler will be returned to UIManager. Notice that if you don't want the event propagate after consumed in your handler, your handler must return `true`. Otherwise, the event will be passed to other widgets' handlers until one of the handlers returns `true`. [WidgetContainer](../modules/ui.widget.container.widgetcontainer.html#) is a special kind of widget. When it receives an event, it will first propagate the event to all its children. If the event is still not consumed (i.e., its handler returns `true`), then it will try to handle the event by itself. When you call [UIManager:show](../modules/ui.uimanager.html#UIManager:show) on a widget, this widget will be added to the top of the `UIManager._window_stack`. Events are sent to the first widget in `UIManager._window_stack`. If it is not consumed, then UIManager will try to send it to all active widgets (`widget.is_always_active` equals `true`) in the `_window_stack`. Draw Page Code Path ------------------- * **in readerview.lua:** ReaderView widget flag itself dirty in `ReaderView:recalculate` * **in ui.lua:** UI main loop calls `ReaderView:paintTo` * **in readerview.lua:** `ReaderView:paintTo` calls `document:drawPage` * **in document.lua:** `document:drawPage` check for cache, if found, **return cache** * **in document.lua:** if cache not found, `document:drawPage` calls `document:renderPage` * **in document.lua:** `document:renderPage` calls `_document:openPage`, `page:draw` and put the result into cache _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Functions](#Functions) * [Tables](#Tables) * [Fields](#Fields) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * **util** * [version](../modules/version.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Module `util` ============= This module contains miscellaneous helper functions for the KOReader frontend. [Functions](#Functions) ------------------------ | | | | --- | --- | | [stripPunctuation (text)](#stripPunctuation) | Strips all punctuation marks and spaces from a string. | | [rtrim (s)](#rtrim) | Remove trailing whitespace from string. | | [trim (s)](#trim) | Remove leading & trailing whitespace from string. | | [cleanupSelectedText (text)](#cleanupSelectedText) | Variant tailored for text selection purposes (originally implemented in ReaderHighlight). | | [gsplit (str, pattern, capture, capture\_empty\_entity)](#gsplit) | Splits a string by a pattern

Lua doesn't have a string.split() function and most of the time you don't really need it because string.gmatch() is enough. | | [tableEquals (o1, o2, ignore\_mt)](#tableEquals) | Compares values in two different tables. | | [tableDeepCopy (o)](#tableDeepCopy) | Makes a deep copy of a table. | | [tableSize (t)](#tableSize) | Returns number of keys in a table. | | [tableGetValue (t, ...)](#tableGetValue) | Returns a value of a key, checks if all parent keys are not empty. | | [tableSetValue (t, value, ...)](#tableSetValue) | Sets a value of a key, creates all parent keys if needed. | | [tableRemoveValue (t, ...)](#tableRemoveValue) | Removes a key in a table, removes all empty parent keys. | | [arrayAppend (t1, t2)](#arrayAppend) | Append all elements from t2 into t1. | | [arrayReverse (t)](#arrayReverse) | Reverse array elements in-place in table t | | [arrayContains (t, v, callback)](#arrayContains) | Test whether t contains a value equal to v (or such a value that callback returns true), and if so, return the index. | | [arrayReferences (t, n, m)](#arrayReferences) | Test whether array t contains a reference to array n (at any depth at or below m) | | [bsearch\_left (array, value)](#bsearch_left) | Perform a leftmost insertion binary search for `value` in a _sorted_ (ascending) `array`. | | [bsearch\_right (array, value)](#bsearch_right) | Perform a rightmost insertion binary search for `value` in a _sorted_ (ascending) `array`. | | [lastIndexOf (string, ch)](#lastIndexOf) | Gets last index of character in string (i.e., strrchr)

Returns the index within this string of the last occurrence of the specified character or -1 if the character does not occur. | | [utf8Reverse (string)](#utf8Reverse) | Reverse the individual greater-than-single-byte characters | | [splitToChars (text)](#splitToChars) | Splits string into a list of UTF-8 characters. | | [isCJKChar (c)](#isCJKChar) | Tests whether c is a CJK character | | [hasCJKChar (str)](#hasCJKChar) | Tests whether str contains CJK characters | | [splitToWords (text)](#splitToWords) | Split texts into a list of words, spaces and punctuation marks. | | [isSplittable (c, next\_c, prev\_c)](#isSplittable) | Test whether a string can be separated by this char for multi-line rendering. | | [getFilesystemType (path)](#getFilesystemType) | Gets filesystem type of a path. | | [calcFreeMem ()](#calcFreeMem) | Computes the currently available memory | | [findFiles (path, callback)](#findFiles) | Recursively scan directory for files inside | | [isEmptyDir (path)](#isEmptyDir) | Checks if directory is empty. | | [fileExists (path)](#fileExists) | check if the given path is a file | | [pathExists (path)](#pathExists) | Checks if the given path exists. | | [directoryExists (path)](#directoryExists) | Checks if the given directory exists. | | [makePath (path)](#makePath) | As `mkdir -p`. | | [removePath (path)](#removePath) | Remove as many of the empty directories specified in path, children-first. | | [removeFile (path)](#removeFile) | As `rm` | | [getSafeFilename (str, path, limit)](#getSafeFilename) | Replaces characters that are invalid in filenames. | | [splitFilePathName (file)](#splitFilePathName) | Splits a file into its directory path and file name. | | [splitFileNameSuffix (file)](#splitFileNameSuffix) | Splits a file name into its pure file name and suffix | | [getFileNameSuffix (filename)](#getFileNameSuffix) | Gets file extension | | [getScriptType (filename)](#getScriptType) | Companion helper function that returns the script's language, based on the file extension. | | [getFriendlySize (size, right\_align)](#getFriendlySize) | Gets human friendly size as string | | [getFormattedSize (size)](#getFormattedSize) | Gets formatted size as string (1273334 => "1,273,334") | | [partialMD5 (filepath)](#partialMD5) | Calculate partial digest of an open file. | | [fixUtf8 (str, replacement)](#fixUtf8) | Replaces invalid UTF-8 characters with a replacement string. | | [splitToArray (str, splitter, capture\_empty\_entity)](#splitToArray) | Splits input string with the splitter into a table. | | [unicodeCodepointToUtf8 (c)](#unicodeCodepointToUtf8) | Convert a Unicode codepoint (number) to UTF-8 char c.f., [https://stackoverflow.com/a/4609989](https://stackoverflow.com/a/4609989)

&


See utf8charcode in ffi/util for a decoder. | | [htmlEntitiesToUtf8 (string)](#htmlEntitiesToUtf8) | Replace HTML entities with their UTF-8 encoded equivalent in text. | | [htmlToPlainText (text)](#htmlToPlainText) | Convert simple HTML to plain text. | | [htmlToPlainTextIfHtml (text)](#htmlToPlainTextIfHtml) | Convert HTML to plain text if text seems to be HTML Detection of HTML is simple and may raise false positives or negatives, but seems quite good at guessing content type of text found in EPUB's . | | [htmlEscape (text)](#htmlEscape) | Encode the HTML entities in a string | | [prettifyCSS (CSS)](#prettifyCSS) | Prettify a CSS stylesheet Not perfect, but enough to make some ugly CSS readable. | | [urlEncode (text)](#urlEncode) | Encode URL also known as percent-encoding see https://en.wikipedia.org/wiki/Percent-encoding | | [urlDecode (text)](#urlDecode) | Decode URL (reverse process to util.urlEncode()) | | [checkLuaSyntax (text)](#checkLuaSyntax) | Check lua syntax of string | | [stringStartsWith (str, start)](#stringStartsWith) | Simple startsWith string helper. | | [stringEndsWith (str, ending)](#stringEndsWith) | Simple endsWith string helper. | | [stringSearch (or, str, start\_pos)](#stringSearch) | Search a string in a text. | | [wrapMethod (target\_table, target\_field\_name, new\_func, before\_callback)](#wrapMethod) | Wrap (or replace) a table method with a custom method, in a revertable way. | [Tables](#Tables) ------------------ | | | | --- | --- | | [t](#t) | Remove elements from an array, fast. | | [args](#args) | Escape list for shell usage | | [t](#t) | Clear all the elements from an array without reassignment. | [Fields](#Fields) ------------------ | | | | --- | --- | | [UTF8\_CHAR\_PATTERN](#UTF8_CHAR_PATTERN) | Pattern which matches a single well-formed UTF-8 character, including theoretical >4-byte extensions. | Functions --------- **stripPunctuation (text)** Strips all punctuation marks and spaces from a string. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to be stripped ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) stripped text **rtrim (s)** Remove trailing whitespace from string. ### Parameters: * s [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to be trimmed ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) trimmed text **trim (s)** Remove leading & trailing whitespace from string. ### Parameters: * s [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to be trimmed ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) trimmed text **cleanupSelectedText (text)** Variant tailored for text selection purposes (originally implemented in ReaderHighlight). ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) the text to be trimmed ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) trimmed text **gsplit (str, pattern, capture, capture\_empty\_entity)** Splits a string by a pattern Lua doesn't have a string.split() function and most of the time you don't really need it because string.gmatch() is enough. However string.gmatch() has one significant disadvantage for me: You can't split a string while matching both the delimited strings and the delimiters themselves without tracking positions and substrings. The gsplit function below takes care of this problem. Author: Peter Odding License: MIT/X11 Source: [http://snippets.luacode.org/snippets/String_splitting_130](http://snippets.luacode.org/snippets/String_splitting_130) ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) string to split * pattern the pattern to split against * capture boolean * capture\_empty\_entity boolean **tableEquals (o1, o2, ignore\_mt)** Compares values in two different tables. Source: [https://stackoverflow.com/a/32660766/2470572](https://stackoverflow.com/a/32660766/2470572) ### Parameters: * o1 Lua table * o2 Lua table * ignore\_mt boolean ### Returns: boolean **tableDeepCopy (o)** Makes a deep copy of a table. Source: [https://stackoverflow.com/a/16077650/2470572](https://stackoverflow.com/a/16077650/2470572) ### Parameters: * o Lua table ### Returns: Lua table **tableSize (t)** Returns number of keys in a table. ### Parameters: * t Lua table ### Returns: int number of keys in table t **tableGetValue (t, ...)** Returns a value of a key, checks if all parent keys are not empty. ### Parameters: * t Lua table * ... parent keys, starting from the upper level ### Returns: value of the last key or nil **tableSetValue (t, value, ...)** Sets a value of a key, creates all parent keys if needed. ### Parameters: * t Lua table * value value to be assigned to the last key * ... parent keys, starting from the upper level **tableRemoveValue (t, ...)** Removes a key in a table, removes all empty parent keys. ### Parameters: * t Lua table * ... parent keys, starting from the upper level **arrayAppend (t1, t2)** Append all elements from t2 into t1. ### Parameters: * t1 Lua table * t2 Lua table **arrayReverse (t)** Reverse array elements in-place in table t ### Parameters: * t Lua table **arrayContains (t, v, callback)** Test whether t contains a value equal to v (or such a value that callback returns true), and if so, return the index. ### Parameters: * t Lua table * v * callback function (v1, v2) **arrayReferences (t, n, m)** Test whether array t contains a reference to array n (at any depth at or below m) ### Parameters: * t Lua table (array only) * n Lua table (array only) * m integer Max nesting level **bsearch\_left (array, value)** Perform a leftmost insertion binary search for `value` in a _sorted_ (ascending) `array`. ### Parameters: * array Lua table (array only, sorted, ascending, every value must match the type of `value` and support comparison operators) * value ### Returns: int leftmost insertion index of value in array. **bsearch\_right (array, value)** Perform a rightmost insertion binary search for `value` in a _sorted_ (ascending) `array`. ### Parameters: * array Lua table (array only, sorted, ascending, every value must match the type of `value` and support comparison operators) * value ### Returns: int rightmost insertion index of value in array. **lastIndexOf (string, ch)** Gets last index of character in string (i.e., strrchr) Returns the index within this string of the last occurrence of the specified character or -1 if the character does not occur. To find . you need to escape it. ### Parameters: * string [string](https://www.lua.org/manual/5.1/manual.html#5.4) * ch [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: int last occurrence or -1 if not found **utf8Reverse (string)** Reverse the individual greater-than-single-byte characters ### Parameters: * string [string](https://www.lua.org/manual/5.1/manual.html#5.4) to reverse Taken from [https://github.com/blitmap/lua-utf8-simple#utf8reverses](https://github.com/blitmap/lua-utf8-simple#utf8reverses) **splitToChars (text)** Splits string into a list of UTF-8 characters. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to be split. ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) list of UTF-8 chars **isCJKChar (c)** Tests whether c is a CJK character ### Parameters: * c [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: boolean true if CJK **hasCJKChar (str)** Tests whether str contains CJK characters ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: boolean true if CJK **splitToWords (text)** Split texts into a list of words, spaces and punctuation marks. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) text to split ### Returns: [table](https://www.lua.org/manual/5.1/manual.html#5.5) list of words, spaces and punctuation marks **isSplittable (c, next\_c, prev\_c)** Test whether a string can be separated by this char for multi-line rendering. Optional next or prev chars may be provided to help make the decision ### Parameters: * c [string](https://www.lua.org/manual/5.1/manual.html#5.4) * next\_c [string](https://www.lua.org/manual/5.1/manual.html#5.4) * prev\_c [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: boolean true if splittable, false if not **getFilesystemType (path)** Gets filesystem type of a path. Checks if the path occurs in `/proc/mounts` ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) an absolute path ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) filesystem type **calcFreeMem ()** Computes the currently available memory ### Returns: tuple of ints: memavailable, memtotal (or nil, nil on unsupported platforms). **findFiles (path, callback)** Recursively scan directory for files inside ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) * callback function (fullpath, name, attr) **isEmptyDir (path)** Checks if directory is empty. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: bool **fileExists (path)** check if the given path is a file ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: bool **pathExists (path)** Checks if the given path exists. Doesn't care if it's a file or directory. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: bool **directoryExists (path)** Checks if the given directory exists. ### Parameters: * path **makePath (path)** As `mkdir -p`. Unlike [lfs.mkdir](https://keplerproject.github.io/luafilesystem/manual.html#mkdir) (), does not error if the directory already exists, and creates intermediate directories as needed. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) the directory to create ### Returns: bool true on success; nil, err\_message on error **removePath (path)** Remove as many of the empty directories specified in path, children-first. Does not fail if the directory is already gone. ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) the directory tree to prune ### Returns: bool true on success; nil, err\_message on error **removeFile (path)** As `rm` ### Parameters: * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) of the file to remove ### Returns: bool true on success; nil, err\_message on error **getSafeFilename (str, path, limit)** Replaces characters that are invalid in filenames. Replaces the characters `\/:*?"<>|` with an `_` unless an optional path is provided. These characters are problematic on Windows filesystems. On Linux only the `/` poses a problem. If an optional path is provided, [util.getFilesystemType](../modules/util.html#getFilesystemType) () will be used to determine whether stricter VFAT restrictions should be applied. ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) * path [string](https://www.lua.org/manual/5.1/manual.html#5.4) * limit integer ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) safe filename **splitFilePathName (file)** Splits a file into its directory path and file name. If the given path has a trailing /, returns the entire path as the directory path and "" as the file name. ### Parameters: * file [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) directory, filename **splitFileNameSuffix (file)** Splits a file name into its pure file name and suffix ### Parameters: * file [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) path, extension **getFileNameSuffix (filename)** Gets file extension ### Parameters: * filename [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) extension **getScriptType (filename)** Companion helper function that returns the script's language, based on the file extension. ### Parameters: * filename [string](https://www.lua.org/manual/5.1/manual.html#5.4) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) (lowercase) (or nil if not Device:canExecuteScript(file)) **getFriendlySize (size, right\_align)** Gets human friendly size as string ### Parameters: * size integer (bytes) * right\_align boolean (by padding with spaces on the left) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) **getFormattedSize (size)** Gets formatted size as string (1273334 => "1,273,334") ### Parameters: * size integer (bytes) ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) **partialMD5 (filepath)** Calculate partial digest of an open file. To the calculating mechanism itself, since only PDF documents could be modified by KOReader by appending data at the end of the files when highlighting, we use a non-even sampling algorithm which samples with larger weight at file head and much smaller weight at file tail, thus reduces the probability that appended data may change the digest value. Note that if PDF file size is around 1024, 4096, 16384, 65536, 262144 1048576, 4194304, 16777216, 67108864, 268435456 or 1073741824, appending data by highlighting in KOReader may change the digest value. ### Parameters: * filepath **fixUtf8 (str, replacement)** Replaces invalid UTF-8 characters with a replacement string. Based on [http://notebook.kulchenko.com/programming/fixing-malformed-utf8-in-lua](http://notebook.kulchenko.com/programming/fixing-malformed-utf8-in-lua) . c.f., FixUTF8 @ [https://github.com/pkulchenko/ZeroBraneStudio/blob/master/src/util.lua](https://github.com/pkulchenko/ZeroBraneStudio/blob/master/src/util.lua) . ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to be checked for invalid characters * replacement [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to replace invalid characters with ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) valid UTF-8 **splitToArray (str, splitter, capture\_empty\_entity)** Splits input string with the splitter into a table. This function ignores the last empty entity. ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to be split * splitter [string](https://www.lua.org/manual/5.1/manual.html#5.4) * capture\_empty\_entity boolean ### Returns: an array-like table **unicodeCodepointToUtf8 (c)** Convert a Unicode codepoint (number) to UTF-8 char c.f., [https://stackoverflow.com/a/4609989](https://stackoverflow.com/a/4609989) & See utf8charcode in ffi/util for a decoder. ### Parameters: * c integer Unicode codepoint ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) UTF-8 char **htmlEntitiesToUtf8 (string)** Replace HTML entities with their UTF-8 encoded equivalent in text. Supports only basic ones and those with numbers (no support for named entities like `é`). ### Parameters: * string integer text with HTML entities ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) UTF-8 text **htmlToPlainText (text)** Convert simple HTML to plain text. This may fail on complex HTML (with styles, scripts, comments), but should be fine enough with simple HTML as found in EPUB's ``. ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) HTML text ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) plain text **htmlToPlainTextIfHtml (text)** Convert HTML to plain text if text seems to be HTML Detection of HTML is simple and may raise false positives or negatives, but seems quite good at guessing content type of text found in EPUB's . ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string with possibly some HTML ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) cleaned text **htmlEscape (text)** Encode the HTML entities in a string ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to escape Taken from https://github.com/kernelsauce/turbo/blob/e4a35c2e3fb63f07464f8f8e17252bea3a029685/turbo/escape.lua#L58-L70 **prettifyCSS (CSS)** Prettify a CSS stylesheet Not perfect, but enough to make some ugly CSS readable. By default, each selector and each property is put on its own line. With condensed=true, condense each full declaration on a single line. ### Parameters: * CSS [string](https://www.lua.org/manual/5.1/manual.html#5.4) string ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) the CSS prettified **urlEncode (text)** Encode URL also known as percent-encoding see https://en.wikipedia.org/wiki/Percent-encoding ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to encode ### Returns: encode string Taken from https://gist.github.com/liukun/f9ce7d6d14fa45fe9b924a3eed5c3d99 **urlDecode (text)** Decode URL (reverse process to util.urlEncode()) ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) the string to decode ### Returns: decode string Taken from https://gist.github.com/liukun/f9ce7d6d14fa45fe9b924a3eed5c3d99 **checkLuaSyntax (text)** Check lua syntax of string ### Parameters: * text [string](https://www.lua.org/manual/5.1/manual.html#5.4) lua code text ### Returns: [string](https://www.lua.org/manual/5.1/manual.html#5.4) with parsing error, nil if syntax ok **stringStartsWith (str, start)** Simple startsWith string helper. C.f., [http://lua-users.org/wiki/StringRecipes](http://lua-users.org/wiki/StringRecipes) . ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) source string * start [string](https://www.lua.org/manual/5.1/manual.html#5.4) string to match ### Returns: bool true on success **stringEndsWith (str, ending)** Simple endsWith string helper. ### Parameters: * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) source string * ending [string](https://www.lua.org/manual/5.1/manual.html#5.4) string to match ### Returns: bool true on success **stringSearch (or, str, start\_pos)** Search a string in a text. ### Parameters: * or [string](https://www.lua.org/manual/5.1/manual.html#5.4) table txt Text (char list) to search in * str [string](https://www.lua.org/manual/5.1/manual.html#5.4) String to search for * start\_pos number Position number in text to start search from ### Returns: 1. number Position number or 0 if not found 2. [table](https://www.lua.org/manual/5.1/manual.html#5.5) Text char list 3. [table](https://www.lua.org/manual/5.1/manual.html#5.5) Search string char list **wrapMethod (target\_table, target\_field\_name, new\_func, before\_callback)** Wrap (or replace) a table method with a custom method, in a revertable way. This allows you extend the features of an existing module by modifying its internal methods, and then revert them back to normal later if necessary. The most notable use-case for this is VirtualKeyboard's inputbox method wrapping to allow keyboards to add more complicated state-machines to modify how characters are input. The returned table is the same table `target_table[target_field_name]` is set to. In addition to being callable, the new method has two sub-methods: * `:revert()` will un-wrap the method and revert it to the original state. Note that if a method is wrapped multiple times, reverting it will revert it to the state of the method when util.wrapMethod was called (and if called on the table returned from util.wrapMethod, that is the state when that particular util.wrapMethod was called). * `:raw_call(...)` will call the original method with the given arguments and return whatever it returns. This makes it more ergonomic to use the wrapped table methods in the case where you've replaced the regular function with your own implementation but you need to call the original functions inside your implementation. * `:raw_method_call(...)` will call the original method with the arguments `(target_table, ...)` and return whatever it returns. Note that the target\_table used is the one associated with the util.wrapMethod call. This makes it more ergonomic to use the wrapped table methods in the case where you've replaced the regular function with your own implementation but you need to call the original functions inside your implementation. This is effectively short-hand for `:raw_call(target_table, ...)`. This is loosely based on busted/luassert's spies implementation (MIT). [https://github.com/Olivine-Labs/luassert/blob/v1.7.11/src/spy.lua](https://github.com/Olivine-Labs/luassert/blob/v1.7.11/src/spy.lua) ### Parameters: * target\_table [table](https://www.lua.org/manual/5.1/manual.html#5.5) The table whose method will be wrapped. * target\_field\_name [string](https://www.lua.org/manual/5.1/manual.html#5.4) The name of the field to wrap. * new\_func nil or func If non-nil, this function will be called instead of the original function after wrapping. * before\_callback nil or func If non-nil, this function will be called (with the arguments (target\_table, ...)) before the function is called. Tables ------ **t** Remove elements from an array, fast. Swap & pop, like [http://lua-users.org/lists/lua-l/2013-11/msg00027.html](http://lua-users.org/lists/lua-l/2013-11/msg00027.html) / [https://stackoverflow.com/a/28942022](https://stackoverflow.com/a/28942022) , but preserving order. c.f., [https://stackoverflow.com/a/53038524](https://stackoverflow.com/a/53038524) ### Fields: * keep\_cb function Filtering callback. Takes three arguments: table, index, new index. Returns true to _keep_ the item. See link above for potential uses of the third argument. ### Usage: local foo = { "a", "b", "c", "b", "d", "e" } local function drop\_b(t, i, j) \-- Discard any item with value "b" return t\[i\] ~= "b" end util.arrayRemove(foo, drop\_b) **args** Escape list for shell usage **t** Clear all the elements from an array without reassignment. Fields ------ **UTF8\_CHAR\_PATTERN** Pattern which matches a single well-formed UTF-8 character, including theoretical >4-byte extensions. Taken from [https://www.lua.org/manual/5.4/manual.html#pdf-utf8.charpattern](https://www.lua.org/manual/5.4/manual.html#pdf-utf8.charpattern) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [How to Debug](#How_to_Debug) * [Bug hunting in KPV (KOReader's predecessor)](#Bug_hunting_in_KPV__KOReader_s_predecessor_) * [Developing UI widgets](#Developing_UI_widgets) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * **Hacking** * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Hacking ======= How to Debug ------------ We have a helper function called `logger.dbg` to help with debugging. You can use that function to print string and tables: local logger = require("logger") a = {"1", "2", "3"} logger.dbg("table a: ", a) Anything printed by `logger.dbg` starts with `DEBUG`. On most target platforms, log output is saved to `crash.log` in the `koreader` directory. 04/06/17-21:44:53 DEBUG foo In production code, remember that arguments are _always_ evaluated in Lua, so, don't inline complex computations in logger functions' arguments. If you _really_ have to, hide the whole thing behind a `dbg.is_on` branch, like in [frontend/device/input.lua](https://github.com/koreader/koreader/blob/ba6fef4d7ba217ca558072f090849000e72ba142/frontend/device/input.lua#L1131-L1134) . Bug hunting in KPV (KOReader's predecessor) ------------------------------------------- A real example of bug hunting in KPV's cache system: [https://github.com/koreader/kindlepdfviewer/pull/475](https://github.com/koreader/kindlepdfviewer/pull/475) Developing UI widgets --------------------- `tools/wbuilder.lua` is your friend, if you need to create new UI widgets. It sets up a minimal environment to bootstrap KOReader's UI framework to avoid starting the whole reader. This gives you quick feedback loop while iterating through your widget changes. It's also a handy tool for debugging widget issues. To get a taste of how it works, try running this command at the root of KOReader's source tree: ./kodev wbuilder It will spawn up an emulator window with a grid and simple timer widget for demonstration. You can add more `UIManager:show` call at the end of `tools/wbuilder.lua` to test your new widgets. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Output Module](#Output_Module) * [Blitter Module](#Blitter_Module) * [Input Module](#Input_Module) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * **Porting** * [README](../topics/README.md.html) * [Unit Tests](../topics/Unit_tests.md.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Porting ======= This page aims to provide guidance on how to port KOReader to other platforms. There are mainly two modules that you need to take care of: input and output. After you finish these two, KOReader should have no problem running on your platform. Feel free to open issues in our issue tracker if you need further help on this topic :) Output Module ------------- ### Current mxcfb eInk devices KOReader uses the Linux framebuffer to control eInk devices, so the output module for mxcfb (i.e., those based on Freescale/NXP hardware) devices is [`base/ffi/framebuffer_mxcfb.lua`](https://github.com/koreader/koreader-base/blob/master/ffi/framebuffer_mxcfb.lua) . Most common bitdepths are supported, although no devices should actually be using anything other than 8bpp, 16bpp and 32bpp. For 8bpp, we assume the grayscale palette is NOT inverted. At 32bpp, we generally assume the pixel format is BGRA, and we honor Alpha, despite it being effectively ignored by the display (see Kobos). At 16bpp, we assume the pixel format is RGB565. For obvious performance reasons, we prefer 8bpp, and we will attempt to enforce that on devices which are not natively running at that depth (i.e., [on Kobos](https://github.com/koreader/koreader/blob/d1cd5e7ad4283611c57007b2c2d3dd5f7dab7057/platform/kobo/koreader.sh#L138-L186) ). As explained below, the same considerations should be kept in mind regarding the effective 16c palette of eInk screens. When we're in control of the data, we attempt to always use "perfect" in-palette colors (c.f., the [COLOR constants](https://github.com/koreader/koreader-base/blob/a1fc4e43b7cce7a76b13224e145f9bada343d8ea/ffi/blitbuffer.lua#L1881-L1889) in the BlitBuffer module). Otherwise, when there'd be significant gain in doing so (i.e., when displaying mainly image content), we attempt to make use of [dithering](https://github.com/koreader/koreader-base/blob/a1fc4e43b7cce7a76b13224e145f9bada343d8ea/ffi/blitbuffer.lua#L227-L271) , ideally [offloaded to the hardware](https://github.com/koreader/koreader-base/blob/a1fc4e43b7cce7a76b13224e145f9bada343d8ea/ffi/framebuffer_mxcfb.lua#L412-L423) when supported. The actual framebuffer content is then refreshed (i.e., displayed) via device-specific ioctls, making the best effort in using device-specific capabilities, whether that be [optimized waveform modes](https://github.com/koreader/koreader-base/blob/a1fc4e43b7cce7a76b13224e145f9bada343d8ea/ffi/framebuffer_mxcfb.lua#L643-L655) , hardware dithering or [hardware inversion](https://github.com/koreader/koreader-base/blob/a1fc4e43b7cce7a76b13224e145f9bada343d8ea/ffi/framebuffer_mxcfb.lua#L253-L256) . The platform-specific Lua FFI modules for using the mxcfb driver are generated from the [kernel header files](https://github.com/koreader/koreader-base/ffi-cdecl/include) using [ffi-cdecl](https://github.com/koreader/ffi-cdecl) . `ffi-cdecl` operates on [C files](https://github.com/koreader/koreader-base/ffi-cdecl/) which specify what to export. To use `ffi-cdecl` first you need to build the gcc plugin for the platform toolchain, e.g.: cd ffi-cdecl make clean PATH=$HOME/x-tools/arm-remarkable-linux-gnueabihf/bin/:$PATH make CHOST=arm-remarkable-linux-gnueabihf CROSS_DIR=$HOME/x-tools/arm-remarkable-linux-gnueabihf/ Then you can (re)generate the [ffi lua files](https://github.com/koreader/koreader-base/ffi) , e.g. PATH=$HOME/x-tools/arm-remarkable-linux-gnueabihf/bin/:$PATH ./ffi-cdecl arm-remarkable-linux-gnueabihf-gcc ../koreader/base/ffi-cdecl/mxcfb_remarkable_decl.c ../koreader/base/ffi/mxcfb_remarkable_h.lua ### Legacy einkfb eInk devices KOReader uses the Linux framebuffer to control eInk devices, so the output module for legacy einkfb devices is [`base/ffi/framebuffer_einkfb.lua`](https://github.com/koreader/koreader-base/blob/master/ffi/framebuffer_einkfb.lua) . Following are the framebuffers that `framebuffer_einkfb.lua` currently supports: * 4bpp framebuffer (palette is always inverted) * 16c 8bpp framebuffer (inverted grayscale palette) For 4bpp framebuffers, it means every pixel is represented with 4 bits, so we have 2 pixels in 1 byte. That also effectively limits the palette to 16 colors. The inverted part means that every pixel's color value is flipped (`^ 0xFF`). For example, two pixels `0x00` and `0xF0` will be flipped to `0xFF` and `0x0F`, before being packed to accommodate the framebuffer's pixel format (here, [into a single byte](https://github.com/NiLuJe/FBInk/blob/4f0230b17c480cdc75dd5497fddf33937781c812/fbink.c#L106-L133) ). For 8bpp framebuffers, it means each pixel is instead stored in 1 byte, making addressing much simpler. The effective color palette of the display is still limited to 16 shades of gray: it will do a decimating quantization pass on its own on refresh. So, while a black pixel will indeed be `0x00`, any color value < `0x11` (the next effective shade of gray in the [palette](https://github.com/NiLuJe/FBInk/blob/4f0230b17c480cdc75dd5497fddf33937781c812/fbink_internal.h#L327-L334) ) will be displayed as pure black, too. If the palette is expected to be inverted, then all the bits are flipped in the same way as done on a 4bpp framebuffer. In practice, [this is always the case](https://github.com/koreader/koreader-base/blob/a1fc4e43b7cce7a76b13224e145f9bada343d8ea/ffi/framebuffer_linux.lua#L242-L245) . The actual framebuffer content is then refreshed (i.e., displayed) via device-specific ioctls. Blitter Module -------------- All the intermediary buffers are handled in a pixel format that matches the output module in use as closely as possible. The magic happens in [`base/ffi/blitbuffer.lua`](https://github.com/koreader/koreader-base/blob/master/ffi/blitbuffer.lua) , with some help from the [LinuxFB](https://github.com/koreader/koreader-base/blob/master/ffi/framebuffer_linux.lua) frontend to the output modules. Note that on most devices, a [C version](https://github.com/koreader/koreader-base/blob/master/blitbuffer.c) is used instead for more consistent performance. Which version is more easily readable to a newcomer is up for debate, so, don't hesitate to cross-reference ;). Feature-parity should be complete, with the exception of 4bpp support in the C version. If you need a bit of guidance, you can also take a look at [FBInk](https://github.com/NiLuJe/FBInk) , and/or ping [@NiLuJe](https://github.com/NiLuJe) on gitter. Input Module ------------ We have an [`input.c`](https://github.com/koreader/koreader-base/blob/master/input/input.c) module in [koreader-base](https://github.com/koreader/koreader-base) that reads input events from Linux's input system and passes it on to the Lua frontend. Basically, you don't need to change that module because it should support most of the events. For this part, the file you have to hack on is [`koreader/frontend/ui/input.lua`](https://github.com/koreader/koreader/blob/master/frontend/ui/input.lua) . Firstly, you need to tell which input device to open on KOReader start. All the input devices are opened in `Input:init()` function. Next, you might need to define `Input:eventAdjustHook()` function in `Input:init()` method. We use this hook function to translate events into a format that KOReader understands. You can look at the KindleTouch initialization code for a real-world example. For some Kobo devices (Mini, Touch, Glo and Aura HD) the function `Input:eventAdjustHook()` was skipped and the functions `Input:init()` and `Input:handleTypeBTouchEv()` were changed to accommodate for the single touch protocol. For the Kobo Aura (and others with the same kernel quirks) with multitouch support, an extra function `Input:handlePhoenixTouchEv()` was added. Linux supports two kinds of Multi-touch protocols: * [http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt](http://www.kernel.org/doc/Documentation/input/multi-touch-protocol.txt) Currently, KOReader supports gesture detection of protocol B, so if your device sends out protocol A, you need to make a variant of function `Input:handleTouchEv()` (like `Input:handleTypeBTouchEv()` and `Input:handlePhoenixTouchEv()`) and simulate protocol B. You are also welcome to send a PR that adds protocol A support to KOReader. More information on Linux's input system: * [http://www.kernel.org/doc/Documentation/input/event-codes.txt](http://www.kernel.org/doc/Documentation/input/event-codes.txt) * [http://www.kernel.org/doc/Documentation/input/input.txt](http://www.kernel.org/doc/Documentation/input/input.txt) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader Documentation KOReader ======== * [Index](../index.html) Contents -------- * [Main features](#Main_features) * [Screenshots](#Screenshots) * [Installation](#Installation) * [Development](#Development) * [Support](#Support) * [Contributors](#Contributors) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * **README** * [Unit Tests](../topics/Unit_tests.md.html) Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) [![KOReader](https://raw.githubusercontent.com/koreader/koreader.github.io/master/koreader-logo.png)](https://koreader.rocks) #### KOReader is a document viewer primarily aimed at e-ink readers. [![AGPL Licence](https://img.shields.io/github/license/koreader/koreader)](COPYING) [![Latest release](https://img.shields.io/github/release/koreader/koreader.svg)](https://github.com/koreader/koreader/releases) [![Gitter](https://img.shields.io/gitter/room/koreader/koreader?color=red)](https://gitter.im/koreader/koreader) [![Mobileread](https://img.shields.io/badge/forum-on_mobileread-lightgrey)](https://www.mobileread.com/forums/forumdisplay.php?f=276) [![Build Status](https://circleci.com/gh/koreader/koreader.svg?style=shield)](https://circleci.com/gh/koreader/koreader) [![Coverage Status](https://codecov.io/gh/koreader/koreader/branch/master/graph/badge.svg)](https://codecov.io/gh/koreader/koreader) [![Weblate Status](https://hosted.weblate.org/widgets/koreader/-/koreader/svg-badge.svg)](https://hosted.weblate.org/engage/koreader/?utm_source=widget) [Download](https://github.com/koreader/koreader/releases) • [User guide](https://koreader.rocks/user_guide/) • [Wiki](https://github.com/koreader/koreader/wiki) • [Developer docs](https://koreader.rocks/doc/) Main features ------------- * **portable**: runs on embedded devices (Cervantes, Kindle, Kobo, PocketBook, reMarkable), Android and Linux computers. Developers can run a KOReader emulator in Linux and MacOS. * **multi-format documents**: supports fixed page formats (PDF, DjVu, CBT, CBZ) and reflowable e-book formats (EPUB, FB2, Mobi, DOC, RTF, HTML, CHM, TXT). Scanned PDF/DjVu documents can also be reflowed with the built-in K2pdfopt library. [ZIP files](https://github.com/koreader/koreader/wiki/ZIP) are also supported for some formats. * **full-featured reading**: multi-lingual user interface with a highly customizable reader view and many typesetting options. You can set arbitrary page margins, override line spacing and choose external fonts and styles. It has multi-lingual hyphenation dictionaries bundled into the application. * **integrated** with _calibre_ (search metadata, receive ebooks wirelessly, browse library via OPDS), _Wallabag_, _Wikipedia_, _Google Translate_ and other content providers. * **optimized for e-ink devices**: custom UI without animation, with paginated menus, adjustable text contrast, and easy zoom to fit content or page in paged media. * **extensible**: via plugins * **fast**: on some older devices, it has been measured to have less than half the page-turn delay as the built in reading software. * **and much more**: look up words with StarDict dictionaries / Wikipedia, add your own online OPDS catalogs and RSS feeds, over-the-air software updates, an FTP client, an SSH server, … Please check the [user guide](https://koreader.rocks/user_guide/) and the [wiki](https://github.com/koreader/koreader/wiki) to discover more features and to help us document them. Screenshots ----------- [![](https://github.com/koreader/koreader-artwork/raw/master/koreader-menu-thumbnail.png)](https://github.com/koreader/koreader-artwork/raw/master/koreader-menu.png) [![](https://github.com/koreader/koreader-artwork/raw/master/koreader-footnotes-thumbnail.png)](https://github.com/koreader/koreader-artwork/raw/master/koreader-footnotes.png) [![](https://github.com/koreader/koreader-artwork/raw/master/koreader-dictionary-thumbnail.png)](https://github.com/koreader/koreader-artwork/raw/master/koreader-dictionary.png) Installation ------------ Please follow the model specific steps for your device: [Android](https://github.com/koreader/koreader/wiki/Installation-on-Android-devices) • [Cervantes](https://github.com/koreader/koreader/wiki/Installation-on-BQ-devices) • [Kindle](https://github.com/koreader/koreader/wiki/Installation-on-Kindle-devices) • [Kobo](https://github.com/koreader/koreader/wiki/Installation-on-Kobo-devices) • [Linux](https://github.com/koreader/koreader/wiki/Installation-on-desktop-linux) • [Pocketbook](https://github.com/koreader/koreader/wiki/Installation-on-PocketBook-devices) • [reMarkable](https://github.com/koreader/koreader/wiki/Installation-on-Remarkable) Development ----------- [Setting up a build environment](doc/Building.md) • [Collaborating with Git](doc/Collaborating_with_Git.md) • [Building targets](doc/Building_targets.md) • [Porting](doc/Porting.md) • [Developer docs](https://koreader.rocks/doc/) Support ------- KOReader is developed and supported by volunteers all around the world. There are many ways you can help: * [fix bugs](https://github.com/koreader/koreader/issues?q=is%3Aopen+is%3Aissue+label%3Abug) and [implement new features](https://github.com/koreader/koreader/issues?q=is%3Aopen+is%3Aissue+label%3Aenhancement) * [translate the program into your language](https://hosted.weblate.org/engage/koreader/?utm_source=widget) or improve an existing translation * document lesser-known features on the [wiki](https://github.com/koreader/koreader/wiki) * help others with your knowledge on the [forum](https://www.mobileread.com/forums/forumdisplay.php?f=276) Right now we only support [liberapay](https://liberapay.com/KOReader) donations. Contributors ------------ [![Last commit](https://img.shields.io/github/last-commit/koreader/koreader?color=orange)](https://github.com/koreader/koreader/commits/master) [![Commit activity](https://img.shields.io/github/commit-activity/m/koreader/koreader)](https://github.com/koreader/koreader/pulse) _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # Email Protection | Cloudflare Please enable cookies. Email Protection ================ You are unable to access this email address koreader.rocks ---------------------------------------------------------- The website from which you got to this page is protected by Cloudflare. Email addresses on that page have been hidden in order to keep them from being accessed by malicious bots. **You must enable Javascript in your browser in order to decode the e-mail address**. If you have a website and are interested in protecting it in a similar way, you can [sign up for Cloudflare](https://www.cloudflare.com/sign-up?utm_source=email_protection) . * [How does Cloudflare protect email addresses on website from spammers?](https://support.cloudflare.com/hc/en-us/articles/200170016-What-is-Email-Address-Obfuscation-) * [Can I sign up for Cloudflare?](https://support.cloudflare.com/hc/en-us/categories/200275218-Getting-Started) Cloudflare Ray ID: **90557ae66b437fe2** • Your IP: Click to reveal 54.237.218.47 • Performance & security by [Cloudflare](https://www.cloudflare.com/5xx-error-landing) --- # KOReader Documentation KOReader ======== * [Index](../index.html) Topics ------ * [Collaborating with Git](../topics/Collaborating_with_Git.md.html) * [DataStore](../topics/DataStore.md.html) * [Development Guide](../topics/Development_guide.md.html) * [Events](../topics/Events.md.html) * [Hacking](../topics/Hacking.md.html) * [Porting](../topics/Porting.md.html) * [README](../topics/README.md.html) * **Unit Tests** Modules ------- * [android](../modules/android.html) * [apps.filemanager.filemanagerbookinfo](../modules/apps.filemanager.filemanagerbookinfo.html) * [apps.filemanager.filemanagerconverter](../modules/apps.filemanager.filemanagerconverter.html) * [apps.filemanager.filemanagerutil](../modules/apps.filemanager.filemanagerutil.html) * [apps.filemanager.lib.md](../modules/apps.filemanager.lib.md.html) * [apps.reader.modules.readerlink](../modules/apps.reader.modules.readerlink.html) * [apps.reader.modules.readerview](../modules/apps.reader.modules.readerview.html) * [apps.reader.readerui](../modules/apps.reader.readerui.html) * [baseexporter](../modules/baseexporter.html) * [cache](../modules/cache.html) * [cacheitem](../modules/cacheitem.html) * [datetime](../modules/datetime.html) * [dbg](../modules/dbg.html) * [depgraph](../modules/depgraph.html) * [device.generic.device](../modules/device.generic.device.html) * [device.gesturedetector](../modules/device.gesturedetector.html) * [device.input](../modules/device.input.html) * [device.kindle.mockrtc](../modules/device.kindle.mockrtc.html) * [device.kobo.nickel\_conf](../modules/device.kobo.nickel_conf.html) * [device.sysfs\_light](../modules/device.sysfs_light.html) * [device.wakeupmgr](../modules/device.wakeupmgr.html) * [dispatcher](../modules/dispatcher.html) * [docsettings](../modules/docsettings.html) * [document.doccache](../modules/document.doccache.html) * [document.documentregistry](../modules/document.documentregistry.html) * [document.koptinterface](../modules/document.koptinterface.html) * [dump](../modules/dump.html) * [ffi.blitbuffer](../modules/ffi.blitbuffer.html) * [ffi.crypto](../modules/ffi.crypto.html) * [ffi.framebuffer](../modules/ffi.framebuffer.html) * [ffi.freetype](../modules/ffi.freetype.html) * [ffi.jpeg](../modules/ffi.jpeg.html) * [ffi.koptcontext](../modules/ffi.koptcontext.html) * [ffi.loadlib](../modules/ffi.loadlib.html) * [ffi.md5](../modules/ffi.md5.html) * [ffi.mupdf](../modules/ffi.mupdf.html) * [ffi.png](../modules/ffi.png.html) * [ffi.rtc](../modules/ffi.rtc.html) * [ffi.sdl2\_0](../modules/ffi.sdl2_0.html) * [ffi.utf8proc](../modules/ffi.utf8proc.html) * [ffi.util](../modules/ffi.util.html) * [ffi.webp](../modules/ffi.webp.html) * [ffi.zipwriter](../modules/ffi.zipwriter.html) * [ffi.zlib](../modules/ffi.zlib.html) * [ffi.zstd](../modules/ffi.zstd.html) * [gettext](../modules/gettext.html) * [koplugin.HelloWorld](../modules/koplugin.HelloWorld.html) * [koplugin.QRClipboard](../modules/koplugin.QRClipboard.html) * [koplugin.autodim](../modules/koplugin.autodim.html) * [koplugin.autowarmth](../modules/koplugin.autowarmth.html) * [koplugin.calibre.metadata](../modules/koplugin.calibre.metadata.html) * [koplugin.coverimage](../modules/koplugin.coverimage.html) * [koplugin.exporter](../modules/koplugin.exporter.html) * [koplugin.japanese](../modules/koplugin.japanese.html) * [koplugin.japanese.deinflector](../modules/koplugin.japanese.deinflector.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.terminal](../modules/koplugin.terminal.html) * [koplugin.vocabbuilder](../modules/koplugin.vocabbuilder.html) * [koplugin.wallabag](../modules/koplugin.wallabag.html) * [languagesupport](../modules/languagesupport.html) * [logger](../modules/logger.html) * [luadata](../modules/luadata.html) * [luadefaults](../modules/luadefaults.html) * [luasettings](../modules/luasettings.html) * [optmath](../modules/optmath.html) * [provider](../modules/provider.html) * [random](../modules/random.html) * [socketutil](../modules/socketutil.html) * [sort](../modules/sort.html) * [suntime](../modules/suntime.html) * [time](../modules/time.html) * [ui.bidi](../modules/ui.bidi.html) * [ui.data.css\_tweaks](../modules/ui.data.css_tweaks.html) * [ui.data.keyboardlayouts.generic\_ime](../modules/ui.data.keyboardlayouts.generic_ime.html) * [ui.data.keyboardlayouts.ja\_keyboard](../modules/ui.data.keyboardlayouts.ja_keyboard.html) * [ui.data.keyboardlayouts.ja\_keyboard\_keys](../modules/ui.data.keyboardlayouts.ja_keyboard_keys.html) * [ui.data.keyboardlayouts.ko\_KR\_helper](../modules/ui.data.keyboardlayouts.ko_KR_helper.html) * [ui.data.keyboardlayouts.zh\_keyboard](../modules/ui.data.keyboardlayouts.zh_keyboard.html) * [ui.data.optionsutil](../modules/ui.data.optionsutil.html) * [ui.downloadmgr](../modules/ui.downloadmgr.html) * [ui.event](../modules/ui.event.html) * [ui.font](../modules/ui.font.html) * [ui.geometry](../modules/ui.geometry.html) * [ui.hook\_container](../modules/ui.hook_container.html) * [ui.menusorter](../modules/ui.menusorter.html) * [ui.network.wpa\_supplicant](../modules/ui.network.wpa_supplicant.html) * [ui.otamanager](../modules/ui.otamanager.html) * [ui.plugin.background\_task\_plugin](../modules/ui.plugin.background_task_plugin.html) * [ui.plugin.switch\_plugin](../modules/ui.plugin.switch_plugin.html) * [ui.quickstart](../modules/ui.quickstart.html) * [ui.renderimage](../modules/ui.renderimage.html) * [ui.rendertext](../modules/ui.rendertext.html) * [ui.size](../modules/ui.size.html) * [ui.translator](../modules/ui.translator.html) * [ui.trapper](../modules/ui.trapper.html) * [ui.uimanager](../modules/ui.uimanager.html) * [ui.viewhtml](../modules/ui.viewhtml.html) * [ui.widget.bboxwidget](../modules/ui.widget.bboxwidget.html) * [ui.widget.button](../modules/ui.widget.button.html) * [ui.widget.buttondialog](../modules/ui.widget.buttondialog.html) * [ui.widget.checkbutton](../modules/ui.widget.checkbutton.html) * [ui.widget.checkmark](../modules/ui.widget.checkmark.html) * [ui.widget.confirmbox](../modules/ui.widget.confirmbox.html) * [ui.widget.container.alphacontainer](../modules/ui.widget.container.alphacontainer.html) * [ui.widget.container.bottomcontainer](../modules/ui.widget.container.bottomcontainer.html) * [ui.widget.container.centercontainer](../modules/ui.widget.container.centercontainer.html) * [ui.widget.container.framecontainer](../modules/ui.widget.container.framecontainer.html) * [ui.widget.container.inputcontainer](../modules/ui.widget.container.inputcontainer.html) * [ui.widget.container.leftcontainer](../modules/ui.widget.container.leftcontainer.html) * [ui.widget.container.movablecontainer](../modules/ui.widget.container.movablecontainer.html) * [ui.widget.container.rightcontainer](../modules/ui.widget.container.rightcontainer.html) * [ui.widget.container.scrollablecontainer](../modules/ui.widget.container.scrollablecontainer.html) * [ui.widget.container.topcontainer](../modules/ui.widget.container.topcontainer.html) * [ui.widget.container.underlinecontainer](../modules/ui.widget.container.underlinecontainer.html) * [ui.widget.container.widgetcontainer](../modules/ui.widget.container.widgetcontainer.html) * [ui.widget.datetimewidget](../modules/ui.widget.datetimewidget.html) * [ui.widget.eventlistener](../modules/ui.widget.eventlistener.html) * [ui.widget.horizontalgroup](../modules/ui.widget.horizontalgroup.html) * [ui.widget.htmlboxwidget](../modules/ui.widget.htmlboxwidget.html) * [ui.widget.iconbutton](../modules/ui.widget.iconbutton.html) * [ui.widget.iconwidget](../modules/ui.widget.iconwidget.html) * [ui.widget.imageviewer](../modules/ui.widget.imageviewer.html) * [ui.widget.imagewidget](../modules/ui.widget.imagewidget.html) * [ui.widget.infomessage](../modules/ui.widget.infomessage.html) * [ui.widget.inputdialog](../modules/ui.widget.inputdialog.html) * [ui.widget.keyboardlayoutdialog](../modules/ui.widget.keyboardlayoutdialog.html) * [ui.widget.keyvaluepage](../modules/ui.widget.keyvaluepage.html) * [ui.widget.linewidget](../modules/ui.widget.linewidget.html) * [ui.widget.listview](../modules/ui.widget.listview.html) * [ui.widget.multiconfirmbox](../modules/ui.widget.multiconfirmbox.html) * [ui.widget.multiinputdialog](../modules/ui.widget.multiinputdialog.html) * [ui.widget.networksetting](../modules/ui.widget.networksetting.html) * [ui.widget.notification](../modules/ui.widget.notification.html) * [ui.widget.numberpickerwidget](../modules/ui.widget.numberpickerwidget.html) * [ui.widget.openwithdialog](../modules/ui.widget.openwithdialog.html) * [ui.widget.overlapgroup](../modules/ui.widget.overlapgroup.html) * [ui.widget.progresswidget](../modules/ui.widget.progresswidget.html) * [ui.widget.qrmessage](../modules/ui.widget.qrmessage.html) * [ui.widget.radiobuttontable](../modules/ui.widget.radiobuttontable.html) * [ui.widget.radiobuttonwidget](../modules/ui.widget.radiobuttonwidget.html) * [ui.widget.scrollhtmlwidget](../modules/ui.widget.scrollhtmlwidget.html) * [ui.widget.scrolltextwidget](../modules/ui.widget.scrolltextwidget.html) * [ui.widget.textboxwidget](../modules/ui.widget.textboxwidget.html) * [ui.widget.textviewer](../modules/ui.widget.textviewer.html) * [ui.widget.textwidget](../modules/ui.widget.textwidget.html) * [ui.widget.toggleswitch](../modules/ui.widget.toggleswitch.html) * [ui.widget.touchmenu](../modules/ui.widget.touchmenu.html) * [ui.widget.trapwidget](../modules/ui.widget.trapwidget.html) * [ui.widget.verticalgroup](../modules/ui.widget.verticalgroup.html) * [ui.widget.widget](../modules/ui.widget.widget.html) * [userpatch](../modules/userpatch.html) * [util](../modules/util.html) * [version](../modules/version.html) Unit Tests ========== Unit tests are automatically performed using [busted](http://olivinelabs.com/busted/) . It depends on `luarocks`. To grab busted, install the same version [as used in the automated tests](https://github.com/koreader/koreader/blob/master/.ci/install.sh) . At the time of writing that is 2.0.0-1: mkdir $HOME/.luarocks cp /etc/luarocks/config.lua $HOME/.luarocks/config.lua echo "wrap\_bin\_scripts = false" >> $HOME/.luarocks/config.lua luarocks \--local install busted 2.0.0-1 Then you can set up the environment variables with `./kodev activate`. If all went well, you'll now be able to run `./kodev test front` (for the frontend) or `./kodev test base` (for koreader-base). You can run individual tests using `./kodev test front testname_spec.lua`. _generated by [LDoc 1.5.0](https://github.com/lunarmodules/LDoc) _ _Last updated 2025-01-19 22:30:30_ --- # KOReader * [User Guide](user_guide) * [Download](https://github.com/koreader/koreader/releases) * [Wiki](https://github.com/koreader/koreader/wiki) * [Forum](https://www.mobileread.com/forums/forumdisplay.php?f=276) * [Bug Report](https://github.com/koreader/koreader/issues) * [Develop](https://github.com/koreader/koreader) * [Developer Docs](https://koreader.rocks/doc) * [Logo Gallery](gallery.html) [![](https://github.com/koreader/koreader-artwork/raw/master/koreader-menu-thumbnail.png)](https://github.com/koreader/koreader-artwork/raw/master/koreader-menu.png) [![](https://github.com/koreader/koreader-artwork/raw/master/koreader-footnotes-thumbnail.png)](https://github.com/koreader/koreader-artwork/raw/master/koreader-footnotes.png) [![](https://github.com/koreader/koreader-artwork/raw/master/koreader-dictionary-thumbnail.png)](https://github.com/koreader/koreader-artwork/raw/master/koreader-dictionary.png) --- # Page not found · GitHub Pages 404 === **File not found** The site configured at this address does not contain the requested file. If this is your site, make sure that the filename case matches the URL as well as any file permissions. For root URLs (like `http://example.com/`) you must provide an `index.html` file. [Read the full documentation](https://help.github.com/pages/) for more information about using **GitHub Pages**. [GitHub Status](https://githubstatus.com) — [@githubstatus](https://twitter.com/githubstatus) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMTZCRDY3REIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMTZCRDY3RUIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdCQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjdDQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SM9MCAAAA+5JREFUeNrEV11Ik1EY3s4+ddOp29Q5b0opCgKFsoKoi5Kg6CIhuwi6zLJLoYLopq4qsKKgi4i6CYIoU/q5iDAKs6syoS76IRWtyJ+p7cdt7sf1PGOD+e0c3dygAx/67ZzzPM95/877GYdHRg3ZjMXFxepQKNS6sLCwJxqNNuFpiMfjVs4ZjUa/pmmjeD6VlJS8NpvNT4QQ7mxwjSsJiEQim/1+/9lgMHgIr5ohuxG1WCw9Vqv1clFR0dCqBODElV6v90ogEDjGdYbVjXhpaendioqK07CIR7ZAqE49PT09BPL2PMgTByQGsYiZlQD4uMXtdr+JxWINhgINYhGT2MsKgMrm2dnZXgRXhaHAg5jEJodUAHxux4LudHJE9RdEdA+i3Juz7bGHe4mhE9FNrgwBCLirMFV9Okh5eflFh8PR5nK5nDabrR2BNJlKO0T35+Li4n4+/J+/JQCxhmu5h3uJoXNHPbmWZAHMshWB8l5/ipqammaAf0zPDDx1ONV3vurdidqwAQL+pEc8sLcAe1CCvQ3YHxIW8Pl85xSWNC1hADDIv0rIE/o4J0k3kww4xSlwIhcq3EFFOm7KN/hUGOQkt0CFa5WpNJlMvxBEz/IVQAxg/ZRZl9wiHA63yDYieM7DnLP5CiAGsC7I5sgtYKJGWe2A8seFqgFJrJjEPY1Cn3pJ8/9W1e5VWsFDTEmFrBcoDhZJEQkXuhICMyKpjhahqN21hRYATKfUOlDmkygrR4o4C0VOLGJKrOITKB4jijzdXygBKixyC5TDQdnk/Pz8qRw6oOWGlsTKGOQW6OH6FBWsyePxdOXLTgxiyebILZCjz+GLgMIKnXNzc49YMlcRdHXcSwxFVgTInQhC9G33UhNoJLuqq6t345p9y3eUy8OTk5PjAHuI9uo4b07FBaOhsu0A4Unc+T1TU1Nj3KsSSE5yJ65jqF2DDd8QqWYmAZrIM2VlZTdnZmb6AbpdV9V6ec9znf5Q7HjYumdRE0JOp3MjitO4SFa+cZz8Umqe3TCbSLvdfkR/kWDdNQl5InuTcysOcpFT35ZrbBxx4p3JAHlZVVW1D/634VRt+FvLBgK/v5LV9WS+10xMTEwtRw7XvqOL+e2Q8V3AYIOIAXQ26/heWVnZCVfcyKHg2CBgTpmPmjYM8l24GyaUHyaIh7XwfR9ErE8qHoDfn2LTNAVC0HX6MFcBIP8Bi+6F6cdW/DICkANRfx99fEYFQ7Nph5i/uQiA214gno7K+guhaiKg9gC62+M8eR7XsBsYJ4ilam60Fb7r7uAj8wFyuwM1oIOWgfmDy6RXEEQzJMPe23DXrVS7rtyD3Df8z/FPgAEAzWU5Ku59ZAUAAAAASUVORK5CYII=)](/) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUM1QkUxRUI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUM1QkUxRkI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdGQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjgwQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hfPRaQAAB6lJREFUeNrsW2mME2UYbodtt+2222u35QheoCCYGBQligIJgkZJNPzgigoaTEj8AdFEMfADfyABkgWiiWcieK4S+QOiHAYUj2hMNKgYlEujpNttu9vttbvdw+chU1K6M535pt3ubHCSyezR+b73eb73+t7vrfXsufOW4bz6+vom9/b23ovnNNw34b5xYGAgODg46Mbt4mesVmsWd1qSpHhdXd2fuP/Afcput5/A88xwymcdBgLqenp6FuRyuWV4zu/v759QyWBjxoz5t76+/gun09mK5xFyakoCAPSaTCazNpvNPoYVbh6O1YKGRF0u13sNDQ27QMzfpiAAKj0lnU6/gBVfAZW2WWpwwVzy0IgP3G73FpjI6REhAGA9qVRqA1b9mVoBVyIC2tDi8Xg24+dUzQiAbS/s7Ox8G2o/3mKCC+Zw0efzPQEfcVjYrARX3dbV1bUtHo8fMgt42f+Mp0yUTVQbdWsAHVsikdiHkHaPxcQXQufXgUBgMRxme9U0AAxfH4vFvjM7eF6UkbJS5qoQwEQGA57Ac5JllFyUVZZ5ckUEgMVxsK2jlSYzI+QXJsiyjzNEAJyJAzb/KQa41jJKL8pODMQiTEAymXw5n8/P0IjD3bh7Rgog59aanxiIRTVvV/oj0tnHca/WMrVwODwB3raTGxzkBg/gnZVapFV62Wy2n5AO70HM/5wbJ0QnXyQSaVPDIuNZzY0V3ntHMwxiwHA0Gj2Np7ecIBDgaDAYXKCQJM1DhrgJ3nhulcPbl8j4NmHe46X/g60fwbz3aewjkqFQaAqebWU1AOqyQwt8Id6qEHMc97zu7u7FGGsn7HAiVuosVw7P35C1nccdgSCxop1dHeZswmfHMnxBo6ZTk+jN8dl/vF7vWofDsa+MLN9oEUBMxOb3+1eoEsBVw6Zmua49r8YmhAKDiEPcMwBsxMiqQ+ixzPFxZyqRpXARG/YOr1ObFJ0gUskXBbamcR1OKmMUvDxHRAu8/LmY3jFLMUpFqz9HxG65smYJdyKyECOxDiEAe/p1gjF2oonivZAsxVgl2daa4EQWCW6J55qFAFFZiJWYLxNQy2qOSUzGRsyXCUDIeliwAHEO4WSlWQBRFoZakXcKmCXmyXAKs0Ve9vl8q42WoIYpJU4hV3hKcNs8m9gl7p/xQ73eF5kB4j5mNrWmTJRNwAzqiV1CxjVTZCIkEq+Z1bZFZSN2CenmVAFVy4Plz8xKAGWjjAKFk6lCBMDR/MJjLLMSQNm43xAiQKTaA+9/wewhDjL+JVI1kkTSSOTcKbMTwPqESAot6dn6Fr1gHwVJju6IRuyiByPuUUBAg5DGkAgBmxlvdgIEK9gDkohdY/BJo4CAG0R8miRSsGABkgVQs4KXu098IgUXSSRsFAoKZiVAVDY2WUiiPTjYRi41KwGisrGsLtlsth8Fiwnz2fBkQvWfRtlE3iF2yW63/yCacXZ1dW02GwGyTFaRd4idJnCKHRaCxYRHoG5LTKT6SyiToP1fJHbmAYPYRR0UnZQtMnA6s0zg+GZBlt0Gdo7EPHgpE3Q6nZ8YyLhc8Xj8MJh/aKTAY+5FPAKHLE7RdwuYJZmNwzyCMkBCYyKROJBMJl9B/PXXCjjmCmDOVzH3fiPpObEWGqoKe4EBl8v1hlqsdLvd23mkxHM9pc9kMpmno9HoeTii7ewbHEZPPx1ztLS1tV3AnGuMjiNjvbQFuHw6zDo5By7dTPAQNBgMLrRarTkSls1mnwT7uwp9virx9QzbW/HuV/j5d/b+6jniKlllP8lkeONJDk+dq9GsQTnC4fB1heO0K47Hwe7WdDr9nAKgXwOBwHI+C45Htj1d6sd429TUNEcmUdc+PRaLHcvn87dXW4ugzdsaGxufL94NFv9zi1J7GVbhlvb2dnaJ3SVrxfc+n2+NTsZ7/H7/Mr3g5XdSIHyJSH1PZ+7fToyl2+ErqilgZ4NaLYB9goVGaHjR93Hv1ZrU4XDsFT20kH3PObzbWk0CgG1jacVIUnAQb9F+VexyLMzkpcLv0IJV7AHQIOCAUYHx7v5qgScmYHtTqSAyZLEJTK22Bie4iq3xsqpm4SAf9Hq9a2DnJ4uLK3SEULcdRvp3i3zHySqpficxEdsQc1NrlYXXvR+O7qASSezXB+h1SuUomgg9LL8BUoV4749EIolKh+EiqWmqVEZlDgHks2pxHw7xTqUQw9J5NcAXOK10AGIoZ6Zli6JY6Z1Q461KoZ4NiKLHarW+KDsxlDUPHZ5zPQZqUVDPJsTqb5n9malbpAh8C2XXDLl62+WZIDFRUlNVOiwencnNU3aQEkL+cDMSoLvZo2fQB7AJssNAuFuvorlDVVkkg2I87+jo2K2QAVphDrfyViK5VqtO34OkaxXCp+7drdDBCAdubm6eidX+2WwqT5komwh4YQLk+H4aE93h8Xg2gvHekQZOGSgLZTLyDTLJ4Lx9/KZWKBSainT4Iy3FqQBfnUZR42PKQFksBr9QKVXCPusD3OiA/RkQ5kP8qV/Jl1WywAp/6+dcmPM2zL1UrUahe4JqfnWWKXIul3uUbfP8njAFLW1OFr3gdFtZ72cNH+PtQT7/brW+NXqJAHh0y9V8/U/A1U7AfwIMAD7mS3pCbuWJAAAAAElFTkSuQmCC)](/) --- # KOReader logo gallery KOReader logo gallery ===================== Since October 2018, we've tried to spruce up the montly stable releases with a code name and an illustration to go with it. This gallery showcases all of the creations. * Original KOReader logo ---------------------- [![Original KOReader logo](https://cloud.githubusercontent.com/assets/14007369/24885152/89f97930-1e12-11e7-9b3a-0d899af96e90.png "Original KOReader logo")](https://github.com/koreader/koreader/pull/201) * koreader-beta-20180602 ---------------------- [![v2018.06.02-beta](https://user-images.githubusercontent.com/202757/40880057-a49ddc54-66aa-11e8-837e-38f46f83577e.png "v2018.06.02-beta")](https://github.com/koreader/koreader/releases/tag/v2018.06.02-beta) * koreader-beta-20181007 "don't read alone tonight" ------------------------------------------------- [![v2018.10.07-beta](https://user-images.githubusercontent.com/202757/46568140-6090ea80-c940-11e8-9310-568b4f213867.png "v2018.10.07-beta")](https://github.com/koreader/koreader/releases/tag/v2018.10.07-beta) * KOReader 2018.11 "An die Freude" -------------------------------- [![v2018.11](https://user-images.githubusercontent.com/202757/47815450-adee5500-dd50-11e8-89b5-60decfa81b06.png "v2018.11")](https://github.com/koreader/koreader/releases/tag/v2018.11) * KOReader 2019.04 ---------------- [![v2019.04](https://user-images.githubusercontent.com/202757/55562526-651e3c00-56f4-11e9-8d68-0d7d87bfb423.png "v2019.04")](https://github.com/koreader/koreader/releases/tag/v2019.04) * KOReader 2019.06 "Sea Buckthorn" -------------------------------- [![v2019.06](https://user-images.githubusercontent.com/202757/59203064-1ed6d480-8b9e-11e9-8e3e-4ac80f723724.png "v2019.06")](https://github.com/koreader/koreader/releases/tag/v2019.06) * KOReader 2019.08 "Starling" --------------------------- [![v2019.08](https://user-images.githubusercontent.com/202757/62636816-8c9f4280-b93a-11e9-887b-e19797e4e02e.png "v2019.08")](https://github.com/koreader/koreader/releases/tag/v2019.08) * KOReader 2019.09 "I Scream For Ice Cream" ----------------------------------------- [![v2019.09](https://user-images.githubusercontent.com/202757/64167717-40b4c000-ce4a-11e9-8e50-275e84f2dafa.png "v2019.09")](https://github.com/koreader/koreader/releases/tag/v2019.09) * KOReader 2019.11 "Cleft Cloak" ------------------------------ [![v2019.11](https://user-images.githubusercontent.com/202757/68545999-bb620480-03d2-11ea-80a7-aeddd2b4317b.png "v2019.11")](https://github.com/koreader/koreader/releases/tag/v2019.11) * KOReader 2020.03 "Skating Bird" ------------------------------- [![v2020.03](https://user-images.githubusercontent.com/202757/74594861-67069a80-503b-11ea-9534-d92747ef6bf1.jpg "v2020.03")](https://github.com/koreader/koreader/releases/tag/v2020.03) * KOReader 2020.04 "Eating Ghosts" -------------------------------- [![v2020.04](https://user-images.githubusercontent.com/202757/79066366-9cd0a400-7cb7-11ea-8e76-ddd6fb0d34de.jpg "v2020.04")](https://github.com/koreader/koreader/releases/tag/v2020.04) * KOReader 2020.06 "Mosaic" ------------------------- [![v2020.06](https://user-images.githubusercontent.com/202757/84759255-c1ead700-afc6-11ea-99a1-47cd84d8fd44.jpg "v2020.06")](https://github.com/koreader/koreader/releases/tag/v2020.06) * KOReader 2020.08 "Scorching Sun" -------------------------------- [![v2020.08](https://user-images.githubusercontent.com/202757/90381882-4ec11800-e07e-11ea-9149-9443390228b8.png "v2020.08")](https://github.com/koreader/koreader/releases/tag/v2020.08) * KOReader 2020.11 "Hive of Industry" ----------------------------------- [![v2020.11](https://user-images.githubusercontent.com/202757/99234680-24096b80-27f5-11eb-8c0d-664630f36ff9.png "v2020.11")](https://github.com/koreader/koreader/releases/tag/v2020.11) * KOReader 2021.01 "Magnetic Flux" -------------------------------- [![v2021.01](https://user-images.githubusercontent.com/202757/105573478-3906fb80-5d5e-11eb-82e2-20d84bbea95e.png "v2021.01")](https://github.com/koreader/koreader/releases/tag/v2021.01) * KOReader 2021.03 "Magnificent Mullet" ------------------------------------- [![v2021.03](https://user-images.githubusercontent.com/202757/112747973-2789dc00-8fb9-11eb-88f1-68da0700e7d0.png "v2021.03")](https://github.com/koreader/koreader/releases/tag/v2021.03) * KOReader 2021.04 "Gouty Gauss" ------------------------------ [![v2021.04](https://user-images.githubusercontent.com/202757/115617424-aa206580-a2f1-11eb-9bc5-e0e58c1dfcfd.png "v2021.04")](https://github.com/koreader/koreader/releases/tag/v2021.04) * KOReader 2021.05 "Yellow Daffodil" ---------------------------------- [![v2021.05](https://user-images.githubusercontent.com/202757/118705790-f1c6de00-b818-11eb-9fde-9906729069a8.png "v2021.05")](https://github.com/koreader/koreader/releases/tag/v2021.05) * KOReader 2021.09 "September Cheese" ----------------------------------- [![v2021.09](https://user-images.githubusercontent.com/202757/133938763-6dc9c5ac-256f-44b1-808f-beaac85f5021.png "v2021.09")](https://github.com/koreader/koreader/releases/tag/v2021.09) * KOReader 2021.10 "Seagull" -------------------------- [![v2021.10](https://user-images.githubusercontent.com/202757/137580687-566c5813-62f1-44b4-982f-029d5b09d1ed.png "v2021.10")](https://github.com/koreader/koreader/releases/tag/v2021.10) * KOReader 2021.11 "November Leaves" ---------------------------------- [![v2021.11](https://user-images.githubusercontent.com/90972589/141681374-a222672d-608e-4155-b141-6ba55f441a3f.jpg "v2021.11")](https://github.com/koreader/koreader/releases/tag/v2021.11) * KOReader 2021.12 "Belisarius" ----------------------------- [![v2021.12](https://user-images.githubusercontent.com/90972589/146652469-8740c0c3-831e-4931-9cb0-f662a16cd079.jpg "v2021.12")](https://github.com/koreader/koreader/releases/tag/v2021.12) * KOReader 2022.01 "Union of Utrecht" ----------------------------------- [![v2022.01](https://user-images.githubusercontent.com/202757/149628115-a4be81ce-9b58-444e-9d31-aa2cab460793.png "v2022.01")](https://github.com/koreader/koreader/releases/tag/v2022.01) * KOReader 2022.02 "Україна" -------------------------- [![v2022.02](https://user-images.githubusercontent.com/202757/155885429-10317bde-e108-4208-b857-dca73019de39.png "v2022.02")](https://github.com/koreader/koreader/releases/tag/v2022.02) * KOReader 2022.03 "Snowdrop" --------------------------- [![v2022.03](https://user-images.githubusercontent.com/90972589/153406196-22e9c6c9-804b-4cb8-a650-5da629790d2f.png "v2022.03")](https://github.com/koreader/koreader/releases/tag/v2022.03) * KOReader 2022.05 "Tulip" ------------------------ [![v2022.05](https://user-images.githubusercontent.com/90972589/168378177-38d3fda5-98ff-4ebe-bf9b-2940db9a0e5e.png "v2022.05")](https://github.com/koreader/koreader/releases/tag/v2022.05) * KOReader 2022.06 "Hawthorne" ---------------------------- [![v2022.06](https://user-images.githubusercontent.com/202757/174470912-bc775827-5445-4329-9fd4-a9cf53986ba7.png "v2022.06")](https://github.com/koreader/koreader/releases/tag/v2022.06) * KOReader 2022.07 "Ladybug" -------------------------- [![v2022.07](https://user-images.githubusercontent.com/202757/178065695-da0d3a39-ea94-495a-a871-3471337e7940.png "v2022.07")](https://github.com/koreader/koreader/releases/tag/v2022.07) * KOReader 2022.08 "Tumbleweed" ----------------------------- [![v2022.08](https://user-images.githubusercontent.com/202757/185655713-63e3e5b5-ed3d-472c-b1bf-30f70a51fba0.png "v2022.08")](https://github.com/koreader/koreader/releases/tag/v2022.08) * KOReader 2022.10 "Muhara" ------------------------- [![v2022.10](https://user-images.githubusercontent.com/202757/197379886-75c933df-8236-4be2-9287-304a88778b67.png "v2022.10")](https://github.com/koreader/koreader/releases/tag/v2022.10) * KOReader 2022.11 "Froggy" ------------------------- [![v2022.11](https://user-images.githubusercontent.com/202757/204384219-145f194a-9017-45f0-a013-66774246710e.png "v2022.11")](https://github.com/koreader/koreader/releases/tag/v2022.11) * KOReader 2023.01 "Winter Ivy" ----------------------------- [![v2023.01](https://user-images.githubusercontent.com/202757/215866218-bb053e5d-4766-4b0c-b33d-e03445433130.png "v2023.01")](https://github.com/koreader/koreader/releases/tag/v2023.01) * KOReader 2023.03 "Cherry Blossom" --------------------------------- [![v2023.03](https://user-images.githubusercontent.com/202757/226296133-e1d0bc3f-9ae3-4ed3-a121-d42466881145.png "v2023.03")](https://github.com/koreader/koreader/releases/tag/v2023.03) * KOReader 2023.04 "Solar Panel" ------------------------------ [![v2023.04](https://user-images.githubusercontent.com/202757/234975122-d7739c71-74aa-4cb0-a086-72a4bba70f52.png "v2023.04")](https://github.com/koreader/koreader/releases/tag/v2023.04) * KOReader 2023.05 "Azalea" ------------------------- [![v2023.05](https://commons.wikimedia.org/wiki/File:150_Rhododendron_lapponicum.jpg "v2023.05")](https://github.com/koreader/koreader/releases/tag/v2023.05) --- # Page not found · GitHub Pages 404 === **File not found** The site configured at this address does not contain the requested file. If this is your site, make sure that the filename case matches the URL as well as any file permissions. For root URLs (like `http://example.com/`) you must provide an `index.html` file. [Read the full documentation](https://help.github.com/pages/) for more information about using **GitHub Pages**. [GitHub Status](https://githubstatus.com) — [@githubstatus](https://twitter.com/githubstatus) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMTZCRDY3REIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMTZCRDY3RUIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdCQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjdDQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SM9MCAAAA+5JREFUeNrEV11Ik1EY3s4+ddOp29Q5b0opCgKFsoKoi5Kg6CIhuwi6zLJLoYLopq4qsKKgi4i6CYIoU/q5iDAKs6syoS76IRWtyJ+p7cdt7sf1PGOD+e0c3dygAx/67ZzzPM95/877GYdHRg3ZjMXFxepQKNS6sLCwJxqNNuFpiMfjVs4ZjUa/pmmjeD6VlJS8NpvNT4QQ7mxwjSsJiEQim/1+/9lgMHgIr5ohuxG1WCw9Vqv1clFR0dCqBODElV6v90ogEDjGdYbVjXhpaendioqK07CIR7ZAqE49PT09BPL2PMgTByQGsYiZlQD4uMXtdr+JxWINhgINYhGT2MsKgMrm2dnZXgRXhaHAg5jEJodUAHxux4LudHJE9RdEdA+i3Juz7bGHe4mhE9FNrgwBCLirMFV9Okh5eflFh8PR5nK5nDabrR2BNJlKO0T35+Li4n4+/J+/JQCxhmu5h3uJoXNHPbmWZAHMshWB8l5/ipqammaAf0zPDDx1ONV3vurdidqwAQL+pEc8sLcAe1CCvQ3YHxIW8Pl85xSWNC1hADDIv0rIE/o4J0k3kww4xSlwIhcq3EFFOm7KN/hUGOQkt0CFa5WpNJlMvxBEz/IVQAxg/ZRZl9wiHA63yDYieM7DnLP5CiAGsC7I5sgtYKJGWe2A8seFqgFJrJjEPY1Cn3pJ8/9W1e5VWsFDTEmFrBcoDhZJEQkXuhICMyKpjhahqN21hRYATKfUOlDmkygrR4o4C0VOLGJKrOITKB4jijzdXygBKixyC5TDQdnk/Pz8qRw6oOWGlsTKGOQW6OH6FBWsyePxdOXLTgxiyebILZCjz+GLgMIKnXNzc49YMlcRdHXcSwxFVgTInQhC9G33UhNoJLuqq6t345p9y3eUy8OTk5PjAHuI9uo4b07FBaOhsu0A4Unc+T1TU1Nj3KsSSE5yJ65jqF2DDd8QqWYmAZrIM2VlZTdnZmb6AbpdV9V6ec9znf5Q7HjYumdRE0JOp3MjitO4SFa+cZz8Umqe3TCbSLvdfkR/kWDdNQl5InuTcysOcpFT35ZrbBxx4p3JAHlZVVW1D/634VRt+FvLBgK/v5LV9WS+10xMTEwtRw7XvqOL+e2Q8V3AYIOIAXQ26/heWVnZCVfcyKHg2CBgTpmPmjYM8l24GyaUHyaIh7XwfR9ErE8qHoDfn2LTNAVC0HX6MFcBIP8Bi+6F6cdW/DICkANRfx99fEYFQ7Nph5i/uQiA214gno7K+guhaiKg9gC62+M8eR7XsBsYJ4ilam60Fb7r7uAj8wFyuwM1oIOWgfmDy6RXEEQzJMPe23DXrVS7rtyD3Df8z/FPgAEAzWU5Ku59ZAUAAAAASUVORK5CYII=)](/) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUM1QkUxRUI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUM1QkUxRkI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdGQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjgwQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hfPRaQAAB6lJREFUeNrsW2mME2UYbodtt+2222u35QheoCCYGBQligIJgkZJNPzgigoaTEj8AdFEMfADfyABkgWiiWcieK4S+QOiHAYUj2hMNKgYlEujpNttu9vttbvdw+chU1K6M535pt3ubHCSyezR+b73eb73+t7vrfXsufOW4bz6+vom9/b23ovnNNw34b5xYGAgODg46Mbt4mesVmsWd1qSpHhdXd2fuP/Afcput5/A88xwymcdBgLqenp6FuRyuWV4zu/v759QyWBjxoz5t76+/gun09mK5xFyakoCAPSaTCazNpvNPoYVbh6O1YKGRF0u13sNDQ27QMzfpiAAKj0lnU6/gBVfAZW2WWpwwVzy0IgP3G73FpjI6REhAGA9qVRqA1b9mVoBVyIC2tDi8Xg24+dUzQiAbS/s7Ox8G2o/3mKCC+Zw0efzPQEfcVjYrARX3dbV1bUtHo8fMgt42f+Mp0yUTVQbdWsAHVsikdiHkHaPxcQXQufXgUBgMRxme9U0AAxfH4vFvjM7eF6UkbJS5qoQwEQGA57Ac5JllFyUVZZ5ckUEgMVxsK2jlSYzI+QXJsiyjzNEAJyJAzb/KQa41jJKL8pODMQiTEAymXw5n8/P0IjD3bh7Rgog59aanxiIRTVvV/oj0tnHca/WMrVwODwB3raTGxzkBg/gnZVapFV62Wy2n5AO70HM/5wbJ0QnXyQSaVPDIuNZzY0V3ntHMwxiwHA0Gj2Np7ecIBDgaDAYXKCQJM1DhrgJ3nhulcPbl8j4NmHe46X/g60fwbz3aewjkqFQaAqebWU1AOqyQwt8Id6qEHMc97zu7u7FGGsn7HAiVuosVw7P35C1nccdgSCxop1dHeZswmfHMnxBo6ZTk+jN8dl/vF7vWofDsa+MLN9oEUBMxOb3+1eoEsBVw6Zmua49r8YmhAKDiEPcMwBsxMiqQ+ixzPFxZyqRpXARG/YOr1ObFJ0gUskXBbamcR1OKmMUvDxHRAu8/LmY3jFLMUpFqz9HxG65smYJdyKyECOxDiEAe/p1gjF2oonivZAsxVgl2daa4EQWCW6J55qFAFFZiJWYLxNQy2qOSUzGRsyXCUDIeliwAHEO4WSlWQBRFoZakXcKmCXmyXAKs0Ve9vl8q42WoIYpJU4hV3hKcNs8m9gl7p/xQ73eF5kB4j5mNrWmTJRNwAzqiV1CxjVTZCIkEq+Z1bZFZSN2CenmVAFVy4Plz8xKAGWjjAKFk6lCBMDR/MJjLLMSQNm43xAiQKTaA+9/wewhDjL+JVI1kkTSSOTcKbMTwPqESAot6dn6Fr1gHwVJju6IRuyiByPuUUBAg5DGkAgBmxlvdgIEK9gDkohdY/BJo4CAG0R8miRSsGABkgVQs4KXu098IgUXSSRsFAoKZiVAVDY2WUiiPTjYRi41KwGisrGsLtlsth8Fiwnz2fBkQvWfRtlE3iF2yW63/yCacXZ1dW02GwGyTFaRd4idJnCKHRaCxYRHoG5LTKT6SyiToP1fJHbmAYPYRR0UnZQtMnA6s0zg+GZBlt0Gdo7EPHgpE3Q6nZ8YyLhc8Xj8MJh/aKTAY+5FPAKHLE7RdwuYJZmNwzyCMkBCYyKROJBMJl9B/PXXCjjmCmDOVzH3fiPpObEWGqoKe4EBl8v1hlqsdLvd23mkxHM9pc9kMpmno9HoeTii7ewbHEZPPx1ztLS1tV3AnGuMjiNjvbQFuHw6zDo5By7dTPAQNBgMLrRarTkSls1mnwT7uwp9virx9QzbW/HuV/j5d/b+6jniKlllP8lkeONJDk+dq9GsQTnC4fB1heO0K47Hwe7WdDr9nAKgXwOBwHI+C45Htj1d6sd429TUNEcmUdc+PRaLHcvn87dXW4ugzdsaGxufL94NFv9zi1J7GVbhlvb2dnaJ3SVrxfc+n2+NTsZ7/H7/Mr3g5XdSIHyJSH1PZ+7fToyl2+ErqilgZ4NaLYB9goVGaHjR93Hv1ZrU4XDsFT20kH3PObzbWk0CgG1jacVIUnAQb9F+VexyLMzkpcLv0IJV7AHQIOCAUYHx7v5qgScmYHtTqSAyZLEJTK22Bie4iq3xsqpm4SAf9Hq9a2DnJ4uLK3SEULcdRvp3i3zHySqpficxEdsQc1NrlYXXvR+O7qASSezXB+h1SuUomgg9LL8BUoV4749EIolKh+EiqWmqVEZlDgHks2pxHw7xTqUQw9J5NcAXOK10AGIoZ6Zli6JY6Z1Q461KoZ4NiKLHarW+KDsxlDUPHZ5zPQZqUVDPJsTqb5n9malbpAh8C2XXDLl62+WZIDFRUlNVOiwencnNU3aQEkL+cDMSoLvZo2fQB7AJssNAuFuvorlDVVkkg2I87+jo2K2QAVphDrfyViK5VqtO34OkaxXCp+7drdDBCAdubm6eidX+2WwqT5komwh4YQLk+H4aE93h8Xg2gvHekQZOGSgLZTLyDTLJ4Lx9/KZWKBSainT4Iy3FqQBfnUZR42PKQFksBr9QKVXCPusD3OiA/RkQ5kP8qV/Jl1WywAp/6+dcmPM2zL1UrUahe4JqfnWWKXIul3uUbfP8njAFLW1OFr3gdFtZ72cNH+PtQT7/brW+NXqJAHh0y9V8/U/A1U7AfwIMAD7mS3pCbuWJAAAAAElFTkSuQmCC)](/) --- # Page not found · GitHub Pages 404 === **File not found** The site configured at this address does not contain the requested file. If this is your site, make sure that the filename case matches the URL as well as any file permissions. For root URLs (like `http://example.com/`) you must provide an `index.html` file. [Read the full documentation](https://help.github.com/pages/) for more information about using **GitHub Pages**. [GitHub Status](https://githubstatus.com) — [@githubstatus](https://twitter.com/githubstatus) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMTZCRDY3REIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMTZCRDY3RUIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdCQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjdDQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SM9MCAAAA+5JREFUeNrEV11Ik1EY3s4+ddOp29Q5b0opCgKFsoKoi5Kg6CIhuwi6zLJLoYLopq4qsKKgi4i6CYIoU/q5iDAKs6syoS76IRWtyJ+p7cdt7sf1PGOD+e0c3dygAx/67ZzzPM95/877GYdHRg3ZjMXFxepQKNS6sLCwJxqNNuFpiMfjVs4ZjUa/pmmjeD6VlJS8NpvNT4QQ7mxwjSsJiEQim/1+/9lgMHgIr5ohuxG1WCw9Vqv1clFR0dCqBODElV6v90ogEDjGdYbVjXhpaendioqK07CIR7ZAqE49PT09BPL2PMgTByQGsYiZlQD4uMXtdr+JxWINhgINYhGT2MsKgMrm2dnZXgRXhaHAg5jEJodUAHxux4LudHJE9RdEdA+i3Juz7bGHe4mhE9FNrgwBCLirMFV9Okh5eflFh8PR5nK5nDabrR2BNJlKO0T35+Li4n4+/J+/JQCxhmu5h3uJoXNHPbmWZAHMshWB8l5/ipqammaAf0zPDDx1ONV3vurdidqwAQL+pEc8sLcAe1CCvQ3YHxIW8Pl85xSWNC1hADDIv0rIE/o4J0k3kww4xSlwIhcq3EFFOm7KN/hUGOQkt0CFa5WpNJlMvxBEz/IVQAxg/ZRZl9wiHA63yDYieM7DnLP5CiAGsC7I5sgtYKJGWe2A8seFqgFJrJjEPY1Cn3pJ8/9W1e5VWsFDTEmFrBcoDhZJEQkXuhICMyKpjhahqN21hRYATKfUOlDmkygrR4o4C0VOLGJKrOITKB4jijzdXygBKixyC5TDQdnk/Pz8qRw6oOWGlsTKGOQW6OH6FBWsyePxdOXLTgxiyebILZCjz+GLgMIKnXNzc49YMlcRdHXcSwxFVgTInQhC9G33UhNoJLuqq6t345p9y3eUy8OTk5PjAHuI9uo4b07FBaOhsu0A4Unc+T1TU1Nj3KsSSE5yJ65jqF2DDd8QqWYmAZrIM2VlZTdnZmb6AbpdV9V6ec9znf5Q7HjYumdRE0JOp3MjitO4SFa+cZz8Umqe3TCbSLvdfkR/kWDdNQl5InuTcysOcpFT35ZrbBxx4p3JAHlZVVW1D/634VRt+FvLBgK/v5LV9WS+10xMTEwtRw7XvqOL+e2Q8V3AYIOIAXQ26/heWVnZCVfcyKHg2CBgTpmPmjYM8l24GyaUHyaIh7XwfR9ErE8qHoDfn2LTNAVC0HX6MFcBIP8Bi+6F6cdW/DICkANRfx99fEYFQ7Nph5i/uQiA214gno7K+guhaiKg9gC62+M8eR7XsBsYJ4ilam60Fb7r7uAj8wFyuwM1oIOWgfmDy6RXEEQzJMPe23DXrVS7rtyD3Df8z/FPgAEAzWU5Ku59ZAUAAAAASUVORK5CYII=)](/) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUM1QkUxRUI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUM1QkUxRkI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdGQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjgwQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hfPRaQAAB6lJREFUeNrsW2mME2UYbodtt+2222u35QheoCCYGBQligIJgkZJNPzgigoaTEj8AdFEMfADfyABkgWiiWcieK4S+QOiHAYUj2hMNKgYlEujpNttu9vttbvdw+chU1K6M535pt3ubHCSyezR+b73eb73+t7vrfXsufOW4bz6+vom9/b23ovnNNw34b5xYGAgODg46Mbt4mesVmsWd1qSpHhdXd2fuP/Afcput5/A88xwymcdBgLqenp6FuRyuWV4zu/v759QyWBjxoz5t76+/gun09mK5xFyakoCAPSaTCazNpvNPoYVbh6O1YKGRF0u13sNDQ27QMzfpiAAKj0lnU6/gBVfAZW2WWpwwVzy0IgP3G73FpjI6REhAGA9qVRqA1b9mVoBVyIC2tDi8Xg24+dUzQiAbS/s7Ox8G2o/3mKCC+Zw0efzPQEfcVjYrARX3dbV1bUtHo8fMgt42f+Mp0yUTVQbdWsAHVsikdiHkHaPxcQXQufXgUBgMRxme9U0AAxfH4vFvjM7eF6UkbJS5qoQwEQGA57Ac5JllFyUVZZ5ckUEgMVxsK2jlSYzI+QXJsiyjzNEAJyJAzb/KQa41jJKL8pODMQiTEAymXw5n8/P0IjD3bh7Rgog59aanxiIRTVvV/oj0tnHca/WMrVwODwB3raTGxzkBg/gnZVapFV62Wy2n5AO70HM/5wbJ0QnXyQSaVPDIuNZzY0V3ntHMwxiwHA0Gj2Np7ecIBDgaDAYXKCQJM1DhrgJ3nhulcPbl8j4NmHe46X/g60fwbz3aewjkqFQaAqebWU1AOqyQwt8Id6qEHMc97zu7u7FGGsn7HAiVuosVw7P35C1nccdgSCxop1dHeZswmfHMnxBo6ZTk+jN8dl/vF7vWofDsa+MLN9oEUBMxOb3+1eoEsBVw6Zmua49r8YmhAKDiEPcMwBsxMiqQ+ixzPFxZyqRpXARG/YOr1ObFJ0gUskXBbamcR1OKmMUvDxHRAu8/LmY3jFLMUpFqz9HxG65smYJdyKyECOxDiEAe/p1gjF2oonivZAsxVgl2daa4EQWCW6J55qFAFFZiJWYLxNQy2qOSUzGRsyXCUDIeliwAHEO4WSlWQBRFoZakXcKmCXmyXAKs0Ve9vl8q42WoIYpJU4hV3hKcNs8m9gl7p/xQ73eF5kB4j5mNrWmTJRNwAzqiV1CxjVTZCIkEq+Z1bZFZSN2CenmVAFVy4Plz8xKAGWjjAKFk6lCBMDR/MJjLLMSQNm43xAiQKTaA+9/wewhDjL+JVI1kkTSSOTcKbMTwPqESAot6dn6Fr1gHwVJju6IRuyiByPuUUBAg5DGkAgBmxlvdgIEK9gDkohdY/BJo4CAG0R8miRSsGABkgVQs4KXu098IgUXSSRsFAoKZiVAVDY2WUiiPTjYRi41KwGisrGsLtlsth8Fiwnz2fBkQvWfRtlE3iF2yW63/yCacXZ1dW02GwGyTFaRd4idJnCKHRaCxYRHoG5LTKT6SyiToP1fJHbmAYPYRR0UnZQtMnA6s0zg+GZBlt0Gdo7EPHgpE3Q6nZ8YyLhc8Xj8MJh/aKTAY+5FPAKHLE7RdwuYJZmNwzyCMkBCYyKROJBMJl9B/PXXCjjmCmDOVzH3fiPpObEWGqoKe4EBl8v1hlqsdLvd23mkxHM9pc9kMpmno9HoeTii7ewbHEZPPx1ztLS1tV3AnGuMjiNjvbQFuHw6zDo5By7dTPAQNBgMLrRarTkSls1mnwT7uwp9virx9QzbW/HuV/j5d/b+6jniKlllP8lkeONJDk+dq9GsQTnC4fB1heO0K47Hwe7WdDr9nAKgXwOBwHI+C45Htj1d6sd429TUNEcmUdc+PRaLHcvn87dXW4ugzdsaGxufL94NFv9zi1J7GVbhlvb2dnaJ3SVrxfc+n2+NTsZ7/H7/Mr3g5XdSIHyJSH1PZ+7fToyl2+ErqilgZ4NaLYB9goVGaHjR93Hv1ZrU4XDsFT20kH3PObzbWk0CgG1jacVIUnAQb9F+VexyLMzkpcLv0IJV7AHQIOCAUYHx7v5qgScmYHtTqSAyZLEJTK22Bie4iq3xsqpm4SAf9Hq9a2DnJ4uLK3SEULcdRvp3i3zHySqpficxEdsQc1NrlYXXvR+O7qASSezXB+h1SuUomgg9LL8BUoV4749EIolKh+EiqWmqVEZlDgHks2pxHw7xTqUQw9J5NcAXOK10AGIoZ6Zli6JY6Z1Q461KoZ4NiKLHarW+KDsxlDUPHZ5zPQZqUVDPJsTqb5n9malbpAh8C2XXDLl62+WZIDFRUlNVOiwencnNU3aQEkL+cDMSoLvZo2fQB7AJssNAuFuvorlDVVkkg2I87+jo2K2QAVphDrfyViK5VqtO34OkaxXCp+7drdDBCAdubm6eidX+2WwqT5komwh4YQLk+H4aE93h8Xg2gvHekQZOGSgLZTLyDTLJ4Lx9/KZWKBSainT4Iy3FqQBfnUZR42PKQFksBr9QKVXCPusD3OiA/RkQ5kP8qV/Jl1WywAp/6+dcmPM2zL1UrUahe4JqfnWWKXIul3uUbfP8njAFLW1OFr3gdFtZ72cNH+PtQT7/brW+NXqJAHh0y9V8/U/A1U7AfwIMAD7mS3pCbuWJAAAAAElFTkSuQmCC)](/) --- # KOReader User Guide ⟸ Table of Contents ![](pictures/guide_main_logo_cut.webp) KOREADER USER GUIDE This guide is designed for larger screens with color and contains links to relevant websites so we highly recommend reading this on a computer or a tablet (instead of your e-ink device). You can use the search function of your browser to find a specific topic. If you have a suggestion or question related to this user guide, you can write to this discussion thread: [https://github.com/koreader/koreader/issues/11147](https://github.com/koreader/koreader/issues/11147) Parts of the text in this guide are color coded according to their categories: BLUE ⇒ USER INTERFACE ELEMENTS OF KOREADER GREEN ⇒ MENU PATHS PURPLE ⇒ EXTERNAL APPS AND SERVICES TEAL ⇒ LINKS We also have different boxes throughout the guide to inform or warn you: WARNING I am a warning box. I explain things when you need to be extra careful. INFO I am an info box. I give contextual information or extra explanations. TIP I am a tip box. I contain tips that makes your life easier when using KOReader. !!! ADVANCED I am an **ADVANCED** tag. If you see me on a topic, it means that you need to have a certain degree of technical knowledge like working with a file system, CSS knowledge, installation of external files etc. depending on the procedure. * * * KOReader is developed and supported by volunteers all around the world. You can be a part of this project too by: * Fixing bugs and implementing new features * Translating the program into your language or improving an existing translation * Helping others with your knowledge in the forums Check [How to reach us about problems or suggestions](#reachus) section for the links. **Guide last update: 2024-03-17** TABLE OF CONTENTS * [WHAT CAN YOU DO WITH KOREADER ?](#whatcanyoudo) * [USER INTERFACE](#userinterface) * [Reading Screen](#readingscreen) * [File Browser](#filebrowser) * [User Interface Tips](#uitips) * [Bottom Menu Items Explained](#bottomexplained) * [BASIC READING INFO](#basicreading) * [Keyboard Usage And Tips](#keyboard) * [Auto Warmth And Night Mode](#autowarmth) * [Fonts](#fonts) * [MOVING THROUGH YOUR BOOK](#moving) * [Skim Widget](#skimwidget) * [Book Map](#bookmap) * [Page Browser](#pagebrowser) * [Table of Contents Tools](#toctools) * [BOOKMARKS, HIGHLIGHTING AND NOTES](#bookmarks) * [Exporting your highlights](#exportinghighlights) * [READING PDFS](#pdfs) * [Reading large PDFs on a small screen](#readingpdfs) * [Explanations Of Pdf Specific Bottom Menu Items](#pdfbottom) * [OCR (Optical Character Recognition)](#ocr) * [Panel Zoom (manga/comic)](#panelzoom) * [PREPARING AND TRANSFERRING YOUR DOCUMENTS](#preparing) * [Transferring books to your reader](#transferring) * [Optimizing EPUB/PDF documents for your mobile reader device](#optimizing) * [ZIP file support](#zipfiles) * [Optimizing manga for your mobile reader device](#manga) * [GESTURES AND KEYBOARD SHORTCUTS](#gestures) * [Predefined Gestures](#predefinedgestures) * [Gesture Categories](#gesturecategories) * [Keyboard Shortcuts](#keyboardshortcuts) * [QUICK MENU AND PROFILES](#qmandprofiles) * [Quick Menu](#quickmenu) * [Quick Menu tips](#quickmenutips) * [Profiles](#profiles) * [PLUGINS AND USER PATCHES](#plugins) * [Plugin types](#plugintypes) * [List of internal plugins](#pluginslist) * [User patches](#userpatches) * [TIPS](#tips) * [TROUBLESHOOTING](#troubleshooting) * [HOW TO REACH US ABOUT PROBLEMS OR SUGGESTIONS](#reachus) WHAT CAN YOU DO WITH KOREADER ? **Despite its minimalistic looks, KOReader is a very powerful and customizable application. Check the list below to see what can you do with KOReader. All these features are explained in this guide.** Transferring your files * **USB mass storage** mode for supporting devices * **Cloud storage** (Dropbox/FTP/Webdav) with suitable accounts * KOReader can act as an **SSH server**, so you can use an SFTP application or your file manager to directly transfer files * With the Calibre plugin you can send books from your Calibre Library directly to your KOReader devices over wifi * With the **News downloader plugin** you can download RSS and Atom news entries to your device as HTML files * With the Wallabag plugin you can retrieve articles from your Wallabag account (a server based read-it-later service like Pocket) Text adjustments * Change to landscape orientation manually or (if your device supports) automatically * Change fonts (including your own), font size, contrast, boldness, kerning, word spacing, word expansion * Change text alignment, line spacing, column layout and margins * **Apply** or **ignore** publisher styles and fonts While reading * Highlight text with different styles, place bookmarks * Add notes using a customizable keyboard including diacritic modifiers * Invert screen colors * Take screenshots * Turn pages automatically * Track your reading statistics including **reading progress**, **time range** and **calendar views** Navigating through your collection * Powerful **File Browser** where you can copy, move, rename, create, delete files and folders * Many options to see your books with detailed and mosaic views * Add your books to **Favorites** for quick access * **History** that shows last accessed books Navigating through your book * **Skim widget** to quickly jump between pages, chapters, bookmarks * Unique **Book map** to see a bird’s eye view of your book including all your notes and highlights * **Page browser** to move through pages like a film reel * **Bookmarks browser** to navigate between your highlights easily * Create a table of contents automatically or manually * Hide and exclude certain parts of your book like **Appendix, Index, References** etc. Search, Lookup and Translation * Search the document by selecting or entering text (including **regular expressions**) * Search in your bookmarks, highlights and notes * Lookup text in Wikipedia or in installed dictionaries and translate it by a long-tap * Translate whole page at once between more than 130 languages Device settings * KOReader can self update * Powerful **gesture system** which you can customize and expand * Create a menu with your favorite actions with **Quick Menu** * Dim or turn off your **screen light** after a set interval * Adjust frontlight/backlight level and **warmth** manually or automatically * Set your own **screensaver** from many options like random images, book cover, reading, progress etc. * Set battery **charge limit alarms** to prevent deep discharge/over charge * Set a memory usage alert (useful for devices for smaller memory) and optionally restart KOReader upon reaching this limit PDF documents * Crop margins automatically or manually * **Reflow** documents to extract text and read easier on a small screen * Apply **OCR** * Different zoom types and page flow directions to read **multi-column documents** easily * Auto straighten tilted documents * Special **Panel zoom** feature for reading mangas Advanced features * Create a **QR code** from your clipboard * Add your own **CSS style tweaks** for books * View HTML source of a selection in an EPUB document * Powerful **Profiles** feature to automate actions * Create and edit text files on your device * Open a terminal emulator and run commands on your device * See your CPU, memory and battery usage stats Exporting your notes and highlights * Export your notes and highlights to your device as text, markdown, HTML, JSON or Kindle clippings format * Synchronize to online services like Joplin, Readwise, Memos, Flomo and XMNote USER INTERFACE KOReader has a simple, mainly black and white user interface because gradients and different shades of gray can cause flashing and ghosting on e-ink screens which can degrade reading experience. KOReader has 2 main interfaces: READING SCREEN and FILE BROWSER. Reading Screen **READING SCREEN** has two toolbars. TOP MENU includes menu items related to the general usage of KOReader. You will access your books, KOReader preferences, plugins etc. here. BOTTOM MENU is focused on options for document formatting like font weight/size, line spacing etc. While adjusting your text appearance, you will mostly interact with the BOTTOM MENU. ![](pictures/menus.png) ![](pictures/tap_zones.png) On the right you can see the default tap zones of KOReader. To show the TOP MENU or BOTTOM MENU you can tap the indicated zones. You can also swipe down the upper zone to show the TOP MENU. On non-touch devices like Kindle 4 you can open the BOTTOM MENU by pressing the button that corresponds to the **ENTER/OK** action. You can set TOP MENU zone to open both the TOP and BOTTOM MENU at the same time via this menu: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and Gestures → Activate Menu CORNER TAP ZONES can be used for many different type of gestures including **TAP, DOUBLE TAP, TWO FINGER TAP** and **TAP and HOLD**. **PREVIOUS PAGE** and **NEXT PAGE** zones can also be used for **DOUBLE TAP** gestures at the same time. STATUS BAR zone can be tapped to cycle between STATUS BAR items if only one item is visible. If all items are visible, tapping will show and hide the STATUS BAR. Check **“How can I configure the status bar ?”** heading for more info. File Browser You will see FILE BROWSER when you run KOReader for the first time. You can access it from the reading screen by: ⇑ TOP MENU → ![](pictures/top_cabinet.svg) ![](pictures/file_browser_ui.png) By default, FILE BROWSER shows your HOME which is your main library folder which you can change by **tapping and holding on any folder**. You can change its many options like how books are displayed or sorted via the TOP MENU by swiping down from the top part of the screen. Circled items in the image are explained below: RESET: This option allows you to reset some properties of your document like **reading progress, bookmarks, custom cover image** etc. which you can choose in a following dialog. WARNING Be very careful when using this dialog and double check which items are marked, otherwise you can reset everything accidentally. OPEN WITH: KOReader has different engines for rendering different file types. In some cases you can open a file in a different engine to get some other features. See **Viewing archive files** and **Viewing image files** sections just below. IGNORE COVER: If for some reason you want to disable the cover for this book (it may have wrong cover or cover is not very readable on the e-ink screen) you can select this. IGNORE METADATA: If your book metadata is not correct, name field may show useless information. Select this option to show the file name instead of metadata. REFRESH CACHED BOOK INFORMATION: KOReader caches a book's metadata and book cover when you add it to your library. If you make some changes to the book after copying to your device, this information might need to be updated. If you see wrong cover or metadata, you can refresh the book information with this menu item. Viewing archive files You can open **ZIP**, **CBZ** and **EPUB** (as they are **ZIP** archives too) files with the archive viewer to have a look at the contained files: 1. In File Browser long-press the file name 2. Tap Open with… 3. Tap Archive viewer Viewing image files You can open image files with the image viewer instead of opening as a book. Files opened like this don’t show up in your history and have better scaling and rotation support. 1. In File Browser long-press the file name 2. Tap Open with… 3. Tap Image viewer Setting file associations You can also set file associations for file types which KOReader doesn’t automatically recognize. To associate a file with one of the KOReader providers, first long tap on your file in the File Browser then choose a provider engine to handle this file. You can check: * Always use this engine for this file to associate this provider with this particular file only * Or check Always use this engine for file type to associate this provider with all the files that has same extension as this one From the same dialog, you can see the associations you made by tapping on View defaults for file types. ![](pictures/open_with_association.png) Accessing your books Following methods are available for accessing your books and articles: * File Browser - As explained above * Favorites - A list which you can add your books by long pressing on them in the File Browser * History - List of books you opened You can change how these screens look from: ⇑ TOP MENU (in File Browser) → ![](pictures/top_cabinet.svg) → Display mode If you want to change how many items are visible on these screens, look here: ⇑ TOP MENU (in File Browser) → ![](pictures/top_cabinet.svg) → Settings → Mosaic and detailed list settings You can assign gestures for each of these dialogs. For example while reading a book, you can access your History or Favorites with a gesture and open another book without going through the File Browser. You can search a book in the History screen by **filename** or **book metadata** from the upper left hamburger menu button. You can also set KOReader to start with Favorites or History screen instead of File Browser via: ⇑ TOP MENU (in File Browser) → ![](pictures/top_cabinet.svg) → Start with Folder shortcuts KOReader allows you to add your favorite folders to a quickly accessible Folder shortcuts menu. For example if you have an **Archive** folder in your library that is under **Home>Articles>Scientific>Archived**, you can assign a folder shortcut to this **Archived** folder and access it quickly even while reading a book. **Adding a folder shortcut** There are two ways of adding a folder to your Folder shortcuts list: 1. When you are in the File Browser, tap right corner \+ (plus) menu button then tap Add to folder shortcuts item and enter a descriptive name for this shortcut. **This will add the folder you are currently in.** 2. When you are in the File Browser, long-press on a folder name to open the context menu. Tap Add to folder shortcuts item and enter a descriptive name for this shortcut. **This will add the folder you pressed on.** Folders which are in your Folder shortcuts list will have a **star (★)** in the File Browser. You can remove a folder from the shortcuts in the same way, by long-pressing on it and selecting Remove from folder shortcuts. **Viewing your folder shortcuts** You can open your Folder shortcuts from the File Browser or Reading screen while reading a book. * **From the File browser:** Top right corner \+ (plus) menu then choosing Folder shortcuts or assigning a gesture. * **From the reading screen:** By assigning a gesture to it. It is under the File browser section of the Gesture manager. You can learn how to set gestures in the relevant section of this guide. User Interface Tips INFO KOReader’s user interface and options can change depending on the file type you open. There are two categories: **Fixed layout documents** (PDF, DJVU, image files...) and **Reflowable documents** (EPUB, HTML, DOCX, RTF, TXT…). * You can change the interface language via: ⇑ TOP MENU → ![](pictures/gear.svg) → Language * If you tap and hold an **option** or **menu item** (font weight, line spacing etc.), you can set its value as DEFAULT. The new value will only be applied to books opened from now on. Previously opened books will keep their settings. You can identify default values as a star (★) in the menu or as a black border around the indicators as seen below: ![](pictures/default_border.png) ![](pictures/default_star.png) * On the **BOTTOM MENU** if you tap and hold an option’s name, you can see its explanation. * You can **CLOSE** full screen dialogs (History, Table of Contents, Bookmarks, Reading Statistics etc.) by **swiping down.** * You can take a screenshot by making a **long diagonal swipe** with your finger. Also **touching opposing diagonal corners** will take a screenshot. You can use this second shortcut for example when viewing an image. * ![](pictures/non_full_screen_dialog.png) In dialogs containing adjustment arrow buttons like the one above, you can **tap and hold** on arrow buttons to change the value in bigger increments. You can **CLOSE** this type of dialog (non-full screen) by tapping outside of its window. You can **MOVE** this type of dialog by holding its window title and dragging. You can make this type of dialog **SEMI-TRANSPARENT** by tapping and holding the **window title** (when you want to see the text under it while adjusting a value). * KOReader supports **dictionary lookup** in EPUB and scanned PDF/DJVU documents. To see the dictionary definition or translation, just tap and hold a word. * Pressing and holding a word brings up a dialog where you can also search the selection in the document for more occurrences or look it up on Wikipedia. * If you want to change the size of user interface, there is a DPI setting for that: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → Screen DPI You can choose a value from the menu or select CUSTOM DPI to enter a value for fine tuning: **Higher DPI = Bigger Interface** Note that there is also a Zoom (dpi) setting in the bottom bar. That one is related to the documents only. You can find the explanation in the next section. * You can disable black flashing (automatic partial refresh to clear ghosting) of user interface if it disturbs you: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → E-ink Settings * If you want to check the current date you can tap on the clock in the TOP MENU. Menu search KOReader has lots of features so its menu system reflects this complexity. We have a Menu Search feature for finding menu items quickly. You can access it from: ⇑ TOP MENU → ![](pictures/top_hamburger.svg) → Help → Menu search Also you can assign this feature to a gesture or add it to your Quick Menu for faster access. Scrolling types KOReader has three types of touch scrolling. You can access this from: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and Gestures → Scrolling INFO You have to enable Continuous mode from the Bottom menu to be able to use scrolling. **Classic scrolling:** This mode works exactly like your phone/tablet scrolling. **Turbo scrolling:** This mode allows you to scroll faster than classic scrolling. Also you can scroll several pages without lifting your finger. Scrolling amount is proportional to the distance you move your finger after you initiated scrolling. **On-release scrolling:** This scrolling type is more suitable for e-ink screens. Because unlike other scrolling types, this mode doesn’t refresh your page continuously while scrolling. It works like classic scrolling but intermediate steps are not shown. So you scroll with your finger and when you release, page jumps to that position. This is especially useful **to reposition and adjust the view** if your book contains pictures or tables and you want to see all of it. Go back to previous location This useful feature works like the **Back** button in your browser. When you jump to some other part of the book using Skim widget, Bookmarks list, Book map etc. KOReader remembers your previous location. This is useful for example if you follow an internal link or reference. With one tap you can go back to where you come from. You can access this feature from: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Go back to previous location Also you can go forward too, from the same menu. This feature is assigned to ← → multiswipe gesture. You can assign this to another gesture if you want (like tapping a corner) or add it to your Quick Menu. Prevent flashing on pages with images KOReader normally perform a full refresh on pages containing images (which you can observe as a black flash). The reason is to get rid of the residue and ghosting from the previous page. But this might not be necessary depending on your device and personal preferences. You can disable this auto-refresh behavior here: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → E-ink Settings → Full refresh rate → Always flash on pages with images Partial rendering support With the version 2023.03, KOReader gained partial rendering capability while reading EPUB documents. Before this version, when you made an adjustment like changing font size, the whole book had to be rendered again to be able to preview the new setting. Depending on the device and book size, this can take a while to calculate. With this new feature, when reading EPUB documents, text appearance adjustments can be done much quicker by only rendering the current chapter. INFO This is only possible if your EPUB is composed of multiple fragments. EPUB files are basically .zip archives that contain .html files. Some books can be a single .html file while others may be composed of multiple .html files like each chapter of the book is a separate .html file. **If your book is only a single .html file, partial rendering can not work, because for each change KOReader still has to calculate the whole book.** Also rotating your screen orientation is now much faster thanks to this feature. This feature is **ENABLED** by default. If necessary, it can be disabled per book (with a tap), or globally (with a long-tap) on: ⇑ TOP MENU → ![](pictures/gear.svg) → Document → Enable partial renderings After these partial renderings, KOReader and the book enter a degraded state: You can turn pages but some info and features may be broken or disabled (i.e. footer info, ToC, statistics…). To get back to a normal working state, KOReader has to render the rest of the book too. While this is happening, an icon at the top left corner of the screen indicates the status: 1. ![](pictures/partial_rendering_1.svg) Document is **partially** rendered. Page count, footer info and many things are **innacurate**. You can see how the new settings look and adjust further. You can also turn pages, jump links in this state. 2. ![](pictures/partial_rendering_2.svg) A full rendering is happening in the **background**. You can still turn pages, jump links, change settings. 3. ![](pictures/partial_rendering_3.svg) Full rendering is done, but **not yet applied** because KOReader is waiting for you to be **idle** to reload the rest of the book (idle=not interacting with the device). You can still turn pages, jump links, change settings. 4. ![](pictures/partial_rendering_4.svg)You've been idle for a while so KOReader is now reloading the whole document. At this step KOReader is **blocked** to prevent interaction. When these icons are all gone, you are again in a fully working state. Generally this whole process is quick and as a user you don’t need to do anything extra. You can just adjust your settings and continue reading your book, KOReader will do the rest. Bottom Menu Items Explained TIP You can see an explanation of these items when you long tap on their names in the bottom menu. ![](pictures/bottom_menu_3.png) VIEW MODE: If you change to CONTINUOUS mode you can scroll the document like a web page. This mode is more suitable for non e-ink screen types (LCD, OLED). In continuous mode **you lose TOP and BOTTOM MARGINS** so text may be cut on first and last line of screen. To solve this problem you can enable PAGE OVERLAP: ⇑ TOP MENU → ![](pictures/top_document.svg) → Page Overlap RENDER MODE: This option determines how your document is rendered by KOReader. Default is WEB and generally you don’t need to change this setting. When a book (or saved web page) is very complicated (specified widths or margins, negative margins, floats etc.) and layout looks bad or overflow the screen, you can try other rendering modes. ZOOM (dpi): This setting can be thought of as a **general zoom factor** for the document (except font size). At 96 dpi (which is the default setting), images in the document are rendered at their original dimensions. Basically you will use this setting if you want to **make images bigger without making the text bigger**. * * * ![](pictures/bottom_menu_4.png) WORD SPACING and WORD EXPANSION: These two settings are related and they determine how your text will look when it is justified. When you justify text, space is added between words so that both edges of each line are aligned with both margins. Since word counts of lines are not equal all the time, in justified alignment, text has to be compressed or expanded to fill the line. WORD SPACING: How much the **SPACE** characters in a line of text can be compressed to fit more words. This setting doesn’t affect words, it only changes the space between them. WORD EXPANSION: If you have too much white space in a line, how much of that can be distributed into the words by expanding them. This setting affects the appearance of words. If you don’t want your words to expand, set this to NONE. You can experiment with different settings until the text looks pleasing to you, then set them as defaults via their respective dialogs. * * * ![](pictures/bottom_menu_5.png) CONTRAST and FONT WEIGHT are two options that you can use to make your text bolder (or lighter). You can achieve the same appearance with either of these options but they use different methods to achieve it. Of course you can use them both at the same time. The differences between them can be summarized as: CONTRAST **+** Doesn’t change font width, book length stays the same **+** Doesn’t need to re-render document, faster **\-** Might look bad on LCD or low DPI screens FONT WEIGHT **+** Will use proper weighted fonts if you have them installed **+** Looks better on LCD or low DPI screens **\-** Has to re-render fonts, slower FONT HINTING adjusts your text for maximum readability according to your screen’s pixel grid. NATIVE uses font’s internal hinting instructions, AUTO uses FreeType’s hinting algorithm. AUTO is a safer choice because font files that you installed may have problematic hinting instructions. Also AUTO handles **CJK** text better. You can try different settings to see which one looks better on your device. FONT KERNING adjusts the spacing between letters to achieve a visually pleasing result. Default is BEST, which might be **slower** when opening files (depending on your device) but **has better support for ligatures** (see picture below for an example), joined **Arabic** glyphs and some other scripts. If your device is slow, you can try GOOD which is faster and may still look correct with western latin-script text. ![](pictures/kerning_ligatures.png) * * * ![](pictures/bottom_menu_6.png) ALT STATUS BAR enables an alternative status bar which is available only in reflowable documents (EPUB, HTML, DOCX, RTF, TXT…). After enabling it here, you can configure ALT STATUS BAR via: ⇑ TOP MENU → ![](pictures/gear.svg) → Status Bar → Alt status bar EMBEDDED STYLE and EMBEDDED FONTS determine if publisher’s styles and fonts embedded in the document will be used (or ignored) to render the document. These are general on/off switches. You can achieve more fine tuned tweaks for your document via: ⇑ TOP MENU → ![](pictures/top_document.svg) → Style Tweaks IMAGE SCALING determines how images in your document are rendered. BEST looks more pleasing but it is slower. Saving your text appearance settings for later use This powerful feature allows you to save all the BOTTOM MENU settings + font type as a **profile**. This means you can have different group of settings for different conditions or book types which you can apply at once instead of changing the settings manually every time. For example you can create a: * **Double column** profile with two columns of small sized text, landscape orientation and minimum margins * **Night reading** profile with bigger sans serif font and higher contrast for more visible text under low light * **Disabled styles** profile with embedded style and embedded fonts disabled for badly structured books After adjusting your settings to your liking, you can create a profile from them via: ⇑ TOP MENU → ![](pictures/top_tools.svg) → Profiles → New with current document settings After creating a profile with your settings, you have many options for applying it to another book: * You can apply the profile from the Profiles menu * You can assign a gesture to it * You can show it in your Quick Menu Please see the [GESTURES, QUICK MENU AND PROFILES](#gestures) chapter for more information. BASIC READING INFO How can I personalize my text ? * **You can change the font\***: ⇑ TOP MENU → ![](pictures/top_document.svg) → Font * **Make the font bigger** ⇓ BOTTOM MENU → ![](pictures/bottom_font.svg) * **Make the font bolder** ⇓ BOTTOM MENU → ![](pictures/bottom_contrast.svg) * **Invert the colors on screen (white on black)** ⇑ TOP MENU → ![](pictures/gear.svg) → Night Mode * **Change many other formatting options** ⇑ TOP MENU → ![](pictures/top_document.svg) → Style Tweaks INFO \*Font selection and style tweaks are available only on reflowable documents (EPUB, HTML, DOCX, RTF, TXT…). Fixed-layout documents like PDF/DJVU are not supported. You can also change other formatting options from the BOTTOM MENU to fine tune the appearance of your text. You can see your reading statistics via: ⇑ TOP MENU → ![](pictures/top_tools.svg) → Reading Statistics How can I control the backlight / frontlight of my screen ? You can control your screen light via this menu. If you have warm lighting (normal white LEDs+orange ones) you can control them separately from this dialog. You can also define a gesture for this dialog: ⇑ TOP MENU → ![](pictures/gear.svg) → Frontlight How can I configure the status bar ? You can configure bottom status bar from this menu. Feel free to explore the SETTINGS sub-menu to customize your status bar as you like. ⇑ TOP MENU → ![](pictures/gear.svg) → Status Bar There are many items you can show on the status bar. But by default, only one is shown at a time and you have to tap on the status bar to cycle between them. If you want to show all items at once, enable this menu item: ⇑ TOP MENU → ![](pictures/gear.svg) → Status Bar → Settings → Show all at once You can sort the items via: ⇑ TOP MENU → ![](pictures/gear.svg) → Status Bar → Settings → Sort items You can toggle the visibility of the status bar with a gesture or via Quick Menu: Gesture selection menu → Reader → Toggle status bar There is also an ALT STATUS BAR which is available in reflowable documents (epub, html, docx, rtf, txt…). If you prefer to use this, you can enable via: ⇓ BOTTOM MENU → ![](pictures/gear.svg) → Alt Status Bar **Using "Custom Text" item for status bar alignment** There is a special status bar item named Custom text. This item can show your chosen text in the status bar. You can use this feature to create a separator between the status bar items. * First enable this option with a short press on it from this menu ⇑ TOP MENU → ![](pictures/gear.svg) → Status Bar → Custom text: ‘KOReader’ * Then long-press on it again to open its settings. Enter a **"space"** character in the first box and enter the number of repetitions in the second box, which will determine how wide your separator will be. You can choose another character as a separator. You can also move this item like other status bar items to change its order. How can I change the screen displayed while sleeping ? You can choose a book cover or a custom image as screensaver via this menu: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → Screensaver You can use JPG/PNG files as screensaver (properly dithered grayscale images look best). Transfer the files from your computer into any folder on your device. And choose this folder as your screensaver folder via this menu: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → Screensaver → Settings Please refer to this forum post for advanced information about screensaver images: [https://www.mobileread.com/forums/showpost.php?p=3728291&postcount=17](https://www.mobileread.com/forums/showpost.php?p=3728291&postcount=17) Keyboard Usage And Tips * Tap outside the input field to close the keyboard, tap the input field to show the keyboard again * **Swipe up** keys to enter uppercase version of that letter (or lowercase if you are already in **shift** mode) * You can change the appearance of the keyboard: ⇑ TOP MENU → ![](pictures/gear.svg) → Device → Keyboard → Keyboard settings * You can select more than one layout: ⇑ TOP MENU → ![](pictures/gear.svg) → Device → Keyboard → Keyboard layout * You can change between your selected layouts by tapping the ![](pictures/keyboard_world.png) icon on the keyboard Entering extra characters Koreader keyboard allows entering extra characters when you tap and hold a key. Most frequently used extra characters are shown below. You can tap and hold the key in the **gray box** to get the surrounding characters: ![](pictures/keyboard.png) In addition to the long-press popup, you can also enter these extra characters by swiping on a key. In the example below, you can swipe up on the **a** key to enter an **uppercase A** or swipe other directions to enter the characters shown. Note that the example shown includes the full popup for demonstration. You don’t need to open this popup, you can directly swipe on the keys. Once you get used to the locations of the extra characters, you can enter them much quicker this way. ![](pictures/keyboard_swipe.png) If this feature interferes with your usage, you can disable it by unchecking: ⇑ TOP MENU → ![](pictures/gear.svg)→ Device → Keyboard → Swipe to input additional characters Additionally there are some shortcuts for easier text manipulation. You can tap and hold these keys for the actions: * **Backspace** - Deletes all characters from the cursor to the beginning of the line * **Left Arrow** - Moves the cursor to the beginning of the line * **Right Arrow** - Moves the cursor to the end of the line For more information you can check the related wiki page: [https://github.com/koreader/koreader/wiki/Virtual-keyboard](https://github.com/koreader/koreader/wiki/Virtual-keyboard) KOReader also integrates the Chinese stroke keyboard for inputting simplified and traditional Chinese characters. You can find more info about it in our wiki: [https://github.com/koreader/koreader/wiki/Chinese-keyboard](https://github.com/koreader/koreader/wiki/Chinese-keyboard) Auto Warmth And Night Mode This plugin allows you to adjust frontlight warmth in devices with **natural (yellow/orange) light** and set Night Mode (inverted screen colors – **white text on black background**) automatically according to a schedule. It can control them both or you can choose only warmth control or only Night Mode control mode, so you can adjust the other one manually. This plugin comes enabled as default. If it is not in the menu, you can enable it via: ⇑ TOP MENU → ![](pictures/top_tools.svg) → More tools → Auto Warmth and Night Mode INFO If you have a PocketBook device and frontlight or warmth slider is not working in KOReader, please be sure that in the PocketBook reader (which comes with your device) **SmartLight-Auto** option is set to **Disabled**. You can adjust the warmth of your screen frontlight automatically in two different ways: FIXED SCHEDULE: In this mode your frontlight warmth changes according to the daily schedule you entered. This mode is **STATIC**, it doesn’t account for daylight length. The schedule stays the same all around the year. SUN’S POSITION: This option calculates Sun’s position in your location according to **COORDINATES** and **ALTITUDE** information you entered. Frontlight warmth is adjusted gradually according to this calculated Sun position data. This mode is **DYNAMIC**. As the length of daylight changes around the year, plugin adjusts the schedule accordingly. First have a look at this image to familiarize yourself with the terms used in the plugin: ![](pictures/auto_warmth_explanation.png) Fixed Schedule Mode 1. Go to the plugin menu: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → Auto Warmth and Night Mode 2. Tap Activate menu item and then ACCORDING TO THE FIXED SCHEDULE 3. Go back to previous menu and tap FIXED SCHEDULE SETTINGS menu item 4. Set your warmth transition schedule by setting times for various items here. Refer to the image above for an explanation of items. Sun’s Position Mode 1. Go to the plugin menu: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → Auto Warmth and Night Mode 2. Tap ACTIVATE menu item and then ACCORDING TO THE SUN’S POSITION 3. Go back to previous menu and tap LOCATION SETTINGS menu item. Set your **coordinates** (necessary) and **altitude** (optional) correctly and give a **name** to your location. 4. Go back to previous menu and tap WARMTH AND NIGHT MODE SETTINGS menu item 5. Set your warmth transition schedule by setting times for various items here. Refer to the image above for an explanation of items. You can see your current schedule via CURRENTLY ACTIVE PARAMETERS menu option. ![](pictures/auto_warmth_menu.png) Night Mode While setting the warm light percentages for different intervals, you can also set that interval to Night Mode, which inverts the screen colors when that interval starts. If your minimum frontlight is still too bright or if you prefer a dark page background, you can activate this feature. To enable this, in the dialog below, tap the Night mode checkbox and tap Set. When you do this, a **moon icon** will appear in the menu next to this interval. To disable night mode, just disable the Night mode checkbox in that interval. ![](pictures/night_mode_checkbox.png) Frontlight auto on/off This feature turns your frontlight on at sunset and turns it off at sunrise according to your Currently active parameters in this plugin. You can override this change by manually turning your frontlight on/off. On the next sunrise/sunset, AutoWarmth will toggle it again if it is necessary. You can activate it by selecting Frontlight off during the day menu item in this plugin. Faster warmth change tip If you want your frontlight warmth to change quickly instead of a more gradual change: 1. Set the mode to **Fixed schedule** following the instructions above 2. And adjust the settings similar to the image below: ![](pictures/night_mode_fast_change.png) As you can see in these settings above, there is only a one minute difference between day-night transition. So the screen warmth goes from **0 to 100 (or reverse) in only one minute**. You can increase this time separation to make the transition duration longer. Fonts How can I add my own fonts ? KOReader supports fonts in most widely used TrueType (.ttf) and OpenType formats (.otf). Font files with these extensions can be directly copied to /koreader/fonts/ folder on your device. Check the wiki for more info: [https://github.com/koreader/koreader/wiki/Fonts](https://github.com/koreader/koreader/wiki/Fonts) When starting up, KOReader compiles the available fonts from the **font metadata/info** and classifies them according to family and weights. This means you can add different weights and variants of a font and KOReader will try to use the most suitable one. Since it takes font family information from metadata, font names are not important when copying to your device. Installed fonts will be available after restarting KOReader. Here are some example fonts that look good on an e-ink screen. You can find more of them on the Google Fonts website: **Serif:** * Spectral - [https://fonts.google.com/specimen/Spectral](https://fonts.google.com/specimen/Spectral) * Vollkorn - [https://fonts.google.com/specimen/Vollkorn](https://fonts.google.com/specimen/Vollkorn) **Sans Serif:** * Wix Madefor Text - [https://fonts.google.com/specimen/Wix+Madefor+Text](https://fonts.google.com/specimen/Wix+Madefor+Text) * Varela Round - [https://fonts.google.com/specimen/Varela+Round](https://fonts.google.com/specimen/Varela+Round) **Monospace:** If you are planning to use your own monospace font, probably you already have a favorite one, so we are not offering any examples here. But you can find and compare many monospace fonts at this page: [https://www.programmingfonts.org/](https://www.programmingfonts.org/) Previewing the fonts on your device KOReader can generate a document with sample text rendered with all the fonts installed on your device. This allows you to quickly compare the look and features of the fonts like ligatures and character sets in non-Latin scripts like Greek, Hebrew or Chinese. You can access this feature via: ⇑ TOP MENU → ![](pictures/top_document.svg) → Font → Font settings → Generate font test document Monospace font scale If your book includes parts with **Monospace** fonts (like in programming books), Monospace font might look disproportional even if they are technically at the same size. This is caused by differing font metrics. If you want to fix this difference, KOReader has an option that allows you to adjust the relative Monospace font size. ⇑ TOP MENU → ![](pictures/top_document.svg) → Font → Font settings → Monospace fonts scaling Here you can increase or decrease the size of your Monospace font by adjusting its scaling as a percentage of the default size. Using different fonts in one document In HTML/CSS based documents like EPUBs, books can specify to use fonts by family instead of a specific font name. These families can be **Serif, Sans-Serif, Monospace, Cursive, Fantasy, Emoji, Fang Song and Math**. For example in a book, normal text can be shown in **Sans-serif** while dialogues are shown in **Serif** font. KOReader normally uses your default font for all these families except **Monospace** and **Math** (which is determined by the style of the text nodes, for example **'font-family: serif'**). If you want these families to look distinct, you can assign specific fonts for them here: ⇑ TOP MENU → ![](pictures/top_document.svg) → Font → Font-family fonts To change a family font for the current book just tap on the desired font name. If you want to set this for all your books, long-tap to set it as a Default (★). If a book abuses this font family feature to the point where your default font is hardly used, you can disable that family font for this book by unchecking the association. ![](pictures/font_family.png) Changing font quickly If you are switching between fonts frequently (i.e. **monospace** for programming books and **serif** for novels) there is a workaround which makes this easier than going into the menu each time. You can create profiles for your fonts and all font related settings like line spacing, contrast, bold etc. and add these profiles to a Quick Menu. So with a single gesture you can open your font selection menu and change the font like shown in the image below: ![](pictures/quickmenu_font_selection.png) Check the [QUICK MENU AND PROFILES](#qmandprofiles) section of this guide to learn how to do this. MOVING THROUGH YOUR BOOK There are many different ways of moving through your document in KOReader. You can use the SKIM WIDGET, BOOK MAP or PAGE BROWSER features. Skim Widget You can also open this widget with a long-tap on the Status Bar in addition to: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Skim document ![](pictures/skim_widget.png) Chapter Marks KOReader can show chapter boundaries from your documents on the SKIM WIDGET and PROGRESS BAR. ![](pictures/skim_widget_chapter_marks.png) If your document has too many heading levels, your chapter marks can look crowded like the example above. You can change the depth of visible ToC mark levels via: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Settings → Progress Bars ![](pictures/skim_widget_chapter_mark_levels.png) You can also use this reduced ToC for: * chapter titles (if it is shown on Status Bar) * chapter navigation * reading time left estimates These options are in the same menu. If your document doesn’t have a Table of Contents, you can enable ALTERNATIVE TABLE OF CONTENTS. When this setting is enabled, KOReader will build a ToC from document headings (if available) or from individual HTML files in the EPUB. Long press on this menu item for extra info: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Settings → Alternative table of contents You can find more info about the **table of contents** tools available in KOReader in this relevant section of the guide: [TABLE OF CONTENTS TOOLS](#toctools) Book Map Book map is a powerful and unique feature of KOReader which can be very useful for getting an overview of a book. For example if you are reading a book non-linearly by skipping some parts to read them later, it would be hard to track your progress. Book Map can show you which parts of the book you have already read, at a glance. Additionally you can: * See how much time you have spent on each page (if Reading Statistics plugin is enabled) * Check which pages have bookmark, highlights and notes * Navigate directly to any part of the book like the SKIM WIDGET You can access Book Map via menu and you can also assign a gesture for quicker access: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Book map User Interface And Controls When you open the Book Map first time while reading a book, it will be in Grid View mode, fitting all chapters on a single screen to give the best initial overview of the book’s content. To get a detailed information about usage, tap the info icon at the upper left corner. You can close the Book Map by tapping X on the upper right corner or with any multiswipe gesture (**UP-DOWN, LEFT-RIGHT** etc.). ![](pictures/bookmap.png) You can customize Book Map by changing these options: \- First try swiping LEFT and RIGHT along the bottom edge of the screen to change width of columns indicating pages and observe how it changes the scale of map \- Then try swiping UP and DOWN along the left edge of the screen to change chapter title depth and switch to the Flat View. See examples below. In addition to default Grid View above, here you can see the Flat View on the left and Grid View without chapter titles on the right. Note the changing left vertical scrollbar between views. If you want to switch back to the default view, you can long-press the info icon at the upper left corner. ![](pictures/bookmap_flat.png) ![](pictures/bookmap_grid.png) Book map options ![](pictures/bookmap_options.png) When you tap the menu icon on the **Book map** screen you are presented with the menu above. Menu options are explained below: * About book map: Short explanation of Book map usage and icon descriptions. * Available gestures: Gestures you can use to change the settings of Book map instead of using this menu. * Page browser on tap: If this is checked, when you tap on a page in Book map, Page browser opens. This shows you an overview of the area you selected. If you disable this option, a tap in Book map directly takes you to that page. But remember, depending on factors like your screen size, touch screen sensitivity, tap accuracy etc. you might end up in adjacent pages. * Switch current/initial views: If you customized your Book map view, tapping this switches between the **default view** and your **customized view**. * Switch grid/flat views: Switch between separate chapters or continuous chapters views. * Chapter levels: Change the depth of chapter/sub chapter levels. * Page slot width: Make each page slot wider or narrower. * 10-page markers: As you increase this value, first it will add markers to every **10th page**, then it will make them bigger and eventually it will add markers to every **5th page**. Page Browser Page Browser can be used to navigate between pages like in a photo album by showing thumbnails of the pages as a grid. You can open Page Browser by tapping on the Book Map or from the menu. You can also assign a gesture for quick access. ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Page browser You can change the number of pages shown by swiping along the TOP and LEFT sides of screen. Icons on the bottom are the same as Book Map. Actually the bottom part is a linear version of the Book Map. ![](pictures/page_browser.png) Alternative theme for Book map and Page Browser Book map and page browser has an **Alternative theme** with a different shading scheme which you can activate from their hamburger menus. This theme uses alternating colors for the chapter headings so chapter boundaries is more visible in the Book map and Page browser. But the usage of gray color in this theme requires flashing to black so it might be distracting for some users. You can try both and use the one you like. Table of Contents Tools Some of the digital books you come across might not have a proper table of contents (**ToC**). Depending on the preparation of the book, you can experience these ToC problems: * No ToC in the book, so you can’t jump between the chapters or see the remaining reading times * There is a ToC but it is not very useful because it has wrong or missing chapter titles KOReader has some features that you can use when reading books with a problematic table of contents section. Note that Alternative table of contents is not available on **fixed layout documents** like PDF, DJVU etc. because it requires HTML tags to create a ToC. Custom table of contents and Custom hidden flows features are available on all file types. Automatically creating a table of contents: ALTERNATIVE TABLE OF CONTENTS First feature is the Alternative table of contents which you can find in: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Settings → Alternative table of contents INFO An EPUB document is basically a ZIP file containing one or more HTML files. Your book might be one big HTML file for the whole book or it might contain separate chapters as individual HTML files (which is a better structure). Alternative table of contents tries to create a ToC from the headings in your book (**H1** to **H6** tags in the HTML files in your EPUB). If your book doesn’t contain any headings, it will try to build a ToC from the document fragments (individual HTML files in your EPUB book) which will point to the beginning of each file. You can choose which heading levels to include (or ignore) in your ToC from this menu: ⇑ TOP MENU → ![](pictures/top_document.svg) → Style tweaks → Miscellaneous → Alternative ToC hints Manually creating a table of contents: CUSTOM TABLE OF CONTENTS Custom table of contents feature allows you to create your own ToC from the selected parts of your book. This ToC can contain only one level so you can’t have sub-chapters while using this feature. To create your own ToC, first enable: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Settings → Custom table of contents Once you enable this feature, new menu items will be added to the user interface which allows you to select your chapters. You can add a chapter to your ToC from two places: 1. **From a highlight:** While reading a book, select a text like you are highlighting it or long press on a word. In the popup menu you will see the Start TOC chapter item. When you press on it, you will see a dialog asking you to enter your chapter title. The text you selected will be already entered in the dialog. Edit your title if necessary and press create. 2. **From the Page browser:** Open the Page browser via ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Page browser Long press on the page thumbnail that you want to be the beginning of your chapter and select Start TOC chapter item from the popup menu. You will see a dialog asking you to enter your chapter title. When you are done creating your ToC and don’t want to see these extra buttons, you can disable them by unchecking: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Settings → Custom layout features → Edit mode Creating this ToC will not alter your original ToC which comes with your book. You can clear your **Custom table of contents** from this same menu (in case you want to create a new one). And you can disable this feature completely in the same way you enabled it, if you want to return to the original ToC. Note that if you disable this feature after creating a custom ToC to return to the original one, your custom ToC will not be deleted. You can still switch between the original and your custom ToC. Excluding sections of your book: CUSTOM HIDDEN FLOWS Some books or documents might contain long footnotes or bibliography sections. Like a scientific book which is 250 pages long but last 50 pages are Appendices, Index and References. Normally these pages are included in the progress bar and reading time calculations since they are part of the book. But generally these sections exist as a reference and they are not read completely so you might want to exclude them to make your remaining page count and time estimates more accurate. Or maybe you have an anthology book which contain some stories you have already read. Custom hidden flows feature of KOReader allows you to exclude these kind of parts of your book. Have a look at the image for an overview of the process. Steps will be explained after the image: ![](pictures/custom_hidden_flow_howto.png) **How to exclude a section by creating a hidden flow** 1. Go to the first page of the section you want to exclude 2. Open the Page browser via: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Page browser 3. Long press on the page thumbnail that you want to be the beginning of your excluded section and select Start hidden flow here item from the popup menu. 4. You will see that the pages starting from your selection now have a gray hatched background. 5. Now go to the last page of your excluded section. You can navigate there from the Page browser or using other ways like Book map, Skim widget etc. 6. Once you are at the last page of your excluded section, open the Page browser again (if you are not already in it). 7. Find the last page of your hidden section and long press on the **next page**. Choose Restart regular flow here from the popup menu. You will see that the background of the remaining pages will return to normal color, indicating the end of hidden flow and the beginning of regular flow. **Working with the hidden sections** When you create a hidden flow section as described above, KOReader’s behavior will be similar to the situation as if you removed a section of a paper book by cutting it out: * These hidden flow sections will be skipped when turning pages. For example assume that you created a hidden flow for **Chapter 10**. Now you are on the last page of **Chapter 9**. When you turn the page, you will see **Chapter 11**. * Page numbering will continue as if these hidden flow sections **do not exist**. * These hidden sections will not be shown in your Progress bar (but read the explanation below) and will not be considered in **time to read** calculations. But they will still be visible in the Skim widget. * Following direct links to the pages included in these hidden flow sections will still work. Also you can still reach these sections from the Table of contents, Book map, Page browser, Skim widget. As we said above, your hidden flows will be excluded from your Progress bar. But if you jump to one of your hidden sections using any of the methods mentioned above, your Progress bar temporarily becomes this hidden section’s progress bar. You can imagine this as the progress bar is zooming into that hidden flow section. If you exit out of this hidden section by turning the page at the end of it, or using other navigation tools, your Progress bar will go back to showing the whole book again (with your custom hidden flows again not visible). **Removing and cleaning up hidden sections** You can remove individual hidden flow sections from the Page browser in the same way you created them. You can also clear all of them at once with the menu item: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Settings → Custom layout features → Clear all marked pages As you work on creating hidden flows by tagging pages as Start hidden flow or Restart regular flow, some of the previously made ones may stop having an effect. For example in the case that you make Start hidden flow a few pages before an existing Start hidden flow, that existing one is no longer involved. This overlapping or obsolete tags are remembered for practical purposes. Again in the previous example, if you end that second hidden flow before the existing-but-no-longer-involved Start hidden flow, this deactive one will be involved again. You can clear all these inactive markers if they interfere with your custom flows, or once you finish making your hidden flows and happy with the results: ⇑ TOP MENU → ![](pictures/top_bookmark.svg) → Settings → Custom layout features → Clear inactive marked pages **Hidden sections and progress bar** As we said above, your hidden flows will be excluded from your Progress bar. But if you jump to one of your hidden sections using any of the methods mentioned above, your Progress bar temporarily becomes this hidden section’s progress bar. You can imagine this like the progress bar is zooming into that hidden flow section. If you exit out of this hidden section by turning the page at the end of it, or using other navigation tools, your Progress bar will go back to showing the whole book again (with your custom hidden flows again not visible). BOOKMARKS, HIGHLIGHTING AND NOTES KOReader gives you options to interact with your book like you can do with a real book: **Bookmarks:** You can add (and remove) a bookmark by pressing the upper right corner. This is the equivalent of folding the corner of a page on a real book and shows a similar icon when you enable it. **Highlights:** You can highlight text in 4 different styles. In the image below, you can see a normal paragraph followed by different styles of highlights. Lighten (with gray background), Underline, Strikeout and Invert. ![](pictures/highlight_styles.png) You can use all these styles at the same time, like they are different colored highlight markers. Or you can decide your favorite style and set it as default from this menu by long pressing: ⇑ TOP MENU → ![](pictures/top_document.svg) → Highlight style **Notes:** You can also add notes to your highlights. Just tap on a highlight and choose Add note from the popup menu. You can also choose a Note marker that shows which highlights contain a note. There are three styles: Underline, Side line and Side mark (which is the pencil icon shown on the right side of the picture below): ![](pictures/note_marker.png) To enable this feature and choose a Note marker style, go to: ⇑ TOP MENU → ![](pictures/top_document.svg) → Highlight style → Note marker How to highlight KOReader has two highlighting modes for different use cases: Normal mode is similar to selecting a text with your finger on a phone/tablet and more suitable if your highlights are shorter than one page. Select and highlight mode is more suitable for highlighting longer passages which cross page boundaries. It might also work better if you have touch screen sensitivity problems or motor control issues with your hands. Because in this highlight mode you don’t need to drag your finger along the screen. Normal mode This mode is similar to selecting a text with your finger on a phone/tablet. 1. Long-press on the starting word 2. Move your finger to the end of the passage 3. Release finger When you reach page boundaries, KOReader will turn the page for you to continue highlighting **(only in EPUB/HTML documents)**. You can disable this feature from: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and gestures → Long-press on text → Auto-scroll when selection reaches a corner Select and highlight mode INFO If you have dictionary lookup enabled when long pressing a word, you have to drag your finger to initiate this mode. ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and gestures → Long-press on text → Dictionary on single word selection ![](pictures/highlight_menu.png) 1. Long-press (or drag if dictionary lookup is enabled as described above) on the starting word, popup menu will show up. 2. Tap on Select, now you are in highlighting mode. When you are in this mode, you will see an indicator at the upper left corner of the screen (which you can tap on it to get more information). You can cancel highlighting by tapping on the beginning of highlight again. You can turn pages with taps/swipes and freely navigate the document (TOC, skim etc) in this mode. 3. Long-press (or drag if dictionary lookup is enabled as described above) on the ending word for your highlight, menu will show up again. 4. Tap Highlight this time to finish highlighting the passage. This dialog normally opens at the center of the screen. If you want this dialog to open closer to your highlight location, you can change the center option here to gesture position (located on the second page of this menu): ⇑ TOP MENU → ![](pictures/gear.svg)→ Taps and Gestures → Long-press on text → Highlight dialog position TIP There is a **faster** method for this mode if you don’t need **long-press menu items** shown above. You can disable the popup menu completely so when you long-press on a word you will immediately enter the Select and highlight mode. This method is much faster and you can highlight any length of text with just two taps. To use this method enable this option: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and gestures → Long-press on text → Select and highlight TIP KOReader can highlight a passage in different styles. If you use Lighten option, text background will be gray. Due to e-ink limitations, screens can’t change from white to gray directly, so highlighted part first has to turn black and then gray. If you want to avoid this flashing, you can choose Inverted as your highlight style. In this mode text background will be black so it can be set without flashing. You can adjust these highlighting options via: ⇑ TOP MENU → ![](pictures/top_document.svg) → Highlight style TIP You can add multiple highlights and notes to the same section of text. If they are overlapping, when you tap on a highlight you will be presented with a menu to choose which highlight you want to edit. Selecting punctuation When you are highlighting, KOReader tries to include the related punctuation marks around your selection. For example if you highlight from the first word to the last word of a sentence, KOReader will automatically include the punctuation marks at the both ends of the sentence to your highlight. But if you start highlighting from the middle of a sentence, period at the end **will not be included** because KOReader assumes that you want to make a partial highlight. So if you want the punctuation marks to be added to your highlight, be sure that you select the **whole sentence**. Also you can add these marks later by long pressing the Highlight edit buttons. Editing a highlight When you tap on an already highlighted text **(without a note)**, you will see this popup menu. Delete and Add note items are clear. Bottom row menu items are used to extend or shrink the highlight. ![](pictures/highlight_edit.png) INFO This adjustment works only on reflowable documents like EPUBs. If you want to extend or shrink a highlight on PDFs, you have to delete it and highlight again due to the limitations of the PDF format. When you tap on an already highlighted text **with a note added**, you will see this popup menu. Tap on Edit highlight to open the menu above where you can edit both the highlight and the contained note: ![](pictures/note_edit.png) On your Bookmarks page you can filter the view to see only one type of bookmark by pressing the menu icon ( ![](pictures/top_hamburger.svg) ) You can also filter by highlight style: ![](pictures/bookmark_filter.png) Exporting your highlights After finishing a book, you can move it to a specific folder for archiving or processing purposes. Enable Move to archive plugin and set your target directory in the plugin’s settings (Set archive folder). After this, you can move a book to your archive folder using: * Move to archive plugin menu * With a gesture or * With a Quick Menu entry KOReader provides different ways of exporting your highlights and notes from your reader device: 1\. Export Highlights plugin This versatile plugin can export your highlights to **local files** or **online services**. Local export: You can export your highlights to your device in these file formats: * Text (.txt) * HTML (.html) * Markdown (.md) * Kindle Clippings (.txt) * JSON (.json) You can choose your preferred export formats from: ⇑ TOP MENU → ![](pictures/top_tools.svg) → Export Highlights → Choose formats and services You can see the export location (and also change it if you want): ⇑ TOP MENU → ![](pictures/top_tools.svg) → Export Highlights → Choose export folder Online services: You can also export to these services over the network: * Joplin (a note taking application) - [https://joplinapp.org/](https://joplinapp.org/) * Readwise (an online bookmarks/highlights application) - [https://readwise.io/](https://readwise.io/) * Memos (a self-hosted open source memo hub) - [https://github.com/usememos/memos](https://github.com/usememos/memos) * Flomo (an online note taking service) - [https://flomoapp.com](https://flomoapp.com) * XMNote (an Android bookmark organizer in Chinese language) - [https://www.xmnote.com/](https://www.xmnote.com/) You can find detailed setup instructions for these services on our related wiki page: [https://github.com/koreader/koreader/wiki/Highlight-export](https://github.com/koreader/koreader/wiki/Highlight-export) After selecting your formats, you can export the notes for the **current book** or **all the books in your library** from the same plugin menu. If you want to export only some of the books in your library, you can do this from the File Browser: 1. Select multiple books in the File Browser 2. Tap on the menu button (shown as a check mark) at the top right corner 3. Select Export highlights from the menu shown 2\. Using KoHighlights KoHighlights is an external program that you can install on your computer. It can access your book notes and highlights when you plug your reader to your computer. Check the project page for download and instructions: [https://github.com/noembryo/KoHighlights](https://github.com/noembryo/KoHighlights) 3\. Using Calibre Calibre is an external program that you can install on your computer. You can import highlights into your Calibre database with its KOReader Sync plugin. You can install the mentioned plugin within the Calibre application. Check the project page for download and instructions: [https://calibre-ebook.com/](https://calibre-ebook.com/) INFO When you open a document in KOReader, it creates a directory alongside the document with same name as the document. This directory contains a .LUA file which includes all the highlights, notes and user options (formatting properties etc.) related to that document. You can manually backup/restore these directories. READING PDFS Reading large PDFs on a small screen KOReader provides you many ways to read a PDF/DJVU document which is optimized for bigger (generally it is A4 or Letter) page sizes on your smaller screen device: 1\. You can enable REFLOW ⇓ BOTTOM MENU → ![](pictures/bottom_font.svg) → Reflow Reflow tries to extract the text portion from your document (if it is available) and format it as a single column. Results are generally satisfactory. You can also set this as **DEFAULT** by tapping and holding on it. 2\. You can enable ZOOM TO CONTENT ⇓ BOTTOM MENU → ![](pictures/bottom_fit.svg) → ![](pictures/bottom_fit_content.svg) ![](pictures/bottom_pdf_3.png) With this option KOReader tries to crop margins from your document so text may look bigger on your screen. You can set FIT to WIDTH in the same menu which will try to fit only page width instead of whole page, so your text will look bigger. 3\. You can try to use your device in LANDSCAPE orientation This will make your screen wider so your document may look big enough to read comfortably. ⇓ BOTTOM MENU → ![](pictures/bottom_orientation.svg) 4\. You can see your document at full size and scroll the screen to read different parts This is especially helpful with comic books. First enable COLUMN MODE from this menu item: ⇓ BOTTOM MENU → ![](pictures/bottom_fit.svg) → ![](pictures/bottom_fit_column.svg) Then select an appropriate flow direction for your document from the same menu: ![](pictures/pdf_flow_types.png) * For example if you are reading an article which has two columns, you will scroll down until the end of page reading left column then go to right upper side to continue reading right column: ![](pictures/flow_pattern_DRD.svg) * Or if you are reading a comic book, you will want to go **“right → down left → right”** in a zigzag pattern: ![](pictures/flow_pattern_RDR.svg) * For a Japanese comic book (right-to-left panel order) this might be the reverse: ![](pictures/flow_pattern_LDL.svg) In this mode you can also adjust Horizontal/Vertical Overlap and Number of Columns from the same menu to fit the text on your screen better. Feel free to experiment with these settings. Explanations Of Pdf Specific Bottom Menu Items ![](pictures/bottom_pdf_6.png) CONTRAST This setting adjusts black levels in your document. Be aware that same contrast value applies to both text and images in your document. If you set it very high, your images may become too dark to be readable. DEWATERMARK Removes watermarks from the rendered document. It can also be used to remove gray backgrounds. This feature can convert a grayscale or color document to black & white to produce more contrast for easier reading. RENDER QUALITY **(REFLOW MODE)** Sets the quality of text and image extraction processing and output. HIGH is more pleasing but it can be much slower (several seconds for page turn) than DEFAULT depending on your document. If your PDF/DJVU files are slow, this is the first setting you should check. * * * ![](pictures/bottom_pdf_7.png) DOCUMENT LANGUAGE Sets the language to be used by the OCR engine. FORCED OCR Force the use of OCR even if the document has a text layer WRITING DIRECTION **(REFLOW MODE)** Text direction of original document. Set to RTL for languages like Arabic and Hebrew. DOCUMENT COLUMNS **(REFLOW MODE)** Number of text columns in the original document. * * * ![](pictures/bottom_pdf_2.png) AUTO STRAIGHTEN feature can straighten the pages of a problematic document, for example pages of a PDF which are scanned with an angle. It is available in **PDF, DJVU, CBZ/CBT** documents and **image** files. To enable, choose the maximum tilt angle which KOReader will try to correct. If it doesn’t correct you might have to choose a bigger angle. Note that this feature **might slow down your reader** depending on several factors. OCR (Optical Character Recognition) **OCR (Optical Character Recognition)** is the process of extracting text from images into machine readable format. In KOReader context, it is generally used for extracting text from scanned book pages in PDF files. KOReader relies on Tesseract Open Source OCR Engine for this task ([https://github.com/tesseract-ocr/tessdoc](https://github.com/tesseract-ocr/tessdoc) ). In order to use this feature you need to: 1. Install Tesseract language data to your KOReader 2. Add newly installed languages to koreader/defaults.lua configuration file (necessary only if your language is other than English or Chinese) INFO Buttons on OCR menu **will not function** until you install the necessary Tesseract files. Details of this process can be read in the related wiki page: [https://github.com/koreader/koreader/wiki/Dictionary-support#dictionary-lookups-in-scanned-pages](https://github.com/koreader/koreader/wiki/Dictionary-support#dictionary-lookups-in-scanned-pages) Panel Zoom (manga/comic) This feature makes reading comic books easier on smaller screens. You can enable it while you are reading a **PDF, DJVU, CBZ or CBT** document via: ⇑ TOP MENU → ![](pictures/top_document.svg) → Panel Zoom (manga/comic) When this option is enabled, KOReader tries to find the boundaries of rectangular panels on the screen. If you long-tap on a panel, KOReader zooms in to that panel. As you can guess, this feature works best with comics that has clean panel boundaries. Procedure can be seen below: ![](pictures/panel_zoom.png) If you want to use this feature with other file types like EPUB, FB2, HTML or image files, you should open the file with a different engine: In the File Browser long-tap on the file name, tap Open with… and select MuPDF. PREPARING AND TRANSFERRING YOUR DOCUMENTS Transferring books to your reader KOReader supports **PDF, EPUB, DJVU, MOBI, CBZ, CBT, DOCX, RTF, HTML, TXT, XPS, FB2, PDB, CHM and ZIP** files. KOReader can reflow PDF documents (this option can be found in the bottom menu while reading a fixed-layout document like PDF) to make them suitable for the small screens of e-readers. But for best results, you may want to convert your documents into more flexible EPUB format. You can use Calibre ([https://calibre-ebook.com/](https://calibre-ebook.com/) ) for all kinds of conversion between formats. There are many ways to transfer your documents to your device. Note that you may need to restart KOReader to index the transferred documents (or refresh directory if you have Pocketbook/Android). In addition to transferring files the same way you would with the built-in reader application, other options are available depending on your device: 1. **USB mass storage mode within KOReader:** This mode is available for KOBO and some CERVANTES devices. 2. **Cloud storage (Dropbox/FTP/Webdav):** To use this function you have to add accounts for a cloud storage server via menu shown below. Process is explained via INFO buttons while adding accounts: ⇑ TOP MENU (in File Browser) → ![](pictures/top_tools.svg) → Cloud storage 3. **SSH/SFTP access:** KOReader can act like an **SSH server**, which you can access from a computer to transfer files (available on Kobo, Kindle, Cervantes). You can use an SFTP application (like Filezilla) or access via your file manager if your operating system supports. Check wiki for how-to: [https://github.com/koreader/koreader/wiki/SSH](https://github.com/koreader/koreader/wiki/SSH) 4. **Calibre transfer:** With the Calibre plugin you can send documents from your Calibre Library directly to your KOReader devices via a wifi connection. Check wiki for how-to: [https://github.com/koreader/koreader/wiki/Calibre-wireless-connection](https://github.com/koreader/koreader/wiki/Calibre-wireless-connection) 5. **News downloader:** With this plugin you can download **RSS and Atom** news entries as HTML files. Check wiki for how-to: [https://github.com/koreader/koreader/wiki/News-downloader](https://github.com/koreader/koreader/wiki/News-downloader) 6. **Wallabag:** With this plugin you can retrieve articles from Wallabag, a server based read-it-later service like Pocket. Check wiki page for more info: [https://github.com/koreader/koreader/wiki/Wallabag](https://github.com/koreader/koreader/wiki/Wallabag) Custom book cover using a screenshot Some books don’t come with proper book covers. Or they may have their cover on the second page so it doesn’t show up properly. Or maybe the cover is not suitable for e-ink (too light or dark). Or you prefer to set some image from the book as cover. In situations like this you can quickly take a screenshot and set it as the current book’s cover. Screenshot gesture is a **long diagonal swipe** by default. Also **touching opposing diagonal corners** will take a screenshot. You can use this second shortcut when viewing an image. After taking your screenshot you can select Set as book cover from the dialog. You can remove this custom book cover here: ⇑ TOP MENU → ![](pictures/top_hamburger.svg) → Book information On the book information page, long-press on the Cover image item and then select Reset custom. You can also reset the book cover with the Reset dialog, which you can access by long-pressing the filename in the File Browser. WARNING Be very careful when using this **Reset** dialog and be sure that only **Custom cover image** item is checked otherwise you can reset everything related to your book accidentally. Optimizing EPUB/PDF documents for your mobile reader device Most widely used applications for converting or optimizing your document for your mobile reading device are Calibre (**EPUB, Kindle** focused) and K2pdfopt (**PDF** focused). Calibre can convert your documents between many formats. It also has a built-in editor that allows you to edit e-books (and fix problems) in the most popular e-book formats, EPUB and Kindle. [https://calibre-ebook.com/](https://calibre-ebook.com/) K2pdfopt optimizes PDF/DJVU files for mobile e-readers and smartphones. It works well on multi-column PDF/DJVU files and can re-flow text even on scanned PDF files. It can also be used as a general PDF copying/cropping/re-sizing/OCR-ing manipulation tool. [https://www.willus.com/k2pdfopt/](https://www.willus.com/k2pdfopt/) OCRmyPDF is a command line application which can add an OCR text layer to scanned PDF files (containing only images without text), allowing them to be searched or copy-pasted. It can especially be useful for reading old scanned books. It can also optimize the images for a smaller file size. [https://github.com/ocrmypdf/OCRmyPDF](https://github.com/ocrmypdf/OCRmyPDF) SingleFile is a browser extension for **Mozilla Firefox, Google Chrome** and **Microsoft Edge**. This extension allows saving a web page as a single .html file with all resources (images, stylesheets, scripts) embedded. [https://github.com/gildas-lormeau/SingleFile#install](https://github.com/gildas-lormeau/SingleFile#install) ZIP file support KOReader can read files stored/compressed in **ZIP** files. A ZIP file can contain many types of documents like html, txt or images. KOReader can open your ZIP file properly if you give it a hint for the type of file in the ZIP archive. If you give your file only a **.zip** extension, KOReader will assume that this archive contains images and try to open it like a **CBZ** file. DEFAULT CASE: yourfilename**.zip** - Assumed to be a zip file of images (and opened by MuPDF engine) If your zip file contains one of these types (instead of just images), please name it accordingly: * **FictionBook** - yourfilename.**fb2.zip** * **HTML** - yourfilename.htm.zip / yourfilename.**html.zip** * **Text log files** - yourfilename.**log.zip** * **Markdown** - yourfilename.**md.zip** * **Rich Text Format** - yourfilename.**rtf.zip** * **Plain text** - yourfilename.**txt.zip** If the documents are not named like this, the wrong reader/format engine is likely to be used and you will see the No reader engine for this file or invalid file message. You can rename this file as explained above or long-press the filename and then choose Open with... to select the correct engine. Optimizing manga for your mobile reader device If you like reading manga books on your e-ink device there are some tips that can make your experience better. Preparing your own manga files is the best solution if you're not satisfied with how comics look on your device. File type File types like MOBI and EPUB are not suitable for handling primarily image content (e.g., manga/comics). **MOBI** support in KOReader is minimal to nonexistent, and **EPUB’s** text rendering priorities can cause problems when showing full-page images. For further technical details: [https://github.com/koreader/koreader/issues/9163#issuecomment-1146637205](https://github.com/koreader/koreader/issues/9163#issuecomment-1146637205) ). Your best option is building a **CBZ** file which works better in KOReader. A file with **.cbz** extension is a zip file (with no compression) that is a collection of images. It saves multiple images, commonly **.png** or **.jpeg** files, organized into pages of the comic. KOReader can also open **CBT** files, which are similar to **CBZ** files but use **TAR** archive format. Easiest way to convert a manga to **CBZ** is to get the manga as images from various websites, then convert them using Kindle Comic Converter ([https://github.com/ciromattia/kcc](https://github.com/ciromattia/kcc) ). There are some useful settings like **auto-rotating two-page splits to landscape and applying dithering** so that eink-rendered gradients are smoothly dithered without jagged layers. Resolution The best results can be achieved by resizing your images to exactly your e-reader screen size. A screen-specific **CBZ** which targets the exact screen size of the device, prevents rescaling during reading. KOReader downscales your images to your screen size while reading but this is not recommended because KOReader adds a dithering pass before scaling and this causes loss of quality. But if you want to use your hand made **CBZ** on more than one device or you want to preserve high resolution for future proofing, your best option might be to make the **CBZ** for your highest resolution device. Or pick an arbitrary "high" resolution, possibly one that matches the source. **300 PPI** or better (up to **450** or even **600**), unless the source is lower of course. If we assume a screen size of **8", 1500×2000** is a good target resolution. For bigger images, you should try it on your device and see whether it can deal with it. Especially old Kindles with low memory can struggle with sizes like **3000×4000** for example. If you're automating the process, it might be worth considering creating both a lower and higher quality version (e.g., at **200/400** or **300/600** DPI). INFO KOReader doesn't parse **spine page-progression-direction="rtl"** attribute of the books. So it doesn’t change page turning direction even though the file was created with right-to-left reading. Users can switch this via: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and gestures → Page turns → Invert page turn tap and swipes / buttons Advanced preparation of manga The following is an example procedure to process one manga file: * Download Kindle Comic Converter (KCC) from [https://github.com/ciromattia/kcc](https://github.com/ciromattia/kcc) * Download your manga from the source of your choosing (i.e. HakuNeko) * Unpack the manga file. Now you should have a directory that contains only images (or subdirectories with images, no archives) * Process this directory with KCC. Each directory will produce a single **CBZ** file, so if you want to make several volumes at once, select multiple directories at once Some useful settings of KCC: **Spread splitter:** This feature detects double pages and allows you to rotate or cut them in two. **Upscaling:** Enlarge images that is smaller than your target resolution. Immersive mode in KOReader If you would like to enjoy your manga in a more immersive way, make sure that you selected the exact same resolution as your device’s screen resolution in **KCC** when creating your **CBZ** file. Also you can hide the bottom progress bar while reading your manga in KOReader. So you will have an immersive full screen view of your manga without obstructions. Extra step for smooth gradients !!! ADVANCED After using KCC to create a **CBZ** file, you can apply additional **dithering** to the images. This way, eink-rendered gradients will be smoothly dithered without jagged layers. This step will produce fine-tuned manga volumes which look better in KOReader. You can use ImageMagick to process your images. ImageMagick, is a powerful open-source software suite for displaying, creating, converting, modifying, and editing raster images. You can download ImageMagick and use it from the command line to process many images at once. 1. Unpack the prepared **CBZ** file that you created with KCC, 2. Download the following file (**dither\_pack.zip**) which contains two **batch files (.BAT)** and a **GIF** color template: [https://disk.yandex.com/d/glEebjmPYYp7og](https://disk.yandex.com/d/glEebjmPYYp7og) 3. Extract these three files next to your images that will be processed 4. Edit the **\_magick\_manga\_ditherN\_resize.bat** and change the resolution to your device resolution (in both places in the **BAT** file). WARNING Next step will replace all the images in the directory with the processed ones. So make sure that you have a copy of them in some other directory if you want to keep the originals. 5. Run **\_magick\_manga\_ditherN\_resize.bat** to resize and dither the images. 6. Assuming you have **7-Zip** installed, run **\_batch\_archive.bat** to pack all the processed images into a **CBZ** archive. Reversing the page turn direction for authentic Japanese manga !!! ADVANCED You can make KOReader turn pages from **Left to Right**, so that swipes and tap zones are swapped. To enable this, add the following lines to this file → /koreader/settings/directory\_defaults.lua \["/storage/emulated/0/Books/manga"\] = { \["inverse\_reading\_order"\] = true, \["kopt\_zoom\_direction"\] = 0, }, where **/storage/emulated/0/Books/manga** is the absolute path to the directory containing your mangas. After this change, when you open a file from the mentioned directory, your swipes and tap zones will be swapped. Tip when reading serialized books like manga When you reach the last page of a book, KOReader shows you a dialog. In this dialog there is an Open next file action which will open the next file in the same directory as the current book. So you can put your series in separate directories and read them one after another without going back to the File Browser. ![](pictures/open_next_file.png) When opening this next file, KOReader skips the files that you have marked as **finished**. This feature is useful for example when you have a folder of manga files and you have already read some of them. You can mark a file as finished from the end of book dialog shown above. Also you can mark it from the File Browser by long-pressing on the file. After copying them to your device, you can: * Open the File Browser in KOReader * Long press on the ones you already finished and tap Mark as finished Now you can read all the files by just tapping Open next file at the end of the book. KOReader will skip the ones you have already read. GESTURES AND KEYBOARD SHORTCUTS There are many types of gestures you can use to control KOReader. Some gestures have limitations regarding where on the screen they can be used and which directions are supported. These limitations are indicated below. INFO Some devices support only single touch. So multi-finger gestures **are not available** on them. ![](pictures/gesture_tap.png) TAP / DOUBLE TAP Single or double tap with **ONE** finger **WORKS:** Anywhere on the screen * * * ![](pictures/gesture_tapandhold.png) TAP AND HOLD Single tap and hold with **ONE** finger **WORKS:** Only on four corners * * * ![](pictures/gesture_twofingertap.png) TWO FINGER TAP Single tap with **TWO** fingers at the same time **WORKS:** Only on four corners * * * ![](pictures/gesture_pinch.png) SPREAD AND PINCH Same gesture as zooming in and out on a mobile phone, tablet etc. **WORKS:** Anywhere on the screen INFO This gesture may work less reliably depending on your device. If that’s the case please choose another gesture type. ![](pictures/gesture_swipe.png) ONE FINGER SWIPE Swiping motion with **ONE** finger **WORKS:** Screen edges (HORIZONTAL and VERTICAL) Anywhere except edges (DIAGONAL) * * * ![](pictures/gesture_twofingerswipe.png) TWO FINGER SWIPE Swiping motion with **TWO** fingers at the same time **WORKS:** Anywhere on the screen * * * ![](pictures/gesture_multiswipe.png) MULTISWIPE More than one swipe done after each other without lifting your finger. For example like drawing the letter **U** (DOWN-RIGHT-UP) **WORKS:** Anywhere on the screen * * * Icons by **Econceptive** from the [Noun Project](https://thenounproject.com/econceptive/collection/touch-gesture/) Predefined Gestures This table shows the gestures available when you install KOReader for the first time. You can change these gestures according to your preferences via: ⇑ TOP MENU → ![](pictures/gear.svg) → Gesture Manager TAP CORNER * **Top Left Corner** > Toggle page flipping * **Top Right Corner** > Toggle bookmark * **Opposing diagonal corners at the same time** > Take screenshot DOUBLE TAP * **Left Side** > Go -10 pages * **Right Side** > Go +10 pages ONE FINGER SWIPE * **Short diagonal swipe** > Full screen refresh * **Long diagonal swipe** > Take screenshot MULTISWIPE * **← →** - Back to previous location * **→ ←** - Go to latest bookmark * **↓ ↑** - Skim document * **↑ ←** - Bookmarks * **↑ →** - Table of contents * **↓ ←** - Show frontlight dialog * **↓ →** - Toggle reflow * **→ ↑** - History * **← ↑** - Book status * **→ ↓** - Go to page * **← ↓** - Back * **↑ ↓ ↑** - Previous chapter * **↓ ↑ ↓** - Next chapter * **← → ←** - Open previous document * **→ ← →** - Favorites Gesture Categories This is a list of every action that you can assign to a gesture using the Gesture Manager menu. You can use the search function of your browser (generally **Ctrl+F**) to search for an action here. These actions can also be used in your own Quick Menu. Please check the relevant section in the guide for more info. General * Reading progress * Open previous document * History * History search * Favorites * File browser * Dictionary lookup * Wikipedia lookup * Show menu * Menu search * Screenshot * Toggle SSH server * Show ephemeris * Statistics calendar view * Statistics today’s timeline * Synchronize book statistics Device * Exit screensaver * Start USB storage * Suspend * Restart KOReader * Reboot the device * Power off * Exit KOReader * Toggle hold corners * Enable touch input * Disable touch input * Toggle touch input * Invert page turn buttons * Toggle key repeat * Toggle accelerometer * Rotation * Toggle orientation * Invert rotation * Rotate by 90 CW * Rotate by 90 CCW * Turn on Wi-Fi * Turn off Wi-Fi * Toggle Wi-Fi * Show network info * Battery statistics * System statistics Screen and lights * Show frontlight dialog * Toggle frontlight * Set frontlight brightness * Increase frontlight brightness * Decrease frontlight brightness * Set frontlight warmth * Increase frontlight warmth * Decrease frontlight warmth * Toggle night mode * Set night mode * Full screen refresh * Full refresh rate (always) * Full refresh rate (not in night mode) * Full refresh rate (in night mode) * Always flash on chapter boundaries * Toggle flashing on chapter boundaries * Never flash on chapter's 2nd page * Toggle flashing on chapter's 2nd page * Always flash on pages with images * Toggle flashing on pages with images * Auto warmth off * Auto warmth cycle through modes Reflowable documents * Set font * Increase font size * Decrease font size * Set font size * Word spacing * Word expansion * Contrast * Font weight * Font hinting * Font kerning * Two columns * L/R margins * Sync T/B margins * Top margin * Bottom margin * View mode (page-continuous) * Render mode * Zoom * Line spacing * Alt status bar * Embedded style * Embedded fonts * Image scaling * Invert images File browser * Folder up * Show plus menu * Toggle select mode * Refresh content * Folder shortcuts * File search * Go to page * Back Reader * Open next document in folder * Show bottom menu * Toggle status bar * Previous chapter * Next chapter * First page * Last page * Turn pages * Go to page * Skim document * Previous bookmark * Next bookmark * First bookmark * Last bookmark * Latest bookmark * Back * Back to previous location * Forward to next location * Follow nearest link * Follow nearest internal link * Add current location to history * Clear location history * Fulltext search * Table of contents * Book map * Book map (overview) * Page browser * Bookmarks * Bookmark search * Toggle bookmark * Book status * Book information * Book description * Book cover * Translate current page * Toggle page turn direction * Toggle custom TOC * Toggle custom hidden flows * Set highlight action * Cycle highlight action * Cycle highlight style * Save book metadata * Move current book to archive * Book statistics Fixed layout documents * Toggle page flipping * Toggle bookmark flipping * Toggle reflow * Zoom mode * Change zoom factor * Toggle panel zoom * Page crop * Margin * Horizontal overlap * Vertical overlap * Fit * Zoom factor * Zoom to * Direction * View mode * Page gap * Progress bar * Line spacing * Alignment * Font size (set) * Font size (inc/dec) * Word gap * Reflow * Contrast * Dewatermark * Dithering on-off * Render quality * Document language * Forced OCR * Writing direction * Auto straighten * Document columns Keyboard Shortcuts If you are using the desktop Linux version of KOReader, you can use keyboard shortcuts for navigating the user interface. These can also be used with non-touch devices which has a keyboard, like **Kindle 3, Kindle DX, Android and Android TV**. File browser mode * Open top menu - **F1** * Navigate to home - **Home** * Navigate file list - **Up/Down** * Open selected book - **Enter** * Show selected book’s context menu - **Right** * Exit application - **Esc** Reading mode * Open selected page link / Open bottom menu - **Enter** * Open top menu - **F1** * Back/exit application - **Esc** * Show bookmarks - **B** * Show TOC menu - **T** Highlighting * Enter highlighting mode - **H** * Start/stop highlight selection - **Enter** * Move highlight indicator - **Left/Right/Up/Down** * Move highlight indicator faster - **Shift+Left/Right/Up/Down** * Exit highlight mode - **Esc** Fonts (**Not** available for PDF, DJVU and images.) * Show font menu - **F** * Increase font size - **Shift+Page Up** * Decrease font size - **Shift+Page Down** Links * Select next page link - **Tab** * Select previous page link - **Shift+Tab** Image viewer * Zoom in - **Page Down** * Zoom out - **Page Up** Navigating the book * Next/previous page/view - **Left-Right / Up-Down / Page Up-Page Down** * Go to the beginning of book - **1** * Go to 11% of book - **2** * Go to 22% of book - **3** * Go to 33% of book - **4** * Go to 44% of book - **5** * Go to 55% of book - **6** * Go to 66% of book - **7** * Go to 77% of book - **8** * Go to 88% of book - **9** * Go to the end of book - **0** In Skim Document dialog * Go to the beginning of book - **Q** * Go to 11% of book - **W** * Go to 22% of book - **E** * Go to 33% of book - **R** * Go to 44% of book - **T** * Go to 55% of book - **Y** * Go to 66% of book - **U** * Go to 77% of book - **I** * Go to 88% of book - **O** * Go to the end of book - **P** Page zooming (**Only** available for PDF, DJVU and images.) * Zoom in - **Shift + PgUp** * Zoom out - **Shift + PgDown** * Zoom to fit page - **A** * Zoom to fit page width - **S** * Zoom to fit page height - **D** * Zoom to fit content - **Shift+A** * Zoom to fit content width - **Shift+S** * Zoom to fit content height - **Shift+D** * Manual zoom mode - **Shift+M** QUICK MENU AND PROFILES Quick Menu Quick Menu is a recent feature of KOReader which allows you to have a quickly accessible personalized menu. You can assign this menu to a gesture and access it with a single swipe. You can see an example menu on the right. You can even have a menu longer than your screen, it is scrollable. Basically, any action you can assign a gesture can be added to the Quick Menu. Its advantages are: 1. You don’t need to memorize lots of gestures for every action. 2. Some infrequent actions may not worth a gesture but it can be too much hassle to find it in the menu system. You can add this kind of rarely used actions to this menu instead. 3. If you are installing KOReader for a relative or friend, you can add their favorite actions to this menu so they don’t even need to go into the menu system while using KOReader. **An example Quick Menu:** ![](pictures/quickmenu_example.png) There are two methods for creating a Quick Menu. **Easy** and **Advanced**. If you need only one menu, **Easy method** should be enough for you. If you want show different menus with different gestures you need to use **Advanced method**. Another advantage of **Advanced method** is that, if you want to use another gesture for your menu you can easily move it to another gesture. If you want to use another gesture while using the **Easy method**, you have to re-create your menu under the new gesture. Easy method 1. Go to Gesture Manager menu via: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and Gestures → Gesture Manager 2. Decide a gesture for opening your menu and tap on it. 3. Choose the actions you want to see in your menu from the gesture configuration menu. You can select many actions at once of course. 4. After selecting all your actions, you will tell KOReader to treat this gesture as a menu. You achieve this by enabling Show as Quick Menu item on the second page as you can see **in the picture below**. 5. You can sort your menu items with the Sort option just below it. Now you can launch your menu with the gesture you selected. If you want to change the menu items, you can open the gesture page and add/remove items. ![](pictures/quickmenu_easy.png) Advanced method INFO As we said above, if you are not planning to add more than one Quick Menu you don’t need this section. Quick Menu is actually a Profile which appears on your screen as a menu. So first you have to learn about Profiles. If you already know how to use Profiles, you can continue reading, otherwise jump to the Profiles heading (next section), create a Profile with some items and come back here. We assume that you already created a Profile as instructed in the previous paragraph. Now we will turn our Profile into a Quick Menu. 1\. Go to your newly created Profile and enable Show in action list (shown in the image below). This will make your Profile visible in the Gesture Manager. Also enable Show as Quick Menu (also in the image below) so your profile will be shown as a menu instead of being silently executed. ![](pictures/quickmenu_advanced.png) 2\. Now we need a way to access our menu. Go to the Gesture Manager and choose a gesture from the list to assign to our menu. Let’s say we want to tap the corner of the screen to show menu. Now tap on Tap corner then choose Bottom left. Now tap on General and go to the second page. You will find your profile as Profile x where x is the name you gave to this Profile. Tap on its checkbox to assign your profile to this gesture. After all the steps, now you should see your menu when you tap on the bottom left corner. You can edit your menu by going to its Profile page where you can add or remove items. Also there is a Sort item there so you can change the order of your menu items. As we said, a Quick Menu is actually a Profile. Which means you can have more than one menu. You can create another Profile and follow the same steps to create another menu if you want. Quick menu tips Keeping the menu open after use Normally after selecting an item in your Quick Menu, menu disappears from the screen. Sometimes you might want to keep the menu open after selecting an item. This allows you to adjust settings like these examples: * **Incremental changes**, like brightness increase/decrease, bigger/smaller font size, previous/next pages or chapters, etc. * **Group of options that you activate in succession** (but not simultaneously), like **turning on wifi** and after that **starting the SSH server** You can enable this option from the following menu if you have a **Gesture Manager based (Easy method)** Quick Menu: ⇑ TOP MENU → ![](pictures/gear.svg)→ Taps and Gestures → Gesture Manager → “Your Quick Menu gesture” → Keep Quick Menu open Or from this menu, if you have a **Profiles based – (Advanced method)** Quick Menu: ⇑ TOP MENU → ![](pictures/top_tools.svg)→ Profiles → “Your Quick Menu profile” → Edit actions → Keep Quick Menu open Opening Quick Menu at the gesture position Normally Quick Menu opens centered at the middle of the screen. If you are using your e-reader with one hand you can activate a setting which will open your menu at the gesture position. This way, menu will be closer to your finger and easier to access. To use this feature enable this option: ⇑ TOP MENU → ![](pictures/gear.svg)→ Taps and Gestures → Gesture Manager → “Your Quick Menu gesture” → Anchor Quick Menu to gesture position INFO This is available only in a Quick Menu which is created via Gesture Manager (Easy method above). Profiles A profile is basically a collection of actions that can be triggered with a single tap (like a macro). As an example, imagine that when reading some type of books, you always: * Rotate the screen to landscape orientation * Increase the font size and contrast and * Turn the screen light on With the profiles plugin, you can do all these at once with a single action. INFO When you activate another profile, changes made in the first profile **will not be reversed**. For example, you activate a profile which sets your font size from **20** to **24**. Then you activate another profile that adjusts your **frontlight**. Your font size **stays at 24** after activating the second profile. Because profiles in KOReader doesn’t have an exit or reverse action. To create a profile first be sure that Profiles plugin is activated. If you don’t see it under: ⇑ TOP MENU → ![](pictures/top_tools.svg) → Profiles then you have to turn it on from: ⇑ TOP MENU → ![](pictures/top_tools.svg) → More tools → Plugin management Creating a profile In Profiles menu tap New and give a descriptive name for your profile. Now you should see your new profile in the menu. Tap on it and you will see the screen on the left side. You can also Delete, Rename or Duplicate a profile from this menu. ![](pictures/profile_create.png) When you tap on Edit actions menu item you will see the menu on the right. This is the same menu as the gesture selection menu and there are actions in many categories. Which means you can perform any Gesture action using a Profile. You can now select several items from all these categories. The actions you selected here will be performed when you activate this profile. Activating a profile There are many ways to activate a profile: 1. You can activate a profile with a **long press** on its name from this same Profiles menu 2. You can activate a profile using a gesture. For this, you have to enable Show in action list from the profile’s menu. Now you can select it via: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and gestures → Gesture manager → “ANY GESTURE” → General → Profile “Your profile name” 3. You can also activate a profile automatically when KOReader starts if you enable Autostart in the Profile’s menu. Note that this is only possible when KOReader is starting with the File browser or Last file. Technical details of Profiles and Quick Menu!!! ADVANCED In KOReader we have **a set of actions/settings** and this set can be created in two ways: 1. As a profile (which is explained as the Advanced Method and stored in settings/profiles.lua) 2. As a list of actions assigned to a gesture (which is explained as the Easy Method and stored in settings/gestures.lua) This set can also be **executed** in two different ways: 1. Applying each action in the (sorted) order when triggered (as a Profile) 2. Showing it as a Quick Menu Adding/removing actions of a set and enabling/sorting Quick Menu are done via the same actions menu. The only difference is that the actions menu in the Gesture manager has two more items (Pass through), that is why Show as Quick Menu and Sort items are on the second page. PLUGINS AND USER PATCHES Plugin types Plugins are small programs that expand the capabilities of KOReader. You can think of them like browser add-ons. KOReader has 3 categories of plugins: Internal Internal plugins are part of the core program. * They are directly accessible from the KOReader plugins menu. * They don’t need installation. You can enable them from the menu. * They are checked by our developers so they are considered safe. * They are automatically updated when you update KOReader. You can enable/disable them via: ⇑ TOP MENU → ![](pictures/top_tools.svg) → More tools → Plugin management Contrib !!! ADVANCED This group contains non-official plugins which are not part of the core logic of KOReader. * They have to be installed **manually** and then activated from the plugins menu. * They should be updated **manually**. * They are checked by our developers **at the time they were added to our repository** so they are considered safe. You can access them from this page: [https://github.com/koreader/contrib](https://github.com/koreader/contrib) They can be installed by downloading the plugin’s directory from the page above and copying it under koreader/plugins folder on your device. But still check the plugin’s page for other possible instructions. External !!! ADVANCED These are plugins that are developed independently from the KOReader team. * They have to be installed **manually** and then activated from the plugins menu. * They should be updated **manually**. * They are **NOT** checked by our developers so be aware that there might be risks using them. Some notable examples of these external plugins: * AskGPT: You can ask questions to ChatGPT about parts of your book. You can also use this plugin to simplify, explain, discuss or translate text to other languages. [https://github.com/drewbaumann/AskGPT](https://github.com/drewbaumann/AskGPT) * Anki plugin for KOReader: KOReader plugin enabling Anki (an open-source flashcard software) card generations for words looked up in the internal dictionary. [https://github.com/Ajatt-Tools/anki.koplugin](https://github.com/Ajatt-Tools/anki.koplugin) * Zotero for KOReader: This addon allows you to browse your Zotero (an open-source reference management software) collections from KOReader. [https://github.com/stelzch/zotero.koplugin](https://github.com/stelzch/zotero.koplugin) Also you can click this link to open a search page on Github to discover more KOReader plugin projects: [https://github.com/search?q=koplugin&type=repositories](https://github.com/search?q=koplugin&type=repositories) List of internal plugins **Auto frontlight** \- Automatically toggles the frontlight according to ambient light level (Only available on Kindle Voyage and Oasis) **Auto warmth and night mode** \- Allows you to adjust frontlight warmth in devices with natural (yellow/orange) light and set Night Mode automatically according to a schedule **Auto power save** \- Puts the device into standby, suspend or power off after specified periods of inactivity **Autosuspend** \- Suspend device after chosen period of inactivity (available on all e-ink devices except android os) **Autoturn** \- Automatically turns the page after a set period of time **Background runner** \- Service to other plugins: Allows tasks to run regularly in the background. **Battery statistics** \- Collects and displays battery usage statistics of your device **Book shortcuts** \- Allows adding a book shortcut to a gesture **Calibre** \- You can send documents from your Calibre Library directly to your KOReader devices via WiFi connection. Check the wiki for how-to: [https://github.com/koreader/koreader/wiki/Calibre-wireless-connection](https://github.com/koreader/koreader/wiki/Calibre-wireless-connection) **Cover browser** \- Allows cover display modes for file browser and history **Cover image** \- Saves the cover image of the current book as a file (available on Android/PocketBook/reMarkable devices) **Export highlights** \- Export highlights and notes to local files or to Joplin (a note taking application) **Flashcard trainer** \- Show flashcards using spaced repetition (SM2) of highlight from your library **Gestures** \- Provide gesture support for KOReader **Japanese support** \- Japanese language support for KOReader that extends built-in dictionary and selection system **Keep alive** \- Keeps the device awake to prevent automatic WiFi disconnects **Move to archive** \- Moves current document to archive folder **News Downloader** \- Retrieves RSS and Atom news entries and saves them as HTML files. Check the wiki for how-to: [https://github.com/koreader/koreader/wiki/News-downloader](https://github.com/koreader/koreader/wiki/News-downloader) **OPDS** \- Allows you to download books from online catalogs **Perception expander** \- Allows using peripheral vision to read more quickly. Check this YouTube video to see how it works: [How to Triple Your Reading Speed in 20 Minutes (Tim Ferriss)](https://youtu.be/jeOHqI9SqOI?t=137) **Profiles** \- Allows combining multiple settings to make switchable profiles **Progress sync** \- Synchronize your reading progress across different KOReader devices. Check the wiki for how-to: [https://github.com/koreader/koreader/wiki/Progress-sync](https://github.com/koreader/koreader/wiki/Progress-sync) **QR from clipboard** \- Generates a QR code from clipboard content **Read timer** \- A countdown timer to display a message after a user defined time **Reading statistics** \- Calculates reading sessions statistics and reading speed for use in chapter/book remaining time estimations **SSH** \- Allows access to your device over SSH protocol. You can access via FTP applications or even your file manager if it supports. Check the wiki page for how-to: [https://github.com/koreader/koreader/wiki/SSH](https://github.com/koreader/koreader/wiki/SSH) **System statistics** \- You can see your CPU/RAM/BATTERY info via this plugin under: ⇑ TOP MENU → ![](pictures/top_hamburger.svg) → Help → System statistics **Terminal emulator** \- Starts a shell (command prompt) on your device that can run full terminal apps **Text editor** \- A basic text editor to create and edit plain text files **Time sync** \- Synchronizes the device time with NTP servers **Tweak document settings** \- Allows tweaking settings of a document before it is loaded based on external factors **Wallabag** \- Downloads the latest articles from a Wallabag server as individual EPUB files. Check the wiki page for more info: [https://github.com/koreader/koreader/wiki/Wallabag](https://github.com/koreader/koreader/wiki/Wallabag) User patches!!! ADVANCED User patches are small files written in **Lua** language. They can change the functionality of KOReader without modifying your installation permanently. They can be written by developers, other users or you can write one yourself (if you have the necessary extensive knowledge about the KOReader internals). You can find a current list of User patches in the related **GitHub** wiki page: [https://github.com/koreader/koreader/wiki/User-patches](https://github.com/koreader/koreader/wiki/User-patches) and in the **issues** list under the User patch available tag: [https://github.com/koreader/koreader/issues?q=+label%3A%22User+patch+available%22](https://github.com/koreader/koreader/issues?q=+label%3A%22User+patch+available%22) Basic usage – Adding an already written patch to your KOReader: 1. Create a directory named patches under koreader directory on your device (On Android this folder is located on the SD-card) 2. Download and put the patch file with **.lua** extension in this patches directory 3. Restart KOReader Patch manager When you create a patches directory as instructed, a new plugin named Patch Management becomes available in the plugins menu after restarting KOReader. With this plugin you can see the list and status of your user patches and enable/disable them. You can tap About patch manager menu item to see more info. Naming the patch Execution order of a patch is determined by the first digit of the number in the patch name. For example: 2-TOC-title-patch.lua If there are several patches starting with the same digit, the execution order is the natural order **(1<10<11<12<13<…<109<…<10010)**. If you are just downloading an already made patch you don’t need to change the file name. Names starting with: * **0** - Executed very early and only once after an update * **1** - Excuted very early on every start of KOReader (but after 0 if applicable) * **2** - Executed after UIManager is ready on every start of KOReader * **3-7** - Reserved * **8** - Executed before exit and before settings get saved * **9** - Executed right before exit If you have a problem with a user patch, you can revert to your previous configuration by removing the patch file. TIPS Updating KOReader KOReader can update itself over Wi-Fi. You can trigger the check via this menu item: ⇑ TOP MENU → ![](pictures/top_hamburger.svg) → Update → Check for update Automatic dimmer KOReader can dim your frontlight to preserve battery if your device is idle for a while. You can turn on and adjust this feature via: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → Automatic dimmer Line/word count of a page If you want to know how many lines or words are being shown on the current page you can see it at: ⇑ TOP MENU → ![](pictures/top_hamburger.svg) → Book information How can I add a password lock to KOReader? We don't have a direct option for this in KOReader. But there is a workaround to achieve this kind of lock screen functionality. You can set up KOReader to keep the screensaver on the screen until you enter a chosen gesture. To achieve this: 1. Choose any gesture (including the complex ones with custom multiswipes) and make it your **"unlock"** gesture by going to: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and gestures → Gesture manager → "your selected gesture" → Device → Exit screensaver 2. And then enable this option: ⇑ TOP MENU → ![](pictures/gear.svg) → Screen → Screensaver → Settings → Keep the screensaver on screen after wakeup → Until 'Exit screensaver' gesture Switching between documents quickly If you need to switch between two documents (when comparing them for example), there is a quicker way than going through the File Browser. KOReader can open the last document with a gesture (**←→← multiswipe**). If you define a gesture’s action as Open previous document, you can switch between two documents quickly similar to **Alt+Tab** feature on the desktop computers. You can find this feature under: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and gestures → Gesture manager → “ANY GESTURE” → General → Open Previous Document Also you can use the History dialog to switch between documents quickly. The history screen can be opened with the **→↑** multiswipe gesture. You can also define any other gesture for this of course. Applying current defaults to an already opened book When you adjust your document defaults like default line spacing or default contrast, this new value will only be used for the new documents you open after the change. Your already opened books will look the same. For example, if you change your default FONT, you will probably adjust FONT WEIGHT and LINE SPACING to more suitable values for this new font. Then probably you will want to apply these changes to all your opened books. With this feature you don’t need to change these values manually in all your opened books. You can easily apply these changes to your already opened books by choosing: ⇑ TOP MENU → ![](pictures/top_document.svg) → Reset document settings to default When you tap this option, your current book will reset to latest defaults you set. Don’t worry, this will only change the appearance of the book. Your reading position, highlights, notes and bookmarks will be preserved. Saving current book settings as defaults When you adjust a book to your liking, for example by changing line spacing, font contrast etc. you can save all the changes at once as defaults. Then you can apply these settings to other books with the Reset document settings to default option as explained above. You can save your changes as defaults by choosing: ⇑ TOP MENU → ![](pictures/top_document.svg) → Save document settings as default Avoiding opening links accidentally If your document has links and you are accidentally tapping them while turning the page or using other gestures, you can turn off Following links by tapping via this menu item: ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and Gestures → Links → Tap to follow links After disabling this setting, to follow a link you have to long-tap on it and select Follow link from the popup menu. If you have the opposite problem and you want to make tapping links easier, you can enable Allow larger tap area around links from the same menu. Optimizing your battery life Li-ion batteries experience more degradation at the extreme ends of their charge levels. To minimize this degradation and extend your battery life, you can limit your minimum discharge level to **20%** and maximum charge level to **80%** (as in electric vehicles and some newer phones). Which means you start charging your device when the battery goes down to 20% and unplug when it reaches 80% (or 25%-75% if you are extra cautious). KOReader can warn you by showing an alert when charge level reaches your defined limits: ⇑ TOP MENU → ![](pictures/gear.svg) → Device Status Alerts → Battery Level Keeping an eye on your memory usage In older Kindle devices some of our users reported crashes due to limited memory. KOReader memory usage can go up if you open many files in one session. Especially PDF’s increase this amount. You can add a memory indicator to your STATUS BAR and restart KOReader if this value gets high, to avoid crashes or reboots. ⇑ TOP MENU → ![](pictures/gear.svg) → Status Bar → KOReader memory usage Also you can configure KOReader to restart automatically if memory usage reaches a threshold via: ⇑ TOP MENU → ![](pictures/gear.svg) → Device → Device Status Alerts Checking your battery consumption details You can see your detailed battery usage statistics via this menu item: ⇑ TOP MENU → ![](pictures/top_tools.svg) → More Tools → Battery Statistics Checking detailed device statistics You can see your system information like **CPU/DISK SPACE/RAM** usage via this menu item: ⇑ TOP MENU → ![](pictures/top_hamburger.svg) → Help → System statistics Changing your book cover You can change your book cover from this menu: ⇑ TOP MENU → ![](pictures/top_hamburger.svg) → Book information → ![](pictures/top_hamburger.svg) → Set cover image Reading statistics after midnight In reading statistics you can change the start of day used for calculations. This is useful if you are reading after midnight for example and want your reading session counted as today instead of the next day. This applies only to the Day timeline view and optionally to the Calendar view; it does not apply to any of the other statistics reports. You can set this time at: ⇑ TOP MENU → ![](pictures/top_tools.svg) → Reading statistics → Settings → Daily timeline starts at... TROUBLESHOOTING If your book is slow KOReader is optimized to work fast even on the limited hardware of e-book readers. Generally thousand page books can be opened in seconds and page turning is immediate. Here we will talk about the reasons if your book feels very slow when opening, page turning or adjusting its appearance. **If the problematic book is a PDF:** * PDF file itself might be **too big for your device memory**. * PDF file **might contain very large image files**. Even in documents with a normal text layer (which you can select and highlight) there might be another image layer embedded (generally a scan of the page). This slows down the opening and page turning because these large images has to be rescaled to fit on your screen and this process can be CPU intensive. * PDF file might have **lots of individual elements** that needs precise positioning, like a magazine page with lots of images and text boxes. In this case KOReader has to calculate and draw all these elements which can take time. * Auto straighten feature (which allows you to adjust the tilt of the page) might also slow down your reader. * If you set your RENDER QUALITY to HIGH while REFLOW is **ON**, text will be more pleasing but it can be much slower (up to several seconds per page turn) than DEFAULT depending on your document. ⇓ BOTTOM MENU → ![](pictures/bottom_contrast.svg) → Render Quality **If the problematic book is an EPUB:** * EPUB files are basically composed of text and images with some rules to determine how these items are formatted on the screen. In ideal conditions, this is a fairly simple process so EPUB files are generally fast in KOReader. **But some EPUB books add a great number of formatting rules that KOReader has to do many calculations just to show even a single sentence.** This will slow down opening the book, turning the pages and changing the appearance properties like font weight or line spacing. INFO KOReader doesn't support **fixed layout EPUBs**. They will open, but will render as reflowable EPUBs and probably won't look nice or readable. * EPUB files are ZIP archives that contain HTML files. Some books can be a single HTML file while others may be composed of multiple HTML files like each chapter of the book is a separate HTML file. **If your book is only a single HTML file, partial rendering can not work.** So appearance changes will be slower than the divided chapter books, because for each change, KOReader still has to calculate the whole book instead of only the current chapter. * Another rare case of slowness is when the content is wrapped in a **HTML table tag**. KOReader has to render/draw each cell on each page turn, so if a cell (containing many paragraphs) spans 50 pages, this will make page turning quite slow. See below for the solution. **If everything is slow:** Reasons mentioned above is generally valid if only some of your books are slow. If all of your books are slow, your problem might be device related: * Very slow CPU or low RAM. * Your flash memory (where your books reside) might be degrading, which is generally due to the old age of the device. * You are running out of storage space. * If you are using an Android based device, your Android OS might be interfering with the operation of KOReader or some background processes might be using your system resources. **SOLUTIONS:** Unfortunately, for bad PDF files there are not many solutions. Generally best solution with problematic PDFs and EPUBs is trying to find a better version of it. Or if another file type is available for download, like EPUB instead of PDF (or reverse) you can try that format. Following solutions are for EPUB files and they might require advanced knowledge: * You can set Embedded Styles to **OFF** in the bottom menu to see if ignoring all the document stylesheets makes it faster (of course, you'll probably lose any nice formatting, but you'll know what is the culprit). * If you have HTML and CSS knowledge, you can inspect the HTML and the CSS files directly from KOReader and judge their quality or unnecessary complexity by yourself. To do this, you can long-press on some text and choose View HTML in the popup menu. * If you have the **“content wrapped in a table”** problem as mentioned above in the problems section, you can add this table, tr, td { display:block; } book-specific style tweak to: ⇑ TOP MENU → ![](pictures/top_document.svg) → Style tweaks → Book-specific tweak * Calibre’s e-book editor can check EPUB files for problems and has tools to fix some of the problems. You can download Calibre from here: [https://calibre-ebook.com/](https://calibre-ebook.com/) You can see the instructions for the **Check book tool** of Calibre here: [https://manual.calibre-ebook.com/edit.html#checking-the-book](https://manual.calibre-ebook.com/edit.html#checking-the-book) * EPUBCheck application can check the validity of the EPUB files and detect many types of errors. You can read an example issue, where the problem is detected with EPUBCheck [https://github.com/koreader/koreader/issues/11268](https://github.com/koreader/koreader/issues/11268) You can download the **command line version** from here: [https://github.com/w3c/epubcheck](https://github.com/w3c/epubcheck) Or download a **graphical user interface version** from here: [https://github.com/w3c/epubcheck/wiki/GUI](https://github.com/w3c/epubcheck/wiki/GUI) **Opening an issue:** If you are opening an issue about this problem, it is important for us to inspect the problematic file. You can share the file directly by dragging and dropping it on your GitHub message after compressing it as a ZIP file. If your book is an EPUB and you don’t want to share the file due to copyright or privacy issues, there is a plugin for Calibre named ScrambleEbook which you can access the download and instructions from this page: [https://www.mobileread.com/forums/showthread.php?t=267998](https://www.mobileread.com/forums/showthread.php?t=267998) This plugin will read an un-DRM'd ebook file (EPUB/KEPUB/AZW3) and create a copy of the book with **its text replaced with random characters**. You can share this scrambled version with us in your issue thread. **Text of the book will not be readable and there won’t be any copyright violation** but we can still use this file for diagnostic purposes. Here you can see this procedure in a real issue involving a very problematic EPUB file as an example: [https://github.com/koreader/koreader/issues/11465](https://github.com/koreader/koreader/issues/11465) My status bar disappeared Probably you tapped on the STATUS BAR touch zone at the bottom of the screen. You can bring it back by tapping the same zone. Sometimes my taps are registered as a long tap or double taps This can happen in cases like shaking hands or device touch screen problems. If you have this problem, you can try to increase the Tap interval. By increasing this interval, you tell KOReader to ignore quick taps at the same location. ⇑ TOP MENU → ![](pictures/gear.svg) → Taps and Gestures → Gesture intervals → Tap interval If your two consecutive taps are separated by a distance, this would not apply. So you can still quickly browse pages by tapping quickly alternatively with two fingers. KOReader can't write to the SD card In Android devices KOReader can’t write to the external storage due to Android system restrictions. If you want to change your screenshot saving location, be careful to choose your device’s internal storage. Ghosting and residue when turning pages Even if KOReader is set to **full refresh after every page**, you may still see some ghosting/residue after turning pages. This is a limitation of e-ink screen technology and can be observed on the latest generation devices, especially while reading mixed content (text+images) documents. As a workaround, you can refresh one more time manually after turning the page to get rid of these artifacts if they bother you (short diagonal swipe gesture by default). Sleep cover problems Sleep covers generally use a magnet embedded in the cover which enables wake up and sleep events via triggering a sensor in your device. In some cases like misaligned magnets, weak magnets etc. this triggering can be problematic. If you are having problems with waking up your device with your cover, you can disable this feature via this menu: ⇑ TOP MENU → ![](pictures/gear.svg) → Device → Ignore all sleep cover events Text indentation problems If you get miscentered titles, headings or separators, or unexpected text indentation, try switching the style for your document. epub.css to html5.css. This kind of problems happen because some publishers assume their books will only be read on **web browser engine based** readers, so they don't bother "resetting" the styles. ⇑ TOP MENU → ![](pictures/top_document.svg) → Style * Default HTML/EPUB (epub.css) is our book-oriented stylesheet, with **text-align: justify, text-indent on P**. It is better for unstyled books, and might make styled books more readable. * You can try switching to HTML5 (html5.css) if your book has indentation problems as mentioned above. This style provides a base stylesheet like web browsers do when rendering: **text-align: left, no text-indent on P, spacing between P**. But it doesn’t look pretty when publishers hasn’t done any styling. Cleaning your book cover cache database KOReader keeps a cache of your book covers to be able to show them quicker. In normal conditions this cache doesn’t get too big. If you remove lots of books or rename directories, you may want to clean up your book cover cache database to reclaim some space. You can do it from this menu: ⇑ TOP MENU (in File Browser) → ![](pictures/top_cabinet.svg) → Settings → Mosaic and detailed list settings → Book info cache management Clearing file cache When you are reading a **PDF/DJVU** document, KOReader keeps a cache of the last page you have read. So when you reopen the book, it will be faster. But this cache can grow big if you are using KOReader for a long time and reading many PDF/DJVU documents. These cache files are kept under your KOReader installation directory under the **cache folder**. To clear this cache and reclaim the space you can go to: ⇑ TOP MENU (in file browser) → ![](pictures/top_tools.svg) → More tools → Developer options → Clear caches WARNING Clear this cache **only if you really need this space**. If you have enough space, clearing the cache will not provide any benefit. Instead, it will degrade the performance because your reader will have to render those pages again. Backing up your KOReader settings In rare cases that you want to backup and restore your KOReader with all your settings, you can backup these folders and files under the KOReader installation directory. Then you can overwrite them after a clean installation to restore your settings: **Folders:** * settings * styletweaks **Files:** * data/cr3.ini * defaults.persistent.lua * history.lua * settings.reader.lua * Files under **data/dict/** and **/data/tessdata/** directories **(if they exist)** INFO Your individual book settings and highlights are kept in the same directory as your books in a folder with the **same name as your book**. You can backup these folders separately if you wish. HOW TO REACH US ABOUT PROBLEMS OR SUGGESTIONS KOReader uses GitHub as its project base. You can report problems or suggestions on our GitHub page. You just need a GitHub account which is free. Click this link to open our **Issues** page: [https://github.com/koreader/koreader/issues](https://github.com/koreader/koreader/issues) ![](pictures/github_main.jpg) On the **Issues** page click the **New Issue** button. But before doing that, we suggest using the search bar to see if there is already an existing issue about the same topic. You can also check other opened issues to have an idea about the process. When you click the **New Issue** button you will be presented with two options: ![](pictures/github_issue.png) Click the appropriate one and follow the instructions on the page to report your problem or suggestion. If you are reporting a bug, **verbose debug logs** are very helpful to determine the problem. You can enable them via: ⇑ TOP MENU → ![](pictures/top_hamburger.svg) → Help → Report a bug → Enable verbose logging You can also find the version number of your KOReader and your device type from the same dialog for reporting. If you have a suggestion or question related to this **User Guide** you can write to the discussion thread: [https://github.com/koreader/koreader/issues/11147](https://github.com/koreader/koreader/issues/11147) You can also . . . ![](pictures/logo_mobileread.png) Find other KOReader users on MobileRead forums: [https://www.mobileread.com/forums/forumdisplay.php?f=276](https://www.mobileread.com/forums/forumdisplay.php?f=276) * * * ![](pictures/logo_gitter.png) Reach us at Gitter chat: [https://gitter.im/koreader/koreader](https://gitter.im/koreader/koreader) * * * ![](pictures/logo_liberapay.gif) Support the project via Liberapay: [https://liberapay.com/KOReader](https://liberapay.com/KOReader) --- # Page not found · GitHub Pages 404 === **File not found** The site configured at this address does not contain the requested file. If this is your site, make sure that the filename case matches the URL as well as any file permissions. For root URLs (like `http://example.com/`) you must provide an `index.html` file. [Read the full documentation](https://help.github.com/pages/) for more information about using **GitHub Pages**. [GitHub Status](https://githubstatus.com) — [@githubstatus](https://twitter.com/githubstatus) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMTZCRDY3REIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMTZCRDY3RUIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdCQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjdDQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SM9MCAAAA+5JREFUeNrEV11Ik1EY3s4+ddOp29Q5b0opCgKFsoKoi5Kg6CIhuwi6zLJLoYLopq4qsKKgi4i6CYIoU/q5iDAKs6syoS76IRWtyJ+p7cdt7sf1PGOD+e0c3dygAx/67ZzzPM95/877GYdHRg3ZjMXFxepQKNS6sLCwJxqNNuFpiMfjVs4ZjUa/pmmjeD6VlJS8NpvNT4QQ7mxwjSsJiEQim/1+/9lgMHgIr5ohuxG1WCw9Vqv1clFR0dCqBODElV6v90ogEDjGdYbVjXhpaendioqK07CIR7ZAqE49PT09BPL2PMgTByQGsYiZlQD4uMXtdr+JxWINhgINYhGT2MsKgMrm2dnZXgRXhaHAg5jEJodUAHxux4LudHJE9RdEdA+i3Juz7bGHe4mhE9FNrgwBCLirMFV9Okh5eflFh8PR5nK5nDabrR2BNJlKO0T35+Li4n4+/J+/JQCxhmu5h3uJoXNHPbmWZAHMshWB8l5/ipqammaAf0zPDDx1ONV3vurdidqwAQL+pEc8sLcAe1CCvQ3YHxIW8Pl85xSWNC1hADDIv0rIE/o4J0k3kww4xSlwIhcq3EFFOm7KN/hUGOQkt0CFa5WpNJlMvxBEz/IVQAxg/ZRZl9wiHA63yDYieM7DnLP5CiAGsC7I5sgtYKJGWe2A8seFqgFJrJjEPY1Cn3pJ8/9W1e5VWsFDTEmFrBcoDhZJEQkXuhICMyKpjhahqN21hRYATKfUOlDmkygrR4o4C0VOLGJKrOITKB4jijzdXygBKixyC5TDQdnk/Pz8qRw6oOWGlsTKGOQW6OH6FBWsyePxdOXLTgxiyebILZCjz+GLgMIKnXNzc49YMlcRdHXcSwxFVgTInQhC9G33UhNoJLuqq6t345p9y3eUy8OTk5PjAHuI9uo4b07FBaOhsu0A4Unc+T1TU1Nj3KsSSE5yJ65jqF2DDd8QqWYmAZrIM2VlZTdnZmb6AbpdV9V6ec9znf5Q7HjYumdRE0JOp3MjitO4SFa+cZz8Umqe3TCbSLvdfkR/kWDdNQl5InuTcysOcpFT35ZrbBxx4p3JAHlZVVW1D/634VRt+FvLBgK/v5LV9WS+10xMTEwtRw7XvqOL+e2Q8V3AYIOIAXQ26/heWVnZCVfcyKHg2CBgTpmPmjYM8l24GyaUHyaIh7XwfR9ErE8qHoDfn2LTNAVC0HX6MFcBIP8Bi+6F6cdW/DICkANRfx99fEYFQ7Nph5i/uQiA214gno7K+guhaiKg9gC62+M8eR7XsBsYJ4ilam60Fb7r7uAj8wFyuwM1oIOWgfmDy6RXEEQzJMPe23DXrVS7rtyD3Df8z/FPgAEAzWU5Ku59ZAUAAAAASUVORK5CYII=)](/) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUM1QkUxRUI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUM1QkUxRkI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdGQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjgwQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hfPRaQAAB6lJREFUeNrsW2mME2UYbodtt+2222u35QheoCCYGBQligIJgkZJNPzgigoaTEj8AdFEMfADfyABkgWiiWcieK4S+QOiHAYUj2hMNKgYlEujpNttu9vttbvdw+chU1K6M535pt3ubHCSyezR+b73eb73+t7vrfXsufOW4bz6+vom9/b23ovnNNw34b5xYGAgODg46Mbt4mesVmsWd1qSpHhdXd2fuP/Afcput5/A88xwymcdBgLqenp6FuRyuWV4zu/v759QyWBjxoz5t76+/gun09mK5xFyakoCAPSaTCazNpvNPoYVbh6O1YKGRF0u13sNDQ27QMzfpiAAKj0lnU6/gBVfAZW2WWpwwVzy0IgP3G73FpjI6REhAGA9qVRqA1b9mVoBVyIC2tDi8Xg24+dUzQiAbS/s7Ox8G2o/3mKCC+Zw0efzPQEfcVjYrARX3dbV1bUtHo8fMgt42f+Mp0yUTVQbdWsAHVsikdiHkHaPxcQXQufXgUBgMRxme9U0AAxfH4vFvjM7eF6UkbJS5qoQwEQGA57Ac5JllFyUVZZ5ckUEgMVxsK2jlSYzI+QXJsiyjzNEAJyJAzb/KQa41jJKL8pODMQiTEAymXw5n8/P0IjD3bh7Rgog59aanxiIRTVvV/oj0tnHca/WMrVwODwB3raTGxzkBg/gnZVapFV62Wy2n5AO70HM/5wbJ0QnXyQSaVPDIuNZzY0V3ntHMwxiwHA0Gj2Np7ecIBDgaDAYXKCQJM1DhrgJ3nhulcPbl8j4NmHe46X/g60fwbz3aewjkqFQaAqebWU1AOqyQwt8Id6qEHMc97zu7u7FGGsn7HAiVuosVw7P35C1nccdgSCxop1dHeZswmfHMnxBo6ZTk+jN8dl/vF7vWofDsa+MLN9oEUBMxOb3+1eoEsBVw6Zmua49r8YmhAKDiEPcMwBsxMiqQ+ixzPFxZyqRpXARG/YOr1ObFJ0gUskXBbamcR1OKmMUvDxHRAu8/LmY3jFLMUpFqz9HxG65smYJdyKyECOxDiEAe/p1gjF2oonivZAsxVgl2daa4EQWCW6J55qFAFFZiJWYLxNQy2qOSUzGRsyXCUDIeliwAHEO4WSlWQBRFoZakXcKmCXmyXAKs0Ve9vl8q42WoIYpJU4hV3hKcNs8m9gl7p/xQ73eF5kB4j5mNrWmTJRNwAzqiV1CxjVTZCIkEq+Z1bZFZSN2CenmVAFVy4Plz8xKAGWjjAKFk6lCBMDR/MJjLLMSQNm43xAiQKTaA+9/wewhDjL+JVI1kkTSSOTcKbMTwPqESAot6dn6Fr1gHwVJju6IRuyiByPuUUBAg5DGkAgBmxlvdgIEK9gDkohdY/BJo4CAG0R8miRSsGABkgVQs4KXu098IgUXSSRsFAoKZiVAVDY2WUiiPTjYRi41KwGisrGsLtlsth8Fiwnz2fBkQvWfRtlE3iF2yW63/yCacXZ1dW02GwGyTFaRd4idJnCKHRaCxYRHoG5LTKT6SyiToP1fJHbmAYPYRR0UnZQtMnA6s0zg+GZBlt0Gdo7EPHgpE3Q6nZ8YyLhc8Xj8MJh/aKTAY+5FPAKHLE7RdwuYJZmNwzyCMkBCYyKROJBMJl9B/PXXCjjmCmDOVzH3fiPpObEWGqoKe4EBl8v1hlqsdLvd23mkxHM9pc9kMpmno9HoeTii7ewbHEZPPx1ztLS1tV3AnGuMjiNjvbQFuHw6zDo5By7dTPAQNBgMLrRarTkSls1mnwT7uwp9virx9QzbW/HuV/j5d/b+6jniKlllP8lkeONJDk+dq9GsQTnC4fB1heO0K47Hwe7WdDr9nAKgXwOBwHI+C45Htj1d6sd429TUNEcmUdc+PRaLHcvn87dXW4ugzdsaGxufL94NFv9zi1J7GVbhlvb2dnaJ3SVrxfc+n2+NTsZ7/H7/Mr3g5XdSIHyJSH1PZ+7fToyl2+ErqilgZ4NaLYB9goVGaHjR93Hv1ZrU4XDsFT20kH3PObzbWk0CgG1jacVIUnAQb9F+VexyLMzkpcLv0IJV7AHQIOCAUYHx7v5qgScmYHtTqSAyZLEJTK22Bie4iq3xsqpm4SAf9Hq9a2DnJ4uLK3SEULcdRvp3i3zHySqpficxEdsQc1NrlYXXvR+O7qASSezXB+h1SuUomgg9LL8BUoV4749EIolKh+EiqWmqVEZlDgHks2pxHw7xTqUQw9J5NcAXOK10AGIoZ6Zli6JY6Z1Q461KoZ4NiKLHarW+KDsxlDUPHZ5zPQZqUVDPJsTqb5n9malbpAh8C2XXDLl62+WZIDFRUlNVOiwencnNU3aQEkL+cDMSoLvZo2fQB7AJssNAuFuvorlDVVkkg2I87+jo2K2QAVphDrfyViK5VqtO34OkaxXCp+7drdDBCAdubm6eidX+2WwqT5komwh4YQLk+H4aE93h8Xg2gvHekQZOGSgLZTLyDTLJ4Lx9/KZWKBSainT4Iy3FqQBfnUZR42PKQFksBr9QKVXCPusD3OiA/RkQ5kP8qV/Jl1WywAp/6+dcmPM2zL1UrUahe4JqfnWWKXIul3uUbfP8njAFLW1OFr3gdFtZ72cNH+PtQT7/brW+NXqJAHh0y9V8/U/A1U7AfwIMAD7mS3pCbuWJAAAAAElFTkSuQmCC)](/) --- # Page not found · GitHub Pages 404 === **File not found** The site configured at this address does not contain the requested file. If this is your site, make sure that the filename case matches the URL as well as any file permissions. For root URLs (like `http://example.com/`) you must provide an `index.html` file. [Read the full documentation](https://help.github.com/pages/) for more information about using **GitHub Pages**. [GitHub Status](https://githubstatus.com) — [@githubstatus](https://twitter.com/githubstatus) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACAAAAAgCAYAAABzenr0AAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpFMTZCRDY3REIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpFMTZCRDY3RUIzRjAxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdCQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjdDQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+SM9MCAAAA+5JREFUeNrEV11Ik1EY3s4+ddOp29Q5b0opCgKFsoKoi5Kg6CIhuwi6zLJLoYLopq4qsKKgi4i6CYIoU/q5iDAKs6syoS76IRWtyJ+p7cdt7sf1PGOD+e0c3dygAx/67ZzzPM95/877GYdHRg3ZjMXFxepQKNS6sLCwJxqNNuFpiMfjVs4ZjUa/pmmjeD6VlJS8NpvNT4QQ7mxwjSsJiEQim/1+/9lgMHgIr5ohuxG1WCw9Vqv1clFR0dCqBODElV6v90ogEDjGdYbVjXhpaendioqK07CIR7ZAqE49PT09BPL2PMgTByQGsYiZlQD4uMXtdr+JxWINhgINYhGT2MsKgMrm2dnZXgRXhaHAg5jEJodUAHxux4LudHJE9RdEdA+i3Juz7bGHe4mhE9FNrgwBCLirMFV9Okh5eflFh8PR5nK5nDabrR2BNJlKO0T35+Li4n4+/J+/JQCxhmu5h3uJoXNHPbmWZAHMshWB8l5/ipqammaAf0zPDDx1ONV3vurdidqwAQL+pEc8sLcAe1CCvQ3YHxIW8Pl85xSWNC1hADDIv0rIE/o4J0k3kww4xSlwIhcq3EFFOm7KN/hUGOQkt0CFa5WpNJlMvxBEz/IVQAxg/ZRZl9wiHA63yDYieM7DnLP5CiAGsC7I5sgtYKJGWe2A8seFqgFJrJjEPY1Cn3pJ8/9W1e5VWsFDTEmFrBcoDhZJEQkXuhICMyKpjhahqN21hRYATKfUOlDmkygrR4o4C0VOLGJKrOITKB4jijzdXygBKixyC5TDQdnk/Pz8qRw6oOWGlsTKGOQW6OH6FBWsyePxdOXLTgxiyebILZCjz+GLgMIKnXNzc49YMlcRdHXcSwxFVgTInQhC9G33UhNoJLuqq6t345p9y3eUy8OTk5PjAHuI9uo4b07FBaOhsu0A4Unc+T1TU1Nj3KsSSE5yJ65jqF2DDd8QqWYmAZrIM2VlZTdnZmb6AbpdV9V6ec9znf5Q7HjYumdRE0JOp3MjitO4SFa+cZz8Umqe3TCbSLvdfkR/kWDdNQl5InuTcysOcpFT35ZrbBxx4p3JAHlZVVW1D/634VRt+FvLBgK/v5LV9WS+10xMTEwtRw7XvqOL+e2Q8V3AYIOIAXQ26/heWVnZCVfcyKHg2CBgTpmPmjYM8l24GyaUHyaIh7XwfR9ErE8qHoDfn2LTNAVC0HX6MFcBIP8Bi+6F6cdW/DICkANRfx99fEYFQ7Nph5i/uQiA214gno7K+guhaiKg9gC62+M8eR7XsBsYJ4ilam60Fb7r7uAj8wFyuwM1oIOWgfmDy6RXEEQzJMPe23DXrVS7rtyD3Df8z/FPgAEAzWU5Ku59ZAUAAAAASUVORK5CYII=)](/) [![](data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEAAAABACAYAAACqaXHeAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAAAyRpVFh0WE1MOmNvbS5hZG9iZS54bXAAAAAAADw/eHBhY2tldCBiZWdpbj0i77u/IiBpZD0iVzVNME1wQ2VoaUh6cmVTek5UY3prYzlkIj8+IDx4OnhtcG1ldGEgeG1sbnM6eD0iYWRvYmU6bnM6bWV0YS8iIHg6eG1wdGs9IkFkb2JlIFhNUCBDb3JlIDUuMy1jMDExIDY2LjE0NTY2MSwgMjAxMi8wMi8wNi0xNDo1NjoyNyAgICAgICAgIj4gPHJkZjpSREYgeG1sbnM6cmRmPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5LzAyLzIyLXJkZi1zeW50YXgtbnMjIj4gPHJkZjpEZXNjcmlwdGlvbiByZGY6YWJvdXQ9IiIgeG1sbnM6eG1wPSJodHRwOi8vbnMuYWRvYmUuY29tL3hhcC8xLjAvIiB4bWxuczp4bXBNTT0iaHR0cDovL25zLmFkb2JlLmNvbS94YXAvMS4wL21tLyIgeG1sbnM6c3RSZWY9Imh0dHA6Ly9ucy5hZG9iZS5jb20veGFwLzEuMC9zVHlwZS9SZXNvdXJjZVJlZiMiIHhtcDpDcmVhdG9yVG9vbD0iQWRvYmUgUGhvdG9zaG9wIENTNiAoTWFjaW50b3NoKSIgeG1wTU06SW5zdGFuY2VJRD0ieG1wLmlpZDpEQUM1QkUxRUI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiIgeG1wTU06RG9jdW1lbnRJRD0ieG1wLmRpZDpEQUM1QkUxRkI0MUMxMUUyQUQzREIxQzRENUFFNUM5NiI+IDx4bXBNTTpEZXJpdmVkRnJvbSBzdFJlZjppbnN0YW5jZUlEPSJ4bXAuaWlkOkUxNkJENjdGQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2IiBzdFJlZjpkb2N1bWVudElEPSJ4bXAuZGlkOkUxNkJENjgwQjNGMDExRTJBRDNEQjFDNEQ1QUU1Qzk2Ii8+IDwvcmRmOkRlc2NyaXB0aW9uPiA8L3JkZjpSREY+IDwveDp4bXBtZXRhPiA8P3hwYWNrZXQgZW5kPSJyIj8+hfPRaQAAB6lJREFUeNrsW2mME2UYbodtt+2222u35QheoCCYGBQligIJgkZJNPzgigoaTEj8AdFEMfADfyABkgWiiWcieK4S+QOiHAYUj2hMNKgYlEujpNttu9vttbvdw+chU1K6M535pt3ubHCSyezR+b73eb73+t7vrfXsufOW4bz6+vom9/b23ovnNNw34b5xYGAgODg46Mbt4mesVmsWd1qSpHhdXd2fuP/Afcput5/A88xwymcdBgLqenp6FuRyuWV4zu/v759QyWBjxoz5t76+/gun09mK5xFyakoCAPSaTCazNpvNPoYVbh6O1YKGRF0u13sNDQ27QMzfpiAAKj0lnU6/gBVfAZW2WWpwwVzy0IgP3G73FpjI6REhAGA9qVRqA1b9mVoBVyIC2tDi8Xg24+dUzQiAbS/s7Ox8G2o/3mKCC+Zw0efzPQEfcVjYrARX3dbV1bUtHo8fMgt42f+Mp0yUTVQbdWsAHVsikdiHkHaPxcQXQufXgUBgMRxme9U0AAxfH4vFvjM7eF6UkbJS5qoQwEQGA57Ac5JllFyUVZZ5ckUEgMVxsK2jlSYzI+QXJsiyjzNEAJyJAzb/KQa41jJKL8pODMQiTEAymXw5n8/P0IjD3bh7Rgog59aanxiIRTVvV/oj0tnHca/WMrVwODwB3raTGxzkBg/gnZVapFV62Wy2n5AO70HM/5wbJ0QnXyQSaVPDIuNZzY0V3ntHMwxiwHA0Gj2Np7ecIBDgaDAYXKCQJM1DhrgJ3nhulcPbl8j4NmHe46X/g60fwbz3aewjkqFQaAqebWU1AOqyQwt8Id6qEHMc97zu7u7FGGsn7HAiVuosVw7P35C1nccdgSCxop1dHeZswmfHMnxBo6ZTk+jN8dl/vF7vWofDsa+MLN9oEUBMxOb3+1eoEsBVw6Zmua49r8YmhAKDiEPcMwBsxMiqQ+ixzPFxZyqRpXARG/YOr1ObFJ0gUskXBbamcR1OKmMUvDxHRAu8/LmY3jFLMUpFqz9HxG65smYJdyKyECOxDiEAe/p1gjF2oonivZAsxVgl2daa4EQWCW6J55qFAFFZiJWYLxNQy2qOSUzGRsyXCUDIeliwAHEO4WSlWQBRFoZakXcKmCXmyXAKs0Ve9vl8q42WoIYpJU4hV3hKcNs8m9gl7p/xQ73eF5kB4j5mNrWmTJRNwAzqiV1CxjVTZCIkEq+Z1bZFZSN2CenmVAFVy4Plz8xKAGWjjAKFk6lCBMDR/MJjLLMSQNm43xAiQKTaA+9/wewhDjL+JVI1kkTSSOTcKbMTwPqESAot6dn6Fr1gHwVJju6IRuyiByPuUUBAg5DGkAgBmxlvdgIEK9gDkohdY/BJo4CAG0R8miRSsGABkgVQs4KXu098IgUXSSRsFAoKZiVAVDY2WUiiPTjYRi41KwGisrGsLtlsth8Fiwnz2fBkQvWfRtlE3iF2yW63/yCacXZ1dW02GwGyTFaRd4idJnCKHRaCxYRHoG5LTKT6SyiToP1fJHbmAYPYRR0UnZQtMnA6s0zg+GZBlt0Gdo7EPHgpE3Q6nZ8YyLhc8Xj8MJh/aKTAY+5FPAKHLE7RdwuYJZmNwzyCMkBCYyKROJBMJl9B/PXXCjjmCmDOVzH3fiPpObEWGqoKe4EBl8v1hlqsdLvd23mkxHM9pc9kMpmno9HoeTii7ewbHEZPPx1ztLS1tV3AnGuMjiNjvbQFuHw6zDo5By7dTPAQNBgMLrRarTkSls1mnwT7uwp9virx9QzbW/HuV/j5d/b+6jniKlllP8lkeONJDk+dq9GsQTnC4fB1heO0K47Hwe7WdDr9nAKgXwOBwHI+C45Htj1d6sd429TUNEcmUdc+PRaLHcvn87dXW4ugzdsaGxufL94NFv9zi1J7GVbhlvb2dnaJ3SVrxfc+n2+NTsZ7/H7/Mr3g5XdSIHyJSH1PZ+7fToyl2+ErqilgZ4NaLYB9goVGaHjR93Hv1ZrU4XDsFT20kH3PObzbWk0CgG1jacVIUnAQb9F+VexyLMzkpcLv0IJV7AHQIOCAUYHx7v5qgScmYHtTqSAyZLEJTK22Bie4iq3xsqpm4SAf9Hq9a2DnJ4uLK3SEULcdRvp3i3zHySqpficxEdsQc1NrlYXXvR+O7qASSezXB+h1SuUomgg9LL8BUoV4749EIolKh+EiqWmqVEZlDgHks2pxHw7xTqUQw9J5NcAXOK10AGIoZ6Zli6JY6Z1Q461KoZ4NiKLHarW+KDsxlDUPHZ5zPQZqUVDPJsTqb5n9malbpAh8C2XXDLl62+WZIDFRUlNVOiwencnNU3aQEkL+cDMSoLvZo2fQB7AJssNAuFuvorlDVVkkg2I87+jo2K2QAVphDrfyViK5VqtO34OkaxXCp+7drdDBCAdubm6eidX+2WwqT5komwh4YQLk+H4aE93h8Xg2gvHekQZOGSgLZTLyDTLJ4Lx9/KZWKBSainT4Iy3FqQBfnUZR42PKQFksBr9QKVXCPusD3OiA/RkQ5kP8qV/Jl1WywAp/6+dcmPM2zL1UrUahe4JqfnWWKXIul3uUbfP8njAFLW1OFr3gdFtZ72cNH+PtQT7/brW+NXqJAHh0y9V8/U/A1U7AfwIMAD7mS3pCbuWJAAAAAElFTkSuQmCC)](/) ---