<feed xmlns='http://www.w3.org/2005/Atom'>
<title>unexpected-keyboard/res/values/styles.xml, 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>Reduce the size of suggestions to fit (#1248)</title>
<updated>2026-05-01T18:25:20+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-05-01T18:25:20+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=d164820bca8d2182869108f8a015ce3d987d048d'/>
<id>d164820bca8d2182869108f8a015ce3d987d048d</id>
<content type='text'>
The font size of the suggested words is reduced if the word would
otherwise split on two lines.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The font size of the suggested words is reduced if the word would
otherwise split on two lines.</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>Candidates view</title>
<updated>2025-12-28T16:56:37+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2025-07-27T20:09:45+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=98c1b8db82c0da8f49eb12d18c9001a57009eca5'/>
<id>98c1b8db82c0da8f49eb12d18c9001a57009eca5</id>
<content type='text'>
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.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix various linting issues (#1146)</title>
<updated>2025-12-22T00:27:07+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2025-12-22T00:27:07+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=b40be68773939d3d3b55a819cdfe1d9e9a60bc4e'/>
<id>b40be68773939d3d3b55a819cdfe1d9e9a60bc4e</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Proper support for Android 15 edge-to-edge (#848)</title>
<updated>2024-12-26T17:29:19+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2024-12-26T17:29:19+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=370f921bc367613164d93dc1ddbd28c57042e0a7'/>
<id>370f921bc367613164d93dc1ddbd28c57042e0a7</id>
<content type='text'>
The keyboard background now extends under the system bars and display
cutout on Android 15 but the keys do not.

The back and IME switching buttons that appear in the navigation bar require
special care to not overlap with the keyboard.

The launcher and settings activity are also fixed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The keyboard background now extends under the system bars and display
cutout on Android 15 but the keys do not.

The back and IME switching buttons that appear in the navigation bar require
special care to not overlap with the keyboard.

The launcher and settings activity are also fixed.
</pre>
</div>
</content>
</entry>
<entry>
<title>launcher: Show output of animated gesture</title>
<updated>2024-12-15T10:57:01+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2024-12-15T10:57:01+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=f9c92007db136eefd407198054500cc10ee3cc4b'/>
<id>f9c92007db136eefd407198054500cc10ee3cc4b</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>launcher: Animated vector describing swipe gesture</title>
<updated>2024-11-17T23:13:08+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2024-11-17T23:13:08+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=997b7be4c005696df91dc1833b4fb4db6c984991'/>
<id>997b7be4c005696df91dc1833b4fb4db6c984991</id>
<content type='text'>
Replace the short video with an animated vector image that shows the
swipe gesture.

This is much lighter and reliable than the mp4 video, which failed to
play on many devices.

Source for the image of the key is in inkscape SVG format in srcs/res
and is converted to an android drawable when needed. The swipe animation
is hand-written.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Replace the short video with an animated vector image that shows the
swipe gesture.

This is much lighter and reliable than the mp4 video, which failed to
play on many devices.

Source for the image of the key is in inkscape SVG format in srcs/res
and is converted to an android drawable when needed. The swipe animation
is hand-written.
</pre>
</div>
</content>
</entry>
<entry>
<title>Clipboard pane (#681)</title>
<updated>2024-07-06T20:16:37+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2024-07-06T20:16:37+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=bf3b9c374e1e68b1244da392666b571ab37e51fb'/>
<id>bf3b9c374e1e68b1244da392666b571ab37e51fb</id>
<content type='text'>
This adds the clipboard pane, which allows to save an arbitrary number of
clipboards and to paste them later. The key can be disabled in settings.

Checking the "Recently copied text" checkbox will cause the keyboard to keep a
temporary history of copied text. This history can only contain 3 elements
which expire after 5 minutes.
If this is unchecked, no history is collected.

History entries can be pinned into the persisted list of pins.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This adds the clipboard pane, which allows to save an arbitrary number of
clipboards and to paste them later. The key can be disabled in settings.

Checking the "Recently copied text" checkbox will cause the keyboard to keep a
temporary history of copied text. This history can only contain 3 elements
which expire after 5 minutes.
If this is unchecked, no history is collected.

History entries can be pinned into the persisted list of pins.
</pre>
</div>
</content>
</entry>
</feed>
