From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Po Lu Newsgroups: gmane.emacs.devel Subject: Re: master e37eb7f: Add support for pixel wheel deltas on NS Date: Fri, 26 Nov 2021 17:37:22 +0800 Message-ID: <87fsrjfeb1.fsf@yahoo.com> References: <20211125030922.2353.1129@vcs0.savannah.gnu.org> <20211125030924.7258E2094B@vcs0.savannah.gnu.org> <871r34h6pi.fsf@gmail.com> <87fsrkzfq1.fsf@yahoo.com> <83tug05whz.fsf@gnu.org> <87tufzycli.fsf@yahoo.com> <837dcv4e79.fsf@gnu.org> <87wnkvflk7.fsf@yahoo.com> <83zgpr2uvr.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="19807"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.60 (gnu/linux) Cc: rpluim@gmail.com, emacs-devel@gnu.org To: Eli Zaretskii Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Fri Nov 26 10:38:44 2021 Return-path: Envelope-to: ged-emacs-devel@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1mqXgo-000500-2r for ged-emacs-devel@m.gmane-mx.org; Fri, 26 Nov 2021 10:38:42 +0100 Original-Received: from localhost ([::1]:42646 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1mqXgm-0000VN-O1 for ged-emacs-devel@m.gmane-mx.org; Fri, 26 Nov 2021 04:38:40 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:59556) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1mqXfq-0008AI-K4 for emacs-devel@gnu.org; Fri, 26 Nov 2021 04:37:42 -0500 Original-Received: from sonic310-23.consmr.mail.ne1.yahoo.com ([66.163.186.204]:40667) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1mqXfj-0006Et-Vu for emacs-devel@gnu.org; Fri, 26 Nov 2021 04:37:42 -0500 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1637919454; bh=4fYDhuO0jkWgoDI6dLMKXGw12toPvzhD3YqQxNhE/ok=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From:Subject:Reply-To; b=Q/okmvzq4E1q8MCmZTbsws0PnDM8oUi17OG+cslryyOIIQ7LO0s+UQmRq8b8Q9BEM2K81WktLeoPoKEuXZngKltcoPysuUcKuBJEmcHBjehABGbLXygnQ6+PzZd74dsRHGNaxVsqee/M9rUOiKRGC23PkkKtnJTraIJoyhTmNZa0l9BY0KnpASzL0ueJLGeCfi5DW6xhvlALmz5LowBuFhZYzU9BXYQNfn2KyVoCZ5/ByQi8MrVIqc5h0sWgH2Ml8KROJnVNCY9qERZXFKcliK0I/i/H5Yif5kQNDb2dqRqjes2E0/XQYYjJIdDpl4ILs3CecvK4q0dL6lN636vj8Q== X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048; t=1637919454; bh=2LAfDONIoLqwbErz8cLspe854Sb2xQ6+OusdqHr8Rw8=; h=X-Sonic-MF:From:To:Subject:Date:From:Subject; b=JZ70dChfZRCautqiPSQ2VrnJlLvd4t0r/nAa3WV9zNBKseS5r4EYBMM7eashQvzHDLjaFJxkjdnWz+JbMk1xsVtiBTToBiyGI69f2D2W2I03qduDozMAuh5b/0IeiBSPf2C3/BDORDNa86maKeMyFy378kAZM+RDsstdgDBIE7KPU2zCnYqII3PKect2OAWd4S+ylxtncXxYN9bc8Eb1AKQvbKmC6xT5cIfUL+rKpwvg0l66vKtg7bev9iaT/4MLIUBbPTFvk9iuhbmmNRg7AMVaJT5PqfEWlTw2+YAXXXt10TjDNaVggbZ7j6PMSAHFaBHZ0iwaAsljRkFt8RVw8g== X-YMail-OSG: DrstQvIVM1lQ32M9dN6bQoc46aPb0piOT1X9E9P308V3yjy73bKl5_qP9JEkL0I jA6n2Iv2ZwCBH_RdWY.U8pp7ttHc6Z2LUBlgQf8RzMxPvRJ7UCm3_B8wdLdWQdIcKIQfxy7QS.1W Z.P90sjw1Yya0AD3x4TC4OwKrL4BxTx3btZsyGGpqZohlJJEq2JF7EnFhec8flZtw5A3IKtx1re0 W.dT0HLla9uUL8nnpGzppciU5Q04AVWqzR6N_hb0z3otNTR.WS3WfjgCjazb910vM3odFmguYTR1 SIQ6pCBXhAs58G17vVOaggdz4GyTywE2VU9Gaude2M48nhAw3.9IIfq4QpLu471SYNcwY9wBizYQ K.6iGAz2w7Kzs7zIDbBgGePMYXEJwsP1ifZ8qy0Yd_oUEzZoqDtwopUTCA5qdw2hpW9IV6Kspdaq UyMNvUZ4srQ8nVwHWznZ7l_wA1w9w8_K3TOsCdu.SgNB7s62449FZCJathmn.UQIUj1sg_FrUPII rNBYGrjZyDR9mA1f6VtH4Js1sSjwCoF6xXo4akITXchec_3__cHK_We6ZnSiGZUGHWTIxxqu1nAL PGu6IlaipKkpg08k.HfruzlGD.gftKiCg9orYLFT5r_A4zgKPZctcA2F3MUmPRRWDXRNXTqvCMtB 0Iat_gRo7TIWtk1xPfR_lVSb.exYhU4OU.i4bilfOzL9x9rzk5BxvC03EGezic3XM7gYYW34MX6a taFxxxklCQZFlc5NshGITt3LNxBjIrJ_nmB1onO1m7cw25a2EqX5QSODiM2dM2BQabQznQQyQpgQ LEpUShiF4oRHsLAryfzyzTnUyxtxd6quX.mOePhw71 X-Sonic-MF: Original-Received: from sonic.gate.mail.ne1.yahoo.com by sonic310.consmr.mail.ne1.yahoo.com with HTTP; Fri, 26 Nov 2021 09:37:34 +0000 Original-Received: by kubenode518.mail-prod1.omega.sg3.yahoo.com (VZM Hermes SMTP Server) with ESMTPA ID 157a598bd5a9b944e720d868c57365ba; Fri, 26 Nov 2021 09:37:27 +0000 (UTC) In-Reply-To: <83zgpr2uvr.fsf@gnu.org> (Eli Zaretskii's message of "Fri, 26 Nov 2021 10:17:44 +0200") X-Mailer: WebService/1.1.19306 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo Received-SPF: pass client-ip=66.163.186.204; envelope-from=luangruo@yahoo.com; helo=sonic310-23.consmr.mail.ne1.yahoo.com X-Spam_score_int: -20 X-Spam_score: -2.1 X-Spam_bar: -- X-Spam_report: (-2.1 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, DKIM_VALID_EF=-0.1, FREEMAIL_FROM=0.001, RCVD_IN_DNSWL_NONE=-0.0001, RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_NONE=0.001, SPF_PASS=-0.001 autolearn=unavailable autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:280215 Archived-At: Eli Zaretskii writes: > How to compute the amount of pixels for a given amount of wheel delta? I don't know, but I will try to ask some people I know who know something about this. > The wheel delta on MS-Windows is reported in abstract units, not > directly related to any pixels, AFAICT. I don't see the logic of the > conversion to pixels documented anywhere in the X or NS code, and the > comments, such as they are, make no sense at all to someone who knows > nothing about X mouse-wheel handling. In xterm.c, it seems like some > kind of query of the device "valuators" (whatever that is) is being > used? On X, the states of the mouse wheels in each axis are stored as absolute values inside "valuators" attached to each mouse device. To obtain the delta of the scroll wheel from a motion event (which is used to report that some valuator has changed), it is necessary to iterate over every valuator that changed, and compare its previous value to the current value of the valuator. Each individual valuator also has an "interval", which is the amount you must divide that delta by in order to obtain a delta in the terms of scroll units. This delta however is still intermediate, to make driver implementations easier. The XInput developers recommend the following algorithm to convert from scroll unit deltas to pixel deltas: pixels_scrolled = pow (window_height, 2.0 / 3.0) * delta; > And on NS, it seems like the delta is already reported in pixels? Yes. The PGTK port can do something similar if it gains support for this, as GTK also reports it in pixels directly. > So I'm still in the dark here. (We really need to document our > algorithms better, unless we assume only GUI experts will read and > maintain them.) Perhaps I should place my explanation of XInput 2 scroll handling in a comment somewhere. Thanks.