<feed xmlns='http://www.w3.org/2005/Atom'>
<title>unexpected-keyboard/srcs/juloo.keyboard2/Logs.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>Handle Google Keep bug (#1230)</title>
<updated>2026-04-10T17:04:03+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-04-10T17:04:03+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=8921de7f02570ba03816ebb4025f2c95bc131707'/>
<id>8921de7f02570ba03816ebb4025f2c95bc131707</id>
<content type='text'>
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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor: KeyValue constants  (#1180)</title>
<updated>2026-02-18T23:35:14+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2026-02-18T23:35:14+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=ebf80415d8034d853bd79ba7cfb578db67862529'/>
<id>ebf80415d8034d853bd79ba7cfb578db67862529</id>
<content type='text'>
* 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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.</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>Disable selection mode in text editors (#1141)</title>
<updated>2025-12-18T18:15:32+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2025-12-18T18:15:32+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=41777fdda61715a59be241f0be9a8e3385222888'/>
<id>41777fdda61715a59be241f0be9a8e3385222888</id>
<content type='text'>
* 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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* 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.</pre>
</div>
</content>
</entry>
<entry>
<title>Migrate layouts preferences</title>
<updated>2023-08-16T10:21:40+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2023-08-15T18:23:33+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=5822f98bbbc3b96a90ff09551de8252ca18bca22'/>
<id>5822f98bbbc3b96a90ff09551de8252ca18bca22</id>
<content type='text'>
The new `layouts` preference replaces three previous preferences:

    layout
    second_layout
    custom_layout

Add a preference migration function, which first migration is to
migrate layouts into the new preference.

The migration must also be called from the SettingsActivity as it might
use a different preference store due to the boot-aware preference copy.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The new `layouts` preference replaces three previous preferences:

    layout
    second_layout
    custom_layout

Add a preference migration function, which first migration is to
migrate layouts into the new preference.

The migration must also be called from the SettingsActivity as it might
use a different preference store due to the boot-aware preference copy.
</pre>
</div>
</content>
</entry>
<entry>
<title>ListGroupPreference: Fix change items</title>
<updated>2023-08-16T10:21:25+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2023-08-10T17:10:32+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=febc23776fcf6c0a198cec442523cd0570999c15'/>
<id>febc23776fcf6c0a198cec442523cd0570999c15</id>
<content type='text'>
[Preference.onClick] is apparently not called on [Item]s, though it is
on [AddButton].

Workaround this by listening on click events on the view.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
[Preference.onClick] is apparently not called on [Item]s, though it is
on [AddButton].

Workaround this by listening on click events on the view.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor: Split out ListGroupPreference</title>
<updated>2023-07-29T16:42:36+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2023-07-29T16:31:26+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=0856fb4e31a98b7f14f50006d95c89e23c19503d'/>
<id>0856fb4e31a98b7f14f50006d95c89e23c19503d</id>
<content type='text'>
Split out the implementation of a string-list preference from
CustomExtraKeysPreference.

Allows to share the implementation with future preferences.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Split out the implementation of a string-list preference from
CustomExtraKeysPreference.

Allows to share the implementation with future preferences.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor: Centralize logging in a static class</title>
<updated>2023-07-19T21:30:58+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2023-07-19T21:28:33+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=8b2c07c9cbb783149bfa58c2d375472d87aa2e57'/>
<id>8b2c07c9cbb783149bfa58c2d375472d87aa2e57</id>
<content type='text'>
This new class will help write more logs. The LogPrinter is no longer
created everytime the keyboard is opened.

An error log is added if failing to load the custom extra keys.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This new class will help write more logs. The LogPrinter is no longer
created everytime the keyboard is opened.

An error log is added if failing to load the custom extra keys.
</pre>
</div>
</content>
</entry>
</feed>
