| Age | Commit message (Collapse) | Author | Files | Lines |
|
This is unexpected but happens once.
|
|
Modifiers can be locked with a long press. The key repeat mechanism is re-used
and the press timeout is the same.
Every modifiers can be locked that way, not only the "lockable" ones.
The previous behavior can be enabled in the settings (for shift only)
but the default is changed.
|
|
Keep track of end-of-sentence characters while typing and automatically
enable shift when appropriate.
The last few characters just before the cursor need to be queried in
some cases: Begin of input, cursor has moved or text is deleted.
This might have a performance cost.
This normally only enable shift but it also needs to disable shift when
the cursor moves.
|
|
Bring back the "Vibration" option.
The duration option isn't added back because the vibration settings are
still handled by Android. In fact, the option has no effect if the
vibration are disabled in the system settings.
This partially reverts commit ef03dfed5c802a855c4655204eee39a8769cfed7.
|
|
The "loc " prefix for predefining a place for an "extra key" was broken
since 31d6a70.
The FLAG_LOCALIZED flag cannot be used anymore, as adding it to any key
would turn it into a different key that wouldn't be recognized by parts
of the code comparing the keys (placing the extra keys).
Add an other layer in KeyboardData to store such informations.
|
|
This is no longer necessary since repeating key no longer cause a
vibration.
|
|
Instead of using the vibrator directly, use performHapticFeedback, which
will integrate better with the system settings.
|
|
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.
|
|
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.
|
|
Fix the bug introduced in the parent commit.
|
|
The "closest key" logic must be careful not to reveal keys removed by a
modifier.
Must check [_handler.onPointerSwipe] for every candidate values.
[selected_value] is changed back to [selected_direction].
This adds a new bug: When the direction change, the selected value might
not change but a vibration will be triggered anyway.
|
|
Since SDK 21, applications can set the background color of the
navigation bar. This is normally simply an item in a theme but it is
more complicated for keyboards.
|
|
The View no longer keeps flags for something other than rendering.
|
|
Modifiers can temporarily remove a key from the layout by returning
'null'.
Make sure pointer handling code handle these modified keys gracefully
and doesn't trigger a key event and a vibration for the removed key.
|
|
Handling this event is part of the API but was never done. This caused
unstoppable key-repeat.
This event isn't common, the only way I found on Android 10 is to switch
to the emoji keyboard while holding a key. Some apps might cause this
event more often.
|
|
|
|
|
|
The symbols are now smaller for Shift, Space, Backspace, Delete and
some keys on the bottom row.
The previous rule was to make the text smaller for symbols made of
several characters.
This is changed to a flag approach.
|
|
Use the height of the row currently being rendered instead of the base
row size.
Concretely, the bottom row is slightly smaller and will get slightly
smaller text.
Also:
- Rewrite the label rendering code
- Render labels at the middle of the key (was slightly off)
|
|
Instead of a fixed size that don't work at all for bigger screens.
Other tweaks:
- Use the value-land dimens to vary 'extra_horizontal_margin'
- Move label size to Config, because it can change at runtime (rotation)
- Slightly decrease the size of "long" symbols
|
|
Separate the concerns and have a clearer interface between the two parts
of the code.
|
|
Add a new boolean parameter "edgekeys" for defining keys that have the
additional (swipe) keys on the edges (top, right, left, bottom) instead
of at the corners (top left, top right, bottom left, bottom right).
|
|
There were two problems:
- The Action key was swapped when it shouldn't be. The flag
'IME_FLAG_NO_ENTER_ACTION' wasn't interpreted correctly for inputs
that specified both an action and this flag.
- The value 'IME_ACTION_UNSPECIFIED' should remove the Action key.
|
|
'keyVerticalInterval' was mistakenly used to compute the height of the
keyboard and the vertical position of keys.
While the code handling pointers did not use this value, the hit box of
the bottom row was shifted by several pixels.
Make sure 'keyVerticalInterval' is only used for rendering and not for
placing the keys.
|
|
When IME_FLAG_NO_ENTER_ACTION is set.
|
|
It is placed on the top-right of the enter key on every layouts.
It sends a special event (performEditorAction) instead of writing a
newline.
The "actionId" is passed through the EditorInfo object in an obfuscated
way so it's not clear whether it's using the right one.
|
|
Add the "FLAGS_LANGS" set of flags, which will be used to hide
individual keys that are not accents.
|
|
Now named "swiping distance". Changed to a dropdown.
|
|
Also, draw activated keys with a round border too.
|
|
As with the previous commit, remove casts of the context.
The "handler" object is referenced in the "config" object for now.
|
|
The goal is to remove a cast of the 'context' into 'Keyboard2'.
|
|
|
|
Use xmllint.
Re-indent Java files using spaces.
|
|
|
|
This replaces the "disable accent keys" checkbox.
The default should work for anyone: Accents will be hidden unless the
user has the french language installed.
The value "show every accents" is useful for versions of android that
don't have subtypes.
|
|
Caused by a shared Paint not correctly resetted.
|
|
|
|
|
|
Fixes:
- Toggling off a modifier was not possible in the corners (eg. accents).
- Modifiers on the same key can't be activated at the same time.
- Characters on the same key as a modifier weren't working properly.
|
|
Some versions of android don't allow to configure several languages.
|
|
Increase a bit labels size and reduce empty space between keys.
|
|
|
|
|
|
Improve Paint code.
|
|
|
|
|
|
Repeat speed increase as the pointer is away from the initial position.
On arrows, backspace and delete.
|
|
KeyValue defines an ADT and some of its values, it now contains public
final fields and no internal logic.
KeyModifier handles modifiers and accents and creates new instances of
KeyValue when needed.
This operation is now properly cached.
|
|
Android has a new way of switching between input methods and this key
need to be hidden in most cases.
|
|
Remove the constant of keys per rows. Add the 'shift' attribute to
declare eventual alignment/blanks in layouts.
|