Possible fixes are:
1) remove the item click at least on Num and Caps (but I would remove it on Ins also).
2) use the appropriate API to correctly change the lights status.
For the point 2, the following sample is from Francesco Saverio Giudice:
Code: Select all | Expand
#include "common.ch"PROCEDURE MAIN() ? "Attiva capslock" SetCapsLock( TRUE ) Inkey( 0 ) ? "Attiva numlock" SetNumLock( TRUE ) Inkey( 0 ) ? "Stato CAPSLOCK : " + IIF( GetCapsLock(), "ON ", "OFF" ) ? "Stato NUMLOCK : " + IIF( GetNumLock(), "ON ", "OFF" ) Inkey( 0 ) ? "Disattiva capslock" SetCapsLock( FALSE ) Inkey( 0 ) ? "Disattiva numlock" SetNumLock( FALSE ) Inkey( 0 ) ? "Stato CAPSLOCK : " + IIF( GetCapsLock(), "ON ", "OFF" ) ? "Stato NUMLOCK : " + IIF( GetNumLock(), "ON ", "OFF" ) Inkey( 0 )RETURN#pragma BEGINDUMP#include <windows.h>#include "hbapi.h"#define TOGGLED 0x0001void SetKeyLock( BYTE vKey, BOOL bState ){ BOOL bCurrentState; bCurrentState = ( GetKeyState( vKey ) & TOGGLED ); if( (bState && !bCurrentState) || (!bState && bCurrentState) ) { // Simulate a key press keybd_event( vKey, 0, KEYEVENTF_EXTENDEDKEY | 0, 0 ); // Simulate a key release keybd_event( vKey, 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); }}BOOL GetKeyLock( int vKey ){ return ( GetKeyState( vKey ) & TOGGLED );}HB_FUNC( SETCAPSLOCK ){ SetKeyLock( VK_CAPITAL, hb_parl( 1 ) );}HB_FUNC( SETNUMLOCK ){ SetKeyLock( VK_NUMLOCK, hb_parl( 1 ) );}HB_FUNC( GETCAPSLOCK ){ hb_retl( GetKeyLock( VK_CAPITAL ) );}HB_FUNC( GETNUMLOCK ){ hb_retl( GetKeyLock( VK_NUMLOCK ) );}#pragma ENDDUMP
EMG