This function is no longer an hardcoded list of layout ids. It's
replaced by a linear scan of the previously generated array and a new
corresponding array of resource ids.
`gen_layouts.py` lists the layouts in `res/xml` and generate the
`pref_layout_values` and `pref_layout_entries` arrays into
`res/values/layouts.xml`.
These arrays are hard to maintain as the order has to match, which is
fragile.
This relies on every layouts having a `name` attribute.
Added Romanian characters to the keyboard layout and changed the positioning
corner for the secondary characters that were conflicting with the
newly-introduced romanian characters
Added Romanian translations
The new key switches to any installed "voice" input method.
If several input methods matches, no effort is made to choose.
Might misbehave with some input methods other than Google's on API < 28.
It is placed on the middle of the arrows on the bottom bar. It is
enabled by default and can be removed in the "Extra keys" option.
The key is not removed from the keyboard if no voice input method
exists.
The newer haptic feedback API that is used instead of the vibrator
service since ef03dfe doesn't work for everyone.
The new vibration option allow to choose both the newer API ("system")
and the older API ("strong", "medium", "light").
This activity points to the system settings page for enabling input
methods. This is purely a shortcut but is expected by many users.
It could be made more useful in the future or hidden whenever the
keyboard is enabled.
'Keyboard.Key' now contains an array of size 9, giving each keyvalue an
index. The algorithm for finding the nearest key during a swipe now
needs 16 segments, which are now calculated as an angle.
The algorithm does one more interation instead of 2 more, slightly
reducing the sensitivity of corner values. The 'getAtDirection' function
is moved into the Pointers class to clearly separate the two systems.
The 'edgekey' attribute is now obsolete but is kept for compatibility.
The flag is removed internally, key index are simply translated.
Similarly, the 'slider' attribute now act on keys at index 5 and 6
instead of 2 and 3.
A new option changes the "change_method" into the new
"change_method_prev". It switch to the previously used input method.
A long press on "change_method_prev" sends "change_method".
A new section is added in the settings and existing options are moved.
Send key events for the left or right arrow as the finger slides on the
space bar.
Can be used to select text by holding shift. Works under Termux.
Events are sent linearly as the finger travels. The distance between
each events is defined from the swiping distance divided by 4.
'slider="true"' can be set on a key that have 'edgekeys="true"'.
'key2' and 'key3' represent the right and left keys.
It allowed to modulate the repeat speed of some keys (arrow, backspace,
delete) by move the finger farther or closer to the key.
In practice, this wasn't pratical and doesn't seem popular. It is
removed in favor of a better mechanism for moving the cursor.
Values like 'characterSize' and 'horizontalMargin' can't be fed back into the default value because they are not of the same unit.
To avoid this happening again, change the way the default value is defined for every options.
The 'key_height' dimension was no longer used.
The most requested keys are undo and redo. Unfortunatly redo doesn't
work reliably.
The other context menu actions like share, assist and autofill are added
even thought they are rarely useful or implemented.
* Add option for keyboard opacity (transparency). Keyboard background, keys and pressed keys can be adjusted separately.
* Make the borders transparent as well
* Moved setAlphas outside drawKeyFrame to top of onDraw method
Some users reported that 25% of the screen height is too high on their
screen. This doesn't seem to be a good way to define the height but
until it is improved, allow smaller values.
Add an option for specifying an XML layout description as a string.
The option is a bit rough at the moment:
- No documentation, users have to be aware of the keyboard's code to use
this option.
- No error are shown, the layout will fallback to qwerty on error.
The new script makes sure that strings files don't contain obsolete
strings but also ease the job of contributors by adding missing
translations as comments.
A Github Action ensures that translations stay in sync over time.
Themes can define the color of each borders independently. Every borders
must have the same width for now. It's possible to set a different width
when the key is activated, thought this is only used to remove borders.
The 4 themes are updated to take advantage of borders.
A new option allow to choose a secondary layout, the switching key is
placed on the top edge of the space bar.
The "Programming layout" option was basically doing that but it was
possible to choose from a few layouts only. It is improved and renamed.
The 'LayoutListPreference' allows setting the string for the first entry
but otherwise share the rest of the array.
Add nice icons from materialdesignicons.
The 'accent_slash' was missing in the extra keys setting.
Allow to type more latin letters "with oblique stroke" or "with stroke"
that visually have an oblique bar, that were not added to 'accent_bar'.
Similar to 'qwertz' but is wider to show äöü on dedicated keys. Some
punctuations are rebalanced to use the space better.
The default layout for de_DE is changed.
The key enable caps lock immediately. It does nothing if caps lock is
already enabled.
It is not present on the keyboard by default but a place is defined on
every layout, top-right of the shift key. It can be enabled in the
settings.
The icon is from materialdesignicons.com.
* Added Czech translation and layout
Translated keyboard and created Czech multilingual "practical" layout for faster typing and typing in commonly used languages (German, Slovak + French w/accents)
* Update (Rephrase) full_description.txt
... to better suit the language and naturally promote keyboard's features and possibilities to a wider audience.
The Fn+switch_numeric shortcut might be hard to discover or too slow for
heavy users.
A location is allocated for the key so it has a consistent placement.
Allows to add more keys to the keyboard from a predefined list.
The implementation doesn't use MultiSelectListPreference because it
doesn't seem possible to change the item layout to properly show the
rendered symbols.
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.
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 ef03dfed5c.
The '0' has been moved because it was hard to type due to being close to
the edge of the screen.
This is fixed in a more elegant way in a27c644, there's no reason to
keep the '0' in an inconsistent place anymore.
Each layouts can chose which key are localized instead of specifying it
globally for each key.
Important keys are no longer removed from layouts if the 'extra_keys'
mechanism is not working properly. This can happen if language tags
specified in method.xml don't match the user's language.
Removed some currency symbols from some layouts. They are all in the Fn
layer.
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.
Requires two new diacritics: ogonek and dot_above.
The new accents are also added to the Latvian layout as the two language
can be close but not to the other localized layouts. A new mechanism is
needed to reproducibly add extra keys to layouts without manual
placement.
This reverts commit b85b67c2f0.
The Ctrl key was too hard to use in the new position, especially in
combination with arrows or backspace.
Leave the switching key in the numeric layout however, where the Ctrl
key is not very useful. Put Ctrl on the top-right because bottom-right
is where the switching key is in the other layouts.
Allow specifying a layout for programming and add a key for switching to
it easily.
The switching key is placed on the top edge of the space bar.
The option has no effect by default because the ergonomic isn't ideal,
it needs to be enabled explicitly.
Users of Latin-script languages certainly prefer to use one layout (for
programming or not). This feature might be removed in favor of a better
language-switching mechanisms in the future.
These keys are harder to hit as the finger might exit the screen before
traveling enough to hit a corner. It might be particularly harder for
people that use a phone case.
Every layouts are changed, the notable changes are:
- The Escape key is in the bottom-right corner of the first key.
This position looks weird at first but is a lot easier to type.
- The 0 key is on the top-left of the last key on the first row.
It is not like the other digits.
- The Tab key is on the top-right. This might be hard to re-learn.
- Some layouts had more changes to accomodate these new positions.
Co-authored-by: Raphael <rapha.a.r@gmail.com>
Added the middle dot (·) to the Spanish keyboard, in order to be able to type
Catalan words and names. Catalan is spoken in Eastern Spain, and the middle top
is therefore included in standard PC Spanish keyboards.
Also changed the Tab key to an upwards-leftwards swipe, as to follow more closely
the programmer's layout qwerty.xml
This is only to make this layout more similar to the default English layout.
Macrons are not actually used in any language spoken in Spain, but they
appear to be used in some varieties of Nahuatl?
Also added C-cedilla to the N-tilde key. Even if both C-cedilla and N-tilde
are redundant in this keyboard, both letters are a staple of Spain keyboards,
and Spaniards are used to have a dedicated key for C-cedilla in PC keyboards.
* Providing a comprehensible Brazilian Portuguese keyboard layout
removed cedille as it is already provided by an independent key;
changed layout to correspond to the locale
Using the --product option of aapt.
Remove the app name from translations because it is never translated. It
is still possible to translate it by specifying 'product="default"'.
* Clicking twice on CTRL or ALT will lock them in 'ON' state
* Make Locking behaviour optional, configurable in preferences
* Nest the new settings into a different page
To avoid spamming the settings page and repetition in the summaries.
Cannot be a popup unfortunately because that would require API >= 11.
* Add Fn and Meta
Co-authored-by: Jules Aguillon <jules@j3s.fr>
* Added brazilian portuguese translations for app description and settings
* making the swiping option more intelligible
* fix typo on full_description pt-BR translation
Co-authored-by: Igor da Silva de Carvalho <igu@coiso.meanhouse>
For the Dark and Light theme. At the same time, use only "web safe
colors" to have nice round numbers and ensure enough contrasts between
colors.
The background color is kept at the previous value, there's not enough
contrast between the background and the keys but that's better than a
solid black background.
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
`res/xml/qwerty_lv.xml` was updated to add the missing full stop
character (`.`) as it got lost when the bottom row was moved to a
separate XML `res/xml/bottom_row.xml` as it was placed on the
arrows key.
Additionally `?` was relocated, giving its place to the full stop.
Show these characters only for users that have the corresponding locale
installed (a supported eu language for €, en-GB for £).
Add these characters to most layouts.
Depending on the pixel density isn't ideal for a keyboard, which would
render differently depending on the "scaling" accessibility option.
Landscape mode needs a special values. At the same time, increase the
horizontal margin when landscape.
MIUI inverts the colors of the app it thinks doesn't implement dark
themes correctly. Also, it inverts the colors in the dumbest possible
way: it doesn't invert all the colors the same way.
It thinks that presumably because I don't use the Material base themes.
- Add the umlauts back.
- Remove the accents. QWERTZ changes from "programming layout" to
"localized layout".
- Move the '?' away from the edge of the screen.
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).
Currently using the diamond symbol like the history meta key: https://en.wikipedia.org/wiki/Meta_key
However, this key is actually interpreted as the Super/Windows key but
Android calls it "meta" internally.
A customised Latvian specific QWERTY layout (QWERTY (Latvian)) was added
to access all Latvian diacritic characters with a swipe.
Additionally caron, cedille and macron accents were enabled for this
layout.
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.