Esempio n. 1
0
class VialKeyboard(VialDevice):
    def __init__(self, dev, sideload=False, via_stack=False):
        super().__init__(dev)
        self.via_id = str(dev["vendor_id"] * 65536 + dev["product_id"])
        self.sideload = sideload
        self.via_stack = via_stack
        self.keyboard = None

    def open(self, override_json=None):
        super().open(override_json)
        self.keyboard = Keyboard(self.dev)
        self.keyboard.reload(override_json)

    def title(self):
        s = "{} {}".format(self.desc["manufacturer_string"],
                           self.desc["product_string"])
        if self.sideload:
            s += " [sideload]"
        elif self.via_stack:
            s += " [VIA]"
        return s

    def get_uid(self):
        try:
            super().open()
        except OSError:
            return b""
        self.send(b"\xFE\x00" + b"\x00" * 30)
        data = self.recv(MSG_LEN, timeout_ms=500)
        super().close()
        return data[4:12]
Esempio n. 2
0
    def prepare_keyboard(layout, keymap, encoders=None):
        dev = SimulatedDevice()
        dev.expect_keyboard_id(0)
        dev.expect_layout(layout)
        dev.expect_layers(len(keymap))
        dev.expect_keymap(keymap)
        if encoders is not None:
            dev.expect_encoders(encoders)
        # macro count
        dev.expect("0C", "0C00")
        # macro buffer size
        dev.expect("0D", "0D0000")

        kb = Keyboard(dev, dev.sim_send)
        kb.reload()

        return kb, dev