SEMI_MT vs. simulated mt (was Re: [PATCH v3 0/4] Cypress PS/2 Trackpad driver)
From: Kamal Mostafa <hidden>
Date: 2012-12-05 02:22:23
Also in:
lkml
Hi Dmitry and Henrik- Regarding SEMI_MT vs. "simulated multitouch" . . .
quoted
Patch #4 (new) reintroduces simulated multitouch for up to 5 fingers (#if CYPRESS_SIMULATE_MT), disabling SEMI_MT again. If that functionality (support for >2 fingers) can be acheived in some better way, please advise.
On Sun, 2012-12-02 at 23:36 -0800, Dmitry Torokhov wrote:
You can still report true number of fingers on the pad via BTN_TOOL_*TAP while reporting the bounding box, the same way as Synaptics, Elantech, ALPS and Sentelic drivers are doing it.
On Mon, 2012-12-03 at 08:45 +0100, Henrik Rydberg wrote:
+ ret = input_mt_init_slots(input, CYTP_MAX_MT_SLOTS, + INPUT_MT_POINTER|INPUT_MT_DROP_UNUSED|INPUT_MT_TRACK); Here, INPUT_MT_POINTER needs to be dropped; for semi-mt devices, the number of fingers is propagated separately using input_mt_report_finger_count(dev, finger_count_as_reported_by_the_device), which conflicts with automatic handling of pointer logic.
Well... The forthcoming PATCH v4 version now implements all that ^^ as you requested, but it appears that my desktop (X with Unity desktop in Ubuntu 12.10) does not actually respond to input_mt_report_finger_count events (e.g. BTN_TOOL_TRIPLETAP). I asked a colleague test a couple of other semi-mt touchpads (Synaptics and ALPS) and we found the same result: The desktop doesn't see >2 finger events with any of these semi-mt devices, even though 'input-events' does show that the BTN_TOOL_*TAP events are in the input stream. (Do other X desktops actually support BTN_TOOL_*TAP?) I understand that this may be "a userspace problem", but from my perspective the "simulated multitouch" patch is still necessary for >2 finger tap/drag. I have left it in my PATCH v4 set for that reason (patch 4/4; disabled by an ifdef). It can be included and left disabled, or enabled, or dropped as you see fit. -Kamal