Capturar mas de una tecla simultaneamente?

1,003 views
Skip to first unread message

Joyal

unread,
Feb 29, 2008, 8:33:40 PM2/29/08
to JavaSOS
que tal grupo? , hay alguna manera de que en un JFrame, con
Keylistener, me capture mas de una tecla simultaneamente?

David Castañeda

unread,
Mar 1, 2008, 6:13:26 PM3/1/08
to jav...@googlegroups.com
???? not a clue ????
a nivel de hardware es posible?? osea el SO o driver recive las teclas abc si las presiono al tiempo?



On Fri, Feb 29, 2008 at 8:33 PM, Joyal <dhgo...@gmail.com> wrote:

que tal grupo? , hay alguna manera de que en un JFrame, con
Keylistener, me capture mas de una tecla simultaneamente?





--
David Castañeda R.

Javier Rapoport

unread,
Mar 1, 2008, 8:21:50 PM3/1/08
to jav...@googlegroups.com
mmmm... a nivel metafisico y fisico o esas cosas no se bien como funciona...
a nivel hardware se feascientemente que no existe posibilidad que sucedan dos cosas exactamente al mismo tiempo (ahora con el tema del multicore no se como quedo el status de este dogma, pero creo que no cambio demasiado)
 
entonces... no hay forma alguna para que un teclado envie dos teclas juntas, siempre es una y despues la otra...
mas alla de la increiblisima velocidad con la que se tipee...
a lo sumo lo que puede mandar tambien son combinaciones de teclas, pero generalmente los keylisteners funcionan bien con eso (saben que se apreto CTRL + T por ejemplo... es un tema de orden de KeyUp y KeyDown, no simplemente de KeyPress... ya que logicamente un tecleo son dos eventos de la tecla)
 
bueno, basta de parafernalia
 
resumen: no necesitas configurar ni hacer nada raro para que ningun listener capture mas de una tecla simultaneamente, ya que eso no puede suceder... siempre es una y despues otra y despues otra y despues... quizas nada, porque el que tecleaba se aburrio
 
slds!

Joyal

unread,
Mar 1, 2008, 9:24:49 PM3/1/08
to JavaSOS
asi lo creo, si presiono por ejemplo si es un juego, y presiono
flecha hacia arriba que resta la coordenada Y y flecha hacia la izq ,
que resta X, deberia darme un movimiento diagonal, mas o menos asi es
lo que necesito

On 1 mar, 19:13, "David Castañeda" <david...@gmail.com> wrote:
> ???? not a clue ????
> a nivel de hardware es posible?? osea el SO o driver recive las teclas abc
> si las presiono al tiempo?
>

Leonardo Alifraco

unread,
Mar 2, 2008, 9:09:38 AM3/2/08
to jav...@googlegroups.com
yo no se la respuesta, pero creo que se refiere a mantenerla presionada, por ejemplo: CTRL + ALT + SUPR
--
Leo

Javier Rapoport

unread,
Mar 2, 2008, 8:31:22 PM3/2/08
to jav...@googlegroups.com
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!

Esteban Cabezudo

unread,
Mar 2, 2008, 10:36:55 PM3/2/08
to jav...@googlegroups.com
A nivel de hardware es posible identificar si hay varias teclas pulsadas simultáneamente ya que el teclado envía un código cuando se presiona la tecla y otro código cuando se suelta. No lo he probado en Java pero puedes capturar los dos eventos y guardar en alguna estructura esta información para saber que teclas están presionadas en un momento dado.
Si puedo probar con un ejemplo les paso un enlace.

Esteban Cabezudo

unread,
Mar 2, 2008, 11:28:51 PM3/2/08
to jav...@googlegroups.com
Pido discuplas por el ejemplo en JavaScript pero prueba que si se pueden detectar varias teclas presionadas (hay un extraño límite).
En Firefox funciona al presionar la siguiente tecla dos veces. Supongo que porque al presionar la primer vez se detiene el evento de repetición. En iexplorer funciona correctamente, los dos navegadores manejan distinto la captura de teclado y el firefox dispara un evento cuando se mantiene la tecla presionada por el tema de la repetición y lo único que quería probar era que si se pueden detectar varias teclas.
Extraño límite de 7 teclas tengo aquí.
Ahí les va.

http://cabezudo.net/pruebas/teclado.html

Saludos y espero que les sirva el ejemplo.
Reply all
Reply to author
Forward
0 new messages