mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-29 00:51:53 +08:00
otg keyboard leds
This commit is contained in:
@@ -65,7 +65,12 @@ class _KeyEvent(BaseEvent):
|
||||
# =====
|
||||
class KeyboardProcess(BaseDeviceProcess):
|
||||
def __init__(self, **kwargs: Any) -> None:
|
||||
super().__init__(name="keyboard", **kwargs)
|
||||
super().__init__(
|
||||
name="keyboard",
|
||||
read_size=1,
|
||||
initial_state={"leds": {"caps": False, "scroll": False, "num": False}},
|
||||
**kwargs,
|
||||
)
|
||||
|
||||
self.__pressed_modifiers: Set[keymap.OtgKey] = set()
|
||||
self.__pressed_keys: List[Optional[keymap.OtgKey]] = [None] * 6
|
||||
@@ -90,6 +95,17 @@ class KeyboardProcess(BaseDeviceProcess):
|
||||
|
||||
# =====
|
||||
|
||||
def _process_read_report(self, report: bytes) -> None:
|
||||
# https://wiki.osdev.org/USB_Human_Interface_Devices#LED_lamps
|
||||
assert len(report) == 1, report
|
||||
self._update_state("leds", {
|
||||
"caps": bool(report[0] & 2),
|
||||
"scroll": bool(report[0] & 4),
|
||||
"num": bool(report[0] & 1),
|
||||
})
|
||||
|
||||
# =====
|
||||
|
||||
def _process_event(self, event: BaseEvent) -> None:
|
||||
if isinstance(event, _ClearEvent):
|
||||
self.__process_clear_event()
|
||||
|
||||
Reference in New Issue
Block a user