Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(18)

Unified Diff: ui/events/event.cc

Issue 2805793002: ozone: evdev: Add gamepad support (Closed)
Patch Set: Created 3 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
Index: ui/events/event.cc
diff --git a/ui/events/event.cc b/ui/events/event.cc
index 64f06d0cae3d0fbef8a52b7a4c723663beca8582..3c8133704b5b74ba536a505d065cc110af2bf52f 100644
--- a/ui/events/event.cc
+++ b/ui/events/event.cc
@@ -80,6 +80,10 @@ const char* EventTypeName(EventType type) {
CASE_TYPE(ET_POINTER_EXITED);
CASE_TYPE(ET_POINTER_WHEEL_CHANGED);
CASE_TYPE(ET_POINTER_CAPTURE_CHANGED);
+ CASE_TYPE(ET_GAMEPAD_BTN_PRESSED);
+ CASE_TYPE(ET_GAMEPAD_BTN_RELEASED);
+ CASE_TYPE(ET_GAMEPAD_ABS_MOVED);
+ CASE_TYPE(ET_GAMEPAD_FRAME);
CASE_TYPE(ET_GESTURE_SCROLL_BEGIN);
CASE_TYPE(ET_GESTURE_SCROLL_END);
CASE_TYPE(ET_GESTURE_SCROLL_UPDATE);
@@ -161,6 +165,10 @@ SourceEventType EventTypeToLatencySourceEventType(EventType type) {
case ET_DROP_TARGET_EVENT:
case ET_CANCEL_MODE:
case ET_UMA_DATA:
+ case ET_GAMEPAD_BTN_PRESSED:
+ case ET_GAMEPAD_BTN_RELEASED:
+ case ET_GAMEPAD_ABS_MOVED:
+ case ET_GAMEPAD_FRAME:
return SourceEventType::OTHER;
case ET_TOUCH_RELEASED:
@@ -209,6 +217,10 @@ bool X11EventHasNonStandardState(const base::NativeEvent& event) {
// static
std::unique_ptr<Event> Event::Clone(const Event& event) {
+ if (event.IsGamepadEvent()) {
+ return base::MakeUnique<GamepadEvent>(
+ static_cast<const GamepadEvent&>(event));
+ }
if (event.IsKeyEvent()) {
return base::MakeUnique<KeyEvent>(static_cast<const KeyEvent&>(event));
}
@@ -285,6 +297,16 @@ const GestureEvent* Event::AsGestureEvent() const {
return static_cast<const GestureEvent*>(this);
}
+GamepadEvent* Event::AsGamepadEvent() {
+ CHECK(IsGamepadEvent());
+ return static_cast<GamepadEvent*>(this);
+}
+
+const GamepadEvent* Event::AsGamepadEvent() const {
+ CHECK(IsGamepadEvent());
+ return static_cast<const GamepadEvent*>(this);
+}
+
KeyEvent* Event::AsKeyEvent() {
CHECK(IsKeyEvent());
return static_cast<KeyEvent*>(this);
@@ -1087,6 +1109,19 @@ PointerEvent::PointerEvent(EventType type,
}
const int PointerEvent::kMousePointerId = std::numeric_limits<int32_t>::max();
+////////////////////////////////////////////////////////////////////////////////
+// GamepadEvent
+
+GamepadEvent::GamepadEvent(EventType type,
+ double value,
+ uint16_t code,
+ base::TimeTicks timestamp)
+ : Event(type, timestamp, 0), value_(value), code_(code) {}
+
+GamepadEvent::GamepadEvent(const GamepadEvent& gamepad_event)
+ : Event(gamepad_event.type(), gamepad_event.time_stamp(), 0),
+ value_(gamepad_event.value_),
+ code_(gamepad_event.code_) {}
////////////////////////////////////////////////////////////////////////////////
// KeyEvent

Powered by Google App Engine
This is Rietveld 408576698