WICG / input-device-capabilities

InputDevice API proposal
MIT License
17 stars 14 forks source link

Suggest adding a `firesHoverEvents` property or some way to detect that in active input device supports hover? #39

Open mattrq opened 2 years ago

mattrq commented 2 years ago

Suggests that a firesHoverEvents boolean is added to allow accurate handling of different pointer-based input devices. There are a number of benefits that this allows for by allowing to changing the behaviour based on the support for hover for user interaction and better accessibility handling.

The current methods to detect hover support are not always accurate:

  1. Using CSS media queries: The cross-browser support and reliability of those are mixed. A negative query may indicate no support for the query or the current device doesn't support hover.
  2. The PointerEvent.pointerType can help by making assumptions for "mouse" (hover supported) and "touch" (hover unsupported), however "pen" may or may not support hover depending on the type of pen in-use.
  3. Assuming that fireTouchEvents===true means that hover is unsupported. However, this is not officially documented and unclear if it is an accurate assumption.

Example scenarios:

Additionally, clarification on which events are intended for which capabilities? e.g. (Not accurate) Event On Event Handler firesHoverEvents TRUE firesHoverEvents FALSE firesTouchEvents TRUE firesTouchEvents FALSE
pointerover onpointerover    
pointerenter onpointerenter
pointerdown onpointerdown
pointermove onpointermove ✓ While down ✓ While down
pointerup onpointerup
pointercancel onpointercancel
pointerout onpointerout    
pointerleave onpointerleave