mirror of
https://github.com/DreamMaoMao/maomaowm.git
synced 2026-03-30 11:11:14 -04:00
get kb meesage by ipc
This commit is contained in:
parent
526d71c685
commit
8a1f3597e1
4 changed files with 40 additions and 6 deletions
12
mmsg/mmsg.c
12
mmsg/mmsg.c
|
|
@ -265,6 +265,17 @@ static void dwl_ipc_output_kb_layout(void *data,
|
|||
printf("kb_layout %s\n", kb_layout);
|
||||
}
|
||||
|
||||
static void dwl_ipc_output_active_kb(void *data,
|
||||
struct zdwl_ipc_output_v2 *dwl_ipc_output,
|
||||
const char *active_kb) {
|
||||
if (!kflag)
|
||||
return;
|
||||
char *output_name = data;
|
||||
if (output_name)
|
||||
printf("%s ", output_name);
|
||||
printf("active_kb %s\n", active_kb);
|
||||
}
|
||||
|
||||
static void
|
||||
dwl_ipc_output_scalefactor(void *data,
|
||||
struct zdwl_ipc_output_v2 *dwl_ipc_output,
|
||||
|
|
@ -425,6 +436,7 @@ static const struct zdwl_ipc_output_v2_listener dwl_ipc_output_listener = {
|
|||
.height = dwl_ipc_output_height,
|
||||
.last_layer = dwl_ipc_output_last_layer,
|
||||
.kb_layout = dwl_ipc_output_kb_layout,
|
||||
.active_kb = dwl_ipc_output_active_kb,
|
||||
.keymode = dwl_ipc_output_keymode,
|
||||
.scalefactor = dwl_ipc_output_scalefactor,
|
||||
.frame = dwl_ipc_output_frame,
|
||||
|
|
|
|||
|
|
@ -234,6 +234,13 @@ I would probably just submit raphi's patchset but I don't think that would be po
|
|||
<arg name="kb_layout" type="string" summary="current keyboard layout."/>
|
||||
</event>
|
||||
|
||||
<event name="active_kb" since="2">
|
||||
<description summary="current active keyboard.">
|
||||
current active keyboard.
|
||||
</description>
|
||||
<arg name="active_kb" type="string" summary="current active keyboard."/>
|
||||
</event>
|
||||
|
||||
<event name="keymode" since="2">
|
||||
<description summary="current keybind mode.">
|
||||
current keybind mode.
|
||||
|
|
|
|||
|
|
@ -114,7 +114,9 @@ void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) {
|
|||
xkb_layout_index_t current;
|
||||
int32_t tagmask, state, numclients, focused_client, tag;
|
||||
const char *title, *appid, *symbol;
|
||||
InputDevice *active_kb;
|
||||
char kb_layout[32];
|
||||
char active_kb_name[256];
|
||||
focused = focustop(monitor);
|
||||
zdwl_ipc_output_v2_send_active(ipc_output->resource, monitor == selmon);
|
||||
|
||||
|
|
@ -147,12 +149,21 @@ void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) {
|
|||
symbol = monitor->pertag->ltidxs[monitor->pertag->curtag]->symbol;
|
||||
}
|
||||
|
||||
keyboard = &kb_group->wlr_group->keyboard;
|
||||
active_kb = get_active_keyboard_device();
|
||||
if(active_kb) {
|
||||
sprintf(active_kb_name, "vendor:%d,product:%d,name:%s", active_kb->vendor, active_kb->product, active_kb->name);
|
||||
} else {
|
||||
sprintf(active_kb_name, "-1 -1 unknown");
|
||||
}
|
||||
|
||||
|
||||
keyboard = active_kb ? (struct wlr_keyboard*)active_kb->device_data: &kb_group->wlr_group->keyboard;
|
||||
current = xkb_state_serialize_layout(keyboard->xkb_state,
|
||||
XKB_STATE_LAYOUT_EFFECTIVE);
|
||||
get_layout_abbr(kb_layout,
|
||||
xkb_keymap_layout_get_name(keyboard->keymap, current));
|
||||
|
||||
|
||||
zdwl_ipc_output_v2_send_layout(
|
||||
ipc_output->resource,
|
||||
monitor->pertag->ltidxs[monitor->pertag->curtag] - layouts);
|
||||
|
|
@ -210,6 +221,10 @@ void dwl_ipc_output_printstatus_to(DwlIpcOutput *ipc_output) {
|
|||
zdwl_ipc_output_v2_send_scalefactor(ipc_output->resource,
|
||||
monitor->wlr_output->scale * 100);
|
||||
}
|
||||
if (wl_resource_get_version(ipc_output->resource) >=
|
||||
ZDWL_IPC_OUTPUT_V2_ACTIVE_KB_SINCE_VERSION) {
|
||||
zdwl_ipc_output_v2_send_active_kb(ipc_output->resource, active_kb_name);
|
||||
}
|
||||
|
||||
zdwl_ipc_output_v2_send_frame(ipc_output->resource);
|
||||
}
|
||||
|
|
|
|||
10
src/mango.c
10
src/mango.c
|
|
@ -786,6 +786,7 @@ static Client *get_scroll_stack_head(Client *c);
|
|||
static bool client_only_in_one_tag(Client *c);
|
||||
static Client *get_focused_stack_client(Client *sc);
|
||||
static bool client_is_in_same_stack(Client *sc, Client *tc, Client *fc);
|
||||
static InputDevice * get_active_keyboard_device(void);
|
||||
|
||||
#include "data/static_keymap.h"
|
||||
#include "dispatch/bind_declare.h"
|
||||
|
|
@ -2577,12 +2578,11 @@ void createkeyboard(struct wlr_keyboard *keyboard) {
|
|||
int32_t vendor = libinput_device_get_id_vendor(device);
|
||||
int32_t product = libinput_device_get_id_product(device);
|
||||
const char *name = libinput_device_get_name(device);
|
||||
name = name ? name : "unknown";
|
||||
|
||||
if (name) {
|
||||
input_dev->vendor = vendor;
|
||||
input_dev->product = product;
|
||||
input_dev->name = strdup(name);
|
||||
}
|
||||
input_dev->vendor = vendor;
|
||||
input_dev->product = product;
|
||||
input_dev->name = strdup(name);
|
||||
|
||||
input_dev->destroy_listener.notify = destroyinputdevice;
|
||||
wl_signal_add(&keyboard->base.events.destroy,
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue