long int GetAutoRepeatDelay() { bool successful = false; long int value = -1; unsigned int kb_delay = 0, kb_rate = 0; #ifdef XKB // Attempt to acquire the keyboard auto repeat rate using the XKB extension. if (!successful) { successful = XkbGetAutoRepeatRate(disp, XkbUseCoreKbd, &kb_delay, &kb_rate); } #endif #ifdef XF86MISC // Fallback to the XF86 Misc extension if available and other efforts failed. if (!successful) { XF86MiscKbdSettings kb_info; successful = (bool) XF86MiscGetKbdSettings(disp, &kb_info); if (successful) { kb_delay = (unsigned int) kbdinfo.delay; kb_rate = (unsigned int) kbdinfo.rate; } } #endif if (successful) { value = (long) kb_rate; } (void) kb_delay; return value; }
void set_repeatrate(int delay, double rate) { Display* dpy = qt_xdisplay(); XF86MiscKbdSettings values; XF86MiscGetKbdSettings(dpy, &values); values.delay = delay; values.rate = rate; XF86MiscSetKbdSettings(dpy, &values); return; }