RFR: 8282217: Key events (key char and key code) changed for Swiss keyboard

Nikita Provotorov duke at openjdk.org
Fri Jan 13 22:11:04 UTC 2023


On Fri, 6 Jan 2023 22:07:33 GMT, Alisen Chung <achung at openjdk.org> wrote:

> Removed check for MapVirtualKeyEx return value causing some keys to become undefined

Hello, guys! I've just checked behavior of the fix and it actually breaks the case described in the [JDK-8139189](https://bugs.openjdk.org/browse/JDK-8139189) (to install `Programmer Dvorak` layout -> Press the key between LShift and Z on QWERTY keyboards -> Press the key C twice (which is the `I` key on the default US QWERTY layout)

Generated events before the patch (the single `č` is typed):

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65312,keyText=Compose,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_STANDARD,rawCode=226,primaryLevelUnicode=4,scancode=86,extendedKeyCode=0xff20]

java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65312,keyText=Compose,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_STANDARD,rawCode=226,primaryLevelUnicode=4,scancode=86,extendedKeyCode=0xff20]

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=67,keyText=C,keyChar='c',keyLocation=KEY_LOCATION_STANDARD,rawCode=67,primaryLevelUnicode=99,scancode=23,extendedKeyCode=0x43]

java.awt.event.KeyEvent[KEY_RELEASED,keyCode=67,keyText=C,keyChar='c',keyLocation=KEY_LOCATION_STANDARD,rawCode=67,primaryLevelUnicode=99,scancode=23,extendedKeyCode=0x43]

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=67,keyText=C,keyChar='c',keyLocation=KEY_LOCATION_STANDARD,rawCode=67,primaryLevelUnicode=99,scancode=23,extendedKeyCode=0x43]

java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='?',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0,extendedKeyCode=0x0]

java.awt.event.KeyEvent[KEY_RELEASED,keyCode=67,keyText=C,keyChar='c',keyLocation=KEY_LOCATION_STANDARD,rawCode=67,primaryLevelUnicode=99,scancode=23,extendedKeyCode=0x43]



Including the patch (`cc` are typed):

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=65312,keyText=Compose,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=226,primaryLevelUnicode=4,scancode=86,extendedKeyCode=0xff20]

java.awt.event.KeyEvent[KEY_RELEASED,keyCode=65312,keyText=Compose,keyChar=' ',keyLocation=KEY_LOCATION_STANDARD,rawCode=226,primaryLevelUnicode=4,scancode=86,extendedKeyCode=0xff20]

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=67,keyText=C,keyChar='c',keyLocation=KEY_LOCATION_STANDARD,rawCode=67,primaryLevelUnicode=99,scancode=23,extendedKeyCode=0x43]

java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='c',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0,extendedKeyCode=0x0]

java.awt.event.KeyEvent[KEY_RELEASED,keyCode=67,keyText=C,keyChar='c',keyLocation=KEY_LOCATION_STANDARD,rawCode=67,primaryLevelUnicode=99,scancode=23,extendedKeyCode=0x43]

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=67,keyText=C,keyChar='c',keyLocation=KEY_LOCATION_STANDARD,rawCode=67,primaryLevelUnicode=99,scancode=23,extendedKeyCode=0x43]

java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='c',keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0,extendedKeyCode=0x0]

java.awt.event.KeyEvent[KEY_RELEASED,keyCode=67,keyText=C,keyChar='c',keyLocation=KEY_LOCATION_STANDARD,rawCode=67,primaryLevelUnicode=99,scancode=23,extendedKeyCode=0x43]

-------------

PR: https://git.openjdk.org/jdk/pull/11887



More information about the client-libs-dev mailing list