Page 1 of 1

Lectura del teclado con convinación de teclas

Posted: Thu Apr 05, 2012 2:46 pm
by jgayoso
A la comunidad FiveLinux, tengo el siguiente problema:

Tengo un teclado NCR que tiene teclas especiales, el proveedor me indica que esas teclas funcionan igual como cuando uno preciona Control + A, Alt + B, pero con inkey() siempre me entrega un valor 65453, para cualquier tecla especial.

Local fpx:=0, lModal:=.T., oGet, cPaso:=' '
DEFINE DIALOG oDlg TITLE " " SIZE 350, 60
@2,1 say hb_strtoutf8(padc(alltrim(cMsg),50)) OF oDlg SIZE 330,nAltoLetra
@10,4 GET oGet VAR cPaso OF oDlg SIZE 70, nGetAltoLetra PICTURE "X" UPDATE
oGet:bKeyDown = { | nKey | If( nKey <> 0, ( nLastkey:=nKey, fpx:= nKey, lModal:=.F., oDlg:End() ),) } //Esc
ACTIVATE DIALOG oDlg CENTER

En la variable nLastKey me entrega 65453

¿Como puedo hacer para saber que convinación de tecla se preciono?


Estoy trabajando con FiveLinux y Harbourd para Linux, Suse Linux Interprise 11.1

Desde ya se agradece y quedo a la espera de una posible solución.

Jorge Gayoso
Santiago de Chile

Re: Lectura del teclado con convinación de teclas

Posted: Mon Apr 09, 2012 12:37 pm
by jgayoso
Ya solucione mi problema, modificando una linea y agregando una función:

oGet:bKeyDown = { | nKey | iif( .not. fTeclaCombinacion(@nkey,@nTeclaCombinacion) .and. nkey > 0, (msgalert(str(nTeclaCombinacion)+' '+str(nkey)), nLastkey:=nKey, fpx:= nKey, lModal:=.F., oDlg:End() ), ) }

Function fTeclaCombinacion(nkey,nTeclaCombinacion)
Local lRetorno:=.F.

if ascan({K_HOME,K_END,K_PAGEUP,K_PAGEDOWN,K_UP,K_DOWN,K_TAB,K_LEFT,K_RIGHT,K_DEL,K_BS,K_SHIFT,K_RSHIFT,K_CTRL,K_UPPER,K_KEYPAD0,K_ALT,K_ALT_GR,K_F_ESPECIAL},nkey)>0
nTeclaCombinacion:=nkey
nkey:=0
lRetorno:=.F.
endif
Return lRetorno

Re: Lectura del teclado con convinación de teclas

Posted: Mon Apr 09, 2012 3:56 pm
by Antonio Linares
Jorge,

Gracias por compartirlo :-)