Java Chromium Embedded Framework (JCEF). A simple framework for embedding Chromium-based browsers in other applications using the Java programming language.
Describe the bug
When a key event is sent to CEF using offscreen rendering, the native code will only bind keys in the standard US layout when in macOS. This is because the code in charge of obtaining the virtual keycode is hardcoded to only work with this layout.
To Reproduce
Steps to reproduce the behavior:
Create a browser in OSR mode.
Type any key that isn't part of the US keyboard layout (e.g. á,ñ`).
You'll see that the key is ignored. This does not occur when OSR is disabled.
Expected behavior
When typing, the key event should be forwarded to CEF.
Screenshots
Versions (please complete the following information):
OS: MacOS 13.0.1
Java Version: OpenJDK 17
JCEF Version: a0af101
CEF Version: 110.0.25
Additional context
Does the problem reproduce with the JCEF simple or detailed sample application at the same version?
Yes.
Does the problem reproduce with the CEF cefclient or cefsimple sample application at the same version?
Yes.
Does the problem reproduce with Google Chrome at the same version?
No.
Describe the bug When a key event is sent to CEF using offscreen rendering, the native code will only bind keys in the standard US layout when in macOS. This is because the code in charge of obtaining the virtual keycode is hardcoded to only work with this layout.
To Reproduce Steps to reproduce the behavior:
á,
ñ`). You'll see that the key is ignored. This does not occur when OSR is disabled.Expected behavior When typing, the key event should be forwarded to CEF.
Screenshots
Versions (please complete the following information):
Additional context Does the problem reproduce with the JCEF simple or detailed sample application at the same version? Yes.
Does the problem reproduce with the CEF cefclient or cefsimple sample application at the same version? Yes.
Does the problem reproduce with Google Chrome at the same version? No.
Add any other context about the problem here. Here's an useful discussion on how to implement layout-independent char->keycode translation: https://stackoverflow.com/questions/1918841/how-to-convert-ascii-character-to-cgkeycode/1971027#1971027