<feed xmlns='http://www.w3.org/2005/Atom'>
<title>unexpected-keyboard/srcs/juloo.keyboard2/Keyboard2.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>Fix missing null gate (#1273)</title>
<updated>2026-05-05T00:26:41+00:00</updated>
<author>
<name>Jon Musselwhite</name>
</author>
<published>2026-05-05T00:26:41+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=7b07b14a80121a690ccbeb86462af1f93a03c343'/>
<id>7b07b14a80121a690ccbeb86462af1f93a03c343</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<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>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>Update target SDK version to 36 (#1190)</title>
<updated>2026-02-24T23:12:43+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-02-24T23:12:43+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=958900ca2feedee35a5b32c831f505b88628de22'/>
<id>958900ca2feedee35a5b32c831f505b88628de22</id>
<content type='text'>
* Fix keyboard not showing on Android 16

* Update target SDK version to 36</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* Fix keyboard not showing on Android 16

* Update target SDK version to 36</pre>
</div>
</content>
</entry>
<entry>
<title>Fix no keyboard after switching from clipboard manager (#1189)</title>
<updated>2026-02-24T22:57:10+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-02-24T22:57:10+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=ae4a9d4514f2680e81e9b9dc0e333d5f9975be22'/>
<id>ae4a9d4514f2680e81e9b9dc0e333d5f9975be22</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</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>Option to switch to the previously used keyboard (#1165)</title>
<updated>2026-01-30T20:18:48+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-01-30T20:18:48+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=1b8506876a1d8cff876220a7b6610b7bbe9e8841'/>
<id>1b8506876a1d8cff876220a7b6610b7bbe9e8841</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor: Split DeviceLocales out of Keyboard2 (#1154)</title>
<updated>2026-01-18T16:26:41+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-01-18T16:26:41+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=a848897586223b050e87367b48ed2eebd0870d1d'/>
<id>a848897586223b050e87367b48ed2eebd0870d1d</id>
<content type='text'>
* 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</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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</pre>
</div>
</content>
</entry>
<entry>
<title>Track the currently typed word</title>
<updated>2025-12-28T17:08:12+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2025-08-16T16:48:00+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=f082fcdebc4f129cd262ee4a0a6b83d91fde72bb'/>
<id>f082fcdebc4f129cd262ee4a0a6b83d91fde72bb</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
</feed>
