Source code for neoscore.core.key_event

from dataclasses import dataclass
from enum import Enum, auto


[docs]class KeyEventType(Enum): """Enum describing keyboard input event types. The enum integer values are arbitrary and may change in the future. """ PRESS = auto() """A key was pressed""" AUTO_REPEAT = auto() """A key was automatically repeated from being held""" RELEASE = auto() """A key was released"""
[docs]@dataclass(frozen=True) class KeyEvent: """A keyboard input event. For printable keys, the easiest way to read a key press is by the ``text`` field. For non-printing keys like arrow keys, you can check the pressed key with the ``code`` field. """ event_type: KeyEventType """The type of the event""" code: int """The platform-independent key code for the pressed key. This key code corresponds to `Qt's platform-independent key map <https://doc.qt.io/qt-5/qt.html#Key-enum>`_. For convenience, a few common key codes are provided here: +---------------+-------------+ | Key | Code (hex) | +===============+=============+ | <Left Arrow> | 0x01000012 | +---------------+-------------+ | <Up Arrow> | 0x01000013 | +---------------+-------------+ | <Right Arrow> | 0x01000014 | +---------------+-------------+ | <Down Arrow> | 0x01000015 | +---------------+-------------+ | <Space> | 0x20 | +---------------+-------------+ | <Enter> | 0x01000004 | +---------------+-------------+ | <Escape> | 0x01000000 | +---------------+-------------+ Note that this does not differentiate letter capitalization; check the active modifier keys or the ``text`` field to determine capitalization. """ modifiers: int """A bitmask of key modifiers active during this event. The modifier flags in this bitmask correspond to `Qt's modifier map <https://doc.qt.io/qt-5/qt.html#KeyboardModifier-enum>`_. """ text: str """The unicode text generated by this key. This may be empty for keystrokes that do not emit text, such as modifiers. """