Source code for mini_arcade_core.backend.keys
"""
Mini Arcade Core key definitions.
"""
from __future__ import annotations
from dataclasses import dataclass
from enum import Enum, auto
[docs]
class Key(Enum):
"""
Enumeration of common keyboard keys.
:ivar A-Z: Letter keys.
:ivar arrow_up, arrow_down, arrow_left, arrow_right: Arrow keys.
:ivar escape, space, enter, tab, backspace: Common control keys.
:ivar num_0 - num_9: Number keys.
:ivar f1 - f12: Function keys.
"""
# Letters
A = auto()
B = auto()
C = auto()
D = auto()
E = auto()
F = auto()
G = auto()
H = auto()
I = auto()
J = auto()
K = auto()
L = auto()
M = auto()
N = auto()
O = auto()
P = auto()
Q = auto()
R = auto()
S = auto()
T = auto()
U = auto()
V = auto()
W = auto()
X = auto()
Y = auto()
Z = auto()
# Arrows
UP = auto()
DOWN = auto()
LEFT = auto()
RIGHT = auto()
# Common
ESCAPE = auto()
SPACE = auto()
ENTER = auto()
TAB = auto()
BACKSPACE = auto()
# Numbers
NUM_0 = auto()
NUM_1 = auto()
NUM_2 = auto()
NUM_3 = auto()
NUM_4 = auto()
NUM_5 = auto()
NUM_6 = auto()
NUM_7 = auto()
NUM_8 = auto()
NUM_9 = auto()
# Function keys
F1 = auto()
F2 = auto()
F3 = auto()
F4 = auto()
F5 = auto()
F6 = auto()
F7 = auto()
F8 = auto()
F9 = auto()
F10 = auto()
F11 = auto()
F12 = auto()
# Justification: Simple alias object for keys
# pylint: disable=too-many-instance-attributes
@dataclass(frozen=True)
class _Keys:
# alias object so user code can do keys.w, keys.arrow_up, etc.
a: Key = Key.A
b: Key = Key.B
c: Key = Key.C
d: Key = Key.D
e: Key = Key.E
f: Key = Key.F
g: Key = Key.G
h: Key = Key.H
i: Key = Key.I
j: Key = Key.J
k: Key = Key.K
l: Key = Key.L
m: Key = Key.M
n: Key = Key.N
o: Key = Key.O
p: Key = Key.P
q: Key = Key.Q
r: Key = Key.R
s: Key = Key.S
t: Key = Key.T
u: Key = Key.U
v: Key = Key.V
w: Key = Key.W
x: Key = Key.X
y: Key = Key.Y
z: Key = Key.Z
up: Key = Key.UP
down: Key = Key.DOWN
left: Key = Key.LEFT
right: Key = Key.RIGHT
escape: Key = Key.ESCAPE
space: Key = Key.SPACE
enter: Key = Key.ENTER
tab: Key = Key.TAB
backspace: Key = Key.BACKSPACE
num_0: Key = Key.NUM_0
num_1: Key = Key.NUM_1
num_2: Key = Key.NUM_2
num_3: Key = Key.NUM_3
num_4: Key = Key.NUM_4
num_5: Key = Key.NUM_5
num_6: Key = Key.NUM_6
num_7: Key = Key.NUM_7
num_8: Key = Key.NUM_8
num_9: Key = Key.NUM_9
f1: Key = Key.F1
f2: Key = Key.F2
f3: Key = Key.F3
f4: Key = Key.F4
f5: Key = Key.F5
f6: Key = Key.F6
f7: Key = Key.F7
f8: Key = Key.F8
f9: Key = Key.F9
f10: Key = Key.F10
f11: Key = Key.F11
f12: Key = Key.F12
# pylint: enable=too-many-instance-attributes
keymap = _Keys()