76 lines
1.9 KiB
Diff
76 lines
1.9 KiB
Diff
|
Patch from Matthias Goebl <oe@m.goebl.net>
|
||
|
Added via OE bugtracker: bug #478
|
||
|
|
||
|
Upstream-Status: Pending
|
||
|
|
||
|
--- console-tools-0.3.2/kbdtools/kbd_mode.c.orig
|
||
|
+++ console-tools-0.3.2/kbdtools/kbd_mode.c
|
||
|
@@ -29,11 +29,16 @@
|
||
|
OPT("-u --unicode ", _("UTF-8 mode (UNICODE)"));
|
||
|
OPT("-s --scancode ", _("scancode mode (RAW)"));
|
||
|
OPT(" --mode={8bit,keycode,unicode,scancode} ", _("set mode"));
|
||
|
+ OPT("-r --rate=RATE ", _("set repeat rate (default: 33)"));
|
||
|
+ OPT("-d --delay=DELAY ", _("set repeat delay (default: 250)"));
|
||
|
|
||
|
OPT("-h --help ", HELPDESC);
|
||
|
OPT("-V --version ", VERSIONDESC);
|
||
|
}
|
||
|
|
||
|
+int rate=-1;
|
||
|
+int delay=-1;
|
||
|
+
|
||
|
static int parse_cmdline (int argc, char *argv[])
|
||
|
{
|
||
|
int mode = -1;
|
||
|
@@ -46,11 +51,13 @@
|
||
|
{ "mode" , required_argument, NULL, 'm' },
|
||
|
{ "scancode" , no_argument, NULL, 's' },
|
||
|
{ "unicode" , no_argument, NULL, 'u' },
|
||
|
+ { "rate" , required_argument, NULL, 'r' },
|
||
|
+ { "delay" , required_argument, NULL, 'd' },
|
||
|
{ NULL, 0, NULL, 0 }
|
||
|
};
|
||
|
int c;
|
||
|
|
||
|
- while ( (c = getopt_long (argc, argv, "Vhaksu", long_opts, NULL)) != EOF)
|
||
|
+ while ( (c = getopt_long (argc, argv, "Vhaksur:d:", long_opts, NULL)) != EOF)
|
||
|
switch (c) {
|
||
|
case 'h':
|
||
|
usage ();
|
||
|
@@ -58,6 +65,14 @@
|
||
|
case 'V':
|
||
|
version ();
|
||
|
exit(0);
|
||
|
+ case 'r':
|
||
|
+ rate = atoi(optarg);
|
||
|
+ mode = -2;
|
||
|
+ break;
|
||
|
+ case 'd':
|
||
|
+ delay = atoi(optarg);
|
||
|
+ mode = -2;
|
||
|
+ break;
|
||
|
case 'a':
|
||
|
mode = K_XLATE;
|
||
|
break;
|
||
|
@@ -129,6 +144,20 @@
|
||
|
exit(0);
|
||
|
}
|
||
|
|
||
|
+ if ( rate != -1 || delay != -1 )
|
||
|
+ {
|
||
|
+ struct kbd_repeat kbd_rep;
|
||
|
+ kbd_rep.delay = delay;
|
||
|
+ kbd_rep.period = rate;
|
||
|
+ if (ioctl(fd, KDKBDREP, &kbd_rep))
|
||
|
+ {
|
||
|
+ fprintf(stderr, progname);
|
||
|
+ perror(_(": error setting keyboard repeat mode\n"));
|
||
|
+ exit(1);
|
||
|
+ }
|
||
|
+ if(mode==-2) exit(0);
|
||
|
+ }
|
||
|
+
|
||
|
if (ioctl(fd, KDSKBMODE, mode))
|
||
|
{
|
||
|
fprintf(stderr, progname);
|