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

Side by Side 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 unified diff | Download patch
OLDNEW
(Empty)
1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "ui/events/ozone/evdev/event_modifiers_evdev.h"
6
7 #include <linux/input.h>
8
9 #include "ui/events/event.h"
10
11 namespace ui {
12
13 namespace {
14
15 static const int kEventFlagFromModifiers[] = {
16 EF_NONE, // EVDEV_MODIFIER_NONE,
17 EF_CAPS_LOCK_DOWN, // EVDEV_MODIFIER_CAPS_LOCK
18 EF_SHIFT_DOWN, // EVDEV_MODIFIER_SHIFT
19 EF_CONTROL_DOWN, // EVDEV_MODIFIER_CONTROL
20 EF_ALT_DOWN, // EVDEV_MODIFIER_ALT
21 EF_LEFT_MOUSE_BUTTON, // EVDEV_MODIFIER_LEFT_MOUSE_BUTTON
22 EF_MIDDLE_MOUSE_BUTTON, // EVDEV_MODIFIER_MIDDLE_MOUSE_BUTTON
23 EF_RIGHT_MOUSE_BUTTON, // EVDEV_MODIFIER_RIGHT_MOUSE_BUTTON
24 EF_BACK_MOUSE_BUTTON, // EVDEV_MODIFIER_BACK_MOUSE_BUTTON
25 EF_FORWARD_MOUSE_BUTTON, // EVDEV_MODIFIER_FORWARD_MOUSE_BUTTON
26 EF_COMMAND_DOWN, // EVDEV_MODIFIER_COMMAND
27 EF_ALTGR_DOWN, // EVDEV_MODIFIER_ALTGR
28 EF_MOD3_DOWN, // EVDEV_MODIFIER_MOD3
29 };
30
31 } // namespace
32
33 EventModifiersEvdev::EventModifiersEvdev() {
34 memset(modifiers_down_, 0, sizeof(modifiers_down_));
35 }
36 EventModifiersEvdev::~EventModifiersEvdev() {}
37
38 void EventModifiersEvdev::UpdateModifier(unsigned int modifier, bool down) {
39 DCHECK_LT(modifier, EVDEV_NUM_MODIFIERS);
40
41 if (down) {
42 modifiers_down_[modifier]++;
43 } else {
44 // Ignore spurious modifier "up" events. This might happen if the
45 // button is down during startup.
46 if (modifiers_down_[modifier])
47 modifiers_down_[modifier]--;
48 }
49
50 UpdateFlags(modifier);
51 }
52
53 void EventModifiersEvdev::UpdateModifierLock(unsigned int modifier, bool down) {
54 DCHECK_LT(modifier, EVDEV_NUM_MODIFIERS);
55
56 if (down)
57 modifier_flags_locked_ ^= kEventFlagFromModifiers[modifier];
58
59 UpdateFlags(modifier);
60 }
61
62 void EventModifiersEvdev::SetModifierLock(unsigned int modifier, bool locked) {
63 DCHECK_LT(modifier, EVDEV_NUM_MODIFIERS);
64
65 if (locked)
66 modifier_flags_locked_ |= kEventFlagFromModifiers[modifier];
67 else
68 modifier_flags_locked_ &= ~kEventFlagFromModifiers[modifier];
69
70 UpdateFlags(modifier);
71 }
72
73 void EventModifiersEvdev::UpdateFlags(unsigned int modifier) {
74 int mask = kEventFlagFromModifiers[modifier];
75 bool down = modifiers_down_[modifier];
76 bool locked = (modifier_flags_locked_ & mask);
77 if (down != locked)
78 modifier_flags_ |= mask;
79 else
80 modifier_flags_ &= ~mask;
81 }
82
83 int EventModifiersEvdev::GetModifierFlags() { return modifier_flags_; }
84
85 // static
86 int EventModifiersEvdev::GetEventFlagFromModifier(unsigned int modifier) {
87 return kEventFlagFromModifiers[modifier];
88 }
89
90 } // namespace ui
OLDNEW
« 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