Re: set keyboard repeat rate: EVIOCGREP and EVIOCSREP

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Fri, Apr 08, 2005 at 03:21:39PM -0700, Vernon Mauery wrote:
> Vernon Mauery wrote:
> > I was wondering if anyone knows how to change the repeatrate on a
> > USB keyboard with a 2.4 kernel.  The system is a legacy free system
> > (no ps2 port), so kbdrate does nothing.  With evdev loaded, the
> > keyboard and mouse (both USB devices) get registered with the event
> > system and show up as /dev/input/event[01].  I know the event
> > subsystem does software key repeating and was wondering how to
> > change that.

A recent version of kbdrate on a 2.6 kernel should use the 'KDKBDREP'
ioctl(), which should set the repeat rate on all keyboards attached to
the system (both on PS/2 and USB devices, and any others).

It achieves this by sending EV_REP events to all attached keyboard-type
devices.

> > I poked around and found the EVIOCGREP and EVIOCSREP ioctls, but
> > when I tried using them, the ioctl returned invalid parameter.  Upon
> > further investigation, I found that the ioctl definitions (located
> > in the linux/input.h header file) are not used in kernel land.  That
> > would explain why it failed, but that just means I ran into a dead
> > end.  Were those definitions legacy code from 2.2 or is it something
> > that never got implemented, only defined?  I also noticed that the
> > defines are gone in 2.6.  So how _does_ one go about changing the
> > repeat rate on a keyboard input device in 2.4?

I don't think it's possible with USB keyboards on 2.4, the keybdev
module doesn't support repeat rate setting.

> Just in case anyone cares, I spent some more time poking around in the
> event code and it looks like the way to do this seems to be exposed by
> the evdev module. If you write to /dev/input/eventX an input_event
> that contains an event of type EV_REP with either REP_DELAY or
> REP_PERIOD as the code and a value in milliseconds, I think it is
> supposed to set up the software auto repeat for you. But with the
> atkbd driver, you have to turn off hardware auto repeat for this to
> take effect.  

By sending the events, the driver is asked to change the delay/repeat
rate. It should work in the software autorepeat and in the hardware
autorepeat cases.

-- 
Vojtech Pavlik
SuSE Labs, SuSE CR
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux