New features:
- evfb and evfbo backend (!4)
- configurable colors (!7)
Fixes:
- meta and switch layout keys are pressable even when they can't be emitted as key presses
- keysym modifiers correctly update which key presses can be emitted
- keep imgref and polling dependencies up-to-date
During a normal boot in the postmarketOS initramfs, the TTY is not
easily accessible. The on-screen keyboard is expected to send the
password to stdout instead of to a uinput device. Add the evfbo backend
to support full-disk encryption.
Outside of a terminal emulator or web browser, this typing experience
can be useful outside the DE, such as in the TTY or when entering a
password for full-disk encryption. Add a target that uses the bare
hardware to allow the keyboard to be deployed in more flexible
environments.
The imgref and polling dependencies have an API that shouldn't break
without a major version change. Rely solely on the major version number
to tell Cargo which package to use.
In !7, the default colors had their red and blue channels swapped. There
doesn't seem to be a stated (or inferrable) reason, so revert the color
change back.
The locked label color is a special color that displays when the user
holds a modifier key for very long. In !7, this locked color replaced
the color for the pressed non-modifier key with no explanation. Revert
the change and use the "label_pressed" color for a non-modifier key
being pressed.
Some modifiers update key values. If the old values are unsupported
(e.g. "¢") but the new values are supported (e.g. "c"), the keyboard
should let the user press the new value. Check if the new key value
is supported instead of the old one.
The zbus and tokio dependencies have an API that shouldn't break without
a major version change. Rely solely on the major version number to tell
Cargo which package to use.
For bindgen, macro version numbers should be omitted.
According to the layout XML format, keys prefixed with "loc " should
have an option to hide or show them. Add a property to facilitate this
configuration. Keep the array sorted so it can be binary searched for
the existence of an element.
Some characters, such as U+03A3 (GREEK CAPITAL LETTER SIGMA) don't
convert directly to the proper key symbol. Use a xkeysym library
function to do correct conversions.
When key events can be emitted with the Emulated Input protocol, this
can cause more keys to be supported. Update the supported keys when a
keyboard is received so some keys can be enabled immediately, without
switching the layout.
Fixes: 030ca29ddd ("wayland: add optional reis emulated input support")
The SHM pools in the buffer code can be removed immediately after
creation. This allows the filesystem to be clean after the application
closes. After files are unlinked, they are not deleted until all open
file descriptors are closed, such as the handle passed to Wayland.
Unlink the keymap file after it is created from the filesystem.
Since the numeric layout got supported, the XML file defining the layout
was required. Add it to the list of required layouts in the README so
users can still install and run the current keyboard.
Fixes: e5d0716c0f ("core: button: add support for layout switching keys")
Link: https://gitlab.com/flamingradian/unfettered-keyboard/-/issues/7
Key presses can be sent to kwin with the EI (Emulated Input) protocol.
Connecting is handled by the xdg-desktop-portal D-Bus APIs and the
current D-Bus implementation is large. Add a separate target for KDE.
The Emulated Input (EI) protocol allows applications to send input
events through a distinct connection to the server, instead of through
Wayland. Add support for sending key presses through this protocol.
The ashpd and reis dependencies are required for using an
xdg-desktop-portal to connect to an Emulated Input Server. Add them to
prepare for better support on KDE.
The code has always been licensed as GPL-3.0-only as shown by the SPDX
License Identifiers. Gitlab does not understand this and needs to stop
mislabelling the license. Rename the license so the inaccurate license
identifier stops showing on Gitlab.