diff --git a/.github/workflows/dev_python3_10.yml b/.github/workflows/dev_python3_10.yml
index bc11914..71dac82 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/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 1a63f94..a94a267 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/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 742af84..a1fd222 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/get_pixel_test.py
- name: Save Screenshot Image
uses: actions/upload-artifact@v4
with:
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/.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:
diff --git a/.idea/workspace.xml b/.idea/workspace.xml
index 1ab5cff..c9d4984 100644
--- a/.idea/workspace.xml
+++ b/.idea/workspace.xml
@@ -4,9 +4,7 @@
-
-
-
+
@@ -82,6 +80,7 @@
"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",
@@ -124,7 +123,7 @@
-
+
@@ -171,7 +170,7 @@
-
+
@@ -180,12 +179,12 @@
-
+
-
+
@@ -194,7 +193,7 @@
-
+
@@ -203,12 +202,12 @@
-
+
-
+
@@ -242,11 +241,11 @@
+
-
@@ -598,6 +597,8 @@
+
+
@@ -620,11 +621,12 @@
-
+
+
diff --git a/dev.toml b/dev.toml
index 2156464..bdd841e 100644
--- a/dev.toml
+++ b/dev.toml
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "je_auto_control_dev"
-version = "0.0.122"
+version = "0.0.126"
authors = [
{ name = "JE-Chen", email = "jechenmailman@gmail.com" },
]
diff --git a/je_auto_control/__init__.py b/je_auto_control/__init__.py
index df8515b..0619a37 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,16 @@
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
+from je_auto_control.wrapper.auto_control_screen import get_pixel
__all__ = [
"click_mouse", "mouse_keys_table", "get_mouse_position", "press_mouse", "release_mouse",
@@ -124,5 +125,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", "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/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 c9c869d..5757848 100644
--- a/je_auto_control/windows/core/utils/win32_vk.py
+++ b/je_auto_control/windows/core/utils/win32_vk.py
@@ -9,176 +9,176 @@
# 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
\ 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/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/je_auto_control/wrapper/platform_wrapper.py b/je_auto_control/wrapper/platform_wrapper.py
index 538af67..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_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_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.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,
- "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,
+ "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,
}
mouse_keys_table = {
"mouse_left": win32_mouse_left,
diff --git a/pyproject.toml b/pyproject.toml
index f5f4034..d77e474 100644
--- a/pyproject.toml
+++ b/pyproject.toml
@@ -6,7 +6,7 @@ build-backend = "setuptools.build_meta"
[project]
name = "je_auto_control"
-version = "0.0.174"
+version = "0.0.175"
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)
+