diff --git a/src/device_controller/keyboard/linux/keyboard_capturer.cpp b/src/device_controller/keyboard/linux/keyboard_capturer.cpp index a21b012..70b6688 100644 --- a/src/device_controller/keyboard/linux/keyboard_capturer.cpp +++ b/src/device_controller/keyboard/linux/keyboard_capturer.cpp @@ -8,4 +8,8 @@ int KeyboardCapturer::Hook(OnKeyAction on_key_action, void *user_ptr) { return 0; } -int KeyboardCapturer::Unhook() { return 0; } \ No newline at end of file +int KeyboardCapturer::Unhook() { return 0; } + +int KeyboardCapturer::SendKeyboardCommand(int key_code, bool is_down) { + return 0; +} \ No newline at end of file diff --git a/src/device_controller/keyboard/linux/keyboard_capturer.h b/src/device_controller/keyboard/linux/keyboard_capturer.h index b45d22e..0bec57b 100644 --- a/src/device_controller/keyboard/linux/keyboard_capturer.h +++ b/src/device_controller/keyboard/linux/keyboard_capturer.h @@ -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: }; diff --git a/src/device_controller/keyboard/mac/keyboard_capturer.cpp b/src/device_controller/keyboard/mac/keyboard_capturer.cpp index a21b012..70b6688 100644 --- a/src/device_controller/keyboard/mac/keyboard_capturer.cpp +++ b/src/device_controller/keyboard/mac/keyboard_capturer.cpp @@ -8,4 +8,8 @@ int KeyboardCapturer::Hook(OnKeyAction on_key_action, void *user_ptr) { return 0; } -int KeyboardCapturer::Unhook() { return 0; } \ No newline at end of file +int KeyboardCapturer::Unhook() { return 0; } + +int KeyboardCapturer::SendKeyboardCommand(int key_code, bool is_down) { + return 0; +} \ No newline at end of file diff --git a/src/device_controller/keyboard/mac/keyboard_capturer.h b/src/device_controller/keyboard/mac/keyboard_capturer.h index b45d22e..0bec57b 100644 --- a/src/device_controller/keyboard/mac/keyboard_capturer.h +++ b/src/device_controller/keyboard/mac/keyboard_capturer.h @@ -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: }; diff --git a/src/device_controller/keyboard/windows/keyboard_capturer.cpp b/src/device_controller/keyboard/windows/keyboard_capturer.cpp index bfa993b..3642c2c 100644 --- a/src/device_controller/keyboard/windows/keyboard_capturer.cpp +++ b/src/device_controller/keyboard/windows/keyboard_capturer.cpp @@ -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; } \ No newline at end of file diff --git a/src/device_controller/keyboard/windows/keyboard_capturer.h b/src/device_controller/keyboard/windows/keyboard_capturer.h index b1cf2aa..7607765 100644 --- a/src/device_controller/keyboard/windows/keyboard_capturer.h +++ b/src/device_controller/keyboard/windows/keyboard_capturer.h @@ -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; diff --git a/src/single_window/render_callback_func.cpp b/src/single_window/render_callback_func.cpp index 9469986..9fbd545 100644 --- a/src/single_window/render_callback_func.cpp +++ b/src/single_window/render_callback_func.cpp @@ -103,7 +103,9 @@ int Render::SendKeyEvent(int key_code, bool is_down) { } int Render::ProcessKeyEvent(int key_code, bool is_down) { - LOG_ERROR("key code [{}], is down [{}]", key_code, is_down); + if (keyboard_capturer_) { + keyboard_capturer_->SendKeyboardCommand(key_code, is_down); + } return 0; }