@@ -206,9 +206,13 @@ void InsertKeyLength(const Uint8& len) {
206
206
207
207
void SendPureCharacter (const Uint16& ch) {
208
208
_newEventDown = CGEventCreateKeyboardEvent (myEventSource, 0 , true );
209
+ _newEventUp = CGEventCreateKeyboardEvent (myEventSource, 0 , false );
209
210
CGEventKeyboardSetUnicodeString (_newEventDown, 1 , &ch);
211
+ CGEventKeyboardSetUnicodeString (_newEventUp, 1 , &ch);
210
212
CGEventTapPostEvent (_proxy, _newEventDown);
213
+ CGEventTapPostEvent (_proxy, _newEventUp);
211
214
CFRelease (_newEventDown);
215
+ CFRelease (_newEventUp);
212
216
if (IS_DOUBLE_CODE (vCodeTable)) {
213
217
InsertKeyLength (1 );
214
218
}
@@ -235,26 +239,35 @@ void SendKeyCode(Uint32 data) {
235
239
CGEventSetFlags (_newEventUp, _privateFlag);
236
240
CGEventTapPostEvent (_proxy, _newEventDown);
237
241
CGEventTapPostEvent (_proxy, _newEventUp);
238
- CFRelease (_newEventUp);
239
242
} else {
240
243
if (vCodeTable == 0 ) { // unicode 2 bytes code
241
244
_newEventDown = CGEventCreateKeyboardEvent (myEventSource, 0 , true );
245
+ _newEventUp = CGEventCreateKeyboardEvent (myEventSource, 0 , false );
242
246
CGEventKeyboardSetUnicodeString (_newEventDown, 1 , &_newChar);
247
+ CGEventKeyboardSetUnicodeString (_newEventUp, 1 , &_newChar);
243
248
CGEventTapPostEvent (_proxy, _newEventDown);
249
+ CGEventTapPostEvent (_proxy, _newEventUp);
244
250
} else if (vCodeTable == 1 || vCodeTable == 2 || vCodeTable == 4 ) { // others such as VNI Windows, TCVN3: 1 byte code
245
251
_newCharHi = HIBYTE (_newChar);
246
252
_newChar = LOBYTE (_newChar);
247
253
248
254
_newEventDown = CGEventCreateKeyboardEvent (myEventSource, 0 , true );
255
+ _newEventUp = CGEventCreateKeyboardEvent (myEventSource, 0 , false );
249
256
CGEventKeyboardSetUnicodeString (_newEventDown, 1 , &_newChar);
257
+ CGEventKeyboardSetUnicodeString (_newEventUp, 1 , &_newChar);
250
258
CGEventTapPostEvent (_proxy, _newEventDown);
251
-
259
+ CGEventTapPostEvent (_proxy, _newEventUp);
252
260
if (_newCharHi > 32 ) {
253
261
if (vCodeTable == 2 ) // VNI
254
262
InsertKeyLength (2 );
263
+ CFRelease (_newEventDown);
264
+ CFRelease (_newEventUp);
255
265
_newEventDown = CGEventCreateKeyboardEvent (myEventSource, 0 , true );
266
+ _newEventUp = CGEventCreateKeyboardEvent (myEventSource, 0 , false );
256
267
CGEventKeyboardSetUnicodeString (_newEventDown, 1 , &_newCharHi);
268
+ CGEventKeyboardSetUnicodeString (_newEventUp, 1 , &_newCharHi);
257
269
CGEventTapPostEvent (_proxy, _newEventDown);
270
+ CGEventTapPostEvent (_proxy, _newEventUp);
258
271
} else {
259
272
if (vCodeTable == 2 ) // VNI
260
273
InsertKeyLength (1 );
@@ -266,11 +279,15 @@ void SendKeyCode(Uint32 data) {
266
279
_uniChar[1 ] = _newCharHi > 0 ? (_unicodeCompoundMark[_newCharHi - 1 ]) : 0 ;
267
280
InsertKeyLength (_newCharHi > 0 ? 2 : 1 );
268
281
_newEventDown = CGEventCreateKeyboardEvent (myEventSource, 0 , true );
282
+ _newEventUp = CGEventCreateKeyboardEvent (myEventSource, 0 , false );
269
283
CGEventKeyboardSetUnicodeString (_newEventDown, (_newCharHi > 0 ? 2 : 1 ), _uniChar);
284
+ CGEventKeyboardSetUnicodeString (_newEventUp, (_newCharHi > 0 ? 2 : 1 ), _uniChar);
270
285
CGEventTapPostEvent (_proxy, _newEventDown);
286
+ CGEventTapPostEvent (_proxy, _newEventUp);
271
287
}
272
288
}
273
289
CFRelease (_newEventDown);
290
+ CFRelease (_newEventUp);
274
291
}
275
292
276
293
void SendEmptyCharacter () {
@@ -283,9 +300,13 @@ void SendEmptyCharacter() {
283
300
}
284
301
285
302
_newEventDown = CGEventCreateKeyboardEvent (myEventSource, 0 , true );
303
+ _newEventUp = CGEventCreateKeyboardEvent (myEventSource, 0 , false );
286
304
CGEventKeyboardSetUnicodeString (_newEventDown, 1 , &_newChar);
305
+ CGEventKeyboardSetUnicodeString (_newEventUp, 1 , &_newChar);
287
306
CGEventTapPostEvent (_proxy, _newEventDown);
307
+ CGEventTapPostEvent (_proxy, _newEventUp);
288
308
CFRelease (_newEventDown);
309
+ CFRelease (_newEventUp);
289
310
}
290
311
291
312
void SendVirtualKey (const Byte& vKey) {
@@ -427,9 +448,13 @@ void SendNewCharString(const bool& dataFromMacro=false, const Uint16& offset=0)
427
448
}
428
449
429
450
_newEventDown = CGEventCreateKeyboardEvent (myEventSource, 0 , true );
451
+ _newEventUp = CGEventCreateKeyboardEvent (myEventSource, 0 , false );
430
452
CGEventKeyboardSetUnicodeString (_newEventDown, _willContinuteSending ? 16 : _newCharSize - offset, _newCharString);
453
+ CGEventKeyboardSetUnicodeString (_newEventUp, _willContinuteSending ? 16 : _newCharSize - offset, _newCharString);
431
454
CGEventTapPostEvent (_proxy, _newEventDown);
455
+ CGEventTapPostEvent (_proxy, _newEventUp);
432
456
CFRelease (_newEventDown);
457
+ CFRelease (_newEventUp);
433
458
434
459
if (_willContinuteSending) {
435
460
SendNewCharString (dataFromMacro, dataFromMacro ? _k : 16 );
0 commit comments