Minimal Android keyboard with AI tools, clipboard power features, emoji search, and fast typing UX.
Download APK · Download Latest Release · Build Locally · Features · Contributing
Built for Nothing Phone users who wanted a keyboard matching their device's minimal aesthetic — works great on any Android phone.
Nboard is feature-complete and in maintenance mode after v1.4.1.
I built this keyboard to solve my own problem: wanting a Nothing-inspired keyboard with AI tools. It works great, and I use it daily.
I'll fix critical bugs, but I'm not committing to major new features. The project does what it's meant to do.
If you want additional features, fork it! It's open source (AGPL-3.0) for exactly this reason.
| Keyboard | AI tools |
|---|---|
![]() |
![]() |
| Clipboard | Emoji |
|---|---|
![]() |
![]() |
- AZERTY and QWERTY layouts with classic and Gboard variants
- Smart shift behavior (auto-capitalize, one-shot shift, caps lock)
- Smart typing assists (auto-space after sentence punctuation, auto-capitalize after punctuation, return to letters after
number + space) - Local autocorrect + prediction (French / English / Both / Disabled) with dictionary + n-gram scoring and on-device learning
- Long-press variants for letters and punctuation (
!,?,;, accents) - Gboard punctuation row improvements (
',','.', and') with adaptive left punctuation key (/in URL fields,@in email fields) - Optional number row toggle in settings
- Spacebar cursor swipe
- Haptics and press animations
- Clipboard history with pin/delete + recent chip for text/images
- Emoji browser + search mode
- AI tools (Summarize, Fix Grammar, Expand, free prompt with selected-text context support, language preserved by default)
- Contextual action icon based on input field type
- Theme options:
System,Light,Dark,AMOLED Black - Font options:
Inter/Roboto - Configurable side mode keys (AI / Clipboard / Emoji) on classic layouts
- Gboard tool key behavior with press-and-hold quick access for AI / Clipboard / Emoji
- Swipe Typing (experimental)
- Voice recognition (hold send) (experimental)
- Word prediction (experimental)
These features are currently in beta and may have occasional issues.
Nboard now supports importing custom keyboard layout packs from a local XML file in settings:
- Open
Settings→Layout packs - Tap
Import file - Select an XML file from storage
Expected XML shape:
<layout-pack id="community.qwerty.classic" name="Community QWERTY" bottomStyle="classic" qwertyLike="true">
<row1>q w e r t y u i o p</row1>
<row2>a s d f g h j k l</row2>
<row3>z x c v b n m , '</row3>
<variants>
<key value="a">á à â ä</key>
<key value="e">é è ê ë</key>
<key value="'">’ ` ´</key>
</variants>
</layout-pack>bottomStyle:classicorgboardqwertyLike:trueorfalse(controls row shaping behavior)variants(optional): custom long-press options per key- Variant format:
<key value="base">option1 option2 ...</key>
Reference file: [Community Layouts/layout_template.xml](Community Layouts/layout_template.xml)
In the Community Layouts/ folder, you will also find layouts contributed by the community (e.g., Arabic, German), as well as AI-generated layouts provided as examples (e.g., Hindi Inscript, Pinyin QWERTY).
- Nboard loads French and English frequency dictionaries from local assets.
- When a typed word is unknown, it generates close candidates (1 edit away): deletion, swap, replacement, insertion.
- It ranks candidates by frequency first, then keeps the closest/shortest match.
- In bilingual mode, the previous word gives a lightweight language hint (French or English) to prioritize suggestions.
- A trie + in-memory cache are used to keep lookup speed fast while typing.
- Nboard uses unigram frequencies (single-word popularity) and bigram frequencies (next-word pairs).
- If there is a previous word, bigram candidates are preferred.
- If there is no strong previous-word match, it falls back to top unigram matches.
- In bilingual mode, French and English candidates are merged with simple frequency-based ranking.
- The prediction bar returns up to 3 suggestions.
Nboard currently focuses on French and English.
- French is first-class because I am French, the app is used by French users, and it supports AZERTY workflows.
- English is included because it is the most widely used language and improves everyday compatibility.
The app is bigger now mainly because of new local dictionary assets used by autocorrect and prediction:
app/src/main/assets/dictionaries/english_50k.txtapp/src/main/assets/dictionaries/french_50k.txtapp/src/main/assets/dictionaries/english_bigrams.txtapp/src/main/assets/dictionaries/french_bigrams.txt
These files increase APK size, but they keep correction/prediction fast and on-device (no network call required for core typing intelligence).
If you want to support Nboard development:
- Open Releases.
- Download the latest assets (
.apk+ source.zip). - Install on device:
adb install -r path/to/NBoard-v1.4.1-release.apk- On Android, enable Nboard in keyboard settings.
- Select Nboard as your current keyboard.
Minimum Android version: Android 8.0 (API 26).
- Android Studio or Android SDK + JDK 17
adbavailable in PATH- Android 8.0+ target device/emulator (API 26+)
./gradlew assembleDebugAPK output:
app/build/outputs/apk/debug/app-debug.apk
Install debug APK:
adb install -r app/build/outputs/apk/debug/app-debug.apkapp/src/main/java/com/nboard/ime/NboardImeService.kt— IME lifecycle + composition rootapp/src/main/java/com/nboard/ime/NboardImeTextInput.kt— key commit/delete pipeline, shift logic, smart typing integrationapp/src/main/java/com/nboard/ime/NboardImeAutoCorrection.kt— dictionary/variant correction flowapp/src/main/java/com/nboard/ime/NboardImeEmojiPrediction.kt— emoji + prediction row renderingapp/src/main/java/com/nboard/ime/NboardImeBottomModes.kt— bottom mode state and UI transitionsapp/src/main/java/com/nboard/ime/NboardImeVoice.kt— voice capture and transcript commit flowapp/src/main/java/com/nboard/ime/NboardImeClipboard.kt— clipboard UI/history interactionsapp/src/main/java/com/nboard/ime/AutoCorrect.ktandapp/src/main/java/com/nboard/ime/BigramPredictor.kt— local typing intelligence enginesapp/src/main/java/com/nboard/ime/MainActivity.kt— settings appapp/src/main/java/com/nboard/ime/OnboardingActivity.kt— onboarding flow
Architecture and contributor onboarding are documented in DEVELOPER_GUIDE.md.
If you want AI features locally:
- Copy
local.properties.exampletolocal.properties - Add your Gemini key:
GEMINI_API_KEY=YOUR_API_KEY_HEREYou can also set/update the key directly from the app settings.
- AI features require internet access and send prompt text to the Gemini API.
- Clipboard history is stored locally on device.
- No telemetry or usage tracking is implemented.
- Nboard is open source, so behavior is fully auditable.
- Password autofill (AutofillManager integration)
- GIF search
- Contribution guidelines:
CONTRIBUTING.md - For bug fixes and feature PRs, read the scope and acceptance rules before starting work.
- Bug reports: GitHub Issues
- Feedback from real typing usage is very useful and helps prioritize improvements.
- Keyboard doesn't appear
- Open Android settings.
- Go to keyboard/input method settings.
- Enable Nboard and set it as active keyboard.
- Re-open the target app input field.
- AI features not working
- Confirm internet connection is available.
- Verify Gemini API key is set correctly.
- Check Gemini API quota/billing limits.
- Swipe typing not working
- Swipe Typing is still beta.
- Make sure it is enabled in settings.
- Update to the latest release and retry.
- App crashes
- Please report with steps and device info in GitHub Issues.
- Behavior depends on host app editor support.
- Image paste support depends on target input accepting rich content.
- Design is heavily inspired by Nothing and its aesthetic.
Licensed under AGPL-3.0 — see LICENSE.
Free for personal use. For commercial licensing inquiries, contact: mathieu.davinha83@gmail.com.




