Skip to content

MathieuDvv/Nboard

Repository files navigation

Nboard

Version Android License

Nboard logo

Minimal Android keyboard with AI tools, clipboard power features, emoji search, and fast typing UX.

Download APK · Download Latest Release · Build Locally · Features · Contributing

About

Built for Nothing Phone users who wanted a keyboard matching their device's minimal aesthetic — works great on any Android phone.

Project Status

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.

Screenshots

Keyboard AI tools
Keyboard AI tools
Clipboard Emoji
Clipboard Emoji keyboard

Features

  • 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

Beta Features

  • Swipe Typing (experimental)
  • Voice recognition (hold send) (experimental)
  • Word prediction (experimental)

These features are currently in beta and may have occasional issues.

Layout Pack Import (XML)

Nboard now supports importing custom keyboard layout packs from a local XML file in settings:

  • Open SettingsLayout 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: classic or gboard
  • qwertyLike: true or false (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).

How Autocorrect and Prediction Work

Autocorrect (local, on-device)

  • 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.

Word prediction (local, on-device)

  • 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.

Language Support and APK Size

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.txt
  • app/src/main/assets/dictionaries/french_50k.txt
  • app/src/main/assets/dictionaries/english_bigrams.txt
  • app/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).

Support Development

If you want to support Nboard development:

ko-fi

Install APK (GitHub Releases)

  1. Open Releases.
  2. Download the latest assets (.apk + source .zip).
  3. Install on device:
adb install -r path/to/NBoard-v1.4.1-release.apk
  1. On Android, enable Nboard in keyboard settings.
  2. Select Nboard as your current keyboard.

Minimum Android version: Android 8.0 (API 26).

Build Locally

Requirements

  • Android Studio or Android SDK + JDK 17
  • adb available in PATH
  • Android 8.0+ target device/emulator (API 26+)

Build

./gradlew assembleDebug

APK output:

app/build/outputs/apk/debug/app-debug.apk

Install debug APK:

adb install -r app/build/outputs/apk/debug/app-debug.apk

Project Structure

  • app/src/main/java/com/nboard/ime/NboardImeService.kt — IME lifecycle + composition root
  • app/src/main/java/com/nboard/ime/NboardImeTextInput.kt — key commit/delete pipeline, shift logic, smart typing integration
  • app/src/main/java/com/nboard/ime/NboardImeAutoCorrection.kt — dictionary/variant correction flow
  • app/src/main/java/com/nboard/ime/NboardImeEmojiPrediction.kt — emoji + prediction row rendering
  • app/src/main/java/com/nboard/ime/NboardImeBottomModes.kt — bottom mode state and UI transitions
  • app/src/main/java/com/nboard/ime/NboardImeVoice.kt — voice capture and transcript commit flow
  • app/src/main/java/com/nboard/ime/NboardImeClipboard.kt — clipboard UI/history interactions
  • app/src/main/java/com/nboard/ime/AutoCorrect.kt and app/src/main/java/com/nboard/ime/BigramPredictor.kt — local typing intelligence engines
  • app/src/main/java/com/nboard/ime/MainActivity.kt — settings app
  • app/src/main/java/com/nboard/ime/OnboardingActivity.kt — onboarding flow

Developer Guide

Architecture and contributor onboarding are documented in DEVELOPER_GUIDE.md.

AI Key Setup (Optional)

If you want AI features locally:

  1. Copy local.properties.example to local.properties
  2. Add your Gemini key:
GEMINI_API_KEY=YOUR_API_KEY_HERE

You can also set/update the key directly from the app settings.

Privacy & Security

  • 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.

Future updates (Not planned yet)

  • Password autofill (AutofillManager integration)
  • GIF search

Contributing & Feedback

  • 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.

Troubleshooting

  • 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

Notes

  • 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.

License

Licensed under AGPL-3.0 — see LICENSE.

Free for personal use. For commercial licensing inquiries, contact: mathieu.davinha83@gmail.com.

About

Nothing inspired keyboard for android

Resources

License

Contributing

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages