Open-source project
Julow/Unexpected-Keyboard avatar
Julow/Unexpected-Keyboard

Unexpected Keyboard: a swipe-corner Android keyboard for people who type symbols

A lightweight keyboard for Android

3,275 stars384 forksJavaGPL-3.0

At a glance

What is it?
Unexpected Keyboard is a GPL-3.0 Android input method built around corner swipes instead of symbol layers. It installs from F-Droid or Google Play, and its layout is defined in text files you can edit yourself.
Who is it for?
Adopt it if you type punctuation, brackets or shell syntax on Android and want an input method that does not send keystrokes anywhere; the README states the app contains no ads and is open source. Skip it if you depend on glide typing or autocorrect as your primary input method, since the README presents swiping as a way to reach corner symbols, not as word gesture typing.
Can I use it commercially?
Yes, with conditions. GPL-3.0 is a copyleft licence: if you distribute software that includes it, you must release that software's source code under the same licence. Running it internally without distributing it does not trigger that obligation.
Is it still maintained?
Yes. The repository last received commits 2 days ago.
What is it written in?
Mainly Java, according to GitHub's language statistics.

Answers come from the project's GitHub data, last synced on September 30, 2026, and from our analysis. They are not legal advice.

Editorial analysis

The problem Unexpected Keyboard solves for Android typists

Most Android keyboards dedicate a layer to symbols. You tap a key to switch to numbers and punctuation, tap again to get back, and repeat that for every bracket or pipe you need. Unexpected Keyboard removes the layer switch: the README states the main feature is that you can type more characters by swiping the keys towards the corners. Each key carries its normal character in the centre and additional symbols in its corners, and you reach them by sliding your finger in that direction. The README gives the Settings as the worked example: slide in the left down corner of a key to open them. The project was originally designed for programmers using Termux, which explains the bias toward brackets, slashes, pipes and other characters that a chat keyboard treats as an afterthought. The README also says it is now suitable for everyday use, so the target is not only terminal users. It is for anyone whose typing is closer to code or markup than to prose, and who is willing to trade a familiar layout for fewer taps.

How the corner-swipe mechanism and layout files work

The keyboard is a normal Android input method, so it runs wherever the system asks for text input, and it holds no network surface that the README describes. The part that matters architecturally is where the key definitions live. The repository keeps a res/ directory alongside srcs/, and the top level also carries check_layout.py and gen_layouts.py, which tells you layouts are generated and validated from data rather than hand-drawn in a visual editor. The presence of check_layout.output at the repository root suggests the check script writes a report, presumably flagging malformed or duplicate entries. Because layouts are data, adding a symbol to a corner is an edit to a layout definition and a rebuild, not a change to input logic. The README points contributors at CONTRIBUTING.md for build instructions, and it directs translators to Weblate rather than to files in the repository, so translations are managed outside the normal pull request flow. The spell checking feature was funded by the NLnet foundation, per the acknowledgement section. That is the extent of what the README states about internals; it does not document the gesture recognition thresholds or how the swipe direction is classified.

Installing Unexpected Keyboard and typing your first bracket

The README gives two distribution channels, F-Droid and Google Play, and shows the standard store badges for both. There is no APK download link in the README itself, so the store listing is the install path. The package name on F-Droid is juloo.keyboard2, and the Google Play listing uses the same identifier.

bash
# Package identifier as listed in the README badges:
# F-Droid:      juloo.keyboard2
# Google Play:  juloo.keyboard2

After installing, Android requires you to enable the keyboard before it can be selected. The README does not spell out the settings path, so use the system's own input method settings screen, then switch to Unexpected Keyboard from the keyboard picker. Once it is active, the first real use is a corner swipe. Open any text field and slide your finger from a key toward one of its corners rather than tapping it. The README's example is the Settings, reached by sliding in the left down corner of a key, so the gesture doubles as a shortcut into the app's own configuration.

bash
# Repository layout, if you want to build from source instead:
#   build.gradle.kts      Gradle build definition
#   gradlew               wrapper script
#   CONTRIBUTING.md       build instructions, referenced by the README
#   res/                  layout and resource files
#   srcs/                 Java sources (primary language: Java)

The README does not provide the Gradle command itself; it defers to CONTRIBUTING.md, so read that file before attempting a build. The repository also contains a shell.nix and a release.Dockerfile, which indicate the maintainers keep a reproducible environment for releases, though the README does not explain either.

