| #include <windows.h> |
| |
| bool ok = true; |
| |
| void unlockcaps( BOOL bState ) |
| |
| { |
| ok = false; |
| |
| BYTE keyState[256]; |
| |
| GetKeyboardState((LPBYTE)&keyState); |
| |
| if((bState && !(keyState[VK_CAPITAL] & 1)) || (!bState && (keyState[VK_CAPITAL] & 1)) ) |
| { |
| // Simulate a key press |
| |
| keybd_event( VK_CAPITAL, 0x3A, KEYEVENTF_EXTENDEDKEY | 0, 0 ); |
| |
| // Simulate a key release |
| |
| keybd_event( VK_CAPITAL, 0x3A, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); |
| } |
| } |
| |
| void simulate_capslock() |
| |
| { |
| if(ok){ |
| keybd_event(VK_CAPITAL, 0x3A, KEYEVENTF_EXTENDEDKEY | 0, 0); |
| Sleep(230); |
| keybd_event(VK_CAPITAL, 0x3A, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); |
| } |
| } |
| |
| void check_pause() |
| { |
| if(GetAsyncKeyState(VK_LCONTROL)) |
| { |
| if(ok == true){ unlockcaps( FALSE ); ok = false; } |
| else{ unlockcaps ( FALSE ); ok = true; } |
| } |
| } |
| |
| |
| int main() |
| |
| { |
| while(1){ |
| |
| simulate_capslock(); |
| Sleep(1); |
| check_pause(); |
| Sleep(1); |
| if(GetAsyncKeyState(VK_RCONTROL) && GetAsyncKeyState(VK_RSHIFT)){ |
| unlockcaps( FALSE ); |
| return 0; |
| } |
| Sleep(1); |
| } |
| } |