Re: [PATCH 001/001] INPUT: new ioctl's to retrieve values of EV_REP and EV_SND event codes

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

 



On 4/26/06, bjdouma <[email protected]> wrote:
> On Wed, Apr 26, 2006 at 01:06:38AM -0400, Dmitry Torokhov wrote:
>
> > What do you gius think about the patch below?
>
> Works like a charm.
> Why is it though that we need EVIOCSREP, when I can set PERIOD and
> DELAY through writing a struct input_event directly to the file
> descriptor?  I've been doing that for quite some time, having
> softrepeat=1 (I need a quick keyboard, DELAY=120, PERIOD=18).
>
> One typo in the patch:
> +#define EVIOCSREP              _IOW('E', 0x03, int[2])                 /* get repeat settings */
> should be:
> +#define EVIOCSREP              _IOW('E', 0x03, int[2])                 /* set repeat settings */
>

Ah, OK, thanks, I will fix that.

> Now, the EV_SND bitmap is still broken.
> I don't think it's simply a matter of adding change_bit(code,dev->snd)
> in the EV_SND part of input.c.  During a quick test the bitmap
> became confused, after setting both bell and tone through writing
> a struct input_event to the file descriptor of the pcspkr's event
> file in /dev/input/, then setting just bell to 0.
>

Are you saying that both bits were set to 0 or that you could not hear
the tone after killing bell? If latter then it is sort of pcspkr
problem as from input core POV tone is still active.

Btw, your patch - did it resemble something like attached?

--
Dmitry
Input: make EVIOCGSND return meaningful data

Signed-off-by: Dmitry Torokhov <[email protected]>
---
 drivers/input/input.c |    3 +++
 1 file changed, 3 insertions(+)

Index: linux/drivers/input/input.c
===================================================================
--- linux.orig/drivers/input/input.c
+++ linux/drivers/input/input.c
@@ -155,6 +155,9 @@ void input_event(struct input_dev *dev, 
 			if (code > SND_MAX || !test_bit(code, dev->sndbit))
 				return;
 
+			if (!!test_bit(code, dev->snd) != !!value)
+				change_bit(code, dev->snd);
+
 			if (dev->event) dev->event(dev, type, code, value);
 
 			break;

[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