Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
Manejo de pulsaciones de teclas a nivel de formulario
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje Manejo de pulsaciones de teclas a nivel de formulario 
 
Título editado por Administrador

Hola a todos!
Hace tiempo hice una funcion en VB para que segun las teclas que estes pulsando (flechas) te retornaba un valor del 1 al 9.
Por ejemplo, si pulso ARRIBA+ DERECHA te devolvia 9
Lo quiero para hacer jueguecillos 2D

pero en VB usaba el API de windows y aqui no se como hacerlo o sea detectar teclas pero no en un evento keypress de un control sino algo en general, como si fuese a hacer un keylogger.

Os dejo el codigo en VB para que veais a lo que me refiero.

Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Integer
Public Const KEY_TOGGLED = &H1
Public Const KEY_DOWN = &H1000

'Variables
Public K_LEFT As Long     'Variables para guardar el estado de ciertas teclas
Public K_RIGHT As Long
Public K_UP As Long
Public K_DOWN As Long
Public K_SPACE As Long

'//Escanea las teclas de direccion y la de espacio para ver si estan pulsadas
Public Sub GDKInitKeyBoard()
K_LEFT = GetKeyState(vbKeyLeft)
K_RIGHT = GetKeyState(vbKeyRight)
K_UP = GetKeyState(vbKeyUp)
K_DOWN = GetKeyState(vbKeyDown)
K_SPACE = GetKeyState(vbKeySpace)
End Sub

'//Funcion que detecta si una tecla esta siendo pulsada (true)  o no (false)
Public Function GDKIsKeyPressed(Key As Long)
If Key And KEY_DOWN Then
    GDKIsKeyPressed = True
Else
    GDKIsKeyPressed = False
End If
End Function

'//Funcion que detecta si 2 teclas estan siendo pulsadas (true)  o no (false)

Public Function GDKKeysArePressed(key1 As Long, key2 As Long)

If (key1 And KEY_DOWN) And (key2 And KEY_DOWN) Then

    GDKKeysArePressed = True

Else

    GDKKeysArePressed = False

End If

End Function


'Devuelve el valor de la direccion segun el teclado numerico (4 Izquierda, 6 Derecha, 2 Abajo, 9 Arriba+Derecha...)
Public Function GDKGetDirectionFromKeys() As Integer
'Si hay 2 teclas pulsadas
If GDKKeysArePressed(K_UP, K_RIGHT) Then
     GDKGetDirectionFromKeys = 9
     Else
            If GDKKeysArePressed(K_UP, K_LEFT) Then
                GDKGetDirectionFromKeys = 7
            Else
                If GDKKeysArePressed(K_DOWN, K_LEFT) Then
                GDKGetDirectionFromKeys = 1
                Else
                    If GDKKeysArePressed(K_DOWN, K_RIGHT) Then
                    GDKGetDirectionFromKeys = 3
                    Else
                    'Si hay una sola tecla pulsada
                    If GDKIsKeyPressed(K_UP) Then
                    GDKGetDirectionFromKeys = 8
                    Else
                        If GDKIsKeyPressed(K_DOWN) Then
                        GDKGetDirectionFromKeys = 2
                        Else
                            If GDKIsKeyPressed(K_LEFT) Then
                            GDKGetDirectionFromKeys = 4
                            Else
                                If GDKIsKeyPressed(K_RIGHT) Then
                                GDKGetDirectionFromKeys = 6
                                Else
                                GDKGetDirectionFromKeys = 0
                                End If
                            End If
                        End If
                     End If
                  End If
               End If
            End If
        End If
End Function


Agradeceria mucho vuestra ayuda
Gracias
 




===================
Sube tus clases, módulos o funciones a Mi Web

No soy un completo inútil. Por lo menos sirvo de mal ejemplo
 
Juan Luis Lopez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Manejo de pulsaciones de teclas a nivel de formulario 
 
