Skip to content

Commit b4072b6

Browse files
authored
Merge pull request #4 from JE-Chen/dev
add osx record
2 parents 982dabc + c91a5f3 commit b4072b6

File tree

8 files changed

+100
-39
lines changed

8 files changed

+100
-39
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from je_auto_control.osx.listener import *

je_auto_control/osx/listener/osx_keyboard_listener.py

Lines changed: 0 additions & 17 deletions
This file was deleted.
Lines changed: 63 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,63 @@
1+
import sys
2+
3+
if sys.platform not in ["darwin"]:
4+
raise Exception("should be only loaded on MacOS")
5+
6+
7+
from Cocoa import *
8+
import time
9+
from Foundation import *
10+
from PyObjCTools import AppHelper
11+
12+
from queue import Queue
13+
14+
15+
class RecordQueue(object):
16+
17+
def __init__(self):
18+
self.record_queue = None
19+
20+
def reset_queue(self):
21+
self.record_queue = Queue()
22+
23+
24+
record_queue_manager = RecordQueue()
25+
26+
class AppDelegate(NSObject):
27+
def applicationDidFinishLaunching_(self, aNotification):
28+
NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSEventMaskKeyDown, keyboard_handler)
29+
NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSEventMaskLeftMouseDown, mouse_left_handler)
30+
NSEvent.addGlobalMonitorForEventsMatchingMask_handler_(NSEventMaskRightMouseDown, mouse_right_handler)
31+
32+
33+
def mouse_left_handler(event):
34+
loc = NSEvent.mouseLocation()
35+
record_queue_manager.record_queue.put(("mouse_left", loc.x, loc.y))
36+
37+
38+
def mouse_right_handler(event):
39+
loc = NSEvent.mouseLocation()
40+
record_queue_manager.record_queue.put(("mouse_right", loc.x, loc.y))
41+
42+
43+
def keyboard_handler(event):
44+
record_queue_manager.record_queue.put(("keyboard", int(hex(event.keyCode()), 16)))
45+
if int(event.keyCode()) == 98:
46+
AppHelper.stopEventLoop()
47+
48+
49+
def osx_record():
50+
record_queue_manager.reset_queue()
51+
app = NSApplication.sharedApplication()
52+
delegate = AppDelegate.alloc().init()
53+
NSApp().setDelegate_(delegate)
54+
AppHelper.runEventLoop()
55+
56+
57+
def osx_stop_record():
58+
return record_queue_manager.record_queue
59+
60+
61+
if __name__ == "__main__":
62+
osx_record()
63+

je_auto_control/osx/listener/osx_mouse_listener.py

Lines changed: 0 additions & 20 deletions
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
from je_auto_control.osx.record import *
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import sys
2+
3+
if sys.platform not in ["darwin"]:
4+
raise Exception("should be only loaded on MacOS")
5+
6+
7+
from je_auto_control.osx.listener.osx_listener import osx_record
8+
from je_auto_control.osx.listener.osx_listener import osx_stop_record
9+
10+
from je_auto_control.utils.je_auto_control_exception.exceptions import AutoControlRecordException
11+
12+
13+
class OSXRecorder(object):
14+
15+
16+
def record(self):
17+
osx_record()
18+
19+
20+
def stop_record(self):
21+
record_queue = osx_stop_record()
22+
if record_queue is None:
23+
raise AutoControlRecordException
24+
return osx_stop_record()
25+
26+
osx_recorder = OSXRecorder()

je_auto_control/wrapper/auto_control_record.py

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,10 +50,15 @@ def stop_record():
5050
raise AutoControlRecordException(record_not_found_action_error)
5151

5252

53-
5453
if __name__ == "__main__":
5554
record()
5655
from time import sleep
5756
sleep(10)
5857
stop_record()
5958
sleep(3)
59+
import sys
60+
if sys.platform in ["darwin"]:
61+
record()
62+
stop_record()
63+
64+

je_auto_control/wrapper/platform_wrapper.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,7 @@
284284
from je_auto_control.osx.screen import osx_screen
285285
from je_auto_control.osx.keyboard import osx_keyboard
286286
from je_auto_control.osx.keyboard import osx_keyboard_check
287+
from je_auto_control.osx.record.osx_record import osx_recorder
287288

288289
elif sys.platform in ["linux", "linux2"]:
289290
from je_auto_control.linux_with_x11.core.utils.x11_linux_vk import x11_linux_key_backspace
@@ -863,7 +864,8 @@
863864
keyboard_check = osx_keyboard_check
864865
mouse = osx_mouse
865866
screen = osx_screen
866-
if None in [keys_table, mouse_table, keyboard_check, keyboard, mouse, screen]:
867+
recorder = osx_recorder
868+
if None in [keys_table, mouse_table, keyboard_check, keyboard, mouse, screen, recorder]:
867869
raise AutoControlException("Can't init auto control")
868870

869871
elif sys.platform in ["linux", "linux2"]:

0 commit comments

Comments
 (0)