This is v2 of a big patch for svkbd. The overall intention is to make
svkbd viable keyboard on a smartphone (the pinephone in particular).
Svkbd is the keyboard of choice in the SXMO project
(https://sr.ht/~mil/Sxmo/) by Miles Alan.
On request by Hiltjo I squashed less commits so the incremental history
should be clearer, although this does result in a much longer patch series
(14 now).
This message summarizes all of the changes. I incorporated all the
feedback I received from Hiltjo, but be aware this occurs in patches 12
and 13 of this series, so bear with me as you work through the earlier
patches. It's an incremental/evolutionary path.
Miles had forked svkbd to make it more mobile friendly (smaller layout etc),
the first
few patches are his unaltered contributions, I hope they come through correctly
as-such when I send them with git-send-mail (thought I had some issues last time
but all turned out well in the end).
I expanded upon his work by adding the following functionality:
* Added Xft and Xinerama support
* Changed default fonts and layouts (default dark theme)
* Multiple layers, svkbd now support as many layers as you want and there's a
button to cycle between them.
* Overlay support, you can now long-press (>1s) certain keys and
an overlay will be put on the keyboard allowing you to enter variants
of the pressed letter. This is used e.g. for input of diacritics or
emojis. The overlay dissappears again as soon as a key is pressed.
(note: this functionality inevitably affects the ability to press
and without release hold certain keys and have them outputted on repeat)
* Added a degree of configurability using command line parameters and
environment variables,
because some run-time flexibility is needed on mobile devices. Layers can be
enabled/disabled on program start, overlay functionality can be disabled on
program start or on the fly (with a button).
* Made the original layouts compatible with the new implementation
The result is now that there are two new layouts:
* mobile-intl - A small international layout optimised for mobile devices.
This layout consists of multiple layers which
can be switched on the fly, and overlays that appear on long-press of
certain keys, adding input ability for
diacritics and other variants, as well as some emoji. The available
layers in this layout are:
* a basic qwerty layer
* a layer for numeric input, arrows, and punctuation
* a layer for function keys, media keys, and arrows
* a cyrillic layer (ЙЦУКЕН)
* a dialer/numeric layer
* mobile-plain - This is the original English layout for sxmo with only a
qwerty layer and numeric/punctuation layer.
I made the new 'mobile-intl' layout the default, as it provides most of the
features
one would expect on a mobile device. The older layouts should also work as they
did, and do not use any layers or overlays.
The README has been updated with more details.
This patch was also submitted downstream to SXMO and partially applied,
see the discussion here:
https://lists.sr.ht/~mil/sxmo-devel/%3C20200718122732.1192398-1-proycon%40anaproy.nl%3E
and here:
https://lists.sr.ht/~mil/sxmo-devel/%3C20200802123647.845631-1-proycon%40anaproy.nl%3E
. But I think it makes most sense to incorporate these changes in svkbd
itself rather than maintain a fork.