Index: ui/mojo/events/input_events.mojom |
diff --git a/ui/mojo/events/input_events.mojom b/ui/mojo/events/input_events.mojom |
index 3824d5621aeebd6785ce2203433d9be567e3ae39..55ee151dfb24d3075f5015c0ce2161d51deb819c 100644 |
--- a/ui/mojo/events/input_events.mojom |
+++ b/ui/mojo/events/input_events.mojom |
@@ -47,22 +47,58 @@ struct KeyData { |
uint16 unmodified_text; |
}; |
-struct PointerData { |
- int32 pointer_id; |
- PointerKind kind; |
+struct LocationData { |
// |x| and |y| are in the coordinate system of the View. |
+ // Typically, this will be an integer-valued translation w.r.t. |
+ // the screen and in this case, |x| and |y| are in units of physical |
+ // pixels. However, some View embedders may apply arbitrary transformations |
+ // of a view w.r.t. the screen. |
float x; |
float y; |
- // |screen_x| and |screen_y| are in screen coordinates. |
+ // |screen_x| and |screen_y| are in screen coordinates in units of |
+ // physical pixels. |
float screen_x; |
float screen_y; |
+}; |
+ |
+// TODO(rjkroege,sadrul): Add gesture representation. |
+struct PointerData { |
+ int32 pointer_id; |
+ PointerKind kind; |
+ LocationData location; |
+ // Some devices (e.g. pen, finger) can extend across multiple pixels |
+ // at once. |brush_data| provides additional data for this case and |
+ // is available when |kind| is PEN or TOUCH. |
+ BrushData? brush_data; |
+}; |
+ |
+// Information payload to support |
+// https://developer.mozilla.org/en-US/docs/Web/Events/wheel. |
+// TODO(rjkroege): Handle MacOS momentum scrolling. |
+struct WheelData { |
+ WheelMode mode; |
+ LocationData location; |
+ // |delta_x|, |delta_y|, |delta_z| can be in units of pixels, lines, pages |
+ // or control scaling as controlled by |mode|. Pixel scroll is physical |
+ // pixels in the coordinate system of the target View. |
+ float delta_x; |
+ float delta_y; |
+ float delta_z; |
+}; |
+ |
+// Supplementary data to support pointers where the pointer can |
+// cover multiple pixels per http://www.w3.org/TR/pointerevents/ |
+struct BrushData { |
+ // |width| and |height| are in CSS pixels in the coordinate system of |
+ // the target View. |
+ float width; |
+ float height; |
+ // |pressure| range is [0,1]. For devices like mice buttons where the |
+ // pressure is not available, it will be set to 0.5 if the button is down. |
float pressure; |
- float radius_major; |
- float radius_minor; |
- float orientation; |
- // Used for devices that support wheels. Ranges from -1 to 1. |
- float horizontal_wheel; |
- float vertical_wheel; |
+ // |tiltY| and |tiltX| are in degrees. |
+ float tiltY; |
+ float tiltZ; |
}; |
struct Event { |
@@ -76,4 +112,7 @@ struct Event { |
int64 time_stamp; |
KeyData? key_data; |
PointerData? pointer_data; |
+ // Some devices (e.g. trackpads or mice) have additional valuators |
+ // such as the mouse wheel or ball. Present only if action is WHEEL. |
+ WheelData? wheel_data; |
}; |