spiegel-keyman/core/python/keyman/keyboardprocessor/api.py

118 lines
2.1 KiB
Python

import pathlib
from typing import NamedTuple, NewType, Tuple, List, Union
from enum import Enum
from collections.abc import Sequence, Mapping
USV = int
Marker = int
VirtualKey = int
class Context(Sequence):
Item = Union[USV, Marker]
def __init__(initial: str):
pass
def __del__(self):
pass
def __str__(self):
pass
def set(self, ctxt: List[Item]):
self.clear()
self.apped(ctxt)
def clear(self):
pass
def __getitem__(self, key: int) -> Item:
pass
def __len__(self):
pass
def append(self, ctxt: List[Item]):
pass
def delete(self, remove_n: int, prefix: List[Item]):
pass
Option = Tuple[str, str]
class OptionSet(Mapping):
def __getitem__(self, key: str) -> Option:
pass
def __iter__(self):
pass
def __len__(self):
pass
def __str__(self):
pass
class Keyboard(NamedTuple('__kb_attrs', version=str, id=str, folder_path=pathlib.Path, default_options=OptionSet)):
def __new__(cls, _):
return super(Keyboard, cls).__new__(cls, *[None]*4)
def __init__(self, kb_path: pathlib.Path):
pass
def __del__(self):
pass
class Action:
VKeyDown = NewType('Action.VirtualKey', VirtualKey)
# VKeyUp = VirtualKey
# VShiftDown = VirtualKey
# VShiftUp = VirtualKey
# Char = int
# Marker = int
# Bell = NewType('Bell', None)
# Back = NewType('Back', None)
# PersistOpt = str
# ResetOpt = str
ActionList = List[Action]
class State:
def __init__(self, kb: Keyboard, env: OptionSet):
pass
def __del__(self):
pass
@property
def flags(self) -> int:
pass
@property
def context(self) -> Context:
pass
@property
def environment(self) -> OptionSet:
pass
@property
def options(self) -> OptionSet:
pass
def indentify_option_src(opt: Option):
pass
def process_event(vk: VirtualKey,
modifier_state,
state: State,
acts: ActionList):
pass