Estimado Colega Fernando:
yo lo hago de esta manera y me funciona bien..
Ojala y sea lo que buscas..
#Include "FIVEWIN.CH"
#Include "VKEY.CH"
Function Main()
Define Window oWndMain .. ..
(Ya sabes como va todo esto..)
oWndMain:bKeyDown = { | nKey | ACCESOS(nKey) } //Esto llama a las teclas combinadas
Activate Window oWndMain
//--------------------------//
STATIC FUNCTION ACCESOS(nKey)
/****************************************************
Para accesar con la Tecla CTRL + A := CASE ( nKey == ASC( "A" ) .OR. nKey == ASC( "a" ) ) .AND. GetKeyState( VK_CONTROL )
Para accesar con la Tecla SHIFT + A := CASE ( nKey == ASC( "A" ) .OR. nKey == ASC( "a" ) ) .AND. GetKeyState( VK_SHIFT )
Para accesar con la Tecla CTRL + F2:= CASE ( nKey == VK_F2 .AND. GetKeyState( VK_CONTROL ) )
Para accesar con la Tecla SHIFT + F2:= CASE ( nKey == VK_F2 .AND. GetKeyState( VK_SHIFT ) )
Para accesar con la Tecla F2:= CASE ( nKey == VK_F2 )
Se pueden Usar la teclas "Especiales como: Enter, Retroceso, Flechas de Movimiento, Sup, Ins, Inicio, Final, etc. Revisar el Archivo VKEY.CH"
****************************************************/
//msginfo(nKey)
DO CASE
CASE ( nKey == VK_F2 )
MsgInfo("Uno")
CASE ( nKey == VK_F3 )
MsgInfo("Dos")
CASE ( nKey == VK_F4 )
MsgInfo("Tres")
CASE ( nKey == VK_RETURN .AND. GetKeyState( VK_CONTROL ) )
MsgInfo("Cuatro")
CASE ( nKey == VK_ADD .AND. GetKeyState( VK_CONTROL ) )
MsgInfo("Cinco")
CASE ( nKey == VK_SUBTRACT .AND. GetKeyState( VK_CONTROL ) )
MsgInfo("Seis")
CASE ( nKey == VK_MULTIPLY .AND. GetKeyState( VK_CONTROL ) )
MsgInfo("Siete")
CASE ( nKey == ASC( "C" ) .OR. nKey == ASC( "c" ) ) .AND. GetKeyState( VK_SHIFT )
MsgInfo("Ocho")
CASE ( nKey == ASC( "B" ) .OR. nKey == ASC( "b" ) ) .AND. GetKeyState( VK_CONTROL )
MsgInfo("Nueve")
CASE ( nKey == ASC( "F" ) .OR. nKey == ASC( "f" ) ) .AND. GetKeyState( VK_CONTROL )
MsgInfo("Diez")
ENDCASE
RETURN( .T. )
Espero que pases una muy Feliz Navidad...
Un fuerte abrazo..
