OLD | NEW |
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 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 "base/basictypes.h" | 5 #include "base/basictypes.h" |
6 #include "chrome/browser/ui/views/ash/key_rewriter.h" | 6 #include "chrome/browser/ui/views/ash/key_rewriter.h" |
7 #include "testing/gtest/include/gtest/gtest.h" | 7 #include "testing/gtest/include/gtest/gtest.h" |
8 #include "ui/aura/event.h" | 8 #include "ui/aura/event.h" |
9 | 9 |
10 #if defined(OS_CHROMEOS) | 10 #if defined(OS_CHROMEOS) |
(...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
99 XKeysymToKeycode(ui::GetXDisplay(), XK_Control_R); | 99 XKeysymToKeycode(ui::GetXDisplay(), XK_Control_R); |
100 | 100 |
101 // First, test with a PC keyboard. | 101 // First, test with a PC keyboard. |
102 KeyRewriter rewriter; | 102 KeyRewriter rewriter; |
103 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); | 103 rewriter.DeviceAddedForTesting(0, "PC Keyboard"); |
104 rewriter.set_last_device_id_for_testing(0); | 104 rewriter.set_last_device_id_for_testing(0); |
105 { | 105 { |
106 // XK_a, Alt modifier. | 106 // XK_a, Alt modifier. |
107 InitXKeyEvent(ui::VKEY_A, ui::EF_ALT_DOWN, kKeycodeA, Mod1Mask, &xev); | 107 InitXKeyEvent(ui::VKEY_A, ui::EF_ALT_DOWN, kKeycodeA, Mod1Mask, &xev); |
108 aura::KeyEvent keyevent(&xev, false /* is_char */); | 108 aura::KeyEvent keyevent(&xev, false /* is_char */); |
109 rewriter.RewriteCommandToControlForTesting(&keyevent); | 109 rewriter.RewriteForTesting(&keyevent); |
110 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); | 110 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); |
111 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 111 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
112 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 112 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
113 EXPECT_EQ(kKeycodeA, xkey.keycode); | 113 EXPECT_EQ(kKeycodeA, xkey.keycode); |
114 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); | 114 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); |
115 } | 115 } |
116 { | 116 { |
117 // XK_a, Win modifier. | 117 // XK_a, Win modifier. |
118 InitXKeyEvent(ui::VKEY_A, 0, kKeycodeA, Mod4Mask, &xev); | 118 InitXKeyEvent(ui::VKEY_A, 0, kKeycodeA, Mod4Mask, &xev); |
119 aura::KeyEvent keyevent(&xev, false /* is_char */); | 119 aura::KeyEvent keyevent(&xev, false /* is_char */); |
120 rewriter.RewriteCommandToControlForTesting(&keyevent); | 120 rewriter.RewriteForTesting(&keyevent); |
121 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); | 121 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); |
122 EXPECT_EQ(0, keyevent.flags()); | 122 EXPECT_EQ(0, keyevent.flags()); |
123 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 123 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
124 EXPECT_EQ(kKeycodeA, xkey.keycode); | 124 EXPECT_EQ(kKeycodeA, xkey.keycode); |
125 EXPECT_EQ(static_cast<unsigned int>(Mod4Mask), xkey.state); | 125 EXPECT_EQ(static_cast<unsigned int>(Mod4Mask), xkey.state); |
126 } | 126 } |
127 { | 127 { |
128 // XK_a, Alt+Win modifier. | 128 // XK_a, Alt+Win modifier. |
129 InitXKeyEvent(ui::VKEY_A, ui::EF_ALT_DOWN, | 129 InitXKeyEvent(ui::VKEY_A, ui::EF_ALT_DOWN, |
130 kKeycodeA, Mod1Mask | Mod4Mask, &xev); | 130 kKeycodeA, Mod1Mask | Mod4Mask, &xev); |
131 aura::KeyEvent keyevent(&xev, false /* is_char */); | 131 aura::KeyEvent keyevent(&xev, false /* is_char */); |
132 rewriter.RewriteCommandToControlForTesting(&keyevent); | 132 rewriter.RewriteForTesting(&keyevent); |
133 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); | 133 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); |
134 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 134 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
135 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 135 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
136 EXPECT_EQ(kKeycodeA, xkey.keycode); | 136 EXPECT_EQ(kKeycodeA, xkey.keycode); |
137 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod4Mask), xkey.state); | 137 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod4Mask), xkey.state); |
138 } | 138 } |
139 { | 139 { |
140 // XK_Super_L (left Windows key), Alt modifier. | 140 // XK_Super_L (left Windows key), Alt modifier. |
141 InitXKeyEvent(ui::VKEY_LWIN, ui::EF_ALT_DOWN, | 141 InitXKeyEvent(ui::VKEY_LWIN, ui::EF_ALT_DOWN, |
142 kKeycodeSuperL, Mod1Mask, &xev); | 142 kKeycodeSuperL, Mod1Mask, &xev); |
143 aura::KeyEvent keyevent(&xev, false /* is_char */); | 143 aura::KeyEvent keyevent(&xev, false /* is_char */); |
144 rewriter.RewriteCommandToControlForTesting(&keyevent); | 144 rewriter.RewriteForTesting(&keyevent); |
145 EXPECT_EQ(ui::VKEY_LWIN, keyevent.key_code()); | 145 EXPECT_EQ(ui::VKEY_LWIN, keyevent.key_code()); |
146 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 146 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
147 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 147 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
148 EXPECT_EQ(kKeycodeSuperL, xkey.keycode); | 148 EXPECT_EQ(kKeycodeSuperL, xkey.keycode); |
149 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); | 149 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); |
150 } | 150 } |
151 { | 151 { |
152 // XK_Super_R (right Windows key), Alt modifier. | 152 // XK_Super_R (right Windows key), Alt modifier. |
153 InitXKeyEvent(ui::VKEY_RWIN, ui::EF_ALT_DOWN, | 153 InitXKeyEvent(ui::VKEY_RWIN, ui::EF_ALT_DOWN, |
154 kKeycodeSuperR, Mod1Mask, &xev); | 154 kKeycodeSuperR, Mod1Mask, &xev); |
155 aura::KeyEvent keyevent(&xev, false /* is_char */); | 155 aura::KeyEvent keyevent(&xev, false /* is_char */); |
156 rewriter.RewriteCommandToControlForTesting(&keyevent); | 156 rewriter.RewriteForTesting(&keyevent); |
157 EXPECT_EQ(ui::VKEY_RWIN, keyevent.key_code()); | 157 EXPECT_EQ(ui::VKEY_RWIN, keyevent.key_code()); |
158 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 158 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
159 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 159 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
160 EXPECT_EQ(kKeycodeSuperR, xkey.keycode); | 160 EXPECT_EQ(kKeycodeSuperR, xkey.keycode); |
161 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); | 161 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); |
162 } | 162 } |
163 | 163 |
164 // An Apple keyboard reuse the ID, zero. | 164 // An Apple keyboard reuse the ID, zero. |
165 rewriter.DeviceAddedForTesting(0, "Apple Keyboard"); | 165 rewriter.DeviceAddedForTesting(0, "Apple Keyboard"); |
166 rewriter.set_last_device_id_for_testing(0); | 166 rewriter.set_last_device_id_for_testing(0); |
167 { | 167 { |
168 // XK_a, Alt modifier. | 168 // XK_a, Alt modifier. |
169 InitXKeyEvent(ui::VKEY_A, ui::EF_ALT_DOWN, kKeycodeA, Mod1Mask, &xev); | 169 InitXKeyEvent(ui::VKEY_A, ui::EF_ALT_DOWN, kKeycodeA, Mod1Mask, &xev); |
170 aura::KeyEvent keyevent(&xev, false /* is_char */); | 170 aura::KeyEvent keyevent(&xev, false /* is_char */); |
171 rewriter.RewriteCommandToControlForTesting(&keyevent); | 171 rewriter.RewriteForTesting(&keyevent); |
172 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); | 172 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); |
173 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 173 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
174 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 174 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
175 EXPECT_EQ(kKeycodeA, xkey.keycode); | 175 EXPECT_EQ(kKeycodeA, xkey.keycode); |
176 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); | 176 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); |
177 } | 177 } |
178 { | 178 { |
179 // XK_a, Win modifier. | 179 // XK_a, Win modifier. |
180 InitXKeyEvent(ui::VKEY_A, 0, kKeycodeA, Mod4Mask, &xev); | 180 InitXKeyEvent(ui::VKEY_A, 0, kKeycodeA, Mod4Mask, &xev); |
181 aura::KeyEvent keyevent(&xev, false /* is_char */); | 181 aura::KeyEvent keyevent(&xev, false /* is_char */); |
182 rewriter.RewriteCommandToControlForTesting(&keyevent); | 182 rewriter.RewriteForTesting(&keyevent); |
183 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); | 183 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); |
184 EXPECT_EQ(ui::EF_CONTROL_DOWN, keyevent.flags()); | 184 EXPECT_EQ(ui::EF_CONTROL_DOWN, keyevent.flags()); |
185 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 185 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
186 EXPECT_EQ(kKeycodeA, xkey.keycode); | 186 EXPECT_EQ(kKeycodeA, xkey.keycode); |
187 EXPECT_EQ(static_cast<unsigned int>(ControlMask), xkey.state); | 187 EXPECT_EQ(static_cast<unsigned int>(ControlMask), xkey.state); |
188 } | 188 } |
189 { | 189 { |
190 // XK_a, Alt+Win modifier. | 190 // XK_a, Alt+Win modifier. |
191 InitXKeyEvent(ui::VKEY_A, ui::EF_ALT_DOWN, | 191 InitXKeyEvent(ui::VKEY_A, ui::EF_ALT_DOWN, |
192 kKeycodeA, Mod1Mask | Mod4Mask, &xev); | 192 kKeycodeA, Mod1Mask | Mod4Mask, &xev); |
193 aura::KeyEvent keyevent(&xev, false /* is_char */); | 193 aura::KeyEvent keyevent(&xev, false /* is_char */); |
194 rewriter.RewriteCommandToControlForTesting(&keyevent); | 194 rewriter.RewriteForTesting(&keyevent); |
195 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); | 195 EXPECT_EQ(ui::VKEY_A, keyevent.key_code()); |
196 EXPECT_EQ(ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, keyevent.flags()); | 196 EXPECT_EQ(ui::EF_ALT_DOWN | ui::EF_CONTROL_DOWN, keyevent.flags()); |
197 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 197 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
198 EXPECT_EQ(kKeycodeA, xkey.keycode); | 198 EXPECT_EQ(kKeycodeA, xkey.keycode); |
199 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | ControlMask), xkey.state); | 199 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | ControlMask), xkey.state); |
200 } | 200 } |
201 { | 201 { |
202 // XK_Super_L (left Windows key), Alt modifier. | 202 // XK_Super_L (left Windows key), Alt modifier. |
203 InitXKeyEvent(ui::VKEY_LWIN, ui::EF_ALT_DOWN, | 203 InitXKeyEvent(ui::VKEY_LWIN, ui::EF_ALT_DOWN, |
204 kKeycodeSuperL, Mod1Mask, &xev); | 204 kKeycodeSuperL, Mod1Mask, &xev); |
205 aura::KeyEvent keyevent(&xev, false /* is_char */); | 205 aura::KeyEvent keyevent(&xev, false /* is_char */); |
206 rewriter.RewriteCommandToControlForTesting(&keyevent); | 206 rewriter.RewriteForTesting(&keyevent); |
207 EXPECT_EQ(ui::VKEY_LCONTROL, keyevent.key_code()); | 207 EXPECT_EQ(ui::VKEY_CONTROL, keyevent.key_code()); |
208 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 208 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
209 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 209 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
210 EXPECT_EQ(kKeycodeControlL, xkey.keycode); | 210 EXPECT_EQ(kKeycodeControlL, xkey.keycode); |
211 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); | 211 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); |
212 } | 212 } |
213 { | 213 { |
214 // XK_Super_R (right Windows key), Alt modifier. | 214 // XK_Super_R (right Windows key), Alt modifier. |
215 InitXKeyEvent(ui::VKEY_RWIN, ui::EF_ALT_DOWN, | 215 InitXKeyEvent(ui::VKEY_RWIN, ui::EF_ALT_DOWN, |
216 kKeycodeSuperR, Mod1Mask, &xev); | 216 kKeycodeSuperR, Mod1Mask, &xev); |
217 aura::KeyEvent keyevent(&xev, false /* is_char */); | 217 aura::KeyEvent keyevent(&xev, false /* is_char */); |
218 rewriter.RewriteCommandToControlForTesting(&keyevent); | 218 rewriter.RewriteForTesting(&keyevent); |
219 EXPECT_EQ(ui::VKEY_RCONTROL, keyevent.key_code()); | 219 EXPECT_EQ(ui::VKEY_CONTROL, keyevent.key_code()); |
220 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 220 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
221 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 221 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
222 EXPECT_EQ(kKeycodeControlR, xkey.keycode); | 222 EXPECT_EQ(kKeycodeControlR, xkey.keycode); |
223 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); | 223 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask), xkey.state); |
224 } | 224 } |
225 } | 225 } |
226 | 226 |
227 TEST(KeyRewriterTest, TestRewriteNumPadKeys) { | 227 TEST(KeyRewriterTest, TestRewriteNumPadKeys) { |
228 XEvent xev; | 228 XEvent xev; |
229 Display* display = ui::GetXDisplay(); | 229 Display* display = ui::GetXDisplay(); |
(...skipping 26 matching lines...) Expand all Loading... |
256 const unsigned int kKeycodeNumPadHome = XKeysymToKeycode(display, XK_KP_Home); | 256 const unsigned int kKeycodeNumPadHome = XKeysymToKeycode(display, XK_KP_Home); |
257 const unsigned int kKeycodeNumPadUp = XKeysymToKeycode(display, XK_KP_Up); | 257 const unsigned int kKeycodeNumPadUp = XKeysymToKeycode(display, XK_KP_Up); |
258 const unsigned int kKeycodeNumPadPrior = | 258 const unsigned int kKeycodeNumPadPrior = |
259 XKeysymToKeycode(display, XK_KP_Prior); | 259 XKeysymToKeycode(display, XK_KP_Prior); |
260 | 260 |
261 KeyRewriter rewriter; | 261 KeyRewriter rewriter; |
262 { | 262 { |
263 // XK_KP_Insert (= NumPad 0 without Num Lock), no modifier. | 263 // XK_KP_Insert (= NumPad 0 without Num Lock), no modifier. |
264 InitXKeyEvent(ui::VKEY_INSERT, 0, kKeycodeNumPadInsert, 0, &xev); | 264 InitXKeyEvent(ui::VKEY_INSERT, 0, kKeycodeNumPadInsert, 0, &xev); |
265 aura::KeyEvent keyevent(&xev, false /* is_char */); | 265 aura::KeyEvent keyevent(&xev, false /* is_char */); |
266 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 266 rewriter.RewriteForTesting(&keyevent); |
267 EXPECT_EQ(ui::VKEY_NUMPAD0, keyevent.key_code()); | 267 EXPECT_EQ(ui::VKEY_NUMPAD0, keyevent.key_code()); |
268 EXPECT_EQ(0, keyevent.flags()); | 268 EXPECT_EQ(0, keyevent.flags()); |
269 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 269 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
270 EXPECT_EQ(kKeycodeNumPad0, xkey.keycode); | 270 EXPECT_EQ(kKeycodeNumPad0, xkey.keycode); |
271 // Mod2Mask means Num Lock. | 271 // Mod2Mask means Num Lock. |
272 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 272 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
273 } | 273 } |
274 { | 274 { |
275 // XK_KP_Insert (= NumPad 0 without Num Lock), Alt modifier. | 275 // XK_KP_Insert (= NumPad 0 without Num Lock), Alt modifier. |
276 InitXKeyEvent(ui::VKEY_INSERT, ui::EF_ALT_DOWN, | 276 InitXKeyEvent(ui::VKEY_INSERT, ui::EF_ALT_DOWN, |
277 kKeycodeNumPadInsert, Mod1Mask, &xev); | 277 kKeycodeNumPadInsert, Mod1Mask, &xev); |
278 aura::KeyEvent keyevent(&xev, false /* is_char */); | 278 aura::KeyEvent keyevent(&xev, false /* is_char */); |
279 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 279 rewriter.RewriteForTesting(&keyevent); |
280 EXPECT_EQ(ui::VKEY_NUMPAD0, keyevent.key_code()); | 280 EXPECT_EQ(ui::VKEY_NUMPAD0, keyevent.key_code()); |
281 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 281 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
282 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 282 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
283 EXPECT_EQ(kKeycodeNumPad0, xkey.keycode); | 283 EXPECT_EQ(kKeycodeNumPad0, xkey.keycode); |
284 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 284 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
285 } | 285 } |
286 { | 286 { |
287 // XK_KP_Delete (= NumPad . without Num Lock), Alt modifier. | 287 // XK_KP_Delete (= NumPad . without Num Lock), Alt modifier. |
288 InitXKeyEvent(ui::VKEY_DELETE, ui::EF_ALT_DOWN, | 288 InitXKeyEvent(ui::VKEY_DELETE, ui::EF_ALT_DOWN, |
289 kKeycodeNumPadDelete, Mod1Mask, &xev); | 289 kKeycodeNumPadDelete, Mod1Mask, &xev); |
290 aura::KeyEvent keyevent(&xev, false /* is_char */); | 290 aura::KeyEvent keyevent(&xev, false /* is_char */); |
291 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 291 rewriter.RewriteForTesting(&keyevent); |
292 EXPECT_EQ(ui::VKEY_DECIMAL, keyevent.key_code()); | 292 EXPECT_EQ(ui::VKEY_DECIMAL, keyevent.key_code()); |
293 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 293 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
294 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 294 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
295 EXPECT_EQ(kKeycodeNumPadDecimal, xkey.keycode); | 295 EXPECT_EQ(kKeycodeNumPadDecimal, xkey.keycode); |
296 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 296 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
297 } | 297 } |
298 { | 298 { |
299 // XK_KP_End (= NumPad 1 without Num Lock), Alt modifier. | 299 // XK_KP_End (= NumPad 1 without Num Lock), Alt modifier. |
300 InitXKeyEvent(ui::VKEY_END, ui::EF_ALT_DOWN, | 300 InitXKeyEvent(ui::VKEY_END, ui::EF_ALT_DOWN, |
301 kKeycodeNumPadEnd, Mod1Mask, &xev); | 301 kKeycodeNumPadEnd, Mod1Mask, &xev); |
302 aura::KeyEvent keyevent(&xev, false /* is_char */); | 302 aura::KeyEvent keyevent(&xev, false /* is_char */); |
303 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 303 rewriter.RewriteForTesting(&keyevent); |
304 EXPECT_EQ(ui::VKEY_NUMPAD1, keyevent.key_code()); | 304 EXPECT_EQ(ui::VKEY_NUMPAD1, keyevent.key_code()); |
305 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 305 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
306 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 306 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
307 EXPECT_EQ(kKeycodeNumPad1, xkey.keycode); | 307 EXPECT_EQ(kKeycodeNumPad1, xkey.keycode); |
308 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 308 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
309 } | 309 } |
310 { | 310 { |
311 // XK_KP_Down (= NumPad 2 without Num Lock), Alt modifier. | 311 // XK_KP_Down (= NumPad 2 without Num Lock), Alt modifier. |
312 InitXKeyEvent(ui::VKEY_DOWN, ui::EF_ALT_DOWN, | 312 InitXKeyEvent(ui::VKEY_DOWN, ui::EF_ALT_DOWN, |
313 kKeycodeNumPadDown, Mod1Mask, &xev); | 313 kKeycodeNumPadDown, Mod1Mask, &xev); |
314 aura::KeyEvent keyevent(&xev, false /* is_char */); | 314 aura::KeyEvent keyevent(&xev, false /* is_char */); |
315 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 315 rewriter.RewriteForTesting(&keyevent); |
316 EXPECT_EQ(ui::VKEY_NUMPAD2, keyevent.key_code()); | 316 EXPECT_EQ(ui::VKEY_NUMPAD2, keyevent.key_code()); |
317 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 317 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
318 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 318 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
319 EXPECT_EQ(kKeycodeNumPad2, xkey.keycode); | 319 EXPECT_EQ(kKeycodeNumPad2, xkey.keycode); |
320 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 320 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
321 } | 321 } |
322 { | 322 { |
323 // XK_KP_Next (= NumPad 3 without Num Lock), Alt modifier. | 323 // XK_KP_Next (= NumPad 3 without Num Lock), Alt modifier. |
324 InitXKeyEvent(ui::VKEY_NEXT, ui::EF_ALT_DOWN, | 324 InitXKeyEvent(ui::VKEY_NEXT, ui::EF_ALT_DOWN, |
325 kKeycodeNumPadNext, Mod1Mask, &xev); | 325 kKeycodeNumPadNext, Mod1Mask, &xev); |
326 aura::KeyEvent keyevent(&xev, false /* is_char */); | 326 aura::KeyEvent keyevent(&xev, false /* is_char */); |
327 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 327 rewriter.RewriteForTesting(&keyevent); |
328 EXPECT_EQ(ui::VKEY_NUMPAD3, keyevent.key_code()); | 328 EXPECT_EQ(ui::VKEY_NUMPAD3, keyevent.key_code()); |
329 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 329 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
330 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 330 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
331 EXPECT_EQ(kKeycodeNumPad3, xkey.keycode); | 331 EXPECT_EQ(kKeycodeNumPad3, xkey.keycode); |
332 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 332 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
333 } | 333 } |
334 { | 334 { |
335 // XK_KP_Left (= NumPad 4 without Num Lock), Alt modifier. | 335 // XK_KP_Left (= NumPad 4 without Num Lock), Alt modifier. |
336 InitXKeyEvent(ui::VKEY_LEFT, ui::EF_ALT_DOWN, | 336 InitXKeyEvent(ui::VKEY_LEFT, ui::EF_ALT_DOWN, |
337 kKeycodeNumPadLeft, Mod1Mask, &xev); | 337 kKeycodeNumPadLeft, Mod1Mask, &xev); |
338 aura::KeyEvent keyevent(&xev, false /* is_char */); | 338 aura::KeyEvent keyevent(&xev, false /* is_char */); |
339 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 339 rewriter.RewriteForTesting(&keyevent); |
340 EXPECT_EQ(ui::VKEY_NUMPAD4, keyevent.key_code()); | 340 EXPECT_EQ(ui::VKEY_NUMPAD4, keyevent.key_code()); |
341 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 341 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
342 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 342 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
343 EXPECT_EQ(kKeycodeNumPad4, xkey.keycode); | 343 EXPECT_EQ(kKeycodeNumPad4, xkey.keycode); |
344 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 344 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
345 } | 345 } |
346 { | 346 { |
347 // XK_KP_Begin (= NumPad 5 without Num Lock), Alt modifier. | 347 // XK_KP_Begin (= NumPad 5 without Num Lock), Alt modifier. |
348 InitXKeyEvent(ui::VKEY_CLEAR, ui::EF_ALT_DOWN, | 348 InitXKeyEvent(ui::VKEY_CLEAR, ui::EF_ALT_DOWN, |
349 kKeycodeNumPadBegin, Mod1Mask, &xev); | 349 kKeycodeNumPadBegin, Mod1Mask, &xev); |
350 aura::KeyEvent keyevent(&xev, false /* is_char */); | 350 aura::KeyEvent keyevent(&xev, false /* is_char */); |
351 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 351 rewriter.RewriteForTesting(&keyevent); |
352 EXPECT_EQ(ui::VKEY_NUMPAD5, keyevent.key_code()); | 352 EXPECT_EQ(ui::VKEY_NUMPAD5, keyevent.key_code()); |
353 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 353 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
354 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 354 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
355 EXPECT_EQ(kKeycodeNumPad5, xkey.keycode); | 355 EXPECT_EQ(kKeycodeNumPad5, xkey.keycode); |
356 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 356 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
357 } | 357 } |
358 { | 358 { |
359 // XK_KP_Right (= NumPad 6 without Num Lock), Alt modifier. | 359 // XK_KP_Right (= NumPad 6 without Num Lock), Alt modifier. |
360 InitXKeyEvent(ui::VKEY_RIGHT, ui::EF_ALT_DOWN, | 360 InitXKeyEvent(ui::VKEY_RIGHT, ui::EF_ALT_DOWN, |
361 kKeycodeNumPadRight, Mod1Mask, &xev); | 361 kKeycodeNumPadRight, Mod1Mask, &xev); |
362 aura::KeyEvent keyevent(&xev, false /* is_char */); | 362 aura::KeyEvent keyevent(&xev, false /* is_char */); |
363 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 363 rewriter.RewriteForTesting(&keyevent); |
364 EXPECT_EQ(ui::VKEY_NUMPAD6, keyevent.key_code()); | 364 EXPECT_EQ(ui::VKEY_NUMPAD6, keyevent.key_code()); |
365 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 365 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
366 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 366 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
367 EXPECT_EQ(kKeycodeNumPad6, xkey.keycode); | 367 EXPECT_EQ(kKeycodeNumPad6, xkey.keycode); |
368 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 368 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
369 } | 369 } |
370 { | 370 { |
371 // XK_KP_Home (= NumPad 7 without Num Lock), Alt modifier. | 371 // XK_KP_Home (= NumPad 7 without Num Lock), Alt modifier. |
372 InitXKeyEvent(ui::VKEY_HOME, ui::EF_ALT_DOWN, | 372 InitXKeyEvent(ui::VKEY_HOME, ui::EF_ALT_DOWN, |
373 kKeycodeNumPadHome, Mod1Mask, &xev); | 373 kKeycodeNumPadHome, Mod1Mask, &xev); |
374 aura::KeyEvent keyevent(&xev, false /* is_char */); | 374 aura::KeyEvent keyevent(&xev, false /* is_char */); |
375 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 375 rewriter.RewriteForTesting(&keyevent); |
376 EXPECT_EQ(ui::VKEY_NUMPAD7, keyevent.key_code()); | 376 EXPECT_EQ(ui::VKEY_NUMPAD7, keyevent.key_code()); |
377 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 377 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
378 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 378 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
379 EXPECT_EQ(kKeycodeNumPad7, xkey.keycode); | 379 EXPECT_EQ(kKeycodeNumPad7, xkey.keycode); |
380 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 380 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
381 } | 381 } |
382 { | 382 { |
383 // XK_KP_Up (= NumPad 8 without Num Lock), Alt modifier. | 383 // XK_KP_Up (= NumPad 8 without Num Lock), Alt modifier. |
384 InitXKeyEvent(ui::VKEY_UP, ui::EF_ALT_DOWN, | 384 InitXKeyEvent(ui::VKEY_UP, ui::EF_ALT_DOWN, |
385 kKeycodeNumPadUp, Mod1Mask, &xev); | 385 kKeycodeNumPadUp, Mod1Mask, &xev); |
386 aura::KeyEvent keyevent(&xev, false /* is_char */); | 386 aura::KeyEvent keyevent(&xev, false /* is_char */); |
387 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 387 rewriter.RewriteForTesting(&keyevent); |
388 EXPECT_EQ(ui::VKEY_NUMPAD8, keyevent.key_code()); | 388 EXPECT_EQ(ui::VKEY_NUMPAD8, keyevent.key_code()); |
389 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 389 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
390 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 390 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
391 EXPECT_EQ(kKeycodeNumPad8, xkey.keycode); | 391 EXPECT_EQ(kKeycodeNumPad8, xkey.keycode); |
392 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 392 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
393 } | 393 } |
394 { | 394 { |
395 // XK_KP_Prior (= NumPad 9 without Num Lock), Alt modifier. | 395 // XK_KP_Prior (= NumPad 9 without Num Lock), Alt modifier. |
396 InitXKeyEvent(ui::VKEY_PRIOR, ui::EF_ALT_DOWN, | 396 InitXKeyEvent(ui::VKEY_PRIOR, ui::EF_ALT_DOWN, |
397 kKeycodeNumPadPrior, Mod1Mask, &xev); | 397 kKeycodeNumPadPrior, Mod1Mask, &xev); |
398 aura::KeyEvent keyevent(&xev, false /* is_char */); | 398 aura::KeyEvent keyevent(&xev, false /* is_char */); |
399 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 399 rewriter.RewriteForTesting(&keyevent); |
400 EXPECT_EQ(ui::VKEY_NUMPAD9, keyevent.key_code()); | 400 EXPECT_EQ(ui::VKEY_NUMPAD9, keyevent.key_code()); |
401 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); | 401 EXPECT_EQ(ui::EF_ALT_DOWN, keyevent.flags()); |
402 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 402 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
403 EXPECT_EQ(kKeycodeNumPad9, xkey.keycode); | 403 EXPECT_EQ(kKeycodeNumPad9, xkey.keycode); |
404 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); | 404 EXPECT_EQ(static_cast<unsigned int>(Mod1Mask | Mod2Mask), xkey.state); |
405 } | 405 } |
406 { | 406 { |
407 // XK_KP_0 (= NumPad 0 with Num Lock), Num Lock modifier. | 407 // XK_KP_0 (= NumPad 0 with Num Lock), Num Lock modifier. |
408 InitXKeyEvent(ui::VKEY_NUMPAD0, 0, kKeycodeNumPad0, Mod2Mask, &xev); | 408 InitXKeyEvent(ui::VKEY_NUMPAD0, 0, kKeycodeNumPad0, Mod2Mask, &xev); |
409 aura::KeyEvent keyevent(&xev, false /* is_char */); | 409 aura::KeyEvent keyevent(&xev, false /* is_char */); |
410 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 410 rewriter.RewriteForTesting(&keyevent); |
411 EXPECT_EQ(ui::VKEY_NUMPAD0, keyevent.key_code()); | 411 EXPECT_EQ(ui::VKEY_NUMPAD0, keyevent.key_code()); |
412 EXPECT_EQ(0, keyevent.flags()); | 412 EXPECT_EQ(0, keyevent.flags()); |
413 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 413 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
414 EXPECT_EQ(kKeycodeNumPad0, xkey.keycode); | 414 EXPECT_EQ(kKeycodeNumPad0, xkey.keycode); |
415 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 415 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
416 } | 416 } |
417 { | 417 { |
418 // XK_KP_DECIMAL (= NumPad . with Num Lock), Num Lock modifier. | 418 // XK_KP_DECIMAL (= NumPad . with Num Lock), Num Lock modifier. |
419 InitXKeyEvent(ui::VKEY_DECIMAL, 0, kKeycodeNumPadDecimal, Mod2Mask, &xev); | 419 InitXKeyEvent(ui::VKEY_DECIMAL, 0, kKeycodeNumPadDecimal, Mod2Mask, &xev); |
420 aura::KeyEvent keyevent(&xev, false /* is_char */); | 420 aura::KeyEvent keyevent(&xev, false /* is_char */); |
421 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 421 rewriter.RewriteForTesting(&keyevent); |
422 EXPECT_EQ(ui::VKEY_DECIMAL, keyevent.key_code()); | 422 EXPECT_EQ(ui::VKEY_DECIMAL, keyevent.key_code()); |
423 EXPECT_EQ(0, keyevent.flags()); | 423 EXPECT_EQ(0, keyevent.flags()); |
424 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 424 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
425 EXPECT_EQ(kKeycodeNumPadDecimal, xkey.keycode); | 425 EXPECT_EQ(kKeycodeNumPadDecimal, xkey.keycode); |
426 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 426 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
427 } | 427 } |
428 { | 428 { |
429 // XK_KP_1 (= NumPad 1 with Num Lock), Num Lock modifier. | 429 // XK_KP_1 (= NumPad 1 with Num Lock), Num Lock modifier. |
430 InitXKeyEvent(ui::VKEY_NUMPAD1, 0, kKeycodeNumPad1, Mod2Mask, &xev); | 430 InitXKeyEvent(ui::VKEY_NUMPAD1, 0, kKeycodeNumPad1, Mod2Mask, &xev); |
431 aura::KeyEvent keyevent(&xev, false /* is_char */); | 431 aura::KeyEvent keyevent(&xev, false /* is_char */); |
432 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 432 rewriter.RewriteForTesting(&keyevent); |
433 EXPECT_EQ(ui::VKEY_NUMPAD1, keyevent.key_code()); | 433 EXPECT_EQ(ui::VKEY_NUMPAD1, keyevent.key_code()); |
434 EXPECT_EQ(0, keyevent.flags()); | 434 EXPECT_EQ(0, keyevent.flags()); |
435 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 435 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
436 EXPECT_EQ(kKeycodeNumPad1, xkey.keycode); | 436 EXPECT_EQ(kKeycodeNumPad1, xkey.keycode); |
437 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 437 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
438 } | 438 } |
439 { | 439 { |
440 // XK_KP_2 (= NumPad 2 with Num Lock), Num Lock modifier. | 440 // XK_KP_2 (= NumPad 2 with Num Lock), Num Lock modifier. |
441 InitXKeyEvent(ui::VKEY_NUMPAD2, 0, kKeycodeNumPad2, Mod2Mask, &xev); | 441 InitXKeyEvent(ui::VKEY_NUMPAD2, 0, kKeycodeNumPad2, Mod2Mask, &xev); |
442 aura::KeyEvent keyevent(&xev, false /* is_char */); | 442 aura::KeyEvent keyevent(&xev, false /* is_char */); |
443 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 443 rewriter.RewriteForTesting(&keyevent); |
444 EXPECT_EQ(ui::VKEY_NUMPAD2, keyevent.key_code()); | 444 EXPECT_EQ(ui::VKEY_NUMPAD2, keyevent.key_code()); |
445 EXPECT_EQ(0, keyevent.flags()); | 445 EXPECT_EQ(0, keyevent.flags()); |
446 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 446 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
447 EXPECT_EQ(kKeycodeNumPad2, xkey.keycode); | 447 EXPECT_EQ(kKeycodeNumPad2, xkey.keycode); |
448 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 448 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
449 } | 449 } |
450 { | 450 { |
451 // XK_KP_3 (= NumPad 3 with Num Lock), Num Lock modifier. | 451 // XK_KP_3 (= NumPad 3 with Num Lock), Num Lock modifier. |
452 InitXKeyEvent(ui::VKEY_NUMPAD3, 0, kKeycodeNumPad3, Mod2Mask, &xev); | 452 InitXKeyEvent(ui::VKEY_NUMPAD3, 0, kKeycodeNumPad3, Mod2Mask, &xev); |
453 aura::KeyEvent keyevent(&xev, false /* is_char */); | 453 aura::KeyEvent keyevent(&xev, false /* is_char */); |
454 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 454 rewriter.RewriteForTesting(&keyevent); |
455 EXPECT_EQ(ui::VKEY_NUMPAD3, keyevent.key_code()); | 455 EXPECT_EQ(ui::VKEY_NUMPAD3, keyevent.key_code()); |
456 EXPECT_EQ(0, keyevent.flags()); | 456 EXPECT_EQ(0, keyevent.flags()); |
457 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 457 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
458 EXPECT_EQ(kKeycodeNumPad3, xkey.keycode); | 458 EXPECT_EQ(kKeycodeNumPad3, xkey.keycode); |
459 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 459 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
460 } | 460 } |
461 { | 461 { |
462 // XK_KP_4 (= NumPad 4 with Num Lock), Num Lock modifier. | 462 // XK_KP_4 (= NumPad 4 with Num Lock), Num Lock modifier. |
463 InitXKeyEvent(ui::VKEY_NUMPAD4, 0, kKeycodeNumPad4, Mod2Mask, &xev); | 463 InitXKeyEvent(ui::VKEY_NUMPAD4, 0, kKeycodeNumPad4, Mod2Mask, &xev); |
464 aura::KeyEvent keyevent(&xev, false /* is_char */); | 464 aura::KeyEvent keyevent(&xev, false /* is_char */); |
465 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 465 rewriter.RewriteForTesting(&keyevent); |
466 EXPECT_EQ(ui::VKEY_NUMPAD4, keyevent.key_code()); | 466 EXPECT_EQ(ui::VKEY_NUMPAD4, keyevent.key_code()); |
467 EXPECT_EQ(0, keyevent.flags()); | 467 EXPECT_EQ(0, keyevent.flags()); |
468 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 468 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
469 EXPECT_EQ(kKeycodeNumPad4, xkey.keycode); | 469 EXPECT_EQ(kKeycodeNumPad4, xkey.keycode); |
470 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 470 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
471 } | 471 } |
472 { | 472 { |
473 // XK_KP_5 (= NumPad 5 with Num Lock), Num Lock modifier. | 473 // XK_KP_5 (= NumPad 5 with Num Lock), Num Lock modifier. |
474 InitXKeyEvent(ui::VKEY_NUMPAD5, 0, kKeycodeNumPad5, Mod2Mask, &xev); | 474 InitXKeyEvent(ui::VKEY_NUMPAD5, 0, kKeycodeNumPad5, Mod2Mask, &xev); |
475 aura::KeyEvent keyevent(&xev, false /* is_char */); | 475 aura::KeyEvent keyevent(&xev, false /* is_char */); |
476 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 476 rewriter.RewriteForTesting(&keyevent); |
477 EXPECT_EQ(ui::VKEY_NUMPAD5, keyevent.key_code()); | 477 EXPECT_EQ(ui::VKEY_NUMPAD5, keyevent.key_code()); |
478 EXPECT_EQ(0, keyevent.flags()); | 478 EXPECT_EQ(0, keyevent.flags()); |
479 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 479 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
480 EXPECT_EQ(kKeycodeNumPad5, xkey.keycode); | 480 EXPECT_EQ(kKeycodeNumPad5, xkey.keycode); |
481 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 481 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
482 } | 482 } |
483 { | 483 { |
484 // XK_KP_6 (= NumPad 6 with Num Lock), Num Lock modifier. | 484 // XK_KP_6 (= NumPad 6 with Num Lock), Num Lock modifier. |
485 InitXKeyEvent(ui::VKEY_NUMPAD6, 0, kKeycodeNumPad6, Mod2Mask, &xev); | 485 InitXKeyEvent(ui::VKEY_NUMPAD6, 0, kKeycodeNumPad6, Mod2Mask, &xev); |
486 aura::KeyEvent keyevent(&xev, false /* is_char */); | 486 aura::KeyEvent keyevent(&xev, false /* is_char */); |
487 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 487 rewriter.RewriteForTesting(&keyevent); |
488 EXPECT_EQ(ui::VKEY_NUMPAD6, keyevent.key_code()); | 488 EXPECT_EQ(ui::VKEY_NUMPAD6, keyevent.key_code()); |
489 EXPECT_EQ(0, keyevent.flags()); | 489 EXPECT_EQ(0, keyevent.flags()); |
490 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 490 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
491 EXPECT_EQ(kKeycodeNumPad6, xkey.keycode); | 491 EXPECT_EQ(kKeycodeNumPad6, xkey.keycode); |
492 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 492 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
493 } | 493 } |
494 { | 494 { |
495 // XK_KP_7 (= NumPad 7 with Num Lock), Num Lock modifier. | 495 // XK_KP_7 (= NumPad 7 with Num Lock), Num Lock modifier. |
496 InitXKeyEvent(ui::VKEY_NUMPAD7, 0, kKeycodeNumPad7, Mod2Mask, &xev); | 496 InitXKeyEvent(ui::VKEY_NUMPAD7, 0, kKeycodeNumPad7, Mod2Mask, &xev); |
497 aura::KeyEvent keyevent(&xev, false /* is_char */); | 497 aura::KeyEvent keyevent(&xev, false /* is_char */); |
498 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 498 rewriter.RewriteForTesting(&keyevent); |
499 EXPECT_EQ(ui::VKEY_NUMPAD7, keyevent.key_code()); | 499 EXPECT_EQ(ui::VKEY_NUMPAD7, keyevent.key_code()); |
500 EXPECT_EQ(0, keyevent.flags()); | 500 EXPECT_EQ(0, keyevent.flags()); |
501 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 501 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
502 EXPECT_EQ(kKeycodeNumPad7, xkey.keycode); | 502 EXPECT_EQ(kKeycodeNumPad7, xkey.keycode); |
503 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 503 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
504 } | 504 } |
505 { | 505 { |
506 // XK_KP_8 (= NumPad 8 with Num Lock), Num Lock modifier. | 506 // XK_KP_8 (= NumPad 8 with Num Lock), Num Lock modifier. |
507 InitXKeyEvent(ui::VKEY_NUMPAD8, 0, kKeycodeNumPad8, Mod2Mask, &xev); | 507 InitXKeyEvent(ui::VKEY_NUMPAD8, 0, kKeycodeNumPad8, Mod2Mask, &xev); |
508 aura::KeyEvent keyevent(&xev, false /* is_char */); | 508 aura::KeyEvent keyevent(&xev, false /* is_char */); |
509 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 509 rewriter.RewriteForTesting(&keyevent); |
510 EXPECT_EQ(ui::VKEY_NUMPAD8, keyevent.key_code()); | 510 EXPECT_EQ(ui::VKEY_NUMPAD8, keyevent.key_code()); |
511 EXPECT_EQ(0, keyevent.flags()); | 511 EXPECT_EQ(0, keyevent.flags()); |
512 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 512 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
513 EXPECT_EQ(kKeycodeNumPad8, xkey.keycode); | 513 EXPECT_EQ(kKeycodeNumPad8, xkey.keycode); |
514 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 514 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
515 } | 515 } |
516 { | 516 { |
517 // XK_KP_9 (= NumPad 9 with Num Lock), Num Lock modifier. | 517 // XK_KP_9 (= NumPad 9 with Num Lock), Num Lock modifier. |
518 InitXKeyEvent(ui::VKEY_NUMPAD9, 0, kKeycodeNumPad9, Mod2Mask, &xev); | 518 InitXKeyEvent(ui::VKEY_NUMPAD9, 0, kKeycodeNumPad9, Mod2Mask, &xev); |
519 aura::KeyEvent keyevent(&xev, false /* is_char */); | 519 aura::KeyEvent keyevent(&xev, false /* is_char */); |
520 rewriter.RewriteNumPadKeysForTesting(&keyevent); | 520 rewriter.RewriteForTesting(&keyevent); |
521 EXPECT_EQ(ui::VKEY_NUMPAD9, keyevent.key_code()); | 521 EXPECT_EQ(ui::VKEY_NUMPAD9, keyevent.key_code()); |
522 EXPECT_EQ(0, keyevent.flags()); | 522 EXPECT_EQ(0, keyevent.flags()); |
523 const XKeyEvent& xkey = keyevent.native_event()->xkey; | 523 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
524 EXPECT_EQ(kKeycodeNumPad9, xkey.keycode); | 524 EXPECT_EQ(kKeycodeNumPad9, xkey.keycode); |
525 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); | 525 EXPECT_EQ(static_cast<unsigned int>(Mod2Mask), xkey.state); |
526 } | 526 } |
527 } | 527 } |
| 528 |
| 529 // Tests if the rewriter can handle a Command + Num Pad event. |
| 530 TEST(KeyRewriterTest, TestRewriteNumPadKeysOnAppleKeyboard) { |
| 531 XEvent xev; |
| 532 Display* display = ui::GetXDisplay(); |
| 533 |
| 534 const unsigned int kKeycodeNumPadEnd = XKeysymToKeycode(display, XK_KP_End); |
| 535 const unsigned int kKeycodeNumPad1 = XKeysymToKeycode(display, XK_KP_1); |
| 536 |
| 537 KeyRewriter rewriter; |
| 538 rewriter.DeviceAddedForTesting(0, "Apple Keyboard"); |
| 539 rewriter.set_last_device_id_for_testing(0); |
| 540 { |
| 541 // XK_KP_End (= NumPad 1 without Num Lock), Win modifier. |
| 542 InitXKeyEvent(ui::VKEY_END, 0, kKeycodeNumPadEnd, Mod4Mask, &xev); |
| 543 aura::KeyEvent keyevent(&xev, false /* is_char */); |
| 544 rewriter.RewriteForTesting(&keyevent); |
| 545 // The result should be "Num Pad 1 with Control + Num Lock modifiers". |
| 546 EXPECT_EQ(ui::VKEY_NUMPAD1, keyevent.key_code()); |
| 547 EXPECT_EQ(ui::EF_CONTROL_DOWN, keyevent.flags()); |
| 548 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
| 549 EXPECT_EQ(kKeycodeNumPad1, xkey.keycode); |
| 550 EXPECT_EQ(static_cast<unsigned int>(ControlMask | Mod2Mask), xkey.state); |
| 551 } |
| 552 { |
| 553 // XK_KP_1 (= NumPad 1 without Num Lock), Win modifier. |
| 554 InitXKeyEvent(ui::VKEY_NUMPAD1, 0, kKeycodeNumPadEnd, Mod4Mask, &xev); |
| 555 aura::KeyEvent keyevent(&xev, false /* is_char */); |
| 556 rewriter.RewriteForTesting(&keyevent); |
| 557 // The result should also be "Num Pad 1 with Control + Num Lock modifiers". |
| 558 EXPECT_EQ(ui::VKEY_NUMPAD1, keyevent.key_code()); |
| 559 EXPECT_EQ(ui::EF_CONTROL_DOWN, keyevent.flags()); |
| 560 const XKeyEvent& xkey = keyevent.native_event()->xkey; |
| 561 EXPECT_EQ(kKeycodeNumPad1, xkey.keycode); |
| 562 EXPECT_EQ(static_cast<unsigned int>(ControlMask | Mod2Mask), xkey.state); |
| 563 } |
| 564 } |
| 565 |
528 #endif // OS_CHROMEOS | 566 #endif // OS_CHROMEOS |
OLD | NEW |