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 | ~ |
Metadata
Release files for keyio 1.0.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| keyio-1.0.0-py3-none-any.whl | Python 3 | none | any | Details for keyio-1.0.0-py3-none-any.whl |
Release files / keyio-1.0.0-py3-none-any.whl
| Download URL | keyio-1.0.0-py3-none-any.whl |
|---|---|
| Size | 1.7 MB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
e7262e2f0ffc9a64e1d4f5b5a3ea4910b3865d2ece5cb587840db12050d84f39
|
|
BLAKE2b-256 checksum How to use checksums |
3c4758cfb32186c9d9279dc3f52cd1339431126e7dcd620a7f89c252199e9a78
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is 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
|
Security for keyio 1.0.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.