¿no te vale el keypress del formulario (es "general") ?

PUBLIC SUB Form_KeyPress()

  

END


Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Manejo de pulsaciones de teclas a nivel de formulario 
 
No me funciona eso ya lo probé.
Puse que me sacase un mensaje con el key.code y no hace nada.
Y de todas formas creo que en gambas el evento keypress() solo detecta una tecla a la vez y quiero que sean varias
Hay alguna forma de acceder a la api de linux con gambas?

Gracias tu siempre me ayudas!
 




===================
Sube tus clases, módulos o funciones a Mi Web

No soy un completo inútil. Por lo menos sirvo de mal ejemplo
 
Juan Luis Lopez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Manejo de pulsaciones de teclas a nivel de formulario 
 
Echale un vistazo al capitulo 9 Acceso a la Api del libro de gambas de Daniel Campos y Jose Luis Redrejo, alli te dice como acceder a librerias externas.
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Manejo de pulsaciones de teclas a nivel de formulario 
 
PUBLIC SUB Form_KeyPress()
message(key.code)
END

Con eso puedes ver que codigo devuelve cada vez que pulsas una tecla... luego está Key.Up Key.Down, Key.left,..... puedes usarlos como buenamente quieras,

if key.up then
print "ha pulsado hacia arriba!!"
endif
 



 
CanihoJR - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Manejo de pulsaciones de teclas a nivel de formulario 
 
Y ¿Qué pasa si hago...?
Form_KeyPress()
if key.code=key.left and key.code=key.up then
message.info ("Has pulsado izquierda y arriba")
End

 




===================
Sube tus clases, módulos o funciones a Mi Web

No soy un completo inútil. Por lo menos sirvo de mal ejemplo
 
Juan Luis Lopez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Manejo de pulsaciones de teclas a nivel de formulario 
 
A mi no me funciona ese codigo, no detecta la pulsación de dos teclas a la vez, pero si la de una sola:

PUBLIC SUB Form_KeyPress()
   IF key.code = key.left THEN
      message.info("Has pulsado izquierda")
   ELSE
      IF key.code = key.up THEN
         message.info("Has pulsado arriba")
      ENDIF
  ENDIF
END

 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Manejo de pulsaciones de teclas a nivel de formulario 
 
2 Teclas a la vez lo solucionó caniho http://foro.gambas-es.org/viewtopic.php?p=10653#p10653

Off topic
Y el premio para el título menos descriptivo es para... Otra persona..
 



 
última edición por BrunoIV el Miercoles, 07 Septiembre 2011, 18:29; editado 1 vez 
 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: Manejo de pulsaciones de teclas a nivel de formulario 
 
BrunoIV escribió: [Ver mensaje]
2 Teclas a la vez lo solucionó caniho http://foro.gambas-es.org/viewtopic.php?f=5&t=1817

Off topic
Y el premio para el título menos descriptivo es para... Otra persona..


Jajajajajaja
Lo siento.
Gracias por la ayuda.
 




===================
Sube tus clases, módulos o funciones a Mi Web

No soy un completo inútil. Por lo menos sirvo de mal ejemplo
 
Juan Luis Lopez - Ver perfil del usuarioEnviar mensaje privado 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes Manejo De Ficheros soplo General 0 Domingo, 13 Septiembre 2009, 21:12 Ver último mensaje
soplo
No hay nuevos mensajes Como Importar Un Form(formulario) Sobre Ot... metalgearxd General 3 Jueves, 07 Febrero 2013, 20:46 Ver último mensaje
metalgearxd
No hay nuevos mensajes Manejo De Inventario jj231089 Bases de Datos 8 Lunes, 09 Septiembre 2013, 15:54 Ver último mensaje
shordi
No hay nuevos mensajes Manejo De OpenShot jsbsan Videotutoriales 6 Viernes, 10 Junio 2016, 19:17 Ver último mensaje
jsbsan
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron