Source code for vkb.devices.base
from vkb import led
VENDOR_ID = 0x231D
[docs]class VKBDevice:
PRODUCT_ID = None
VENDOR_ID = VENDOR_ID
ALL_LEDS = []
def __init__(self, device, guid):
assert self.PRODUCT_ID is not None
assert self.VENDOR_ID is not None
self.device = device
self.guid = guid
self.name = self.device.product_name
[docs] def get_led(self, led_id):
return self.leds.get(led_id, led.LEDConfig(led=led_id))
@property
def leds(self):
return {_.led: _ for _ in self.led_configs}
[docs] def set_led(
self,
led_id,
color1,
color_mode=led.ColorMode.COLOR1,
led_mode=led.LEDMode.CONSTANT,
color2="#000",
):
""" Set the configuration for a specific LED """
configs = self.leds
configs[led_id] = led.LEDConfig(
led_id,
color_mode=color_mode,
led_mode=led_mode,
color1=color1,
color2=color2,
)
self.set_leds(configs.values())
[docs] def update_leds(self, led_configs):
""" Update the given LED configurations without overwriting other set LED configurations """
upcfgs = self.leds
upcfgs.update({_.led: _ for _ in led_configs})
self.set_leds(upcfgs.values())
[docs] def set_leds(self, led_configs):
""" Clear and set new LED configurations """
_open = not self.device.is_opened()
try:
if _open:
self.device.open()
led.set_leds(self.device, led_configs)
finally:
if _open:
self.device.close()
@property
def led_configs(self):
_open = not self.device.is_opened()
try:
if _open:
self.device.open()
return led.get_led_configs(self.device)
finally:
if _open:
self.device.close()