Improve typing and implementation and make setup.py more modular

Signed-off-by: Ari Archer <ari.web.xyz@gmail.com>
This commit is contained in:
Ari Archer 2022-07-23 19:43:34 +03:00
parent a3988018f8
commit 04d877f7e7
Signed by untrusted user who does not match committer: ari
GPG key ID: A50D5B4B599AF8A2
4 changed files with 272 additions and 260 deletions

View file

@ -4,274 +4,272 @@
Source: https://guacamole.apache.org/doc/0.9.0/guacamole-common-js/symbols/src/src_main_webapp_modules_Keyboard.js.html"""
from enum import IntEnum
__version__: str = "0.0.4"
__author__: str = "Ari Archer <ari.web.xyz@gmail.com>"
__version__: str = "0.0.5"
__author__: str = "Ari Archer"
__author_email__: str = "ari.web.xyz@gmail.com"
class UnshiftedKeyCodes(IntEnum):
class UnshiftedKeyCodes:
"""Map of known JavaScript keycodes which do not map to typable characters
to their unshifted X11 keysym equivalents.
"""
to their unshifted X11 keysym equivalents."""
BACKSPACE = 0xFF08
TAB = 0xFF09
ENTER = 0xFF0D
SHIFT = 0xFFE1
CTRL = 0xFFE3
ALT = 0xFFE9
PAUSE = 0xFF13
CAPS_LOCK = 0xFFE5
ESCAPE = 0xFF1B
SPACE = 0x0020
PAGE_UP = 0xFF55
PAGE_DOWN = 0xFF56
END = 0xFF57
HOME = 0xFF50
LEFT_ARROW = 0xFF51
UP_ARROW = 0xFF52
RIGHT_ARROW = 0xFF53
DOWN_ARROW = 0xFF54
INSERT = 0xFF63
DELETE = 0xFFFF
LEFT_WINDOW_KEY = 0xFFEB
RIGHT_WINDOW_KEY = 0xFF67
SELECT_KEY = 0x0
F1 = 0xFFBE
F2 = 0xFFBF
F3 = 0xFFC0
F4 = 0xFFC1
F5 = 0xFFC2
F6 = 0xFFC3
F7 = 0xFFC4
F8 = 0xFFC5
F9 = 0xFFC6
F10 = 0xFFC7
F11 = 0xFFC8
F12 = 0xFFC9
NUM_LOCK = 0xFF7F
SCROLL_LOCK = 0xFF14
BACKSPACE: int = 0xFF08
TAB: int = 0xFF09
ENTER: int = 0xFF0D
SHIFT: int = 0xFFE1
CTRL: int = 0xFFE3
ALT: int = 0xFFE9
PAUSE: int = 0xFF13
CAPS_LOCK: int = 0xFFE5
ESCAPE: int = 0xFF1B
SPACE: int = 0x0020
PAGE_UP: int = 0xFF55
PAGE_DOWN: int = 0xFF56
END: int = 0xFF57
HOME: int = 0xFF50
LEFT_ARROW: int = 0xFF51
UP_ARROW: int = 0xFF52
RIGHT_ARROW: int = 0xFF53
DOWN_ARROW: int = 0xFF54
INSERT: int = 0xFF63
DELETE: int = 0xFFFF
LEFT_WINDOW_KEY: int = 0xFFEB
RIGHT_WINDOW_KEY: int = 0xFF67
SELECT_KEY: int = 0x0
F1: int = 0xFFBE
F2: int = 0xFFBF
F3: int = 0xFFC0
F4: int = 0xFFC1
F5: int = 0xFFC2
F6: int = 0xFFC3
F7: int = 0xFFC4
F8: int = 0xFFC5
F9: int = 0xFFC6
F10: int = 0xFFC7
F11: int = 0xFFC8
F12: int = 0xFFC9
NUM_LOCK: int = 0xFF7F
SCROLL_LOCK: int = 0xFF14
class KeyIdentifiers(IntEnum):
class KeyIdentifiers:
"""Map of known Python keyidentifiers which do not map to typable
characters to their unshifted X11 keysym equivalents."""
AGAIN = 0xFF66
ALL_CANDIDATES = 0xFF3D
ALPHANUMERIC = 0xFF30
ALT = 0xFFE9
ATTN = 0xFD0E
ALT_GRAPH = 0xFFEA
ARROW_DOWN = 0xFF54
ARROW_LEFT = 0xFF51
ARROW_RIGHT = 0xFF53
ARROW_UP = 0xFF52
BACKSPACE = 0xFF08
CAPS_LOCK = 0xFFE5
CANCEL = 0xFF69
CLEAR = 0xFF0B
CONVERT = 0xFF21
COPY = 0xFD15
CRSEL = 0xFD1C
CR_SEL = 0xFD1C
CODE_INPUT = 0xFF37
COMPOSE = 0xFF20
CONTROL = 0xFFE3
CONTEXT_MENU = 0xFF67
DELETE = 0xFFFF
DOWN = 0xFF54
END = 0xFF57
ENTER = 0xFF0D
ERASE_EOF = 0xFD06
ESCAPE = 0xFF1B
EXECUTE = 0xFF62
EXSEL = 0xFD1D
EX_SEL = 0xFD1D
F1 = 0xFFBE
F2 = 0xFFBF
F3 = 0xFFC0
F4 = 0xFFC1
F5 = 0xFFC2
F6 = 0xFFC3
F7 = 0xFFC4
F8 = 0xFFC5
F9 = 0xFFC6
F10 = 0xFFC7
F11 = 0xFFC8
F12 = 0xFFC9
F13 = 0xFFCA
F14 = 0xFFCB
F15 = 0xFFCC
F16 = 0xFFCD
F17 = 0xFFCE
F18 = 0xFFCF
F19 = 0xFFD0
F20 = 0xFFD1
F21 = 0xFFD2
F22 = 0xFFD3
F23 = 0xFFD4
F24 = 0xFFD5
FIND = 0xFF68
GROUP_FIRST = 0xFE0C
GROUP_LAST = 0xFE0E
GROUP_NEXT = 0xFE08
GROUP_PREVIOUS = 0xFE0A
FULL_WIDTH = 0x0
HALF_WIDTH = 0x0
HANGUL_MODE = 0xFF31
HANKAKU = 0xFF29
HANJA_MODE = 0xFF34
HELP = 0xFF6A
HIRAGANA = 0xFF25
HIRAGANA_KATAKANA = 0xFF27
HOME = 0xFF50
HYPER = 0xFFED
INSERT = 0xFF63
JAPANESE_HIRAGANA = 0xFF25
JAPANESE_KATAKANA = 0xFF26
JAPANESE_ROMAJI = 0xFF24
JUNJA_MODE = 0xFF38
KANA_MODE = 0xFF2D
KANJI_MODE = 0xFF21
KATAKANA = 0xFF26
LEFT = 0xFF51
META = 0xFFE7
MODE_CHANGE = 0xFF7E
NUM_LOCK = 0xFF7F
PAGE_DOWN = 0xFF55
PAGE_UP = 0xFF56
PAUSE = 0xFF13
PLAY = 0xFD16
PREVIOUS_CANDIDATE = 0xFF3E
PRINT_SCREEN = 0xFD1D
REDO = 0xFF66
RIGHT = 0xFF53
ROMAN_CHARACTERS = 0x0
SCROLL = 0xFF14
SELECT = 0xFF60
SEPARATOR = 0xFFAC
SHIFT = 0xFFE1
SINGLE_CANDIDATE = 0xFF3C
SUPER = 0xFFEB
TAB = 0xFF09
UP = 0xFF52
UNDO = 0xFF65
WIN = 0xFFEB
ZENKAKU = 0xFF28
ZENKAKU_HANKAKU = 0xFF2A
AGAIN: int = 0xFF66
ALL_CANDIDATES: int = 0xFF3D
ALPHANUMERIC: int = 0xFF30
ALT: int = 0xFFE9
ATTN: int = 0xFD0E
ALT_GRAPH: int = 0xFFEA
ARROW_DOWN: int = 0xFF54
ARROW_LEFT: int = 0xFF51
ARROW_RIGHT: int = 0xFF53
ARROW_UP: int = 0xFF52
BACKSPACE: int = 0xFF08
CAPS_LOCK: int = 0xFFE5
CANCEL: int = 0xFF69
CLEAR: int = 0xFF0B
CONVERT: int = 0xFF21
COPY: int = 0xFD15
CRSEL: int = 0xFD1C
CR_SEL: int = 0xFD1C
CODE_INPUT: int = 0xFF37
COMPOSE: int = 0xFF20
CONTROL: int = 0xFFE3
CONTEXT_MENU: int = 0xFF67
DELETE: int = 0xFFFF
DOWN: int = 0xFF54
END: int = 0xFF57
ENTER: int = 0xFF0D
ERASE_EOF: int = 0xFD06
ESCAPE: int = 0xFF1B
EXECUTE: int = 0xFF62
EXSEL: int = 0xFD1D
EX_SEL: int = 0xFD1D
F1: int = 0xFFBE
F2: int = 0xFFBF
F3: int = 0xFFC0
F4: int = 0xFFC1
F5: int = 0xFFC2
F6: int = 0xFFC3
F7: int = 0xFFC4
F8: int = 0xFFC5
F9: int = 0xFFC6
F10: int = 0xFFC7
F11: int = 0xFFC8
F12: int = 0xFFC9
F13: int = 0xFFCA
F14: int = 0xFFCB
F15: int = 0xFFCC
F16: int = 0xFFCD
F17: int = 0xFFCE
F18: int = 0xFFCF
F19: int = 0xFFD0
F20: int = 0xFFD1
F21: int = 0xFFD2
F22: int = 0xFFD3
F23: int = 0xFFD4
F24: int = 0xFFD5
FIND: int = 0xFF68
GROUP_FIRST: int = 0xFE0C
GROUP_LAST: int = 0xFE0E
GROUP_NEXT: int = 0xFE08
GROUP_PREVIOUS: int = 0xFE0A
FULL_WIDTH: int = 0x0
HALF_WIDTH: int = 0x0
HANGUL_MODE: int = 0xFF31
HANKAKU: int = 0xFF29
HANJA_MODE: int = 0xFF34
HELP: int = 0xFF6A
HIRAGANA: int = 0xFF25
HIRAGANA_KATAKANA: int = 0xFF27
HOME: int = 0xFF50
HYPER: int = 0xFFED
INSERT: int = 0xFF63
JAPANESE_HIRAGANA: int = 0xFF25
JAPANESE_KATAKANA: int = 0xFF26
JAPANESE_ROMAJI: int = 0xFF24
JUNJA_MODE: int = 0xFF38
KANA_MODE: int = 0xFF2D
KANJI_MODE: int = 0xFF21
KATAKANA: int = 0xFF26
LEFT: int = 0xFF51
META: int = 0xFFE7
MODE_CHANGE: int = 0xFF7E
NUM_LOCK: int = 0xFF7F
PAGE_DOWN: int = 0xFF55
PAGE_UP: int = 0xFF56
PAUSE: int = 0xFF13
PLAY: int = 0xFD16
PREVIOUS_CANDIDATE: int = 0xFF3E
PRINT_SCREEN: int = 0xFD1D
REDO: int = 0xFF66
RIGHT: int = 0xFF53
ROMAN_CHARACTERS: int = 0x0
SCROLL: int = 0xFF14
SELECT: int = 0xFF60
SEPARATOR: int = 0xFFAC
SHIFT: int = 0xFFE1
SINGLE_CANDIDATE: int = 0xFF3C
SUPER: int = 0xFFEB
TAB: int = 0xFF09
UP: int = 0xFF52
UNDO: int = 0xFF65
WIN: int = 0xFFEB
ZENKAKU: int = 0xFF28
ZENKAKU_HANKAKU: int = 0xFF2A
class ShiftedKeywords(IntEnum):
class ShiftedKeywords:
"""Map of known Python keycodes which do not map to typable characters
to their shifted X11 keysym equivalents. Keycodes must only be listed
here if their shifted X11 keysym equivalents differ from their unshifted
equivalents."""
ALT = 0xFFE7
ALT: int = 0xFFE7
class NoRepeat(IntEnum):
class NoRepeat:
"""All keysyms which should not repeat when held down."""
LEFT_SHIFT = 0xFFE1
RIGHT_SHIFT = 0xFFE2
LEFT_CTRL = 0xFFE3
RIGHT_CTRL = 0xFFE4
LEFT_META = 0xFFE7
RIGHT_META = 0xFFE8
LEFT_ALT = 0xFFE9
RIGHT_ALT = 0xFFEA
LEFT_HYPER = 0xFFEB
RIGHT_HYPER = 0xFFEC
LEFT_SHIFT: int = 0xFFE1
RIGHT_SHIFT: int = 0xFFE2
LEFT_CTRL: int = 0xFFE3
RIGHT_CTRL: int = 0xFFE4
LEFT_META: int = 0xFFE7
RIGHT_META: int = 0xFFE8
LEFT_ALT: int = 0xFFE9
RIGHT_ALT: int = 0xFFEA
LEFT_HYPER: int = 0xFFEB
RIGHT_HYPER: int = 0xFFEC
class AsciiKeys(IntEnum):
class AsciiKeys:
"""Map of all X11 typable ASCII characters"""
KEY_SPACE = 0x20
KEY_LOWERCASE_A = 0x61
KEY_LOWERCASE_B = 0x62
KEY_LOWERCASE_C = 0x63
KEY_LOWERCASE_D = 0x64
KEY_LOWERCASE_E = 0x65
KEY_LOWERCASE_F = 0x66
KEY_LOWERCASE_G = 0x67
KEY_LOWERCASE_H = 0x68
KEY_LOWERCASE_I = 0x69
KEY_LOWERCASE_J = 0x6A
KEY_LOWERCASE_K = 0x6B
KEY_LOWERCASE_L = 0x6C
KEY_LOWERCASE_M = 0x6D
KEY_LOWERCASE_N = 0x6E
KEY_LOWERCASE_O = 0x6F
KEY_LOWERCASE_P = 0x70
KEY_LOWERCASE_Q = 0x71
KEY_LOWERCASE_R = 0x72
KEY_LOWERCASE_S = 0x73
KEY_LOWERCASE_T = 0x74
KEY_LOWERCASE_U = 0x75
KEY_LOWERCASE_V = 0x76
KEY_LOWERCASE_W = 0x77
KEY_LOWERCASE_X = 0x78
KEY_LOWERCASE_Y = 0x79
KEY_LOWERCASE_Z = 0x7A
KEY_UPPERCASE_A = 0x41
KEY_UPPERCASE_B = 0x42
KEY_UPPERCASE_C = 0x43
KEY_UPPERCASE_D = 0x44
KEY_UPPERCASE_E = 0x45
KEY_UPPERCASE_F = 0x46
KEY_UPPERCASE_G = 0x47
KEY_UPPERCASE_H = 0x48
KEY_UPPERCASE_I = 0x49
KEY_UPPERCASE_J = 0x4A
KEY_UPPERCASE_K = 0x4B
KEY_UPPERCASE_L = 0x4C
KEY_UPPERCASE_M = 0x4D
KEY_UPPERCASE_N = 0x4E
KEY_UPPERCASE_O = 0x4F
KEY_UPPERCASE_P = 0x50
KEY_UPPERCASE_Q = 0x51
KEY_UPPERCASE_R = 0x52
KEY_UPPERCASE_S = 0x53
KEY_UPPERCASE_T = 0x54
KEY_UPPERCASE_U = 0x55
KEY_UPPERCASE_V = 0x56
KEY_UPPERCASE_W = 0x57
KEY_UPPERCASE_X = 0x58
KEY_UPPERCASE_Y = 0x59
KEY_UPPERCASE_Z = 0x5A
SIGN_EXCLAMATION = 0x21
SIGN_DOUBLE_QUOTE = 0x22
SIGN_HASH = 0x23
SIGN_DOLLAR = 0x24
SIGN_PERCENT = 0x25
SIGN_AMPERSAND = 0x26
SIGN_SINGLE_QUOTE = 0x27
SIGN_OPENING_BRACKET = 0x28
SIGN_CLOSING_BRACKET = 0x29
SIGN_STAR = 0x2A
SIGN_PLUS = 0x2B
SIGN_COMMA = 0x2C
SIGN_MINUS = 0x2D
SIGN_DOT = 0x2E
SIGN_SLASH = 0x2F
SIGN_COLON = 0x3A
SIGN_SEMICOLON = 0x3B
SIGN_LESS_THAN = 0x3C
SIGN_EQUAL = 0x3D
SIGN_MORE_THAN = 0x3E
SIGN_QUESTION = 0x3F
SIGN_AT = 0x40
SIGN_OPENING_SQUARE_BRACKET = 0x5B
SIGN_BACKSLASH = 0x5C
SIGN_CLOSING_SQUARE_BRACKET = 0x5D
SIGN_CARET = 0x5E
SIGN_UNDERSCORE = 0x5F
SIGN_BACKTICK = 0x60
SIGN_OPENING_CURLY_BRACKET = 0x7B
SIGN_PIPE = 0x7C
SIGN_CLOSING_CURLY_BRACKET = 0x7D
SIGN_TILDE = 0x7E
KEY_SPACE: int = 0x20
KEY_LOWERCASE_A: int = 0x61
KEY_LOWERCASE_B: int = 0x62
KEY_LOWERCASE_C: int = 0x63
KEY_LOWERCASE_D: int = 0x64
KEY_LOWERCASE_E: int = 0x65
KEY_LOWERCASE_F: int = 0x66
KEY_LOWERCASE_G: int = 0x67
KEY_LOWERCASE_H: int = 0x68
KEY_LOWERCASE_I: int = 0x69
KEY_LOWERCASE_J: int = 0x6A
KEY_LOWERCASE_K: int = 0x6B
KEY_LOWERCASE_L: int = 0x6C
KEY_LOWERCASE_M: int = 0x6D
KEY_LOWERCASE_N: int = 0x6E
KEY_LOWERCASE_O: int = 0x6F
KEY_LOWERCASE_P: int = 0x70
KEY_LOWERCASE_Q: int = 0x71
KEY_LOWERCASE_R: int = 0x72
KEY_LOWERCASE_S: int = 0x73
KEY_LOWERCASE_T: int = 0x74
KEY_LOWERCASE_U: int = 0x75
KEY_LOWERCASE_V: int = 0x76
KEY_LOWERCASE_W: int = 0x77
KEY_LOWERCASE_X: int = 0x78
KEY_LOWERCASE_Y: int = 0x79
KEY_LOWERCASE_Z: int = 0x7A
KEY_UPPERCASE_A: int = 0x41
KEY_UPPERCASE_B: int = 0x42
KEY_UPPERCASE_C: int = 0x43
KEY_UPPERCASE_D: int = 0x44
KEY_UPPERCASE_E: int = 0x45
KEY_UPPERCASE_F: int = 0x46
KEY_UPPERCASE_G: int = 0x47
KEY_UPPERCASE_H: int = 0x48
KEY_UPPERCASE_I: int = 0x49
KEY_UPPERCASE_J: int = 0x4A
KEY_UPPERCASE_K: int = 0x4B
KEY_UPPERCASE_L: int = 0x4C
KEY_UPPERCASE_M: int = 0x4D
KEY_UPPERCASE_N: int = 0x4E
KEY_UPPERCASE_O: int = 0x4F
KEY_UPPERCASE_P: int = 0x50
KEY_UPPERCASE_Q: int = 0x51
KEY_UPPERCASE_R: int = 0x52
KEY_UPPERCASE_S: int = 0x53
KEY_UPPERCASE_T: int = 0x54
KEY_UPPERCASE_U: int = 0x55
KEY_UPPERCASE_V: int = 0x56
KEY_UPPERCASE_W: int = 0x57
KEY_UPPERCASE_X: int = 0x58
KEY_UPPERCASE_Y: int = 0x59
KEY_UPPERCASE_Z: int = 0x5A
SIGN_EXCLAMATION: int = 0x21
SIGN_DOUBLE_QUOTE: int = 0x22
SIGN_HASH: int = 0x23
SIGN_DOLLAR: int = 0x24
SIGN_PERCENT: int = 0x25
SIGN_AMPERSAND: int = 0x26
SIGN_SINGLE_QUOTE: int = 0x27
SIGN_OPENING_BRACKET: int = 0x28
SIGN_CLOSING_BRACKET: int = 0x29
SIGN_STAR: int = 0x2A
SIGN_PLUS: int = 0x2B
SIGN_COMMA: int = 0x2C
SIGN_MINUS: int = 0x2D
SIGN_DOT: int = 0x2E
SIGN_SLASH: int = 0x2F
SIGN_COLON: int = 0x3A
SIGN_SEMICOLON: int = 0x3B
SIGN_LESS_THAN: int = 0x3C
SIGN_EQUAL: int = 0x3D
SIGN_MORE_THAN: int = 0x3E
SIGN_QUESTION: int = 0x3F
SIGN_AT: int = 0x40
SIGN_OPENING_SQUARE_BRACKET: int = 0x5B
SIGN_BACKSLASH: int = 0x5C
SIGN_CLOSING_SQUARE_BRACKET: int = 0x5D
SIGN_CARET: int = 0x5E
SIGN_UNDERSCORE: int = 0x5F
SIGN_BACKTICK: int = 0x60
SIGN_OPENING_CURLY_BRACKET: int = 0x7B
SIGN_PIPE: int = 0x7C
SIGN_CLOSING_CURLY_BRACKET: int = 0x7D
SIGN_TILDE: int = 0x7E

View file

@ -1,12 +1,14 @@
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
"""__init__.py library stub"""
"""guacamole_keysyms library stub"""
from enum import IntEnum
__version__: str
__author__: str
__author_email__: str
class UnshiftedKeyCodes(IntEnum):
class UnshiftedKeyCodes:
BACKSPACE: int
TAB: int
ENTER: int
@ -46,7 +48,7 @@ class UnshiftedKeyCodes(IntEnum):
SCROLL_LOCK: int
class KeyIdentifiers(IntEnum):
class KeyIdentifiers:
AGAIN: int
ALL_CANDIDATES: int
ALPHANUMERIC: int
@ -152,11 +154,11 @@ class KeyIdentifiers(IntEnum):
ZENKAKU_HANKAKU: int
class ShiftedKeywords(IntEnum):
class ShiftedKeywords:
ALT: int
class NoRepeat(IntEnum):
class NoRepeat:
LEFT_SHIFT: int
RIGHT_SHIFT: int
LEFT_CTRL: int
@ -169,7 +171,7 @@ class NoRepeat(IntEnum):
RIGHT_HYPER: int
class AsciiKeys(IntEnum):
class AsciiKeys:
KEY_SPACE: int
KEY_LOWERCASE_A: int
KEY_LOWERCASE_B: int

View file

@ -1 +0,0 @@
enum

View file

@ -1,17 +1,23 @@
import setuptools # type: ignore
__author__: str = "AriArcher"
__author_email__: str = "ari.web.xyz@gmail.com"
MODULE_NAME: str = "guacamole_keysyms"
SAFE_MODULE_NAME: str = MODULE_NAME.replace("_", "-")
with open("README.md", "r") as desc:
long_description: str = desc.read()
setuptools.setup(
name="guacamole-keysyms",
version="0.0.4",
author="AriArcher",
author_email="ari.web.xyz@gmail.com",
name=SAFE_MODULE_NAME,
version="0.0.5",
author=__author__,
author_email=__author_email__,
description="Guacamole protocol key mappings for python",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://ari-web.xyz/gh/guacamole_keysyms",
url=f"https://ari-web.xyz/gh/{SAFE_MODULE_NAME}",
packages=setuptools.find_packages(),
classifiers=[
"Programming Language :: Python :: 3",
@ -19,4 +25,11 @@ setuptools.setup(
"Operating System :: OS Independent",
],
python_requires=">=3.8",
package_data={
MODULE_NAME: [
f"{MODULE_NAME}/py.typed",
f"{MODULE_NAME}/__init__.pyi",
]
},
include_package_data=True,
)