Re: [mediaqueries4]Differentiating touchscreen+mouse from touchscreen only scenarios

On Fri, Dec 19, 2014 at 8:56 AM, Rick Byers <rbyers@chromium.org> wrote:
> On Thu, Dec 18, 2014 at 5:55 PM, Oren Freiberg <oren.freiberg@microsoft.com>
> wrote:
>>
>> > We think the spec should avoid ambiguities around non-pointer
>> > devices---we were bitten by this during our implementation.
>> > Details: Even though 'pointer', 'any-pointer', 'hover' and 'any-hover'
>> > values are meant for pointing devices only (right?), the spec
>> >    http://dev.w3.org/csswg/mediaqueries-4/#mf-interaction
>> > defines 'pointer' and 'hover' values ambiguously with respect to
>> > inclusion/exclusion of non-pointing input device like keyboards:
>> >
>> > A. The 'pointer' value definitions include non-pointing devices, but the
>> > 'hover' value definitions don't. These defs use "... primary input mechanism
>> > ..." and "... primary pointing system ..." respectively.
>> > B. The 'any-pointer' and 'any-hover' definitions include non-pointing
>> > devices: "... capabilities of all the input devices ...".
>
>
> It turns out Tab and I made some different assumptions on the intentions
> here (and failed to talk to each other about it - sorry!).  I think the two
> specific open issues are:
>
> 1) Is the distinction in the spec language between "pointer device" and
> "input device" meaningful?  Can we just clarify all the wording to refer to
> "pointing" devices to make it clear these APIs have nothing to do with
> non-pointer input devices like keyboards?

Yeah, I didn't intend any difference.  I'll unify it to "pointing devices".

> 2) What are the semantics for "any-{pointer,hover}: none"?  If it's strictly
> a union of the {pointer,hover} values (as Tab instructed Dave off thread for
> our initial implementation in chromium) then 'any-pointer: none' will always
> be true.  If instead, it's a union of all capabilities (where 'none'
> represents the absence of a relevant capability) then 'none' is mutually
> exclusive with all other values and so 'any-pointer' is true iff 'pointer'
> is true.  The latter makes the most conceptual sense to me, and appears
> (from our limited testing) to be what the IE tech preview implements.  We've
> just switched our implementation to match this (before I was aware of the
> discussion between Dave and Tab on this point).

The latter is what's intended - I don't think any MQ should be both
truthy and falsey at the same time, so "none" should be mutually
exclusive with the rest.  I'll tweak the wording to make this clear.

~TJ

Received on Friday, 19 December 2014 17:41:17 UTC