On Fri, 26 Sep 2008, Abeb wrote: > The trick is to trap the keypress of numlock ( or other control key)
And your received correct answer. Sample code below. It uses two different methods to extract cotnrol key state. But please remember that not all GTs can support such functionality. best regards, Przemek #include "inkey.ch" #include "hbgtinfo.ch" proc main() local cStatus, iStatus, nKey clear screen while ( nKey := inkey( 0.1 ) ) != K_ESC iStatus := hb_gtInfo( HB_GTI_KBDSHIFTS ) cStatus := "" cStatus += iif( HB_BITAND( iStatus, HB_GTI_KBD_SHIFT ) != 0, ; "SHIFT ", " " ) cStatus += iif( HB_BITAND( iStatus, HB_GTI_KBD_CTRL ) != 0, ; "CTRL ", " " ) cStatus += iif( HB_BITAND( iStatus, HB_GTI_KBD_ALT ) != 0, ; "ALT ", " " ) cStatus += iif( HB_BITAND( iStatus, HB_GTI_KBD_SCROLOCK ) != 0, ; "SCRLOCK ", " " ) cStatus += iif( HB_BITAND( iStatus, HB_GTI_KBD_NUMLOCK ) != 0, ; "NUMLOCK ", " " ) cStatus += iif( HB_BITAND( iStatus, HB_GTI_KBD_CAPSLOCK ) != 0, ; "CAPSLOCK ", " " ) cStatus += iif( HB_BITAND( iStatus, HB_GTI_KBD_INSERT ) != 0, ; "INSERT ", " " ) @ 1, 0 say cStatus cStatus := "" cStatus += iif( KSETINS(), "INS ", " " ) cStatus += iif( KSETCAPS(), "CAPS ", " " ) cStatus += iif( KSETNUM(), "NUM ", " " ) cStatus += iif( KSETSCROLL(), "SCROLL ", " " ) @ 2, 0 say cStatus if nKey==asc("C") .or. nKey==asc("c") KSETCAPS(!KSETCAPS()) elseif nKey==asc("I") .or. nKey==asc("i") KSETINS(!KSETINS()) elseif nKey==asc("N") .or. nKey==asc("n") KSETNUM(!KSETNUM()) elseif nKey==asc("S") .or. nKey==asc("s") KSETSCROLL(!KSETSCROLL()) endif enddo return _______________________________________________ Harbour mailing list Harbour@harbour-project.org http://lists.harbour-project.org/mailman/listinfo/harbour