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 #ifndef VIEWS_EVENTS_EVENT_H_ | 5 #ifndef VIEWS_EVENTS_EVENT_H_ |
6 #define VIEWS_EVENTS_EVENT_H_ | 6 #define VIEWS_EVENTS_EVENT_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include "base/basictypes.h" | 9 #include "base/basictypes.h" |
10 #include "base/time.h" | 10 #include "base/time.h" |
(...skipping 271 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
282 // | 282 // |
283 //////////////////////////////////////////////////////////////////////////////// | 283 //////////////////////////////////////////////////////////////////////////////// |
284 class KeyEvent : public Event { | 284 class KeyEvent : public Event { |
285 public: | 285 public: |
286 explicit KeyEvent(NativeEvent native_event); | 286 explicit KeyEvent(NativeEvent native_event); |
287 KeyEvent(NativeEvent2 native_event_2, FromNativeEvent2 from_native); | 287 KeyEvent(NativeEvent2 native_event_2, FromNativeEvent2 from_native); |
288 | 288 |
289 // Creates a new KeyEvent synthetically (i.e. not in response to an input | 289 // Creates a new KeyEvent synthetically (i.e. not in response to an input |
290 // event from the host environment). This is typically only used in testing as | 290 // event from the host environment). This is typically only used in testing as |
291 // some metadata obtainable from the underlying native event is not present. | 291 // some metadata obtainable from the underlying native event is not present. |
292 // TODO(beng): see if we can kill this. | 292 // It's also used by input methods to fabricate keyboard events. |
293 KeyEvent(ui::EventType type, | 293 KeyEvent(ui::EventType type, |
294 ui::KeyboardCode key_code, | 294 ui::KeyboardCode key_code, |
295 int event_flags); | 295 int event_flags); |
296 | 296 |
297 ui::KeyboardCode key_code() const { return key_code_; } | 297 ui::KeyboardCode key_code() const { return key_code_; } |
298 | 298 |
| 299 // Gets the character generated by this key event. It only supports Unicode |
| 300 // BMP characters. |
| 301 uint16 GetCharacter() const; |
| 302 |
| 303 // Gets the character generated by this key event ignoring concurrently-held |
| 304 // modifiers (except shift). |
| 305 uint16 GetUnmodifiedCharacter() const; |
| 306 |
299 private: | 307 private: |
| 308 // A helper function to get the character generated by a key event in a |
| 309 // platform independent way. It supports control characters as well. |
| 310 // It assumes a US keyboard layout is used, so it may only be used when there |
| 311 // is no native event or no better way to get the character. |
| 312 // For example, if a virtual keyboard implementation can only generate key |
| 313 // events with key_code and flags information, then there is no way for us to |
| 314 // determine the actual character that should be generate by the key. Because |
| 315 // a key_code only represents a physical key on the keyboard, it has nothing |
| 316 // to do with the actual character printed on that key. In such case, the only |
| 317 // thing we can do is to assume that we are using a US keyboard and get the |
| 318 // character according to US keyboard layout definition. |
| 319 // If a virtual keyboard implementation wants to support other keyboard |
| 320 // layouts, that may generate different text for a certain key than on a US |
| 321 // keyboard, a special native event object should be introduced to carry extra |
| 322 // information to help determine the correct character. |
| 323 // Take XKeyEvent as an example, it contains not only keycode and modifier |
| 324 // flags but also group and other extra XKB information to help determine the |
| 325 // correct character. That's why we can use XLookupString() function to get |
| 326 // the correct text generated by a X key event (See how is GetCharacter() |
| 327 // implemented in event_x.cc). |
| 328 static uint16 GetCharacterFromKeyCode(ui::KeyboardCode key_code, int flags); |
| 329 |
300 ui::KeyboardCode key_code_; | 330 ui::KeyboardCode key_code_; |
301 | 331 |
302 DISALLOW_COPY_AND_ASSIGN(KeyEvent); | 332 DISALLOW_COPY_AND_ASSIGN(KeyEvent); |
303 }; | 333 }; |
304 | 334 |
305 //////////////////////////////////////////////////////////////////////////////// | 335 //////////////////////////////////////////////////////////////////////////////// |
306 // | 336 // |
307 // MouseWheelEvent class | 337 // MouseWheelEvent class |
308 // | 338 // |
309 // A MouseWheelEvent is used to propagate mouse wheel user events. | 339 // A MouseWheelEvent is used to propagate mouse wheel user events. |
(...skipping 52 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
362 | 392 |
363 // Bitmask of supported ui::DragDropTypes::DragOperation by the source. | 393 // Bitmask of supported ui::DragDropTypes::DragOperation by the source. |
364 int source_operations_; | 394 int source_operations_; |
365 | 395 |
366 DISALLOW_COPY_AND_ASSIGN(DropTargetEvent); | 396 DISALLOW_COPY_AND_ASSIGN(DropTargetEvent); |
367 }; | 397 }; |
368 | 398 |
369 } // namespace views | 399 } // namespace views |
370 | 400 |
371 #endif // VIEWS_EVENTS_EVENT_H_ | 401 #endif // VIEWS_EVENTS_EVENT_H_ |
OLD | NEW |