kmk_firmware/kmk/types.py
sofubi 75f9d10cc7 Add types to validators, time, types
Update pyproject.toml to ignore boards, user_keymaps for mypy
Update pyproject.toml to reduce loud mypy reporting
2021-08-15 21:23:02 +00:00

50 lines
1.2 KiB
Python

from typing import List, Optional, Tuple
from kmk.consts import UnicodeMode
from kmk.keys import KeyAttrDict
class AttrDict(dict):
'''
Primitive support for accessing dictionary entries in dot notation.
Mostly for user-facing stuff (allows for `k.KC_ESC` rather than
`k['KC_ESC']`, which gets a bit obnoxious).
This is read-only on purpose.
'''
def __getattr__(self, key: str) -> str:
return self[key]
class LayerKeyMeta:
def __init__(self, layer: int, kc: Optional[KeyAttrDict] = None) -> None:
self.layer: int = layer
self.kc: Optional[KeyAttrDict] = kc
class ModTapKeyMeta:
def __init__(self, kc: Optional[KeyAttrDict] = None, mods: Optional[List[KeyAttrDict]] = None) -> None:
self.mods: Optional[List[KeyAttrDict]] = mods
self.kc: Optional[KeyAttrDict] = kc
class KeySequenceMeta:
def __init__(self, seq: List[KeyAttrDict]):
self.seq: List[KeyAttrDict] = seq
class KeySeqSleepMeta:
def __init__(self, ms: float):
self.ms: float = ms
class UnicodeModeKeyMeta:
def __init__(self, mode: UnicodeMode):
self.mode = mode
class TapDanceKeyMeta:
def __init__(self, codes: Tuple[KeyAttrDict, ...]):
self.codes = codes