summaryrefslogtreecommitdiff
path: root/repeat-xi2.c
blob: 47c69b1e7c4b5ee28a9aa12ecb9cc5ab74fbef8a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
#include <stdlib.h>
#include <X11/X.h>
#include <X11/XKBlib.h>

int
main(int argc, char *argv[])
{
	Display *dpy;
	XkbDescPtr xkb;
	unsigned int id, delay, interval;

	if (argc < 4)
		exit(1);

	id = atoi(argv[1]);
	delay = atoi(argv[2]);
	interval = atoi(argv[3]);

	dpy = XOpenDisplay(NULL);
	if (!dpy)
		exit(2);

	xkb = XkbGetKeyboard(dpy, XkbControlsMask, id);
	if (!xkb)
		exit(3);

	/* With X.Org-Server 1.13.1 on Gentoo ctrls is unexpectedly NULL. */
	if (!xkb->ctrls)
		XkbGetControls(dpy, XkbRepeatKeysMask, xkb);

	xkb->ctrls->repeat_delay = delay;
	xkb->ctrls->repeat_interval = 1000 / interval;

	XkbSetControls(dpy, XkbRepeatKeysMask, xkb);
	XkbFreeKeyboard(xkb, 0, True);

	XCloseDisplay(dpy);

	return 0;
}