A simple package to manage basic IO operations for mouse, keyboard and windows.
Project description
KeyIO Package Documentation
This library provides various functions to control and manage IO events
As of version 0.0.1, there are three modules in this package.
- keyutils - used to manage keyboard IO events
- mouseutils - used to manage mouse IO events
- windowutils - used to manage window IO events
To install this package, type in command prompt:
pip install keyio
[1] Controlling and Monitoring Keyboard Events
(1-A) Simulating Key Pressing
press_key(self, target_key : int) -> KeyUtils
#example 1
from keyio.keyutils import KeyUtils
key_utils = KeyUtils()
target_key = KeyUtils.Key.KEY_ESC
key_utils.press_key(target_key)
(1-B) Simulating Key Releasing
release_key(self, target_key : int) -> KeyUtils
#example 2
from keyio.keyutils import KeyUtils
key_utils = KeyUtils()
target_key = KeyUtils.Key.KEY_ESC
key_utils.release_key(target_key)
(1-C-1) KeyCode List
KeyUtils.KeyCode
KeyCode | Value | Description |
---|---|---|
CHAR_0 | 48 | 0 |
CHAR_1 | 49 | 1 |
CHAR_2 | 50 | 2 |
CHAR_3 | 51 | 3 |
CHAR_4 | 52 | 4 |
CHAR_5 | 53 | 5 |
CHAR_6 | 54 | 6 |
CHAR_7 | 55 | 7 |
CHAR_8 | 56 | 8 |
CHAR_9 | 57 | 9 |
CHAR_A | 65 | A |
CHAR_B | 66 | B |
CHAR_C | 67 | C |
CHAR_D | 68 | D |
CHAR_E | 69 | E |
CHAR_F | 70 | F |
CHAR_G | 71 | G |
CHAR_H | 72 | H |
CHAR_I | 73 | I |
CHAR_J | 74 | J |
CHAR_K | 75 | K |
CHAR_L | 76 | L |
CHAR_M | 77 | M |
CHAR_N | 78 | N |
CHAR_O | 79 | O |
CHAR_P | 80 | P |
CHAR_Q | 81 | Q |
CHAR_R | 82 | R |
CHAR_S | 83 | S |
CHAR_T | 84 | T |
CHAR_U | 85 | U |
CHAR_V | 86 | V |
CHAR_W | 87 | W |
CHAR_X | 88 | X |
CHAR_Y | 89 | Y |
CHAR_Z | 90 | Z |
(1-C-2) Key List
KeyUtils.Key
Key | Value | Description |
---|---|---|
KEY_BACKSPACE | 0x08 | ~ |
KEY_TAB | 0x09 | ~ |
KEY_CLEAR | 0x0C | ~ |
KEY_ENTER | 0x0D | ~ |
KEY_SHIFT | 0x10 | ~ |
KEY_CTRL | 0x11 | ~ |
KEY_ALT | 0x12 | ~ |
KEY_PAUSE | 0x13 | ~ |
KEY_CAPS_LOCK | 0x14 | ~ |
KEY_ESC | 0x1B | ~ |
KEY_SPACE | 0x20 | ~ |
KEY_PAGE_UP | 0x21 | ~ |
KEY_PAGE_DOWN | 0x22 | ~ |
KEY_END | 0x23 | ~ |
KEY_HOME | 0x24 | ~ |
KEY_LEFT_ARROW | 0x25 | ~ |
KEY_UP_ARROW | 0x26 | ~ |
KEY_RIGHT_ARROW | 0x27 | ~ |
KEY_DOWN_ARROW | 0x28 | ~ |
KEY_SELECT | 0x29 | ~ |
KEY_PRINT | 0x2A | ~ |
KEY_EXECUTE | 0x2B | ~ |
KEY_SNAPSHOT | 0x2C | ~ |
KEY_INSERT | 0x2D | ~ |
KEY_DELETE | 0x2E | ~ |
KEY_HELP | 0x2F | ~ |
KEY_LEFT_WINDOW | 0x5B | ~ |
KEY_RIGHT_WINDOW | 0x5C | ~ |
KEY_APPLICATION | 0x5D | ~ |
KEY_SLEEP | 0x5F | ~ |
KEY_NUMPAD_0 | 0x60 | ~ |
KEY_NUMPAD_1 | 0x61 | ~ |
KEY_NUMPAD_2 | 0x62 | ~ |
KEY_NUMPAD_3 | 0x63 | ~ |
KEY_NUMPAD_4 | 0x64 | ~ |
KEY_NUMPAD_5 | 0x65 | ~ |
KEY_NUMPAD_6 | 0x66 | ~ |
KEY_NUMPAD_7 | 0x67 | ~ |
KEY_NUMPAD_8 | 0x68 | ~ |
KEY_NUMPAD_9 | 0x69 | ~ |
KEY_MULTIPLY | 0x6A | ~ |
KEY_ADD | 0x6B | ~ |
KEY_SEPARATOR | 0x6C | ~ |
KEY_SUBTRACT | 0x6D | ~ |
KEY_DECIMAL | 0x6E | ~ |
KEY_DIVIDE | 0x6F | ~ |
KEY_F1 | 0x70 | ~ |
KEY_F2 | 0x71 | ~ |
KEY_F3 | 0x72 | ~ |
KEY_F4 | 0x73 | ~ |
KEY_F5 | 0x74 | ~ |
KEY_F6 | 0x75 | ~ |
KEY_F7 | 0x76 | ~ |
KEY_F8 | 0x77 | ~ |
KEY_F9 | 0x78 | ~ |
KEY_F10 | 0x79 | ~ |
KEY_F11 | 0x7A | ~ |
KEY_F12 | 0x7B | ~ |
KEY_F13 | 0x7C | ~ |
KEY_F14 | 0x7D | ~ |
KEY_F15 | 0x7E | ~ |
KEY_F16 | 0x7F | ~ |
KEY_F17 | 0x80 | ~ |
KEY_F18 | 0x81 | ~ |
KEY_F19 | 0x82 | ~ |
KEY_F20 | 0x83 | ~ |
KEY_F21 | 0x84 | ~ |
KEY_F22 | 0x85 | ~ |
KEY_F23 | 0x86 | ~ |
KEY_F24 | 0x87 | ~ |
KEY_NUMLOCK | 0x90 | ~ |
KEY_SCROLL | 0x91 | ~ |
KEY_LEFT_SHIFT | 0xA0 | ~ |
KEY_RIGHT_SHIFT | 0xA1 | ~ |
KEY_LEFT_CTRL | 0xA2 | ~ |
KEY_RIGHT_CTRL | 0xA3 | ~ |
KEY_LEFT_ALT | 0xA4 | ~ |
KEY_RIGHT_ALT | 0xA5 | ~ |
KEY_OEM_1 | 0xBA | ~ |
KEY_OEM_PLUS | 0xBB | ~ |
KEY_OEM_COMMA | 0xBC | ~ |
KEY_OEM_MINUS | 0xBD | ~ |
KEY_OEM_PERIOD | 0xBE | ~ |
KEY_OEM_2 | 0xBF | ~ |
KEY_OEM_3 | 0xC0 | ~ |
KEY_OEM_4 | 0xDB | ~ |
KEY_OEM_5 | 0xDC | ~ |
KEY_OEM_6 | 0xDD | ~ |
KEY_OEM_7 | 0xDE | ~ |
KEY_OEM_8 | 0xDF | ~ |
KEY_OEM_102 | 0xE2 | ~ |
(1-D) Monitoring Key Events
Example
#example 3
from keyio.keyutils import KeyUtils
key_utils = KeyUtils()
key_1 = KeyUtils.Key.KEY_ESC
key_2 = KeyUtils.Key.KEY_SPACE
keep_running = True
@key_utils.monitor([ key_1, key_2 ])
def monitor_exit(key_code : int, key_pressed : bool) -> None:
global keep_running
keep_running = False
@key_utils.monitor("abcdefg092")
def monitor_char(key_code : int, key_pressed : bool) -> None:
print(chr(key_code), end = ' ')
if (key_pressed):
print("pressed")
else:
print("released")
key_utils.initialize_monitors()
key_utils.start_thread()
while (keep_running):
pass
key_utils.stop_thread()
[2] Controlling and Monitoring Mouse Events
(2-A) Simulating Mouse Pressing
press_button(self, mouse_button : int) -> MouseUtils
#example 4
from keyio.mouseutils import MouseUtils
mouse_utils = MouseUtils()
mouse_button = MouseUtils.LEFT_BUTTON
mouse_utils.press_button(mouse_button)
(2-B) Simulating Mouse Releasing
release_button(self, mouse_button : int) -> MouseUtils
#example 5
from keyio.mouseutils import MouseUtils
mouse_utils = MouseUtils()
mouse_button = MouseUtils.MIDDLE_BUTTON
mouse_utils.release_button(mouse_button)
(2-C) Simulating Scroll
scroll(self, dy : int) -> MouseUtils
#example 6
from keyio.mouseutils import MouseUtils
mouse_utils = MouseUtils()
dy = -10
mouse_utils.scroll(dy)
(2-D) Obtaining Cursor Coordinates
get_mouse_coord(self) -> Tuple[ int, int ]
#example 7
from keyio.mouseutils import MouseUtils
mouse_utils = MouseUtils()
(x, y) = mouse_utils.get_mouse_coord()
print("({},{})".format(x, y))
(2-E) Setting Cursor Coordinates
set_mouse_coord(self, x : int, y : int) -> MouseUtils
#example 8
from keyio.mouseutils import MouseUtils
mouse_utils = MouseUtils()
(x, y) = (127, 89)
mouse_utils.set_mouse_coord(x, y)
(2-F) Mouse Event List
MouseUtils
Button/Event | Value | Description |
---|---|---|
LEFT_BUTTON | 0 | 0 |
MIDDLE_BUTTON | 1 | 1 |
RIGHT_BUTTON | 2 | 2 |
MOUSE_MOVE | 3 | 3 |
(2-G) Monitoring Mouse Events
Example
#example 9
from typing import Tuple
from keyio.mouseutils import MouseUtils
mouse_utils = MouseUtils()
button_1 = MouseUtils.LEFT_BUTTON
button_2 = MouseUtils.RIGHT_BUTTON
button_3 = MouseUtils.MIDDLE_BUTTON
keep_running = True
@mouse_utils.monitor([ button_1, button_2, button_3 ])
def monitor_exit(mouse_button : int, button_pressed : bool) -> None:
global keep_running
keep_running = False
@mouse_utils.monitor(MouseUtils.MOUSE_MOVE)
def monitor_char(mouse_button : int, mouse_coord : Tuple[ int, int ]) -> None:
print("({},{})".format(*mouse_coord))
mouse_utils.initialize_monitors()
mouse_utils.start_thread()
while (keep_running):
pass
mouse_utils.stop_thread()
[3] Controlling and Observing Window Events
(3-A) Obtain Bounding Box of Selected Window
get_foreground_window(self) -> Tuple[ int, int, int, int ]
#example 10
from keyio.windowutils import WindowUtils
window_utils = WindowUtils()
(sx, sy, ex, ey) = window_utils.get_foreground_window()
print("Window: ({},{},{},{})".format(sx, sy, ex, ey))
(3-B) Set Bounding Box of Selected Window
set_foreground_window(self, sx : int, sy : int, dx : int = -1, dy : int = -1, flag : int = 0x0040) -> WindowUtils
#example 11
from keyio.windowutils import WindowUtils
window_utils = WindowUtils()
window_utils.set_foreground_window(0, 0, 800, 625)
(3-C) Set Position of Selected Window
move_foreground_window(self, sx : int, sy : int, flag : int = 0x0040) -> WindowUtils
#example 12
from keyio.windowutils import WindowUtils
window_utils = WindowUtils()
window_utils.move_foreground_window(0, 0)
(3-D) Flag List
WindowUtils.WindowFlags
WindowFlags | Value | Description |
---|---|---|
SWP_DRAWFRAME | 0x0020 | ~ |
SWP_FRAMECHANGED | 0x0020 | ~ |
SWP_HIDEWINDOW | 0x0080 | ~ |
SWP_NOACTIVATE | 0x0010 | ~ |
SWP_NOCOPYBITS | 0x0100 | ~ |
SWP_NOMOVE | 0x0002 | ~ |
SWP_NOSIZE | 0x0001 | ~ |
SWP_NOREDRAW | 0x0008 | ~ |
SWP_NOZORDER | 0x0004 | ~ |
SWP_SHOWWINDOW | 0x0040 | ~ |
SWP_NOOWNERZORDER | 0x0200 | ~ |
SWP_NOREPOSITION | 0x0200 | ~ |
SWP_NOSENDCHANGING | 0x0400 | ~ |
SWP_DEFERERASE | 0x2000 | ~ |
SWP_ASYNCWINDOWPOS | 0x4000 | ~ |
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distributions
No source distribution files available for this release.See tutorial on generating distribution archives.
Built Distribution
keyio-1.0.0-py3-none-any.whl
(1.7 MB
view details)
File details
Details for the file keyio-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: keyio-1.0.0-py3-none-any.whl
- Upload date:
- Size: 1.7 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.2 importlib_metadata/3.10.0 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.59.0 CPython/3.8.8
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | e7262e2f0ffc9a64e1d4f5b5a3ea4910b3865d2ece5cb587840db12050d84f39 |
|
MD5 | aa81b5d91468866881ed4fccde862969 |
|
BLAKE2b-256 | 3c4758cfb32186c9d9279dc3f52cd1339431126e7dcd620a7f89c252199e9a78 |