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

Side by Side Diff: ui/events/ozone/evdev/event_converter_evdev.cc

Issue 971753006: ozone: evdev: Sync caps lock LED state to evdev (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: s/PLOG/LOG/ for short write. errno is not set in this case Created 5 years, 9 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
1 // Copyright 2014 The Chromium Authors. All rights reserved. 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 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include <linux/input.h> 5 #include <linux/input.h>
6 6
7 #include "ui/events/ozone/evdev/event_converter_evdev.h" 7 #include "ui/events/ozone/evdev/event_converter_evdev.h"
8 8
9 #include "base/files/file_path.h" 9 #include "base/files/file_path.h"
10 #include "base/logging.h" 10 #include "base/logging.h"
(...skipping 12 matching lines...) Expand all
23 EventConverterEvdev::~EventConverterEvdev() { 23 EventConverterEvdev::~EventConverterEvdev() {
24 Stop(); 24 Stop();
25 } 25 }
26 26
27 void EventConverterEvdev::Start() { 27 void EventConverterEvdev::Start() {
28 base::MessageLoopForUI::current()->WatchFileDescriptor( 28 base::MessageLoopForUI::current()->WatchFileDescriptor(
29 fd_, true, base::MessagePumpLibevent::WATCH_READ, &controller_, this); 29 fd_, true, base::MessagePumpLibevent::WATCH_READ, &controller_, this);
30 } 30 }
31 31
32 void EventConverterEvdev::Stop() { 32 void EventConverterEvdev::Stop() {
33 // TODO(spang): If we reach here due to an error, we should treat it
34 // as if we have lost sync & release held keys, etc.
33 controller_.StopWatchingFileDescriptor(); 35 controller_.StopWatchingFileDescriptor();
34 } 36 }
35 37
36 void EventConverterEvdev::OnFileCanWriteWithoutBlocking(int fd) { 38 void EventConverterEvdev::OnFileCanWriteWithoutBlocking(int fd) {
37 NOTREACHED(); 39 NOTREACHED();
38 } 40 }
39 41
40 bool EventConverterEvdev::HasKeyboard() const { 42 bool EventConverterEvdev::HasKeyboard() const {
41 return false; 43 return false;
42 } 44 }
43 45
44 bool EventConverterEvdev::HasMouse() const { 46 bool EventConverterEvdev::HasMouse() const {
45 return false; 47 return false;
46 } 48 }
47 49
48 bool EventConverterEvdev::HasTouchpad() const { 50 bool EventConverterEvdev::HasTouchpad() const {
49 return false; 51 return false;
50 } 52 }
51 53
52 bool EventConverterEvdev::HasTouchscreen() const { 54 bool EventConverterEvdev::HasTouchscreen() const {
53 return false; 55 return false;
54 } 56 }
55 57
58 bool EventConverterEvdev::HasCapsLockLed() const {
59 return false;
60 }
61
56 gfx::Size EventConverterEvdev::GetTouchscreenSize() const { 62 gfx::Size EventConverterEvdev::GetTouchscreenSize() const {
57 NOTREACHED(); 63 NOTREACHED();
58 return gfx::Size(); 64 return gfx::Size();
59 } 65 }
60 66
61 int EventConverterEvdev::GetTouchPoints() const { 67 int EventConverterEvdev::GetTouchPoints() const {
62 NOTREACHED(); 68 NOTREACHED();
63 return 0; 69 return 0;
64 } 70 }
65 71
66 void EventConverterEvdev::SetAllowedKeys( 72 void EventConverterEvdev::SetAllowedKeys(
67 scoped_ptr<std::set<DomCode>> allowed_keys) { 73 scoped_ptr<std::set<DomCode>> allowed_keys) {
68 NOTREACHED(); 74 NOTREACHED();
69 } 75 }
70 76
71 void EventConverterEvdev::AllowAllKeys() { 77 void EventConverterEvdev::AllowAllKeys() {
72 NOTREACHED(); 78 NOTREACHED();
73 } 79 }
74 80
81 void EventConverterEvdev::SetCapsLockLed(bool enabled) {
82 if (!HasCapsLockLed())
83 return;
84
85 input_event events[2];
86 memset(&events, 0, sizeof(events));
87
88 events[0].type = EV_LED;
89 events[0].code = LED_CAPSL;
90 events[0].value = enabled;
91
92 events[1].type = EV_SYN;
93 events[1].code = SYN_REPORT;
94 events[1].value = 0;
95
96 ssize_t written = write(fd_, events, sizeof(events));
97
98 if (written < 0) {
99 if (errno != ENODEV)
100 PLOG(ERROR) << "cannot set leds for " << path_.value() << ":";
101 Stop();
102 } else if (written != sizeof(events)) {
103 LOG(ERROR) << "short write setting leds for " << path_.value();
104 Stop();
105 }
106 }
107
75 base::TimeDelta EventConverterEvdev::TimeDeltaFromInputEvent( 108 base::TimeDelta EventConverterEvdev::TimeDeltaFromInputEvent(
76 const input_event& event) { 109 const input_event& event) {
77 return base::TimeDelta::FromMicroseconds(event.time.tv_sec * 1000000 + 110 return base::TimeDelta::FromMicroseconds(event.time.tv_sec * 1000000 +
78 event.time.tv_usec); 111 event.time.tv_usec);
79 } 112 }
80 } // namespace ui 113 } // namespace ui
OLDNEW
« no previous file with comments | « ui/events/ozone/evdev/event_converter_evdev.h ('k') | ui/events/ozone/evdev/event_converter_evdev_impl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698