diff options
Diffstat (limited to 'src/evdev_key.c')
-rw-r--r-- | src/evdev_key.c | 16 |
1 files changed, 15 insertions, 1 deletions
diff --git a/src/evdev_key.c b/src/evdev_key.c index f448e35..b806d11 100644 --- a/src/evdev_key.c +++ b/src/evdev_key.c @@ -269,8 +269,22 @@ EvdevKbdCtrl(DeviceIntPtr device, KeybdCtrl *ctrl) ev[i].type = EV_LED; ev[i].code = bits[i].code; ev[i].value = (ctrl->leds & bits[i].xbit) > 0; + } + write(pInfo->fd, ev, sizeof(ev)); + + if (device->key && device->key->xkbInfo && device->key->xkbInfo->desc + && device->key->xkbInfo->desc->ctrls) { + XkbControlsRec *ctrls = device->key->xkbInfo->desc->ctrls; + + ev[0].type = EV_REP; + ev[0].code = REP_DELAY; + ev[0].value = ctrls->repeat_delay; + + ev[1].type = EV_REP; + ev[1].code = REP_PERIOD; + ev[1].value = ctrls->repeat_interval; - write(pInfo->fd, ev, sizeof ev); + write(pInfo->fd, ev, sizeof(ev[0]) * 2); } } |