1 #include "KbdMacro.h"
\r
2 #include "xkeymacsdll.h"
\r
4 void KbdMacro::Start()
\r
6 ZeroMemory(m_down, sizeof(m_down));
\r
10 void KbdMacro::Record(BYTE vk, bool up)
\r
12 if (up && !m_down[vk])
\r
17 m_keys.push_back(k);
\r
20 void KbdMacro::End()
\r
22 while (!m_keys.empty()) { // remove not pushed up
\r
23 if (!m_keys.front().up)
\r
25 m_keys.erase(m_keys.begin());
\r
27 while (!m_keys.empty()) { // remove not released push
\r
28 if (m_keys.back().up)
\r
34 void KbdMacro::Call() const
\r
36 UINT before = CXkeymacsDll::GetModifierState(FALSE);
\r
37 CXkeymacsDll::SetModifierState(0, before);
\r
38 for (auto k = m_keys.cbegin(); k != m_keys.cend(); ++k)
\r
40 CXkeymacsDll::ReleaseKey(k->vk);
\r
42 CXkeymacsDll::DepressKey(k->vk);
\r
43 CXkeymacsDll::SetModifierState(before, 0);
\r