From nobody Fri Mar 7 17:55:18 2025 X-Original-To: dev-commits-src-main@mlmmj.nyi.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2610:1c1:1:606c::19:1]) by mlmmj.nyi.freebsd.org (Postfix) with ESMTP id 4Z8Ypv2pzqz5pvR2; Fri, 07 Mar 2025 17:55:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from mxrelay.nyi.freebsd.org (mxrelay.nyi.freebsd.org [IPv6:2610:1c1:1:606c::19:3]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256 client-signature RSA-PSS (4096 bits) client-digest SHA256) (Client CN "mxrelay.nyi.freebsd.org", Issuer "R10" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id 4Z8Ypv0sBNz3YKL; Fri, 07 Mar 2025 17:55:19 +0000 (UTC) (envelope-from git@FreeBSD.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1741370119; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CabH8Mgk6jalQ+bk5uy65oRvPpaxwCfgeAxoY77Si6o=; b=TY4lmw+c0qzf8wKQg3fky3zRwnB9xvLJaJnxVpfQO+0PYUENAvzbZgvcMhhXM4RH1gKzNr TzF4O1IqQHmyxwZNGlr4Q3RHatIkTTVzev5a78vn2jkp5UL3t7O9uxfIzB+kpUYjcEPJii kGTlomYW422EhzaGHy0Z9uCpV/joPcGDuDFzvbw6VKqm/ZLt1ukgiwpnsrNiuqc5wxPRv/ Syy54cmanOu3Sle+Fj1qibillPzxFooBXbL9ni5LBEjqjUh+9VhCH2KK2Xwsg7pJERQffW +x+oU8AQVMVBlKM/qAugU/Xe13mRqNgo0wJEMAYfOIm+Srjhx3uuMsApe7E0jw== ARC-Seal: i=1; s=dkim; d=freebsd.org; t=1741370119; a=rsa-sha256; cv=none; b=Cr7cMthKGYMaLW6nS6iCyYfFgbxEMNZKXmAQylxRninGfbWB6x2FTotThxvlzEOcSlJ6gK BpAmYcR8yo/Xxs7EukmRfH57DY/Ad1vK7xvkmxiK3iJ67dmuWObjw8L3YKmKrloYg1zZ2a od/A92sbeXrKjL48SoHg3kg/duiEOYglSzq5RH450c9qKD8E4+oS6iBCdP43F5NfH2qAJ4 iC77UBgx/Fs6m2mhUqj2GaFPLJckYX4OI6d5mvRWrlUPenEZ+6YTtBcbaIOcbk3O/JJrco hV0T5Ru4q8CmPEhPL+IQKUTd4iPSOzP7SW2hRj4Di9mAggMLxr3hdFEf/GQ1JA== ARC-Authentication-Results: i=1; mx1.freebsd.org; none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=freebsd.org; s=dkim; t=1741370119; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding; bh=CabH8Mgk6jalQ+bk5uy65oRvPpaxwCfgeAxoY77Si6o=; b=Uwj78oPGA45aHZgjlnV9tIbkYtL3j74bEyxvp/I5o4Jt2Jwubb7zaeXhZ3H3/4agRAeLWh iLKOoW8guF6V/cMpShntMosY9e0pD97efSpbwbv8uyViJOLjhwBI7lF1TP8e4sXwD/2dMf kcR6rc8kCA6lNJNH4orRWOI/3HRQOgo6CKmTkZ9oUT9n794G7cCOChylA1l+EK+HC7oB8U ZZVn/olnY5Dhub1e10qKYeCDVrKiu/19tYYiMd02NDX8A65mrK/355/oCv4AIm23tWOh/v 3TBiwf3t6cFIXufsPUyt+5eViGzhUPSKGaulSGeSMl8H48muccegndtsDVdJJQ== Received: from gitrepo.freebsd.org (gitrepo.freebsd.org [IPv6:2610:1c1:1:6068::e6a:5]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature RSA-PSS (4096 bits) server-digest SHA256) (Client did not present a certificate) by mxrelay.nyi.freebsd.org (Postfix) with ESMTPS id 4Z8Ypv0BxdznV3; Fri, 07 Mar 2025 17:55:19 +0000 (UTC) (envelope-from git@FreeBSD.org) Received: from gitrepo.freebsd.org ([127.0.1.44]) by gitrepo.freebsd.org (8.18.1/8.18.1) with ESMTP id 527HtIhp083484; Fri, 7 Mar 2025 17:55:18 GMT (envelope-from git@gitrepo.freebsd.org) Received: (from git@localhost) by gitrepo.freebsd.org (8.18.1/8.18.1/Submit) id 527HtI3c083481; Fri, 7 Mar 2025 17:55:18 GMT (envelope-from git) Date: Fri, 7 Mar 2025 17:55:18 GMT Message-Id: <202503071755.527HtI3c083481@gitrepo.freebsd.org> To: src-committers@FreeBSD.org, dev-commits-src-all@FreeBSD.org, dev-commits-src-main@FreeBSD.org From: Vladimir Kondratyev Subject: git: d452a029953e - main - wsp: Add hw.usb.wsp.max_scroll_finger_distance for two-finger scrolling List-Id: Commit messages for the main branch of the src repository List-Archive: https://lists.freebsd.org/archives/dev-commits-src-main List-Help: List-Post: List-Subscribe: List-Unsubscribe: X-BeenThere: dev-commits-src-main@freebsd.org Sender: owner-dev-commits-src-main@FreeBSD.org MIME-Version: 1.0 Content-Type: text/plain; charset=utf-8 Content-Transfer-Encoding: 8bit X-Git-Committer: wulf X-Git-Repository: src X-Git-Refname: refs/heads/main X-Git-Reftype: branch X-Git-Commit: d452a029953e6e3879c4e73fb023ad9b7ac281a3 Auto-Submitted: auto-generated The branch main has been updated by wulf: URL: https://cgit.FreeBSD.org/src/commit/?id=d452a029953e6e3879c4e73fb023ad9b7ac281a3 commit d452a029953e6e3879c4e73fb023ad9b7ac281a3 Author: Joshua Rogers AuthorDate: 2025-03-07 17:53:34 +0000 Commit: Vladimir Kondratyev CommitDate: 2025-03-07 17:53:34 +0000 wsp: Add hw.usb.wsp.max_scroll_finger_distance for two-finger scrolling The hw.usb.wsp.max_scroll_finger_distance sysctl may be used to specify the maximum distance between two fingers which are registered as a z-axis (vertical scroll with mousepad) movement. Previously, this was shared with the tunable hw.usb.wsp.max_double_tap_distance which is used to specify the maximum distance between two fingers which register as a right-click. This patch also cleans up and add new information to the manpage for wsp(4). Signed-off-by: Joshua Rogers --- share/man/man4/wsp.4 | 21 ++++++++++++++++++--- sys/dev/usb/input/wsp.c | 9 +++++++-- 2 files changed, 25 insertions(+), 5 deletions(-) diff --git a/share/man/man4/wsp.4 b/share/man/man4/wsp.4 index 83a4421fa2ff..b77d5ac99a7b 100644 --- a/share/man/man4/wsp.4 +++ b/share/man/man4/wsp.4 @@ -63,24 +63,39 @@ through nodes under Pointer sensitivity can be controlled using the sysctl tunable .Nm hw.usb.wsp.scale_factor . Tap to left-click can be controlled using the sysctl tunable -.Nm hw.usb.wsp.enable_single_tap_clicks , -set to 0 to disable single tap clicks or 1 to enable them (default). +.Nm hw.usb.wsp.enable_single_tap_clicks +with 0 disabling single tap clicks and 1 enabling them (default). Movement on the trackpad following a partially-released click can be controlled using the sysctl tunable .Nm hw.usb.wsp.enable_single_tap_movement , -set to 0 to disable the movement on the trackpad until a full release +with 0 to disable the movement on the trackpad until a full release or 1 to allow the continued movement (default). .Nm hw.usb.wsp.max_finger_area defines the maximum area on the trackpad which is registered as a finger (lower for greater palm detection). +.Nm max_scroll_finger_distance +defines the maximum distance between two fingers where z-axis +movements are registered. .Nm hw.usb.wsp.max_double_tap_distance defines the maximum distance between two finger clicks or taps which may register as a double-click. +.Nm hw.usb.wsp.scr_hor_threshold +defines the minimum required horizontal movement to register as a forward +/back button click. Z-Axis sensitivity can be controlled using the sysctl tunable .Nm hw.usb.wsp.z_factor . Z-Axis inversion can be controlled using the sysctl tunable .Nm hw.usb.wsp.z_invert , set to 0 to disable (default) or 1 to enable inversion. +.Pp +.Nm +may use evdev data (if enabled during kernel compilation) for gesture support +using the +.Xr sysctl 8 +value +.Nm kern.evdev.rcpt_mask . +On most MacBooks, setting this value to 3 enables gestures, while 12 +disables them. .Sh FILES .Nm creates a blocking pseudo-device file, diff --git a/sys/dev/usb/input/wsp.c b/sys/dev/usb/input/wsp.c index f9b85f926221..d74ba1da32b1 100644 --- a/sys/dev/usb/input/wsp.c +++ b/sys/dev/usb/input/wsp.c @@ -98,6 +98,7 @@ static struct wsp_tuning { int pressure_tap_threshold; int scr_hor_threshold; int max_finger_area; + int max_scroll_finger_distance; int max_double_tap_distance; int enable_single_tap_clicks; int enable_single_tap_movement; @@ -112,6 +113,7 @@ static struct wsp_tuning { .pressure_tap_threshold = 120, .scr_hor_threshold = 50, .max_finger_area = 1900, + .max_scroll_finger_distance = MAX_FINGER_ORIENTATION/2, .max_double_tap_distance = 2500, .enable_single_tap_clicks = 1, .enable_single_tap_movement = 1, @@ -127,7 +129,8 @@ wsp_runing_rangecheck(struct wsp_tuning *ptun) WSP_CLAMP(ptun->pressure_untouch_threshold, 1, 255); WSP_CLAMP(ptun->pressure_tap_threshold, 1, 255); WSP_CLAMP(ptun->max_finger_area, 1, 2400); - WSP_CLAMP(ptun->max_double_tap_distance, 1, 16384); + WSP_CLAMP(ptun->max_scroll_finger_distance, 1, MAX_FINGER_ORIENTATION); + WSP_CLAMP(ptun->max_double_tap_distance, 1, MAX_FINGER_ORIENTATION); WSP_CLAMP(ptun->scr_hor_threshold, 1, 255); WSP_CLAMP(ptun->enable_single_tap_clicks, 0, 1); WSP_CLAMP(ptun->enable_single_tap_movement, 0, 1); @@ -147,6 +150,8 @@ SYSCTL_INT(_hw_usb_wsp, OID_AUTO, pressure_tap_threshold, CTLFLAG_RWTUN, &wsp_tuning.pressure_tap_threshold, 0, "tap pressure threshold"); SYSCTL_INT(_hw_usb_wsp, OID_AUTO, max_finger_area, CTLFLAG_RWTUN, &wsp_tuning.max_finger_area, 0, "maximum finger area"); +SYSCTL_INT(_hw_usb_wsp, OID_AUTO, max_scroll_finger_distance, CTLFLAG_RWTUN, + &wsp_tuning.max_scroll_finger_distance, 0, "maximum scroll finger distance"); SYSCTL_INT(_hw_usb_wsp, OID_AUTO, max_double_tap_distance, CTLFLAG_RWTUN, &wsp_tuning.max_double_tap_distance, 0, "maximum double-finger click distance"); SYSCTL_INT(_hw_usb_wsp, OID_AUTO, scr_hor_threshold, CTLFLAG_RWTUN, @@ -1262,7 +1267,7 @@ wsp_intr_callback(struct usb_xfer *xfer, usb_error_t error) dx = dy = 0; if (sc->dz_count == 0) dz = (sc->dz_sum / tun.z_factor) * (tun.z_invert ? -1 : 1); - if (sc->scr_mode == WSP_SCR_HOR || sc->distance > tun.max_double_tap_distance) + if (sc->scr_mode == WSP_SCR_HOR || sc->distance > tun.max_scroll_finger_distance) dz = 0; } if (ntouch == 3)