mirror of
https://github.com/qmk/qmk_firmware.git
synced 2026-09-13 22:11:57 +02:00
stash more lighting
This commit is contained in:
@@ -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.')
|
||||
|
||||
@@ -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'
|
||||
|
||||
@@ -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):
|
||||
|
||||
Reference in New Issue
Block a user