/
githubmirror
/
PowerToys
Обзор
Документация
Войти
/
githubmirror
/
PowerToys
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
main
src/modules/keyboardmanager/KeyboardManagerEngineLibrary/KeyboardManager.h
66 строк
2 KB
Jeff Lord
[KBM]Launch apps / URI with keyboard shortcuts, support chords (#30121)
28 фев 2024, 02:12
Не верифицирован
28 фев 2024, 02:12
725c8e8
Код
Авторство
О чём код?
#pragma once #include <common/hooks/LowlevelKeyboardEvent.h> #include <common/utils/EventWaiter.h> #include <keyboardmanager/common/Input.h> #include "State.h" class KeyboardManager { public: static const inline DWORD StartHookMessageID = WM_APP + 1; // Constructor KeyboardManager(); ~KeyboardManager() { if (editorIsRunningEvent) { CloseHandle(editorIsRunningEvent); } } void StartLowlevelKeyboardHook(); void StopLowlevelKeyboardHook(); bool HasRegisteredRemappings() const; private: // Returns whether there are any remappings available without waiting for settings to load bool HasRegisteredRemappingsUnchecked() const; // Contains the non localized module name std::wstring moduleName = KeyboardManagerConstants::ModuleName; // Low level hook handles static HHOOK hookHandle; // Required for Unhook in old versions of Windows static HHOOK hookHandleCopy; // Static pointer to the current KeyboardManager object required for accessing the HandleKeyboardHookEvent function in the hook procedure // Only global or static variables can be accessed in a hook procedure CALLBACK static KeyboardManager* keyboardManagerObjectPtr; // Variable which stores all the state information to be shared between the UI and back-end State state; // Object of class which implements InputInterface. Required for calling library functions while enabling testing KeyboardManagerInput::Input inputHandler; // Auto reset event for waiting for settings changes. The event is signaled when settings are changed EventWaiter settingsEventWaiter; std::atomic_bool loadingSettings = false; HANDLE editorIsRunningEvent = nullptr; // Hook procedure definition static LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam); // Load settings from the file. void LoadSettings(); // Function called by the hook procedure to handle the events. This is the starting point function for remapping intptr_t HandleKeyboardHookEvent(LowlevelKeyboardEvent* data) noexcept; };