Support high-resolution scrolling on Chrome OS |
||
Issue descriptionSome mice now support high-resolution (a.k.a. high-precision) scrolling, typically at 8x the previous "normal" resolution (i.e. 8 units per "notch" of wheel movement). We should support this increased resolution in Chrome OS. Devices with this feature include most new Logitech mice. Support for most of these (except when connected over Bluetooth) has recently been added to the Linux kernel [0]. We have to backport these patches, and then update libevdev, the gestures library, and Chromium itself to take advantage of the new `REL_WHEEL_HI_RES` evdev output. [0]: https://patchwork.kernel.org/project/linux-input/list/?series=13521
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/d9896e0c7a682c0cc6288fa4ec0230596abb7885 commit d9896e0c7a682c0cc6288fa4ec0230596abb7885 Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 00:33:39 2018 FROMLIST: Create a utility class for counting scroll events To avoid code duplication, this class counts high-resolution scroll movements and emits the legacy low-resolution events when appropriate. Drivers should be able to create one instance for each scroll wheel that they need to handle. Signed-off-by: Harry Cutts <hcutts@chromium.org> (am from https://patchwork.kernel.org/patch/10582939/) (also found at https://lkml.kernel.org/r/20180830215622.47550-3-hcutts@chromium.org) BUG=chromium:888172 TEST=no behaviour changes expected Change-Id: I3d406d464785acef1d9382450ebc5c2fd3ab3c1f Reviewed-on: https://chromium-review.googlesource.com/1240512 Commit-Ready: Harry Cutts <hcutts@chromium.org> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/d9896e0c7a682c0cc6288fa4ec0230596abb7885/drivers/hid/hid-input.c [modify] https://crrev.com/d9896e0c7a682c0cc6288fa4ec0230596abb7885/include/linux/hid.h
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/b7c38b856d0f1a3959a24597438b68ade3ae173b commit b7c38b856d0f1a3959a24597438b68ade3ae173b Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 00:33:40 2018 FROMLIST: Add function to enable HID++ 1.0 "scrolling acceleration" "Scrolling acceleration" is a bit of a misnomer: it doesn't deal with acceleration at all. However, that's the name used in Logitech's spec, so I used it here. Signed-off-by: Harry Cutts <hcutts@chromium.org> (am from https://patchwork.kernel.org/patch/10582937/) (also found at https://lkml.kernel.org/r/20180830215622.47550-4-hcutts@chromium.org) BUG=chromium:888172 TEST=no behaviour changes expected Change-Id: I83aec8d11638f3aa2961458aa1a0ab68586f99b2 Reviewed-on: https://chromium-review.googlesource.com/1240753 Commit-Ready: Harry Cutts <hcutts@chromium.org> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/b7c38b856d0f1a3959a24597438b68ade3ae173b/drivers/hid/hid-logitech-hidpp.c
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/050ec53559094faf5d9fe8913a4d240bb2ddd522 commit 050ec53559094faf5d9fe8913a4d240bb2ddd522 Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 00:33:42 2018 FROMLIST: Enable high-resolution scrolling on Logitech mice There are three features used by various Logitech mice for high-resolution scrolling: the scrolling acceleration bit in HID++ 1.0, and the x2120 and x2121 features in HID++ 2.0 and above. This patch supports all three, and uses the multiplier reported by the mouse for the HID++ 2.0+ features. The full list of product IDs of mice which support high-resolution scrolling was provided by Logitech, but the patch was tested using the following mice (using the Unifying receiver): * HID++ 1.0: Anywhere MX, Performance MX * x2120: M560 * x2121: MX Anywhere 2, MX Master 2S Signed-off-by: Harry Cutts <hcutts@chromium.org> (am from https://patchwork.kernel.org/patch/10582935/) (also found at https://lkml.kernel.org/r/20180830215622.47550-5-hcutts@chromium.org) BUG=chromium:888172 TEST=Connect Logitech high-resolution scrolling mice to a Chromebook, and check that REL_WHEEL_HI_RES updates are output from evtest. Upstream patches tested with: Anywhere MX and Performance MX (both HID++ 1.0); M325, M560, MX Anywhere 2, and MX Master 2S (all HID++ 2.0+). Backport tested with the MX Master 2S. Change-Id: Ib1958e775def980bd9506f9618ce581385551eb4 Reviewed-on: https://chromium-review.googlesource.com/1240754 Commit-Ready: Harry Cutts <hcutts@chromium.org> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/050ec53559094faf5d9fe8913a4d240bb2ddd522/drivers/hid/hid-logitech-hidpp.c
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/ee1866a1bc2c17733fb4d4d2978c7d9ac069e673 commit ee1866a1bc2c17733fb4d4d2978c7d9ac069e673 Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 00:33:43 2018 FROMLIST: Use LDJ_DEVICE macro for existing Logitech mice Signed-off-by: Harry Cutts <hcutts@chromium.org> (am from https://patchwork.kernel.org/patch/10582933/) (also found at https://lkml.kernel.org/r/20180830215622.47550-6-hcutts@chromium.org) BUG=chromium:888172 TEST=Connect one of the affected devices and check that the Logitech driver is used. Change-Id: I90b9bf0663fcdc220f914238bd387275da99af49 Reviewed-on: https://chromium-review.googlesource.com/1240755 Commit-Ready: Harry Cutts <hcutts@chromium.org> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/ee1866a1bc2c17733fb4d4d2978c7d9ac069e673/drivers/hid/hid-logitech-hidpp.c
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/cede709b28ba6b00eb85dd334e7f0515606d937d commit cede709b28ba6b00eb85dd334e7f0515606d937d Author: Benjamin Tissoires <benjamin.tissoires@redhat.com> Date: Fri Oct 12 04:34:52 2018 FROMLIST: HID: logitech-hidpp: remove HIDPP_QUIRK_CONNECT_EVENTS Now that we can create battery power_supply sources, it's better to enable the connect_event callback unconditionally. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> Tested-by: Peter Hutterer <peter.hutterer@who-t.net> Signed-off-by: Peter Hutterer <peter.hutterer@who-t.net> (am from https://patchwork.kernel.org/patch/9204615/) (also found at https://lkml.kernel.org/r/1467192482-2723-2-git-send-email-peter.hutterer@who-t.net) BUG=chromium:888172 TEST=Connect a Logitech mouse (tested with MX Master 2S) and verify that it still functions correctly. Change-Id: I8ad7e1cefd250be7ef150a96dc21aa94367eef66 Signed-off-by: Harry Cutts <hcutts@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1275015 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/cede709b28ba6b00eb85dd334e7f0515606d937d/drivers/hid/hid-logitech-hidpp.c
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/e03cb49389c847313c200096b9f2173baa98bb87 commit e03cb49389c847313c200096b9f2173baa98bb87 Author: Benjamin Tissoires <benjamin.tissoires@redhat.com> Date: Fri Oct 12 08:16:58 2018 BACKPORT: FROMLIST: HID: logitech-hidpp: rework hidpp_connect_event() Looks like all users don't care about a disconnect. Simplify the various variant_connect() and put the connect state check at the beginning. For delayed input devices, make sure we go through all other connect values (protocol, battery) before bailing out. Signed-off-by: Benjamin Tissoires <benjamin.tissoires@redhat.com> (am from https://patchwork.kernel.org/patch/9551923/) (also found at https://lkml.kernel.org/r/20170202141229.17322-16-benjamin.tissoires@redhat.com) BUG=chromium:888172 TEST=Connect a Logitech mouse and verify that it still functions correctly. Tested with a range of Logitech mice (including HID++ 1.0 and 2.0+ devices). Change-Id: I27979cf22e9ba539255f00098a5911f59f462849 Signed-off-by: Harry Cutts <hcutts@chromium.org> Reviewed-on: https://chromium-review.googlesource.com/1275016 Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/e03cb49389c847313c200096b9f2173baa98bb87/drivers/hid/hid-logitech-hidpp.c
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/23eddb2b670ab487598cb51ff157deb4ad707ca1 commit 23eddb2b670ab487598cb51ff157deb4ad707ca1 Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 08:16:59 2018 FROMLIST: Add the `REL_WHEEL_HI_RES` event code This event code represents scroll reports from high-resolution wheels, and will be used by future patches in this series. See the linux-input "Reporting high-resolution scroll events" thread [0] for more details. [0]: https://www.spinics.net/lists/linux-input/msg57380.html Signed-off-by: Harry Cutts <hcutts@chromium.org> Acked-by: Dmitry Torokhov <dmitry.torokhov@gmail.com> (am from https://patchwork.kernel.org/patch/10582941/) (also found at https://lkml.kernel.org/r/20180830215622.47550-2-hcutts@chromium.org) BUG=chromium:888172 TEST=no behaviour changes expected Change-Id: Id72faf3a60cbb42d7dfa6161d73b2065dd366328 Reviewed-on: https://chromium-review.googlesource.com/1275017 Commit-Ready: Harry Cutts <hcutts@chromium.org> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/23eddb2b670ab487598cb51ff157deb4ad707ca1/include/uapi/linux/input-event-codes.h [modify] https://crrev.com/23eddb2b670ab487598cb51ff157deb4ad707ca1/Documentation/input/event-codes.txt
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/50609688e5d62a388c6aa6e5168fe5635eac9a73 commit 50609688e5d62a388c6aa6e5168fe5635eac9a73 Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 08:17:01 2018 FROMLIST: Create a utility class for counting scroll events To avoid code duplication, this class counts high-resolution scroll movements and emits the legacy low-resolution events when appropriate. Drivers should be able to create one instance for each scroll wheel that they need to handle. Signed-off-by: Harry Cutts <hcutts@chromium.org> (am from https://patchwork.kernel.org/patch/10582939/) (also found at https://lkml.kernel.org/r/20180830215622.47550-3-hcutts@chromium.org) BUG=chromium:888172 TEST=no behaviour changes expected Change-Id: I1bc043a14188c9bf5d1a0d57284cd4d5d0ac7003 Reviewed-on: https://chromium-review.googlesource.com/1275018 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/50609688e5d62a388c6aa6e5168fe5635eac9a73/drivers/hid/hid-input.c [modify] https://crrev.com/50609688e5d62a388c6aa6e5168fe5635eac9a73/include/linux/hid.h
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/1cd37b5a86de0ebe4178e228ccdb3bff310bb9da commit 1cd37b5a86de0ebe4178e228ccdb3bff310bb9da Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 08:17:02 2018 BACKPORT: FROMLIST: Add function to enable HID++ 1.0 "scrolling acceleration" "Scrolling acceleration" is a bit of a misnomer: it doesn't deal with acceleration at all. However, that's the name used in Logitech's spec, so I used it here. Signed-off-by: Harry Cutts <hcutts@chromium.org> (am from https://patchwork.kernel.org/patch/10582937/) (also found at https://lkml.kernel.org/r/20180830215622.47550-4-hcutts@chromium.org) Conflicts: drivers/hid/hid-logitech-hidpp.c BUG=chromium:888172 TEST=no behaviour changes expected Change-Id: I8e0423c0126ec50b05add1c85aa12695dd765132 Reviewed-on: https://chromium-review.googlesource.com/1275019 Commit-Ready: Harry Cutts <hcutts@chromium.org> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/1cd37b5a86de0ebe4178e228ccdb3bff310bb9da/drivers/hid/hid-logitech-hidpp.c
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/3802c96bc03683556818be698d5997803ce374fc commit 3802c96bc03683556818be698d5997803ce374fc Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 08:17:03 2018 BACKPORT: FROMLIST: Enable high-resolution scrolling on Logitech mice There are three features used by various Logitech mice for high-resolution scrolling: the scrolling acceleration bit in HID++ 1.0, and the x2120 and x2121 features in HID++ 2.0 and above. This patch supports all three, and uses the multiplier reported by the mouse for the HID++ 2.0+ features. The full list of product IDs of mice which support high-resolution scrolling was provided by Logitech, but the patch was tested using the following mice (using the Unifying receiver): * HID++ 1.0: Anywhere MX, Performance MX * x2120: M560 * x2121: MX Anywhere 2, MX Master 2S Signed-off-by: Harry Cutts <hcutts@chromium.org> (am from https://patchwork.kernel.org/patch/10582935/) (also found at https://lkml.kernel.org/r/20180830215622.47550-5-hcutts@chromium.org) Conflicts: drivers/hid/hid-logitech-hidpp.c To backport, I had to move the call to hi_res_scroll_enable to before the HIDPP_QUIRK_NO_HIDINPUT check in hidpp_connect_event. BUG=chromium:888172 TEST=Connect Logitech high-resolution scrolling mice to a Chromebook, and check that REL_WHEEL_HI_RES updates are output from evtest. Tested with: Anywhere MX and Performance MX (both HID++ 1.0); M325, M535, M560, MX Anywhere 2, and MX Master 2S (all HID++ 2.0+). Change-Id: Ia5333f7a3573d7a893c55141c76fb1bfe8b14ca7 Reviewed-on: https://chromium-review.googlesource.com/1275020 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/3802c96bc03683556818be698d5997803ce374fc/drivers/hid/hid-logitech-hidpp.c
,
Oct 12
The following revision refers to this bug: https://chromium.googlesource.com/chromiumos/third_party/kernel/+/b6e4d15c2cfb3a6450f82d3736f86329ab468df8 commit b6e4d15c2cfb3a6450f82d3736f86329ab468df8 Author: Harry Cutts <hcutts@chromium.org> Date: Fri Oct 12 08:17:05 2018 BACKPORT: FROMLIST: Use LDJ_DEVICE macro for existing Logitech mice Signed-off-by: Harry Cutts <hcutts@chromium.org> (am from https://patchwork.kernel.org/patch/10582933/) (also found at https://lkml.kernel.org/r/20180830215622.47550-6-hcutts@chromium.org) Conflicts: drivers/hid/hid-logitech-hidpp.c BUG=chromium:888172 TEST=no behaviour changes expected Change-Id: Ic3f1f0fcb2801f4be5164abe70d4af9c85c26b64 Reviewed-on: https://chromium-review.googlesource.com/1275021 Commit-Ready: ChromeOS CL Exonerator Bot <chromiumos-cl-exonerator@appspot.gserviceaccount.com> Tested-by: Harry Cutts <hcutts@chromium.org> Reviewed-by: Dmitry Torokhov <dtor@chromium.org> [modify] https://crrev.com/b6e4d15c2cfb3a6450f82d3736f86329ab468df8/drivers/hid/hid-logitech-hidpp.c |
||
►
Sign in to add a comment |
||
Comment 1 by bugdroid1@chromium.org
, Oct 12