Re: RfC: Last Call Working Draft of Pointer Events; deadline December 4

1. I can't link to the examples, please give them ids.

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-PointerEvent-pointerType

> See Example 2 for a basic demonstration of how the pointerType can be used.

That really wants to link to example 2, but it can't, so it doesn't. 

2. cancell?able:

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h2_examples

> EXAMPLE 4: Firing an untrusted pointer event from script
> var event = new PointerEvent("pointerover",
>   {bubbles: true, 
>    cancelable: true, 

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h4_firing-events-using-the-pointerevent-interface

> Initialize the cancelable attribute for the event to true if the event name is

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h4_list-of-pointer-events

> Cancellable

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h_note_20

> Touch manipulations are intentionally not a default action of pointer events.
> Removing this dependency on the cancellation of events facilitates performance optimizations by the user agent.

3. spellcheck

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#process-pending-pointer-capture

> and the hit test node has recieved [sic] pointerover

4. w3 is en-us 

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h3_implicit-pointer-capture

> Some user agents implement their own implicit pointer capture behaviour [en-gb]

Note that the document also includes the correct spelling (behavior(s)) -- including in the outline.


5. like/or/a

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h2_abstract

> This document defines events and related interfaces for handling hardware agnostic pointer input from devices like a mouse, pen, or touchscreen.

There are a couple of problems with "like"/"or"
a. "like" implies "like, but not actually", so you're defining events for things that are similar to mouse/pen/touchscreen, but don't actually include mouse/pen/touchscreen.
b. "or" bothers me. You should really want to use "and" in your list. or end it with "etc."
c. there's an article "a" for mouse, but you aren't really saying "like a specific mouse", you mean mice in general.

I'd probably replace "like" with "including", drop "or" entirely, and add "etc." to the end.

... handling input in a device agnostic way from hardware including mouse, pen, touchscreen, etc.

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#intro

> Newer computing devices today, however, incorporate other forms of input, like touchscreens or pen input.

Same objections to like/or

6. "other than mouse" is awkward.

> For compatibility with existing mouse based content, this specification also describes a mapping to fire [DOM-LEVEL-3-EVENTS] Mouse Events for pointer device types other than mouse.

"other than mouse" is awkward.

... for other pointer device types.

--
as an asside, I need to ask the Process TF to consider that WGs shouldn't be allowed to claim a document has satisfied technical requirements if it hasn't been run through a spell checking program. 
--

7. step function

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#intro

> However, that approach requires a step function in opportunity cost to authors when adding support for a new input type.

This is an introduction, but i have no idea what a "step function" is here. Ideally your introduction should be in plain English. Note that I consider "opportunity cost" to be understandable.

> A pointer can be any point of contact on the screen made by a mouse cursor, pen, touch (including multi-touch), or other pointing input device. 

What if there is no point of contact?

(Perhaps it's referential only)

8. necessary

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#intro

> The primary goal is to provide a single set of events and interfaces that allow for easier authoring for cross-device pointer input while still allowing for device-specific handling when necessary.

I object to "necessary", how about "when an author insists on being stubborn and not forward looking to the exclusion of other input methods". (It's ok to drop the end of this correction, but I'd hope that the spirit of my suggestion can be incorporated.)

> only where necessary to get the best experience.

s/the best/an augmented/


9. this paragraph is hiding important "key goals" in a rather long paragraph. that's unfortunate, they should really be bulleted.

> An additional key goal is to enable multi-threaded user agents to handle default touch actions, such as scrolling, without blocking on script execution.

10. active pointer

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#dfn-active-pointer

> In some platforms, the set of active pointers includes all pointer input to the device, including any that are not targeted at the user agent (e.g. another application).

s/In/On/
s/another application/those targeted at (captured by?) other applications/

11. digitizer

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#dfn-digitizer

> Most commonly, this is the surface that sense input from touch contact or a pen stylus.

s/sense/senses/
s/from/from the/

12. unique

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-PointerEvent-pointerId

> This identifier must be unique from all other active pointers at the time.

What is the scope of uniqueness here? Can two UAs on two unrelated devices share a pointerId? Can one UA assign the same pointerId to differrent objects when reporting to two disconnected web pages?

14. pressure

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-PointerEvent-pressure

> the value must be 0.5 when in the active buttons state and 0 otherwise.

please mark up "active buttons state"

15. tiltX

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-PointerEvent-tiltX

> The plane angle (in degrees, in the range of [-90,90]) between the Y-Z plane and the plane containing both the transducer (e.g. pen stylus) axis and the Y axis.

suppose i have a gyroscope and accelerometer augmented "air" pen (you could imagine turning a mobile phone into such a device). There's no "transducer", but it certainly has a tilt.

16. insufficiently labeled figure 2

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#fig-positive-tiltx.x

the figure does not identifier "front" of the "transducer" (or any other orientation) -- it should label thins like "positive x" or "positive y".

17. missing period

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#dfn-fire-an-event-named-e

> * Set the relatedTarget attribute of the event to null
> * Fire the event to the pointer capture target override object.

18. too complicated

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#process-pending-pointer-capture

> Further, if the pointer capture target override is not set,
> the pending pointer capture target override is not equal to the hit test node for the pointer event which invoked this process,

It's too hard to read this sentence to the end.
You could either add an "and" after "set, ", or turn the item into a bulleted list of conditions.

> and the hit test node has recieved pointerover and pointerenter events,
> then fire a pointer event named pointerout and a pointer event named pointerleave at the hit test node.

19. table comments

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#list-of-pointer-events

> Trusted proximal event target types
> Event object interface

The values are the same in these columns for all rows. If this table is related to a table outside this document, there should be a reference to it.
If there isn't such a table, can you remove the column?

> Varies: when the pointer is primary, all default actions of mouseover

a. I don't understand what this means.
b. This item doesn't end with a period.

> Varies: when the pointer is primary, all default actions of the mousedown event. 

This similar sounding item includes a period.

> Cancelling this event also sets the PREVENT MOUSE EVENT flag for this pointerType, which prevents subsequent firing of certain compatibility mouse events.

20. Unclosed paren

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#list-of-pointer-events

> In the case of the primary pointer, these events (with the exception of gotpointercapture, and lostpointercapture may also fire compatibility mouse events.

21. touch mismatch w/ mouse

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#the-pointerdown-event

> For mouse, this is when the device transitions from no buttons depressed to at least one button depressed.
> For touch, this is when physical contact is made with the digitizer. 

Mouse is clearly not going to fire for the second button down.

If I put one finger to the digitizer, it will fire.
If I put another finger to the digitizer, it appears that the instructions here will result in it firing, which seems to be different from mouse.

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#the-pointerup-event

> For mouse, this is when the device transitions from at least one button depressed to no buttons depressed.
> For touch, this is when physical contact is removed from the digitizer.

22. Missing word

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#the-pointercancel-event

> After having fired the pointerdown event, the pointer is subsequently used to manipulate the page viewport (e.g. panning or zooming).

"event, the" -> "event, if the"

23. confusing

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#the-pointercancel-event

> Examples of scenarios in which a user agent might determine that a pointer is unlikely to continue to produce events include:

> The user inputs a greater number of simultaneous pointers than is supported by the device.

How can a useragent discover this??

24. mising periods


> A user agent must fire a pointer event named pointercancel in the following circumstances:
> * The user agent has determined that a pointer is unlikely to continue to produce events (for example, because of a hardware event).
> * After having fired the pointerdown event, the pointer is subsequently used to manipulate the page viewport (e.g. panning or zooming).

Note the periods here.

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#the-pointerout-event

A user agent must fire a pointer event named pointerout when any of the following occurs:
> A pointing device is moved out of the hit test boundaries of an element
> After firing the pointerup event for a device that does not support hover (see pointerup)
> After firing the pointercancel event (see pointercancel)
> When a pen stylus leaves the hover range detectable by the digitizer

Note the lack of periods here.

25. off/out-of

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#the-pointerleave-event

> A user agent must fire a pointer event named pointerleave when a pointing device is moved off of the hit test boundaries of an element and all of its descendants,

off -> out of ?

26. broken table

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-Element-setPointerCapture-void-long-pointerId

.prmNullFallse has a rule for text-align:center which cauess the x's to appear "centered" across a column.

Unfortunately, nothing constrains the table width, and nothing constrains the column width. When the document is in a maximized browser, the x is so far away from the label (Nullable), or the next label (Optional), that it just appears to be floating.

Fixes: Either constrain the width of the column, or don't use center as alignment. You could constrain the table, but I wouldn't suggest that.

27. overly strong must

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-Element-setPointerCapture-void-long-pointerId

> Subsequent events for the pointer must always be targeted at this element. 

This implies "forever", you need to say "until canceled" or "until {something}"

28. Too long, can't process

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-Element-setPointerCapture-void-long-pointerId

> Sets pointer capture for the pointer identified by the argument pointerId to the element on which this method is invoked.
> Subsequent events for the pointer must always be targeted at this element.
> The pointer must be in its active buttons state for this method to be effective, otherwise it fails silently.
> Throws a DOMException with the name InvalidPointerId when the provided the method's argument does not match any of the active pointers.

It's true that Pointer Capture defines this, but, this really isn't helpful. And the fact that what's important is hidden in an empty note ("See Pointer Capture") doesn't help either.

There should be a link to h3_setting-pointer-capture

29. the provided the method's -- the the the the

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-Element-setPointerCapture-void-long-pointerId
http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-Element-releasePointerCapture-void-long-pointerId

> Throws a DOMException with the name InvalidPointerId when the provided the method's argument does not match any of the active pointers.

1. drop the "the" after "provided".
2. make everyone's life better by using "pointerId" instead of not naming the argument.

30. is

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-Navigator-maxTouchPoints

> For example, suppose a device has 3 touchscreens, which support 2, 5, and 10 simultaneous touch contacts, respectively.
> The value of maxTouchPoints is 10.

is -> should be (or something)

31. what happens if...

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#widl-Navigator-maxTouchPoints

> The maximum number of simultaneous touch contacts supported by the device.
> In the case of devices with multiple digitizers (e.g. multiple touchscreens),
> the value must be the maximum of the set of maximum supported contacts by each individual digitizer.

> maxTouchPoints is often used to ensure that the interaction model of the content can be recognized by the current hardware.
> UI affordances can be provided to users with less capable hardware.
> On platforms where the precise number of touch points is not known,
> the minimum number guaranteed to be recognized is provided.
> Therefore, it is possible for the number of recognized touch points to exceed the value of maxTouchPoints.

Suppose a user has an attached touchpad which supports 5 touchpoints.
Suppose the user only uses their mouse and is unaware of this touchpad (it could be physically obscured).

There doesn't appear to be any authoring guidelines that they should be aware that just because some input method MAY support maxTouchPoints, doesn't mean that the user will be able to.

Suppose that I have a phone which supports 5 touchpoints, and I'm using a screen reader.

The mode of the screen reader involves replacing the standard input method with a method whereby there are at most 1 touch points accessible to the web page (I believe, I haven't actively investigated, but let's just suppose I'm right). Should the UA report 1 or 5 for maxTouchPoints? (The UA does know that the screen reader is active, and it knows how the screen reader controls the UA.)

32. period

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h3_the-touch-action-css-property

> Applies to:
> all elements except: non-replaced inline elements, table rows, row groups, table columns, and column groups

no period...

> Computed value:
> Same as specified value.

period...

33. stray space

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h4_the-primary-pointer

> Authors who desire single-pointer interaction can achieve this by ignoring non-primary pointers (however, see the note below on multiple primary pointers) .

the space after the closing paren is extraneous.

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h3_the-touch-action-css-property

> The touch-action property only applies to elements that support both the CSS width and height properties (see [CSS21] ). 

the space before the closing paren is extraneous.

34. huh?

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#the-touch-action-css-property

> During the execution of a behavior, the user agent must not fire subsequent pointer events for the pointer.

I'm not sure what a "behavior" is here. Do you mean "an intrinsic user-agent behavior"?

35. missing space

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#implicit-release-of-pointer-capture

> Immediately after firing the pointerup or pointercancel events,
> a user agent must run the steps as if the releasePointerCapture()
> method has been called with an argument equal to the pointerId
> property of the pointerup orpointercancel event just dispatched.

there's a space missing after 'or'.

36. missing conditional

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#implicit-release-of-pointer-capture

> Immediately after firing the pointerup or pointercancel events,
> a user agent must run the steps as if the releasePointerCapture()
> method has been called with an argument equal to the pointerId
> property of the pointerup orpointercancel event just dispatched.

If I don't call Element.setPointerCapture() and a user clicks and releases, it sounds like the UA must process releasePointerCapture.

Here are the steps:

> 1. If the pointerId provided as the method's argument does not match any of the active pointers, then throw a DOMException with the name InvalidPointerId.

It won't be active, I think. So now the UA must throw a DOMException?

37. When, not If

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#implicit-release-of-pointer-capture

> If the pointer capture target override is removed from the document tree,
> clear the pending pointer capture target override and pointer capture target override nodes and
> fire a Pointer Event named lostpointercapture at the document.

If -> When

38. Pointer Event or PointerEvent ??

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#implicit-release-of-pointer-capture

> If the pointer capture target override is removed from the document tree,
> clear the pending pointer capture target override and pointer capture target override nodes and
> fire a Pointer Event named lostpointercapture at the document.

There are 89 instances of "pointer event" (case insensitive), and 40 of "PointerEvent" (case sensitive).

This case seems to be one where the latter is more appropriate.

39. Document or document?

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#implicit-release-of-pointer-capture

> If the pointer capture target override is removed from the document tree,
> clear the pending pointer capture target override and pointer capture target override nodes and
> fire a Pointer Event named lostpointercapture at the document.

should `document` be a linked thing, or something something...

40. the/may

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#dfn-compatibility-mouse-events

> The vast majority of web content existing today codes only to Mouse Events.
> The following describes the algorithm for how a user agent may map generic pointer input to mouse events for compatibility with this content.

If this is a way for something to happen, then perhaps there are other ways in which it may happen. In which case it should not say "the alogrithm", but rather "an algorithm".

If this should be the only way, then you'll need to rephrase:

"If a UA wishes to ... then it SHOULD use the following algorithm ..."

41. some cases

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#compatibility-mapping-with-mouse-events

> The relative ordering of these high-level events (click, contextmenu, focus, blur, etc.)
> with pointer events is undefined and varies between user agents. For example,
> in some user agents contextmenu will often follow a pointerup,
> in others it'll often precede a pointerup or pointercancel,
> and in some situations it may be fired without any corresponding pointer event.

Probably worth noting that it could be fired because of a keyboard key (the context menu key, or shift-f10). Yes somewhere else you mentioned keyboards, but it's worth mentioning it again.

42. link and anchor support-hover/do-not-support-hover

there are lots of mentions of "does not support hover", there are anchors:

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#mapping-for-devices-that-support-hover
http://www.w3.org/TR/2014/WD-pointerevents-20141113/#mapping-for-devices-that-do-not-support-hover

but, things don't link to them:

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#the-pointerover-event

> A user agent must fire a pointer event named pointerover when a pointing device is moved into the hit test boundaries of an element.
> A user agent must also fire this event prior to firing a pointerdown event for devices that do not support hover (see pointerdown).

43. missing periods?

http://www.w3.org/TR/2014/WD-pointerevents-20141113/#h3_mapping-for-devices-that-do-not-support-hover

> * The input can hover independently of activation (e.g. moving a mouse cursor without any buttons pressed)
> * The input will likely produce the mousemove event on an element before clicking it
‎
‎
--
This review was sent in response to:‎
http://lists.w3.org/Archives/Public/public-review-announce/2014Nov/0002.html‎

Received on Sunday, 16 November 2014 06:38:23 UTC