stash more lighting

This commit is contained in:
zvecr
2022-09-29 23:44:19 +01:00
parent 1dbb4c0f96
commit f81328068e
11 changed files with 708 additions and 8 deletions
+25 -6
View File
@@ -7,7 +7,7 @@ from milc import cli
from qmk.keyboard import render_layout
from qmk.xap.common import get_xap_keycodes
from xap_client import XAPClient, XAPEventType, XAPSecureStatus, XAPConfigRgblight
from xap_client import XAPClient, XAPEventType, XAPSecureStatus, XAPConfigRgblight, XAPConfigBacklight, XAPConfigRgbMatrix, XAPRoutes
KEYCODE_MAP = get_xap_keycodes('latest')
@@ -188,12 +188,31 @@ class XAPShell(cmd.Cmd):
return False
def do_dump(self, line):
ret = self.device.transaction(b'\x06\x03\x03')
ret = XAPConfigRgblight.from_bytes(ret)
print(ret)
caps = self.device.int_transaction(XAPRoutes.LIGHTING_CAPABILITIES_QUERY)
ret = self.device.int_transaction(b'\x06\x03\x02')
print(f'XAPEffectRgblight(enabled={bin(ret)})')
if caps & (1 << XAPRoutes.LIGHTING_BACKLIGHT[-1]):
ret = self.device.transaction(XAPRoutes.LIGHTING_BACKLIGHT_GET_CONFIG)
ret = XAPConfigBacklight.from_bytes(ret)
print(ret)
ret = self.device.int_transaction(XAPRoutes.LIGHTING_BACKLIGHT_GET_ENABLED_EFFECTS)
print(f'XAPEffectBacklight(enabled={bin(ret)})')
if caps & (1 << XAPRoutes.LIGHTING_RGBLIGHT[-1]):
ret = self.device.transaction(XAPRoutes.LIGHTING_RGBLIGHT_GET_CONFIG)
ret = XAPConfigRgblight.from_bytes(ret)
print(ret)
ret = self.device.int_transaction(XAPRoutes.LIGHTING_RGBLIGHT_GET_ENABLED_EFFECTS)
print(f'XAPEffectRgblight(enabled={bin(ret)})')
if caps & (1 << XAPRoutes.LIGHTING_RGB_MATRIX[-1]):
ret = self.device.transaction(XAPRoutes.LIGHTING_RGB_MATRIX_GET_CONFIG)
ret = XAPConfigRgbMatrix.from_bytes(ret)
print(ret)
ret = self.device.int_transaction(XAPRoutes.LIGHTING_RGB_MATRIX_GET_ENABLED_EFFECTS)
print(f'XAPEffectRgbMatrix(enabled={bin(ret)})')
@cli.argument('-v', '--verbose', arg_only=True, action='store_true', help='Turns on verbose output.')
+8
View File
@@ -61,7 +61,15 @@ class XAPRoutes():
REMAPPING_SET_ENCODER_KEYCODE = b'\x05\x04'
# LIGHTING
LIGHTING_CAPABILITIES_QUERY = b'\x06\x01'
LIGHTING_BACKLIGHT = b'\x06\x02'
LIGHTING_BACKLIGHT_CAPABILITIES_QUERY = b'\x06\x02\x01'
LIGHTING_BACKLIGHT_GET_ENABLED_EFFECTS = b'\x06\x02\x02'
LIGHTING_BACKLIGHT_GET_CONFIG = b'\x06\x02\x03'
LIGHTING_RGBLIGHT = b'\x06\x03'
LIGHTING_RGBLIGHT_CAPABILITIES_QUERY = b'\x06\x03\x01'
LIGHTING_RGBLIGHT_GET_ENABLED_EFFECTS = b'\x06\x03\x02'
LIGHTING_RGBLIGHT_GET_CONFIG = b'\x06\x03\x03'
LIGHTING_RGB_MATRIX = b'\x06\x04'
LIGHTING_RGB_MATRIX_CAPABILITIES_QUERY = b'\x06\x04\x01'
LIGHTING_RGB_MATRIX_GET_ENABLED_EFFECTS = b'\x06\x04\x02'
LIGHTING_RGB_MATRIX_GET_CONFIG = b'\x06\x04\x03'
+30
View File
@@ -59,6 +59,20 @@ class XAPResponse(namedtuple('XAPResponse', 'token flags length data')):
return self.fmt.pack(*list(self))
class XAPConfigBacklight(namedtuple('XAPConfigBacklight', 'enable mode val')):
fmt = Struct('<BBB')
def __new__(cls, *args):
return super().__new__(cls, *args)
@classmethod
def from_bytes(cls, data):
return cls._make(cls.fmt.unpack(data))
def to_bytes(self):
return self.fmt.pack(*list(self))
class XAPConfigRgblight(namedtuple('XAPConfigRgblight', 'enable mode hue sat val speed')):
fmt = Struct('<BBBBBB')
@@ -73,6 +87,20 @@ class XAPConfigRgblight(namedtuple('XAPConfigRgblight', 'enable mode hue sat val
return self.fmt.pack(*list(self))
class XAPConfigRgbMatrix(namedtuple('XAPConfigRgbMatrix', 'enable mode hue sat val speed flags')):
fmt = Struct('<BBBBBBB')
def __new__(cls, *args):
return super().__new__(cls, *args)
@classmethod
def from_bytes(cls, data):
return cls._make(cls.fmt.unpack(data))
def to_bytes(self):
return self.fmt.pack(*list(self))
# Spec structs
# TODO: gen outbound object for board_identifiers
# TODO: gen inbound object for get_keymap_keycode
@@ -80,6 +108,8 @@ class XAPConfigRgblight(namedtuple('XAPConfigRgblight', 'enable mode hue sat val
# TODO: gen inbound object for set_keymap_keycode
# TODO: gen inbound object for set_encoder_keycode
# TODO: gen outbound object for get_config
# TODO: gen outbound object for get_config
# TODO: gen outbound object for get_config
class XAPSecureStatus(IntEnum):