MCPcopy Create free account
hub / github.com/Aegel5/SimpleSwitcher / LowLevelKeyboardProc

Method LowLevelKeyboardProc

src/HookerKeyboard.cpp:2–258  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1
2LRESULT CALLBACK Hooker::HookerKeyboard::LowLevelKeyboardProc(
3 _In_ int nCode,
4 _In_ WPARAM wParam,
5 _In_ LPARAM lParam
6) {
7
8 if (nCode != HC_ACTION) {
9 return CallNextHookEx(0, nCode, wParam, lParam);
10 }
11
12 Message_Hotkey msg_hotkey;
13 bool need_disable_event = false;
14
15 auto process = [&]() {
16
17 bool double_exists = false;
18
19 GETCONF;
20
21 KBDLLHOOKSTRUCT* k = (KBDLLHOOKSTRUCT*)lParam;
22
23 TKeyCode vkCode = (TKeyCode)k->vkCode;
24 auto curKeyState = GetKeyState(wParam);
25 bool isInjected = TestFlag(k->flags, LLKHF_INJECTED);
26 bool is_low_inject = TestFlag(k->flags, LLKHF_LOWER_IL_INJECTED);
27 bool isAltDown = TestFlag(k->flags, LLKHF_ALTDOWN);
28 bool isSysKey = wParam == WM_SYSKEYDOWN || wParam == WM_SYSKEYUP;
29 bool isExtended = TestFlag(k->flags, LLKHF_EXTENDED);
30 bool is_pressed = !TestFlag(k->flags, LLKHF_UP);
31 auto scan_code = k->scanCode;
32 int iscaps = -1;
33 bool isDown = curKeyState == KEY_STATE_DOWN;
34 if (isDown) iscaps = Utils::IsCapslockEnabled() ? 1 : 0;
35
36 LOG_ANY(
37 "KEY_MSG: {}({:x}) {},scan=0x{:x},inject={},low_inject={},altdown={},syskey={},extended={},is_pressed={},flags=0x{:b},caps={}",
38 CHotKey::ToString(vkCode),
39 vkCode,
40 (curKeyState == KEY_STATE_UP ? "UP" : "DOWN"),
41 scan_code,
42 isInjected,
43 is_low_inject,
44 isAltDown,
45 isSysKey,
46 isExtended,
47 is_pressed,
48 k->flags,
49 iscaps
50 );
51
52 if (k->dwExtraInfo == c_MyInjectedId) {
53 LOG_ANY(L"skip our keys");
54 return;
55 }
56
57 if (k->vkCode > 255) {
58 LOG_ANY(L"k->vkCode > 255: {}", k->vkCode);
59 }
60

Callers

nothing calls this directly

Calls 15

GetKeyStateFunction · 0.85
TestFlagFunction · 0.85
IsCapslockEnabledFunction · 0.85
RemoveFirstFunction · 0.85
WorkerFunction · 0.85
ValueKeyMethod · 0.80
DebugPrintMethod · 0.80
CompareMethod · 0.80
IsSkipProgramTopMethod · 0.80
All_hot_keysMethod · 0.80
GetKeyupMethod · 0.80
IsHoldMethod · 0.80

Tested by

no test coverage detected