Skip to content

Commit 73ee4f2

Browse files
committed
More mac implementation
1 parent 0233515 commit 73ee4f2

File tree

2 files changed

+299
-59
lines changed

2 files changed

+299
-59
lines changed

Test/main.cpp

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -365,16 +365,16 @@ int main(int argc, char *argv[])
365365
assert(SL::Input_Lite::ConvertToKeyCode(kVK_F11) == SL::Input_Lite::KeyCodes::KEY_F11);
366366
assert(SL::Input_Lite::ConvertToKeyCode(kVK_F12) == SL::Input_Lite::KeyCodes::KEY_F12);
367367

368-
//assert(SL::Input_Lite::ConvertToKeyCode(VK_SNAPSHOT) == SL::Input_Lite::KeyCodes::KEY_PrintScreen);
369-
//assert(SL::Input_Lite::ConvertToKeyCode(VK_SCROLL) == SL::Input_Lite::KeyCodes::KEY_ScrollLock);
370-
//assert(SL::Input_Lite::ConvertToKeyCode(VK_PAUSE) == SL::Input_Lite::KeyCodes::KEY_Pause);
371-
//assert(SL::Input_Lite::ConvertToKeyCode(VK_INSERT) == SL::Input_Lite::KeyCodes::KEY_Insert);
368+
// assert(SL::Input_Lite::ConvertToKeyCode(VK_SNAPSHOT) == SL::Input_Lite::KeyCodes::KEY_PrintScreen);
369+
// assert(SL::Input_Lite::ConvertToKeyCode(VK_SCROLL) == SL::Input_Lite::KeyCodes::KEY_ScrollLock);
370+
// assert(SL::Input_Lite::ConvertToKeyCode(VK_PAUSE) == SL::Input_Lite::KeyCodes::KEY_Pause);
371+
// assert(SL::Input_Lite::ConvertToKeyCode(VK_INSERT) == SL::Input_Lite::KeyCodes::KEY_Insert);
372372
assert(SL::Input_Lite::ConvertToKeyCode(kVK_Home) == SL::Input_Lite::KeyCodes::KEY_Home);
373373

374374
assert(SL::Input_Lite::ConvertToKeyCode(kVK_PageUp) == SL::Input_Lite::KeyCodes::KEY_PageUp);
375375
assert(SL::Input_Lite::ConvertToKeyCode(kVK_ForwardDelete) == SL::Input_Lite::KeyCodes::KEY_Delete);
376376
assert(SL::Input_Lite::ConvertToKeyCode(kVK_End) == SL::Input_Lite::KeyCodes::KEY_End);
377-
assert(SL::Input_Lite::ConvertToKeyCode(kVK_DownArrow) == SL::Input_Lite::KeyCodes::KEY_PageDown);
377+
assert(SL::Input_Lite::ConvertToKeyCode(kVK_PageDown) == SL::Input_Lite::KeyCodes::KEY_PageDown);
378378
assert(SL::Input_Lite::ConvertToKeyCode(kVK_RightArrow) == SL::Input_Lite::KeyCodes::KEY_Right);
379379

380380
assert(SL::Input_Lite::ConvertToKeyCode(kVK_LeftArrow) == SL::Input_Lite::KeyCodes::KEY_Left);

src/ios/Input.cpp

Lines changed: 294 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -1,65 +1,305 @@
11
#include "Input_Lite.h"
22
#include <ApplicationServices/ApplicationServices.h>
33

