OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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 UI_EVENTS_KEYCODES_DOM4_KEYCODE_CONVERTER_H_ | 5 #ifndef UI_EVENTS_KEYCODES_DOM4_KEYCODE_CONVERTER_H_ |
6 #define UI_EVENTS_KEYCODES_DOM4_KEYCODE_CONVERTER_H_ | 6 #define UI_EVENTS_KEYCODES_DOM4_KEYCODE_CONVERTER_H_ |
7 | 7 |
8 #include <stdint.h> | 8 #include <stdint.h> |
| 9 #include <string> |
| 10 |
9 #include "base/basictypes.h" | 11 #include "base/basictypes.h" |
| 12 #include "ui/events/keycodes/dom/dom_key.h" |
10 | 13 |
11 // For reference, the W3C UI Event spec is located at: | 14 // For reference, the W3C UI Event spec is located at: |
12 // http://www.w3.org/TR/uievents/ | 15 // http://www.w3.org/TR/uievents/ |
13 | 16 |
14 namespace ui { | 17 namespace ui { |
15 | 18 |
16 enum class DomCode; | 19 enum class DomCode; |
17 enum class DomKey; | |
18 | 20 |
19 enum class DomKeyLocation { STANDARD, LEFT, RIGHT, NUMPAD }; | 21 enum class DomKeyLocation { STANDARD, LEFT, RIGHT, NUMPAD }; |
20 | 22 |
21 // This structure is used to define the keycode mapping table. | 23 // This structure is used to define the keycode mapping table. |
22 // It is defined here because the unittests need access to it. | 24 // It is defined here because the unittests need access to it. |
23 typedef struct { | 25 typedef struct { |
24 // USB keycode: | 26 // USB keycode: |
25 // Upper 16-bits: USB Usage Page. | 27 // Upper 16-bits: USB Usage Page. |
26 // Lower 16-bits: USB Usage Id: Assigned ID within this usage page. | 28 // Lower 16-bits: USB Usage Id: Assigned ID within this usage page. |
27 uint32_t usb_keycode; | 29 uint32_t usb_keycode; |
(...skipping 29 matching lines...) Expand all Loading... |
57 // Convert a DomCode into a UI Events |code| string value. | 59 // Convert a DomCode into a UI Events |code| string value. |
58 static const char* DomCodeToCodeString(DomCode dom_code); | 60 static const char* DomCodeToCodeString(DomCode dom_code); |
59 | 61 |
60 // Return the DomKeyLocation of a DomCode. The DomKeyLocation distinguishes | 62 // Return the DomKeyLocation of a DomCode. The DomKeyLocation distinguishes |
61 // keys with the same meaning, and therefore the same DomKey or non-located | 63 // keys with the same meaning, and therefore the same DomKey or non-located |
62 // KeyboardCode (VKEY), and corresponds to the DOM UI Events | 64 // KeyboardCode (VKEY), and corresponds to the DOM UI Events |
63 // |KeyboardEvent.location|. | 65 // |KeyboardEvent.location|. |
64 static DomKeyLocation DomCodeToLocation(DomCode dom_code); | 66 static DomKeyLocation DomCodeToLocation(DomCode dom_code); |
65 | 67 |
66 // Convert a UI Events |key| string value into a DomKey. | 68 // Convert a UI Events |key| string value into a DomKey. |
| 69 // Accepts a character string containing either |
| 70 // - a key name from http://www.w3.org/TR/DOM-Level-3-Events-key/, or |
| 71 // - a single Unicode character (represented in UTF-8). |
| 72 // Returns DomKey::NONE for other inputs, including |nullptr|. |
67 static DomKey KeyStringToDomKey(const char* key); | 73 static DomKey KeyStringToDomKey(const char* key); |
68 | 74 |
69 // Convert a DomKey into a UI Events |key| string value. | 75 // Convert a DomKey into a UI Events |key| string value. |
70 static const char* DomKeyToKeyString(DomKey dom_key); | 76 // For an invalid DomKey, returns an empty string. |
| 77 static std::string DomKeyToKeyString(DomKey dom_key); |
71 | 78 |
72 // Returns true if the DomKey is a modifier. | 79 // Returns true if the DomKey is a modifier. |
73 static bool IsDomKeyForModifier(DomKey dom_key); | 80 static bool IsDomKeyForModifier(DomKey dom_key); |
74 | 81 |
75 // The following methods relate to USB keycodes. | 82 // The following methods relate to USB keycodes. |
76 // Note that USB keycodes are not part of any web standard. | 83 // Note that USB keycodes are not part of any web standard. |
77 // Please don't use USB keycodes in new code. | 84 // Please don't use USB keycodes in new code. |
78 | 85 |
79 // Return the value that identifies an invalid USB keycode. | 86 // Return the value that identifies an invalid USB keycode. |
80 static uint32_t InvalidUsbKeycode(); | 87 static uint32_t InvalidUsbKeycode(); |
(...skipping 18 matching lines...) Expand all Loading... |
99 static const KeycodeMapEntry* GetKeycodeMapForTest(); | 106 static const KeycodeMapEntry* GetKeycodeMapForTest(); |
100 static const char* DomKeyStringForTest(size_t index); | 107 static const char* DomKeyStringForTest(size_t index); |
101 | 108 |
102 private: | 109 private: |
103 DISALLOW_COPY_AND_ASSIGN(KeycodeConverter); | 110 DISALLOW_COPY_AND_ASSIGN(KeycodeConverter); |
104 }; | 111 }; |
105 | 112 |
106 } // namespace ui | 113 } // namespace ui |
107 | 114 |
108 #endif // UI_EVENTS_KEYCODES_DOM4_KEYCODE_CONVERTER_H_ | 115 #endif // UI_EVENTS_KEYCODES_DOM4_KEYCODE_CONVERTER_H_ |
OLD | NEW |