abouttreesummaryrefslogcommitdiff
AgeCommit message (Collapse)AuthorFilesLines
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.
2026-01-30Option to switch to the previously used keyboard (#1165)Jules Aguillon8-27/+62
The "Switch to the last used keyboard" is renamed to "Switching between input methods" and allows to select "Switch to last used", which was the default in older releases.
2026-01-25README: Remove the "Similar apps" section (#1163)Jules Aguillon1-4/+0
2026-01-18Add the small capital letters dead key (#1156)Jules Aguillon6-232/+307
* Add the small capital letters dead key It can be added to the keyboard from the settings or into custom layouts as `accent_small_caps`. Add all the symbols listed on https://en.wikipedia.org/wiki/Small_caps
2026-01-18Fix crash when using the Monet themes on Android 9 (#1155)Jules Aguillon3-12/+36
The color resources starting with `@android:color/system_` are not available on API < 31. No effort is made to implement the Monet feature on Android 9. Instead, the monet themes look like the Dark and Light themes.
2026-01-18Refactor: Split DeviceLocales out of Keyboard2 (#1154)Jules Aguillon3-61/+107
* Refactor: Split DeviceLocales out of Keyboard2 This moves the code from Keyboard2 that handles the active IME subtypes and the current one. The goal is to access this information from the dictionary activity while simplifying the code of Keyboard2. * Refresh the candidates view when subtype changes This fixes the status message being inconsistently shown. * Refactor: Load DeviceLocales less often Previously, [DeviceLocales.load()] was called everytime the keyboard was shown on the screen. This operation is moderately costly and only need to be done when the IME subtype changes. * EditorConfig: Fix crash on Android 9
2025-12-28Merge pull request #1150 from Julow/candidates_viewJules Aguillon12-17/+391
Candidates view
2025-12-28Fix CurrentlyTypedWord counting the first letter twiceJules Aguillon2-4/+4
2025-12-28CurrentlyTypedWord: Handle key eventsJules Aguillon2-7/+46
Currently, refreshing the current word on each key event. Refreshing is done after a short delay, to ensure the editor has handled the event.
2025-12-28CurrentlyTypedWord: Handle selectionJules Aguillon1-12/+23
When selection is entered, the current word is cleared.
2025-12-28Enter the suggestion when it's pressedJules Aguillon3-7/+31
The current word is replaced by the pressed suggestion.
2025-12-28Track the currently typed wordJules Aguillon5-6/+161
The `CurrentlyTypedWord` class tracks the word that is being typed. It's implemented on the same model as Autocapitalisation and avoid expensive IPC calls when possible. The `Suggestions` class is where the suggestion lookup should go. It currently just echoes the current word.
2025-12-28Candidates viewJules Aguillon9-9/+154
The `CandidatesView` is implemented as a `LinearLayout` that is divided horizontally with up to 3 `TextView`. It might in the future contain buttons on the sides. The candidate view is nested into the input view rather than using Android's `setCandidatesView` and callbacks as the API is unreliable and complicated. The first suggestion goes in the middle to be more accessible. The second suggestion goes on the right to be more accessible to the right-handed, because it must go somewhere.
2025-12-27More practical definition of method.xml (#1149)Jules Aguillon3-13/+140
Locale are now defined in `gen_method_xml.py` in a more convenient and checked way. It contains both the locale definition and the generation script. `method.xml` is generated with: gradle test The goal is to support dictionaries for spell checking.
2025-12-26Fix clipboard manager crashes (#1148)Jules Aguillon2-22/+33
* Fix background crash in clipboard history service The clipboard history service might crash when the connection between the keyboard and the system is in a bad state. * Fix race condition in clipboard history service The clipboard history service callback appears to be called concurrently leading to concurrent accesses to data and to concurrent calls to 'on_clipboard_history_change'. Access are now synchronized. * Fix clipboard manager crash when device is locked
2025-12-22Fix various linting issues (#1146)Jules Aguillon39-56/+39
2025-12-18gradle: Remove unecessary ruleJules Aguillon1-10/+1
The output APKs used to be named 'juloo.keyboard2.apk' are now named 'Unexpected-Keyboard-release.apk' since the Gradle upgrade and the rule setting it hasn't been working since.
2025-12-18Disable selection mode in text editors (#1141)Jules Aguillon8-118/+157
* Disable selection mode in text editors Selection mode removes the space bar key (which is replaced by the Esc key) and can be annoying in Emacs for example. Text editor users probably have the `esc` key available. * Refactor: Move EditorInfo related code to EditorConfig Add the new EditorConfig class that handles configuration extracted from the EditorInfo. It is accessible from the Config class for convenience. This aims at reducing the length of already large classes and group the code that was spread over several classes.
2025-12-13Added keyboards (#1129)10Develops9-77/+270
* Delete srcs/layouts/armenian_ph_am.xml There is a phonetic layout which is used in old typewriters * Amendments according to GOST 6431-90 * Russian traditional layout cyrl_jiuken.xml * Create cyrl_yawerty.xml Added ЯВЕРТЫ layout * Update cyrl_jcuken_ru.xml Typo fixed * Added QZERTY layout for Italian and Latin
2025-12-13Remove emoji history migration function (#1139)Jules Aguillon2-745/+0
This function was used to migrate the representation of the emoji history and needed a very large table. This reduces the app size by 22KB.
2025-12-13AZERTY: Make sure the accents are available (#1140)Jules Aguillon1-3/+3
Remove the `loc` prefix for important accent dead keys and add ê.
2025-12-13Update the emoji list to Unicode 17.0 (#1138)Jules Aguillon1-8/+179
2025-12-13Fix parsing of escaped characters in macros (#1126)Jules Aguillon3-7/+43
* refactor: Better printing for KeyValue in tests * Fix parsing of escaped characters in macros The parsing code was bugged with custom macros like `symbol:\abc` and `symbol:\\abc`.
2025-11-19Ukrainian l10n update (#1128)Andy Callisto1-23/+37
* Ukrainian l10n update * "Debug" translated
2025-11-10Fix insets being excluded from computed width (#1127)dzaima1-0/+1
2025-11-10build: Avoid unreproducible rules in regular builds (#1125)Jules Aguillon1-3/+7
The genEmojis rule makes a network request and must not be done during a regular build. The compileComposeSequences updates a file that is checked in the repository and doesn't need to be updated in a regular build. Both are now handled like 'genLayoutsList'.
2025-11-01Turkish F layout (#1096)Autissima3-0/+50
2025-11-01gradle: Set explicit dependency for rule genLayoutsListJules Aguillon1-0/+1
2025-11-01Update ComposeKeyData.javaJules Aguillon1-150/+150
Missing from previous commit.
2025-11-01Update extra.json (#1118)Houfalafel1-7/+11
change compose for n͠g to g + n + ~ to avoid overlap. this in order to add n + g = ŋ. also added lowercase Ğ.
2025-09-29Cobalt & Pine theme (#1084)wei lang4-0/+70
2025-09-29Make history duration configurable (#1074)Matej Drobnič5-3/+34
2025-09-29Upgrade Gradle (#1097)J. Fronny10-324/+383
* Enable configuration cache and up-to-date checking
2025-09-15Custom-layouts.md: Document minimum row height (#1101)Spike1-0/+2
2025-09-15Allow smaller row height in custom layouts (#1100)Jules Aguillon1-1/+1
The height of row set with `<row height="...">` cannot be lower than 0.5 to avoid rendering problems. This restriction is not necessary when the row has no key and is lifted in this case.
2025-09-04shell.nix: Remove repoJsonJules Aguillon1-9/+0
nixpkgs-unstable is now uptodate.
2025-09-03Python script encoding fix (#1093)Autissima3-6/+6
* Changed Python scripts so they work on my machine file open() used default encoding (cp1252 on my machine) but the text is utf-8, had to specify encoding in check_layout.py
2025-09-01README: Remove capitals in "Open Source"Jules Aguillon1-1/+1
2025-08-31Use the <fn /> mappings first when typing a gesture (#1085)Jules Aguillon2-1/+8
This allows assigning mappings to letters without changing the Shift mappings and making uppercase impossible to type. For gestures, the Shift modifier is still applied first, unless a custom mapping for <fn/> is set for the key.
2025-08-24add Everforest Light theme (#1080)Animesh4-0/+19
2025-08-17Slider sensitivity option and improve slider ergonimics (#1070)Jules Aguillon5-3/+18
* Add option 'Space bar slider sensitivity' * Fix slider moving the cursor twice at the beginning The slider was generating two events when first activated. Since 2bed42857. * Make slider less sensitive for the first step This moves the second slider step approximately 40% further and takes the new sensitivity option into account. Allows moving the cursor by one spot more easily.
2025-08-17Add support for four important Nigerian languages (#1077)Jules Aguillon1-0/+4
This adds the English, Hausa, Yoruba and Igbo languages for Nigeria. The goal is to add the ₦ symbol as well as basic support for these languages. No layout is added.
2025-08-16gradle: Disable sync_translations (#1076)Jules Aguillon2-12/+5
The diffs created by sync_translations.py creates conflicts with the changes made on Weblate. It is disable to make merging translations from Weblate easier.
2025-08-07Update Custom-layouts.md reference to web editor (#1064)dom1-1/+1
2025-08-07Fix very small label size on 11+ columns layouts (#1046)Jules Aguillon1-3/+3
The label size was computed against the width of keys on the keyboard, which resulted in a different label size on different layouts. Notably, it made the labels very small on a 11 columns layout and relatively larger on the numpad. The label size is now computed against a baseline of 1/10 of the width of the screen.
2025-08-07Add '⊢' to the greekmath layoutJules Aguillon1-1/+1
2025-07-30Fix alternate keyboard layouts rendering behind navbar on some devices. (#1062)cillyvms1-0/+1
2025-07-26doc: Added Arabic diacritics to documentation of possible key values (#1061)Skynetcat1-0/+14
2025-07-22Fix missing swipe vibration and visual feedback (#1054)Jules Aguillon1-0/+1
This was removed by mistake in 42528ab211.