#5179: Touchpad buttons not working correctly due to missing ClickPad support
---------------------------------+----------------------------
Reporter: Lynton | Owner: nobody
Type: enhancement | Status: assigned
Priority: normal | Milestone: Unscheduled
Component: Drivers/Mouse/PS2 | Version: R1/Development
Resolution: | Keywords: mouse
Blocked By: | Blocking: 12403
Has a Patch: 0 | Platform: x86
---------------------------------+----------------------------
Comment (by pulkomandy):
Well, I made some investigations yesterday after closing your ticket.
There isn't anything specific for these in the Synaptics touchpad
protocol. This means, the touchpad will report both a button click, and a
second finger on the touchpad (1 finger doing mouse moves + 1 finger over
the "button" area). The touchpad isn't multi-touch, but it can tell when
there are more than 1 finger on the pad.
In our driver, all the processing for this is in http://cgit.haiku-
os.org/haiku/tree/src/add-ons/kernel/bus_managers/ps2/movement_maker.cpp .
This is not hardware-specific, which means we don't need a skilled
hardware hacker to work on this. This piece of code takes the events from
the touchpad as an input (X and Y position, Z pressure, and "W", which
indicates various things including 2 or 3-finger movement, size of the
finger, and a few others), and generates events for the input server.
The entry point is the "EventToMovement" method. You can see that in the
case of the clickpad, we will never go in _NoTouchToMovement, because when
a button is pressed, there is always a finger (the same one) on the pad.
Enabling the #define TRACE_MOVEMENT_MAKER in this file and looking at the
syslog will provide some extra information. If someone does that, maybe
enabling #define TRACE_PS2 in ps2_common.h would provide also low-level
info from the driver itself, which may be useful, or too verbose and
prevent proper use of the device at all.
--
Ticket URL: <https://dev.haiku-os.org/ticket/5179#comment:19>
Haiku <https://dev.haiku-os.org>
Haiku - the operating system.