Re: set keyboard repeat rate: EVIOCGREP and EVIOCSREP
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/
Re: set keyboard repeat rate: EVIOCGREP and EVIOCSREP
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. > > 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? > 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. --Vernon - 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/
set keyboard repeat rate: EVIOCGREP and EVIOCSREP
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. 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? Thanks in advance for your help. --Vernon Mauery - 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/