-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathinput-event.cpp
89 lines (76 loc) · 2.41 KB
/
input-event.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
#include "input-event.h"
#include "keycodes.h"
#include "keycodes-anonimized.h"
MouseAnyEvent::MouseAnyEvent(WPARAM wp, MSLLHOOKSTRUCT const& me)
{
wparam = wp;
memcpy(&eventData, &me, sizeof(me));
}
MouseAnyEvent::MouseAnyEvent(MouseAnyEvent const& a)
{
wparam = a.wparam;
memcpy(&eventData, &a.eventData, sizeof(eventData));
}
MouseAnyEvent& MouseAnyEvent::operator=(MouseAnyEvent const& a)
{
wparam = a.wparam;
memcpy(&eventData, &a.eventData, sizeof(eventData)); return *this;
}
DWORD MouseAnyEvent::time() const
{
return eventData.time;
}
std::string MouseAnyEvent::description() const
{
switch (wparam) {
case WM_LBUTTONDOWN: return "left down"; break;
case WM_LBUTTONUP: return "left up"; break;
case WM_LBUTTONDBLCLK: return "left dblclick"; break;
case WM_MOUSEMOVE: return "move"; break;
case WM_MOUSEWHEEL: return "wheel"; break;
case WM_MOUSEHWHEEL: return "h-wheel"; break;
case WM_RBUTTONDOWN: return "right down"; break;
case WM_RBUTTONUP: return "right up"; break;
case WM_RBUTTONDBLCLK: return "right dblclick"; break;
case WM_MBUTTONDOWN: return "middle down"; break;
case WM_MBUTTONUP: return "middle up"; break;
case WM_MBUTTONDBLCLK: return "middle dblclick"; break;
case WM_XBUTTONDOWN: return "X down"; break;
case WM_XBUTTONUP: return "X up"; break;
case WM_XBUTTONDBLCLK: return "X dblclick"; break;
default: return "undefined action"; break;
}
}
std::string MouseAnyEvent::inputDevice() const
{
return "mouse";
}
bool MouseAnyEvent::isRepeatable() const
{
return wparam == WM_MOUSEMOVE || wparam == WM_MOUSEWHEEL || wparam == WM_MOUSEHWHEEL;
}
KeyboardEvent::KeyboardEvent(WPARAM wp, KBDLLHOOKSTRUCT const& me)
{
wparam = wp;
memcpy(&eventData, &me, sizeof(me));
}
DWORD KeyboardEvent::time() const
{
return eventData.time;
}
std::string KeyboardEvent::description() const
{
return std::string() +
(anonimized ?
vKeyCodesAnonimized[eventData.vkCode % _countof(vKeyCodesAnonimized)] :
vKeyCodes[eventData.vkCode % _countof(vKeyCodes)]) +
" " + (wparam == WM_KEYDOWN || wparam == WM_SYSKEYDOWN ? "down " : "up ");
}
std::string KeyboardEvent::inputDevice() const
{
return "keyboard";
}
bool KeyboardEvent::isRepeatable() const
{
return false;
}