On Tue, 24 Jan 2023 20:14:20 GMT, Alisen Chung <[email protected]> wrote:
>> Removed check for MapVirtualKeyEx return value causing some keys to become >> undefined > > Alisen Chung has updated the pull request incrementally with one additional > commit since the last revision: > > readded check for dead key leading bit, added separate check for group > separator Changes requested by [email protected] (no known OpenJDK username). src/java.desktop/windows/native/libawt/windows/awt_Component.cpp line 3620: > 3618: int converted = 1; > 3619: UINT ch = ::MapVirtualKeyEx(wkey, 2, GetKeyboardLayout()); > 3620: if (ch & 0x80000000 && ch != 0x800000A8) { 1. It doesn't work for third key press in case of key's pressing 3 times in a row 2. Adding the workaround here is a quite dangerous because it affects the state of the `deadKeyActive` flag. I think it could break some exotic cases, e.g. when the char is used as a [chained dead key](https://en.wikipedia.org/wiki/Dead_key#Chained_dead_keys). Actually I don't believe that adjusting logic of reporting keyChars for KEY_PRESSED events is the right way. The specification clearly says > the result of the getKeyChar method is guaranteed to be meaningful only for > KEY_TYPED events So clients can't depend on that IMHO. ------------- PR: https://git.openjdk.org/jdk/pull/11887
