diff --git a/Userland/Libraries/LibWeb/Internals/Internals.cpp b/Userland/Libraries/LibWeb/Internals/Internals.cpp index 9363ba81d1e..5271d8e2396 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.cpp +++ b/Userland/Libraries/LibWeb/Internals/Internals.cpp @@ -72,6 +72,14 @@ void Internals::send_text(HTML::HTMLElement& target, String const& text) page.handle_keydown(UIEvents::code_point_to_key_code(code_point), 0, code_point); } +void Internals::send_key(HTML::HTMLElement& target, String const& key_name) +{ + auto key_code = UIEvents::key_code_from_string(key_name); + target.focus(); + + global_object().browsing_context()->page().handle_keydown(key_code, 0, 0); +} + void Internals::commit_text() { global_object().browsing_context()->page().handle_keydown(UIEvents::Key_Return, 0, 0); diff --git a/Userland/Libraries/LibWeb/Internals/Internals.h b/Userland/Libraries/LibWeb/Internals/Internals.h index c10ad0a6938..58f76911526 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.h +++ b/Userland/Libraries/LibWeb/Internals/Internals.h @@ -25,6 +25,7 @@ public: JS::Object* hit_test(double x, double y); void send_text(HTML::HTMLElement&, String const&); + void send_key(HTML::HTMLElement&, String const&); void commit_text(); void click(double x, double y); diff --git a/Userland/Libraries/LibWeb/Internals/Internals.idl b/Userland/Libraries/LibWeb/Internals/Internals.idl index f0e5b9c04d5..959a34bf093 100644 --- a/Userland/Libraries/LibWeb/Internals/Internals.idl +++ b/Userland/Libraries/LibWeb/Internals/Internals.idl @@ -10,6 +10,7 @@ interface Internals { object hitTest(double x, double y); undefined sendText(HTMLElement target, DOMString text); + undefined sendKey(HTMLElement target, DOMString keyName); undefined commitText(); undefined click(double x, double y);