@@ -48,13 +48,14 @@ void toggleKeyCode(MMKeyCode code, const bool down, MMKeyFlags flags)
48
48
}
49
49
else
50
50
{
51
- CGEventRef keyEvent = CGEventCreateKeyboardEvent (NULL , (CGKeyCode )code , down );
51
+ CGEventSourceRef src = CGEventSourceCreate (kCGEventSourceStatePrivate );
52
+ CGEventRef keyEvent = CGEventCreateKeyboardEvent (src , (CGKeyCode )code , down );
52
53
assert (keyEvent != NULL );
53
54
54
- CGEventSetType (keyEvent , down ? kCGEventKeyDown : kCGEventKeyUp );
55
55
CGEventSetFlags (keyEvent , flags );
56
- CGEventPost (kCGSessionEventTap , keyEvent );
56
+ CGEventPost (kCGHIDEventTap , keyEvent );
57
57
CFRelease (keyEvent );
58
+ CFRelease (src );
58
59
}
59
60
}
60
61
@@ -89,7 +90,8 @@ void toggleUnicodeKey(unsigned long ch, const bool down)
89
90
* convert characters to a keycode, but does not support adding modifier
90
91
* flags. It is therefore only used in typeString() and typeStringDelayed()
91
92
* -- if you need modifier keys, use the above functions instead. */
92
- CGEventRef keyEvent = CGEventCreateKeyboardEvent (NULL , 0 , down );
93
+ CGEventSourceRef src = CGEventSourceCreate (kCGEventSourceStatePrivate );
94
+ CGEventRef keyEvent = CGEventCreateKeyboardEvent (src , 0 , down );
93
95
if (keyEvent == NULL )
94
96
{
95
97
fputs ("Could not create keyboard event.\n" , stderr );
@@ -110,8 +112,9 @@ void toggleUnicodeKey(unsigned long ch, const bool down)
110
112
CGEventKeyboardSetUnicodeString (keyEvent , 1 , & ch );
111
113
}
112
114
113
- CGEventPost (kCGSessionEventTap , keyEvent );
115
+ CGEventPost (kCGHIDEventTap , keyEvent );
114
116
CFRelease (keyEvent );
117
+ CFRelease (src );
115
118
}
116
119
117
120
void toggleUniKey (char c , const bool down )
0 commit comments