<feed xmlns='http://www.w3.org/2005/Atom'>
<title>unexpected-keyboard/srcs/juloo.keyboard2/EmojiGridView.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>Remove emoji history migration function (#1139)</title>
<updated>2025-12-13T21:12:36+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2025-12-13T21:12:36+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=5fc1da0a2e5c05b97d587a9844e578c1f0b76685'/>
<id>5fc1da0a2e5c05b97d587a9844e578c1f0b76685</id>
<content type='text'>
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.</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
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.</pre>
</div>
</content>
</entry>
<entry>
<title>Pull the emoji list from unicode.org (#612)</title>
<updated>2024-05-08T11:02:19+00:00</updated>
<author>
<name>Quinn Cypher</name>
</author>
<published>2024-05-08T11:02:19+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=a91332a9030197f1f43a21d8ba6b4fd0aa279d85'/>
<id>a91332a9030197f1f43a21d8ba6b4fd0aa279d85</id>
<content type='text'>
- Removing unused information (names and descriptions) from the Emoji class
- Creating a Gradle task that generates a more efficient res/raw/emojis.txt file from the most recent Unicode standard
- Saving recently used emoji preferences as emoji values rather than names
- Migrating old user preferences to the new system</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
- Removing unused information (names and descriptions) from the Emoji class
- Creating a Gradle task that generates a more efficient res/raw/emojis.txt file from the most recent Unicode standard
- Saving recently used emoji preferences as emoji values rather than names
- Migrating old user preferences to the new system</pre>
</div>
</content>
</entry>
<entry>
<title>Improve emoji pane layout</title>
<updated>2022-12-11T15:26:50+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2022-12-11T15:20:51+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=199ca5cf03f1778d9a41622f4b0ed02912c2a20b'/>
<id>199ca5cf03f1778d9a41622f4b0ed02912c2a20b</id>
<content type='text'>
The measurement function was wrong in some situations. Set a width for
columns and properly configure the GridView.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The measurement function was wrong in some situations. Set a width for
columns and properly configure the GridView.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor: Move editing code from to KeyEventHandler</title>
<updated>2022-11-13T15:28:39+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2022-11-13T15:18:08+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=078dbcd5ff7f0828f48d66d866ea49d3eb14cc6a'/>
<id>078dbcd5ff7f0828f48d66d866ea49d3eb14cc6a</id>
<content type='text'>
Remove the code dealing with InputMethodConnection from 'Keyboard2' and
move it into 'KeyEventHandler', where more editing actions can now be
implemented.

Autocapitalisation is also moved, the IReceiver interface is simplified.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Remove the code dealing with InputMethodConnection from 'Keyboard2' and
move it into 'KeyEventHandler', where more editing actions can now be
implemented.

Autocapitalisation is also moved, the IReceiver interface is simplified.
</pre>
</div>
</content>
</entry>
<entry>
<title>Avoid crashing in direct-boot mode</title>
<updated>2022-11-11T14:39:28+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2022-11-11T14:39:28+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=ef34303c7eaa781ed4655016538aac47f0aef002'/>
<id>ef34303c7eaa781ed4655016538aac47f0aef002</id>
<content type='text'>
The settings activity can't open in direct-boot mode. The emoji pane
opens without the "last used" data.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The settings activity can't open in direct-boot mode. The emoji pane
opens without the "last used" data.
</pre>
</div>
</content>
</entry>
<entry>
<title>Direct-boot aware preferences</title>
<updated>2022-11-11T13:27:02+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2022-11-11T13:27:02+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=f1ce6abe5a37c9ca57d885ecb9a3218969bc7fdf'/>
<id>f1ce6abe5a37c9ca57d885ecb9a3218969bc7fdf</id>
<content type='text'>
Store preferences in device protected storage, which is available before
the device is unlocked.
The keyboard was crashing when trying to access the encrypted
preferences.

The emoji pane uses a separate preferences file, the old data is lost.

The SettingsActivity can't easily use the new preferences storage.
Instead, it continues to use the "default" preferences store, which is
copied back to the protected storage when needed.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Store preferences in device protected storage, which is available before
the device is unlocked.
The keyboard was crashing when trying to access the encrypted
preferences.

The emoji pane uses a separate preferences file, the old data is lost.

The SettingsActivity can't easily use the new preferences storage.
Instead, it continues to use the "default" preferences store, which is
copied back to the protected storage when needed.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor: Make KeyValue final</title>
<updated>2022-06-05T18:14:16+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2022-06-05T18:14:16+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=9aac7900c0858eb44b81c4ed1dd80f3cb44b85bb'/>
<id>9aac7900c0858eb44b81c4ed1dd80f3cb44b85bb</id>
<content type='text'>
The class has a complicated internal logic, it is no longer reasonable
to extend it.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The class has a complicated internal logic, it is no longer reasonable
to extend it.
</pre>
</div>
</content>
</entry>
<entry>
<title>Refactor: Abstract KeyValue fields</title>
<updated>2022-06-05T15:46:22+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2022-06-05T15:26:34+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=e10c587dc5286db64a6f55010637f0c3f9f62d59'/>
<id>e10c587dc5286db64a6f55010637f0c3f9f62d59</id>
<content type='text'>
The meaning of the public fields of KeyValue was quite complicated and
not handled consistently accross the app.

Make these fields private and add a more abstract API on top.

The meaning of these fields changed recently and it wasn't an easy
change. I plan on making more changes in the future.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
The meaning of the public fields of KeyValue was quite complicated and
not handled consistently accross the app.

Make these fields private and add a more abstract API on top.

The meaning of these fields changed recently and it wasn't an easy
change. I plan on making more changes in the future.
</pre>
</div>
</content>
</entry>
<entry>
<title>Stop using flags for modifiers</title>
<updated>2022-06-04T23:43:58+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2022-06-04T23:38:42+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=4127aa6f033a258aa89ff3704a952505c8c056cb'/>
<id>4127aa6f033a258aa89ff3704a952505c8c056cb</id>
<content type='text'>
There was no free bits left to add new modifiers. Instead of increasing
the width of the 'flags' field, refactor the way modifiers are
represented and used.

Modifers are now represented as independent values and stored in the
'code' field. A flag is added to distinguish between modifiers and keys
with a key event.

The most notable change is that modifiers can no longer be or-ed into a
single value but have to be represented as an array.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
There was no free bits left to add new modifiers. Instead of increasing
the width of the 'flags' field, refactor the way modifiers are
represented and used.

Modifers are now represented as independent values and stored in the
'code' field. A flag is added to distinguish between modifiers and keys
with a key event.

The most notable change is that modifiers can no longer be or-ed into a
single value but have to be represented as an array.
</pre>
</div>
</content>
</entry>
<entry>
<title>Use the themes abstraction</title>
<updated>2021-12-28T18:12:50+00:00</updated>
<author>
<name>Jules Aguillon</name>
</author>
<published>2021-12-28T18:12:50+00:00</published>
<link rel='alternate' type='text/html' href='https://ps.run/git/unexpected-keyboard/commit/?id=40b1ec63a932606fb432ee81801acf147e9ee70e'/>
<id>40b1ec63a932606fb432ee81801acf147e9ee70e</id>
<content type='text'>
Themes replace 'colors.xml' and soon will replace 'dimens.xml'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Themes replace 'colors.xml' and soon will replace 'dimens.xml'.
</pre>
</div>
</content>
</entry>
</feed>
