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.
Extend the height of the label when a glyph goes past the descent.
Also truncate the bitmap when the height is final.
Also remove statements added for debugging.
Some glyphs, specifically some Arabic text, may have a top that is
higher than the ascent value of the font, or a bottom that is lower than
the descent value of the font. For glyphs that fit inside the area, the
ascent and descent should be used for aligning with the top or bottom of
a key respectively. For glyphs that do not, align the top and bottom of
the text with the top and bottom of the key.
The NoSymbol and XF86Fn keysyms are already filtered out because they
are not available and because the function key is a keysym modifier.
Remove the sanitizing.
When one modifier key is released, only the same key is drawn, even if
there are other identical modifier keys. Be consistent with this
optimization, and only draw the exact key that was pressed when a
modifier key is pressed.
Most future modifier keys will be accents that wouldn't be represented
with an actual key press. Only emit modifier keys as key presses if they
are of the other type (Ctrl, Alt, Shift).
Keys are unsupported if they have no name, or if xkeysym uses a
different format for their name (e.g. XF86Fn). Skip key symbols that
have no name and can't be added to the text keymap.
To support this, set the availability of each keysym before updating the
keymap.
The SXMO (sway) environment expects that the on-screen keyboard does not
handle visibility by itself. Add a new target that ignores the program's
own show/hide requests and shows the keyboard on startup.
If the key value can emit text, it should put the text to be emitted in
the text field. It should not put any special symbol for the key label,
and it should instead be a special case in the display_label() method.