seat: set repeat information for virtual keyboards

Fixes: #2513
This commit is contained in:
Consolatis 2025-01-10 11:55:45 +01:00 committed by Hiroaki Yamamoto
parent 0627190060
commit 138a514c90

View file

@ -305,14 +305,14 @@ new_pointer(struct seat *seat, struct wlr_input_device *dev)
} }
static struct input * static struct input *
new_keyboard(struct seat *seat, struct wlr_input_device *device, bool virtual) new_keyboard(struct seat *seat, struct wlr_input_device *device, bool is_virtual)
{ {
struct wlr_keyboard *kb = wlr_keyboard_from_input_device(device); struct wlr_keyboard *kb = wlr_keyboard_from_input_device(device);
struct keyboard *keyboard = znew(*keyboard); struct keyboard *keyboard = znew(*keyboard);
keyboard->base.wlr_input_device = device; keyboard->base.wlr_input_device = device;
keyboard->wlr_keyboard = kb; keyboard->wlr_keyboard = kb;
keyboard->is_virtual = virtual; keyboard->is_virtual = is_virtual;
if (!seat->keyboard_group->keyboard.keymap) { if (!seat->keyboard_group->keyboard.keymap) {
wlr_log(WLR_ERROR, "cannot set keymap"); wlr_log(WLR_ERROR, "cannot set keymap");
@ -329,7 +329,10 @@ new_keyboard(struct seat *seat, struct wlr_input_device *device, bool virtual)
*/ */
keyboard_set_numlock(kb); keyboard_set_numlock(kb);
if (!virtual) { if (is_virtual) {
/* key repeat information is usually synchronized via the keyboard group */
wlr_keyboard_set_repeat_info(kb, rc.repeat_rate, rc.repeat_delay);
} else {
wlr_keyboard_group_add_keyboard(seat->keyboard_group, kb); wlr_keyboard_group_add_keyboard(seat->keyboard_group, kb);
} }