text_manager
internalsThe text_manager
is a program that serves the text editing needs of Fuchsia clients.
text_manager
serves the following discoverable FIDL APIs, which are offered to the consumers of the text entry APIs.
fuchsia.ui.input/ImeService
: this is the first point of contact for a text consumer that requires text editing capabilities. Clients call this API to establish two-way communication between the consumer (text field owner) and text_manager
.
There is some duplication of functionality that should be removed in the steady state. See fuchsia.input.virtualkeyboard/Manager
.
fuchsia.ui.input3/Keyboard
: used to accept keyboard event listener registrations.
fuchsia.ui.input3/KeyEventInjector
: used to receive keyboard events from the input pipeline.
fuchsia.ui.keyboard.focus/Controller
: used to accept focus change data, primarily intended for getting messages from the input pipeline.
When ImeService.GetInputMethodEditor
is called, two more connections are established:
fuchsia.ui.input/InputMethodEditorClient
: served by the consumer, used by the text manager to communicate the change in the text edit box state to the consumer.
fuchsia.ui.input/InputMethodEditor
: served by text manager, used to communicate the text input, and client commands.
The text manager entry point is main.rs.
All the services that text manager provides are declared in main
itself. This is useful to know because the .cml
“capabilities” and “offer” sections must be reconstructed from the code.