justamente a eso iba...
nunca van a haber dos teclas que se presionan simultaneamente...
a lo sumo lo que tenes es una secuencia de eventos asi:
1 - se PRESIONO la tecla ARRIBA
2 - se PRESIONO la tecla DERECHA
3 - se SOLTO la recla ARRIBA
4 - se SOLTO la tecla DERECHA
justamente por lo que decia de arriba que "teclear una tecla" (valga la redundancia) es en realidad el conjunto de dos eventos (KeyDown y KeyUp o KeyPress y KeyRelease o como querian decirle...)
lo que tendrias que hacer en tu listener es buscar estos eventos de apretar y soltar e ir almacenando y jugando con timers... onda saber que se presiono tal tecla y no se solto por tanto tiempo, etc, etc...
inclusive esto CASI seguro que el teclado, cuando la tecla presionada es una combinacion, envia una combinacion de teclas...
es lo que se define en el intervalo de repeticion y esas cosas en las configuraciones del teclado...
es decir, para el teclado tendrias estos eventos:
- ARRIBA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA PRESIONADO y DERECHA PRESIONADO
- ARRIBA SOLTADO Y DERECHA PRESIONADO
- DERECHA SOLTADO
o cosas asi...
tendrias que revisar bien que informacion te viene del teclado (que tenes en el listener)
onda... ponelo a correr un toque guardando todos los eventos en un log (consola, texto, whatever) para poder analizar bien que es lo que te esta llegando para poder deducir que y como es lo que tenes que hacer
slds!