From ebb30a554fe084a50c7281defea80c38bc1b0ddd Mon Sep 17 00:00:00 2001 From: root Date: Sat, 13 Jan 2007 07:33:49 -0500 Subject: Fix a bug where we potentially wrote garbage events when LEDs change. Support setting keyboard repeat rate/period. --- src/evdev_key.c | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) 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); } } -- cgit v1.2.3