feat(wayland): text input through zwp_text_input_v3
A window can now say that a text field has the focus and where its caret is — Window::SetTextInput(active, caret rectangle in physical pixels, purpose) — which is what opens the on-screen keyboard on a phone (Maliit under KWin, squeekboard under phoc). What the input method produces comes back as events: committed text as onTextInput, the composing text as onPreedit (empty clears it), deletions around the cursor as onTextInputDelete; done() applies them in the protocol's order. The state a window wants is remembered and sent again whenever the keyboard focus returns to it. The protocol's client code is generated with wayland-scanner 1.26.0 from wayland-protocols' text-input-unstable-v3.xml, under lib/ like the others.
This commit is contained in:
parent
aed6142cce
commit
678f38964f
8 changed files with 1355 additions and 0 deletions
|
|
@ -25,6 +25,15 @@ export namespace Crafter {
|
|||
Vector<float, 2> position;
|
||||
};
|
||||
|
||||
// The input method asks for bytes around the cursor to go (text-input-v3
|
||||
// counts UTF-8 bytes).
|
||||
struct TextDelete {
|
||||
std::uint32_t beforeBytes;
|
||||
std::uint32_t afterBytes;
|
||||
};
|
||||
|
||||
enum class TextInputPurpose : std::uint8_t { Normal, Phone };
|
||||
|
||||
struct ScaleData2D {
|
||||
Vector<std::int16_t, 2, 2> position;
|
||||
Vector<std::int16_t, 2, 2> size;
|
||||
|
|
|
|||
Loading…
Reference in a new issue