Received: by 2002:a25:4158:0:0:0:0:0 with SMTP id o85csp455768yba; Fri, 3 May 2019 05:11:15 -0700 (PDT) X-Google-Smtp-Source: APXvYqxCRS/b0GRn94SPGwMxDGryaEam7y/8WqFIQUG7ZXqzarwWrRb4PWBB9LRoYEVysk0QG+No X-Received: by 2002:a17:902:b105:: with SMTP id q5mr9822075plr.290.1556885475742; Fri, 03 May 2019 05:11:15 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1556885475; cv=none; d=google.com; s=arc-20160816; b=TxZh0KV9pZtHcwAAnGbxyroYVCK2W/VpFXjehx98lh5+fcKzykKIFBgSEcj+IB/oqQ 7bfHI6Q9sEl5PdvldQkAk87eG8ayJ70Q8xARWb+sL0YUjtEiclwcctH07uZV97i4G6N2 FA1x5ZYlZmUlFJqxT6ZXGUpauxHY3GQAy+k5GAF4YBDR2/3H/FZJuFVCKm5S/uSI64L5 BiICOQpkcKSlO4nbf7XXftdYAxEwo7+YzKe6FE2cZHAecs0HHEyKTF1Wjt+KxJo6LYkg HxrIr7IC/TeUWC2142qdEdHr+cNmm4cxVUEP0W+CKRpCgU3hWK2ThgDffMrC1px6ZPv7 /TqQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:cc:to:subject :message-id:date:from:in-reply-to:references:mime-version; bh=HrUjl0sKNo5lrL9ysVXWiWX1Rr21t4U/V+m9ZpaLXs4=; b=LN2pGV4hzLqc4YnWuCmH5XqJel3pl7xBqUoJ3jRbOZQ/RFOU9mbry3VsaVEZKAkjPF h/3XsElzy0Mn9x3nsjqN24Bhse+tfbznTUVepz+8Au6D1rSctQHPDb8hYNnFAg1DHibe kit53vR2eh0iwApNknr/FJVdrGQk3LmyHKTyL/MoneMZYcgH3BRdROk+fGnTr6viJOag hnrQyE/Z89MXpeLYDFpVRbHB9tzmOghtouV5gGt9UyLKDcdBopONhK4rwWR3McPBk3EC FckSlEoUHakwlRdLlFjvh34ShICwe2yF4DBif9Wxw6F+3XrWxVpRXbkYDgkfhuMErgCh rhUg== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id k9si1978183pga.575.2019.05.03.05.10.59; Fri, 03 May 2019 05:11:15 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=redhat.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1727749AbfECL7g convert rfc822-to-8bit (ORCPT + 99 others); Fri, 3 May 2019 07:59:36 -0400 Received: from mail-qt1-f194.google.com ([209.85.160.194]:44031 "EHLO mail-qt1-f194.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1727548AbfECL7g (ORCPT ); Fri, 3 May 2019 07:59:36 -0400 Received: by mail-qt1-f194.google.com with SMTP id g4so6276979qtq.10 for ; Fri, 03 May 2019 04:59:35 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=BJ2Nma0ayITV/7zFNbju1tIRbVYaJofZ4T1/8somf/U=; b=e3UngAGZWx4M/YS3NGgWHMP443ecqNqJ+DPJGqEiw824bPUEyZ0fSUSOGkXHRB1WbF X//V/62lcnLV44rQ30egeY+bQkJD5wQbAuIsH7bcYqbInMIUHv/I4dtf1NgOPKl3AbOX UCv+bXVmk6XTVh/vS8q82UVt84IrDIiu7Xi0fb+t/BZ7ao4pRQpg8pud7rfJReBfgViE epWZ5OQEQKJQibKsFStlKxHXb2hdnqgsbY82wz9IZ14PrWnw9osKwDo5cuukhpaAzPnH Sbxtsag7NPpcjrzlMVLwHgEGWF/UGrR0hacxFYeD39ruU2H8aVod5CN3l+cyOixiQbWD HSOQ== X-Gm-Message-State: APjAAAUb1EZ2LKGreLxIolFj8NKts+ppyn67f4gPBwmknwJv/doLiVlp MU9W7jWC7FO1v5l+JY1pkyj39f7Yq9sSpE8Yb+qttA== X-Received: by 2002:a0c:be18:: with SMTP id k24mr5319347qvg.192.1556884774964; Fri, 03 May 2019 04:59:34 -0700 (PDT) MIME-Version: 1.0 References: <20190502213639.7632-1-spaz16@wp.pl> <1a40ea07-368a-93f6-8335-dec7ae50bbf4@gmail.com> In-Reply-To: <1a40ea07-368a-93f6-8335-dec7ae50bbf4@gmail.com> From: Benjamin Tissoires Date: Fri, 3 May 2019 13:59:23 +0200 Message-ID: Subject: Re: [PATCH] HID: fix A4Tech horizontal scrolling To: Igor Kushnir , Peter Hutterer Cc: =?UTF-8?B?QsWCYcW8ZWogU3pjenlnaWXFgg==?= , Jiri Kosina , "open list:HID CORE LAYER" , lkml Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: 8BIT Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi, On Fri, May 3, 2019 at 11:43 AM Igor Kushnir wrote: > > Hi Benjamin, > > On 5/3/19 10:36 AM, Benjamin Tissoires wrote: > > Hi, > > > > On Thu, May 2, 2019 at 11:37 PM Błażej Szczygieł wrote: > >> > >> Since recent high resolution scrolling changes the A4Tech driver must > >> check for the "REL_WHEEL_HI_RES" usage code. > >> > >> Fixes: 2dc702c991e3774af9d7ce410eef410ca9e2357e (HID: input: use the > >> Resolution Multiplier for high-resolution scrolling) > >> > >> Signed-off-by: Błażej Szczygieł > > > > Thanks for the patch. I do not doubt this fixes the issues, but I > > still wonder if we should not export REL_HWHEEL_HI_RES instead of > > REL_HWHEEL events. > > > If you mean exporting REL_HWHEEL_HI_RES instead of REL_HWHEEL from > hid-a4tech.c, then it makes sense to me, though I do not know the code > well enough to be certain. Yep, that's what I meant. I am worried that userspace doesn't know well how to deal with a device that mixes the new and old REL_WHEEL events. > > Błażej and I have discussed the bug and the patch here: > https://bugzilla.kernel.org/show_bug.cgi?id=203369 Oh cool. Then we should add: "Link: https://bugzilla.kernel.org/show_bug.cgi?id=203369" in the commit description. Also, given that the patch will likely see a v2, te format of the "Fixes" tag is not correct: see https://www.kernel.org/doc/html/v4.20/process/submitting-patches.html#describe-your-changes (I have been notified that I tend to not follow the rules here, so I am trying to do better here :-P ) > > In summary: the patch fixes the bug for both our mice; > the documentation in input/event-codes.rst states that > REL_WHEEL, REL_HWHEEL "are legacy codes and REL_WHEEL_HI_RES and > REL_HWHEEL_HI_RES should be preferred where available." > > > Also, I can not figure out how the events are processed by the kernel. > > Could you attach a hid-recorder dump of the mouse wheels with > > hid-recorder from https://gitlab.freedesktop.org/libevdev/hid-tools ? > > > > This should give me a better view of the mouse, and I could also add > > it to the regression tests I am running for each commit. > > > > Cheers, > > Benjamin > > After launching hid-recorder for my A4Tech WOP-49Z mouse under kernel > 5.0.10 patched with Błażej's patch I: > * scrolled the vertical wheel down ("Wheel: -1"); > * scrolled the vertical wheel up ("Wheel: 1"); > * scrolled the horizontal wheel "left" ("Wheel: -1"); > * scrolled the horizontal wheel "right" ("Wheel: 1"). > Note that the horizontal wheel is physically scrolled just like the > vertical one in this mouse (forward/back), so "left" and "right" are the > effects these scrollings make in applications when the kernel supports > the mouse properly. > > $ sudo ./hid-recorder /dev/hidraw1 > # A4Tech PS/2+USB Mouse > # 0x05, 0x01, // Usage Page (Generic Desktop) 0 > # 0x09, 0x02, // Usage (Mouse) 2 > # 0xa1, 0x01, // Collection (Application) 4 > # 0x09, 0x01, // Usage (Pointer) 6 > # 0xa1, 0x00, // Collection (Physical) 8 > # 0x05, 0x09, // Usage Page (Button) 10 > # 0x19, 0x01, // Usage Minimum (1) 12 > # 0x29, 0x07, // Usage Maximum (7) 14 > # 0x15, 0x00, // Logical Minimum (0) 16 > # 0x25, 0x01, // Logical Maximum (1) 18 > # 0x75, 0x01, // Report Size (1) 20 > # 0x95, 0x07, // Report Count (7) 22 > # 0x81, 0x02, // Input (Data,Var,Abs) 24 > # 0x75, 0x01, // Report Size (1) 26 > # 0x95, 0x01, // Report Count (1) 28 > # 0x81, 0x01, // Input (Cnst,Arr,Abs) 30 > # 0x05, 0x01, // Usage Page (Generic Desktop) 32 > # 0x09, 0x30, // Usage (X) 34 > # 0x09, 0x31, // Usage (Y) 36 > # 0x09, 0x38, // Usage (Wheel) 38 > # 0x15, 0x81, // Logical Minimum (-127) 40 > # 0x25, 0x7f, // Logical Maximum (127) 42 > # 0x75, 0x08, // Report Size (8) 44 > # 0x95, 0x03, // Report Count (3) 46 > # 0x81, 0x06, // Input (Data,Var,Rel) 48 > # 0xc0, // End Collection 50 > # 0xc0, // End Collection 51 > # > R: 52 05 01 09 02 a1 01 09 01 a1 00 05 09 19 01 29 07 15 00 25 01 75 01 > 95 07 81 02 75 01 95 01 81 01 05 01 09 30 09 31 09 38 15 81 25 7f 75 08 > 95 03 81 06 c0 c0 > N: A4Tech PS/2+USB Mouse > I: 3 09da 0006 > # Button: 0 0 0 0 0 0 0 | # | X: 0 | Y: 0 | Wheel: -1 > E: 000000.000000 4 00 00 00 ff > # Button: 0 0 0 0 0 0 0 | # | X: 0 | Y: 0 | Wheel: -1 > E: 000000.071952 4 00 00 00 ff > # Button: 0 0 0 0 0 0 0 | # | X: 0 | Y: 0 | Wheel: -1 > E: 000000.159957 4 00 00 00 ff > # Button: 0 0 0 0 0 0 0 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000002.912232 4 00 00 00 01 > # Button: 0 0 0 0 0 0 0 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000002.952190 4 00 00 00 01 > # Button: 0 0 0 0 0 0 0 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000004.512359 4 00 00 00 01 > # Button: 0 0 0 0 0 0 0 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000004.584332 4 00 00 00 01 > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: -1 > E: 000007.528626 4 40 00 00 ff > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: -1 > E: 000007.568577 4 40 00 00 ff > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: -1 > E: 000008.256395 4 40 00 00 ff > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: -1 > E: 000008.336669 4 40 00 00 ff > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: -1 > E: 000008.400649 4 40 00 00 ff > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000010.936908 4 40 00 00 01 > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000010.984864 4 40 00 00 01 > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000011.056897 4 40 00 00 01 > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000011.528936 4 40 00 00 01 > # Button: 0 0 0 0 0 0 1 | # | X: 0 | Y: 0 | Wheel: 1 > E: 000011.616923 4 40 00 00 01 > OK, thanks both of you for your logs, this is helpful. So just in case I need to come back later, the horizontal wheel is "just" the normal wheel plus a modifier in the report. Anyway, ideally, can we have a v2 of the patch with the 2 changes requested above in the commit message and the introduction of REL_HWHEEL_HI_RES events in addition to REL_HWHEEL? REL_HWHEEL_HI_RES should report `120*value` and we should also keep the reporting of REL_WHEEL as it is currently. Peter, I grepped in the hid code, and it seems hid-cypress.c is having the exact same issue. Sigh. Cheers, Benjamin