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

Unified Diff: ui/ozone/platform/wayland/wayland_connection.cc

Issue 2639053002: [ozone/wayland] Implement basic keyboard handling support (Closed)
Patch Set: fixed a missing comma Created 3 years, 11 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/ozone/platform/wayland/wayland_connection.cc
diff --git a/ui/ozone/platform/wayland/wayland_connection.cc b/ui/ozone/platform/wayland/wayland_connection.cc
index 520b21f9f08a62f6b17332484c7e0d6a58a115db..eac4c7601f23578c684a76287ad90f21dfa98436 100644
--- a/ui/ozone/platform/wayland/wayland_connection.cc
+++ b/ui/ozone/platform/wayland/wayland_connection.cc
@@ -12,9 +12,16 @@
#include "base/message_loop/message_loop.h"
#include "base/strings/string_util.h"
#include "base/threading/thread_task_runner_handle.h"
+#include "ui/events/ozone/layout/keyboard_layout_engine_manager.h"
#include "ui/ozone/platform/wayland/wayland_object.h"
#include "ui/ozone/platform/wayland/wayland_window.h"
+#if defined(USE_XKBCOMMON)
+#include "ui/events/ozone/layout/xkb/xkb_keyboard_layout_engine.h"
+#else
+#include "ui/events/ozone/layout/stub/stub_keyboard_layout_engine.h"
+#endif
+
static_assert(XDG_SHELL_VERSION_CURRENT == 5, "Unsupported xdg-shell version");
namespace ui {
@@ -25,7 +32,15 @@ const uint32_t kMaxShmVersion = 1;
const uint32_t kMaxXdgShellVersion = 1;
} // namespace
-WaylandConnection::WaylandConnection() {}
+WaylandConnection::WaylandConnection() {
+#if defined(USE_XKBCOMMON)
+ KeyboardLayoutEngineManager::SetKeyboardLayoutEngine(
+ base::MakeUnique<XkbKeyboardLayoutEngine>(codes_));
+#else
+ KeyboardLayoutEngineManager::SetKeyboardLayoutEngine(
+ base::MakeUnique<StubKeyboardLayoutEngine>());
+#endif
+}
WaylandConnection::~WaylandConnection() {}
@@ -227,6 +242,20 @@ void WaylandConnection::Capabilities(void* data,
} else if (connection->pointer_) {
connection->pointer_.reset();
}
+ if (capabilities & WL_SEAT_CAPABILITY_KEYBOARD) {
+ if (!connection->keyboard_) {
+ wl_keyboard* keyboard = wl_seat_get_keyboard(connection->seat_.get());
+ if (!keyboard) {
+ LOG(ERROR) << "Failed to get wl_keyboard from seat";
+ return;
+ }
+ connection->keyboard_ = base::MakeUnique<WaylandKeyboard>(
+ keyboard, base::Bind(&WaylandConnection::DispatchUiEvent,
+ base::Unretained(connection)));
+ }
+ } else if (connection->keyboard_) {
+ connection->keyboard_.reset();
+ }
connection->ScheduleFlush();
}

Powered by Google App Engine
This is Rietveld 408576698