blob: 08463bc155317b5134a93eb40c7238369784cc5b [file] [log] [blame]
// 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 "mojo/services/geometry/public/interfaces/geometry.mojom";
import "mojo/services/input_events/public/interfaces/input_event_constants.mojom";
import "mojo/services/input_events/public/interfaces/input_key_codes.mojom";
struct LocationData {
Point? in_view_location;
Point? screen_location;
};
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 TouchData {
int32 pointer_id;
};
struct MouseWheelData {
int32 x_offset;
int32 y_offset;
};
struct Event {
EventType action;
EventFlags flags;
int64 time_stamp;
LocationData? location_data;
KeyData? key_data;
TouchData? touch_data;
MouseWheelData? wheel_data;
};