abouttreesummaryrefslogcommitdiff
AgeCommit message (Collapse)AuthorFilesLines
6 daysFix the keyboard drawing behind the navigation bar (#1265)Jules Aguillon1-3/+1
The width of the navigation was not accounted correctly. This reverts be8a99bd
6 daysFix crash when the cursor moves past an emoji (#1264)Jules Aguillon1-1/+3
The cursor might move in the middle of a surrogate pair.
6 daysFix wrong locale selection for English (#1263)Jules Aguillon2-11/+23
The "en" locale, which was meant to be the default for English locales that are not in the list, was used instead of exact locales like "en_US". The "en" locale was also used as the default locale for languages that are not in the list at all. The "en_GB" locale is used for this instead.
6 daysUpdate dictionaries.xml (#1262)Jules Aguillon1-57/+57
The dictionary sizes were not correct.
6 daysFix crash when installing dictionaries (#1261)Jules Aguillon2-0/+6
This happens in release mode due to minification.
7 daysreleases: Update languages supported by Google Play (#1257)Jules Aguillon18-49/+12
Remove languages from fastlane metadata that are not supported by Google Play and prevented the release from continuing.
7 daysRelease 2.0.0 (51)Jules Aguillon2-2/+8
7 daysMerge changes from Weblate (#1256)Jules Aguillon67-328/+3330
Co-authored-by: Anonymous <noreply@weblate.org> Co-authored-by: Hosted Weblate <hosted@weblate.org> Co-authored-by: solokot <solokot@gmail.com> Co-authored-by: ℂ𝕠𝕠𝕠𝕝 (𝕘𝕚𝕥𝕙𝕦𝕓.𝕔𝕠𝕞/ℂ𝕠𝕠𝕠𝕝) <coool@mail.lv> Co-authored-by: Packss <enzoana@hotmail.com> Co-authored-by: A <meow98317@gmail.com> Co-authored-by: Joppla <joppla@gmx.com> Co-authored-by: Validbit <validbit@outlook.com> Co-authored-by: Chasm Solacer <chasmsolacer@users.noreply.hosted.weblate.org> Co-authored-by: Akal! <ihsani.akmal.0@gmail.com> Co-authored-by: Edgars Andersons <Edgars+Weblate@gaitenis.id.lv> Co-authored-by: Mehmet Ali Cuma <v6lhost@proton.me> Co-authored-by: 是果宝呐 <shiguobaona@163.com> Co-authored-by: Giuseppe Barichello <beppuz@gmx.com> Co-authored-by: marciozomb13 <marciozomb13@outlook.com> Co-authored-by: Bora Atıcı <boratici.acc@gmail.com> Co-authored-by: Péter Czeglédy <czegledyp2@gmail.com> Co-authored-by: Jonatas P <jonatasp5592@gmail.com> Co-authored-by: Rasel Molla <msg4mrm@gmail.com> Co-authored-by: Bi Bi Le <lebibibioihandsomeboy.ghost@gmail.com> Co-authored-by: Juan M Sevilla <jumase@disroot.org> Co-authored-by: Shine WaiLinn <shinelinn1897@users.noreply.hosted.weblate.org> Co-authored-by: Sai Hak Moe Htike <pekhejdj@gmail.com> Co-authored-by: Matteo Borella <borella.matteo@gmail.com> Co-authored-by: Ulpi Antor <weblate.residual441@passmail.net> Co-authored-by: Nataniel Dika Kurniawan <hikawaart2@gmail.com> Co-authored-by: Yusif Omran <yusifrad20@gmail.com> Co-authored-by: Samuel Jabez P <jrbros2346@gmail.com> Co-authored-by: Regu_Miabyss <cyanogenmod.cid@gmail.com> Co-authored-by: Tannaz M <tannaz.monajemi@gmail.com> Co-authored-by: winver <kirillstuzhuk@gmail.com> Co-authored-by: Summer-Box1228 <tingrong1228@gmail.com> Co-authored-by: E. Ta. <eta00823@gmail.com> Co-authored-by: Abo Moayd <aboeanas0y2014@gmail.com> Co-authored-by: meQ Qentlh <brynnhold@gmail.com> Co-authored-by: Adrià Vilanova Martínez <me@avm99963.com> Co-authored-by: QonDonion <dolchanat.a@gmail.com> Co-authored-by: Leonardo Taglialegne <leonardo@taglialegne.it> Co-authored-by: Mikael Kujanpää <mikael.pajunen@gmail.com> Co-authored-by: Vaisakh K M <vaisakhkm2625@gmail.com> Co-authored-by: Debojit Mozumder <debojitmozumder38@gmail.com> Co-authored-by: Rifat <rifatstudent463@gmail.com> Co-authored-by: Guzleon <guzleon@yahoo.es>
7 daysUpdate the README and screenshots in preparation for the release (#1255)Jules Aguillon8-0/+4
* README: Acknowledge NLnet * Move FUNDING.yml into .github/ * Update screenshots Redo the screenshots with the suggestions visible.
7 daysEmoji suggestion (#1235)Jules Aguillon8-50/+100
Suggest an emoji in addition to the 3 suggested words when the current word matches an alias in the emoji dictionary, if available.
8 daysReduce the size of suggestions to fit (#1248)Jules Aguillon4-8/+27
The font size of the suggested words is reduced if the word would otherwise split on two lines.
2026-04-24Fix the spacebar in Hangul combining (#1244)Jules Aguillon3-4/+12
* Fix the spacebar in Hangul combining The encoding for the spacebar changed and the Hangul combining code was not updated. * Change the default layout for Korean
2026-04-18CI: Run the tests (#1245)Jules Aguillon1-0/+12
Run the tests before building the debug APK in CI. This checks that the unit tests pass and that the generated files are uptodate. Doesn't fail if the generated files are outdated. Instead, the APK is built with them updated.
2026-04-18Add more symbols to superscript and small_caps (#1198)Jules Aguillon4-272/+336
* Add more symbols to accent_syperscript * Add all uppercase and lowercase variants to accent_small_caps * Use ʁ instead of ᴚ in accent_small_caps
2026-04-16Autocorrect middle word (#1242)Jules Aguillon2-15/+20
* Fix crash when typing space in the middle of a word * Don't trigger autocorrect when the cursor is not at the end of a word This prevented from editing a word that was already typed. * Don't undo autocorrect at the wrong time Backspace was trying to undo autocorrect even after some other action were done after the last autocorrect. This ensures that the keyboard remembers accurately the last action.
2026-04-14Change default locale for en_* and update IME layout (#1237)Tony O2-2/+2
Change default unknown locale dictionary from en_US to en_GB
2026-04-12Fix crash added in #1233 (#1234)Jules Aguillon1-1/+2
Crash added in https://github.com/Julow/Unexpected-Keyboard/pull/1233
2026-04-12Better spell check with cursor in the middle of a word (#1233)Jules Aguillon3-23/+102
* Better spell check with cursor in the middle of a word Suggestions are based on the entire word and no longer the part of the word just before the cursor. Also, tapping a suggestion or the space bar autocorrect replaces the entire word. * Reduce the number of calls to refresh_current_word While the cursor moves, calls to refresh_current_word are now only done when the cursor exits the current word.
2026-04-12Insert a space when undoing autocorrect (#1232)Jules Aguillon1-1/+2
This prevents the same suggestions to be presented again and autocorrect to be activated again when pressing space. This extra space is wanted because pressing the spacebar triggered autocorrect in the first place.
2026-04-10Better suggestion with diacritics (#1223)Jules Aguillon8-16/+1119
* Update cdict * scripts/subst_of_compose.py: Compute substitutions from compose mappings. They are used when building dictionaries. * Add substitutions compose data * Better suggestion with diacritics This improves the suggestions for words that contain diacritics and uppercase letters. This works by stripping diacritics both when building the dictionaries (using word aliases added in cdict: https://github.com/Julow/cdict/pull/3) and during lookup. Cdict then takes care of resolving the correct word. The substitutions are generated using mappings from `fn`, `shift` and all the `accent_*` modifiers into srcs/compose/substitutions.json This can be updated easily when more mappings are added.
2026-04-10Handle Google Keep bug (#1230)Jules Aguillon2-2/+13
The Google Keep text area sends contradictory flags to keyboards, resulting in the suggestions to be disabled. This seems to be a bug in Google Keep.
2026-04-10Refresh suggestions immediately after language switch (#1229)Jules Aguillon2-0/+8
* Switch dictionary when language changes The dictionary was otherwise updated by closing and opening the keyboard again. * Refresh suggestions immediately after language switch
2026-04-10Dictionary activity: Status message when the keyboard is not enabled (#1228)Jules Aguillon3-0/+6
This shows a reason why the list is empty and removes confusion.
2026-04-10Disable spacebar autocomplete when suggestions are hidden (#1227)Jules Aguillon2-0/+10
The spacebar autocomplete option was still working even when the suggestions strip was correctly hidden in applications like Termux.
2026-04-10Increase lookback when looking for the last word (#1226)Jules Aguillon1-1/+1
For example, typing "dictionarirs" suggests "dictionaries" but moving the cursor away and back results in no suggestion. Because the lookback was 10 characters long, the keyboard was seeing "ctionarirs".
2026-04-10Documentation: Point to default mappings as requested in #1222 (#1225)Spike1-0/+3
2026-04-08Fix building on NixOS (#1219)Jure Varlec1-13/+3
* shell.nix: bump platform version to match target * shell.nix: make gradlew work on NixOS This removes the wrapper provided by `shell.nix`. Folks expect the `./gradlew` wrapper to work, so this approach is more straightforward.
2026-04-08doc: Fix hyperlink of bottomw_row.xml and number_row.xml (#1216)Hopeine1-2/+2
Add blob/master/
2026-04-05Add Finnish QWERTY keyboard layout XML (#1221)Tony O4-0/+50
2026-03-16CI: Check whether ComposeKeyData is uptodate (#1204)Jules Aguillon1-4/+15
2026-03-15CI: Disable workflow runs on push (#1202)Jules Aguillon2-0/+4
2026-03-15Making dictionaries compatible with 16 KB devices. (#1199)Tyler1-0/+1
2026-03-06Add Assamese layout (#1196)Jules Aguillon3-0/+44
2026-03-06Make layout text editor not redraw every frame (#1192)dzaima1-2/+9
2026-02-27Some slider changes (#1195)dzaima2-10/+25
* Helper for whether a slider is vertical * Only accumulate delta for the current slider's direction * Slow down horizontal cursor movement while ctrl is held
2026-02-25Separate colors for pressed vs activated labels (#1193)dzaima3-1/+6
2026-02-25Add missing alphabet + ~ compose sequences (#1194)dzaima2-152/+166
2026-02-25Update target SDK version to 36 (#1190)Jules Aguillon3-3/+12
* Fix keyboard not showing on Android 16 * Update target SDK version to 36
2026-02-24Fix no keyboard after switching from clipboard manager (#1189)Jules Aguillon1-22/+22
2026-02-24Fix crash introduced in #1183 (#1187)Jules Aguillon1-1/+2
2026-02-24gradle: Show an error when Git submodules are not initialized (#1188)Jules Aguillon2-0/+14
* CONTRIBUTING: Document Git submodules * build: Error during build if the submodules are not initialized
2026-02-22Improve suggestion for capitalized words (#1183)Jules Aguillon1-14/+39
Suggestions were previously case-sensitive, which gave very bad results for the first word of a sentence. This makes sure that the suggestions for capitalized words are as good as for all lower-case words and that the suggestion doesn't turn the uppercase letter into lower case.
2026-02-21Fix space and delete not repeating (#1182)Jules Aguillon1-25/+15
2026-02-19Autocomplete on space bar and undo on delete (#1179)Jules Aguillon9-80/+190
* Refactor: Implement the space key as an editing action The space key is no longer a CHAR key but now an EDITING key. This allows changing the behavior of the space bar while allowing custom layout users to define a key outputing a space as before. KeyModifier and ComposeKey are updated to treat the space key as before. * Enter the best suggestion when the space bar is pressed * Refactor: Implement backspace as an editing action * Undo suggestion when delete is pressed The delete key (backspace internally) undoes the suggestion if the last action done was entering the suggestion with either the space bar or the candidates view. * Add an option to enable space bar autocomplete This option is off by default. Undoing a completion with backspace works in any case. * Refactor: Track selection emptyness in CurrentlyTypedWord This removes an expensive RPC call.
2026-02-19Refactor: KeyValue constants (#1180)Jules Aguillon7-44/+57
* Refactor: KeyValue constants Add constants for keys that are accessed from the app's code. This simplifies the fake pointer handling in Keyboard2View. * Refactor: Pre-compute action key replacement The action key and the enter swap are pre-computed in EditorConfig. This simplifies the code.
2026-02-14Increase maximum value for the bottom margin option (#1178)Jules Aguillon1-4/+4
2026-02-08Fix label color when keys are pressed (#1173)Jules Aguillon1-1/+1
The color of labels on a pressed key that were not the label being activated (eg. the labels on the corners when activating the label in the centre) was not correct.
2026-02-02Spell checking (#1137)Jules Aguillon30-109/+925
This adds dictionary-based spell checking to the keyboard. The keyboard looks at the word being typed and matches it against a dictionary to either complete the rest of the word or find alternative spellings. The core of this feature is implemented in cdict, which is included as a submodule in vendor/cidct. Cdict is developped at https://github.com/Julow/cdict The dictionaries are hosted at https://github.com/Julow/Unexpected-Keyboard-dictionaries/ The wordlists used to build the dictionaries are the same ones used by HeliBoard from https://codeberg.org/Helium314/aosp-dictionaries - Add an activity accessible from the launcher app that lists available dictionaries with a download button. The DictionaryListView view shows the list of available dictionaries and handles downloading and installing them. - The Dictionaries class manages installed dictionaries. Dictionaries are installed as individual files into the app's private directory. - Available dictionaries are listed in dictionaries.xml, which is generated when building Unexpected-Keyboard-dictionaries. method.xml mentions the dictionary name for each locales.
2026-02-01Candidates view improvements (#1168)Jules Aguillon14-31/+110
* Refactor: Create subpackage 'suggestions' * Candidates view: Status message when no dictionary installed Show a message on the candidates view instead of leaving it empty. A button points to the dictionary installation activity. * Add an option to disable the suggestions * Refactor: Remove Config.should_show_candidates_view This was moved to EditorConfig. * Don't disable text suggestions in some text boxes * Suggestion text size matching settings The candidates view height is based on the height of keyboard rows and the suggestion text size is based on the size of labels on the keys. This is influenced by symbol size and keyboard height options.
2026-01-31Avoid loops in modmaps (#1167)Jules Aguillon2-1/+12
It was possible to define a loop that would crash the app with the following modmap: <ctrl a="left" b="left:ctrl,left"/> With this change, modmap are not taken into account while evaluating macros. The modmap above modifies ctrl+left into ctrl+left.