feat: ipc add keyboard layout message

This commit is contained in:
DreamMaoMao 2025-08-22 19:58:42 +08:00
parent 51ba025716
commit 11dceb785c
2 changed files with 19 additions and 1 deletions

View file

@ -227,6 +227,13 @@ I would probably just submit raphi's patchset but I don't think that would be po
<arg name="last_layer" type="string" summary="last map layer."/>
</event>
<event name="kb_layout" since="2">
<description summary="current keyboard layout.">
current keyboard layout.
</description>
<arg name="kb_layout" type="string" summary="current keyboard layout."/>
</event>
</interface>
</protocol>

View file

@ -110,8 +110,9 @@ void dwl_ipc_output_printstatus(Monitor *monitor) {
void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) {
Monitor *monitor = ipc_output->mon;
Client *c, *focused;
struct wlr_keyboard *keyboard;
int tagmask, state, numclients, focused_client, tag;
const char *title, *appid, *symbol;
const char *title, *appid, *symbol, *kb_layout;
focused = focustop(monitor);
zdwl_ipc_output_v2_send_active(ipc_output->resource, monitor == selmon);
@ -139,6 +140,10 @@ void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) {
appid = focused ? client_get_appid(focused) : "";
symbol = monitor->pertag->ltidxs[monitor->pertag->curtag]->symbol;
keyboard = &kb_group->wlr_group->keyboard;
kb_layout =
get_layout_abbr(xkb_keymap_layout_get_name(keyboard->keymap, 0));
zdwl_ipc_output_v2_send_layout(
ipc_output->resource,
monitor->pertag->ltidxs[monitor->pertag->curtag] - layouts);
@ -180,6 +185,12 @@ void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) {
zdwl_ipc_output_v2_send_last_layer(ipc_output->resource,
monitor->last_surface_ws_name);
}
if (wl_resource_get_version(ipc_output->resource) >=
ZDWL_IPC_OUTPUT_V2_KB_LAYOUT_SINCE_VERSION) {
zdwl_ipc_output_v2_send_kb_layout(ipc_output->resource, kb_layout);
}
zdwl_ipc_output_v2_send_frame(ipc_output->resource);
}