[Launcher] Use a keyboard hook in the runner to invoke the Launcher (#6660)

* Added a keyboard hook to the runner

* Update RootKeyboardHook

* Enable reading the whole JsonObject property

* Renamed RootKeyboardHook to CentralizedKeyboardHook

* Fixed build break, changed callback return type to bool

* Added Hotkey struct which somehow went missing

+ Cherry-pick fixes

* Reorganized the kb hook

* Basic version works

* Various fixes

* Finishing touches

* Fix potential threading issue

* int -> size_t

* Add default initializers to the Hotkey struct

* Added a suggested comment

* Unified a constant

* Use C# classes instead of native calls for sync

* Added a claryfing comment

* Use std::move

* Renamed a method

* Possible fix for compilation errors

* Fix a regression

* Show a message on failure

* Added DISABLE_LOWLEVEL_HOOK support

* Allow running Launcher as standalone

* Rename string constants
This commit is contained in:
Ivan Stošić
2020-09-21 12:44:16 +02:00
committed by GitHub
parent e135153c45
commit b266e336b5
20 changed files with 392 additions and 40 deletions

View File

@@ -12,6 +12,7 @@
#include "common/common.h"
#include "restart_elevated.h"
#include "update_utils.h"
#include "centralized_kb_hook.h"
#include <common/json.h>
#include <common\settings_helpers.cpp>
@@ -106,9 +107,11 @@ std::optional<std::wstring> dispatch_json_action_to_module(const json::JsonObjec
void send_json_config_to_module(const std::wstring& module_key, const std::wstring& settings)
{
if (modules().find(module_key) != modules().end())
auto moduleIt = modules().find(module_key);
if (moduleIt != modules().end())
{
modules().at(module_key)->set_config(settings.c_str());
moduleIt->second->set_config(settings.c_str());
moduleIt->second.update_hotkeys();
}
}