OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 "views/event.h" | 5 #include "views/event.h" |
6 | 6 |
7 #include <gdk/gdk.h> | 7 #include <gdk/gdk.h> |
8 | 8 |
| 9 #include "base/keyboard_code_conversion_gtk.h" |
| 10 |
9 namespace views { | 11 namespace views { |
10 | 12 |
11 // TODO(jcampan): the same physical key can send different keyvals (ex: a or A). | 13 // TODO(jcampan): the same physical key can send different keyvals (ex: a or A). |
12 // In order for accelerators to work, we need to normalize that. The right | 14 // In order for accelerators to work, we need to normalize that. The right |
13 // solution should probably to get the key-code out of the keystate. | 15 // solution should probably to get the key-code out of the keystate. |
14 KeyEvent::KeyEvent(GdkEventKey* event, bool make_lower_case) | 16 KeyEvent::KeyEvent(GdkEventKey* event) |
15 : Event(event->type == GDK_KEY_PRESS ? | 17 : Event(event->type == GDK_KEY_PRESS ? |
16 Event::ET_KEY_PRESSED : Event::ET_KEY_RELEASED, | 18 Event::ET_KEY_PRESSED : Event::ET_KEY_RELEASED, |
17 GetFlagsFromGdkState(event->state)), | 19 GetFlagsFromGdkState(event->state)), |
18 // TODO(erg): All these values are iffy. | 20 // TODO(erg): All these values are iffy. |
19 character_(make_lower_case ? gdk_keyval_to_lower(event->keyval) : | 21 character_(base::WindowsKeyCodeForGdkKeyCode(event->keyval)), |
20 event->keyval), | |
21 repeat_count_(0), | 22 repeat_count_(0), |
22 message_flags_(0) { | 23 message_flags_(0) { |
23 } | 24 } |
24 | 25 |
25 int Event::GetFlagsFromGdkState(int state) { | 26 int Event::GetFlagsFromGdkState(int state) { |
26 int flags = 0; | 27 int flags = 0; |
27 if (state & GDK_CONTROL_MASK) | 28 if (state & GDK_CONTROL_MASK) |
28 flags |= Event::EF_CONTROL_DOWN; | 29 flags |= Event::EF_CONTROL_DOWN; |
29 if (state & GDK_SHIFT_MASK) | 30 if (state & GDK_SHIFT_MASK) |
30 flags |= Event::EF_SHIFT_DOWN; | 31 flags |= Event::EF_SHIFT_DOWN; |
31 if (state & GDK_MOD1_MASK) | 32 if (state & GDK_MOD1_MASK) |
32 flags |= Event::EF_ALT_DOWN; | 33 flags |= Event::EF_ALT_DOWN; |
33 if (state & GDK_BUTTON1_MASK) | 34 if (state & GDK_BUTTON1_MASK) |
34 flags |= Event::EF_LEFT_BUTTON_DOWN; | 35 flags |= Event::EF_LEFT_BUTTON_DOWN; |
35 if (state & GDK_BUTTON2_MASK) | 36 if (state & GDK_BUTTON2_MASK) |
36 flags |= Event::EF_MIDDLE_BUTTON_DOWN; | 37 flags |= Event::EF_MIDDLE_BUTTON_DOWN; |
37 if (state & GDK_BUTTON3_MASK) | 38 if (state & GDK_BUTTON3_MASK) |
38 flags |= Event::EF_RIGHT_BUTTON_DOWN; | 39 flags |= Event::EF_RIGHT_BUTTON_DOWN; |
39 return flags; | 40 return flags; |
40 } | 41 } |
41 | 42 |
42 } // namespace views | 43 } // namespace views |
OLD | NEW |