[feat] keyboard control supported on Windows

This commit is contained in:
dijunkun
2024-11-22 17:17:33 +08:00
parent 3f777e4662
commit 8414a57a5b
7 changed files with 29 additions and 3 deletions

View File

@@ -8,4 +8,8 @@ int KeyboardCapturer::Hook(OnKeyAction on_key_action, void *user_ptr) {
return 0;
}
int KeyboardCapturer::Unhook() { return 0; }
int KeyboardCapturer::Unhook() { return 0; }
int KeyboardCapturer::SendKeyboardCommand(int key_code, bool is_down) {
return 0;
}

View File

@@ -17,6 +17,7 @@ class KeyboardCapturer : public DeviceController {
public:
virtual int Hook(OnKeyAction on_key_action, void *user_ptr);
virtual int Unhook();
virtual int SendKeyboardCommand(int key_code, bool is_down);
private:
};

View File

@@ -8,4 +8,8 @@ int KeyboardCapturer::Hook(OnKeyAction on_key_action, void *user_ptr) {
return 0;
}
int KeyboardCapturer::Unhook() { return 0; }
int KeyboardCapturer::Unhook() { return 0; }
int KeyboardCapturer::SendKeyboardCommand(int key_code, bool is_down) {
return 0;
}

View File

@@ -17,6 +17,7 @@ class KeyboardCapturer : public DeviceController {
public:
virtual int Hook(OnKeyAction on_key_action, void *user_ptr);
virtual int Unhook();
virtual int SendKeyboardCommand(int key_code, bool is_down);
private:
};

View File

@@ -51,5 +51,18 @@ int KeyboardCapturer::Hook(OnKeyAction on_key_action, void* user_ptr) {
int KeyboardCapturer::Unhook() {
UnhookWindowsHookEx(keyboard_hook_);
return 0;
}
int KeyboardCapturer::SendKeyboardCommand(int key_code, bool is_down) {
INPUT input = {0};
input.type = INPUT_KEYBOARD;
input.ki.wVk = key_code;
if (!is_down) {
input.ki.dwFlags = KEYEVENTF_KEYUP;
}
SendInput(1, &input, sizeof(INPUT));
return 0;
}

View File

@@ -19,6 +19,7 @@ class KeyboardCapturer : public DeviceController {
public:
virtual int Hook(OnKeyAction on_key_action, void *user_ptr);
virtual int Unhook();
virtual int SendKeyboardCommand(int key_code, bool is_down);
private:
HHOOK keyboard_hook_ = nullptr;