/** * @file ipc/Client.h * @author apio (cloudapio.eu) * @brief IPC message definitions for UI messages sent to the client. * * @copyright Copyright (c) 2023, the Luna authors. * */ #pragma once #include #include #include #include namespace ui { enum ClientMessages : u8 { IPC_ENUM_CLIENT(ui), CREATE_WINDOW_RESPONSE_ID, MOUSE_EVENT_REQUEST_ID, MOUSE_LEAVE_REQUEST_ID, GET_SCREEN_RECT_RESPONSE_ID, KEY_EVENT_REQUEST_ID, }; struct CreateWindowResponse { static constexpr u8 ID = CREATE_WINDOW_RESPONSE_ID; int window; IPC_STRING(shm_path); }; struct MouseEventRequest { static constexpr u8 ID = MOUSE_EVENT_REQUEST_ID; int window; Point position; int buttons; }; struct MouseLeaveRequest { static constexpr u8 ID = MOUSE_LEAVE_REQUEST_ID; int window; }; struct GetScreenRectResponse { static constexpr u8 ID = GET_SCREEN_RECT_RESPONSE_ID; Rect rect; }; struct KeyEventRequest { static constexpr u8 ID = KEY_EVENT_REQUEST_ID; int window; bool pressed; char letter; char key; moon::KeyCode code; int modifiers; }; }