Re: [PATCH] input - input.h: Add a new switch event

From: Chris Bagwell
Date: Thu Oct 03 2013 - 22:48:53 EST


On Thu, Oct 3, 2013 at 5:31 PM, Ping Cheng <pinglinux@xxxxxxxxx> wrote:
> One of Wacom's pen and touch capable models added a switch for
> users to turn on/off touch events. We need to report the state of
> this switch to userland. But, there is no existing switch event
> defined for this purpose. Luckily enough, there is a room for a
> new switch event.

It is a switch so hard to argue against adding it this way... but I
also want to point out existing feature to consider.

Touchpads on several laptops have either a single touchpad toggle
button or a touchpad switch that serve same basic purpose. Most of
these switches are hooked up as keys and controlled by platform/x86
driver or udev.

Most platform/x86 drivers map these "keys" to KEY_TOUCHPAD_TOGGLE,
KEY_TOUCHPAD_ON, and KEY_TOUCHPAD_OFF. Since those don't make it to
X, most udev keymaps instead use f21, f22, and f23 for same purpose.

As long as this is a touch+tablet that looks like a touchpad then
using those keys will cause gnome-settings-daemon to give a nice OSD
touchpad status when switch is moved and will also enable/disable the
touchpad using "Device Enabled" X property.

On the down side, I think these keys are treated as system wide
disable of all touchpads. Having a Switch reported against the device
its controlling (as apposed to above which is reported over different
input then touchpad) would allow user land an easy way to know to only
disable the single device.

Chris

>
> Signed-off-by: Ping Cheng <pingc@xxxxxxxxx>
> ---
> include/uapi/linux/input.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/uapi/linux/input.h b/include/uapi/linux/input.h
> index d08abf9..d4097b0 100644
> --- a/include/uapi/linux/input.h
> +++ b/include/uapi/linux/input.h
> @@ -855,6 +855,7 @@ struct input_keymap_entry {
> #define SW_FRONT_PROXIMITY 0x0b /* set = front proximity sensor active */
> #define SW_ROTATE_LOCK 0x0c /* set = rotate locked/disabled */
> #define SW_LINEIN_INSERT 0x0d /* set = inserted */
> +#define SW_TOUCH_ENABLED 0x0e /* set = touch switch turned on (touch events off) */
> #define SW_MAX 0x0f
> #define SW_CNT (SW_MAX+1)
>
> --
> 1.8.1.2
>
> --
> To unsubscribe from this list: send the line "unsubscribe linux-input" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/