Como remapear a tecla do teclado em c ++ com LowLevelKeyboardProc?

Eu preciso remapear algumas das teclas como Left Alt, mas eu apenas desabilitá-lo para codificar para desativar Alt esquerdo da seguinte forma:

LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) { KBDLLHOOKSTRUCT* p = (KBDLLHOOKSTRUCT*) lParam; if (p->vkCode == VK_LMENU) return 1; } return CallNextHookEx(hHook, nCode, wParam, lParam); } 

Então eu tento remapear Alt esquerda para Ctrl esquerda e usar a function como “keybd_event” e “SendMessageA”, mas não consegui nada.

 LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) { KBDLLHOOKSTRUCT* p = (KBDLLHOOKSTRUCT*) lParam; if (p->vkCode == VK_LMENU) { keybd_event(VK_CONTROL, 0, 0, 0); // or use this is sameSendMessageA(0, WM_KEYUP, VK_CONTROL, 0); } } return CallNextHookEx(hHook, nCode, wParam, lParam); } 

Como remapear Alt esquerda para Ctrl esquerda?

Esta é uma maneira de remapear Alt para Ctrl . Não esqueça que o parâmetro padrão muda de volta para alt se você não definir wParam pode ser apenas o meu computador.

 include iostream include windows.h using namespace std; HHOOK hHook = 0; LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) { if (nCode == HC_ACTION) { KBDLLHOOKSTRUCT* p = (KBDLLHOOKSTRUCT*) lParam; if (p->vkCode == VK_LMENU) // VK_LMENU = ALT key { switch (wParam){ case WM_SYSKEYDOWN :{ // use SYSKEYDOWN cout << "Key down" << endl; keybd_event(VK_LCONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | 0, 0 ); break; } case WM_KEYUP: // use regular keyup { cout << "Key up" << endl; keybd_event( VK_LCONTROL, 0x1D, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0); return 1; break; } default: wParam = WM_SYSKEYDOWN; // if you do not specify it changes back to alt break; } return 1; } } return CallNextHookEx(hHook, nCode, wParam, lParam); } int WINAPI WinMain (HINSTANCE hThisInstance, HINSTANCE hPrevInstance, LPSTR lpszArgument, int nCmdShow) { hHook = SetWindowsHookEx(WH_KEYBOARD_LL, &LowLevelKeyboardProc, hThisInstance, NULL); if (hHook == NULL) { cout << "Error" << endl; return 1; } MSG messages; while (GetMessage (&messages, NULL, 0, 0)) { TranslateMessage(&messages); DispatchMessage(&messages); } return messages.wParam; } 
    Intereting Posts