lists.openwall.net   lists  /  announce  owl-users  owl-dev  john-users  john-dev  passwdqc-users  yescrypt  popa3d-users  /  oss-security  kernel-hardening  musl  sabotage  tlsify  passwords  /  crypt-dev  xvendor  /  Bugtraq  Full-Disclosure  linux-kernel  linux-netdev  linux-ext4  linux-hardening  linux-cve-announce  PHC 
Open Source and information security mailing list archives
 
Hash Suite: Windows password security audit tool. GUI, reports in PDF.
[<prev] [next>] [<thread-prev] [day] [month] [year] [list]
Message-ID: <b0cd79db-16dc-448b-9426-0cf4566be70c@tuxedocomputers.com>
Date: Fri, 7 Nov 2025 18:57:12 +0100
From: Werner Sembach <wse@...edocomputers.com>
To: Jiri Kosina <jikos@...nel.org>, Benjamin Tissoires <bentiss@...nel.org>
Cc: linux-input@...r.kernel.org, linux-kernel@...r.kernel.org
Subject: Re: [PATCH v2] hid/hid-multitouch: Keep latency normal on deactivate
 for reactivation gesture


Am 06.11.25 um 20:59 schrieb Werner Sembach:
> Uniwill devices have a built in gesture in the touchpad to de- and
> reactivate it by double taping the upper left corner. This gesture stops
> working when latency is set to high, so this patch keeps the latency on
> normal.
Just a heads up: For some reason this patch breaks the touchpad on Intel 
devices. I will look into it on monday.
>
> Signed-off-by: Werner Sembach <wse@...edocomputers.com>
> Cc: stable@...r.kernel.org
> ---
> V1->V2: Use a quirk to narrow down the devices this is applied to.
>
> I have three Uniwill devices at hand right now that have at least two
> physically different touchpads, but same Vendor + Product ID combination.
> Maybe the vendor uses this product ID for all i2c connected touchpads, or
> it is used as some kind of subvendor ID to indicate Uniwill?
>
> To be able to really narrow it down to Uniwill only devices I would need to
> check DMI strings, but then I will probably narrow it down to much as I
> only know what we at TUXEDO use there.
>
>   drivers/hid/hid-multitouch.c | 17 ++++++++++++++++-
>   1 file changed, 16 insertions(+), 1 deletion(-)
>
> diff --git a/drivers/hid/hid-multitouch.c b/drivers/hid/hid-multitouch.c
> index 179dc316b4b51..470f199148057 100644
> --- a/drivers/hid/hid-multitouch.c
> +++ b/drivers/hid/hid-multitouch.c
> @@ -76,6 +76,7 @@ MODULE_LICENSE("GPL");
>   #define MT_QUIRK_DISABLE_WAKEUP		BIT(21)
>   #define MT_QUIRK_ORIENTATION_INVERT	BIT(22)
>   #define MT_QUIRK_APPLE_TOUCHBAR		BIT(23)
> +#define MT_QUIRK_KEEP_LATENCY_ON_CLOSE	BIT(24)
>   
>   #define MT_INPUTMODE_TOUCHSCREEN	0x02
>   #define MT_INPUTMODE_TOUCHPAD		0x03
> @@ -229,6 +230,7 @@ static void mt_post_parse(struct mt_device *td, struct mt_application *app);
>   #define MT_CLS_RAZER_BLADE_STEALTH		0x0112
>   #define MT_CLS_SMART_TECH			0x0113
>   #define MT_CLS_APPLE_TOUCHBAR			0x0114
> +#define MT_CLS_UNIWILL_TOUCHPAD			0x0115
>   #define MT_CLS_SIS				0x0457
>   
>   #define MT_DEFAULT_MAXCONTACT	10
> @@ -420,6 +422,9 @@ static const struct mt_class mt_classes[] = {
>   			MT_QUIRK_APPLE_TOUCHBAR,
>   		.maxcontacts = 11,
>   	},
> +	{ .name = MT_CLS_UNIWILL_TOUCHPAD,
> +		.quirks = MT_QUIRK_KEEP_LATENCY_ON_CLOSE,
> +	},
>   	{ .name = MT_CLS_SIS,
>   		.quirks = MT_QUIRK_NOT_SEEN_MEANS_UP |
>   			MT_QUIRK_ALWAYS_VALID |
> @@ -1998,7 +2003,12 @@ static void mt_on_hid_hw_open(struct hid_device *hdev)
>   
>   static void mt_on_hid_hw_close(struct hid_device *hdev)
>   {
> -	mt_set_modes(hdev, HID_LATENCY_HIGH, TOUCHPAD_REPORT_NONE);
> +	struct mt_device *td = hid_get_drvdata(hdev);
> +
> +	if (td->mtclass.quirks & MT_QUIRK_KEEP_LATENCY_ON_CLOSE)
> +		mt_set_modes(hdev, HID_LATENCY_NORMAL, TOUCHPAD_REPORT_NONE);
> +	else
> +		mt_set_modes(hdev, HID_LATENCY_HIGH, TOUCHPAD_REPORT_NONE);
>   }
>   
>   /*
> @@ -2375,6 +2385,11 @@ static const struct hid_device_id mt_devices[] = {
>   		MT_USB_DEVICE(USB_VENDOR_ID_UNITEC,
>   			USB_DEVICE_ID_UNITEC_USB_TOUCH_0A19) },
>   
> +	/* Uniwill touchpads */
> +	{ .driver_data = MT_CLS_UNIWILL_TOUCHPAD,
> +		HID_DEVICE(BUS_I2C, HID_GROUP_MULTITOUCH_WIN_8,
> +			   USB_VENDOR_ID_PIXART, 0x0255) },
> +
>   	/* VTL panels */
>   	{ .driver_data = MT_CLS_VTL,
>   		MT_USB_DEVICE(USB_VENDOR_ID_VTL,

Powered by blists - more mailing lists

Powered by Openwall GNU/*/Linux Powered by OpenVZ