Re: [linux-usb-devel] detecting when keys are being pressed on a keyboard

"Dmitry Torokhov" <[email protected]>
Newsgroups gmane.linux.kernel.input,gmane.linux.usb.devel
Message-ID <[email protected]>
Hi Oliver,

On 9/24/07, Oliver Neukum <[email protected]> wrote:
> Am Freitag 21 September 2007 schrieb Jiri Kosina:
> > On Fri, 21 Sep 2007, Oliver Neukum wrote:
> >
> > > I got the strange case of a keyboard going into autosuspend while a key
> > > was being pressed. The key release never arrived and I had to unplug the
> > > keyboard to get the key unstuck. Is there a clean way to learn from
> > > hid-core.c if a keyboard has keys pressed?
> >
> > Hi Oliver,
> >
> > HID doesn't keep any permanent state by itself. If you want to know
> > whether a given key is currently pressed or not, you'd have to inspect the
> > bitfields inside input_dev*, I am afraid.
>
> I see no way to do this without a race condition. The field isn't locked
> as far as I can tell.

You can take input_dev->event_lock to stop event from propagating
through input core while you are evaluating the bits. Input lcoking
changes are im -mm and will be merged into 2.6.24.

> Secondly, what is to happen in case of a system wide suspend? Will
> the system wake up thinking that the key is still pressed?
>

For now it will but it is about to change. Input device will send
'release' events for all pressed keys from their suspend method.

-- 
Dmitry
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.