4-
namespace SL
5-
{
6-
namespace Input_Lite
4+
namespace SL {
5+
namespace Input_Lite {
6+
void SendInput(const KeyEvent &e)
77
{
8-
void SendInput(const KeyEvent& e){
9-
auto ev = CGEventCreateKeyboardEvent (NULL, (CGKeyCode)56, e.Pressed);
10-
if(ev){
11-
CGEventPost(kCGHIDEventTap, ev);
12-
CFRelease(ev);
13-
}
8+
auto ev = CGEventCreateKeyboardEvent(NULL, (CGKeyCode)56, e.Pressed);
9+
if (ev) {
10+
CGEventPost(kCGHIDEventTap, ev);
11+
CFRelease(ev);
1412
}
15-
void SendInput(const MouseButtonEvent& e){
16-
auto msevent = CGEventCreate(NULL);
17-
auto loc = CGEventGetLocation(msevent);
18-
CFRelease(msevent);
19-
20-
CGEventRef ev = nullptr;
21-
switch(e.Button) {
22-
case MouseButtons::LEFT:
23-
ev = CGEventCreateMouseEvent(NULL, e.Pressed ? kCGEventLeftMouseDown: kCGEventLeftMouseUp, loc, kCGMouseButtonLeft);
24-
case MouseButtons::MIDDLE:
25-
ev = CGEventCreateMouseEvent(NULL, e.Pressed ? kCGEventOtherMouseDown: kCGEventOtherMouseUp, loc, kCGMouseButtonCenter);
26-
case MouseButtons::RIGHT:
27-
ev = CGEventCreateMouseEvent(NULL, e.Pressed ? kCGEventRightMouseDown: kCGEventRightMouseUp, loc, kCGMouseButtonRight);
28-
default:
29-
break;
30-
}
31-
if(ev){
32-
CGEventPost(kCGHIDEventTap, ev);
33-
CFRelease(ev);
34-
}
35-
}
36-
void SendInput(const MouseScrollEvent& e){
37-
auto ev = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitLine, 1, -e.Offset);
38-
if(ev){
39-
CGEventPost(kCGHIDEventTap, ev);
40-
CFRelease(ev);
41-
}
13+
}
14+
void SendInput(const MouseButtonEvent &e)
15+
{
16+
auto msevent = CGEventCreate(NULL);
17+
auto loc = CGEventGetLocation(msevent);
18+
CFRelease(msevent);
19+
20+
CGEventRef ev = nullptr;
21+
switch (e.Button) {
22+
case MouseButtons::LEFT:
23+
ev = CGEventCreateMouseEvent(NULL, e.Pressed ? kCGEventLeftMouseDown : kCGEventLeftMouseUp, loc, kCGMouseButtonLeft);
24+
case MouseButtons::MIDDLE:
25+
ev = CGEventCreateMouseEvent(NULL, e.Pressed ? kCGEventOtherMouseDown : kCGEventOtherMouseUp, loc, kCGMouseButtonCenter);
26+
case MouseButtons::RIGHT:
27+
ev = CGEventCreateMouseEvent(NULL, e.Pressed ? kCGEventRightMouseDown : kCGEventRightMouseUp, loc, kCGMouseButtonRight);
28+
default:
29+
break;
4230
}
43-
void SendInput(const MousePositionOffsetEvent& e){
44-
auto msevent = CGEventCreate(NULL);
45-
auto loc = CGEventGetLocation(msevent);
46-
CFRelease(msevent);
47-
loc.x+=e.X;
48-
loc.y += e.Y;
49-
CGWarpMouseCursorPosition(loc);
31+
if (ev) {
32+
CGEventPost(kCGHIDEventTap, ev);
33+
CFRelease(ev);
5034
}
51-
void SendInput(const MousePositionAbsoluteEvent& e){
52-
CGPoint p;
53-
p.x = e.X;
54-
p.y = e.Y;
55-
CGWarpMouseCursorPosition(p);
35+
}
36+
void SendInput(const MouseScrollEvent &e)
37+
{
38+
auto ev = CGEventCreateScrollWheelEvent(NULL, kCGScrollEventUnitLine, 1, -e.Offset);
39+
if (ev) {
40+
CGEventPost(kCGHIDEventTap, ev);
41+
CFRelease(ev);
5642
}
57-
CGKeyCode ConvertToNative(KeyCodes key){
58-
43+
}
44+
void SendInput(const MousePositionOffsetEvent &e)
45+
{
46+
auto msevent = CGEventCreate(NULL);
47+
auto loc = CGEventGetLocation(msevent);
48+
CFRelease(msevent);
49+
loc.x += e.X;
50+
loc.y += e.Y;
51+
CGWarpMouseCursorPosition(loc);
52+
}
53+
void SendInput(const MousePositionAbsoluteEvent &e)
54+
{
55+
CGPoint p;
56+
p.x = e.X;
57+
p.y = e.Y;
58+
CGWarpMouseCursorPosition(p);
59+
}
60+
CGKeyCode ConvertToNative(KeyCodes key)
61+
{
62+
switch (key) {
63+
64+
default:
65+
return 255;
5966
}
60-
KeyCodes ConvertToKeyCode(CGKeyCode key){
61-
67+
}
68+
KeyCodes ConvertToKeyCode(CGKeyCode key)
69+
{
70+
switch (key) {
71+
case kVK_ANSI_0:
72+
return KeyCodes::KEY_0;
73+
case kVK_ANSI_1:
74+
return KeyCodes::KEY_1;
75+
case kVK_ANSI_2:
76+
return KeyCodes::KEY_2;
77+
case kVK_ANSI_3:
78+
return KeyCodes::KEY_3;
79+
case kVK_ANSI_4:
80+
return KeyCodes::KEY_4;
81+
case kVK_ANSI_5:
82+
return KeyCodes::KEY_5;
83+
case kVK_ANSI_6:
84+
return KeyCodes::KEY_6;
85+
case kVK_ANSI_7:
86+
return KeyCodes::KEY_7;
87+
case kVK_ANSI_8:
88+
return KeyCodes::KEY_8;
89+
case kVK_ANSI_9:
90+
return KeyCodes::KEY_9;
91+
case kVK_ANSI_A:
92+
return KeyCodes::KEY_A;
93+
case kVK_ANSI_B:
94+
return KeyCodes::KEY_B;
95+
case kVK_ANSI_C:
96+
return KeyCodes::KEY_C;
97+
case kVK_ANSI_D:
98+
return KeyCodes::KEY_D;
99+
case kVK_ANSI_E:
100+
return KeyCodes::KEY_E;
101+
case kVK_ANSI_F:
102+
return KeyCodes::KEY_F;
103+
case kVK_ANSI_G:
104+
return KeyCodes::KEY_G;
105+
case kVK_ANSI_H:
106+
return KeyCodes::KEY_H;
107+
case kVK_ANSI_I:
108+
return KeyCodes::KEY_I;
109+
case kVK_ANSI_J:
110+
return KeyCodes::KEY_J;
111+
case kVK_ANSI_K:
112+
return KeyCodes::KEY_K;
113+
case kVK_ANSI_L:
114+
return KeyCodes::KEY_L;
115+
case kVK_ANSI_M:
116+
return KeyCodes::KEY_M;
117+
case kVK_ANSI_N:
118+
return KeyCodes::KEY_N;
119+
case kVK_ANSI_O:
120+
return KeyCodes::KEY_O;
121+
case kVK_ANSI_P:
122+
return KeyCodes::KEY_P;
123+
case kVK_ANSI_Q:
124+
return KeyCodes::KEY_Q;
125+
case kVK_ANSI_R:
126+
return KeyCodes::KEY_R;
127+
case kVK_ANSI_S:
128+
return KeyCodes::KEY_S;
129+
case kVK_ANSI_T:
130+
return KeyUodes::KEY_T;
131+
case kVK_ANSI_U:
132+
return KeyCodes::KEY_U;
133+
case kVK_ANSI_V:
134+
return KeyCodes::KEY_V;
135+
case kVK_ANSI_W:
136+
return KeyCodes::KEY_W;
137+
case kVK_ANSI_X:
138+
return KeyCodes::KEY_X;
139+
case kVK_ANSI_Y:
140+
return KeyCodes::KEY_Y;
141+
case kVK_ANSI_Z:
142+
return KeyCodes::KEY_Z;
143+
case kVK_Return:
144+
return KeyCodes::KEY_Enter;
145+
case kVK_Escape:
146+
return KeyCodes::KEY_Escape;
147+
case kVK_Delete:
148+
return KeyCodes::KEY_Backspace;
149+
case kVK_Tab:
150+
return KeyCodes::KEY_Tab;
151+
case kVK_Space:
152+
return KeyCodes::KEY_Space;
153+
case kVK_ANSI_Minus:
154+
return KeyCodes::KEY_Minus;
155+
case kVK_ANSI_Equal:
156+
return KeyCodes::KEY_Equals;
157+
case kVK_ANSI_LeftBracket:
158+
return KeyCodes::KEY_LeftBracket;
159+
case kVK_ANSI_RightBracket:
160+
return KeyCodes::KEY_RightBracket;
161+
case kVK_ANSI_Backslash:
162+
return KeyCodes::KEY_Backslash;
163+
case kVK_ANSI_Semicolon:
164+
return KeyCodes::KEY_Semicolon;
165+
case kVK_ANSI_Quote:
166+
return KeyCodes::KEY_Quote;
167+
case kVK_ANSI_Grave:
168+
return KeyCodes::KEY_Grave;
169+
case kVK_ANSI_Comma:
170+
return KeyCodes::KEY_Comma;
171+
case kVK_ANSI_Period:
172+
return KeyCodes::KEY_Period;
173+
case kVK_ANSI_Slash:
174+
return KeyCodes::KEY_Slash;
175+
case kVK_CapsLock:
176+
return KeyCodes::KEY_CapsLock;
177+
case kVK_F1:
178+
return KeyCodes::KEY_F1;
179+
case kVK_F2:
180+
return KeyCodes::KEY_F2;
181+
case kVK_F3:
182+
return KeyCodes::KEY_F3;
183+
case kVK_F4:
184+
return KeyCodes::KEY_F4;
185+
case kVK_F5:
186+
return KeyCodes::KEY_F5;
187+
case kVK_F6:
188+
return KeyCodes::KEY_F6;
189+
case kVK_F7:
190+
return KeyCodes::KEY_F7;
191+
case kVK_F8:
192+
return KeyCodes::KEY_F8;
193+
case kVK_F9:
194+
return KeyCodes::KEY_F9;
195+
case kVK_F10:
196+
return KeyCodes::KEY_F10;
197+
case kVK_F11:
198+
return KeyCodes::KEY_F11;
199+
case kVK_F12:
200+
return KeyCodes::KEY_F12;
201+
case kVK_F13:
202+
return KeyCodes::KEY_F13;
203+
case kVK_F14:
204+
return KeyCodes::KEY_F14;
205+
case kVK_F15:
206+
return KeyCodes::KEY_F15;
207+
case kVK_F16:
208+
return KeyCodes::KEY_F16;
209+
case kVK_F17:
210+
return KeyCodes::KEY_F17;
211+
case kVK_F18:
212+
return KeyCodes::KEY_F18;
213+
case kVK_F19:
214+
return KeyCodes::KEY_F19;
215+
case kVK_F20:
216+
return KeyCodes::KEY_F20;
217+
/* case VK_SNAPSHOT:
218+
return KeyCodes::KEY_PrintScreen;
219+
case VK_SCROLL:
220+
return KeyCodes::KEY_ScrollLock;
221+
case VK_PAUSE:
222+
return KeyCodes::KEY_Pause;
223+
case VK_INSERT:
224+
return KeyCodes::KEY_Insert;*/
225+
case kVK_Home:
226+
return KeyCodes::KEY_Home;
227+
case kVK_PageUp:
228+
return KeyCodes::KEY_PageUp;
229+
case kVK_ForwardDelete:
230+
return KeyCodes::KEY_Delete;
231+
case kVK_End:
232+
return KeyCodes::KEY_End;
233+
case kVK_PageDown:
234+
return KeyCodes::KEY_PageDown;
235+
case kVK_RightArrow:
236+
return KeyCodes::KEY_Right;
237+
case kVK_LeftArrow:
238+
return KeyCodes::KEY_Left;
239+
case kVK_PageDown:
240+
return KeyCodes::KEY_Down;
241+
case kVK_UpArrow:
242+
return KeyCodes::KEY_Up;
243+
/* case VK_NUMLOCK:
244+
return KeyCodes::KP_NumLock;*/
245+
case kVK_ANSI_KeypadDivide:
246+
return KeyCodes::KP_Divide;
247+
case kVK_ANSI_KeypadMultiply:
248+
return KeyCodes::KP_Multiply;
249+
case kVK_ANSI_KeypadMinus:
250+
return KeyCodes::KP_Subtract;
251+
case kVK_ANSI_KeypadPlus:
252+
return KeyCodes::KP_Add;
253+
case kVK_ANSI_KeypadEnter:
254+
return KeyCodes::KP_Enter;
255+
case kVK_ANSI_Keypad0:
256+
return KeyCodes::KP_0;
257+
case kVK_ANSI_Keypad1:
258+
return KeyCodes::KP_1;
259+
case kVK_ANSI_Keypad2:
260+
return KeyCodes::KP_2;
261+
case kVK_ANSI_Keypad3:
262+
return KeyCodes::KP_3;
263+
case kVK_ANSI_Keypad4:
264+
return KeyCodes::KP_4;
265+
case kVK_ANSI_Keypad5:
266+
return KeyCodes::KP_5;
267+
case kVK_ANSI_Keypad6:
268+
return KeyCodes::KP_6;
269+
case kVK_ANSI_Keypad7:
270+
return KeyCodes::KP_7;
271+
case kVK_ANSI_Keypad8:
272+
return KeyCodes::KP_8;
273+
case kVK_ANSI_Keypad9:
274+
return KeyCodes::KP_9;
275+
case kVK_ANSI_KeypadDecimal:
276+
return KeyCodes::KP_Point;
277+
case kVK_ANSI_KeypadEquals:
278+
return KeyCodes::KP_Equals;
279+
case kVK_Help:
280+
return KeyCodes::KEY_Help;
281+
case kVK_Option:
282+
return KeyCodes::KEY_Menu;
283+
case kVK_Control:
284+
return KeyCodes::KEY_LeftControl;
285+
case kVK_Shift:
286+
return KeyCodes::KEY_LeftShift;
287+
case kVK_Option:
288+
return KeyCodes::KEY_Menu;
289+
case kVK_Command:
290+
return KeyCodes::KEY_LeftMeta;
291+
case kVK_RightControl:
292+
return KeyCodes::KEY_RightControl;
293+
case kVK_RightShift:
294+
return KeyCodes::KEY_RightShift;
295+
case kVK_RightOption:
296+
return KeyCodes::KEY_RightAlt;
297+
case kVK_RightControl:
298+
return KeyCodes::KEY_RightMeta;
299+
default:
300+
return SL::Input_Lite::KeyCodes::INVALID;
62301
}
63-
64302
}
65-
}
303+
304+
} // namespace Input_Lite
305+
} // namespace SL

0 commit comments

Comments
 (0)