Skip to content

Commit 9744d48

Browse files
committed
Attempting to fix macos.
1 parent 8635a6a commit 9744d48

File tree

2 files changed

+20
-23
lines changed

2 files changed

+20
-23
lines changed

src/macos/common.rs

Lines changed: 20 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -34,8 +34,8 @@ pub enum CGEventTapOption {
3434
ListenOnly = 1,
3535
}
3636

37-
pub static mut LAST_FLAGS: CGEventFlags = CGEventFlags::CGEventFlagNull;
3837
lazy_static! {
38+
pub static ref LAST_FLAGS: Mutex<CGEventFlags> = Mutex::new(CGEventFlags::CGEventFlagNull);
3939
pub static ref KEYBOARD_STATE: Mutex<Keyboard> = Mutex::new(Keyboard::new().unwrap());
4040
}
4141

@@ -143,50 +143,50 @@ pub unsafe fn convert(
143143
let key = key_from_code(code);
144144

145145
// Determine if this is a press or release based on flag changes
146-
let event = if flags.contains(CGEventFlags::CGEventFlagShift)
147-
&& !LAST_FLAGS.contains(CGEventFlags::CGEventFlagShift)
146+
let global_flags = LAST_FLAGS.lock().unwrap();
147+
if flags.contains(CGEventFlags::CGEventFlagShift)
148+
&& !global_flags.contains(CGEventFlags::CGEventFlagShift)
148149
{
149-
LAST_FLAGS = flags;
150+
*global_flags = flags;
150151
Some(EventType::KeyPress(key))
151152
} else if !flags.contains(CGEventFlags::CGEventFlagShift)
152-
&& LAST_FLAGS.contains(CGEventFlags::CGEventFlagShift)
153+
&& *global_flags.contains(CGEventFlags::CGEventFlagShift)
153154
{
154-
LAST_FLAGS = flags;
155+
*global_flags = flags;
155156
Some(EventType::KeyRelease(key))
156157
} else if flags.contains(CGEventFlags::CGEventFlagControl)
157-
&& !LAST_FLAGS.contains(CGEventFlags::CGEventFlagControl)
158+
&& !*global_flags.contains(CGEventFlags::CGEventFlagControl)
158159
{
159-
LAST_FLAGS = flags;
160+
*global_flags = flags;
160161
Some(EventType::KeyPress(key))
161162
} else if !flags.contains(CGEventFlags::CGEventFlagControl)
162-
&& LAST_FLAGS.contains(CGEventFlags::CGEventFlagControl)
163+
&& *global_flags.contains(CGEventFlags::CGEventFlagControl)
163164
{
164-
LAST_FLAGS = flags;
165+
*global_flags = flags;
165166
Some(EventType::KeyRelease(key))
166167
} else if flags.contains(CGEventFlags::CGEventFlagAlternate)
167-
&& !LAST_FLAGS.contains(CGEventFlags::CGEventFlagAlternate)
168+
&& !*global_flags.contains(CGEventFlags::CGEventFlagAlternate)
168169
{
169-
LAST_FLAGS = flags;
170+
*global_flags = flags;
170171
Some(EventType::KeyPress(key))
171172
} else if !flags.contains(CGEventFlags::CGEventFlagAlternate)
172-
&& LAST_FLAGS.contains(CGEventFlags::CGEventFlagAlternate)
173+
&& *global_flags.contains(CGEventFlags::CGEventFlagAlternate)
173174
{
174-
LAST_FLAGS = flags;
175+
*global_flags = flags;
175176
Some(EventType::KeyRelease(key))
176177
} else if flags.contains(CGEventFlags::CGEventFlagCommand)
177-
&& !LAST_FLAGS.contains(CGEventFlags::CGEventFlagCommand)
178+
&& !*global_flags.contains(CGEventFlags::CGEventFlagCommand)
178179
{
179-
LAST_FLAGS = flags;
180+
*global_flags = flags;
180181
Some(EventType::KeyPress(key))
181182
} else if !flags.contains(CGEventFlags::CGEventFlagCommand)
182-
&& LAST_FLAGS.contains(CGEventFlags::CGEventFlagCommand)
183+
&& *global_flags.contains(CGEventFlags::CGEventFlagCommand)
183184
{
184-
LAST_FLAGS = flags;
185+
*global_flags = flags;
185186
Some(EventType::KeyRelease(key))
186187
} else {
187188
None
188-
};
189-
event
189+
}
190190
}
191191
CGEventType::ScrollWheel => {
192192
let delta_y =

src/macos/simulate.rs

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,6 @@ use std::convert::TryInto;
1111
use crate::macos::common::LAST_FLAGS;
1212
use crate::macos::keycodes::code_from_key;
1313

14-
// Track the current state of modifier keys
15-
static mut CURRENT_FLAGS: CGEventFlags = CGEventFlags::CGEventFlagNull;
16-
1714
unsafe fn convert_native_with_source(
1815
event_type: &EventType,
1916
source: CGEventSource,

0 commit comments

Comments
 (0)