Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 7611392f authored by Hans de Goede's avatar Hans de Goede Committed by Dmitry Torokhov
Browse files

Input: add INPUT_PROP_POINTING_STICK property



It is useful for userspace to know that there not dealing with a regular
mouse but rather with a pointing stick (e.g. a trackpoint) so that
userspace can e.g. automatically enable middle button scrollwheel
emulation.

It is impossible to tell the difference from the evdev info without
resorting to putting a list of device / driver names in userspace, this is
undesirable.

Add a property which allows userspace to see if a device is a pointing
stick, and set it on all the pointing stick drivers.

Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Acked-by: default avatarBenjamin Tissoires <benjamin.tissoires@redhat.com>
Acked-by: default avatarPeter Hutterer <peter.hutterer@who-t.net>
Signed-off-by: default avatarDmitry Torokhov <dmitry.torokhov@gmail.com>
parent 271329b3
Loading
Loading
Loading
Loading
+3 −0
Original line number Original line Diff line number Diff line
@@ -2373,6 +2373,9 @@ int alps_init(struct psmouse *psmouse)
	dev2->keybit[BIT_WORD(BTN_LEFT)] =
	dev2->keybit[BIT_WORD(BTN_LEFT)] =
		BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_MIDDLE) | BIT_MASK(BTN_RIGHT);
		BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_MIDDLE) | BIT_MASK(BTN_RIGHT);


	if (priv->flags & ALPS_DUALPOINT)
		__set_bit(INPUT_PROP_POINTING_STICK, dev2->propbit);

	if (input_register_device(priv->dev2))
	if (input_register_device(priv->dev2))
		goto init_fail;
		goto init_fail;


+3 −0
Original line number Original line Diff line number Diff line
@@ -1614,6 +1614,9 @@ int elantech_init(struct psmouse *psmouse)
		tp_dev->keybit[BIT_WORD(BTN_LEFT)] =
		tp_dev->keybit[BIT_WORD(BTN_LEFT)] =
			BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_MIDDLE) |
			BIT_MASK(BTN_LEFT) | BIT_MASK(BTN_MIDDLE) |
			BIT_MASK(BTN_RIGHT);
			BIT_MASK(BTN_RIGHT);

		__set_bit(INPUT_PROP_POINTING_STICK, tp_dev->propbit);

		error = input_register_device(etd->tp_dev);
		error = input_register_device(etd->tp_dev);
		if (error < 0)
		if (error < 0)
			goto init_fail_tp_reg;
			goto init_fail_tp_reg;
+1 −0
Original line number Original line Diff line number Diff line
@@ -387,6 +387,7 @@ static int synusb_probe(struct usb_interface *intf,
		__set_bit(EV_REL, input_dev->evbit);
		__set_bit(EV_REL, input_dev->evbit);
		__set_bit(REL_X, input_dev->relbit);
		__set_bit(REL_X, input_dev->relbit);
		__set_bit(REL_Y, input_dev->relbit);
		__set_bit(REL_Y, input_dev->relbit);
		__set_bit(INPUT_PROP_POINTING_STICK, input_dev->propbit);
		input_set_abs_params(input_dev, ABS_PRESSURE, 0, 127, 0, 0);
		input_set_abs_params(input_dev, ABS_PRESSURE, 0, 127, 0, 0);
	} else {
	} else {
		input_set_abs_params(input_dev, ABS_X,
		input_set_abs_params(input_dev, ABS_X,
+2 −0
Original line number Original line Diff line number Diff line
@@ -393,6 +393,8 @@ int trackpoint_detect(struct psmouse *psmouse, bool set_properties)
	if ((button_info & 0x0f) >= 3)
	if ((button_info & 0x0f) >= 3)
		__set_bit(BTN_MIDDLE, psmouse->dev->keybit);
		__set_bit(BTN_MIDDLE, psmouse->dev->keybit);


	__set_bit(INPUT_PROP_POINTING_STICK, psmouse->dev->propbit);

	trackpoint_defaults(psmouse->private);
	trackpoint_defaults(psmouse->private);


	error = trackpoint_power_on_reset(&psmouse->ps2dev);
	error = trackpoint_power_on_reset(&psmouse->ps2dev);
+1 −0
Original line number Original line Diff line number Diff line
@@ -165,6 +165,7 @@ struct input_keymap_entry {
#define INPUT_PROP_BUTTONPAD		0x02	/* has button(s) under pad */
#define INPUT_PROP_BUTTONPAD		0x02	/* has button(s) under pad */
#define INPUT_PROP_SEMI_MT		0x03	/* touch rectangle only */
#define INPUT_PROP_SEMI_MT		0x03	/* touch rectangle only */
#define INPUT_PROP_TOPBUTTONPAD		0x04	/* softbuttons at top of pad */
#define INPUT_PROP_TOPBUTTONPAD		0x04	/* softbuttons at top of pad */
#define INPUT_PROP_POINTING_STICK	0x05	/* is a pointing stick */


#define INPUT_PROP_MAX			0x1f
#define INPUT_PROP_MAX			0x1f
#define INPUT_PROP_CNT			(INPUT_PROP_MAX + 1)
#define INPUT_PROP_CNT			(INPUT_PROP_MAX + 1)