Kwiq Keyboard IME
A complete virtual keyboard with offline suggestions in 3 languages, local dictionary, Mustache templates, Markdown tools, emoji, WASD arrows and anonymous mode.
1 Activation
To use Kwiq's keyboard as your default input method:
- Open Android Settings > System > Keyboard > Virtual Keyboard.
- Enable "Kwiq Keyboard" in the list of available keyboards.
- Select "Kwiq Keyboard" as the default input method.
Alternatively, in Kwiq Settings, go to "Keyboard" and tap "Enable Keyboard". This opens the Android keyboard settings directly.
2 Supported Languages
The keyboard supports 3 languages with complete offline dictionaries:
Portuguese (PT)
Locale pt_BR. QWERTY layout with accents and ç. Dictionary with Brazilian Portuguese words.
English (EN)
Locale en_US. Standard American QWERTY layout. Dictionary with English words.
Spanish (ES)
Locale es_ES. QWERTY layout with ñ. Dictionary with Spanish words.
Switching language: tap the language button on the spacebar to quickly cycle through PT, EN, and ES. The cycle order is PT → EN → ES → PT.
The language can also be changed via the system's InputMethodSubtype, if configured.
3 Offline Dictionary
Kwiq has a complete offline dictionary system, built on Room Database:
- BundledDictionaryStore: dictionaries bundled in the app assets, loaded into a
DictionaryTriestructure (a trie for efficient prefix lookups). - KeyboardDictionaryDatabase: a Room database with
words,bigrams(word pairs), andlearning_historytables. - DictionaryTextNormalizer: strips accents and normalizes text for consistent lookups.
- DictionaryLocaleMapper: normalizes locale tags (pt_BR, pt-PT, en_US, es_ES).
The dictionary learns new words you type and suggests based on your local usage history — all on the device, without sending data to any server.
Dictionary Management
Kwiq offers broadcasts to manage the dictionary programmatically:
ActionClearLearning— clears the entire learning history.ActionAddWord— adds a word to the dictionary.ActionRemoveWord— removes a word from the dictionary.
4 Suggestions and Autocorrect
The suggestion engine (KeyboardSuggestionEngine) offers:
- Bigram matches: suggests the next word based on the history of word pairs (e.g., after "good", it suggests "morning").
- Prefix matches: dictionary words that start with what you have typed.
- Fuzzy correction: uses Levenshtein distance to correct words with 3+ characters that are not in the dictionary.
- Autocorrect: automatically corrects words not found in the dictionary (can be disabled in settings).
- Smart rejection: undoing an autocorrection with backspace prevents that same correction from being applied again, even if you press space right after. The keyboard respects your choice.
Suggestions appear in a bar above the keyboard. Tap a suggestion to accept it.
5 Layouts and Pages
The keyboard has 18 pages of keys, organized into categories:
| Page | Content |
|---|---|
| Letters | Alphabet letters in QWERTY layout + number row. PT has ç, ES has ñ. |
| Numbers | Digits, common symbols, parentheses, operators. |
| Math | Mathematical symbols: ±, ×, ÷, √, ∞, etc. |
| Currency | Currencies: $, €, £, ¥, ¢, R$, etc. |
| Arrows | Arrows: ←, ↑, →, ↓, ↔, ⇐, ⇒, etc. |
| Shapes | Geometric shapes: diamonds, circles, squares, stars. |
| Cards | Card suits: spades, hearts, diamonds, clubs. |
| Greek | Greek alphabet: α, β, γ, Δ, etc. |
| Technical | Technical symbols: ©, ®, ™, §, ¶, etc. |
| Smileys | Emoticons and smileys: ∼), :D, ;), etc. |
| People | People emoji with skin tone support. |
| Nature | Animals, plants, natural phenomena. |
| Food | Food and drinks. |
| Travel | Transport, places, flags. |
| Activities | Sports, activities, objects. |
| Objects | Miscellaneous objects, tools, technology. |
| Hearts | Hearts and affection symbols. |
| Flags | Country flags. |
The keyboard automatically adapts to the field type: text, number, decimal, or phone (ImeKeyboardKind).
6 Key Variants (Long-Press)
Every key has variants accessible with a long press. For example:
The long-press response time can be adjusted in the keyboard settings (short, medium, long).
Hand and people emoji also have variants with skin tones.
7 Emoji
The keyboard has 9 emoji pages with full categories: Smileys, People, Nature, Food, Travel, Activities, Objects, Hearts, and Flags.
- Each page can be accessed from the page selector next to the spacebar. Swipe horizontally between them or tap the category icons.
- Emoji are inserted directly into the text field as Unicode characters.
8 Markdown Tools
A Markdown toolbar is available above the keyboard (configurable) to make text formatting easier:
Wrap
Selects the typed text and wraps it in formatting:
Prefix
Inserts formatting prefixes at the start of the line:
Link
Opens a dialog to insert a formatted link: [text](url).
The Markdown toolbar can be turned on or off in the keyboard settings.
9 Arrows, WASD and Analog
The keyboard offers 3 modes of arrow-key navigation:
Above Keyboard
Directional arrows (← ↑ ↓ →) appear ABOVE the keyboard. Great for text editing.
Below Keyboard
Directional arrows appear BELOW the keyboard, near the spacebar.
Hidden
Arrows are hidden. Use gestures or shortcuts for navigation.
WASD Mode
When enabled, the W, A, S, D keys act as directional arrows. This is especially useful for:
- Text-based games or Termux.
- Navigation in text editors.
- Use with a physical keyboard in Desktop mode.
Analog Stick
Support for an analog joystick for navigation. When a controller with an analog stick is connected, you can use it to navigate text or the interface.
10 Mustache Templates
Kwiq has a Mustache template system for quickly pasting text with customizable fields.
What are they?
Mustache templates are texts with placeholders in the format {{ field_name }}. When you paste a template, the keyboard shows a form to fill in the fields before inserting the final text.
Example
Template:
When pasted, the keyboard shows fields to fill in: Name, Subject, Deadline. After filling them in, the text is rendered with the substituted values.
How to create templates
- Create a Markdown note in Kwiq's File Manager with the desired text and
{{ field }}placeholders. - Pin the note to the home screen (it will appear as a card).
- In the keyboard, the note will appear in the list of available templates (accessible from the note icon in the toolbar).
Paste actions
- Cancel: discards the template.
- Paste Normal: pastes the text with placeholders replaced by the filled-in values.
- Paste Special: pastes the text with custom rendering (when applicable).
11 Anonymous Mode
Anonymous mode (private mode) is a privacy option that, when enabled:
- Does not learn newly typed words.
- Does not send typing data anywhere (the keyboard already does not send it, but anonymous mode also disables local learning).
- Does not suggest words based on your recent history.
- Visual indicator: the keyboard interface changes slightly to show anonymous mode is active.
To turn it on or off, go to Kwiq Settings > Keyboard > "Anonymous Mode".
12 Customization
The keyboard offers several customization options:
Vibration (Haptic)
Tactile feedback on every key. Can be turned on or off. Uses Android's HapticFeedbackConstants.
Key Color
Tints the keys with a custom color. The keyTintEnabled option turns the effect on or off.
Long-Press Timing
Adjust how long a press needs to be held to trigger key variants: Short, Medium, or Long.
Toolbars
Turn the Markdown toolbar and the arrow bar on or off independently.
All options are available in: Kwiq Settings > Keyboard.
13 AI Assistant Integration
Kwiq's keyboard integrates with AI assistants to offer advanced contextual suggestions:
- Supported assistants: ChatGPT, Google Gemini, GitHub Copilot.
- How it works: when an AI assistant is available on the device, the keyboard can send the typed text for contextual suggestions.
- Integration: via
KwiqAssistantContract, which usesIntent.ACTION_ASSISTto open the configured assistant.
To set it up, go to Kwiq Settings > "Assistant" and choose which AI app to use.
14 Tips and Shortcuts
Smart Space
The keyboard automatically inserts a space after punctuation (when configured).
Caps Lock
Long-press Shift to enable Caps Lock. Press again to disable it.
Note Templates
Markdown notes pinned to Home can be used as paste templates in the keyboard. Create notes with {{ field }} for Mustache templates.
Note Folders
Pinned notes are managed by the File Manager. Create, edit, and delete notes there — they show up automatically in the keyboard.