¿Cómo puedo simular perfectamente KeyEvents?

¿Cómo puedo construir mi propiaKeyEvent objetos que perfectamente (o muy de cerca) coinciden con los que recibiría de unKeyListener cuando el usuario final escribe algo?

Por ejemplo, tengo una distribución de teclado ISO del Reino Unido y para escribir el" personaje presionoShift+2. Si grabo esto en unaJFrame con unKeyListener, Recibo los siguientes eventos:

java.awt.event.KeyEvent[KEY_PRESSED,keyCode=16,keyText=Shift,keyChar=Undefined keyChar,modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_LEFT,rawCode=16,primaryLevelUnicode=0,scancode=42,extendedKeyCode=0x10] on frame0
java.awt.event.KeyEvent[KEY_PRESSED,keyCode=50,keyText=2,keyChar='"',modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_STANDARD,rawCode=50,primaryLevelUnicode=50,scancode=3,extendedKeyCode=0x32] on frame0
java.awt.event.KeyEvent[KEY_TYPED,keyCode=0,keyText=Unknown keyCode: 0x0,keyChar='"',modifiers=Shift,extModifiers=Shift,keyLocation=KEY_LOCATION_UNKNOWN,rawCode=0,primaryLevelUnicode=0,scancode=0,extendedKeyCode=0x0] on frame0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=16,keyText=Shift,keyChar=Undefined keyChar,keyLocation=KEY_LOCATION_LEFT,rawCode=16,primaryLevelUnicode=0,scancode=42,extendedKeyCode=0x10] on frame0
java.awt.event.KeyEvent[KEY_RELEASED,keyCode=50,keyText=2,keyChar='"',keyLocation=KEY_LOCATION_STANDARD,rawCode=50,primaryLevelUnicode=50,scancode=3,extendedKeyCode=0x32] on frame0

Quiero crear un método que daría la" como un parámetro char, y devolvería una matriz de KeyEvents como se indica anteriormente.

Mis problemas son:

En elKEY_PRESSED yKEY_RELEASED eventos,keyChar='"' representa el personaje que fue presionado ("), sin embargo, elkeyCode=50 se refiere al valor ASCII "no desplazado" (también conocido como2). Necesito saber cómo obtener este valor no cambiado solo del" personaje.

Este valor no cambiado también será diferente para diferentes diseños de teclado. Por ejemplo, el diseño ANSI de EE.UU. requiereShift+' para escribir el" clave, que significa lakeyCode sería 39 en lugar de 50.

En algunas distribuciones de teclado, se requiere la tecla Shift para escribir una tecla, pero no en otras. los# personaje, por ejemplo, requiereShift+3 en los teclados ANSI de EE. UU., pero no requiere ningún cambio en los teclados ISO del Reino Unido. Necesito saber si debo simular los eventos de cambio / pulsación de cambio y proporcionar un modificador de cambio.

Cualquier apreciación sobre cómo resolver estos problemas sería apreciada. También debo tener en cuenta que al usar elRobot La clase no puede ser usada en mi situación.

Respuestas a la pregunta(1)

Su respuesta a la pregunta