This project aims to deliver a minimal but practically usable implementation of a wlroots on-screen keyboard in legible C. This will only be a keyboard, not a feedback buzzer, led blinker, or anything that requires more than what's needed to input text quickly. The end product should be a static codebase that can be patched to add new features.
There are some areas that still need work:
You'll need the following developer packages
Make any customizations you would like in config.def.h
and run make
The default set of layouts is called mobintl
(mobile international), which groups various layouts aimed at mobile devices
and also attempts to accommodate various international users. The resulting binary is called wvkbd-mobintl
.
You can, however, define your own layouts by copying and modifying layout.mobintl.h
and keymap.mobintl.h
(replace mobintl
for something like yourlayout
). Then make your layout set using make LAYOUT=yourlayout
, and
the resulting binary will be wvkbd-yourlayout
Run wvkbd-mobintl
(or the binary for your custom layout set).
You can switch between the layouts/layers of the keyboard by pressing the
⌨ key (little keyboard) the bottom-left (press shift to iterate back instead of
forward). If you only want a subset of the available layers, you can define
which you want and in what order you want to cycle through them using the
-l
parameter (or --landscape-layers
for landscape mode). This takes takes a ordered comma separated list of layout names
that are defined in your layout set.
The keyboard can be hidden by sending it a SIGUSR1
signal, shown again by sending it SIGUSR2
or toggled by sending it SIGRTMIN
.
This saves some start up time and may be appropriate in some low-resource environments.
Wvkbd has an output mode -o
that will echo its output to standard output. This facility can be used if users want
audio/haptic feedback, a feature explicitly out of scope for wvkbd. To achieve this, simply pipe wvkbd's output through the external tool
clickclack:
$ wvkbd-mobintl -l simple,special,emoji -o | clickclack -V -f keypress.wav
Another output mode, -O
will let the keyboard output keys which are swiped over. It can be used by an external program, such as swipeGuess to get swipe-typing support.
$ wvkbd-mobintl -O | swipeGuess.sh words.txt | completelyTypeWord.sh
The default mobile international layout features a Compose button (Cmp
)
which, when combined with another key, opens up a layout that offers variants
for that key. This is similar to functionality that other keyboards implemented
using a long press (wvkbd has no such notion, holding a key will repeat
it like on a physical keyboard).
For example, press Cmp + a to access variants with diacritics like á,à,â,ä, etc..
Most layouts also feature the following that are less obvious:
.
to access more punctuation-
or ,
to access 'mathematical' symbols (+,-,=,etc)'
or 0
or 9
to access more brackets and quotesq
to access emojisLast, but not least, pressing Cmp + space or Cmp + ⌨ or Cmp + Abc opens up an index that allows you to immediately jump to any layout by name, even layouts not explicitly added to your layers on startup.
Any contributions are welcome, there are two ways to contribute, the first one is preferred:
git mail
to ~mil/sxmo-devel@lists.sr.ht, follow these contribution guidelines. Questions can also be asked on Sxmo's mailing lists.This project was started by John Sullivan and is currently being maintained by the Sxmo project, whose maintainers will ensure both git remotes are kept in sync at all times.
For code contributions, please run make format
(requires clang-format
)
before sending a patch (opening a PR) and include as much relevant detail as
possible.