OLD | NEW |
---|---|
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 "chrome/browser/chromeos/events/event_rewriter.h" | 5 #include "chrome/browser/chromeos/events/event_rewriter.h" |
6 | 6 |
7 #include <vector> | 7 #include <vector> |
8 | 8 |
9 #include "ash/sticky_keys/sticky_keys_controller.h" | 9 #include "ash/sticky_keys/sticky_keys_controller.h" |
10 #include "ash/wm/window_state.h" | 10 #include "ash/wm/window_state.h" |
(...skipping 377 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
388 rewritten_key_event->set_key_code(state.key_code); | 388 rewritten_key_event->set_key_code(state.key_code); |
389 rewritten_key_event->set_character( | 389 rewritten_key_event->set_character( |
390 ui::GetCharacterFromKeyCode(state.key_code, state.flags)); | 390 ui::GetCharacterFromKeyCode(state.key_code, state.flags)); |
391 rewritten_key_event->NormalizeFlags(); | 391 rewritten_key_event->NormalizeFlags(); |
392 #if defined(USE_X11) | 392 #if defined(USE_X11) |
393 XEvent* xev = rewritten_key_event->native_event(); | 393 XEvent* xev = rewritten_key_event->native_event(); |
394 if (xev) { | 394 if (xev) { |
395 CHECK(xev->type == KeyPress || xev->type == KeyRelease); | 395 CHECK(xev->type == KeyPress || xev->type == KeyRelease); |
396 XKeyEvent* xkey = &(xev->xkey); | 396 XKeyEvent* xkey = &(xev->xkey); |
397 UpdateX11EventMask(rewritten_key_event->flags(), &xkey->state); | 397 UpdateX11EventMask(rewritten_key_event->flags(), &xkey->state); |
398 xkey->keycode = | 398 // The X11 keycode represents a physical key position, so it shouldn't |
399 XKeysymToKeycode(gfx::GetXDisplay(), | 399 // change unless we have actually changed keys, not just modifiers. |
400 ui::XKeysymForWindowsKeyCode( | 400 // This is one guard against problems like crbug.com/390263. |
401 state.key_code, state.flags & ui::EF_SHIFT_DOWN)); | 401 if (key_event.key_code() != state.key_code) { |
402 xkey->keycode = XKeysymForWindowsKeyCode( | |
Daniel Erat
2014/07/08 14:49:31
s/XKeysym/XKeyCode/
kpschoedel
2014/07/08 16:44:50
Drat. Nothing broke because it was an unambiguous
| |
403 state.key_code, state.flags, gfx::GetXDisplay()); | |
404 } | |
402 } | 405 } |
403 #endif | 406 #endif |
404 return status; | 407 return status; |
405 } | 408 } |
406 | 409 |
407 ui::EventRewriteStatus EventRewriter::RewriteMouseButtonEvent( | 410 ui::EventRewriteStatus EventRewriter::RewriteMouseButtonEvent( |
408 const ui::MouseEvent& mouse_event, | 411 const ui::MouseEvent& mouse_event, |
409 scoped_ptr<ui::Event>* rewritten_event) { | 412 scoped_ptr<ui::Event>* rewritten_event) { |
410 int flags = mouse_event.flags(); | 413 int flags = mouse_event.flags(); |
411 RewriteLocatedEvent(mouse_event, &flags); | 414 RewriteLocatedEvent(mouse_event, &flags); |
(...skipping 521 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
933 | 936 |
934 XIFreeDeviceInfo(device_info); | 937 XIFreeDeviceInfo(device_info); |
935 } | 938 } |
936 | 939 |
937 void EventRewriter::DeviceRemoved(int device_id) { | 940 void EventRewriter::DeviceRemoved(int device_id) { |
938 device_id_to_type_.erase(device_id); | 941 device_id_to_type_.erase(device_id); |
939 } | 942 } |
940 #endif | 943 #endif |
941 | 944 |
942 } // namespace chromeos | 945 } // namespace chromeos |
OLD | NEW |