maul-ui-window (MAUL_UI_WINDOW) connects a context to a Maul Window window: its input, its text input and clipboard, its gamepads and its accessibility. It is a static library of its own, maul-ui-window::maul-ui-window, built against an installed Maul Window or one fetched at its release tag. It follows Maul Window and sits outside Maul UI's 1.x promise until Maul Window reaches 1.0 (Versions). A program on another window library does the same translation itself, and this page lists what that takes.
A glue (muiCreateWindowGlue) belongs to one window and one context root. Each record the program drains from Maul Window goes to muiWindowGlue_HandleEvent, which feeds it to the context and says whether the UI used it. The program hands the rest to its game:
muiWindowGlue_Tick keeps time between records for repeats, so call it once a frame.
One glue per Maul Window context can take the gamepads (enableGamepads in its def), turning their records into navigation for the player a function of the program's names for each pad: the d-pad and the left stick past a threshold are the four directions, the south face button activates and the east cancels (the other way with confirmEast, where the platform's convention puts confirm east), and the shoulders move to the previous and next control. A held direction repeats after 400 ms and then every 100 ms unless the def says otherwise.
muiNode_SetWindowCaret tells the window that a node takes text and where its caret is, so the platform places its candidate window there and shows its input method; the null id stops text input. muiNode_SetWindowTextCaret does the same at a position of a node's text.muiTextBlock_ShowPreedit shows the window's preedit in an editing field, and muiTextBlock_SetPreedit sets one into any text block. After its mwin_eventInputStateReset a window shows no composition, so at a reset of the field's own window give the field an empty preedit, as Maul Window asks of a program. A reset of another window, or a gamepad's, which carries the null window, leaves the composition. The input method's next preedit shows its composition again, and its committed text still arrives as text input.muiWriteWindowClipboard is the text editor's clipboard writer. A paste the editor asks for is requested with muiWindowGlue_RequestPaste, and muiTextBlock_PasteFromWindow takes the window's answer into the block when it arrives, since Maul Window reads the clipboard by request.muiNode_RequestWindowKeyboard shows the on-screen keyboard for a field's input purpose, or hides it.A muiWindowAccess (muiCreateWindowAccess) makes the adapter for the window's platform over Maul Window's native handles, enables the glue's root, and hands the window the adapter's root whenever it changes. Each frame, muiWindowAccess_Update sends the update and performs what assistive technology asked, unless the program takes a request itself. muiWindowAccess_HandleEvent follows the window's scale and accessibility records.
On Maul Window's test backend there is no adapter (muiWindowAccess_IsAdapterCreated is false), and muiWindowAccess_GetTree gives the tree a screen reader would read, which tests can check.
The samples in samples/ are programs on Maul Window with the reference renderer: a tour, controls, ranges, text, pickers, tabs and menus, dialogs, collections and color. Build them with -DMAUL_UI_WINDOW=ON -DMAUL_UI_RHI=ON. Each runs in a window, or headless with --headless, where it checks its own frames, which is how the tests run them.