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

Method ProcessKeyMsg

src/WorkerImplement.cpp:4–63  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

2#include "ParseSnippet.h"
3
4void WorkerImplement::ProcessKeyMsg(const Message_KeyType& keyData)
5{
6 TKeyCode vkCode = keyData.vkCode;
7 auto scan_ext = keyData.scan_ext;
8
9 const auto& cur_hotkey = keyData.cur_hotKey;
10
11 LOG_ANY("ProcessKeyMsg {} curState={}", CHotKey::ToString(vkCode), cur_hotkey.ToString());
12
13 m_is_last_caps = keyData.is_caps; // сохраним последнее известное значение. Нажатие caps по идее должно нам привести сюда.
14
15 if (CHotKey::IsKnownMods(vkCode)) {
16 return; // не очищаем текущий буфер нажатых клавиш так как они могут быть частью наших хот-кеев
17 }
18
19 //if (keyData.hk != hk_NULL) { // это событие down для нашей hot key up.
20 // if (!IsNeedSavedWords(keyData.hk)) {
21 // ClearAllWords();
22 // }
23 // return; // пропуск.
24 //}
25
26 TKeyBaseInfo key {
27 .vk_code = vkCode,
28 .scan_code = scan_ext,
29 .is_shift = cur_hotkey.HasMod(VK_SHIFT),
30 .is_caps = keyData.is_caps,
31 };
32 auto get_lay = [this] {
33 CheckCurLay(); // попробуем добавить получение текущей раскладки на каждое нажатие для более точного определения символа (ради capslock handle).
34 return topWndInfo2.lay;
35 };
36 key.type = AnalizeTyped(cur_hotkey, vkCode, scan_ext, get_lay, key);
37
38 switch (key.type) {
39
40 case KEYTYPE_BACKSPACE:
41 {
42 m_cycleList.DeleteLastSymbol();
43 break;
44 }
45 default:
46 {
47 bool is_shift = cur_hotkey.HasMod(VK_SHIFT);
48
49 // todo: так это не работает. Нужно добавлять Shift только буквам (сложно) или временно включать/отключать capslock.
50 //if (keyData.is_caps) is_shift = !is_shift;
51
52 m_cycleList.AddKeyToList(key);
53 break;
54 }
55 case KEYTYPE_COMMAND_NO_CLEAR:
56 break;
57 case KEYTYPE_NONE:
58 case KEYTYPE_COMMAND_CLEAR: {
59 ClearAllWords();
60 break;
61 }

Callers 1

WorkerIntMethod · 0.80

Calls 5

AnalizeTypedFunction · 0.85
HasModMethod · 0.80
DeleteLastSymbolMethod · 0.80
AddKeyToListMethod · 0.80
ToStringMethod · 0.45

Tested by

no test coverage detected