| // Copyright 2014 The Chromium Authors. All rights reserved. | 
 | // Use of this source code is governed by a BSD-style license that can be | 
 | // found in the LICENSE file. | 
 |  | 
 | module mojo; | 
 |  | 
 | import "geometry/public/interfaces/geometry.mojom"; | 
 | import "input_events/public/interfaces/input_event_constants.mojom"; | 
 | import "input_events/public/interfaces/input_key_codes.mojom"; | 
 |  | 
 | struct KeyData { | 
 |   // The chromium event key code; these values are from the ui/ KeyCode enum, | 
 |   // which has the fun property of being neither consistently the Windows key | 
 |   // code, nor the X11 keycodes. (This value is consistent across platforms | 
 |   // for basic ASCII characters; it will differ for modifiers. We don't define | 
 |   // this as a mojo enum because mojom doesn't appear to have a platform | 
 |   // dependent preprocessor yet.) | 
 |   // | 
 |   // TODO(erg): Remove this, and declare Win32 keycodes correct by fiat. We can | 
 |   // not do this until we remove ui::Event usage from within mojo. | 
 |   int32 key_code; | 
 |  | 
 |   // Whether this is a character event, and the character value if it is. Note | 
 |   // that this is different than |text|, which holds a value even when there | 
 |   // isn't actually a character to insert. (For example, |text| will be set and | 
 |   // have a value on backspace, and |character| won't.) | 
 |   bool is_char; | 
 |   uint16 character; | 
 |  | 
 |   // The Win32 key code. Because of the web, this is the closest thing that we | 
 |   // have to a cross platform key state. | 
 |   KeyboardCode windows_key_code; | 
 |  | 
 |   // The platform specific key code. | 
 |   // | 
 |   // TODO(erg): This exists only for NPAPI support, pepper USB keyboard support | 
 |   // and IME on android support. Theoretically, we should be able to remove this | 
 |   // in the medium to long term. | 
 |   int32 native_key_code; | 
 |  | 
 |   // The text generated by this keystroke. Corresponds to | 
 |   // blink::WebKeyboardEvent::text. | 
 |   uint16 text; | 
 |  | 
 |   // Like |text|, but unmodified by concurrently held modifier keys (except | 
 |   // shift). Corresponds to blink::WebKeyboardEvent::unmodifiedText. | 
 |   uint16 unmodified_text; | 
 | }; | 
 |  | 
 | struct PointerData { | 
 |   int32 pointer_id; | 
 |   PointerKind kind; | 
 |   // |x| and |y| are in the coordinate system of the View. | 
 |   float x; | 
 |   float y; | 
 |   // |screen_x| and |screen_y| are in screen coordinates. | 
 |   float screen_x; | 
 |   float screen_y; | 
 |   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; | 
 | }; | 
 |  | 
 | struct Event { | 
 |   // TODO(sky): rename to type. | 
 |   EventType action; | 
 |   // TODO(sky): parts of this should move to PointerData. | 
 |   EventFlags flags; | 
 |   // Time the event was delivered. The time is in milliseconds and corresponds | 
 |   // to the uptime of the machine. | 
 |   int64 time_stamp; | 
 |   KeyData? key_data; | 
 |   PointerData? pointer_data; | 
 | }; |