- From: Rick Byers <rbyers@chromium.org>
- Date: Wed, 10 Sep 2014 21:46:19 -0400
- To: Jacob Rossi <Jacob.Rossi@microsoft.com>
- Cc: "public-pointer-events@w3.org" <public-pointer-events@w3.org>, David Bokan <bokan@chromium.org>
- Message-ID: <CAFUtAY8bxCwboDgj2Y9fFgoHur_b3=4PSSMNm7V7c7FrfE3sxA@mail.gmail.com>
Thank you! Indeed it looks like this is Windows 7 only, and unlike IE we do still want to support touchscreens on Windows 7 (a small but non-trivial fraction of our touchscreen users are still on Windows 7). It looks like SM_DIGITIZER is false in these cases, so I think we can try looking at SM_MAXIMUMTOUCHES only when SM_DIGITIZER is true. Sound reasonable to you? Thanks, Rick On Wed, Sep 10, 2014 at 7:44 PM, Jacob Rossi <Jacob.Rossi@microsoft.com> wrote: > Definitely happy to help here. Our code is roughly: > > > > lMaxTouchPoints = 0; > > if (Win8+) > > { > > lMaxTouchPoints = GetSystemMetrics(SM_MAXIMUMTOUCHES); > > } > > return lMaxTouchPoints; > > > > The OS check is there because we don’t support touch in the IE platform on > Windows 7 and usage of touchscreen devices on Win7 is extremely low (most > have moved to Win8+). > > Have you seen reports of this on Windows 8/8.1 or just Windows 7? > > > > There definitely are touchpad drivers that like to install a fake touch > driver in order to fake zoom gestures (e.g. pinch to zoom). I don’t think > there’s a way for the Windows input stack to tell the difference between > that and an actual touchscreen. But if you’d like, I can loop you in with > our Win32 input team. > > > > -Jacob > > > > *From:* rbyers@google.com [mailto:rbyers@google.com] *On Behalf Of *Rick > Byers > *Sent:* Wednesday, September 10, 2014 10:26 AM > *To:* Jacob Rossi > *Cc:* public-pointer-events@w3.org; David Bokan > *Subject:* IE implementation of navigator.maxTouchPoints > > > > Hey Jacob, > > We're getting reports of some complaints of navigator.maxTouchPoints > returning 1 on Chrome when there is in fact no touchscreen. IE11 correctly > returns 0. http://crbug.com/352942. Scott (from MS OpenTech) wrote the > code > <https://code.google.com/p/chromium/codesearch#chromium/src/ui/base/touch/touch_device_win.cc&q=MAXTOUCHPOINTS&sq=package:chromium&type=cs&l=17> > for this for us, basically just: > > > > int MaxTouchPoints() { > > return GetSystemMetrics(SM_MAXIMUMTOUCHES); > > } > > > > Apparently, despite what we'd expect fro the MSDN docs, this is > insufficient. Users report that it returns 1 in scenarios with both an > internal and external mouse plugged in - although we haven't been able to > reproduce it (and they've confirmed they see those values from the API > directly, so it's not some bug in chrome). > > > > Any chance you can share the algorithm with us that IE uses to compute > maxTouchPoints on windows? Ideally Chrome and IE would always agree here, > and there's obviously some special cases. > > > > Thanks, > > Rick > > > > > > > > >
Received on Thursday, 11 September 2014 01:47:06 UTC