Hi All
I am now trying to resend the XKeyEvent i get to cef using CefBrowserHost::SendKeyEvent. But i still have some issues I am struggling with. With most printable keys like 'b'
'c', I can get it sent to cef correctly, However, character like 'r' never get sent to cef. With non-printable keys like Caps Lock and Backspace, cef got characters in the editable field as well, take backspace key as an example, when i press backspace key, I got '(' in the text field. Whats wrong with my code or is there any example of converting XKeyEvent to CefKeyEvent in linux? Here is the code snippet:
....
XNextEvent(display, &e)
case KeyPress:
XLookupString(&e.xkey, buffer, bufsize, &keysym, &compose);
evt.type = KEYEVENT_RAWKEYDOWN;
evt.modifiers = CefGetKeyboardModifiers(e.xkey.state);
evt.windows_key_code = e.xkey.keycode;
evt.native_key_code = e.xkey.keycode;
evt.is_system_key = 0;
evt.character = keysym;
evt.unmodified_character = keysym;
browser_host->SendKeyEvent(evt);
case KeyRelease:
XLookupString(&e.xkey, buffer, bufsize, &keysym, &compose);
evt.type = KEYEVENT_KEYUP;
evt.modifiers = CefGetKeyboardModifiers(e.xkey.state);
evt.windows_key_code = e.xkey.keycode;
evt.native_key_code = e.xkey.keycode;
evt.is_system_key = 0;
evt.character = keysym;
evt.unmodified_character = keysym;
browser_host->SendKeyEvent(evt);
evt.type = KEYEVENT_CHAR
browser_host->SendKeyEvent(evt);
....