On 10/16/07, Jeremy Katz <katzj@redhat.com> wrote:> On Tue, 2007-10-16 at 16:12 -0400, Dmitry Torokhov wrote:> > On 10/16/07, Linus Torvalds <torvalds@linux-foundation.org> wrote:> > > On Tue, 16 Oct 2007, Matthew Garrett wrote:> > > > >> > > > > It still doesn't mean it belongs inside the stream of data for the keyboard,> > > > > maskerading as a key press.> > > >> > > > But it *is* a key press!> > >> > > To get somewhat back on track: volume and brightness (and similar - lid> > > close etc) events clearly are keypresses.> > >> > > However, I would also argue that a keypress that is acted on by the> > > firmware automatically is *different* from a keypress that hasn't been> > > acted on: one is a "key was pressed *and* hardware did something> > > automatically", and the other is just a "key was pressed" event.> > >> > > IOW, I think the thinkpad issue (and others like it) should be fixed by> > > splitting up the KEY_VOLUMEUP "key" into separate KEY_VOLUMEUP and> > > KEY_VOLUMEUP_NOTIFY key events, so that downstream user mode (and the> > > kernel itself, for that matter) can know whether it's a informational> > > message or whether it should be acted upon.> >> > I agree that these are 2 different events. My argument is that> > "VOLUME_UP_NOTIFY" event is similar to "BATTERY_OUT_NOTIFY",> > "DOCK_UNDOCK_NOTIFY", etc, etc and should be sent not through input> > layer but through a generic (yet to be designed) notification> > mechanism. Something lighter than input. Something like uevents over> > netlink.>> Except that I'm _always_ going to have to be able to take these events> as input events (because of the hardware that sends them that way), so> why not just have everything be an input event?

Not all hardware, just some.

>> The alternative is building up something new from the ground-up and then> having to do translation from input to the new event type (either in the> kernel or in userspace) which ends up meaning more work for little, if> any, gain>

No, I dont think you need to translate. You ahev 2 types of events -ones require you to take action, others don't. Ones requests (reqularkeypresses), others just notifications.

Right now we have instance where sending events through input deviceis simp-ly convenient because driver already has it. But in otherscenarios, when there is no input device in sight, input layer is notthe best transport. Input devices are quite havy (several kilobytes)you may not want to add them everywhere.