[PATCH] Policy: handle `input.touchpad' explicitly

Peter Hutterer peter.hutterer at who-t.net
Wed Jan 6 22:02:07 PST 2010


On Tue, Jan 05, 2010 at 06:53:17PM -0600, Michael Witten wrote:
> This commit essentially duplicates the policy for:
> 
>    <match key="info.capabilities" contains="input.mouse">
> 
> and then changes `input.mouse' to `input.touchpad'. This
> is necessary because in Linus Torvalds's Linux repo:
> 
>     git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux-2.6.git
> 
> the following commit:
> 
>     commit 7105d2ea73e1391b681d0e1212c42f561c64d429
>     Author: Dmitry Torokhov <dmitry.torokhov at gmail.com>
>     Date:   Fri Dec 11 23:54:54 2009 -0800
> 
>         Input: ALPS - do not set REL_X/REL_Y capabilities on the touchpad
> 
>         Relative events are only reported via secondary device therefore device
>         associated with the touchpad should not advertise these capabilities.
> 
>         Signed-off-by: Dmitry Torokhov <dtor at mail.ru>
> 
> made these few changes:
> 
>     diff --git a/drivers/input/mouse/alps.c b/drivers/input/mouse/alps.c
>     index a3f492a..b03e7e0 100644
>     --- a/drivers/input/mouse/alps.c
>     +++ b/drivers/input/mouse/alps.c
>     @@ -487,6 +487,17 @@ int alps_init(struct psmouse *psmouse)
>      	if (alps_hw_init(psmouse))
>      		goto init_fail;
> 
>     +	/*
>     +	 * Undo part of setup done for us by psmouse core since touchpad
>     +	 * is not a relative device.
>     +	 */
>     +	__clear_bit(EV_REL, dev1->evbit);
>     +	__clear_bit(REL_X, dev1->relbit);
>     +	__clear_bit(REL_Y, dev1->relbit);
>     +
>     +	/*
>     +	 * Now set up our capabilities.
>     +	 */
>      	dev1->evbit[BIT_WORD(EV_KEY)] |= BIT_MASK(EV_KEY);
>      	dev1->keybit[BIT_WORD(BTN_TOUCH)] |= BIT_MASK(BTN_TOUCH);
>      	dev1->keybit[BIT_WORD(BTN_TOOL_FINGER)] |= BIT_MASK(BTN_TOOL_FINGER);
> 
> so that HAL no longer adds:
> 
>     input.mouse
> 
> to an ALPS touchpad's:
> 
>     info.capabilities
> 
> so that HAL no longer marks the ALPS touchpad with:
> 
>     input.x11_driver = 'evdev'
> 
> because the policy file:
> 
>     fdi/policy/10osvendor/10-x11-input.fdi
> 
> doesn't define the policy for:
> 
>     <match key="info.capabilities" contains="input.touchpad">
> 
> which was previous unnecessary because everything used to
> be caught by the policy for:
> 
>     <match key="info.capabilities" contains="input.mouse">
> 
> Signed-off-by: Michael Witten <mfwitten at gmail.com>
> ---
>  fdi/policy/10osvendor/10-x11-input.fdi |    8 ++++++++
>  1 files changed, 8 insertions(+), 0 deletions(-)
> 
> diff --git a/fdi/policy/10osvendor/10-x11-input.fdi b/fdi/policy/10osvendor/10-x11-input.fdi
> index cff8fc5..8bbe263 100644
> --- a/fdi/policy/10osvendor/10-x11-input.fdi
> +++ b/fdi/policy/10osvendor/10-x11-input.fdi
> @@ -16,6 +16,14 @@
>        </match>
>      </match>
>  
> +    <match key="info.capabilities" contains="input.touchpad">
> +      <merge key="input.x11_driver" type="string">mouse</merge>
> +      <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
> +             string="Linux">
> +        <merge key="input.x11_driver" type="string">evdev</merge>
> +      </match>
> +    </match>
> +
>      <match key="info.capabilities" contains="input.tablet">
>        <match key="/org/freedesktop/Hal/devices/computer:system.kernel.name"
>               string="Linux">
> -- 
> 1.6.6.rc2

For the linux-specific part:
Reviewed-by: Peter Hutterer <peter.hutterer at who-t.net>

imho, this patch is useful even if the new change weren't in the kernel - it
ensures that the device is caught by at least one driver (if synaptics isn't
installed). 

What I am not sure about however is the non-linux part, assigning the mouse
driver to the touchpad. It's been a while since I had to deal with the
driver but I doubt that it handles the touchpad well.

Cheers,
  Peter


More information about the hal mailing list