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.
With the new layout switching, the size of the layout can change. The
scale depends on the size of the layout. Update the graphics scale when
the layout changes.
The core may need to control the scale of the input positions to layout
positions, such as when the layout is changed. Handle the scaling of
input positions in the button of the keyboard.
Having multiple input methods at once causes behaviour defined by the
Wayland compositor. In a recent update by Phoc, the most recently
started input method would take priority to demonstrate the instability.
Since the keyboard driver for Wayland can handle a emitting input
without an input method, only try to bind to an input method when it is
enabled.
Having multiple input methods at once causes behaviour defined by the
Wayland compositor. In a recent update by Phoc, the most recently
started input method would take priority to demonstrate the instability.
Add a configuration option so the Wayland input method can be disabled
to accommodate a second input method.
Also update the README with the new option.
The main layout (e.g. latn_bone.xml and latn_neo2.xml) may disable the
bottom row by adding a property to the XML keyboard tag. Omit the bottom
row when this is the case.
In the Unexpected Keyboard, the bottom row always has the width of the
main layout despite being defined with a width of 10 units. Resize the
bottom row according to the main layout to improve layouts like
arab_pc.xml and numeric.xml.
Some fields in the layout can be abandoned when parsing is complete. The
code for opening and parsing a file is partially duplicated for the main
layout and bottom row. Separate the parsing into a new struct to make
the individual results easier to work with.
Some applications like Waydroid and Klavaro (with the Enter key) ignore
the keyboard layout and expect a key code from the Linux input UAPI.
Assign static key codes for keys on the QWERTY layout so some keys can
still work with these applications.
Some applications have features (like typing Unicode codepoints in foot)
that can only be used with key presses. Add a Meta key to allow the user
to always send a keypress.
When a configure event is emitted, the updated graphical dimensions are
sent unscaled. Currently, the application applies fractional scaling to
the dimensions by truncating the scale to an integer. This is incorrect,
as scales could be fractional and the compositor would expect the
fractional scale to be applied to the width and height. Truncate the
width and height after scaling instead of truncating the scale to reduce
the right and bottom seams to 0-1 pixels.