mirror of
https://github.com/mofeng-git/One-KVM.git
synced 2026-01-29 00:51:53 +08:00
pikvm/pikvm#231, pikvm/pikvm#279: pak options
This commit is contained in:
@@ -108,19 +108,22 @@ class HidApi:
|
||||
|
||||
# =====
|
||||
|
||||
@exposed_http("GET", "/hid/keymaps")
|
||||
async def __keymaps_handler(self, _: Request) -> Response:
|
||||
def get_keymaps(self) -> Dict: # Ugly hack to generate hid_keymaps_state (see server.py)
|
||||
keymaps: Set[str] = set()
|
||||
for keymap_name in os.listdir(self.__keymaps_dir_path):
|
||||
path = os.path.join(self.__keymaps_dir_path, keymap_name)
|
||||
if os.access(path, os.R_OK) and stat.S_ISREG(os.stat(path).st_mode):
|
||||
keymaps.add(keymap_name)
|
||||
return make_json_response({
|
||||
return {
|
||||
"keymaps": {
|
||||
"default": self.__default_keymap_name,
|
||||
"available": sorted(keymaps),
|
||||
},
|
||||
})
|
||||
}
|
||||
|
||||
@exposed_http("GET", "/hid/keymaps")
|
||||
async def __keymaps_handler(self, _: Request) -> Response:
|
||||
return make_json_response(self.get_keymaps())
|
||||
|
||||
@exposed_http("POST", "/hid/print")
|
||||
async def __print_handler(self, request: Request) -> Response:
|
||||
|
||||
@@ -195,6 +195,7 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
|
||||
],
|
||||
]
|
||||
|
||||
self.__hid_api = HidApi(hid, keymap_path, mouse_x_range, mouse_y_range) # Ugly hack to get keymaps state
|
||||
self.__apis: List[object] = [
|
||||
self,
|
||||
AuthApi(auth_manager),
|
||||
@@ -202,7 +203,7 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
|
||||
LogApi(log_reader),
|
||||
WolApi(wol),
|
||||
UserGpioApi(user_gpio),
|
||||
HidApi(hid, keymap_path, mouse_x_range, mouse_y_range),
|
||||
self.__hid_api,
|
||||
AtxApi(atx),
|
||||
MsdApi(msd, sync_chunk_size),
|
||||
StreamerApi(streamer),
|
||||
@@ -263,6 +264,7 @@ class KvmdServer(HttpServer): # pylint: disable=too-many-arguments,too-many-ins
|
||||
await self.__register_ws_client(client)
|
||||
try:
|
||||
await self.__send_event(client.ws, "gpio_model_state", await self.__user_gpio.get_model())
|
||||
await self.__send_event(client.ws, "hid_keymaps_state", self.__hid_api.get_keymaps())
|
||||
await asyncio.gather(*[
|
||||
self.__send_event(client.ws, component.event_type, await component.get_state())
|
||||
for component in self.__components
|
||||
|
||||
Reference in New Issue
Block a user