Strange behavior of the CefBrowserHost::SendKeyEvent method
Posted: Mon Jul 06, 2020 1:11 pm
Strange behavior of the CefBrowserHost::SendKeyEvent method.
Hello.
After updating the cef framework from version 3865 to version 4103.
When a character input event is generated using the method CefBrowserHost::SendKeyEvent.
Instead of letters (a,b,c), numbers appear in the input field.
cefsimple, lubuntu linux 19 OS x64.
The code below displays '123123123' in the Google input field instead of the 'abcabcabc'.
Hello.
After updating the cef framework from version 3865 to version 4103.
When a character input event is generated using the method CefBrowserHost::SendKeyEvent.
Instead of letters (a,b,c), numbers appear in the input field.
cefsimple, lubuntu linux 19 OS x64.
The code below displays '123123123' in the Google input field instead of the 'abcabcabc'.
- Code: Select all
void SimpleHandler::OnLoadingStateChange(CefRefPtr<CefBrowser> browser,
bool isLoading,
bool canGoBack,
bool canGoForward) {
LOG(INFO) << "SimpleApp::OnLoadingStateChange";
LOG(INFO) << isLoading;
if (false == isLoading) {
CefKeyEvent keyEvent;
char16 chr = 'a';
char16 chr2 = 'b';
char16 chr3 = 'c';
keyEvent.type = KEYEVENT_CHAR;
keyEvent.modifiers = 0;
keyEvent.unmodified_character = chr;
keyEvent.is_system_key = false;
keyEvent.focus_on_editable_field = true;
CefRefPtr<CefBrowserHost> browserHost = browser->GetHost();
for (int i = 0; i < 9; ++i) {
if (0 == (i % 3)) {
keyEvent.character = chr;
int lKeyCode = static_cast<int>(keyEvent.character);
keyEvent.windows_key_code = lKeyCode;
keyEvent.native_key_code = lKeyCode;
}
else if (1 == (i % 3)) {
keyEvent.character = chr2;
int lKeyCode = static_cast<int>(keyEvent.character);
keyEvent.windows_key_code = lKeyCode;
keyEvent.native_key_code = lKeyCode;
}
else if (2 == (i % 3)) {
keyEvent.character = chr3;
int lKeyCode = static_cast<int>(keyEvent.character);
keyEvent.windows_key_code = lKeyCode;
keyEvent.native_key_code = lKeyCode;
}
browserHost->SendKeyEvent(keyEvent);
}
}
}