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 "views/events/event.h" | 5 #include "views/events/event.h" |
6 | 6 |
7 #include "views/view.h" | 7 #include "views/view.h" |
8 #include "views/widget/root_view.h" | 8 #include "views/widget/root_view.h" |
9 | 9 |
10 namespace views { | 10 namespace views { |
(...skipping 51 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
62 //////////////////////////////////////////////////////////////////////////////// | 62 //////////////////////////////////////////////////////////////////////////////// |
63 // KeyEvent, public: | 63 // KeyEvent, public: |
64 | 64 |
65 KeyEvent::KeyEvent(ui::EventType type, ui::KeyboardCode key_code, | 65 KeyEvent::KeyEvent(ui::EventType type, ui::KeyboardCode key_code, |
66 int event_flags) | 66 int event_flags) |
67 : Event(type, event_flags), | 67 : Event(type, event_flags), |
68 key_code_(key_code) { | 68 key_code_(key_code) { |
69 } | 69 } |
70 | 70 |
71 //////////////////////////////////////////////////////////////////////////////// | 71 //////////////////////////////////////////////////////////////////////////////// |
72 // KeyEvent, private: | |
73 | |
74 // static | |
75 uint16 KeyEvent::GetCharacterFromKeyCode(ui::KeyboardCode key_code, int flags) { | |
76 const bool ctrl = (flags & ui::EF_CONTROL_DOWN) != 0; | |
77 const bool shift = (flags & ui::EF_SHIFT_DOWN) != 0; | |
78 const bool upper = shift ^ ((flags & ui::EF_CAPS_LOCK_DOWN) != 0); | |
79 | |
80 // Following Windows behavior to map ctrl-z ~ ctrl-z to \x01 ~ \x1A. | |
Yusuke Sato
2011/03/18 12:07:41
the first ctrl-z should be ctrl-a?
James Su
2011/03/18 15:54:09
Done.
| |
81 if (key_code >= ui::VKEY_A && key_code <= ui::VKEY_Z) | |
82 return key_code - ui::VKEY_A + (ctrl ? 1 : (upper ? 'A' : 'a')); | |
83 | |
84 // Other ctrl characters | |
85 if (ctrl) { | |
86 if (shift) { | |
87 // following graphics chars require shift key to input. | |
88 switch (key_code) { | |
89 // ctrl-@ maps to \x00 (Null byte) | |
90 case ui::VKEY_2: | |
91 return 0; | |
92 // ctrl-^ maps to \x1E (Record separator, Information separator two) | |
93 case ui::VKEY_6: | |
94 return 0x1E; | |
95 // ctrl-_ maps to \x1F (Unit separator, Information separator one) | |
96 case ui::VKEY_OEM_MINUS: | |
97 return 0x1F; | |
98 // Returns 0 for all other keys to avoid inputting unexpected chars. | |
99 default: | |
100 return 0; | |
101 } | |
102 } else { | |
103 switch (key_code) { | |
104 // ctrl-[ maps to \x1B (Escape) | |
105 case ui::VKEY_OEM_4: | |
106 return 0x1B; | |
107 // ctrl-\ maps to \x1C (File separator, Information separator four) | |
108 case ui::VKEY_OEM_5: | |
109 return 0x1C; | |
110 // ctrl-] maps to \x1D (Group separator, Information separator three) | |
111 case ui::VKEY_OEM_6: | |
112 return 0x1D; | |
113 // ctrl-Enter maps to \x0A (Line feed) | |
114 case ui::VKEY_RETURN: | |
115 return 0x0A; | |
116 // Returns 0 for all other keys to avoid inputting unexpected chars. | |
117 default: | |
118 return 0; | |
119 } | |
120 } | |
121 } | |
122 | |
123 // Normal characters | |
124 if (key_code >= ui::VKEY_0 && key_code <= ui::VKEY_9) | |
125 return shift ? ")!@#$%^&*("[key_code - ui::VKEY_0] : key_code; | |
Yusuke Sato
2011/03/18 12:07:41
It seems that the US keyboard layout is assumed he
James Su
2011/03/18 15:54:09
Updated the comment in the header file.
| |
126 else if (key_code >= ui::VKEY_NUMPAD0 && key_code <= ui::VKEY_NUMPAD9) | |
127 return key_code - ui::VKEY_NUMPAD0 + '0'; | |
128 | |
129 switch (key_code) { | |
130 case ui::VKEY_TAB: | |
131 return '\t'; | |
132 case ui::VKEY_RETURN: | |
133 return '\r'; | |
134 case ui::VKEY_MULTIPLY: | |
135 return '*'; | |
136 case ui::VKEY_ADD: | |
137 return '+'; | |
138 case ui::VKEY_SUBTRACT: | |
139 return '-'; | |
140 case ui::VKEY_DECIMAL: | |
141 return '.'; | |
142 case ui::VKEY_DIVIDE: | |
143 return '/'; | |
144 case ui::VKEY_SPACE: | |
145 return ' '; | |
146 case ui::VKEY_OEM_1: | |
147 return shift ? ':' : ';'; | |
148 case ui::VKEY_OEM_PLUS: | |
149 return shift ? '+' : '='; | |
150 case ui::VKEY_OEM_COMMA: | |
151 return shift ? '<' : ','; | |
152 case ui::VKEY_OEM_MINUS: | |
153 return shift ? '_' : '-'; | |
154 case ui::VKEY_OEM_PERIOD: | |
155 return shift ? '>' : '.'; | |
156 case ui::VKEY_OEM_2: | |
157 return shift ? '?' : '/'; | |
158 case ui::VKEY_OEM_3: | |
159 return shift ? '~' : '`'; | |
160 case ui::VKEY_OEM_4: | |
161 return shift ? '{' : '['; | |
162 case ui::VKEY_OEM_5: | |
163 return shift ? '|' : '\\'; | |
164 case ui::VKEY_OEM_6: | |
165 return shift ? '}' : ']'; | |
166 case ui::VKEY_OEM_7: | |
167 return shift ? '"' : '\''; | |
168 default: | |
169 return 0; | |
170 } | |
171 } | |
172 | |
173 //////////////////////////////////////////////////////////////////////////////// | |
72 // MouseEvent, public: | 174 // MouseEvent, public: |
73 | 175 |
74 // TODO(msw): Kill this legacy constructor when we update uses. | 176 // TODO(msw): Kill this legacy constructor when we update uses. |
75 MouseEvent::MouseEvent(ui::EventType type, | 177 MouseEvent::MouseEvent(ui::EventType type, |
76 View* source, | 178 View* source, |
77 View* target, | 179 View* target, |
78 const gfx::Point &l, | 180 const gfx::Point &l, |
79 int flags) | 181 int flags) |
80 : LocatedEvent(MouseEvent(type, l.x(), l.y(), flags), source, target) { | 182 : LocatedEvent(MouseEvent(type, l.x(), l.y(), flags), source, target) { |
81 } | 183 } |
(...skipping 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
113 #endif | 215 #endif |
114 | 216 |
115 //////////////////////////////////////////////////////////////////////////////// | 217 //////////////////////////////////////////////////////////////////////////////// |
116 // MouseWheelEvent, public: | 218 // MouseWheelEvent, public: |
117 | 219 |
118 // This value matches windows WHEEL_DELTA. | 220 // This value matches windows WHEEL_DELTA. |
119 // static | 221 // static |
120 const int MouseWheelEvent::kWheelDelta = 120; | 222 const int MouseWheelEvent::kWheelDelta = 120; |
121 | 223 |
122 } // namespace views | 224 } // namespace views |
OLD | NEW |