On Thu, 2007-05-31 at 13:53 +0100, Bastien Nocera wrote: > On Thu, 2007-05-31 at 13:36 +0100, Richard Hughes wrote: > > Attached patch adds a kernel thread to do polling on Toshiba hardware. > > > > Toshiba hardware is a little oddball, and does not provide ACPI events > > on some key presses, typically Fn hotkey buttons. The key interface is > > now polled, and events now matched to a list of toshiba specific > > scancodes, and are squirted to userspace using the INPUT subsystem. > > > > This means that toshiba laptops buttons "just work" without any > > userspace daemon (using uinput) such as fnfx or bodges such as using a > > userspace hal addon. Doing the polling in kernel is more efficient, and > > makes stuff just work out of the box. You can assign the keys using > > standard X keymaps, or using tools such as gnome-keybinding-properties. > > > > This is similar to other patches sent for the thinkpad_acpi driver, and > > is part of the "Unf*ck my keyboard" initiative to make multimedia keys > > just work. > > > > Changes from the first patch involve switching to a workqueue for the > > polling, not breaking the spaces in "hotkeys_via_input" and also masking > > out the fn key button up. > > A couple of things: > - use a switch statement in toshiba_deliver_button_event(), would look a > bit cleaner. Agree, done. > - make the magic number #defines Agree, done. > - not sure if it's possible, but you should disable the workqueue > altogether if nothing has the input device opened. Do we get an event when the [input]->users value changes? If not, we could do 1Hz (users > 0) checking when the input device is unclaimed, and then switch to 4Hz polling when the input device is open. > Hopefully we'll find a way to receive an interrupt, or some kind of > event when the keys are pressed in the future, and completely avoid the > polling. In the meantime, it should be minimised. Nope, impossible AFAICS. The hardware is just broken. Windows XP has an toshiba supplied daemon that polls, so I think we have to just bite the bullet. New patch attached. Richard.