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

Unified Diff: ui/events/ozone/evdev/event_modifiers_evdev.cc

Issue 1287103004: Sync ui/events to chromium @ https://codereview.chromium.org/1210203002 (Closed) Base URL: https://github.com/domokit/mojo.git@master
Patch Set: rebased Created 5 years, 4 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
« no previous file with comments | « ui/events/ozone/evdev/event_modifiers_evdev.h ('k') | ui/events/ozone/evdev/event_thread_evdev.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: ui/events/ozone/evdev/event_modifiers_evdev.cc
diff --git a/ui/events/ozone/evdev/event_modifiers_evdev.cc b/ui/events/ozone/evdev/event_modifiers_evdev.cc
new file mode 100644
index 0000000000000000000000000000000000000000..72533c5c82ee715f33d540a51365c4623c1b8216
--- /dev/null
+++ b/ui/events/ozone/evdev/event_modifiers_evdev.cc
@@ -0,0 +1,90 @@
+// 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.
+
+#include "ui/events/ozone/evdev/event_modifiers_evdev.h"
+
+#include <linux/input.h>
+
+#include "ui/events/event.h"
+
+namespace ui {
+
+namespace {
+
+static const int kEventFlagFromModifiers[] = {
+ EF_NONE, // EVDEV_MODIFIER_NONE,
+ EF_CAPS_LOCK_DOWN, // EVDEV_MODIFIER_CAPS_LOCK
+ EF_SHIFT_DOWN, // EVDEV_MODIFIER_SHIFT
+ EF_CONTROL_DOWN, // EVDEV_MODIFIER_CONTROL
+ EF_ALT_DOWN, // EVDEV_MODIFIER_ALT
+ EF_LEFT_MOUSE_BUTTON, // EVDEV_MODIFIER_LEFT_MOUSE_BUTTON
+ EF_MIDDLE_MOUSE_BUTTON, // EVDEV_MODIFIER_MIDDLE_MOUSE_BUTTON
+ EF_RIGHT_MOUSE_BUTTON, // EVDEV_MODIFIER_RIGHT_MOUSE_BUTTON
+ EF_BACK_MOUSE_BUTTON, // EVDEV_MODIFIER_BACK_MOUSE_BUTTON
+ EF_FORWARD_MOUSE_BUTTON, // EVDEV_MODIFIER_FORWARD_MOUSE_BUTTON
+ EF_COMMAND_DOWN, // EVDEV_MODIFIER_COMMAND
+ EF_ALTGR_DOWN, // EVDEV_MODIFIER_ALTGR
+ EF_MOD3_DOWN, // EVDEV_MODIFIER_MOD3
+};
+
+} // namespace
+
+EventModifiersEvdev::EventModifiersEvdev() {
+ memset(modifiers_down_, 0, sizeof(modifiers_down_));
+}
+EventModifiersEvdev::~EventModifiersEvdev() {}
+
+void EventModifiersEvdev::UpdateModifier(unsigned int modifier, bool down) {
+ DCHECK_LT(modifier, EVDEV_NUM_MODIFIERS);
+
+ if (down) {
+ modifiers_down_[modifier]++;
+ } else {
+ // Ignore spurious modifier "up" events. This might happen if the
+ // button is down during startup.
+ if (modifiers_down_[modifier])
+ modifiers_down_[modifier]--;
+ }
+
+ UpdateFlags(modifier);
+}
+
+void EventModifiersEvdev::UpdateModifierLock(unsigned int modifier, bool down) {
+ DCHECK_LT(modifier, EVDEV_NUM_MODIFIERS);
+
+ if (down)
+ modifier_flags_locked_ ^= kEventFlagFromModifiers[modifier];
+
+ UpdateFlags(modifier);
+}
+
+void EventModifiersEvdev::SetModifierLock(unsigned int modifier, bool locked) {
+ DCHECK_LT(modifier, EVDEV_NUM_MODIFIERS);
+
+ if (locked)
+ modifier_flags_locked_ |= kEventFlagFromModifiers[modifier];
+ else
+ modifier_flags_locked_ &= ~kEventFlagFromModifiers[modifier];
+
+ UpdateFlags(modifier);
+}
+
+void EventModifiersEvdev::UpdateFlags(unsigned int modifier) {
+ int mask = kEventFlagFromModifiers[modifier];
+ bool down = modifiers_down_[modifier];
+ bool locked = (modifier_flags_locked_ & mask);
+ if (down != locked)
+ modifier_flags_ |= mask;
+ else
+ modifier_flags_ &= ~mask;
+}
+
+int EventModifiersEvdev::GetModifierFlags() { return modifier_flags_; }
+
+// static
+int EventModifiersEvdev::GetEventFlagFromModifier(unsigned int modifier) {
+ return kEventFlagFromModifiers[modifier];
+}
+
+} // namespace ui
« no previous file with comments | « ui/events/ozone/evdev/event_modifiers_evdev.h ('k') | ui/events/ozone/evdev/event_thread_evdev.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698