Where the swipe model gets in your way

A corner-swipe keyboard asks for a deliberate directional gesture on every symbol. That is a good trade when the alternative is a layer switch, and a poor one when you are typing quickly and imprecisely. The README presents swiping as the mechanism for reaching corner symbols; it does not describe glide typing over whole words, and it does not describe autocorrect as a headline feature. The spell checking work funded by NLnet is acknowledged, but the README does not document how it behaves or how it is enabled. If your typing is mostly prose and you rely on gesture typing or aggressive autocorrection, this is the wrong tool, and the README does not claim otherwise. There is a second cost: the project is Android only. The repository is an Android application with an AndroidManifest.xml and a Gradle build, so there is no desktop or iOS target in the repository. Anyone searching for an iPhone or Windows version will not find one here. Finally, because layouts are generated from data files, a language that has no layout definition has no support until someone writes one; the README does not list which languages are covered.

How it differs from a mainstream Android keyboard

The obvious alternative is the keyboard that ships with your phone, typically Gboard or a vendor equivalent. The difference is not cosmetic. A mainstream keyboard optimises for prediction: it watches what you type, builds a personal dictionary, and offers word suggestions, and that pipeline is why it wants network access and a broad set of permissions. Unexpected Keyboard inverts the priority. Symbols are one gesture away instead of one layer away, the layout is defined in files in the repository, and the README states the app contains no ads and is open source under GPL-3.0. For a Termux session, that inversion is the whole point: brackets, pipes and tildes are common characters, and a layer switch per character is expensive. A second alternative is another open source Android keyboard, but the comparison that matters is the same one: do you want prediction, or do you want direct access to a wider character set? Unexpected Keyboard answers the second question, and the README does not pretend to answer the first.

Maintenance, licence and the cost of staying current

The repository is not archived, and the last push was on 2026-09-22, so the codebase is being touched. Release 2.1.0 is dated 2026-09-06, with 2.0.4 on 2026-05-24 and 2.0.3 on 2026-05-06 before it, which points to a steady cadence rather than a single burst. That cadence is also the upgrade cost: F-Droid and Google Play both carry the app, so updates arrive through the store you installed from, and you should not mix the two, because the package identifier is the same on both listings. The licence is GPL-3.0, which matters if you plan to redistribute a modified build. Under the GPL, distributing a modified version means distributing the corresponding source under the same licence, and the repository already ships the build definitions and layout generators you would need. If you only install and use the app, the licence does not impose obligations on you. This is a description of the licence identifier in the repository, not legal advice; read LICENSE in full before redistributing anything.

Editorial conclusion

Adopt it if you type punctuation, brackets or shell syntax on Android and want an input method that does not send keystrokes anywhere; the README states the app contains no ads and is open source. Skip it if you depend on glide typing or autocorrect as your primary input method, since the README presents swiping as a way to reach corner symbols, not as word gesture typing. Before installing, read CONTRIBUTING.md for the build path, check the layout files under res/ to see whether your language is covered, and confirm the version you are getting from F-Droid or Google Play.

Frequently asked questions

How do I use Unexpected Keyboard?

Install it from F-Droid or Google Play, enable it as an input method, then slide your finger from a key toward one of its corners to type the symbol shown there. The README gives Settings as the example, opened by sliding in the left down corner.

Is Unexpected Keyboard safe?

The README states the application contains no ads and is open source, and the repository is licensed GPL-3.0, so the code is available for inspection. The README does not describe any network behaviour, and it does not make a security guarantee.

What is an alternative to Unexpected Keyboard?

The practical alternative is the keyboard that ships with your phone, such as Gboard, which prioritises word prediction and suggestions. Unexpected Keyboard instead puts extra symbols in the corners of each key, which is a different trade rather than a direct replacement.

Official sources

  1. Issues
  2. Julow/Unexpected-Keyboard on GitHub
  3. License: GPL-3.0
  4. README
  5. Releases
Add this badge to your README

If you maintain this project, the badge below links readers to this analysis and shows its maintenance status from the daily GitHub snapshot. Paste the markdown into your README; add ?metric=license or ?metric=stars to the image URL for a different field.

Add this badge to your README

markdown
[![Hysen Labs](https://hysenlabs.com/badge/julow-unexpected-keyboard.svg)](https://hysenlabs.com/projects/julow-unexpected-keyboard)