From 0e506d181badd3207d62930fc2a522ef4e02aa9b Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Sun, 28 Sep 2025 23:01:25 +0800 Subject: [PATCH 1/6] Update dev version Update dev version * Rename win32VK to WIN32VK --- .idea/workspace.xml | 95 ++--- je_auto_control/__init__.py | 15 +- .../windows/core/utils/win32_vk.py | 334 +++++++++--------- je_auto_control/wrapper/platform_wrapper.py | 4 +- pyproject.toml | 10 +- dev.toml => stable.toml | 10 +- 6 files changed, 237 insertions(+), 231 deletions(-) rename dev.toml => stable.toml (89%) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 1ab5cff..26ebb62 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -5,7 +5,9 @@ - + + + - { - "keyToString": { - "DefaultHtmlFileTemplate": "HTML File", - "Python.auto_control_keyboard.executor": "Run", - "Python.auto_control_mouse.executor": "Run", - "Python.calculator.executor": "Run", - "Python.callback_test.executor": "Run", - "Python.create_project_test.executor": "Run", - "Python.critical_exit_test.executor": "Run", - "Python.executor_one_file.executor": "Run", - "Python.main_widget.executor": "Run", - "Python.main_window.executor": "Run", - "Python.record_test.executor": "Run", - "Python.screen_test.executor": "Run", - "Python.screenshot_test.executor": "Run", - "Python.test.executor": "Run", - "Python.video_recording.executor": "Run", - "RunOnceActivity.OpenProjectViewOnStart": "true", - "RunOnceActivity.ShowReadmeOnStart": "true", - "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", - "RunOnceActivity.git.unshallow": "true", - "WebServerToolWindowFactoryState": "false", - "git-widget-placeholder": "dev", - "ignore.virus.scanning.warn.message": "true", - "junie.onboarding.icon.badge.shown": "true", - "last_opened_file_path": "C:/CodeWorkspace/Python/AutoControlGUI", - "node.js.detected.package.eslint": "true", - "node.js.detected.package.tslint": "true", - "node.js.selected.package.eslint": "(autodetect)", - "node.js.selected.package.tslint": "(autodetect)", - "nodejs_package_manager_path": "npm", - "settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable", - "to.speed.mode.migration.done": "true", - "vue.rearranger.settings.migration": "true" + +}]]> @@ -124,7 +127,7 @@ - + - + - + + - @@ -598,6 +601,7 @@ + @@ -620,11 +624,12 @@ - + + diff --git a/je_auto_control/__init__.py b/je_auto_control/__init__.py index df8515b..40ea2f1 100644 --- a/je_auto_control/__init__.py +++ b/je_auto_control/__init__.py @@ -10,6 +10,8 @@ from je_auto_control.utils.cv2_utils.screen_record import ScreenRecorder # utils cv2_utils from je_auto_control.utils.cv2_utils.screenshot import pil_screenshot +# Recording +from je_auto_control.utils.cv2_utils.video_recording import RecordingThread from je_auto_control.utils.exception.exceptions import \ AutoControlActionException from je_auto_control.utils.exception.exceptions import \ @@ -74,6 +76,8 @@ # timeout from je_auto_control.utils.timeout.multiprocess_timeout import \ multiprocess_timeout +# Windows +from je_auto_control.windows.window import windows_window_manage from je_auto_control.wrapper.auto_control_image import locate_all_image from je_auto_control.wrapper.auto_control_image import locate_and_click from je_auto_control.wrapper.auto_control_image import locate_image_center @@ -85,9 +89,9 @@ from je_auto_control.wrapper.auto_control_keyboard import keyboard_keys_table from je_auto_control.wrapper.auto_control_keyboard import press_keyboard_key from je_auto_control.wrapper.auto_control_keyboard import release_keyboard_key +from je_auto_control.wrapper.auto_control_keyboard import send_key_event_to_window from je_auto_control.wrapper.auto_control_keyboard import type_keyboard from je_auto_control.wrapper.auto_control_keyboard import write -from je_auto_control.wrapper.auto_control_keyboard import send_key_event_to_window # import mouse from je_auto_control.wrapper.auto_control_mouse import click_mouse from je_auto_control.wrapper.auto_control_mouse import get_mouse_position @@ -95,19 +99,15 @@ from je_auto_control.wrapper.auto_control_mouse import mouse_scroll from je_auto_control.wrapper.auto_control_mouse import press_mouse from je_auto_control.wrapper.auto_control_mouse import release_mouse +from je_auto_control.wrapper.auto_control_mouse import send_mouse_event_to_window from je_auto_control.wrapper.auto_control_mouse import set_mouse_position from je_auto_control.wrapper.auto_control_mouse import special_mouse_keys_table -from je_auto_control.wrapper.auto_control_mouse import send_mouse_event_to_window # test_record from je_auto_control.wrapper.auto_control_record import record from je_auto_control.wrapper.auto_control_record import stop_record # import screen from je_auto_control.wrapper.auto_control_screen import screen_size from je_auto_control.wrapper.auto_control_screen import screenshot -# Recording -from je_auto_control.utils.cv2_utils.video_recording import RecordingThread -# Windows -from je_auto_control.windows.window import windows_window_manage __all__ = [ "click_mouse", "mouse_keys_table", "get_mouse_position", "press_mouse", "release_mouse", @@ -124,5 +124,6 @@ "generate_html", "generate_html_report", "generate_json", "generate_json_report", "generate_xml", "generate_xml_report", "get_dir_files_as_list", "create_project_dir", "start_autocontrol_socket_server", "callback_executor", "package_manager", "get_special_table", "ShellManager", "default_shell_manager", - "RecordingThread", "send_key_event_to_window", "send_mouse_event_to_window", "windows_window_manage" + "RecordingThread", "send_key_event_to_window", "send_mouse_event_to_window", "windows_window_manage", + "ScreenRecorder" ] diff --git a/je_auto_control/windows/core/utils/win32_vk.py b/je_auto_control/windows/core/utils/win32_vk.py index c9c869d..91edc54 100644 --- a/je_auto_control/windows/core/utils/win32_vk.py +++ b/je_auto_control/windows/core/utils/win32_vk.py @@ -3,182 +3,182 @@ from je_auto_control.utils.exception.exception_tags import windows_import_error from je_auto_control.utils.exception.exceptions import AutoControlException -if sys.platform not in ["win32", "cygwin", "msys"]: +if sys.platform not in ["WIN32", "cygwin", "msys"]: raise AutoControlException(windows_import_error) # windows mouse virtual keycode -win32_MOVE: int = 0x0001 -win32_LEFTDOWN: int = 0x0002 -win32_LEFTUP: int = 0x0004 -win32_RIGHTDOWN: int = 0x0008 -win32_RIGHTUP: int = 0x0010 -win32_MIDDLEDOWN: int = 0x0020 -win32_MIDDLEUP: int = 0x0040 -win32_DOWN: int = 0x0080 -win32_XUP: int = 0x0100 -win32_WHEEL: int = 0x0800 -win32_HWHEEL: int = 0x1000 -win32_ABSOLUTE: int = 0x8000 -win32_XBUTTON1: int = 0x0001 -win32_XBUTTON2: int = 0x0002 +WIN32_MOVE: int = 0x0001 +WIN32_LEFTDOWN: int = 0x0002 +WIN32_LEFTUP: int = 0x0004 +WIN32_RIGHTDOWN: int = 0x0008 +WIN32_RIGHTUP: int = 0x0010 +WIN32_MIDDLEDOWN: int = 0x0020 +WIN32_MIDDLEUP: int = 0x0040 +WIN32_DOWN: int = 0x0080 +WIN32_XUP: int = 0x0100 +WIN32_WHEEL: int = 0x0800 +WIN32_HWHEEL: int = 0x1000 +WIN32_ABSOLUTE: int = 0x8000 +WIN32_XBUTTON1: int = 0x0001 +WIN32_XBUTTON2: int = 0x0002 -win32_VK_LBUTTON: int = 0x01 -win32_VK_RBUTTON: int = 0x02 -win32_VK_MBUTTON: int = 0x04 -win32_VK_XBUTTON1: int = 0x05 -win32_VK_XBUTTON2: int = 0x06 +WIN32_VK_LBUTTON: int = 0x01 +WIN32_VK_RBUTTON: int = 0x02 +WIN32_VK_MBUTTON: int = 0x04 +WIN32_VK_XBUTTON1: int = 0x05 +WIN32_VK_XBUTTON2: int = 0x06 """ windows keyboard virtual keycode """ -win32_EventF_EXTENDEDKEY: int = 0x0001 -win32_EventF_KEYUP: int = 0x0002 -win32_EventF_UNICODE: int = 0x0004 -win32_EventF_SCANCODE: int = 0x0008 +WIN32_EventF_EXTENDEDKEY: int = 0x0001 +WIN32_EventF_KEYUP: int = 0x0002 +WIN32_EventF_UNICODE: int = 0x0004 +WIN32_EventF_SCANCODE: int = 0x0008 -win32_VkToVSC: int = 0 -win32_VK_CANCEL: int = 0x03 -win32_VK_BACK: int = 0x08 # BACKSPACE key -win32_VK_TAB: int = 0x09 # TAB key -win32_VK_CLEAR: int = 0x0C # CLEAR key -win32_VK_RETURN: int = 0x0D # ENTER key -win32_VK_SHIFT: int = 0x10 # SHIFT key -win32_VK_CONTROL: int = 0x11 # CTRL key -win32_VK_Menu: int = 0x12 # ALT key -win32_VK_PAUSE: int = 0x13 # PAUSE key -win32_VK_CAPITAL: int = 0x14 # CAPS LOCK key -win32_VK_KANA: int = 0x15 -win32_VK_IME_ON: int = 0x16 -win32_VK_JUNJA: int = 0x17 -win32_VK_FINAL: int = 0x18 # ESC key -win32_VK_HANJA: int = 0x19 -win32_VK_IME_OFF: int = 0x1A -win32_VK_ESCAPE: int = 0x1B -win32_VK_CONVERT: int = 0x1C -win32_VK_NONCONVERT: int = 0x1D -win32_VK_ACCEPT: int = 0x1E -win32_VK_MODECHANGE: int = 0x1F -win32_VK_SPACE: int = 0x20 # SPACEBAR -win32_VK_PRIOR: int = 0x21 # PAGE UP key -win32_VK_NEXT: int = 0x22 # PAGE DOWN key -win32_VK_END: int = 0x23 # END key -win32_VK_HOME: int = 0x24 # HOME key -win32_VK_LEFT: int = 0x25 # LEFT ARROW key -win32_VK_UP: int = 0x26 -win32_VK_RIGHT: int = 0x27 -win32_VK_DOWN: int = 0x28 -win32_VK_SELECT: int = 0x29 -win32_VK_PRINT: int = 0x2A -win32_VK_EXECUTE: int = 0x2B -win32_VK_SNAPSHOT: int = 0x2C -win32_VK_INSERT: int = 0x2D -win32_VK_DELETE: int = 0x2E -win32_VK_HELP: int = 0x2F -win32_key0: int = 0x30 -win32_key1: int = 0x31 -win32_key2: int = 0x32 -win32_key3: int = 0x33 -win32_key4: int = 0x34 -win32_key5: int = 0x35 -win32_key6: int = 0x36 -win32_key7: int = 0x37 -win32_key8: int = 0x38 -win32_key9: int = 0x39 -win32_keyA: int = 0x41 -win32_keyB: int = 0x42 -win32_keyC: int = 0x43 -win32_keyD: int = 0x44 -win32_keyE: int = 0x45 -win32_keyF: int = 0x46 -win32_keyG: int = 0x47 -win32_keyH: int = 0x48 -win32_keyI: int = 0x49 -win32_keyJ: int = 0x4A -win32_keyK: int = 0x4B -win32_keyL: int = 0x4C -win32_keyM: int = 0X4D -win32_keyN: int = 0x4E -win32_keyO: int = 0x4F -win32_keyP: int = 0x50 -win32_keyQ: int = 0x51 -win32_keyR: int = 0x52 -win32_keyS: int = 0x53 -win32_keyT: int = 0x54 -win32_keyU: int = 0x55 -win32_keyV: int = 0x56 -win32_keyW: int = 0x57 -win32_keyX: int = 0x58 -win32_keyY: int = 0x59 -win32_keyZ: int = 0x5A -win32_VK_LWIN: int = 0x5B # Left Windows key (Natural keyboard) -win32_VK_RWIN: int = 0x5C # Right Windows key (Natural keyboard) -win32_VK_APPS: int = 0x5D # Applications key (Natural keyboard) -win32_VK_SLEEP: int = 0x5F # Computer Sleep key -win32_VK_NUMPAD0: int = 0x60 # Numeric keypad 0 key -win32_VK_NUMPAD1: int = 0x61 -win32_VK_NUMPAD2: int = 0x62 -win32_VK_NUMPAD3: int = 0x63 -win32_VK_NUMPAD4: int = 0x64 -win32_VK_NUMPAD5: int = 0x65 -win32_VK_NUMPAD6: int = 0x66 -win32_VK_NUMPAD7: int = 0x67 -win32_VK_NUMPAD8: int = 0x68 -win32_VK_NUMPAD9: int = 0x69 -win32_VK_MULTIPLY: int = 0x6A # Multiply key -win32_VK_ADD: int = 0x6B # Add key -win32_VK_SEPARATOR: int = 0x6C # Separator key -win32_VK_SUBTRACT: int = 0x6D # Subtract key -win32_VK_DECIMAL: int = 0x6E # Decimal key -win32_VK_DIVIDE: int = 0x6F # VK_DIVIDE -win32_VK_F1: int = 0x70 # F1 -win32_VK_F2: int = 0x71 -win32_VK_F3: int = 0x72 -win32_VK_F4: int = 0x73 -win32_VK_F5: int = 0x74 -win32_VK_F6: int = 0x75 -win32_VK_F7: int = 0x76 -win32_VK_F8: int = 0x77 -win32_VK_F9: int = 0x78 -win32_VK_F10: int = 0x79 -win32_VK_F11: int = 0x7A -win32_VK_F12: int = 0x7B -win32_VK_F13: int = 0x7C -win32_VK_F14: int = 0x7D -win32_VK_F15: int = 0x7E -win32_VK_F16: int = 0x7F -win32_VK_F17: int = 0x80 -win32_VK_F18: int = 0x81 -win32_VK_F19: int = 0x82 -win32_VK_F20: int = 0x83 -win32_VK_F21: int = 0x84 -win32_VK_F22: int = 0x85 -win32_VK_F23: int = 0x86 -win32_VK_F24: int = 0x87 -win32_VK_NUMLOCK: int = 0x90 # NUM LOCK key -win32_VK_SCROLL: int = 0x91 # SCROLL LOCK key -win32_VK_LSHIFT: int = 0xA0 # Left SHIFT key -win32_VK_RSHIFT: int = 0xA1 -win32_VK_LCONTROL: int = 0xA2 # Left CONTROL key -win32_VK_RCONTROL: int = 0xA3 # Right CONTROL key -win32_VK_LMENU: int = 0xA4 # Left MENU key -win32_VK_RMENU: int = 0xA5 # Right MENU key -win32_VK_BROWSER_BACK: int = 0xA6 # Browser Back key -win32_VK_BROWSER_FORWARD: int = 0xA7 # Browser Forward key -win32_VK_BROWSER_REFRESH: int = 0xA8 # Browser Refresh key -win32_VK_BROWSER_STOP: int = 0xA9 # Browser Stop key -win32_VK_BROWSER_SEARCH: int = 0xAA # Browser Search key -win32_VK_BROWSER_FAVORITES: int = 0xAB # Browser Favorites key -win32_VK_VOLUME_MUTE: int = 0xAD -win32_VK_VOLUME_DOWN: int = 0xAE -win32_VK_VOLUME_UP: int = 0xAF -win32_VK_MEDIA_NEXT_TRACK: int = 0xB0 -win32_VK_MEDIA_PREV_TRACK: int = 0xB1 -win32_VK_MEDIA_STOP: int = 0xB2 -win32_VK_MEDIA_PLAY_PAUSE: int = 0xB3 -win32_VK_LAUNCH_MAIL: int = 0xB4 -win32_VK_LAUNCH_MEDIA_SELECT: int = 0xB5 -win32_VK_LAUNCH_APP1: int = 0xB6 -win32_VK_LAUNCH_APP2: int = 0xB7 +WIN32_VkToVSC: int = 0 +WIN32_VK_CANCEL: int = 0x03 +WIN32_VK_BACK: int = 0x08 # BACKSPACE key +WIN32_VK_TAB: int = 0x09 # TAB key +WIN32_VK_CLEAR: int = 0x0C # CLEAR key +WIN32_VK_RETURN: int = 0x0D # ENTER key +WIN32_VK_SHIFT: int = 0x10 # SHIFT key +WIN32_VK_CONTROL: int = 0x11 # CTRL key +WIN32_VK_Menu: int = 0x12 # ALT key +WIN32_VK_PAUSE: int = 0x13 # PAUSE key +WIN32_VK_CAPITAL: int = 0x14 # CAPS LOCK key +WIN32_VK_KANA: int = 0x15 +WIN32_VK_IME_ON: int = 0x16 +WIN32_VK_JUNJA: int = 0x17 +WIN32_VK_FINAL: int = 0x18 # ESC key +WIN32_VK_HANJA: int = 0x19 +WIN32_VK_IME_OFF: int = 0x1A +WIN32_VK_ESCAPE: int = 0x1B +WIN32_VK_CONVERT: int = 0x1C +WIN32_VK_NONCONVERT: int = 0x1D +WIN32_VK_ACCEPT: int = 0x1E +WIN32_VK_MODECHANGE: int = 0x1F +WIN32_VK_SPACE: int = 0x20 # SPACEBAR +WIN32_VK_PRIOR: int = 0x21 # PAGE UP key +WIN32_VK_NEXT: int = 0x22 # PAGE DOWN key +WIN32_VK_END: int = 0x23 # END key +WIN32_VK_HOME: int = 0x24 # HOME key +WIN32_VK_LEFT: int = 0x25 # LEFT ARROW key +WIN32_VK_UP: int = 0x26 +WIN32_VK_RIGHT: int = 0x27 +WIN32_VK_DOWN: int = 0x28 +WIN32_VK_SELECT: int = 0x29 +WIN32_VK_PRINT: int = 0x2A +WIN32_VK_EXECUTE: int = 0x2B +WIN32_VK_SNAPSHOT: int = 0x2C +WIN32_VK_INSERT: int = 0x2D +WIN32_VK_DELETE: int = 0x2E +WIN32_VK_HELP: int = 0x2F +WIN32_key0: int = 0x30 +WIN32_key1: int = 0x31 +WIN32_key2: int = 0x32 +WIN32_key3: int = 0x33 +WIN32_key4: int = 0x34 +WIN32_key5: int = 0x35 +WIN32_key6: int = 0x36 +WIN32_key7: int = 0x37 +WIN32_key8: int = 0x38 +WIN32_key9: int = 0x39 +WIN32_keyA: int = 0x41 +WIN32_keyB: int = 0x42 +WIN32_keyC: int = 0x43 +WIN32_keyD: int = 0x44 +WIN32_keyE: int = 0x45 +WIN32_keyF: int = 0x46 +WIN32_keyG: int = 0x47 +WIN32_keyH: int = 0x48 +WIN32_keyI: int = 0x49 +WIN32_keyJ: int = 0x4A +WIN32_keyK: int = 0x4B +WIN32_keyL: int = 0x4C +WIN32_keyM: int = 0X4D +WIN32_keyN: int = 0x4E +WIN32_keyO: int = 0x4F +WIN32_keyP: int = 0x50 +WIN32_keyQ: int = 0x51 +WIN32_keyR: int = 0x52 +WIN32_keyS: int = 0x53 +WIN32_keyT: int = 0x54 +WIN32_keyU: int = 0x55 +WIN32_keyV: int = 0x56 +WIN32_keyW: int = 0x57 +WIN32_keyX: int = 0x58 +WIN32_keyY: int = 0x59 +WIN32_keyZ: int = 0x5A +WIN32_VK_LWIN: int = 0x5B # Left Windows key (Natural keyboard) +WIN32_VK_RWIN: int = 0x5C # Right Windows key (Natural keyboard) +WIN32_VK_APPS: int = 0x5D # Applications key (Natural keyboard) +WIN32_VK_SLEEP: int = 0x5F # Computer Sleep key +WIN32_VK_NUMPAD0: int = 0x60 # Numeric keypad 0 key +WIN32_VK_NUMPAD1: int = 0x61 +WIN32_VK_NUMPAD2: int = 0x62 +WIN32_VK_NUMPAD3: int = 0x63 +WIN32_VK_NUMPAD4: int = 0x64 +WIN32_VK_NUMPAD5: int = 0x65 +WIN32_VK_NUMPAD6: int = 0x66 +WIN32_VK_NUMPAD7: int = 0x67 +WIN32_VK_NUMPAD8: int = 0x68 +WIN32_VK_NUMPAD9: int = 0x69 +WIN32_VK_MULTIPLY: int = 0x6A # Multiply key +WIN32_VK_ADD: int = 0x6B # Add key +WIN32_VK_SEPARATOR: int = 0x6C # Separator key +WIN32_VK_SUBTRACT: int = 0x6D # Subtract key +WIN32_VK_DECIMAL: int = 0x6E # Decimal key +WIN32_VK_DIVIDE: int = 0x6F # VK_DIVIDE +WIN32_VK_F1: int = 0x70 # F1 +WIN32_VK_F2: int = 0x71 +WIN32_VK_F3: int = 0x72 +WIN32_VK_F4: int = 0x73 +WIN32_VK_F5: int = 0x74 +WIN32_VK_F6: int = 0x75 +WIN32_VK_F7: int = 0x76 +WIN32_VK_F8: int = 0x77 +WIN32_VK_F9: int = 0x78 +WIN32_VK_F10: int = 0x79 +WIN32_VK_F11: int = 0x7A +WIN32_VK_F12: int = 0x7B +WIN32_VK_F13: int = 0x7C +WIN32_VK_F14: int = 0x7D +WIN32_VK_F15: int = 0x7E +WIN32_VK_F16: int = 0x7F +WIN32_VK_F17: int = 0x80 +WIN32_VK_F18: int = 0x81 +WIN32_VK_F19: int = 0x82 +WIN32_VK_F20: int = 0x83 +WIN32_VK_F21: int = 0x84 +WIN32_VK_F22: int = 0x85 +WIN32_VK_F23: int = 0x86 +WIN32_VK_F24: int = 0x87 +WIN32_VK_NUMLOCK: int = 0x90 # NUM LOCK key +WIN32_VK_SCROLL: int = 0x91 # SCROLL LOCK key +WIN32_VK_LSHIFT: int = 0xA0 # Left SHIFT key +WIN32_VK_RSHIFT: int = 0xA1 +WIN32_VK_LCONTROL: int = 0xA2 # Left CONTROL key +WIN32_VK_RCONTROL: int = 0xA3 # Right CONTROL key +WIN32_VK_LMENU: int = 0xA4 # Left MENU key +WIN32_VK_RMENU: int = 0xA5 # Right MENU key +WIN32_VK_BROWSER_BACK: int = 0xA6 # Browser Back key +WIN32_VK_BROWSER_FORWARD: int = 0xA7 # Browser Forward key +WIN32_VK_BROWSER_REFRESH: int = 0xA8 # Browser Refresh key +WIN32_VK_BROWSER_STOP: int = 0xA9 # Browser Stop key +WIN32_VK_BROWSER_SEARCH: int = 0xAA # Browser Search key +WIN32_VK_BROWSER_FAVORITES: int = 0xAB # Browser Favorites key +WIN32_VK_VOLUME_MUTE: int = 0xAD +WIN32_VK_VOLUME_DOWN: int = 0xAE +WIN32_VK_VOLUME_UP: int = 0xAF +WIN32_VK_MEDIA_NEXT_TRACK: int = 0xB0 +WIN32_VK_MEDIA_PREV_TRACK: int = 0xB1 +WIN32_VK_MEDIA_STOP: int = 0xB2 +WIN32_VK_MEDIA_PLAY_PAUSE: int = 0xB3 +WIN32_VK_LAUNCH_MAIL: int = 0xB4 +WIN32_VK_LAUNCH_MEDIA_SELECT: int = 0xB5 +WIN32_VK_LAUNCH_APP1: int = 0xB6 +WIN32_VK_LAUNCH_APP2: int = 0xB7 diff --git a/je_auto_control/wrapper/platform_wrapper.py b/je_auto_control/wrapper/platform_wrapper.py index 538af67..12b0e7a 100644 --- a/je_auto_control/wrapper/platform_wrapper.py +++ b/je_auto_control/wrapper/platform_wrapper.py @@ -14,7 +14,7 @@ from je_auto_control.windows.core.utils.win32_vk import win32_LEFTUP from je_auto_control.windows.core.utils.win32_vk import win32_MIDDLEDOWN from je_auto_control.windows.core.utils.win32_vk import win32_MIDDLEUP - from je_auto_control.windows.core.utils.win32_vk import win32_MOVE + from je_auto_control.windows.core.utils.win32_vk import WIN32_MOVE from je_auto_control.windows.core.utils.win32_vk import win32_RIGHTDOWN from je_auto_control.windows.core.utils.win32_vk import win32_RIGHTUP from je_auto_control.windows.core.utils.win32_vk import win32_VK_ACCEPT @@ -506,7 +506,7 @@ "leftup": win32_LEFTUP, "middledown": win32_MIDDLEDOWN, "middleup": win32_MIDDLEUP, - "move": win32_MOVE, + "move": WIN32_MOVE, "rightdown": win32_RIGHTDOWN, "rightup": win32_RIGHTUP, "accept": win32_VK_ACCEPT, diff --git a/pyproject.toml b/pyproject.toml index f5f4034..aeeb5aa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,12 @@ -# Rename to build stable version -# This is stable version +# Rename to build dev version +# This is dev version [build-system] -requires = ["setuptools>=61.0"] +requires = ["setuptools"] build-backend = "setuptools.build_meta" [project] -name = "je_auto_control" -version = "0.0.174" +name = "je_auto_control_dev" +version = "0.0.123" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] diff --git a/dev.toml b/stable.toml similarity index 89% rename from dev.toml rename to stable.toml index 2156464..f5f4034 100644 --- a/dev.toml +++ b/stable.toml @@ -1,12 +1,12 @@ -# Rename to build dev version -# This is dev version +# Rename to build stable version +# This is stable version [build-system] -requires = ["setuptools"] +requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "je_auto_control_dev" -version = "0.0.122" +name = "je_auto_control" +version = "0.0.174" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] From 1a730694a40bd06c2da935a6b9e3ed890890a5a0 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Mon, 29 Sep 2025 00:09:28 +0800 Subject: [PATCH 2/6] Fix an error that check sys.platform in WIN32 not win32 Fix an error that check sys.platform in WIN32 not win32 --- .idea/workspace.xml | 79 +++++++++---------- .../windows/core/utils/win32_vk.py | 2 +- pyproject.toml | 2 +- 3 files changed, 40 insertions(+), 43 deletions(-) diff --git a/.idea/workspace.xml b/.idea/workspace.xml index 26ebb62..c9d4984 100644 --- a/.idea/workspace.xml +++ b/.idea/workspace.xml @@ -4,11 +4,7 @@ - - - - - + - { + "keyToString": { + "DefaultHtmlFileTemplate": "HTML File", + "Python.auto_control_keyboard.executor": "Run", + "Python.auto_control_mouse.executor": "Run", + "Python.calculator.executor": "Run", + "Python.callback_test.executor": "Run", + "Python.create_project_test.executor": "Run", + "Python.critical_exit_test.executor": "Run", + "Python.executor_one_file.executor": "Run", + "Python.keyboard_is_press_test.executor": "Run", + "Python.main_widget.executor": "Run", + "Python.main_window.executor": "Run", + "Python.record_test.executor": "Run", + "Python.screen_test.executor": "Run", + "Python.screenshot_test.executor": "Run", + "Python.test.executor": "Run", + "Python.video_recording.executor": "Run", + "RunOnceActivity.OpenProjectViewOnStart": "true", + "RunOnceActivity.ShowReadmeOnStart": "true", + "RunOnceActivity.TerminalTabsStorage.copyFrom.TerminalArrangementManager.252": "true", + "RunOnceActivity.git.unshallow": "true", + "WebServerToolWindowFactoryState": "false", + "git-widget-placeholder": "dev", + "ignore.virus.scanning.warn.message": "true", + "junie.onboarding.icon.badge.shown": "true", + "last_opened_file_path": "C:/CodeWorkspace/Python/AutoControlGUI", + "node.js.detected.package.eslint": "true", + "node.js.detected.package.tslint": "true", + "node.js.selected.package.eslint": "(autodetect)", + "node.js.selected.package.tslint": "(autodetect)", + "nodejs_package_manager_path": "npm", + "settings.editor.selected.configurable": "com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable", + "to.speed.mode.migration.done": "true", + "vue.rearranger.settings.migration": "true" } -}]]> +} @@ -602,6 +598,7 @@ + diff --git a/je_auto_control/windows/core/utils/win32_vk.py b/je_auto_control/windows/core/utils/win32_vk.py index 91edc54..859ba3e 100644 --- a/je_auto_control/windows/core/utils/win32_vk.py +++ b/je_auto_control/windows/core/utils/win32_vk.py @@ -3,7 +3,7 @@ from je_auto_control.utils.exception.exception_tags import windows_import_error from je_auto_control.utils.exception.exceptions import AutoControlException -if sys.platform not in ["WIN32", "cygwin", "msys"]: +if sys.platform not in ["win32", "cygwin", "msys"]: raise AutoControlException(windows_import_error) # windows mouse virtual keycode diff --git a/pyproject.toml b/pyproject.toml index aeeb5aa..a1c5965 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" [project] name = "je_auto_control_dev" -version = "0.0.123" +version = "0.0.124" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] From e93d8ce3b4b463e8944f9811e7d846501a698f7f Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Mon, 29 Sep 2025 00:47:50 +0800 Subject: [PATCH 3/6] Update VK Update VK * Using refactor to make sure every VK are renamed --- .github/workflows/jekyll-gh-pages.yml | 50 -- .../windows/core/utils/win32_ctype_input.py | 6 +- .../windows/core/utils/win32_vk.py | 2 +- .../keyboard/win32_ctype_keyboard_control.py | 4 +- .../mouse/win32_ctype_mouse_control.py | 34 +- je_auto_control/wrapper/platform_wrapper.py | 712 +++++++++--------- pyproject.toml | 2 +- 7 files changed, 380 insertions(+), 430 deletions(-) delete mode 100644 .github/workflows/jekyll-gh-pages.yml diff --git a/.github/workflows/jekyll-gh-pages.yml b/.github/workflows/jekyll-gh-pages.yml deleted file mode 100644 index 0acc24c..0000000 --- a/.github/workflows/jekyll-gh-pages.yml +++ /dev/null @@ -1,50 +0,0 @@ -# Sample workflow for building and deploying a Jekyll site to GitHub Pages -name: Deploy Jekyll with GitHub Pages dependencies preinstalled - -on: - # Runs on pushes targeting the default branch - push: - branches: ["main"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow one concurrent deployment -concurrency: - group: "pages" - cancel-in-progress: true - -jobs: - # Build job - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v3 - - name: Setup Pages - uses: actions/configure-pages@v2 - - name: Build with Jekyll - uses: actions/jekyll-build-pages@v1 - with: - source: ./ - destination: ./_site - - name: Upload artifact - uses: actions/upload-pages-artifact@v1 - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v1 diff --git a/je_auto_control/windows/core/utils/win32_ctype_input.py b/je_auto_control/windows/core/utils/win32_ctype_input.py index cd3001a..777b380 100644 --- a/je_auto_control/windows/core/utils/win32_ctype_input.py +++ b/je_auto_control/windows/core/utils/win32_ctype_input.py @@ -8,7 +8,7 @@ import ctypes from ctypes import wintypes -from je_auto_control.windows.core.utils.win32_vk import win32_EventF_UNICODE, win32_VkToVSC +from je_auto_control.windows.core.utils.win32_vk import WIN32_EventF_UNICODE, WIN32_VkToVSC user32 = ctypes.WinDLL('user32', use_last_error=True) @@ -37,8 +37,8 @@ class KeyboardInput(ctypes.Structure): def __init__(self, *args, **kwds): super(KeyboardInput, self).__init__(*args, **kwds) - if not self.dwFlags & win32_EventF_UNICODE: - self.wScan = user32.MapVirtualKeyExW(self.wVk, win32_VkToVSC, 0) + if not self.dwFlags & WIN32_EventF_UNICODE: + self.wScan = user32.MapVirtualKeyExW(self.wVk, WIN32_VkToVSC, 0) class HardwareInput(ctypes.Structure): diff --git a/je_auto_control/windows/core/utils/win32_vk.py b/je_auto_control/windows/core/utils/win32_vk.py index 859ba3e..5757848 100644 --- a/je_auto_control/windows/core/utils/win32_vk.py +++ b/je_auto_control/windows/core/utils/win32_vk.py @@ -181,4 +181,4 @@ WIN32_VK_LAUNCH_MAIL: int = 0xB4 WIN32_VK_LAUNCH_MEDIA_SELECT: int = 0xB5 WIN32_VK_LAUNCH_APP1: int = 0xB6 -WIN32_VK_LAUNCH_APP2: int = 0xB7 +WIN32_VK_LAUNCH_APP2: int = 0xB7 \ No newline at end of file diff --git a/je_auto_control/windows/keyboard/win32_ctype_keyboard_control.py b/je_auto_control/windows/keyboard/win32_ctype_keyboard_control.py index 4feb57f..72031e6 100644 --- a/je_auto_control/windows/keyboard/win32_ctype_keyboard_control.py +++ b/je_auto_control/windows/keyboard/win32_ctype_keyboard_control.py @@ -11,7 +11,7 @@ from je_auto_control.windows.core.utils.win32_ctype_input import KeyboardInput from je_auto_control.windows.core.utils.win32_ctype_input import SendInput from je_auto_control.windows.core.utils.win32_ctype_input import ctypes -from je_auto_control.windows.core.utils.win32_vk import win32_EventF_KEYUP +from je_auto_control.windows.core.utils.win32_vk import WIN32_EventF_KEYUP def press_key(keycode: int) -> None: @@ -26,7 +26,7 @@ def release_key(keycode: int) -> None: """ :param keycode which keycode we want to release """ - keyboard = Input(type=Keyboard, ki=KeyboardInput(wVk=keycode, dwFlags=win32_EventF_KEYUP)) + keyboard = Input(type=Keyboard, ki=KeyboardInput(wVk=keycode, dwFlags=WIN32_EventF_KEYUP)) SendInput(1, ctypes.byref(keyboard), ctypes.sizeof(keyboard)) def send_key_event_to_window(window: str, keycode: int): diff --git a/je_auto_control/windows/mouse/win32_ctype_mouse_control.py b/je_auto_control/windows/mouse/win32_ctype_mouse_control.py index bda2873..67d70c3 100644 --- a/je_auto_control/windows/mouse/win32_ctype_mouse_control.py +++ b/je_auto_control/windows/mouse/win32_ctype_mouse_control.py @@ -8,30 +8,30 @@ raise AutoControlException(windows_import_error) from je_auto_control.windows.core.utils.win32_ctype_input import Input, user32 -from je_auto_control.windows.core.utils.win32_vk import win32_LEFTDOWN -from je_auto_control.windows.core.utils.win32_vk import win32_LEFTUP -from je_auto_control.windows.core.utils.win32_vk import win32_MIDDLEDOWN -from je_auto_control.windows.core.utils.win32_vk import win32_MIDDLEUP +from je_auto_control.windows.core.utils.win32_vk import WIN32_LEFTDOWN +from je_auto_control.windows.core.utils.win32_vk import WIN32_LEFTUP +from je_auto_control.windows.core.utils.win32_vk import WIN32_MIDDLEDOWN +from je_auto_control.windows.core.utils.win32_vk import WIN32_MIDDLEUP from je_auto_control.windows.core.utils.win32_ctype_input import Mouse from je_auto_control.windows.core.utils.win32_ctype_input import MouseInput -from je_auto_control.windows.core.utils.win32_vk import win32_RIGHTDOWN -from je_auto_control.windows.core.utils.win32_vk import win32_RIGHTUP +from je_auto_control.windows.core.utils.win32_vk import WIN32_RIGHTDOWN +from je_auto_control.windows.core.utils.win32_vk import WIN32_RIGHTUP from je_auto_control.windows.core.utils.win32_ctype_input import SendInput -from je_auto_control.windows.core.utils.win32_vk import win32_XBUTTON1 -from je_auto_control.windows.core.utils.win32_vk import win32_XBUTTON2 -from je_auto_control.windows.core.utils.win32_vk import win32_DOWN -from je_auto_control.windows.core.utils.win32_vk import win32_XUP +from je_auto_control.windows.core.utils.win32_vk import WIN32_XBUTTON1 +from je_auto_control.windows.core.utils.win32_vk import WIN32_XBUTTON2 +from je_auto_control.windows.core.utils.win32_vk import WIN32_DOWN +from je_auto_control.windows.core.utils.win32_vk import WIN32_XUP from ctypes import windll from je_auto_control.windows.core.utils.win32_ctype_input import wintypes -from je_auto_control.windows.core.utils.win32_vk import win32_WHEEL +from je_auto_control.windows.core.utils.win32_vk import WIN32_WHEEL from je_auto_control.windows.core.utils.win32_ctype_input import ctypes from je_auto_control.windows.screen.win32_screen import size -win32_mouse_left: Tuple = (win32_LEFTUP, win32_LEFTDOWN, 0) -win32_mouse_middle: Tuple = (win32_MIDDLEUP, win32_MIDDLEDOWN, 0) -win32_mouse_right: Tuple = (win32_RIGHTUP, win32_RIGHTDOWN, 0) -win32_mouse_x1: Tuple = (win32_XUP, win32_DOWN, win32_XBUTTON1) -win32_mouse_x2: Tuple = (win32_XUP, win32_DOWN, win32_XBUTTON2) +win32_mouse_left: Tuple = (WIN32_LEFTUP, WIN32_LEFTDOWN, 0) +win32_mouse_middle: Tuple = (WIN32_MIDDLEUP, WIN32_MIDDLEDOWN, 0) +win32_mouse_right: Tuple = (WIN32_RIGHTUP, WIN32_RIGHTDOWN, 0) +win32_mouse_x1: Tuple = (WIN32_XUP, WIN32_DOWN, WIN32_XBUTTON1) +win32_mouse_x2: Tuple = (WIN32_XUP, WIN32_DOWN, WIN32_XBUTTON2) _get_cursor_pos: windll.user32.GetCursorPos = windll.user32.GetCursorPos _set_cursor_pos: windll.user32.SetCursorPos = windll.user32.SetCursorPos @@ -108,7 +108,7 @@ def scroll(scroll_value: int, x: int = None, y: int = None) -> None: :param x scroll x :param y scroll y """ - mouse_event(win32_WHEEL, x, y, dwData=scroll_value) + mouse_event(WIN32_WHEEL, x, y, dwData=scroll_value) def send_mouse_event_to_window(window, mouse_keycode: int, x: int = None, y: int = None): diff --git a/je_auto_control/wrapper/platform_wrapper.py b/je_auto_control/wrapper/platform_wrapper.py index 12b0e7a..25b0e8e 100644 --- a/je_auto_control/wrapper/platform_wrapper.py +++ b/je_auto_control/wrapper/platform_wrapper.py @@ -4,172 +4,172 @@ from je_auto_control.utils.logging.loggin_instance import autocontrol_logger if sys.platform in ["win32", "cygwin", "msys"]: - from je_auto_control.windows.core.utils.win32_vk import win32_ABSOLUTE - from je_auto_control.windows.core.utils.win32_vk import win32_EventF_EXTENDEDKEY - from je_auto_control.windows.core.utils.win32_vk import win32_EventF_KEYUP - from je_auto_control.windows.core.utils.win32_vk import win32_EventF_SCANCODE - from je_auto_control.windows.core.utils.win32_vk import win32_EventF_UNICODE - from je_auto_control.windows.core.utils.win32_vk import win32_HWHEEL - from je_auto_control.windows.core.utils.win32_vk import win32_LEFTDOWN - from je_auto_control.windows.core.utils.win32_vk import win32_LEFTUP - from je_auto_control.windows.core.utils.win32_vk import win32_MIDDLEDOWN - from je_auto_control.windows.core.utils.win32_vk import win32_MIDDLEUP + from je_auto_control.windows.core.utils.win32_vk import WIN32_ABSOLUTE + from je_auto_control.windows.core.utils.win32_vk import WIN32_EventF_EXTENDEDKEY + from je_auto_control.windows.core.utils.win32_vk import WIN32_EventF_KEYUP + from je_auto_control.windows.core.utils.win32_vk import WIN32_EventF_SCANCODE + from je_auto_control.windows.core.utils.win32_vk import WIN32_EventF_UNICODE + from je_auto_control.windows.core.utils.win32_vk import WIN32_HWHEEL + from je_auto_control.windows.core.utils.win32_vk import WIN32_LEFTDOWN + from je_auto_control.windows.core.utils.win32_vk import WIN32_LEFTUP + from je_auto_control.windows.core.utils.win32_vk import WIN32_MIDDLEDOWN + from je_auto_control.windows.core.utils.win32_vk import WIN32_MIDDLEUP from je_auto_control.windows.core.utils.win32_vk import WIN32_MOVE - from je_auto_control.windows.core.utils.win32_vk import win32_RIGHTDOWN - from je_auto_control.windows.core.utils.win32_vk import win32_RIGHTUP - from je_auto_control.windows.core.utils.win32_vk import win32_VK_ACCEPT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_ADD - from je_auto_control.windows.core.utils.win32_vk import win32_VK_APPS - from je_auto_control.windows.core.utils.win32_vk import win32_VK_BACK - from je_auto_control.windows.core.utils.win32_vk import win32_VK_BROWSER_BACK - from je_auto_control.windows.core.utils.win32_vk import win32_VK_BROWSER_FAVORITES - from je_auto_control.windows.core.utils.win32_vk import win32_VK_BROWSER_FORWARD - from je_auto_control.windows.core.utils.win32_vk import win32_VK_BROWSER_REFRESH - from je_auto_control.windows.core.utils.win32_vk import win32_VK_BROWSER_SEARCH - from je_auto_control.windows.core.utils.win32_vk import win32_VK_BROWSER_STOP - from je_auto_control.windows.core.utils.win32_vk import win32_VK_CANCEL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_CAPITAL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_CLEAR - from je_auto_control.windows.core.utils.win32_vk import win32_VK_CONTROL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_CONVERT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_DECIMAL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_DELETE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_DIVIDE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_DOWN - from je_auto_control.windows.core.utils.win32_vk import win32_VK_END - from je_auto_control.windows.core.utils.win32_vk import win32_VK_ESCAPE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_EXECUTE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F1 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F10 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F11 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F12 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F13 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F14 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F15 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F16 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F17 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F18 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F19 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F2 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F20 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F21 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F22 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F23 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F24 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F3 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F4 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F5 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F6 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F7 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F8 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_F9 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_FINAL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_HANJA - from je_auto_control.windows.core.utils.win32_vk import win32_VK_HELP - from je_auto_control.windows.core.utils.win32_vk import win32_VK_HOME - from je_auto_control.windows.core.utils.win32_vk import win32_VK_IME_OFF - from je_auto_control.windows.core.utils.win32_vk import win32_VK_IME_ON - from je_auto_control.windows.core.utils.win32_vk import win32_VK_INSERT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_JUNJA - from je_auto_control.windows.core.utils.win32_vk import win32_VK_KANA - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LAUNCH_APP1 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LAUNCH_APP2 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LAUNCH_MAIL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LAUNCH_MEDIA_SELECT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LBUTTON - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LCONTROL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LEFT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LMENU - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LSHIFT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_LWIN - from je_auto_control.windows.core.utils.win32_vk import win32_VK_MBUTTON - from je_auto_control.windows.core.utils.win32_vk import win32_VK_MEDIA_NEXT_TRACK - from je_auto_control.windows.core.utils.win32_vk import win32_VK_MEDIA_PLAY_PAUSE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_MEDIA_PREV_TRACK - from je_auto_control.windows.core.utils.win32_vk import win32_VK_MEDIA_STOP - from je_auto_control.windows.core.utils.win32_vk import win32_VK_MODECHANGE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_MULTIPLY - from je_auto_control.windows.core.utils.win32_vk import win32_VK_Menu - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NEXT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NONCONVERT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMLOCK - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD0 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD1 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD2 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD3 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD4 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD5 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD6 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD7 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD8 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_NUMPAD9 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_PAUSE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_PRINT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_PRIOR - from je_auto_control.windows.core.utils.win32_vk import win32_VK_RBUTTON - from je_auto_control.windows.core.utils.win32_vk import win32_VK_RCONTROL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_RETURN - from je_auto_control.windows.core.utils.win32_vk import win32_VK_RIGHT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_RMENU - from je_auto_control.windows.core.utils.win32_vk import win32_VK_RSHIFT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_RWIN - from je_auto_control.windows.core.utils.win32_vk import win32_VK_SCROLL - from je_auto_control.windows.core.utils.win32_vk import win32_VK_SELECT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_SEPARATOR - from je_auto_control.windows.core.utils.win32_vk import win32_VK_SHIFT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_SLEEP - from je_auto_control.windows.core.utils.win32_vk import win32_VK_SNAPSHOT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_SPACE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_SUBTRACT - from je_auto_control.windows.core.utils.win32_vk import win32_VK_TAB - from je_auto_control.windows.core.utils.win32_vk import win32_VK_UP - from je_auto_control.windows.core.utils.win32_vk import win32_VK_VOLUME_DOWN - from je_auto_control.windows.core.utils.win32_vk import win32_VK_VOLUME_MUTE - from je_auto_control.windows.core.utils.win32_vk import win32_VK_VOLUME_UP - from je_auto_control.windows.core.utils.win32_vk import win32_VK_XBUTTON1 - from je_auto_control.windows.core.utils.win32_vk import win32_VK_XBUTTON2 - from je_auto_control.windows.core.utils.win32_vk import win32_VkToVSC - from je_auto_control.windows.core.utils.win32_vk import win32_WHEEL - from je_auto_control.windows.core.utils.win32_vk import win32_XBUTTON1 - from je_auto_control.windows.core.utils.win32_vk import win32_XBUTTON2 - from je_auto_control.windows.core.utils.win32_vk import win32_DOWN - from je_auto_control.windows.core.utils.win32_vk import win32_XUP - from je_auto_control.windows.core.utils.win32_vk import win32_key0 - from je_auto_control.windows.core.utils.win32_vk import win32_key1 - from je_auto_control.windows.core.utils.win32_vk import win32_key2 - from je_auto_control.windows.core.utils.win32_vk import win32_key3 - from je_auto_control.windows.core.utils.win32_vk import win32_key4 - from je_auto_control.windows.core.utils.win32_vk import win32_key5 - from je_auto_control.windows.core.utils.win32_vk import win32_key6 - from je_auto_control.windows.core.utils.win32_vk import win32_key7 - from je_auto_control.windows.core.utils.win32_vk import win32_key8 - from je_auto_control.windows.core.utils.win32_vk import win32_key9 - from je_auto_control.windows.core.utils.win32_vk import win32_keyA - from je_auto_control.windows.core.utils.win32_vk import win32_keyB - from je_auto_control.windows.core.utils.win32_vk import win32_keyC - from je_auto_control.windows.core.utils.win32_vk import win32_keyD - from je_auto_control.windows.core.utils.win32_vk import win32_keyE - from je_auto_control.windows.core.utils.win32_vk import win32_keyF - from je_auto_control.windows.core.utils.win32_vk import win32_keyG - from je_auto_control.windows.core.utils.win32_vk import win32_keyH - from je_auto_control.windows.core.utils.win32_vk import win32_keyI - from je_auto_control.windows.core.utils.win32_vk import win32_keyJ - from je_auto_control.windows.core.utils.win32_vk import win32_keyK - from je_auto_control.windows.core.utils.win32_vk import win32_keyL - from je_auto_control.windows.core.utils.win32_vk import win32_keyM - from je_auto_control.windows.core.utils.win32_vk import win32_keyN - from je_auto_control.windows.core.utils.win32_vk import win32_keyO - from je_auto_control.windows.core.utils.win32_vk import win32_keyP - from je_auto_control.windows.core.utils.win32_vk import win32_keyQ - from je_auto_control.windows.core.utils.win32_vk import win32_keyR - from je_auto_control.windows.core.utils.win32_vk import win32_keyS - from je_auto_control.windows.core.utils.win32_vk import win32_keyT - from je_auto_control.windows.core.utils.win32_vk import win32_keyU - from je_auto_control.windows.core.utils.win32_vk import win32_keyV - from je_auto_control.windows.core.utils.win32_vk import win32_keyW - from je_auto_control.windows.core.utils.win32_vk import win32_keyX - from je_auto_control.windows.core.utils.win32_vk import win32_keyY - from je_auto_control.windows.core.utils.win32_vk import win32_keyZ + from je_auto_control.windows.core.utils.win32_vk import WIN32_RIGHTDOWN + from je_auto_control.windows.core.utils.win32_vk import WIN32_RIGHTUP + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_ACCEPT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_ADD + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_APPS + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_BACK + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_BROWSER_BACK + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_BROWSER_FAVORITES + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_BROWSER_FORWARD + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_BROWSER_REFRESH + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_BROWSER_SEARCH + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_BROWSER_STOP + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_CANCEL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_CAPITAL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_CLEAR + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_CONTROL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_CONVERT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_DECIMAL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_DELETE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_DIVIDE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_DOWN + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_END + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_ESCAPE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_EXECUTE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F1 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F10 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F11 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F12 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F13 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F14 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F15 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F16 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F17 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F18 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F19 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F2 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F20 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F21 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F22 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F23 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F24 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F3 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F4 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F5 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F6 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F7 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F8 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_F9 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_FINAL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_HANJA + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_HELP + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_HOME + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_IME_OFF + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_IME_ON + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_INSERT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_JUNJA + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_KANA + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LAUNCH_APP1 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LAUNCH_APP2 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LAUNCH_MAIL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LAUNCH_MEDIA_SELECT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LBUTTON + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LCONTROL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LEFT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LMENU + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LSHIFT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_LWIN + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_MBUTTON + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_MEDIA_NEXT_TRACK + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_MEDIA_PLAY_PAUSE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_MEDIA_PREV_TRACK + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_MEDIA_STOP + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_MODECHANGE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_MULTIPLY + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_Menu + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NEXT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NONCONVERT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMLOCK + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD0 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD1 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD2 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD3 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD4 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD5 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD6 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD7 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD8 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_NUMPAD9 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_PAUSE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_PRINT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_PRIOR + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_RBUTTON + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_RCONTROL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_RETURN + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_RIGHT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_RMENU + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_RSHIFT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_RWIN + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_SCROLL + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_SELECT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_SEPARATOR + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_SHIFT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_SLEEP + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_SNAPSHOT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_SPACE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_SUBTRACT + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_TAB + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_UP + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_VOLUME_DOWN + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_VOLUME_MUTE + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_VOLUME_UP + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_XBUTTON1 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VK_XBUTTON2 + from je_auto_control.windows.core.utils.win32_vk import WIN32_VkToVSC + from je_auto_control.windows.core.utils.win32_vk import WIN32_WHEEL + from je_auto_control.windows.core.utils.win32_vk import WIN32_XBUTTON1 + from je_auto_control.windows.core.utils.win32_vk import WIN32_XBUTTON2 + from je_auto_control.windows.core.utils.win32_vk import WIN32_DOWN + from je_auto_control.windows.core.utils.win32_vk import WIN32_XUP + from je_auto_control.windows.core.utils.win32_vk import WIN32_key0 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key1 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key2 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key3 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key4 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key5 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key6 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key7 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key8 + from je_auto_control.windows.core.utils.win32_vk import WIN32_key9 + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyA + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyB + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyC + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyD + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyE + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyF + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyG + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyH + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyI + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyJ + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyK + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyL + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyM + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyN + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyO + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyP + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyQ + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyR + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyS + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyT + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyU + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyV + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyW + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyX + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyY + from je_auto_control.windows.core.utils.win32_vk import WIN32_keyZ from je_auto_control.windows.keyboard import win32_ctype_keyboard_control from je_auto_control.windows.mouse import win32_ctype_mouse_control from je_auto_control.windows.mouse.win32_ctype_mouse_control import win32_mouse_left @@ -496,198 +496,198 @@ if sys.platform in ["win32", "cygwin", "msys"]: autocontrol_logger.info("Load Windows Setting") keyboard_keys_table = { - "absolute": win32_ABSOLUTE, - "eventf_extendedkey": win32_EventF_EXTENDEDKEY, - "eventf_keyup": win32_EventF_KEYUP, - "eventf_scancode": win32_EventF_SCANCODE, - "eventf_unicode": win32_EventF_UNICODE, - "hwheel": win32_HWHEEL, - "leftdown": win32_LEFTDOWN, - "leftup": win32_LEFTUP, - "middledown": win32_MIDDLEDOWN, - "middleup": win32_MIDDLEUP, + "absolute": WIN32_ABSOLUTE, + "eventf_extendedkey": WIN32_EventF_EXTENDEDKEY, + "eventf_keyup": WIN32_EventF_KEYUP, + "eventf_scancode": WIN32_EventF_SCANCODE, + "eventf_unicode": WIN32_EventF_UNICODE, + "hwheel": WIN32_HWHEEL, + "leftdown": WIN32_LEFTDOWN, + "leftup": WIN32_LEFTUP, + "middledown": WIN32_MIDDLEDOWN, + "middleup": WIN32_MIDDLEUP, "move": WIN32_MOVE, - "rightdown": win32_RIGHTDOWN, - "rightup": win32_RIGHTUP, - "accept": win32_VK_ACCEPT, - "add": win32_VK_ADD, - "apps": win32_VK_APPS, - "back": win32_VK_BACK, - "browser_back": win32_VK_BROWSER_BACK, - "browser_favorites": win32_VK_BROWSER_FAVORITES, - "browser_forward": win32_VK_BROWSER_FORWARD, - "browser_refresh": win32_VK_BROWSER_REFRESH, - "browser_search": win32_VK_BROWSER_SEARCH, - "browser_stop": win32_VK_BROWSER_STOP, - "cancel": win32_VK_CANCEL, - "capital": win32_VK_CAPITAL, - "clear": win32_VK_CLEAR, - "control": win32_VK_CONTROL, - "convert": win32_VK_CONVERT, - "decimal": win32_VK_DECIMAL, - "delete": win32_VK_DELETE, - "divide": win32_VK_DIVIDE, - "vk_down": win32_VK_DOWN, - "end": win32_VK_END, - "escape": win32_VK_ESCAPE, - "execute": win32_VK_EXECUTE, - "f1": win32_VK_F1, - "f2": win32_VK_F2, - "f3": win32_VK_F3, - "f4": win32_VK_F4, - "f5": win32_VK_F5, - "f6": win32_VK_F6, - "f7": win32_VK_F7, - "f8": win32_VK_F8, - "f9": win32_VK_F9, - "f10": win32_VK_F10, - "f11": win32_VK_F11, - "f12": win32_VK_F12, - "f13": win32_VK_F13, - "f14": win32_VK_F14, - "f15": win32_VK_F15, - "f16": win32_VK_F16, - "f17": win32_VK_F17, - "f18": win32_VK_F18, - "f19": win32_VK_F19, - "f20": win32_VK_F20, - "f21": win32_VK_F21, - "f22": win32_VK_F22, - "f23": win32_VK_F23, - "f24": win32_VK_F24, - "final": win32_VK_FINAL, - "hanja": win32_VK_HANJA, - "help": win32_VK_HELP, - "home": win32_VK_HOME, - "ime_off": win32_VK_IME_OFF, - "ime_on": win32_VK_IME_ON, - "insert": win32_VK_INSERT, - "junja": win32_VK_JUNJA, - "kana": win32_VK_KANA, - "launch_app1": win32_VK_LAUNCH_APP1, - "LAUNCH_APP2": win32_VK_LAUNCH_APP2, - "launch_mail": win32_VK_LAUNCH_MAIL, - "launch_media_select": win32_VK_LAUNCH_MEDIA_SELECT, - "lbutton": win32_VK_LBUTTON, - "lcontrol": win32_VK_LCONTROL, - "left": win32_VK_LEFT, - "lmenu": win32_VK_LMENU, - "lshift": win32_VK_LSHIFT, - "lwin": win32_VK_LWIN, - "mbutton": win32_VK_MBUTTON, - "media_next_track": win32_VK_MEDIA_NEXT_TRACK, - "media_play_pause": win32_VK_MEDIA_PLAY_PAUSE, - "media_prev_track": win32_VK_MEDIA_PREV_TRACK, - "media_stop": win32_VK_MEDIA_STOP, - "modechange": win32_VK_MODECHANGE, - "multiply": win32_VK_MULTIPLY, - "menu": win32_VK_Menu, - "next": win32_VK_NEXT, - "nonconvert": win32_VK_NONCONVERT, - "numlock": win32_VK_NUMLOCK, - "num0": win32_VK_NUMPAD0, - "num1": win32_VK_NUMPAD1, - "num2": win32_VK_NUMPAD2, - "num3": win32_VK_NUMPAD3, - "num4": win32_VK_NUMPAD4, - "num5": win32_VK_NUMPAD5, - "num6": win32_VK_NUMPAD6, - "num7": win32_VK_NUMPAD7, - "num8": win32_VK_NUMPAD8, - "num9": win32_VK_NUMPAD9, - "pause": win32_VK_PAUSE, - "print": win32_VK_PRINT, - "prior": win32_VK_PRIOR, - "rbutton": win32_VK_RBUTTON, - "rcontrol": win32_VK_RCONTROL, - "return": win32_VK_RETURN, - "right": win32_VK_RIGHT, - "rmenu": win32_VK_RMENU, - "rshift": win32_VK_RSHIFT, - "rwin": win32_VK_RWIN, - "scroll": win32_VK_SCROLL, - "select": win32_VK_SELECT, - "separator": win32_VK_SEPARATOR, - "shift": win32_VK_SHIFT, - "sleep": win32_VK_SLEEP, - "snapshot": win32_VK_SNAPSHOT, - "space": win32_VK_SPACE, - "subtract": win32_VK_SUBTRACT, - "tab": win32_VK_TAB, - "up": win32_VK_UP, - "volume_down": win32_VK_VOLUME_DOWN, - "volume_mute": win32_VK_VOLUME_MUTE, - "volume_up": win32_VK_VOLUME_UP, - "vk_xbutton1": win32_VK_XBUTTON1, - "vk_xbutton2": win32_VK_XBUTTON2, - "xbutton1": win32_XBUTTON1, - "xbutton2": win32_XBUTTON2, - "vktovsc": win32_VkToVSC, - "wheel": win32_WHEEL, - "down": win32_DOWN, - "xup": win32_XUP, - "0": win32_key0, - "1": win32_key1, - "2": win32_key2, - "3": win32_key3, - "4": win32_key4, - "5": win32_key5, - "6": win32_key6, - "7": win32_key7, - "8": win32_key8, - "9": win32_key9, - "A": win32_keyA, - "a": win32_keyA, - "B": win32_keyB, - "b": win32_keyB, - "C": win32_keyC, - "c": win32_keyC, - "D": win32_keyD, - "d": win32_keyD, - "E": win32_keyE, - "e": win32_keyE, - "F": win32_keyF, - "f": win32_keyF, - "G": win32_keyG, - "g": win32_keyG, - "H": win32_keyH, - "h": win32_keyH, - "I": win32_keyI, - "i": win32_keyI, - "J": win32_keyJ, - "j": win32_keyJ, - "K": win32_keyK, - "k": win32_keyK, - "L": win32_keyL, - "l": win32_keyL, - "M": win32_keyM, - "m": win32_keyM, - "N": win32_keyN, - "n": win32_keyN, - "O": win32_keyO, - "o": win32_keyO, - "P": win32_keyP, - "p": win32_keyP, - "Q": win32_keyQ, - "q": win32_keyQ, - "R": win32_keyR, - "r": win32_keyR, - "S": win32_keyS, - "s": win32_keyS, - "T": win32_keyT, - "t": win32_keyT, - "U": win32_keyU, - "u": win32_keyU, - "V": win32_keyV, - "v": win32_keyV, - "W": win32_keyW, - "w": win32_keyW, - "X": win32_keyX, - "x": win32_keyX, - "Y": win32_keyY, - "y": win32_keyY, - "Z": win32_keyZ, - "z": win32_keyZ, + "rightdown": WIN32_RIGHTDOWN, + "rightup": WIN32_RIGHTUP, + "accept": WIN32_VK_ACCEPT, + "add": WIN32_VK_ADD, + "apps": WIN32_VK_APPS, + "back": WIN32_VK_BACK, + "browser_back": WIN32_VK_BROWSER_BACK, + "browser_favorites": WIN32_VK_BROWSER_FAVORITES, + "browser_forward": WIN32_VK_BROWSER_FORWARD, + "browser_refresh": WIN32_VK_BROWSER_REFRESH, + "browser_search": WIN32_VK_BROWSER_SEARCH, + "browser_stop": WIN32_VK_BROWSER_STOP, + "cancel": WIN32_VK_CANCEL, + "capital": WIN32_VK_CAPITAL, + "clear": WIN32_VK_CLEAR, + "control": WIN32_VK_CONTROL, + "convert": WIN32_VK_CONVERT, + "decimal": WIN32_VK_DECIMAL, + "delete": WIN32_VK_DELETE, + "divide": WIN32_VK_DIVIDE, + "vk_down": WIN32_VK_DOWN, + "end": WIN32_VK_END, + "escape": WIN32_VK_ESCAPE, + "execute": WIN32_VK_EXECUTE, + "f1": WIN32_VK_F1, + "f2": WIN32_VK_F2, + "f3": WIN32_VK_F3, + "f4": WIN32_VK_F4, + "f5": WIN32_VK_F5, + "f6": WIN32_VK_F6, + "f7": WIN32_VK_F7, + "f8": WIN32_VK_F8, + "f9": WIN32_VK_F9, + "f10": WIN32_VK_F10, + "f11": WIN32_VK_F11, + "f12": WIN32_VK_F12, + "f13": WIN32_VK_F13, + "f14": WIN32_VK_F14, + "f15": WIN32_VK_F15, + "f16": WIN32_VK_F16, + "f17": WIN32_VK_F17, + "f18": WIN32_VK_F18, + "f19": WIN32_VK_F19, + "f20": WIN32_VK_F20, + "f21": WIN32_VK_F21, + "f22": WIN32_VK_F22, + "f23": WIN32_VK_F23, + "f24": WIN32_VK_F24, + "final": WIN32_VK_FINAL, + "hanja": WIN32_VK_HANJA, + "help": WIN32_VK_HELP, + "home": WIN32_VK_HOME, + "ime_off": WIN32_VK_IME_OFF, + "ime_on": WIN32_VK_IME_ON, + "insert": WIN32_VK_INSERT, + "junja": WIN32_VK_JUNJA, + "kana": WIN32_VK_KANA, + "launch_app1": WIN32_VK_LAUNCH_APP1, + "LAUNCH_APP2": WIN32_VK_LAUNCH_APP2, + "launch_mail": WIN32_VK_LAUNCH_MAIL, + "launch_media_select": WIN32_VK_LAUNCH_MEDIA_SELECT, + "lbutton": WIN32_VK_LBUTTON, + "lcontrol": WIN32_VK_LCONTROL, + "left": WIN32_VK_LEFT, + "lmenu": WIN32_VK_LMENU, + "lshift": WIN32_VK_LSHIFT, + "lwin": WIN32_VK_LWIN, + "mbutton": WIN32_VK_MBUTTON, + "media_next_track": WIN32_VK_MEDIA_NEXT_TRACK, + "media_play_pause": WIN32_VK_MEDIA_PLAY_PAUSE, + "media_prev_track": WIN32_VK_MEDIA_PREV_TRACK, + "media_stop": WIN32_VK_MEDIA_STOP, + "modechange": WIN32_VK_MODECHANGE, + "multiply": WIN32_VK_MULTIPLY, + "menu": WIN32_VK_Menu, + "next": WIN32_VK_NEXT, + "nonconvert": WIN32_VK_NONCONVERT, + "numlock": WIN32_VK_NUMLOCK, + "num0": WIN32_VK_NUMPAD0, + "num1": WIN32_VK_NUMPAD1, + "num2": WIN32_VK_NUMPAD2, + "num3": WIN32_VK_NUMPAD3, + "num4": WIN32_VK_NUMPAD4, + "num5": WIN32_VK_NUMPAD5, + "num6": WIN32_VK_NUMPAD6, + "num7": WIN32_VK_NUMPAD7, + "num8": WIN32_VK_NUMPAD8, + "num9": WIN32_VK_NUMPAD9, + "pause": WIN32_VK_PAUSE, + "print": WIN32_VK_PRINT, + "prior": WIN32_VK_PRIOR, + "rbutton": WIN32_VK_RBUTTON, + "rcontrol": WIN32_VK_RCONTROL, + "return": WIN32_VK_RETURN, + "right": WIN32_VK_RIGHT, + "rmenu": WIN32_VK_RMENU, + "rshift": WIN32_VK_RSHIFT, + "rwin": WIN32_VK_RWIN, + "scroll": WIN32_VK_SCROLL, + "select": WIN32_VK_SELECT, + "separator": WIN32_VK_SEPARATOR, + "shift": WIN32_VK_SHIFT, + "sleep": WIN32_VK_SLEEP, + "snapshot": WIN32_VK_SNAPSHOT, + "space": WIN32_VK_SPACE, + "subtract": WIN32_VK_SUBTRACT, + "tab": WIN32_VK_TAB, + "up": WIN32_VK_UP, + "volume_down": WIN32_VK_VOLUME_DOWN, + "volume_mute": WIN32_VK_VOLUME_MUTE, + "volume_up": WIN32_VK_VOLUME_UP, + "vk_xbutton1": WIN32_VK_XBUTTON1, + "vk_xbutton2": WIN32_VK_XBUTTON2, + "xbutton1": WIN32_XBUTTON1, + "xbutton2": WIN32_XBUTTON2, + "vktovsc": WIN32_VkToVSC, + "wheel": WIN32_WHEEL, + "down": WIN32_DOWN, + "xup": WIN32_XUP, + "0": WIN32_key0, + "1": WIN32_key1, + "2": WIN32_key2, + "3": WIN32_key3, + "4": WIN32_key4, + "5": WIN32_key5, + "6": WIN32_key6, + "7": WIN32_key7, + "8": WIN32_key8, + "9": WIN32_key9, + "A": WIN32_keyA, + "a": WIN32_keyA, + "B": WIN32_keyB, + "b": WIN32_keyB, + "C": WIN32_keyC, + "c": WIN32_keyC, + "D": WIN32_keyD, + "d": WIN32_keyD, + "E": WIN32_keyE, + "e": WIN32_keyE, + "F": WIN32_keyF, + "f": WIN32_keyF, + "G": WIN32_keyG, + "g": WIN32_keyG, + "H": WIN32_keyH, + "h": WIN32_keyH, + "I": WIN32_keyI, + "i": WIN32_keyI, + "J": WIN32_keyJ, + "j": WIN32_keyJ, + "K": WIN32_keyK, + "k": WIN32_keyK, + "L": WIN32_keyL, + "l": WIN32_keyL, + "M": WIN32_keyM, + "m": WIN32_keyM, + "N": WIN32_keyN, + "n": WIN32_keyN, + "O": WIN32_keyO, + "o": WIN32_keyO, + "P": WIN32_keyP, + "p": WIN32_keyP, + "Q": WIN32_keyQ, + "q": WIN32_keyQ, + "R": WIN32_keyR, + "r": WIN32_keyR, + "S": WIN32_keyS, + "s": WIN32_keyS, + "T": WIN32_keyT, + "t": WIN32_keyT, + "U": WIN32_keyU, + "u": WIN32_keyU, + "V": WIN32_keyV, + "v": WIN32_keyV, + "W": WIN32_keyW, + "w": WIN32_keyW, + "X": WIN32_keyX, + "x": WIN32_keyX, + "Y": WIN32_keyY, + "y": WIN32_keyY, + "Z": WIN32_keyZ, + "z": WIN32_keyZ, } mouse_keys_table = { "mouse_left": win32_mouse_left, diff --git a/pyproject.toml b/pyproject.toml index a1c5965..25be72d 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" [project] name = "je_auto_control_dev" -version = "0.0.124" +version = "0.0.125" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] From 9d2d1eef2b76ec4612a16dfe3ff91e2c1b39321d Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Tue, 30 Sep 2025 22:56:21 +0800 Subject: [PATCH 4/6] Update dev version Update dev version * Add function that get x, y pixel rgb or rgba * Add tests --- .github/workflows/dev_python3_10.yml | 2 + .github/workflows/dev_python3_11.yml | 2 + .github/workflows/dev_python3_12.yml | 2 + je_auto_control/__init__.py | 3 +- .../linux_with_x11/screen/x11_linux_screen.py | 10 ++- je_auto_control/osx/screen/osx_screen.py | 61 +++++++++++++++++++ .../windows/screen/win32_screen.py | 22 ++++++- .../windows/window/windows_window_manage.py | 9 ++- .../wrapper/auto_control_screen.py | 15 +++++ pyproject.toml | 2 +- test/unit_test/screen/get_pixel_test.py | 3 + test/unit_test/screen/screen_test.py | 1 + 12 files changed, 127 insertions(+), 5 deletions(-) create mode 100644 test/unit_test/screen/get_pixel_test.py diff --git a/.github/workflows/dev_python3_10.yml b/.github/workflows/dev_python3_10.yml index bc11914..14bb8a2 100644 --- a/.github/workflows/dev_python3_10.yml +++ b/.github/workflows/dev_python3_10.yml @@ -30,6 +30,8 @@ jobs: run: python ./test/unit_test/screen/screen_test.py - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py + - name: Test Screen Get Pixel + run: python ./test/unit_test/screen/screen_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/dev_python3_11.yml b/.github/workflows/dev_python3_11.yml index 1a63f94..a0b59ff 100644 --- a/.github/workflows/dev_python3_11.yml +++ b/.github/workflows/dev_python3_11.yml @@ -30,6 +30,8 @@ jobs: run: python ./test/unit_test/screen/screen_test.py - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py + - name: Test Screen Get Pixel + run: python ./test/unit_test/screen/screen_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/dev_python3_12.yml b/.github/workflows/dev_python3_12.yml index 742af84..be451a4 100644 --- a/.github/workflows/dev_python3_12.yml +++ b/.github/workflows/dev_python3_12.yml @@ -30,6 +30,8 @@ jobs: run: python ./test/unit_test/screen/screen_test.py - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py + - name: Test Screen Get Pixel + run: python ./test/unit_test/screen/screen_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: diff --git a/je_auto_control/__init__.py b/je_auto_control/__init__.py index 40ea2f1..0619a37 100644 --- a/je_auto_control/__init__.py +++ b/je_auto_control/__init__.py @@ -108,6 +108,7 @@ # import screen from je_auto_control.wrapper.auto_control_screen import screen_size from je_auto_control.wrapper.auto_control_screen import screenshot +from je_auto_control.wrapper.auto_control_screen import get_pixel __all__ = [ "click_mouse", "mouse_keys_table", "get_mouse_position", "press_mouse", "release_mouse", @@ -125,5 +126,5 @@ "generate_xml_report", "get_dir_files_as_list", "create_project_dir", "start_autocontrol_socket_server", "callback_executor", "package_manager", "get_special_table", "ShellManager", "default_shell_manager", "RecordingThread", "send_key_event_to_window", "send_mouse_event_to_window", "windows_window_manage", - "ScreenRecorder" + "ScreenRecorder", "get_pixel" ] diff --git a/je_auto_control/linux_with_x11/screen/x11_linux_screen.py b/je_auto_control/linux_with_x11/screen/x11_linux_screen.py index 8732f54..12f0b80 100644 --- a/je_auto_control/linux_with_x11/screen/x11_linux_screen.py +++ b/je_auto_control/linux_with_x11/screen/x11_linux_screen.py @@ -7,11 +7,19 @@ if sys.platform not in ["linux", "linux2"]: raise AutoControlException(linux_import_error) +from Xlib import X from je_auto_control.linux_with_x11.core.utils.x11_linux_display import display - def size() -> Tuple[int, int]: """ get screen size """ return display.screen().width_in_pixels, display.screen().height_in_pixels + + +def get_pixel_rgb(x: int, y: int) -> Tuple[int, int, int]: + root = display.Display().screen().root + root.get_image(x, y, 1, 1, X.ZPixmap, 0xffffffff) + raw = root.get_image(x, y, 1, 1, X.ZPixmap, 0xffffffff) + pixel = tuple(raw.data)[:3] # (R, G, B) + return pixel diff --git a/je_auto_control/osx/screen/osx_screen.py b/je_auto_control/osx/screen/osx_screen.py index d8df48f..d14338e 100644 --- a/je_auto_control/osx/screen/osx_screen.py +++ b/je_auto_control/osx/screen/osx_screen.py @@ -1,4 +1,6 @@ import sys +import ctypes +from ctypes import c_void_p, c_double, c_uint32 from typing import Tuple from je_auto_control.utils.exception.exception_tags import osx_import_error @@ -15,3 +17,62 @@ def size() -> Tuple[int, int]: get screen size """ return Quartz.CGDisplayPixelsWide((Quartz.CGMainDisplayID())), Quartz.CGDisplayPixelsHigh(Quartz.CGMainDisplayID()) + +def get_pixel(x: int, y: int) -> Tuple[int, int, int, int]: + # Load CoreGraphics and CoreFoundation frameworks + cg = ctypes.CDLL("/System/Library/Frameworks/CoreGraphics.framework/CoreGraphics") + cf = ctypes.CDLL("/System/Library/Frameworks/CoreFoundation.framework/CoreFoundation") + + # Define CGRect structure as 4 doubles: x, y, width, height + CGRect = ctypes.c_double * 4 + + # Function signatures + cg.CGWindowListCreateImage.argtypes = [CGRect, c_uint32, c_uint32, c_uint32] + cg.CGWindowListCreateImage.restype = c_void_p + + cg.CGImageGetDataProvider.argtypes = [c_void_p] + cg.CGImageGetDataProvider.restype = c_void_p + + cg.CGDataProviderCopyData.argtypes = [c_void_p] + cg.CGDataProviderCopyData.restype = c_void_p + + cf.CFDataGetLength.argtypes = [c_void_p] + cf.CFDataGetLength.restype = ctypes.c_long + + cf.CFDataGetBytePtr.argtypes = [c_void_p] + cf.CFDataGetBytePtr.restype = ctypes.POINTER(ctypes.c_ubyte) + + cf.CFRelease.argtypes = [c_void_p] + cf.CFRelease.restype = None + + # Constants + kCGWindowListOptionOnScreenOnly = 1 + kCGNullWindowID = 0 + kCGWindowImageDefault = 0 + rect = CGRect(x, y, 1.0, 1.0) + img = cg.CGWindowListCreateImage(rect, + kCGWindowListOptionOnScreenOnly, + kCGNullWindowID, + kCGWindowImageDefault) + if not img: + raise RuntimeError("Unable to capture screen image. Please ensure Screen Recording permission is granted.") + + # Get the data provider from the image + provider = cg.CGImageGetDataProvider(img) + # Copy image data + cfdata = cg.CGDataProviderCopyData(provider) + # Get length of data + length = cf.CFDataGetLength(cfdata) + # Get pointer to byte data + buf = cf.CFDataGetBytePtr(cfdata) + + # Default pixel format is BGRA + b, g, r, a = buf[0], buf[1], buf[2], buf[3] + + # Release CoreFoundation objects to avoid memory leaks + cf.CFRelease(cfdata) + cf.CFRelease(provider) + cf.CFRelease(img) + + return r, g, b, a + diff --git a/je_auto_control/windows/screen/win32_screen.py b/je_auto_control/windows/screen/win32_screen.py index 2384640..3b5737d 100644 --- a/je_auto_control/windows/screen/win32_screen.py +++ b/je_auto_control/windows/screen/win32_screen.py @@ -1,5 +1,5 @@ import sys -from typing import List, Union +from typing import List, Union, Tuple from je_auto_control.utils.exception.exception_tags import windows_import_error from je_auto_control.utils.exception.exceptions import AutoControlException @@ -11,6 +11,7 @@ _user32: ctypes.windll.user32 = ctypes.windll.user32 _user32.SetProcessDPIAware() +_gdi32 = ctypes.windll.gdi32 def size() -> List[Union[int, int]]: @@ -18,3 +19,22 @@ def size() -> List[Union[int, int]]: get screen size """ return [_user32.GetSystemMetrics(0), _user32.GetSystemMetrics(1)] + + +def get_pixel(x: int, y: int, hwnd: int = 0) -> Tuple[int, int, int]: + dc = _user32.GetDC(hwnd) + if not dc: + raise RuntimeError("GetDC failed") + + try: + pixel = _gdi32.GetPixel(dc, x, y) + if pixel == 0xFFFFFFFF: + raise RuntimeError("GetPixel failed") + + r = pixel & 0xFF + g = (pixel >> 8) & 0xFF + b = (pixel >> 16) & 0xFF + return r, g, b + finally: + _user32.ReleaseDC(hwnd, dc) + diff --git a/je_auto_control/windows/window/windows_window_manage.py b/je_auto_control/windows/window/windows_window_manage.py index 96815ce..85c134c 100644 --- a/je_auto_control/windows/window/windows_window_manage.py +++ b/je_auto_control/windows/window/windows_window_manage.py @@ -46,4 +46,11 @@ def set_foreground_window(hwnd) -> None: def set_window_positon(hwnd, position: int) -> None: swp_no_size = 0x0001 swp_no_move = 0x0002 - user32.SetWindowPos(hwnd, position, 0, 0, 0, 0, swp_no_move | swp_no_size) \ No newline at end of file + user32.SetWindowPos(hwnd, position, 0, 0, 0, 0, swp_no_move | swp_no_size) + +def show_window(hwnd, size: int) -> None: + if size < 0 or size > 3: + size = 3 + user32.ShowWindow(hwnd, size) + user32.SetForegroundWindow(hwnd) + diff --git a/je_auto_control/wrapper/auto_control_screen.py b/je_auto_control/wrapper/auto_control_screen.py index 127b90d..2f929ee 100644 --- a/je_auto_control/wrapper/auto_control_screen.py +++ b/je_auto_control/wrapper/auto_control_screen.py @@ -52,3 +52,18 @@ def screenshot(file_path: str = None, screen_region: list = None) -> List[int]: autocontrol_logger.info( f"screen_size, file_path: {file_path}, screen_region: {screen_region}, " f"failed: {repr(error)}") + + +def get_pixel(x: int, y: int, hwnd=None): + autocontrol_logger.info(f"get_pixel, x: {x}, y: {y}, hwnd: {hwnd}") + param = locals() + try: + if hwnd is None: + return screen.get_pixel(x, y) + else: + return screen.get_pixel(x, y, hwnd) + except Exception as error: + record_action_to_list("AC_get_pixel", None, repr(error)) + autocontrol_logger.info( + f"get_pixel, x: {x}, y: {y}, hwnd: {hwnd}" + f"failed: {repr(error)}") diff --git a/pyproject.toml b/pyproject.toml index 25be72d..bdd841e 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta" [project] name = "je_auto_control_dev" -version = "0.0.125" +version = "0.0.126" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] diff --git a/test/unit_test/screen/get_pixel_test.py b/test/unit_test/screen/get_pixel_test.py new file mode 100644 index 0000000..1e63790 --- /dev/null +++ b/test/unit_test/screen/get_pixel_test.py @@ -0,0 +1,3 @@ +from je_auto_control import get_pixel + +print(get_pixel(100, 100)) \ No newline at end of file diff --git a/test/unit_test/screen/screen_test.py b/test/unit_test/screen/screen_test.py index 28da9b8..0c3bd52 100644 --- a/test/unit_test/screen/screen_test.py +++ b/test/unit_test/screen/screen_test.py @@ -3,3 +3,4 @@ screen_size = screen_size() assert (screen_size is not None) print(screen_size) + From 67f65bacc84665ebd5e0f261fe1b93d116928df3 Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Wed, 1 Oct 2025 00:02:25 +0800 Subject: [PATCH 5/6] Update stable version Update stable version --- stable.toml => dev.toml | 10 +++++----- pyproject.toml | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) rename stable.toml => dev.toml (89%) diff --git a/stable.toml b/dev.toml similarity index 89% rename from stable.toml rename to dev.toml index f5f4034..bdd841e 100644 --- a/stable.toml +++ b/dev.toml @@ -1,12 +1,12 @@ -# Rename to build stable version -# This is stable version +# Rename to build dev version +# This is dev version [build-system] -requires = ["setuptools>=61.0"] +requires = ["setuptools"] build-backend = "setuptools.build_meta" [project] -name = "je_auto_control" -version = "0.0.174" +name = "je_auto_control_dev" +version = "0.0.126" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] diff --git a/pyproject.toml b/pyproject.toml index bdd841e..d77e474 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -1,12 +1,12 @@ -# Rename to build dev version -# This is dev version +# Rename to build stable version +# This is stable version [build-system] -requires = ["setuptools"] +requires = ["setuptools>=61.0"] build-backend = "setuptools.build_meta" [project] -name = "je_auto_control_dev" -version = "0.0.126" +name = "je_auto_control" +version = "0.0.175" authors = [ { name = "JE-Chen", email = "jechenmailman@gmail.com" }, ] From 3847052e3d054394695b32e511465f888c46d48a Mon Sep 17 00:00:00 2001 From: JE-Chen Date: Thu, 2 Oct 2025 10:54:51 +0800 Subject: [PATCH 6/6] Update tests Update tests * Get Pixel Test run wrong file --- .github/workflows/dev_python3_10.yml | 2 +- .github/workflows/dev_python3_11.yml | 2 +- .github/workflows/dev_python3_12.yml | 2 +- .github/workflows/stable_python3_10.yml | 2 ++ .github/workflows/stable_python3_11.yml | 2 ++ .github/workflows/stable_python3_12.yml | 2 ++ 6 files changed, 9 insertions(+), 3 deletions(-) diff --git a/.github/workflows/dev_python3_10.yml b/.github/workflows/dev_python3_10.yml index 14bb8a2..71dac82 100644 --- a/.github/workflows/dev_python3_10.yml +++ b/.github/workflows/dev_python3_10.yml @@ -31,7 +31,7 @@ jobs: - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py - name: Test Screen Get Pixel - run: python ./test/unit_test/screen/screen_test.py + run: python ./test/unit_test/screen/get_pixel_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/dev_python3_11.yml b/.github/workflows/dev_python3_11.yml index a0b59ff..a94a267 100644 --- a/.github/workflows/dev_python3_11.yml +++ b/.github/workflows/dev_python3_11.yml @@ -31,7 +31,7 @@ jobs: - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py - name: Test Screen Get Pixel - run: python ./test/unit_test/screen/screen_test.py + run: python ./test/unit_test/screen/get_pixel_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/dev_python3_12.yml b/.github/workflows/dev_python3_12.yml index be451a4..a1fd222 100644 --- a/.github/workflows/dev_python3_12.yml +++ b/.github/workflows/dev_python3_12.yml @@ -31,7 +31,7 @@ jobs: - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py - name: Test Screen Get Pixel - run: python ./test/unit_test/screen/screen_test.py + run: python ./test/unit_test/screen/get_pixel_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/stable_python3_10.yml b/.github/workflows/stable_python3_10.yml index d645616..bc49cf1 100644 --- a/.github/workflows/stable_python3_10.yml +++ b/.github/workflows/stable_python3_10.yml @@ -30,6 +30,8 @@ jobs: run: python ./test/unit_test/screen/screen_test.py - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py + - name: Test Screen Get Pixel + run: python ./test/unit_test/screen/get_pixel_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/stable_python3_11.yml b/.github/workflows/stable_python3_11.yml index f58b417..fa31dce 100644 --- a/.github/workflows/stable_python3_11.yml +++ b/.github/workflows/stable_python3_11.yml @@ -30,6 +30,8 @@ jobs: run: python ./test/unit_test/screen/screen_test.py - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py + - name: Test Screen Get Pixel + run: python ./test/unit_test/screen/get_pixel_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: diff --git a/.github/workflows/stable_python3_12.yml b/.github/workflows/stable_python3_12.yml index da2a450..da9b528 100644 --- a/.github/workflows/stable_python3_12.yml +++ b/.github/workflows/stable_python3_12.yml @@ -30,6 +30,8 @@ jobs: run: python ./test/unit_test/screen/screen_test.py - name: Test Screenshot run: python ./test/unit_test/screen/screenshot_test.py + - name: Test Screen Get Pixel + run: python ./test/unit_test/screen/get_pixel_test.py - name: Save Screenshot Image uses: actions/upload-artifact@v4 with: