¿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.