OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 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 "chrome/browser/chromeos/system_key_event_listener.h" | 5 #include "chrome/browser/chromeos/system_key_event_listener.h" |
6 | 6 |
7 #include <gdk/gdkx.h> | 7 #include <gdk/gdkx.h> |
8 #include <X11/XF86keysym.h> | 8 #include <X11/XF86keysym.h> |
9 | 9 |
10 #include "chrome/browser/chromeos/audio_handler.h" | 10 #include "chrome/browser/chromeos/audio_handler.h" |
11 #include "chrome/browser/chromeos/brightness_bubble.h" | 11 #include "chrome/browser/chromeos/brightness_bubble.h" |
12 #include "chrome/browser/chromeos/volume_bubble.h" | 12 #include "chrome/browser/chromeos/volume_bubble.h" |
13 #include "content/browser/user_metrics.h" | 13 #include "content/browser/user_metrics.h" |
14 #include "third_party/cros/chromeos_wm_ipc_enums.h" | 14 #include "third_party/cros/chromeos_wm_ipc_enums.h" |
15 | 15 |
16 #if defined(TOUCH_UI) | 16 #if defined(TOUCH_UI) |
17 #include "base/message_pump_glib_x_dispatch.h" | 17 #include "base/message_pump_x.h" |
18 #endif | 18 #endif |
19 | 19 |
20 namespace chromeos { | 20 namespace chromeos { |
21 | 21 |
22 namespace { | 22 namespace { |
23 | 23 |
24 const double kStepPercentage = 4.0; | 24 const double kStepPercentage = 4.0; |
25 | 25 |
26 } // namespace | 26 } // namespace |
27 | 27 |
(...skipping 64 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 case WM_IPC_SYSTEM_KEY_VOLUME_UP: | 92 case WM_IPC_SYSTEM_KEY_VOLUME_UP: |
93 OnVolumeUp(); | 93 OnVolumeUp(); |
94 break; | 94 break; |
95 default: | 95 default: |
96 DLOG(ERROR) << "SystemKeyEventListener: Unexpected message " | 96 DLOG(ERROR) << "SystemKeyEventListener: Unexpected message " |
97 << message.param(0) | 97 << message.param(0) |
98 << " received"; | 98 << " received"; |
99 } | 99 } |
100 } | 100 } |
101 | 101 |
| 102 #if defined(TOUCH_UI) |
| 103 base::MessagePumpObserver::EventStatus |
| 104 SystemKeyEventListener::WillProcessXEvent(XEvent* xevent) { |
| 105 return ProcessedXEvent(xevent) ? EVENT_HANDLED : EVENT_CONTINUE; |
| 106 } |
| 107 #else // defined(TOUCH_UI) |
102 // static | 108 // static |
103 GdkFilterReturn SystemKeyEventListener::GdkEventFilter(GdkXEvent* gxevent, | 109 GdkFilterReturn SystemKeyEventListener::GdkEventFilter(GdkXEvent* gxevent, |
104 GdkEvent* gevent, | 110 GdkEvent* gevent, |
105 gpointer data) { | 111 gpointer data) { |
106 SystemKeyEventListener* listener = static_cast<SystemKeyEventListener*>(data); | 112 SystemKeyEventListener* listener = static_cast<SystemKeyEventListener*>(data); |
107 XEvent* xevent = static_cast<XEvent*>(gxevent); | 113 XEvent* xevent = static_cast<XEvent*>(gxevent); |
108 | 114 |
109 return listener->WillProcessXEvent(xevent) ? GDK_FILTER_REMOVE | 115 return listener->ProcessedXEvent(xevent) ? GDK_FILTER_REMOVE |
110 : GDK_FILTER_CONTINUE; | 116 : GDK_FILTER_CONTINUE; |
111 } | 117 } |
| 118 #endif // defined(TOUCH_UI) |
112 | 119 |
113 void SystemKeyEventListener::GrabKey(int32 key, uint32 mask) { | 120 void SystemKeyEventListener::GrabKey(int32 key, uint32 mask) { |
114 uint32 num_lock_mask = Mod2Mask; | 121 uint32 num_lock_mask = Mod2Mask; |
115 uint32 caps_lock_mask = LockMask; | 122 uint32 caps_lock_mask = LockMask; |
116 Window root = DefaultRootWindow(GDK_DISPLAY()); | 123 Window root = DefaultRootWindow(GDK_DISPLAY()); |
117 XGrabKey(GDK_DISPLAY(), key, mask, root, True, GrabModeAsync, GrabModeAsync); | 124 XGrabKey(GDK_DISPLAY(), key, mask, root, True, GrabModeAsync, GrabModeAsync); |
118 XGrabKey(GDK_DISPLAY(), key, mask | caps_lock_mask, root, True, | 125 XGrabKey(GDK_DISPLAY(), key, mask | caps_lock_mask, root, True, |
119 GrabModeAsync, GrabModeAsync); | 126 GrabModeAsync, GrabModeAsync); |
120 XGrabKey(GDK_DISPLAY(), key, mask | num_lock_mask, root, True, | 127 XGrabKey(GDK_DISPLAY(), key, mask | num_lock_mask, root, True, |
121 GrabModeAsync, GrabModeAsync); | 128 GrabModeAsync, GrabModeAsync); |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
153 void SystemKeyEventListener::OnVolumeUp() { | 160 void SystemKeyEventListener::OnVolumeUp() { |
154 if (audio_handler_->IsMute()) | 161 if (audio_handler_->IsMute()) |
155 audio_handler_->SetMute(false); | 162 audio_handler_->SetMute(false); |
156 else | 163 else |
157 audio_handler_->AdjustVolumeByPercent(kStepPercentage); | 164 audio_handler_->AdjustVolumeByPercent(kStepPercentage); |
158 VolumeBubble::GetInstance()->ShowBubble( | 165 VolumeBubble::GetInstance()->ShowBubble( |
159 audio_handler_->GetVolumePercent()); | 166 audio_handler_->GetVolumePercent()); |
160 BrightnessBubble::GetInstance()->HideBubble(); | 167 BrightnessBubble::GetInstance()->HideBubble(); |
161 } | 168 } |
162 | 169 |
163 bool SystemKeyEventListener::WillProcessXEvent(XEvent* xevent) { | 170 bool SystemKeyEventListener::ProcessedXEvent(XEvent* xevent) { |
164 if (xevent->type == KeyPress) { | 171 if (xevent->type == KeyPress) { |
165 int32 keycode = xevent->xkey.keycode; | 172 int32 keycode = xevent->xkey.keycode; |
166 if (keycode) { | 173 if (keycode) { |
167 // Only doing non-Alt/Shift/Ctrl modified keys | 174 // Only doing non-Alt/Shift/Ctrl modified keys |
168 if (!(xevent->xkey.state & (Mod1Mask | ShiftMask | ControlMask))) { | 175 if (!(xevent->xkey.state & (Mod1Mask | ShiftMask | ControlMask))) { |
169 if ((keycode == key_f8_) || | 176 if ((keycode == key_f8_) || |
170 (keycode == key_volume_mute_)) { | 177 (keycode == key_volume_mute_)) { |
171 if (keycode == key_f8_) | 178 if (keycode == key_f8_) |
172 UserMetrics::RecordAction(UserMetricsAction("Accel_VolumeMute_F8")); | 179 UserMetrics::RecordAction(UserMetricsAction("Accel_VolumeMute_F8")); |
173 OnVolumeMute(); | 180 OnVolumeMute(); |
(...skipping 11 matching lines...) Expand all Loading... |
185 OnVolumeUp(); | 192 OnVolumeUp(); |
186 return true; | 193 return true; |
187 } | 194 } |
188 } | 195 } |
189 } | 196 } |
190 } | 197 } |
191 return false; | 198 return false; |
192 } | 199 } |
193 | 200 |
194 } // namespace chromeos | 201 } // namespace chromeos |
OLD | NEW |