* [PATCH RFC 0/4] Improve support for Logitech MX Anywhere 2
@ 2017-03-25 22:49 Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel Mauro Carvalho Chehab
0 siblings, 1 reply; 10+ messages in thread
From: Mauro Carvalho Chehab @ 2017-03-25 22:49 UTC (permalink / raw)
To: linux-input
Cc: Mauro Carvalho Chehab, Dmitry Torokhov, Peter Hutterer,
Benjamin Tissoires, Hans Verkuil, Jiri Kosina, Greg Kroah-Hartman,
Stuart Yoder, Ingo Tuchscherer, Douglas Anderson,
Martin Schwidefsky, Kamil Debski, Ping Cheng,
Mauro Carvalho Chehab
Logitech MX Anywhere 2 and MX Master have a high res wheel, with
is currently supported only in legacy low-resolution mode.
Add the needed bits to support it.
Note: The approach taken here were to add a new EV_REL event
when the device generates output in high-resolution mode, as it
would not require any changes on userspace for low resolution.
Implementing support for high resolution mode should also be simple.
Mauro Carvalho Chehab (4):
input: add an EV_REL event for high-res vertical wheel
hid-logitech-hidpp: add support for high res wheel
input: add a EV_SW event for ratchet switch
hid-logitech-hidpp: add support for ratchet switch
drivers/hid/hid-logitech-hidpp.c | 216 +++++++++++++++++++++++++++++++++
include/linux/mod_devicetable.h | 2 +-
include/uapi/linux/input-event-codes.h | 5 +-
3 files changed, 221 insertions(+), 2 deletions(-)
--
2.9.3
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel
2017-03-25 22:49 [PATCH RFC 0/4] Improve support for Logitech MX Anywhere 2 Mauro Carvalho Chehab
@ 2017-03-25 22:49 ` Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 2/4] hid-logitech-hidpp: add support for high res wheel Mauro Carvalho Chehab
2017-03-27 1:40 ` [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel Peter Hutterer
0 siblings, 2 replies; 10+ messages in thread
From: Mauro Carvalho Chehab @ 2017-03-25 22:49 UTC (permalink / raw)
To: linux-input
Cc: Mauro Carvalho Chehab, Dmitry Torokhov, Peter Hutterer,
Benjamin Tissoires, Hans Verkuil, Mauro Carvalho Chehab,
Douglas Anderson, Kamil Debski, Ping Cheng
As some devices can produce either low-res or high-res
vertical wheel EV_REL events, add a new event to allow
userspace to distinguish between them.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
include/uapi/linux/input-event-codes.h | 1 +
1 file changed, 1 insertion(+)
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 3af60ee69053..23b2d377af59 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -703,6 +703,7 @@
#define REL_DIAL 0x07
#define REL_WHEEL 0x08
#define REL_MISC 0x09
+#define REL_HIRES_WHEEL 0x0a
#define REL_MAX 0x0f
#define REL_CNT (REL_MAX+1)
--
2.9.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RFC 2/4] hid-logitech-hidpp: add support for high res wheel
2017-03-25 22:49 ` [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel Mauro Carvalho Chehab
@ 2017-03-25 22:49 ` Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch Mauro Carvalho Chehab
2017-03-27 1:40 ` [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel Peter Hutterer
1 sibling, 1 reply; 10+ messages in thread
From: Mauro Carvalho Chehab @ 2017-03-25 22:49 UTC (permalink / raw)
To: linux-input
Cc: Mauro Carvalho Chehab, Dmitry Torokhov, Peter Hutterer,
Benjamin Tissoires, Jiri Kosina
Some Logitech mouses (MX Anyware 2 and MX Master) have support
for a high-resolution wheel.
This wheel can work in backward-compatible mode, generating
wheel events via HID normal events, or it can use new
HID++ events that report not only the wheel movement, but also
the resolution.
Add support for it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/hid/hid-logitech-hidpp.c | 197 +++++++++++++++++++++++++++++++++++++++
1 file changed, 197 insertions(+)
diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
index 2e2515a4c070..ee3f544bda4f 100644
--- a/drivers/hid/hid-logitech-hidpp.c
+++ b/drivers/hid/hid-logitech-hidpp.c
@@ -62,6 +62,7 @@ MODULE_PARM_DESC(disable_tap_to_click,
#define HIDPP_QUIRK_WTP_PHYSICAL_BUTTONS BIT(22)
#define HIDPP_QUIRK_NO_HIDINPUT BIT(23)
#define HIDPP_QUIRK_FORCE_OUTPUT_REPORTS BIT(24)
+#define HIDPP_QUIRK_HIRES_SCROLL BIT(25)
#define HIDPP_QUIRK_DELAYED_INIT (HIDPP_QUIRK_NO_HIDINPUT | \
HIDPP_QUIRK_CONNECT_EVENTS)
@@ -1361,6 +1362,67 @@ static int hidpp_ff_deinit(struct hid_device *hid)
return 0;
}
+/* -------------------------------------------------------------------------- */
+/* 0x2121: High Resolution Wheel */
+/* -------------------------------------------------------------------------- */
+
+#define HIDPP_HIGH_RES_WHEEL 0x2121
+
+#define CMD_MOUSE_SET_WHEEL_MODE 0x20
+#define CMD_MOUSE_GET_WHEEL_RATCHET 0x30
+
+struct high_res_wheel_data {
+ u8 feature_index;
+ struct input_dev *input;
+ bool ratchet;
+};
+
+/**
+ * hidpp_mouse_set_wheel_mode - Sets high resolution wheel mode
+ *
+ * @invert: if true, inverts wheel movement
+ * @high_res: if true, wheel is in high-resolution mode. Otherwise, low res
+ * @hidpp: if true, report wheel events via HID++ notification. If false,
+ * use standard HID events
+ */
+static int hidpp_mouse_set_wheel_mode(struct hidpp_device *hidpp,
+ bool invert,
+ bool high_res,
+ bool hidpp_mode)
+{
+ struct high_res_wheel_data *hrd = hidpp->private_data;
+ u8 feature_type;
+ struct hidpp_report response;
+ int ret;
+ u8 params[16] = { 0 };
+
+ if (!hrd->feature_index) {
+ ret = hidpp_root_get_feature(hidpp,
+ HIDPP_HIGH_RES_WHEEL,
+ &hrd->feature_index,
+ &feature_type);
+ if (ret)
+ /* means that the device is not powered up */
+ return ret;
+ }
+
+ params[0] = invert ? 0x4 : 0 |
+ high_res ? 0x2 : 0 |
+ hidpp_mode ? 0x1 : 0;
+
+ ret = hidpp_send_fap_command_sync(hidpp, hrd->feature_index,
+ CMD_MOUSE_SET_WHEEL_MODE,
+ params, 16, &response);
+ if (ret > 0) {
+ hid_err(hidpp->hid_dev, "%s: received protocol error 0x%02x\n",
+ __func__, ret);
+ return -EPROTO;
+ }
+ if (ret)
+ return ret;
+
+ return 0;
+}
/* ************************************************************************** */
/* */
@@ -1816,6 +1878,119 @@ static int m560_input_mapping(struct hid_device *hdev, struct hid_input *hi,
}
/* ------------------------------------------------------------------------- */
+/* Logitech mouse devices with high resolution wheel */
+/* ------------------------------------------------------------------------- */
+
+static int high_res_raw_event(struct hid_device *hdev, u8 *data, int size)
+{
+ struct hidpp_device *hidpp = hid_get_drvdata(hdev);
+ struct high_res_wheel_data *hrd = hidpp->private_data;
+
+ /* Don't handle special raw events before setting feature_index */
+ if (!hrd || !hrd->feature_index)
+ return 0;
+
+ if (data[0] != REPORT_ID_HIDPP_LONG ||
+ data[2] != hrd->feature_index)
+ return 1;
+
+ if (size < 8) {
+ hid_err(hdev, "error in report: size = %d: %*ph\n", size,
+ size, data);
+ return 0;
+ }
+
+ /*
+ * high res wheel mouse events
+ *
+ * Wheel movement events are like:
+ *
+ * 11 03 0b 00 01 00 01 00 00 00 00 00 00 00 00 00 00 00 00 00
+ *
+ * data[0] = 0x11
+ * data[1] = device-id
+ * data[2] = feature index (0b)
+ * data[3] = event type: 0x00 - wheel movement
+ * data[4] = bitmask:
+ * bits 0-3: number of sampling periods combined
+ * bit 4:
+ * 0 = low resolution
+ * 1 = high resolution
+ * data[5] - deltaV MSB
+ * data[6] = deltaV LSB
+ * Remaining payload is reserved
+ *
+ * Ratchet events are like:
+ * 11 03 0b 10 01 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00
+ *
+ * data[0] = 0x11
+ * data[1] = device-id
+ * data[2] = feature index
+ * data[3] = event type: 0x10 - ratchet state
+ * data[4] = bit 0:
+ * 1 = ratchet
+ * 0 = free wheel
+ * Remaining payload is reserved
+ */
+
+ if (data[3] == 0) {
+ s16 delta = data[6] | data[5] << 8;
+ bool res = data[4] & 0x10;
+
+ /*
+ * Report high-resolution events as REL_HWHEEL and
+ * low-resolution events as REL_WHEEL.
+ */
+ if (res)
+ input_report_rel(hrd->input, REL_HIRES_WHEEL, delta);
+ else
+ input_report_rel(hrd->input, REL_WHEEL, delta);
+ }
+
+ /* FIXME: also report ratchet events to userspace */
+
+ return 1;
+}
+
+static void high_res_populate_input(struct hidpp_device *hidpp,
+ struct input_dev *input_dev, bool origin_is_hid_core)
+{
+ struct high_res_wheel_data *hrd = hidpp->private_data;
+
+ hrd->input = input_dev;
+
+ __set_bit(REL_WHEEL, hrd->input->relbit);
+ __set_bit(REL_HIRES_WHEEL, hrd->input->relbit);
+}
+
+
+static int high_res_allocate(struct hid_device *hdev)
+{
+ struct hidpp_device *hidpp = hid_get_drvdata(hdev);
+ struct high_res_wheel_data *hrd;
+
+ hrd = devm_kzalloc(&hdev->dev, sizeof(struct high_res_wheel_data),
+ GFP_KERNEL);
+ if (!hrd)
+ return -ENOMEM;
+
+ hidpp->private_data = hrd;
+
+ return 0;
+};
+
+static int high_res_connect(struct hid_device *hdev, bool connected)
+{
+ struct hidpp_device *hidpp = hid_get_drvdata(hdev);
+
+ if (!connected)
+ return 0;
+
+ /* Enable HID++ wheel event output mode */
+ return hidpp_mouse_set_wheel_mode(hidpp, false, false, true);
+}
+
+/* ------------------------------------------------------------------------- */
/* Logitech K400 devices */
/* ------------------------------------------------------------------------- */
@@ -1955,6 +2130,9 @@ static void hidpp_populate_input(struct hidpp_device *hidpp,
wtp_populate_input(hidpp, input, origin_is_hid_core);
else if (hidpp->quirks & HIDPP_QUIRK_CLASS_M560)
m560_populate_input(hidpp, input, origin_is_hid_core);
+ else if (hidpp->quirks & HIDPP_QUIRK_HIRES_SCROLL)
+ high_res_populate_input(hidpp, input, origin_is_hid_core);
+
}
static int hidpp_input_configured(struct hid_device *hdev,
@@ -2054,6 +2232,8 @@ static int hidpp_raw_event(struct hid_device *hdev, struct hid_report *report,
return wtp_raw_event(hdev, data, size);
else if (hidpp->quirks & HIDPP_QUIRK_CLASS_M560)
return m560_raw_event(hdev, data, size);
+ else if (hidpp->quirks & HIDPP_QUIRK_HIRES_SCROLL)
+ return high_res_raw_event(hdev, data, size);
return 0;
}
@@ -2141,6 +2321,10 @@ static void hidpp_connect_event(struct hidpp_device *hidpp)
ret = k400_connect(hdev, connected);
if (ret)
return;
+ } else if (hidpp->quirks & HIDPP_QUIRK_HIRES_SCROLL) {
+ ret = high_res_connect(hdev, connected);
+ if (ret)
+ return;
}
if (!connected || hidpp->delayed_input)
@@ -2215,6 +2399,7 @@ static int hidpp_probe(struct hid_device *hdev, const struct hid_device_id *id)
hidpp->quirks &= ~HIDPP_QUIRK_CLASS_WTP;
hidpp->quirks &= ~HIDPP_QUIRK_CONNECT_EVENTS;
hidpp->quirks &= ~HIDPP_QUIRK_NO_HIDINPUT;
+ hidpp->quirks &= ~HIDPP_QUIRK_HIRES_SCROLL;
}
if (hidpp->quirks & HIDPP_QUIRK_CLASS_WTP) {
@@ -2229,6 +2414,10 @@ static int hidpp_probe(struct hid_device *hdev, const struct hid_device_id *id)
ret = k400_allocate(hdev);
if (ret)
goto allocate_fail;
+ } else if (hidpp->quirks & HIDPP_QUIRK_HIRES_SCROLL) {
+ ret = high_res_allocate(hdev);
+ if (ret)
+ goto allocate_fail;
}
INIT_WORK(&hidpp->work, delayed_work_cb);
@@ -2354,6 +2543,14 @@ static const struct hid_device_id hidpp_devices[] = {
HID_DEVICE(BUS_USB, HID_GROUP_LOGITECH_DJ_DEVICE,
USB_VENDOR_ID_LOGITECH, 0x402d),
.driver_data = HIDPP_QUIRK_DELAYED_INIT | HIDPP_QUIRK_CLASS_M560 },
+ { /* Logitech MX Master with high resolution scroll */
+ HID_DEVICE(BUS_USB, HID_GROUP_LOGITECH_DJ_DEVICE,
+ USB_VENDOR_ID_LOGITECH, 0x4041),
+ .driver_data = HIDPP_QUIRK_CONNECT_EVENTS | HIDPP_QUIRK_HIRES_SCROLL },
+ { /* Logitech MX Anywhere 2r with high resolution scroll */
+ HID_DEVICE(BUS_USB, HID_GROUP_LOGITECH_DJ_DEVICE,
+ USB_VENDOR_ID_LOGITECH, 0x404a),
+ .driver_data = HIDPP_QUIRK_CONNECT_EVENTS | HIDPP_QUIRK_HIRES_SCROLL },
{ /* Keyboard logitech K400 */
HID_DEVICE(BUS_USB, HID_GROUP_LOGITECH_DJ_DEVICE,
USB_VENDOR_ID_LOGITECH, 0x4024),
--
2.9.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch
2017-03-25 22:49 ` [PATCH RFC 2/4] hid-logitech-hidpp: add support for high res wheel Mauro Carvalho Chehab
@ 2017-03-25 22:49 ` Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 4/4] hid-logitech-hidpp: add support " Mauro Carvalho Chehab
2017-03-27 1:53 ` [PATCH RFC 3/4] input: add a EV_SW event " Peter Hutterer
0 siblings, 2 replies; 10+ messages in thread
From: Mauro Carvalho Chehab @ 2017-03-25 22:49 UTC (permalink / raw)
To: linux-input
Cc: Mauro Carvalho Chehab, Dmitry Torokhov, Peter Hutterer,
Benjamin Tissoires, Greg Kroah-Hartman, Martin Schwidefsky,
Mauro Carvalho Chehab, Ingo Tuchscherer, Stuart Yoder,
Hans Verkuil, Douglas Anderson, Ping Cheng, Kamil Debski
Some mouses have a switch on their wheel, allowing to switch
between ratchet or free wheel mode. Add support for it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
include/linux/mod_devicetable.h | 2 +-
include/uapi/linux/input-event-codes.h | 4 +++-
2 files changed, 4 insertions(+), 2 deletions(-)
diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
index 8a57f0b1242d..73534c591b40 100644
--- a/include/linux/mod_devicetable.h
+++ b/include/linux/mod_devicetable.h
@@ -292,7 +292,7 @@ struct pcmcia_device_id {
#define INPUT_DEVICE_ID_LED_MAX 0x0f
#define INPUT_DEVICE_ID_SND_MAX 0x07
#define INPUT_DEVICE_ID_FF_MAX 0x7f
-#define INPUT_DEVICE_ID_SW_MAX 0x0f
+#define INPUT_DEVICE_ID_SW_MAX 0x1f
#define INPUT_DEVICE_ID_MATCH_BUS 1
#define INPUT_DEVICE_ID_MATCH_VENDOR 2
diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
index 23b2d377af59..a3eafd0527f1 100644
--- a/include/uapi/linux/input-event-codes.h
+++ b/include/uapi/linux/input-event-codes.h
@@ -782,7 +782,9 @@
#define SW_LINEIN_INSERT 0x0d /* set = inserted */
#define SW_MUTE_DEVICE 0x0e /* set = device disabled */
#define SW_PEN_INSERTED 0x0f /* set = pen inserted */
-#define SW_MAX 0x0f
+#define SW_RATCHET 0x10 /* set = ratchet mode,
+ unset: free wheel */
+#define SW_MAX 0x1f
#define SW_CNT (SW_MAX+1)
/*
--
2.9.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* [PATCH RFC 4/4] hid-logitech-hidpp: add support for ratchet switch
2017-03-25 22:49 ` [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch Mauro Carvalho Chehab
@ 2017-03-25 22:49 ` Mauro Carvalho Chehab
2017-03-27 1:53 ` [PATCH RFC 3/4] input: add a EV_SW event " Peter Hutterer
1 sibling, 0 replies; 10+ messages in thread
From: Mauro Carvalho Chehab @ 2017-03-25 22:49 UTC (permalink / raw)
To: linux-input
Cc: Mauro Carvalho Chehab, Dmitry Torokhov, Peter Hutterer,
Benjamin Tissoires, Jiri Kosina
Logitech Anywhere MX2 and MX master produce events for
the wheel ratchet/free wheel button. Add support for it.
Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
---
drivers/hid/hid-logitech-hidpp.c | 23 +++++++++++++++++++++--
1 file changed, 21 insertions(+), 2 deletions(-)
diff --git a/drivers/hid/hid-logitech-hidpp.c b/drivers/hid/hid-logitech-hidpp.c
index ee3f544bda4f..72f80869633f 100644
--- a/drivers/hid/hid-logitech-hidpp.c
+++ b/drivers/hid/hid-logitech-hidpp.c
@@ -1406,6 +1406,19 @@ static int hidpp_mouse_set_wheel_mode(struct hidpp_device *hidpp,
return ret;
}
+ ret = hidpp_send_fap_command_sync(hidpp, hrd->feature_index,
+ CMD_MOUSE_GET_WHEEL_RATCHET,
+ params, 16, &response);
+ if (ret > 0) {
+ hid_err(hidpp->hid_dev, "%s: received protocol error 0x%02x\n",
+ __func__, ret);
+ return -EPROTO;
+ }
+ if (ret)
+ return ret;
+
+ hrd->ratchet = response.fap.params[0] & 0x01;
+
params[0] = invert ? 0x4 : 0 |
high_res ? 0x2 : 0 |
hidpp_mode ? 0x1 : 0;
@@ -1945,10 +1958,11 @@ static int high_res_raw_event(struct hid_device *hdev, u8 *data, int size)
input_report_rel(hrd->input, REL_HIRES_WHEEL, delta);
else
input_report_rel(hrd->input, REL_WHEEL, delta);
+ } else if (data[3] == 0x10) {
+ hrd->ratchet = data[4] & 0x01;
+ input_report_switch(hrd->input, SW_RATCHET, hrd->ratchet);
}
- /* FIXME: also report ratchet events to userspace */
-
return 1;
}
@@ -1961,6 +1975,11 @@ static void high_res_populate_input(struct hidpp_device *hidpp,
__set_bit(REL_WHEEL, hrd->input->relbit);
__set_bit(REL_HIRES_WHEEL, hrd->input->relbit);
+ __set_bit(EV_SW, hrd->input->evbit);
+ __set_bit(SW_RATCHET, hrd->input->swbit);
+
+ /* Report current state of the ratchet switch */
+ input_report_switch(hrd->input, SW_RATCHET, hrd->ratchet);
}
--
2.9.3
^ permalink raw reply related [flat|nested] 10+ messages in thread
* Re: [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel
2017-03-25 22:49 ` [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 2/4] hid-logitech-hidpp: add support for high res wheel Mauro Carvalho Chehab
@ 2017-03-27 1:40 ` Peter Hutterer
1 sibling, 0 replies; 10+ messages in thread
From: Peter Hutterer @ 2017-03-27 1:40 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: linux-input, Dmitry Torokhov, Benjamin Tissoires, Hans Verkuil,
Mauro Carvalho Chehab, Douglas Anderson, Kamil Debski, Ping Cheng
On Sat, Mar 25, 2017 at 07:49:39PM -0300, Mauro Carvalho Chehab wrote:
> As some devices can produce either low-res or high-res
> vertical wheel EV_REL events, add a new event to allow
> userspace to distinguish between them.
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
Just replied to the other email, but this one is a nak until we have the
Documentation/input/event-codes.txt patch with it explaining how this code
should be used, what these codes represent, what the interaction is with
other codes (e.g. can a device send wheel and hires wheel at the same time?)
etc. There are a lot of questions left to be answered.
Cheers,
Peter
> ---
> include/uapi/linux/input-event-codes.h | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> index 3af60ee69053..23b2d377af59 100644
> --- a/include/uapi/linux/input-event-codes.h
> +++ b/include/uapi/linux/input-event-codes.h
> @@ -703,6 +703,7 @@
> #define REL_DIAL 0x07
> #define REL_WHEEL 0x08
> #define REL_MISC 0x09
> +#define REL_HIRES_WHEEL 0x0a
> #define REL_MAX 0x0f
> #define REL_CNT (REL_MAX+1)
>
> --
> 2.9.3
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch
2017-03-25 22:49 ` [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 4/4] hid-logitech-hidpp: add support " Mauro Carvalho Chehab
@ 2017-03-27 1:53 ` Peter Hutterer
2017-03-27 12:27 ` Mauro Carvalho Chehab
1 sibling, 1 reply; 10+ messages in thread
From: Peter Hutterer @ 2017-03-27 1:53 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: linux-input, Dmitry Torokhov, Benjamin Tissoires,
Greg Kroah-Hartman, Martin Schwidefsky, Mauro Carvalho Chehab,
Ingo Tuchscherer, Stuart Yoder, Hans Verkuil, Douglas Anderson,
Ping Cheng, Kamil Debski
On Sat, Mar 25, 2017 at 07:49:41PM -0300, Mauro Carvalho Chehab wrote:
> Some mouses have a switch on their wheel, allowing to switch
> between ratchet or free wheel mode. Add support for it.
I understand the want to support it because it's there but what do you
expect this to be used for?
tbh, I wouldn't know what to do with this information, short of displaying
some OSD to inform the user. Which is rather superfluous since the physical
change will feel obvious anyway.
A Documentation/input/event-codes.txt hunk would be welcomed here too
btw.
Cheers,
Peter
>
> Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> ---
> include/linux/mod_devicetable.h | 2 +-
> include/uapi/linux/input-event-codes.h | 4 +++-
> 2 files changed, 4 insertions(+), 2 deletions(-)
>
> diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
> index 8a57f0b1242d..73534c591b40 100644
> --- a/include/linux/mod_devicetable.h
> +++ b/include/linux/mod_devicetable.h
> @@ -292,7 +292,7 @@ struct pcmcia_device_id {
> #define INPUT_DEVICE_ID_LED_MAX 0x0f
> #define INPUT_DEVICE_ID_SND_MAX 0x07
> #define INPUT_DEVICE_ID_FF_MAX 0x7f
> -#define INPUT_DEVICE_ID_SW_MAX 0x0f
> +#define INPUT_DEVICE_ID_SW_MAX 0x1f
>
> #define INPUT_DEVICE_ID_MATCH_BUS 1
> #define INPUT_DEVICE_ID_MATCH_VENDOR 2
> diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> index 23b2d377af59..a3eafd0527f1 100644
> --- a/include/uapi/linux/input-event-codes.h
> +++ b/include/uapi/linux/input-event-codes.h
> @@ -782,7 +782,9 @@
> #define SW_LINEIN_INSERT 0x0d /* set = inserted */
> #define SW_MUTE_DEVICE 0x0e /* set = device disabled */
> #define SW_PEN_INSERTED 0x0f /* set = pen inserted */
> -#define SW_MAX 0x0f
> +#define SW_RATCHET 0x10 /* set = ratchet mode,
> + unset: free wheel */
> +#define SW_MAX 0x1f
> #define SW_CNT (SW_MAX+1)
>
> /*
> --
> 2.9.3
>
>
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch
2017-03-27 1:53 ` [PATCH RFC 3/4] input: add a EV_SW event " Peter Hutterer
@ 2017-03-27 12:27 ` Mauro Carvalho Chehab
2017-03-28 0:25 ` Peter Hutterer
0 siblings, 1 reply; 10+ messages in thread
From: Mauro Carvalho Chehab @ 2017-03-27 12:27 UTC (permalink / raw)
To: Peter Hutterer
Cc: linux-input, Dmitry Torokhov, Benjamin Tissoires,
Greg Kroah-Hartman, Martin Schwidefsky, Mauro Carvalho Chehab,
Ingo Tuchscherer, Stuart Yoder, Hans Verkuil, Douglas Anderson,
Ping Cheng, Kamil Debski
Em Mon, 27 Mar 2017 11:53:57 +1000
Peter Hutterer <peter.hutterer@who-t.net> escreveu:
> On Sat, Mar 25, 2017 at 07:49:41PM -0300, Mauro Carvalho Chehab wrote:
> > Some mouses have a switch on their wheel, allowing to switch
> > between ratchet or free wheel mode. Add support for it.
>
> I understand the want to support it because it's there but what do you
> expect this to be used for?
>
> tbh, I wouldn't know what to do with this information, short of displaying
> some OSD to inform the user. Which is rather superfluous since the physical
> change will feel obvious anyway.
For this particular device, the main reason is because it is there :-)
As adding support for it is trivial, I don't see any reason why not
adding it.
Yet, applications could use it, in order to switch between a "discrete"
mode, where one wheel position corresponds to one line of scroll, and
movements below a threshold would be ignored.
>
> A Documentation/input/event-codes.txt hunk would be welcomed here too
> btw.
Sure. Will do on a next patch series, once we agree about the high
resolution wheel movements API.
>
> Cheers,
> Peter
>
> >
> > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> > ---
> > include/linux/mod_devicetable.h | 2 +-
> > include/uapi/linux/input-event-codes.h | 4 +++-
> > 2 files changed, 4 insertions(+), 2 deletions(-)
> >
> > diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
> > index 8a57f0b1242d..73534c591b40 100644
> > --- a/include/linux/mod_devicetable.h
> > +++ b/include/linux/mod_devicetable.h
> > @@ -292,7 +292,7 @@ struct pcmcia_device_id {
> > #define INPUT_DEVICE_ID_LED_MAX 0x0f
> > #define INPUT_DEVICE_ID_SND_MAX 0x07
> > #define INPUT_DEVICE_ID_FF_MAX 0x7f
> > -#define INPUT_DEVICE_ID_SW_MAX 0x0f
> > +#define INPUT_DEVICE_ID_SW_MAX 0x1f
> >
> > #define INPUT_DEVICE_ID_MATCH_BUS 1
> > #define INPUT_DEVICE_ID_MATCH_VENDOR 2
> > diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> > index 23b2d377af59..a3eafd0527f1 100644
> > --- a/include/uapi/linux/input-event-codes.h
> > +++ b/include/uapi/linux/input-event-codes.h
> > @@ -782,7 +782,9 @@
> > #define SW_LINEIN_INSERT 0x0d /* set = inserted */
> > #define SW_MUTE_DEVICE 0x0e /* set = device disabled */
> > #define SW_PEN_INSERTED 0x0f /* set = pen inserted */
> > -#define SW_MAX 0x0f
> > +#define SW_RATCHET 0x10 /* set = ratchet mode,
> > + unset: free wheel */
> > +#define SW_MAX 0x1f
> > #define SW_CNT (SW_MAX+1)
> >
> > /*
> > --
> > 2.9.3
> >
> >
Thanks,
Mauro
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch
2017-03-27 12:27 ` Mauro Carvalho Chehab
@ 2017-03-28 0:25 ` Peter Hutterer
2017-03-28 9:36 ` Mauro Carvalho Chehab
0 siblings, 1 reply; 10+ messages in thread
From: Peter Hutterer @ 2017-03-28 0:25 UTC (permalink / raw)
To: Mauro Carvalho Chehab
Cc: linux-input, Dmitry Torokhov, Benjamin Tissoires,
Greg Kroah-Hartman, Martin Schwidefsky, Mauro Carvalho Chehab,
Ingo Tuchscherer, Stuart Yoder, Hans Verkuil, Douglas Anderson,
Ping Cheng, Kamil Debski
On Mon, Mar 27, 2017 at 09:27:31AM -0300, Mauro Carvalho Chehab wrote:
> Em Mon, 27 Mar 2017 11:53:57 +1000
> Peter Hutterer <peter.hutterer@who-t.net> escreveu:
>
> > On Sat, Mar 25, 2017 at 07:49:41PM -0300, Mauro Carvalho Chehab wrote:
> > > Some mouses have a switch on their wheel, allowing to switch
> > > between ratchet or free wheel mode. Add support for it.
> >
> > I understand the want to support it because it's there but what do you
> > expect this to be used for?
> >
> > tbh, I wouldn't know what to do with this information, short of displaying
> > some OSD to inform the user. Which is rather superfluous since the physical
> > change will feel obvious anyway.
>
> For this particular device, the main reason is because it is there :-)
> As adding support for it is trivial, I don't see any reason why not
> adding it.
>
> Yet, applications could use it, in order to switch between a "discrete"
> mode, where one wheel position corresponds to one line of scroll, and
> movements below a threshold would be ignored.
fwiw, that would more likely be the result of receiving a different event
code (hires-wheel), more so than a ratchet switch - at least on this device.
the mice I have here don't change the behaviour of the wheel, so the
granularity is the same before and after. But they also don't send events
for the state, so there's that :)
Cheers,
Peter
>
>
> >
> > A Documentation/input/event-codes.txt hunk would be welcomed here too
> > btw.
>
> Sure. Will do on a next patch series, once we agree about the high
> resolution wheel movements API.
> >
> > Cheers,
> > Peter
> >
> > >
> > > Signed-off-by: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> > > ---
> > > include/linux/mod_devicetable.h | 2 +-
> > > include/uapi/linux/input-event-codes.h | 4 +++-
> > > 2 files changed, 4 insertions(+), 2 deletions(-)
> > >
> > > diff --git a/include/linux/mod_devicetable.h b/include/linux/mod_devicetable.h
> > > index 8a57f0b1242d..73534c591b40 100644
> > > --- a/include/linux/mod_devicetable.h
> > > +++ b/include/linux/mod_devicetable.h
> > > @@ -292,7 +292,7 @@ struct pcmcia_device_id {
> > > #define INPUT_DEVICE_ID_LED_MAX 0x0f
> > > #define INPUT_DEVICE_ID_SND_MAX 0x07
> > > #define INPUT_DEVICE_ID_FF_MAX 0x7f
> > > -#define INPUT_DEVICE_ID_SW_MAX 0x0f
> > > +#define INPUT_DEVICE_ID_SW_MAX 0x1f
> > >
> > > #define INPUT_DEVICE_ID_MATCH_BUS 1
> > > #define INPUT_DEVICE_ID_MATCH_VENDOR 2
> > > diff --git a/include/uapi/linux/input-event-codes.h b/include/uapi/linux/input-event-codes.h
> > > index 23b2d377af59..a3eafd0527f1 100644
> > > --- a/include/uapi/linux/input-event-codes.h
> > > +++ b/include/uapi/linux/input-event-codes.h
> > > @@ -782,7 +782,9 @@
> > > #define SW_LINEIN_INSERT 0x0d /* set = inserted */
> > > #define SW_MUTE_DEVICE 0x0e /* set = device disabled */
> > > #define SW_PEN_INSERTED 0x0f /* set = pen inserted */
> > > -#define SW_MAX 0x0f
> > > +#define SW_RATCHET 0x10 /* set = ratchet mode,
> > > + unset: free wheel */
> > > +#define SW_MAX 0x1f
> > > #define SW_CNT (SW_MAX+1)
> > >
> > > /*
> > > --
> > > 2.9.3
> > >
> > >
>
>
>
> Thanks,
> Mauro
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch
2017-03-28 0:25 ` Peter Hutterer
@ 2017-03-28 9:36 ` Mauro Carvalho Chehab
0 siblings, 0 replies; 10+ messages in thread
From: Mauro Carvalho Chehab @ 2017-03-28 9:36 UTC (permalink / raw)
To: Peter Hutterer
Cc: linux-input, Dmitry Torokhov, Benjamin Tissoires,
Greg Kroah-Hartman, Martin Schwidefsky, Mauro Carvalho Chehab,
Ingo Tuchscherer, Stuart Yoder, Hans Verkuil, Douglas Anderson,
Ping Cheng, Kamil Debski
Em Tue, 28 Mar 2017 10:25:17 +1000
Peter Hutterer <peter.hutterer@who-t.net> escreveu:
> On Mon, Mar 27, 2017 at 09:27:31AM -0300, Mauro Carvalho Chehab wrote:
> > Em Mon, 27 Mar 2017 11:53:57 +1000
> > Peter Hutterer <peter.hutterer@who-t.net> escreveu:
> >
> > > On Sat, Mar 25, 2017 at 07:49:41PM -0300, Mauro Carvalho Chehab wrote:
> > > > Some mouses have a switch on their wheel, allowing to switch
> > > > between ratchet or free wheel mode. Add support for it.
> > >
> > > I understand the want to support it because it's there but what do you
> > > expect this to be used for?
> > >
> > > tbh, I wouldn't know what to do with this information, short of displaying
> > > some OSD to inform the user. Which is rather superfluous since the physical
> > > change will feel obvious anyway.
> >
> > For this particular device, the main reason is because it is there :-)
> > As adding support for it is trivial, I don't see any reason why not
> > adding it.
> >
> > Yet, applications could use it, in order to switch between a "discrete"
> > mode, where one wheel position corresponds to one line of scroll, and
> > movements below a threshold would be ignored.
>
> fwiw, that would more likely be the result of receiving a different event
> code (hires-wheel), more so than a ratchet switch - at least on this device.
Yeah, that would be another alternative.
> the mice I have here don't change the behaviour of the wheel, so the
> granularity is the same before and after. But they also don't send events
> for the state, so there's that :)
Another alternative would be that applications could be listening to
EV_SW SW_RATCHET event. When the switch changes to free wheel, it could
be enabling high-resolution mode.
Thanks,
Mauro
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2017-03-28 9:37 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2017-03-25 22:49 [PATCH RFC 0/4] Improve support for Logitech MX Anywhere 2 Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 2/4] hid-logitech-hidpp: add support for high res wheel Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 3/4] input: add a EV_SW event for ratchet switch Mauro Carvalho Chehab
2017-03-25 22:49 ` [PATCH RFC 4/4] hid-logitech-hidpp: add support " Mauro Carvalho Chehab
2017-03-27 1:53 ` [PATCH RFC 3/4] input: add a EV_SW event " Peter Hutterer
2017-03-27 12:27 ` Mauro Carvalho Chehab
2017-03-28 0:25 ` Peter Hutterer
2017-03-28 9:36 ` Mauro Carvalho Chehab
2017-03-27 1:40 ` [PATCH RFC 1/4] input: add an EV_REL event for high-res vertical wheel Peter Hutterer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).