Henrik Rydberg | 5 Sep 03:18

[PATCH 2/2] input: mousedev: Emulate right and middle buttons for single-button touchpads

On most linux-based systems, the right and middle buttons are used
extensively. On computers lacking either of those buttons, such as
the Apple Macbooks, emulation is needed. This patch adds emulation
of the missing buttons via two-fingers-and-click and three-fingers-
and-click operations, which has recently become standard, both in
MacOS and in the Xorg synaptics driver.

Signed-off-by: Henrik Rydberg <rydberg <at> euromail.se>
---
 drivers/input/mousedev.c |   31 +++++++++++++++++++++++++++++++
 1 files changed, 31 insertions(+), 0 deletions(-)

diff --git a/drivers/input/mousedev.c b/drivers/input/mousedev.c
index 27e1d73..a1e929f 100644
--- a/drivers/input/mousedev.c
+++ b/drivers/input/mousedev.c
@@ -53,6 +53,14 @@ static unsigned tap_move = 20;
 module_param(tap_move, uint, 0644);
 MODULE_PARM_DESC(tap_move, "Tap distance for touchpads in absolute mode (res)");

+static unsigned two_finger_code = BTN_RIGHT;
+module_param(two_finger_code, uint, 0644);
+MODULE_PARM_DESC(two_finger_code, "Button code of two-finger click");
+
+static unsigned three_finger_code = BTN_MIDDLE;
+module_param(three_finger_code, uint, 0644);
+MODULE_PARM_DESC(three_finger_code, "Button code of three-finger click");
+
 struct mousedev_hw_data {
 	int dx, dy, dz;
(Continue reading)

Dmitry Torokhov | 10 Sep 14:52

Re: [PATCH 2/2] input: mousedev: Emulate right and middle buttons for single-button touchpads

Hi Henrik,

On Fri, Sep 05, 2008 at 03:19:56AM +0200, Henrik Rydberg wrote:
> On most linux-based systems, the right and middle buttons are used
> extensively. On computers lacking either of those buttons, such as
> the Apple Macbooks, emulation is needed. This patch adds emulation
> of the missing buttons via two-fingers-and-click and three-fingers-
> and-click operations, which has recently become standard, both in
> MacOS and in the Xorg synaptics driver.
> 

The standard way of emulating right and middle button presses for
"button-deficient" devices is to use Macintosh emulation
(MAC_EMUMOUSEBTN) that works not only for touchpads but for regular mice
as well.

Overall I don't think we should enhance mousedev for scenarios where
proper solution is to install Synaptics X driver. This also goes for
your other patch improving tapping in mousedev.

--

-- 
Dmitry
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo <at> vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Henrik Rydberg | 10 Sep 16:51

Re: [PATCH 2/2] input: mousedev: Emulate right and middle buttons for single-button touchpads

Greetings Dmitry,

> On Fri, Sep 05, 2008 at 03:19:56AM +0200, Henrik Rydberg wrote:
>> On most linux-based systems, the right and middle buttons are used
>> extensively. On computers lacking either of those buttons, such as
>> the Apple Macbooks, emulation is needed. This patch adds emulation
>> of the missing buttons via two-fingers-and-click and three-fingers-
>> and-click operations, which has recently become standard, both in
>> MacOS and in the Xorg synaptics driver.
>>
> 
> The standard way of emulating right and middle button presses for
> "button-deficient" devices is to use Macintosh emulation
> (MAC_EMUMOUSEBTN) that works not only for touchpads but for regular mice
> as well.

I have a hard time believing that in five years from now, people will
still consider pressing a key on the keyboard the standard way to
emulate a right click. Nevertheless, I can see the point in moving
away from user-land decisions in the kernel. I will not pursue this one
further, although it is a rather neat piece of functionality.

> Overall I don't think we should enhance mousedev for scenarios where
> proper solution is to install Synaptics X driver. This also goes for
> your other patch improving tapping in mousedev.

Regarding the tapping patch; it is addressing the correctness of
already implemented functionality. I can see nothing wrong with that.

Henrik
(Continue reading)

Dmitry Torokhov | 10 Sep 17:32

Re: [PATCH 2/2] input: mousedev: Emulate right and middle buttons for single-button touchpads

On Wed, Sep 10, 2008 at 04:51:52PM +0200, Henrik Rydberg wrote:
> Greetings Dmitry,
> 
> > On Fri, Sep 05, 2008 at 03:19:56AM +0200, Henrik Rydberg wrote:
> >> On most linux-based systems, the right and middle buttons are used
> >> extensively. On computers lacking either of those buttons, such as
> >> the Apple Macbooks, emulation is needed. This patch adds emulation
> >> of the missing buttons via two-fingers-and-click and three-fingers-
> >> and-click operations, which has recently become standard, both in
> >> MacOS and in the Xorg synaptics driver.
> >>
> > 
> > The standard way of emulating right and middle button presses for
> > "button-deficient" devices is to use Macintosh emulation
> > (MAC_EMUMOUSEBTN) that works not only for touchpads but for regular mice
> > as well.
> 
> I have a hard time believing that in five years from now, people will
> still consider pressing a key on the keyboard the standard way to
> emulate a right click.

Well, what other options do you have if your device has only one
button and nothing else (i.e. it's a mouse, not a touchpad)? Anyway, I
hope in 5 years distros will switch to pure evdev-based interfaces and
won't use mousedev at all.

> Nevertheless, I can see the point in moving
> away from user-land decisions in the kernel. I will not pursue this one
> further, although it is a rather neat piece of functionality.
> 
(Continue reading)

Henrik Rydberg | 10 Sep 18:05

Re: [PATCH 2/2] input: mousedev: Emulate right and middle buttons for single-button touchpads

>> Regarding the tapping patch; it is addressing the correctness of
>> already implemented functionality. I can see nothing wrong with that.
>>
> 
> My position that since the isssue can be "fixed" by simply installing
> the proper X driver I'd rather not include it. Mousedev purpose is to
> provide good enough emulation in absence of a native driver and that's
> it. Also, the default value would not work well on high-resiolution
> devices (like Synaptics) and would require user fiddling with kernel
> parameters - not worth it in my opinion.

The parameter could be made dimensionless and the distance test scaled
with the size of the device; the argument invalidates the current patch,
but not the idea itself. Maybe the patch will appear in acceptable form
at some point, but for now, I rest my case.

Henrik
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo <at> vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Henrik Rydberg | 11 Sep 08:31

Re: [PATCH 2/2] input: mousedev: Emulate right and middle buttons for single-button touchpads

Henrik Rydberg wrote:
>>> Regarding the tapping patch; it is addressing the correctness of
>>> already implemented functionality. I can see nothing wrong with that.
>>>
>> My position that since the isssue can be "fixed" by simply installing
>> the proper X driver I'd rather not include it. Mousedev purpose is to
>> provide good enough emulation in absence of a native driver and that's
>> it. Also, the default value would not work well on high-resiolution
>> devices (like Synaptics) and would require user fiddling with kernel
>> parameters - not worth it in my opinion.
> 
> The parameter could be made dimensionless and the distance test scaled
> with the size of the device; the argument invalidates the current patch,
> but not the idea itself. Maybe the patch will appear in acceptable form
> at some point, but for now, I rest my case.

Actually, the tap_move parameter is already dimensionless - the
mousedev_touchpad functions emulates movements on an imaginary screen
of resolution 256x256. Thus, with the following description change

-MODULE_PARM_DESC(tap_move, "Tap distance for touchpads in absolute mode (res)");
+MODULE_PARM_DESC(tap_move, "Tap move radius (256 * fraction of screen)");

it should be clear that the parameter does not depend on device resolution.
It could even be made a constant in the code, if that is preferred.

Henrik
--
To unsubscribe from this list: send the line "unsubscribe linux-input" in
the body of a message to majordomo <at> vger.kernel.org
(Continue reading)


Gmane