@@ -74,14 +74,12 @@ bool dispatch_hook_enabled(uint64_t timestamp) {
7474
7575 // Populate the hook start event.
7676 uio_event .time = timestamp ;
77- uio_event .reserved = 0x00 ;
78-
7977 uio_event .type = EVENT_HOOK_ENABLED ;
8078 uio_event .mask = 0x00 ;
8179
8280 // Fire the hook start event.
8381 dispatch_event (& uio_event );
84- consumed = uio_event .reserved & 0x01 ;
82+ consumed = uio_event .mask & MASK_CONSUMED ;
8583
8684 return consumed ;
8785}
@@ -91,8 +89,6 @@ bool dispatch_hook_disabled(uint64_t timestamp) {
9189
9290 // Populate the hook stop event.
9391 uio_event .time = timestamp ;
94- uio_event .reserved = 0x00 ;
95-
9692 uio_event .type = EVENT_HOOK_DISABLED ;
9793 uio_event .mask = 0x00 ;
9894
@@ -101,7 +97,7 @@ bool dispatch_hook_disabled(uint64_t timestamp) {
10197
10298 // Deinitialize native input helper functions.
10399 unload_input_helper ();
104- consumed = uio_event .reserved & 0x01 ;
100+ consumed = uio_event .mask & MASK_CONSUMED ;
105101
106102 return consumed ;
107103}
@@ -113,10 +109,11 @@ bool dispatch_key_press(uint64_t timestamp, CGEventRef event_ref) {
113109
114110 // Populate key pressed event.
115111 uio_event .time = timestamp ;
116- uio_event .reserved = 0x00 ;
117-
118112 uio_event .type = EVENT_KEY_PRESSED ;
119113 uio_event .mask = get_modifiers ();
114+ if (CGEventGetIntegerValueField (event_ref , kCGEventSourceUnixProcessID )) {
115+ uio_event .mask |= MASK_EMULATED ;
116+ }
120117
121118 uio_event .data .keyboard .keycode = keycode_to_scancode (keycode );
122119 uio_event .data .keyboard .rawcode = keycode ;
@@ -128,7 +125,7 @@ bool dispatch_key_press(uint64_t timestamp, CGEventRef event_ref) {
128125
129126 // Fire key pressed event.
130127 dispatch_event (& uio_event );
131- consumed = uio_event .reserved & 0x01 ;
128+ consumed = uio_event .mask & MASK_CONSUMED ;
132129
133130 // If the pressed event was not consumed...
134131 if (!consumed ) {
@@ -138,10 +135,11 @@ bool dispatch_key_press(uint64_t timestamp, CGEventRef event_ref) {
138135 for (unsigned int i = 0 ; i < length ; i ++ ) {
139136 // Populate key typed event.
140137 uio_event .time = timestamp ;
141- uio_event .reserved = 0x00 ;
142-
143138 uio_event .type = EVENT_KEY_TYPED ;
144139 uio_event .mask = get_modifiers ();
140+ if (CGEventGetIntegerValueField (event_ref , kCGEventSourceUnixProcessID )) {
141+ uio_event .mask |= MASK_EMULATED ;
142+ }
145143
146144 uio_event .data .keyboard .keycode = VC_UNDEFINED ;
147145 uio_event .data .keyboard .rawcode = keycode ;
@@ -154,7 +152,7 @@ bool dispatch_key_press(uint64_t timestamp, CGEventRef event_ref) {
154152
155153 // Populate key typed event.
156154 dispatch_event (& uio_event );
157- consumed = uio_event .reserved & 0x01 ;
155+ consumed = uio_event .mask & MASK_CONSUMED ;
158156 }
159157 }
160158
@@ -168,10 +166,11 @@ bool dispatch_key_release(uint64_t timestamp, CGEventRef event_ref) {
168166
169167 // Populate key released event.
170168 uio_event .time = timestamp ;
171- uio_event .reserved = 0x00 ;
172-
173169 uio_event .type = EVENT_KEY_RELEASED ;
174170 uio_event .mask = get_modifiers ();
171+ if (CGEventGetIntegerValueField (event_ref , kCGEventSourceUnixProcessID )) {
172+ uio_event .mask |= MASK_EMULATED ;
173+ }
175174
176175 uio_event .data .keyboard .keycode = keycode_to_scancode (keycode );
177176 uio_event .data .keyboard .rawcode = keycode ;
@@ -183,7 +182,7 @@ bool dispatch_key_release(uint64_t timestamp, CGEventRef event_ref) {
183182
184183 // Fire key released event.
185184 dispatch_event (& uio_event );
186- consumed = uio_event .reserved & 0x01 ;
185+ consumed = uio_event .mask & MASK_CONSUMED ;
187186
188187 return consumed ;
189188}
@@ -466,10 +465,11 @@ bool dispatch_button_press(uint64_t timestamp, CGEventRef event_ref, uint16_t bu
466465
467466 // Populate mouse pressed event.
468467 uio_event .time = timestamp ;
469- uio_event .reserved = 0x00 ;
470-
471468 uio_event .type = EVENT_MOUSE_PRESSED ;
472469 uio_event .mask = get_modifiers ();
470+ if (CGEventGetIntegerValueField (event_ref , kCGEventSourceUnixProcessID )) {
471+ uio_event .mask |= MASK_EMULATED ;
472+ }
473473
474474 uio_event .data .mouse .button = button ;
475475 uio_event .data .mouse .clicks = click_count ;
@@ -483,7 +483,7 @@ bool dispatch_button_press(uint64_t timestamp, CGEventRef event_ref, uint16_t bu
483483
484484 // Fire mouse pressed event.
485485 dispatch_event (& uio_event );
486- consumed = uio_event .reserved & 0x01 ;
486+ consumed = uio_event .mask & MASK_CONSUMED ;
487487
488488 return consumed ;
489489}
@@ -495,10 +495,11 @@ bool dispatch_button_release(uint64_t timestamp, CGEventRef event_ref, uint16_t
495495
496496 // Populate mouse released event.
497497 uio_event .time = timestamp ;
498- uio_event .reserved = 0x00 ;
499-
500498 uio_event .type = EVENT_MOUSE_RELEASED ;
501499 uio_event .mask = get_modifiers ();
500+ if (CGEventGetIntegerValueField (event_ref , kCGEventSourceUnixProcessID )) {
501+ uio_event .mask |= MASK_EMULATED ;
502+ }
502503
503504 uio_event .data .mouse .button = button ;
504505 uio_event .data .mouse .clicks = click_count ;
@@ -512,16 +513,17 @@ bool dispatch_button_release(uint64_t timestamp, CGEventRef event_ref, uint16_t
512513
513514 // Fire mouse released event.
514515 dispatch_event (& uio_event );
515- consumed = uio_event .reserved & 0x01 ;
516+ consumed = uio_event .mask & MASK_CONSUMED ;
516517
517518 // If the pressed event was not consumed...
518- if (uio_event . reserved ^ 0x01 && !is_mouse_dragged ()) {
519+ if (! consumed && !is_mouse_dragged ()) {
519520 // Populate mouse clicked event.
520521 uio_event .time = timestamp ;
521- uio_event .reserved = 0x00 ;
522-
523522 uio_event .type = EVENT_MOUSE_CLICKED ;
524523 uio_event .mask = get_modifiers ();
524+ if (CGEventGetIntegerValueField (event_ref , kCGEventSourceUnixProcessID )) {
525+ uio_event .mask |= MASK_EMULATED ;
526+ }
525527
526528 uio_event .data .mouse .button = button ;
527529 uio_event .data .mouse .clicks = click_count ;
@@ -535,7 +537,7 @@ bool dispatch_button_release(uint64_t timestamp, CGEventRef event_ref, uint16_t
535537
536538 // Fire mouse clicked event.
537539 dispatch_event (& uio_event );
538- consumed = uio_event .reserved & 0x01 ; // TODO Should we track this flag for consumed events?
540+ consumed = uio_event .mask & MASK_CONSUMED ;
539541 }
540542
541543 // Reset the number of clicks.
@@ -559,15 +561,16 @@ bool dispatch_mouse_move(uint64_t timestamp, CGEventRef event_ref) {
559561
560562 // Populate mouse motion event.
561563 uio_event .time = timestamp ;
562- uio_event .reserved = 0x00 ;
563-
564564 if (is_mouse_dragged ()) {
565565 uio_event .type = EVENT_MOUSE_DRAGGED ;
566566 }
567567 else {
568568 uio_event .type = EVENT_MOUSE_MOVED ;
569569 }
570570 uio_event .mask = get_modifiers ();
571+ if (CGEventGetIntegerValueField (event_ref , kCGEventSourceUnixProcessID )) {
572+ uio_event .mask |= MASK_EMULATED ;
573+ }
571574
572575 uio_event .data .mouse .button = MOUSE_NOBUTTON ;
573576 uio_event .data .mouse .clicks = click_count ;
@@ -580,14 +583,14 @@ bool dispatch_mouse_move(uint64_t timestamp, CGEventRef event_ref) {
580583
581584 // Fire mouse motion event.
582585 dispatch_event (& uio_event );
583- consumed = uio_event .reserved & 0x01 ;
586+ consumed = uio_event .mask & MASK_CONSUMED ;
584587
585588 return consumed ;
586589}
587590
588591bool dispatch_mouse_wheel (uint64_t timestamp , CGEventRef event_ref ) {
589592 bool consumed = false;
590-
593+
591594 // Reset the click count and previous button.
592595 click_count = 0 ;
593596 click_button = MOUSE_NOBUTTON ;
@@ -600,10 +603,11 @@ bool dispatch_mouse_wheel(uint64_t timestamp, CGEventRef event_ref) {
600603
601604 // Populate mouse wheel event.
602605 uio_event .time = timestamp ;
603- uio_event .reserved = 0x00 ;
604-
605606 uio_event .type = EVENT_MOUSE_WHEEL ;
606607 uio_event .mask = get_modifiers ();
608+ if (CGEventGetIntegerValueField (event_ref , kCGEventSourceUnixProcessID )) {
609+ uio_event .mask |= MASK_EMULATED ;
610+ }
607611
608612 uio_event .data .wheel .x = event_point .x ;
609613 uio_event .data .wheel .y = event_point .y ;
@@ -662,7 +666,7 @@ bool dispatch_mouse_wheel(uint64_t timestamp, CGEventRef event_ref) {
662666
663667 // Fire mouse wheel event.
664668 dispatch_event (& uio_event );
665- consumed = uio_event .reserved & 0x01 ;
669+ consumed = uio_event .mask & MASK_CONSUMED ;
666670 }
667671
668672 return consumed ;
0 commit comments