UI module

send_key

procedureextensionexperimentalsince 0.31.0Source

Queue a key press.

Example↗
edit: Text_Edit;
defer free_text_edit(*edit);
set_contents(*edit, "hi");
ui := headless();
defer free_ui(*ui);
build := (e: *Text_Edit) { for column() { text_field(e); } };
frame(*ui, *edit, build);
click(*ui, find_role(*ui, .TEXT_FIELD));
frame(*ui, *edit, build);
move_caret(*edit, 2);
send_key(*ui, .BACKSPACE);
frame(*ui, *edit, build);
assert(contents(*edit) == "h");
send_key :: (
    ui: *UI_State,
    key: Key_Code,
    mods: Modifiers = .{},
    repeat: bool = false
)

Queue a key press.

Parameters

ui: *UI_State
the UI to queue the event on.
key: Key_Code
the key pressed.
mods: Modifiers = .{}
the modifiers held.
repeat: bool = false
true for an auto-repeat rather than a fresh press.
Example↗
edit: Text_Edit;
defer free_text_edit(*edit);
set_contents(*edit, "hi");
ui := headless();
defer free_ui(*ui);
build := (e: *Text_Edit) { for column() { text_field(e); } };
frame(*ui, *edit, build);
click(*ui, find_role(*ui, .TEXT_FIELD));
frame(*ui, *edit, build);
move_caret(*edit, 2);
send_key(*ui, .BACKSPACE);
frame(*ui, *edit, build);
assert(contents(*edit) == "h");

See also