from sejf.modules.base import BaseModule, Schema, fields from kivy.core.window import Window class BarcodeModule(BaseModule): text_buffer: str = "" class ConfigSchema(Schema): code = fields.String(missing="jp2gmd") def __init__(self, *args, **kwargs): super(BarcodeModule, self).__init__(*args, **kwargs) self._keyboard = Window.request_keyboard(None, self, "text") self._keyboard.bind(on_textinput=self._on_keyboard_down) def build(self, parent): return None def _on_keyboard_down(self, widget, text): self.text_buffer += text self.text_buffer = self.text_buffer[-len(self.config["code"]) :] if self.text_buffer == self.config["code"]: self.finished = True