For turning the Caps Lock key see this procedure (use VN_NUMLOCK instead of VK_CAPITAL for Num Lock).
procedure TForm1.Button1Click(Sender: TObject); var KeyState: TKeyboardState; begin GetKeyboardState(KeyState); if (KeyState[VK_CAPITAL]=0) then begin // Simulate a "CAPS LOCK" key release Keybd_Event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or 0, 0); // Simulate a "CAPS LOCK" key press Keybd_Event(VK_CAPITAL, 1, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); end else begin Keybd_Event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or 0, 0); Keybd_Event(VK_CAPITAL, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0); end; end;