Ah, I see now that there are several points at which it could return early and not reach the ABS_TOOL_WIDTH code.
I tried out your little patch to force the width to be reported and captured evtest output during a session of normal computer use. First, I noticed that still the width was not always reported, though it seemed to be reported most often when I brushed my palm against the pad. Secondly, I wanted to test the claim that it is not meaningful to report pressure and width simultaneously so I parsed out the (width, pressure) pairs from evtest and plotted them. While there is a positive correlation between the two, it is definitely possible to have low pressure/high width touches and vice versa. Here are my data if you are curious: https://gist.github.com/silverhammermba/43abb0fde7b17d557d2b >From what I've read about the kernel multitouch protocol, the claim from your previous link that "ABS_MT_PRESSURE and ABS_MT_TOUCH_MAJOR are normally mutually exclusive" only makes sense if the tool width (i.e. ABS_MT_WIDTH_MAJOR) is being reported. In that case the pressure should be equivalent to the ratio of TOUCH_MAJOR to WIDTH_MAJOR and it would not make sense for a device to report both. Thus there are two acceptable situations for a device that claims to report tool width: report tool width and pressure or report tool width and touch width. The second problem - the palm detection code not working without width - seems like it could be more generally useful if there are touchpads that only report pressure. However I don't see that as the issue here since it seems clear that my touchpad *can* report width. -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux in Ubuntu. https://bugs.launchpad.net/bugs/1245328 Title: Synaptics kernel driver does not report finger width information, breaking usermode driver's palm detection Status in “linux” package in Ubuntu: Confirmed Bug description: While doing some work on the Xorg synaptics driver, I noticed that we never actually detect palm blocking even after running synclient PalmDetect=1. Digging in a bit, the driver claims in its capability bits that it should be sending ABS_TOOL_WIDTH records, but according to evtest(1), the driver never sends these advertised records to userspace. As a result, the Xorg synaptics driver never sees hw->fingerWidth become non-zero in SynapticsDetectFinger and never detects that I've mashed my palm into the large touchpad on this machine. Expected: Kill X. Run evtest(1). Select touchpad device. Move touchpad. See ABS_TOOL_WIDTH records in the event stream. Actual: No ABS_TOOL_WIDTH records even though the device claims to support them in its capability bits. ProblemType: Bug DistroRelease: Ubuntu 13.10 Package: linux-image-3.11.0-12-generic 3.11.0-12.19 [modified: boot/vmlinuz-3.11.0-12-generic] ProcVersionSignature: Ubuntu 3.11.0-12.19-generic 3.11.3 Uname: Linux 3.11.0-12-generic x86_64 ApportVersion: 2.12.5-0ubuntu2.1 Architecture: amd64 AudioDevicesInUse: USER PID ACCESS COMMAND /dev/snd/controlC0: dancol 2258 F.... pulseaudio Date: Sun Oct 27 21:43:01 2013 HibernationDevice: RESUME=UUID=7da7377a-42c7-49f8-a060-8dee466c61fd InstallationDate: Installed on 2013-10-23 (4 days ago) InstallationMedia: Ubuntu 13.10 "Saucy Salamander" - Release amd64 (20131016.1) MachineType: LENOVO 34601F5 MarkForUpload: True ProcFB: 0 inteldrmfb ProcKernelCmdLine: BOOT_IMAGE=/vmlinuz-3.11.0-12-generic root=/dev/mapper/ubuntu--vg-root ro quiet splash vt.handoff=7 RelatedPackageVersions: linux-restricted-modules-3.11.0-12-generic N/A linux-backports-modules-3.11.0-12-generic N/A linux-firmware 1.116 SourcePackage: linux UpgradeStatus: No upgrade log present (probably fresh install) dmi.bios.date: 04/29/2013 dmi.bios.vendor: LENOVO dmi.bios.version: G6ET96WW (2.56 ) dmi.board.asset.tag: Not Available dmi.board.name: 34601F5 dmi.board.vendor: LENOVO dmi.board.version: Not Defined dmi.chassis.asset.tag: 2059198 dmi.chassis.type: 10 dmi.chassis.vendor: LENOVO dmi.chassis.version: Not Available dmi.modalias: dmi:bvnLENOVO:bvrG6ET96WW(2.56):bd04/29/2013:svnLENOVO:pn34601F5:pvrThinkPadX1Carbon:rvnLENOVO:rn34601F5:rvrNotDefined:cvnLENOVO:ct10:cvrNotAvailable: dmi.product.name: 34601F5 dmi.product.version: ThinkPad X1 Carbon dmi.sys.vendor: LENOVO To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux/+bug/1245328/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp