<feed xmlns='http://www.w3.org/2005/Atom'>
<title>unexpected-keyboard/srcs/juloo.keyboard2/KeyEventHandler.java, branch main</title>
<subtitle>Unnamed repository; edit this file 'description' to name the repository.
</subtitle>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/'/>
<entry>
<title>Emoji suggestion (#1235)</title>
<updated>2026-05-02T17:32:21+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-05-02T17:32:21+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=9c23e6c5f3459240a87898762cbfa90cef766ad7'/>
<id>9c23e6c5f3459240a87898762cbfa90cef766ad7</id>
<content type='text'>
Suggest an emoji in addition to the 3 suggested words when the
current word matches an alias in the emoji dictionary, if
available.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Suggest an emoji in addition to the 3 suggested words when the
current word matches an alias in the emoji dictionary, if
available.</pre>
</div>
</content>
</entry>
<entry>
<title>Autocorrect middle word (#1242)</title>
<updated>2026-04-16T13:33:28+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-04-16T13:33:28+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=af5f6df02c68a4ba9c06c4c69f49425b8eaabee0'/>
<id>af5f6df02c68a4ba9c06c4c69f49425b8eaabee0</id>
<content type='text'>
* 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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.</pre>
</div>
</content>
</entry>
<entry>
<title>Better spell check with cursor in the middle of a word (#1233)</title>
<updated>2026-04-12T12:33:27+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-04-12T12:33:27+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=a1d0342033460a13407deb27cac3ed5ad13ab47f'/>
<id>a1d0342033460a13407deb27cac3ed5ad13ab47f</id>
<content type='text'>
* 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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.</pre>
</div>
</content>
</entry>
<entry>
<title>Insert a space when undoing autocorrect (#1232)</title>
<updated>2026-04-12T12:30:04+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-04-12T12:30:04+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=5ec663c306907a32d21c910dc6df69d11b7ab243'/>
<id>5ec663c306907a32d21c910dc6df69d11b7ab243</id>
<content type='text'>
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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.</pre>
</div>
</content>
</entry>
<entry>
<title>Refresh suggestions immediately after language switch (#1229)</title>
<updated>2026-04-10T17:03:51+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-04-10T17:03:51+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=afa7c0187a3027e5ec826f4b19449c97e4419618'/>
<id>afa7c0187a3027e5ec826f4b19449c97e4419618</id>
<content type='text'>
* Switch dictionary when language changes

The dictionary was otherwise updated by closing and opening the keyboard
again.

* Refresh suggestions immediately after language switch</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Switch dictionary when language changes

The dictionary was otherwise updated by closing and opening the keyboard
again.

* Refresh suggestions immediately after language switch</pre>
</div>
</content>
</entry>
<entry>
<title>Disable spacebar autocomplete when suggestions are hidden (#1227)</title>
<updated>2026-04-10T17:03:20+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-04-10T17:03:20+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=f29ae92ba7b5567429c9132afaa4353282c85abe'/>
<id>f29ae92ba7b5567429c9132afaa4353282c85abe</id>
<content type='text'>
The spacebar autocomplete option was still working even when the
suggestions strip was correctly hidden in applications like Termux.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The spacebar autocomplete option was still working even when the
suggestions strip was correctly hidden in applications like Termux.</pre>
</div>
</content>
</entry>
<entry>
<title>Autocomplete on space bar and undo on delete (#1179)</title>
<updated>2026-02-18T23:37:42+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-02-18T23:37:42+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=df3594bd53c71d06f6e103f6782bb26b970beac4'/>
<id>df3594bd53c71d06f6e103f6782bb26b970beac4</id>
<content type='text'>
* 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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Spell checking (#1137)</title>
<updated>2026-02-01T23:20:00+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-02-01T23:20:00+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=77c4a27c4c37b3620defcab94ffd1b2f536c88cb'/>
<id>77c4a27c4c37b3620defcab94ffd1b2f536c88cb</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Candidates view improvements (#1168)</title>
<updated>2026-02-01T22:25:38+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-02-01T22:25:38+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=2ecf93d9904544ee73159e9f0ee74b49057bca6c'/>
<id>2ecf93d9904544ee73159e9f0ee74b49057bca6c</id>
<content type='text'>
* 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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid loops in modmaps (#1167)</title>
<updated>2026-01-31T14:36:22+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-01-31T14:36:22+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=b9072daaf62d5decb3377beeb281790a7512ae02'/>
<id>b9072daaf62d5decb3377beeb281790a7512ae02</id>
<content type='text'>
It was possible to define a loop that would crash the app with the
following modmap:

    &lt;ctrl a="left" b="left:ctrl,left"/&gt;

With this change, modmap are not taken into account while evaluating
macros. The modmap above modifies ctrl+left into ctrl+left.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
It was possible to define a loop that would crash the app with the
following modmap:

    &lt;ctrl a="left" b="left:ctrl,left"/&gt;

With this change, modmap are not taken into account while evaluating
macros. The modmap above modifies ctrl+left into ctrl+left.</pre>
</div>
</content>
</entry>
</feed>
