OLD | NEW |
1 // Copyright 2015 The Chromium Authors. All rights reserved. | 1 // Copyright 2015 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 "ui/events/keycodes/keyboard_code_conversion.h" | 5 #include "ui/events/keycodes/keyboard_code_conversion.h" |
6 | 6 |
7 #include "base/basictypes.h" | 7 #include "base/basictypes.h" |
8 #include "base/strings/stringprintf.h" | 8 #include "base/strings/stringprintf.h" |
9 #include "testing/gtest/include/gtest/gtest.h" | 9 #include "testing/gtest/include/gtest/gtest.h" |
10 #include "ui/events/event_constants.h" | 10 #include "ui/events/event_constants.h" |
11 #include "ui/events/keycodes/dom/dom_code.h" | 11 #include "ui/events/keycodes/dom/dom_code.h" |
12 #include "ui/events/keycodes/dom/dom_key.h" | 12 #include "ui/events/keycodes/dom/dom_key.h" |
13 #include "ui/events/keycodes/dom/keycode_converter.h" | 13 #include "ui/events/keycodes/dom/keycode_converter.h" |
14 #include "ui/events/keycodes/dom_us_layout_data.h" | 14 #include "ui/events/keycodes/dom_us_layout_data.h" |
15 #include "ui/events/keycodes/keyboard_codes.h" | 15 #include "ui/events/keycodes/keyboard_codes.h" |
16 | 16 |
17 namespace { | 17 namespace { |
18 | 18 |
19 struct Meaning { | 19 struct Meaning { |
20 bool defined; | 20 bool defined; |
21 ui::DomKey dom_key; | 21 ui::DomKey::Base dom_key; |
22 base::char16 character; | 22 ui::KeyboardCode key_code; |
23 ui::KeyboardCode legacy_key_code; | |
24 }; | 23 }; |
25 | 24 |
26 const Meaning kUndefined = {false, ui::DomKey::NONE, 0, ui::VKEY_UNKNOWN}; | 25 const Meaning kUndefined = {false, ui::DomKey::NONE, ui::VKEY_UNKNOWN}; |
27 | 26 |
28 void CheckDomCodeToMeaning(const char* label, | 27 void CheckDomCodeToMeaning(const char* label, |
29 bool f(ui::DomCode dom_code, | 28 bool f(ui::DomCode dom_code, |
30 int flags, | 29 int flags, |
31 ui::DomKey* out_dom_key, | 30 ui::DomKey* out_dom_key, |
32 base::char16* out_character, | |
33 ui::KeyboardCode* out_key_code), | 31 ui::KeyboardCode* out_key_code), |
34 ui::DomCode dom_code, | 32 ui::DomCode dom_code, |
35 int event_flags, | 33 int event_flags, |
36 const Meaning& result) { | 34 const Meaning& result) { |
37 ui::DomKey result_dom_key = ui::DomKey::NONE; | 35 ui::DomKey result_dom_key = ui::DomKey::NONE; |
38 base::char16 result_character = 0; | 36 ui::KeyboardCode result_key_code = ui::VKEY_UNKNOWN; |
39 ui::KeyboardCode result_legacy_key_code = ui::VKEY_UNKNOWN; | 37 bool success = f(dom_code, event_flags, &result_dom_key, &result_key_code); |
40 bool success = f(dom_code, event_flags, &result_dom_key, &result_character, | |
41 &result_legacy_key_code); | |
42 SCOPED_TRACE( | 38 SCOPED_TRACE( |
43 base::StringPrintf("%s %s %06X:%04X", label, | 39 base::StringPrintf("%s %s %06X:%04X", label, |
44 ui::KeycodeConverter::DomCodeToCodeString(dom_code), | 40 ui::KeycodeConverter::DomCodeToCodeString(dom_code), |
45 static_cast<int>(dom_code), event_flags)); | 41 static_cast<int>(dom_code), event_flags)); |
46 EXPECT_EQ(result.defined, success); | 42 EXPECT_EQ(result.defined, success); |
47 if (success) { | 43 if (success) { |
48 EXPECT_EQ(result.dom_key, result_dom_key) | 44 EXPECT_EQ(result.dom_key, result_dom_key) |
49 << "Expected '" | 45 << "Expected '" |
50 << ui::KeycodeConverter::DomKeyToKeyString(result.dom_key) | 46 << ui::KeycodeConverter::DomKeyToKeyString(result.dom_key) |
51 << "' Actual '" | 47 << "' Actual '" |
52 << ui::KeycodeConverter::DomKeyToKeyString(result_dom_key) << "'"; | 48 << ui::KeycodeConverter::DomKeyToKeyString(result_dom_key) << "'"; |
53 EXPECT_EQ(result.character, result_character); | 49 EXPECT_EQ(result.key_code, result_key_code); |
54 EXPECT_EQ(result.legacy_key_code, result_legacy_key_code); | |
55 } else { | 50 } else { |
56 // Should not have touched output parameters. | 51 // Should not have touched output parameters. |
57 EXPECT_EQ(ui::DomKey::NONE, result_dom_key); | 52 EXPECT_EQ(ui::DomKey::NONE, result_dom_key); |
58 EXPECT_EQ(0, result_character); | 53 EXPECT_EQ(ui::VKEY_UNKNOWN, result_key_code); |
59 EXPECT_EQ(ui::VKEY_UNKNOWN, result_legacy_key_code); | |
60 } | 54 } |
61 } | 55 } |
62 | 56 |
63 TEST(KeyboardCodeConversion, ControlCharacters) { | 57 TEST(KeyboardCodeConversion, ControlCharacters) { |
64 // The codes in this table are handled by |DomCodeToControlCharacter()|. | 58 // The codes in this table are handled by |DomCodeToControlCharacter()|. |
65 static const struct { | 59 static const struct { |
66 ui::DomCode dom_code; | 60 ui::DomCode dom_code; |
67 Meaning control; | 61 Meaning control; |
68 Meaning control_shift; | 62 Meaning control_shift; |
69 } kControlCharacters[] = { | 63 } kControlCharacters[] = { |
70 {ui::DomCode::KEY_A, | 64 {ui::DomCode::KEY_A, |
71 {true, ui::DomKey::CHARACTER, 0x01, ui::VKEY_A}, | 65 {true, ui::DomKey::Constant<0x01>::Character, ui::VKEY_A}, |
72 {true, ui::DomKey::CHARACTER, 0x01, ui::VKEY_A}}, | 66 {true, ui::DomKey::Constant<0x01>::Character, ui::VKEY_A}}, |
73 {ui::DomCode::KEY_B, | 67 {ui::DomCode::KEY_B, |
74 {true, ui::DomKey::CHARACTER, 0x02, ui::VKEY_B}, | 68 {true, ui::DomKey::Constant<0x02>::Character, ui::VKEY_B}, |
75 {true, ui::DomKey::CHARACTER, 0x02, ui::VKEY_B}}, | 69 {true, ui::DomKey::Constant<0x02>::Character, ui::VKEY_B}}, |
76 {ui::DomCode::KEY_C, | 70 {ui::DomCode::KEY_C, |
77 {true, ui::DomKey::CHARACTER, 0x03, ui::VKEY_C}, | 71 {true, ui::DomKey::Constant<0x03>::Character, ui::VKEY_C}, |
78 {true, ui::DomKey::CHARACTER, 0x03, ui::VKEY_C}}, | 72 {true, ui::DomKey::Constant<0x03>::Character, ui::VKEY_C}}, |
79 {ui::DomCode::KEY_D, | 73 {ui::DomCode::KEY_D, |
80 {true, ui::DomKey::CHARACTER, 0x04, ui::VKEY_D}, | 74 {true, ui::DomKey::Constant<0x04>::Character, ui::VKEY_D}, |
81 {true, ui::DomKey::CHARACTER, 0x04, ui::VKEY_D}}, | 75 {true, ui::DomKey::Constant<0x04>::Character, ui::VKEY_D}}, |
82 {ui::DomCode::KEY_E, | 76 {ui::DomCode::KEY_E, |
83 {true, ui::DomKey::CHARACTER, 0x05, ui::VKEY_E}, | 77 {true, ui::DomKey::Constant<0x05>::Character, ui::VKEY_E}, |
84 {true, ui::DomKey::CHARACTER, 0x05, ui::VKEY_E}}, | 78 {true, ui::DomKey::Constant<0x05>::Character, ui::VKEY_E}}, |
85 {ui::DomCode::KEY_F, | 79 {ui::DomCode::KEY_F, |
86 {true, ui::DomKey::CHARACTER, 0x06, ui::VKEY_F}, | 80 {true, ui::DomKey::Constant<0x06>::Character, ui::VKEY_F}, |
87 {true, ui::DomKey::CHARACTER, 0x06, ui::VKEY_F}}, | 81 {true, ui::DomKey::Constant<0x06>::Character, ui::VKEY_F}}, |
88 {ui::DomCode::KEY_G, | 82 {ui::DomCode::KEY_G, |
89 {true, ui::DomKey::CHARACTER, 0x07, ui::VKEY_G}, | 83 {true, ui::DomKey::Constant<0x07>::Character, ui::VKEY_G}, |
90 {true, ui::DomKey::CHARACTER, 0x07, ui::VKEY_G}}, | 84 {true, ui::DomKey::Constant<0x07>::Character, ui::VKEY_G}}, |
91 {ui::DomCode::KEY_H, | 85 {ui::DomCode::KEY_H, |
92 {true, ui::DomKey::BACKSPACE, 0x08, ui::VKEY_BACK}, | 86 {true, ui::DomKey::BACKSPACE, ui::VKEY_BACK}, |
93 {true, ui::DomKey::BACKSPACE, 0x08, ui::VKEY_BACK}}, | 87 {true, ui::DomKey::BACKSPACE, ui::VKEY_BACK}}, |
94 {ui::DomCode::KEY_I, | 88 {ui::DomCode::KEY_I, |
95 {true, ui::DomKey::TAB, 0x09, ui::VKEY_TAB}, | 89 {true, ui::DomKey::TAB, ui::VKEY_TAB}, |
96 {true, ui::DomKey::TAB, 0x09, ui::VKEY_TAB}}, | 90 {true, ui::DomKey::TAB, ui::VKEY_TAB}}, |
97 {ui::DomCode::KEY_J, | 91 {ui::DomCode::KEY_J, |
98 {true, ui::DomKey::CHARACTER, 0x0A, ui::VKEY_J}, | 92 {true, ui::DomKey::Constant<0x0A>::Character, ui::VKEY_J}, |
99 {true, ui::DomKey::CHARACTER, 0x0A, ui::VKEY_J}}, | 93 {true, ui::DomKey::Constant<0x0A>::Character, ui::VKEY_J}}, |
100 {ui::DomCode::KEY_K, | 94 {ui::DomCode::KEY_K, |
101 {true, ui::DomKey::CHARACTER, 0x0B, ui::VKEY_K}, | 95 {true, ui::DomKey::Constant<0x0B>::Character, ui::VKEY_K}, |
102 {true, ui::DomKey::CHARACTER, 0x0B, ui::VKEY_K}}, | 96 {true, ui::DomKey::Constant<0x0B>::Character, ui::VKEY_K}}, |
103 {ui::DomCode::KEY_L, | 97 {ui::DomCode::KEY_L, |
104 {true, ui::DomKey::CHARACTER, 0x0C, ui::VKEY_L}, | 98 {true, ui::DomKey::Constant<0x0C>::Character, ui::VKEY_L}, |
105 {true, ui::DomKey::CHARACTER, 0x0C, ui::VKEY_L}}, | 99 {true, ui::DomKey::Constant<0x0C>::Character, ui::VKEY_L}}, |
106 {ui::DomCode::KEY_M, | 100 {ui::DomCode::KEY_M, |
107 {true, ui::DomKey::ENTER, 0x0D, ui::VKEY_RETURN}, | 101 {true, ui::DomKey::ENTER, ui::VKEY_RETURN}, |
108 {true, ui::DomKey::ENTER, 0x0D, ui::VKEY_RETURN}}, | 102 {true, ui::DomKey::ENTER, ui::VKEY_RETURN}}, |
109 {ui::DomCode::KEY_N, | 103 {ui::DomCode::KEY_N, |
110 {true, ui::DomKey::CHARACTER, 0x0E, ui::VKEY_N}, | 104 {true, ui::DomKey::Constant<0x0E>::Character, ui::VKEY_N}, |
111 {true, ui::DomKey::CHARACTER, 0x0E, ui::VKEY_N}}, | 105 {true, ui::DomKey::Constant<0x0E>::Character, ui::VKEY_N}}, |
112 {ui::DomCode::KEY_O, | 106 {ui::DomCode::KEY_O, |
113 {true, ui::DomKey::CHARACTER, 0x0F, ui::VKEY_O}, | 107 {true, ui::DomKey::Constant<0x0F>::Character, ui::VKEY_O}, |
114 {true, ui::DomKey::CHARACTER, 0x0F, ui::VKEY_O}}, | 108 {true, ui::DomKey::Constant<0x0F>::Character, ui::VKEY_O}}, |
115 {ui::DomCode::KEY_P, | 109 {ui::DomCode::KEY_P, |
116 {true, ui::DomKey::CHARACTER, 0x10, ui::VKEY_P}, | 110 {true, ui::DomKey::Constant<0x10>::Character, ui::VKEY_P}, |
117 {true, ui::DomKey::CHARACTER, 0x10, ui::VKEY_P}}, | 111 {true, ui::DomKey::Constant<0x10>::Character, ui::VKEY_P}}, |
118 {ui::DomCode::KEY_Q, | 112 {ui::DomCode::KEY_Q, |
119 {true, ui::DomKey::CHARACTER, 0x11, ui::VKEY_Q}, | 113 {true, ui::DomKey::Constant<0x11>::Character, ui::VKEY_Q}, |
120 {true, ui::DomKey::CHARACTER, 0x11, ui::VKEY_Q}}, | 114 {true, ui::DomKey::Constant<0x11>::Character, ui::VKEY_Q}}, |
121 {ui::DomCode::KEY_R, | 115 {ui::DomCode::KEY_R, |
122 {true, ui::DomKey::CHARACTER, 0x12, ui::VKEY_R}, | 116 {true, ui::DomKey::Constant<0x12>::Character, ui::VKEY_R}, |
123 {true, ui::DomKey::CHARACTER, 0x12, ui::VKEY_R}}, | 117 {true, ui::DomKey::Constant<0x12>::Character, ui::VKEY_R}}, |
124 {ui::DomCode::KEY_S, | 118 {ui::DomCode::KEY_S, |
125 {true, ui::DomKey::CHARACTER, 0x13, ui::VKEY_S}, | 119 {true, ui::DomKey::Constant<0x13>::Character, ui::VKEY_S}, |
126 {true, ui::DomKey::CHARACTER, 0x13, ui::VKEY_S}}, | 120 {true, ui::DomKey::Constant<0x13>::Character, ui::VKEY_S}}, |
127 {ui::DomCode::KEY_T, | 121 {ui::DomCode::KEY_T, |
128 {true, ui::DomKey::CHARACTER, 0x14, ui::VKEY_T}, | 122 {true, ui::DomKey::Constant<0x14>::Character, ui::VKEY_T}, |
129 {true, ui::DomKey::CHARACTER, 0x14, ui::VKEY_T}}, | 123 {true, ui::DomKey::Constant<0x14>::Character, ui::VKEY_T}}, |
130 {ui::DomCode::KEY_U, | 124 {ui::DomCode::KEY_U, |
131 {true, ui::DomKey::CHARACTER, 0x15, ui::VKEY_U}, | 125 {true, ui::DomKey::Constant<0x15>::Character, ui::VKEY_U}, |
132 {true, ui::DomKey::CHARACTER, 0x15, ui::VKEY_U}}, | 126 {true, ui::DomKey::Constant<0x15>::Character, ui::VKEY_U}}, |
133 {ui::DomCode::KEY_V, | 127 {ui::DomCode::KEY_V, |
134 {true, ui::DomKey::CHARACTER, 0x16, ui::VKEY_V}, | 128 {true, ui::DomKey::Constant<0x16>::Character, ui::VKEY_V}, |
135 {true, ui::DomKey::CHARACTER, 0x16, ui::VKEY_V}}, | 129 {true, ui::DomKey::Constant<0x16>::Character, ui::VKEY_V}}, |
136 {ui::DomCode::KEY_W, | 130 {ui::DomCode::KEY_W, |
137 {true, ui::DomKey::CHARACTER, 0x17, ui::VKEY_W}, | 131 {true, ui::DomKey::Constant<0x17>::Character, ui::VKEY_W}, |
138 {true, ui::DomKey::CHARACTER, 0x17, ui::VKEY_W}}, | 132 {true, ui::DomKey::Constant<0x17>::Character, ui::VKEY_W}}, |
139 {ui::DomCode::KEY_X, | 133 {ui::DomCode::KEY_X, |
140 {true, ui::DomKey::CHARACTER, 0x18, ui::VKEY_X}, | 134 {true, ui::DomKey::Constant<0x18>::Character, ui::VKEY_X}, |
141 {true, ui::DomKey::CHARACTER, 0x18, ui::VKEY_X}}, | 135 {true, ui::DomKey::Constant<0x18>::Character, ui::VKEY_X}}, |
142 {ui::DomCode::KEY_Y, | 136 {ui::DomCode::KEY_Y, |
143 {true, ui::DomKey::CHARACTER, 0x19, ui::VKEY_Y}, | 137 {true, ui::DomKey::Constant<0x19>::Character, ui::VKEY_Y}, |
144 {true, ui::DomKey::CHARACTER, 0x19, ui::VKEY_Y}}, | 138 {true, ui::DomKey::Constant<0x19>::Character, ui::VKEY_Y}}, |
145 {ui::DomCode::KEY_Z, | 139 {ui::DomCode::KEY_Z, |
146 {true, ui::DomKey::CHARACTER, 0x1A, ui::VKEY_Z}, | 140 {true, ui::DomKey::Constant<0x1A>::Character, ui::VKEY_Z}, |
147 {true, ui::DomKey::CHARACTER, 0x1A, ui::VKEY_Z}}, | 141 {true, ui::DomKey::Constant<0x1A>::Character, ui::VKEY_Z}}, |
148 }; | 142 }; |
149 for (const auto& it : kControlCharacters) { | 143 for (const auto& it : kControlCharacters) { |
150 // Verify |DomCodeToControlCharacter()|. | 144 // Verify |DomCodeToControlCharacter()|. |
151 CheckDomCodeToMeaning("c_cc_n", ui::DomCodeToControlCharacter, it.dom_code, | 145 CheckDomCodeToMeaning("c_cc_n", ui::DomCodeToControlCharacter, it.dom_code, |
152 ui::EF_NONE, kUndefined); | 146 ui::EF_NONE, kUndefined); |
153 CheckDomCodeToMeaning("c_cc_c", ui::DomCodeToControlCharacter, it.dom_code, | 147 CheckDomCodeToMeaning("c_cc_c", ui::DomCodeToControlCharacter, it.dom_code, |
154 ui::EF_CONTROL_DOWN, it.control); | 148 ui::EF_CONTROL_DOWN, it.control); |
155 CheckDomCodeToMeaning("c_cc_cs", ui::DomCodeToControlCharacter, it.dom_code, | 149 CheckDomCodeToMeaning("c_cc_cs", ui::DomCodeToControlCharacter, it.dom_code, |
156 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | 150 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, |
157 it.control_shift); | 151 it.control_shift); |
158 // Verify |DomCodeToUsLayoutMeaning()|. | 152 // Verify |DomCodeToUsLayoutDomKey()|. |
159 CheckDomCodeToMeaning("c_us_c", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 153 CheckDomCodeToMeaning("c_us_c", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
160 ui::EF_CONTROL_DOWN, it.control); | 154 ui::EF_CONTROL_DOWN, it.control); |
161 CheckDomCodeToMeaning("c_us_cs", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 155 CheckDomCodeToMeaning("c_us_cs", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
162 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | 156 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, |
163 it.control_shift); | 157 it.control_shift); |
164 } | 158 } |
165 | 159 |
166 // The codes in this table are sensitive to the Shift state, so they are | 160 // The codes in this table are sensitive to the Shift state, so they are |
167 // handled differently by |DomCodeToControlCharacter()|, which returns false | 161 // handled differently by |DomCodeToControlCharacter()|, which returns false |
168 // for unknown combinations, vs |DomCodeToUsLayoutMeaning()|, which returns | 162 // for unknown combinations, vs |DomCodeToUsLayoutDomKey()|, which returns |
169 // true with DomKey::UNIDENTIFIED. | 163 // true with DomKey::UNIDENTIFIED. |
170 static const struct { | 164 static const struct { |
171 ui::DomCode dom_code; | 165 ui::DomCode dom_code; |
172 Meaning cc_control; | 166 Meaning cc_control; |
173 Meaning cc_control_shift; | 167 Meaning cc_control_shift; |
174 Meaning us_control; | 168 Meaning us_control; |
175 Meaning us_control_shift; | 169 Meaning us_control_shift; |
176 } kShiftControlCharacters[] = { | 170 } kShiftControlCharacters[] = { |
177 {ui::DomCode::DIGIT2, | 171 {ui::DomCode::DIGIT2, |
178 {false, ui::DomKey::NONE, 0, ui::VKEY_UNKNOWN}, | 172 {false, ui::DomKey::NONE, ui::VKEY_UNKNOWN}, |
179 {true, ui::DomKey::CHARACTER, 0, ui::VKEY_2}, | 173 {true, ui::DomKey::Constant<0>::Character, ui::VKEY_2}, |
180 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_2}, | 174 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_2}, |
181 {true, ui::DomKey::CHARACTER, 0, ui::VKEY_2}}, | 175 {true, ui::DomKey::Constant<0>::Character, ui::VKEY_2}}, |
182 {ui::DomCode::DIGIT6, | 176 {ui::DomCode::DIGIT6, |
183 {false, ui::DomKey::NONE, 0, ui::VKEY_UNKNOWN}, | 177 {false, ui::DomKey::NONE, ui::VKEY_UNKNOWN}, |
184 {true, ui::DomKey::CHARACTER, 0x1E, ui::VKEY_6}, | 178 {true, ui::DomKey::Constant<0x1E>::Character, ui::VKEY_6}, |
185 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_6}, | 179 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_6}, |
186 {true, ui::DomKey::CHARACTER, 0x1E, ui::VKEY_6}}, | 180 {true, ui::DomKey::Constant<0x1E>::Character, ui::VKEY_6}}, |
187 {ui::DomCode::MINUS, | 181 {ui::DomCode::MINUS, |
188 {false, ui::DomKey::NONE, 0, ui::VKEY_UNKNOWN}, | 182 {false, ui::DomKey::NONE, ui::VKEY_UNKNOWN}, |
189 {true, ui::DomKey::CHARACTER, 0x1F, ui::VKEY_OEM_MINUS}, | 183 {true, ui::DomKey::Constant<0x1F>::Character, ui::VKEY_OEM_MINUS}, |
190 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_OEM_MINUS}, | 184 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_OEM_MINUS}, |
191 {true, ui::DomKey::CHARACTER, 0x1F, ui::VKEY_OEM_MINUS}}, | 185 {true, ui::DomKey::Constant<0x1F>::Character, ui::VKEY_OEM_MINUS}}, |
192 {ui::DomCode::ENTER, | 186 {ui::DomCode::ENTER, |
193 {true, ui::DomKey::CHARACTER, 0x0A, ui::VKEY_RETURN}, | 187 {true, ui::DomKey::Constant<0x0A>::Character, ui::VKEY_RETURN}, |
194 {false, ui::DomKey::NONE, 0, ui::VKEY_UNKNOWN}, | 188 {false, ui::DomKey::NONE, ui::VKEY_UNKNOWN}, |
195 {true, ui::DomKey::CHARACTER, 0x0A, ui::VKEY_RETURN}, | 189 {true, ui::DomKey::Constant<0x0A>::Character, ui::VKEY_RETURN}, |
196 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_RETURN}}, | 190 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_RETURN}}, |
197 {ui::DomCode::BRACKET_LEFT, | 191 {ui::DomCode::BRACKET_LEFT, |
198 {true, ui::DomKey::ESCAPE, 0x1B, ui::VKEY_OEM_4}, | 192 {true, ui::DomKey::ESCAPE, ui::VKEY_OEM_4}, |
199 {false, ui::DomKey::NONE, 0, ui::VKEY_UNKNOWN}, | 193 {false, ui::DomKey::NONE, ui::VKEY_UNKNOWN}, |
200 {true, ui::DomKey::ESCAPE, 0x1B, ui::VKEY_OEM_4}, | 194 {true, ui::DomKey::ESCAPE, ui::VKEY_OEM_4}, |
201 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_OEM_4}}, | 195 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_OEM_4}}, |
202 {ui::DomCode::BACKSLASH, | 196 {ui::DomCode::BACKSLASH, |
203 {true, ui::DomKey::CHARACTER, 0x1C, ui::VKEY_OEM_5}, | 197 {true, ui::DomKey::Constant<0x1C>::Character, ui::VKEY_OEM_5}, |
204 {false, ui::DomKey::NONE, 0, ui::VKEY_UNKNOWN}, | 198 {false, ui::DomKey::NONE, ui::VKEY_UNKNOWN}, |
205 {true, ui::DomKey::CHARACTER, 0x1C, ui::VKEY_OEM_5}, | 199 {true, ui::DomKey::Constant<0x1C>::Character, ui::VKEY_OEM_5}, |
206 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_OEM_5}}, | 200 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_OEM_5}}, |
207 {ui::DomCode::BRACKET_RIGHT, | 201 {ui::DomCode::BRACKET_RIGHT, |
208 {true, ui::DomKey::CHARACTER, 0x1D, ui::VKEY_OEM_6}, | 202 {true, ui::DomKey::Constant<0x1D>::Character, ui::VKEY_OEM_6}, |
209 {false, ui::DomKey::NONE, 0, ui::VKEY_UNKNOWN}, | 203 {false, ui::DomKey::NONE, ui::VKEY_UNKNOWN}, |
210 {true, ui::DomKey::CHARACTER, 0x1D, ui::VKEY_OEM_6}, | 204 {true, ui::DomKey::Constant<0x1D>::Character, ui::VKEY_OEM_6}, |
211 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_OEM_6}}, | 205 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_OEM_6}}, |
212 }; | 206 }; |
213 for (const auto& it : kShiftControlCharacters) { | 207 for (const auto& it : kShiftControlCharacters) { |
214 // Verify |DomCodeToControlCharacter()|. | 208 // Verify |DomCodeToControlCharacter()|. |
215 CheckDomCodeToMeaning("s_cc_n", ui::DomCodeToControlCharacter, it.dom_code, | 209 CheckDomCodeToMeaning("s_cc_n", ui::DomCodeToControlCharacter, it.dom_code, |
216 ui::EF_NONE, kUndefined); | 210 ui::EF_NONE, kUndefined); |
217 CheckDomCodeToMeaning("s_cc_c", ui::DomCodeToControlCharacter, it.dom_code, | 211 CheckDomCodeToMeaning("s_cc_c", ui::DomCodeToControlCharacter, it.dom_code, |
218 ui::EF_CONTROL_DOWN, it.cc_control); | 212 ui::EF_CONTROL_DOWN, it.cc_control); |
219 CheckDomCodeToMeaning("s_cc_cs", ui::DomCodeToControlCharacter, it.dom_code, | 213 CheckDomCodeToMeaning("s_cc_cs", ui::DomCodeToControlCharacter, it.dom_code, |
220 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | 214 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, |
221 it.cc_control_shift); | 215 it.cc_control_shift); |
222 // Verify |DomCodeToUsLayoutMeaning()|. | 216 // Verify |DomCodeToUsLayoutDomKey()|. |
223 CheckDomCodeToMeaning("s_us_c", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 217 CheckDomCodeToMeaning("s_us_c", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
224 ui::EF_CONTROL_DOWN, it.us_control); | 218 ui::EF_CONTROL_DOWN, it.us_control); |
225 CheckDomCodeToMeaning("s_us_cs", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 219 CheckDomCodeToMeaning("s_us_cs", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
226 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, | 220 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, |
227 it.us_control_shift); | 221 it.us_control_shift); |
228 } | 222 } |
229 | 223 |
230 // These codes are not handled by |DomCodeToControlCharacter()| directly. | 224 // These codes are not handled by |DomCodeToControlCharacter()| directly. |
231 static const struct { | 225 static const struct { |
232 ui::DomCode dom_code; | 226 ui::DomCode dom_code; |
233 Meaning normal; | 227 Meaning normal; |
234 Meaning control; | 228 Meaning control; |
235 } kNonControlCharacters[] = { | 229 } kNonControlCharacters[] = { |
236 // Modifiers are handled by |DomCodeToUsLayoutMeaning()| without regard | 230 // Modifiers are handled by |DomCodeToUsLayoutDomKey()| without regard |
237 // to whether Control is down. | 231 // to whether Control is down. |
238 {ui::DomCode::CONTROL_LEFT, | 232 {ui::DomCode::CONTROL_LEFT, |
239 {true, ui::DomKey::CONTROL, 0, ui::VKEY_CONTROL}, | 233 {true, ui::DomKey::CONTROL, ui::VKEY_CONTROL}, |
240 {true, ui::DomKey::CONTROL, 0, ui::VKEY_CONTROL}}, | 234 {true, ui::DomKey::CONTROL, ui::VKEY_CONTROL}}, |
241 {ui::DomCode::CONTROL_RIGHT, | 235 {ui::DomCode::CONTROL_RIGHT, |
242 {true, ui::DomKey::CONTROL, 0, ui::VKEY_CONTROL}, | 236 {true, ui::DomKey::CONTROL, ui::VKEY_CONTROL}, |
243 {true, ui::DomKey::CONTROL, 0, ui::VKEY_CONTROL}}, | 237 {true, ui::DomKey::CONTROL, ui::VKEY_CONTROL}}, |
244 {ui::DomCode::SHIFT_LEFT, | 238 {ui::DomCode::SHIFT_LEFT, |
245 {true, ui::DomKey::SHIFT, 0, ui::VKEY_SHIFT}, | 239 {true, ui::DomKey::SHIFT, ui::VKEY_SHIFT}, |
246 {true, ui::DomKey::SHIFT, 0, ui::VKEY_SHIFT}}, | 240 {true, ui::DomKey::SHIFT, ui::VKEY_SHIFT}}, |
247 {ui::DomCode::SHIFT_RIGHT, | 241 {ui::DomCode::SHIFT_RIGHT, |
248 {true, ui::DomKey::SHIFT, 0, ui::VKEY_SHIFT}, | 242 {true, ui::DomKey::SHIFT, ui::VKEY_SHIFT}, |
249 {true, ui::DomKey::SHIFT, 0, ui::VKEY_SHIFT}}, | 243 {true, ui::DomKey::SHIFT, ui::VKEY_SHIFT}}, |
250 {ui::DomCode::ALT_LEFT, | 244 {ui::DomCode::ALT_LEFT, |
251 {true, ui::DomKey::ALT, 0, ui::VKEY_MENU}, | 245 {true, ui::DomKey::ALT, ui::VKEY_MENU}, |
252 {true, ui::DomKey::ALT, 0, ui::VKEY_MENU}}, | 246 {true, ui::DomKey::ALT, ui::VKEY_MENU}}, |
253 {ui::DomCode::ALT_RIGHT, | 247 {ui::DomCode::ALT_RIGHT, |
254 {true, ui::DomKey::ALT, 0, ui::VKEY_MENU}, | 248 {true, ui::DomKey::ALT, ui::VKEY_MENU}, |
255 {true, ui::DomKey::ALT, 0, ui::VKEY_MENU}}, | 249 {true, ui::DomKey::ALT, ui::VKEY_MENU}}, |
256 {ui::DomCode::OS_LEFT, | 250 {ui::DomCode::OS_LEFT, |
257 {true, ui::DomKey::OS, 0, ui::VKEY_LWIN}, | 251 {true, ui::DomKey::OS, ui::VKEY_LWIN}, |
258 {true, ui::DomKey::OS, 0, ui::VKEY_LWIN}}, | 252 {true, ui::DomKey::OS, ui::VKEY_LWIN}}, |
259 {ui::DomCode::OS_RIGHT, | 253 {ui::DomCode::OS_RIGHT, |
260 {true, ui::DomKey::OS, 0, ui::VKEY_LWIN}, | 254 {true, ui::DomKey::OS, ui::VKEY_LWIN}, |
261 {true, ui::DomKey::OS, 0, ui::VKEY_LWIN}}, | 255 {true, ui::DomKey::OS, ui::VKEY_LWIN}}, |
262 // Non-modifiers (a representative sample here) succeed with | 256 // Non-modifiers (a representative sample here) succeed with |
263 // DomKey::UNIDENTIFIED when Control is down. | 257 // DomKey::UNIDENTIFIED when Control is down. |
264 {ui::DomCode::DIGIT1, | 258 {ui::DomCode::DIGIT1, |
265 {true, ui::DomKey::CHARACTER, '1', ui::VKEY_1}, | 259 {true, ui::DomKey::Constant<'1'>::Character, ui::VKEY_1}, |
266 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_1}}, | 260 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_1}}, |
267 {ui::DomCode::EQUAL, | 261 {ui::DomCode::EQUAL, |
268 {true, ui::DomKey::CHARACTER, '=', ui::VKEY_OEM_PLUS}, | 262 {true, ui::DomKey::Constant<'='>::Character, ui::VKEY_OEM_PLUS}, |
269 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_OEM_PLUS}}, | 263 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_OEM_PLUS}}, |
270 {ui::DomCode::TAB, | 264 {ui::DomCode::TAB, |
271 {true, ui::DomKey::TAB, 9, ui::VKEY_TAB}, | 265 {true, ui::DomKey::TAB, ui::VKEY_TAB}, |
272 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_TAB}}, | 266 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_TAB}}, |
273 {ui::DomCode::F1, | 267 {ui::DomCode::F1, |
274 {true, ui::DomKey::F1, 0, ui::VKEY_F1}, | 268 {true, ui::DomKey::F1, ui::VKEY_F1}, |
275 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_F1}}, | 269 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_F1}}, |
276 {ui::DomCode::VOLUME_UP, | 270 {ui::DomCode::VOLUME_UP, |
277 {true, ui::DomKey::VOLUME_UP, 0, ui::VKEY_VOLUME_UP}, | 271 {true, ui::DomKey::VOLUME_UP, ui::VKEY_VOLUME_UP}, |
278 {true, ui::DomKey::UNIDENTIFIED, 0, ui::VKEY_VOLUME_UP}}, | 272 {true, ui::DomKey::UNIDENTIFIED, ui::VKEY_VOLUME_UP}}, |
279 }; | 273 }; |
280 for (const auto& it : kNonControlCharacters) { | 274 for (const auto& it : kNonControlCharacters) { |
281 // Verify |DomCodeToControlCharacter()|. | 275 // Verify |DomCodeToControlCharacter()|. |
282 CheckDomCodeToMeaning("n_cc_n", ui::DomCodeToControlCharacter, it.dom_code, | 276 CheckDomCodeToMeaning("n_cc_n", ui::DomCodeToControlCharacter, it.dom_code, |
283 ui::EF_NONE, kUndefined); | 277 ui::EF_NONE, kUndefined); |
284 CheckDomCodeToMeaning("n_cc_c", ui::DomCodeToControlCharacter, it.dom_code, | 278 CheckDomCodeToMeaning("n_cc_c", ui::DomCodeToControlCharacter, it.dom_code, |
285 ui::EF_CONTROL_DOWN, kUndefined); | 279 ui::EF_CONTROL_DOWN, kUndefined); |
286 CheckDomCodeToMeaning("n_cc_cs", ui::DomCodeToControlCharacter, it.dom_code, | 280 CheckDomCodeToMeaning("n_cc_cs", ui::DomCodeToControlCharacter, it.dom_code, |
287 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, kUndefined); | 281 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, kUndefined); |
288 // Verify |DomCodeToUsLayoutMeaning()|. | 282 // Verify |DomCodeToUsLayoutDomKey()|. |
289 CheckDomCodeToMeaning("n_us_n", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 283 CheckDomCodeToMeaning("n_us_n", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
290 ui::EF_NONE, it.normal); | 284 ui::EF_NONE, it.normal); |
291 CheckDomCodeToMeaning("n_us_c", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 285 CheckDomCodeToMeaning("n_us_c", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
292 ui::EF_CONTROL_DOWN, it.control); | 286 ui::EF_CONTROL_DOWN, it.control); |
293 CheckDomCodeToMeaning("n_us_cs", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 287 CheckDomCodeToMeaning("n_us_cs", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
294 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, it.control); | 288 ui::EF_CONTROL_DOWN | ui::EF_SHIFT_DOWN, it.control); |
295 } | 289 } |
296 } | 290 } |
297 | 291 |
298 TEST(KeyboardCodeConversion, UsLayout) { | 292 TEST(KeyboardCodeConversion, UsLayout) { |
299 static const struct { | 293 static const struct { |
300 ui::DomCode dom_code; | 294 ui::DomCode dom_code; |
301 Meaning normal; | 295 Meaning normal; |
302 Meaning shift; | 296 Meaning shift; |
303 } kPrintableUsLayout[] = { | 297 } kPrintableUsLayout[] = { |
304 {ui::DomCode::KEY_A, | 298 {ui::DomCode::KEY_A, |
305 {true, ui::DomKey::CHARACTER, 'a', ui::VKEY_A}, | 299 {true, ui::DomKey::Constant<'a'>::Character, ui::VKEY_A}, |
306 {true, ui::DomKey::CHARACTER, 'A', ui::VKEY_A}}, | 300 {true, ui::DomKey::Constant<'A'>::Character, ui::VKEY_A}}, |
307 {ui::DomCode::KEY_B, | 301 {ui::DomCode::KEY_B, |
308 {true, ui::DomKey::CHARACTER, 'b', ui::VKEY_B}, | 302 {true, ui::DomKey::Constant<'b'>::Character, ui::VKEY_B}, |
309 {true, ui::DomKey::CHARACTER, 'B', ui::VKEY_B}}, | 303 {true, ui::DomKey::Constant<'B'>::Character, ui::VKEY_B}}, |
310 {ui::DomCode::KEY_C, | 304 {ui::DomCode::KEY_C, |
311 {true, ui::DomKey::CHARACTER, 'c', ui::VKEY_C}, | 305 {true, ui::DomKey::Constant<'c'>::Character, ui::VKEY_C}, |
312 {true, ui::DomKey::CHARACTER, 'C', ui::VKEY_C}}, | 306 {true, ui::DomKey::Constant<'C'>::Character, ui::VKEY_C}}, |
313 {ui::DomCode::KEY_D, | 307 {ui::DomCode::KEY_D, |
314 {true, ui::DomKey::CHARACTER, 'd', ui::VKEY_D}, | 308 {true, ui::DomKey::Constant<'d'>::Character, ui::VKEY_D}, |
315 {true, ui::DomKey::CHARACTER, 'D', ui::VKEY_D}}, | 309 {true, ui::DomKey::Constant<'D'>::Character, ui::VKEY_D}}, |
316 {ui::DomCode::KEY_E, | 310 {ui::DomCode::KEY_E, |
317 {true, ui::DomKey::CHARACTER, 'e', ui::VKEY_E}, | 311 {true, ui::DomKey::Constant<'e'>::Character, ui::VKEY_E}, |
318 {true, ui::DomKey::CHARACTER, 'E', ui::VKEY_E}}, | 312 {true, ui::DomKey::Constant<'E'>::Character, ui::VKEY_E}}, |
319 {ui::DomCode::KEY_F, | 313 {ui::DomCode::KEY_F, |
320 {true, ui::DomKey::CHARACTER, 'f', ui::VKEY_F}, | 314 {true, ui::DomKey::Constant<'f'>::Character, ui::VKEY_F}, |
321 {true, ui::DomKey::CHARACTER, 'F', ui::VKEY_F}}, | 315 {true, ui::DomKey::Constant<'F'>::Character, ui::VKEY_F}}, |
322 {ui::DomCode::KEY_G, | 316 {ui::DomCode::KEY_G, |
323 {true, ui::DomKey::CHARACTER, 'g', ui::VKEY_G}, | 317 {true, ui::DomKey::Constant<'g'>::Character, ui::VKEY_G}, |
324 {true, ui::DomKey::CHARACTER, 'G', ui::VKEY_G}}, | 318 {true, ui::DomKey::Constant<'G'>::Character, ui::VKEY_G}}, |
325 {ui::DomCode::KEY_H, | 319 {ui::DomCode::KEY_H, |
326 {true, ui::DomKey::CHARACTER, 'h', ui::VKEY_H}, | 320 {true, ui::DomKey::Constant<'h'>::Character, ui::VKEY_H}, |
327 {true, ui::DomKey::CHARACTER, 'H', ui::VKEY_H}}, | 321 {true, ui::DomKey::Constant<'H'>::Character, ui::VKEY_H}}, |
328 {ui::DomCode::KEY_I, | 322 {ui::DomCode::KEY_I, |
329 {true, ui::DomKey::CHARACTER, 'i', ui::VKEY_I}, | 323 {true, ui::DomKey::Constant<'i'>::Character, ui::VKEY_I}, |
330 {true, ui::DomKey::CHARACTER, 'I', ui::VKEY_I}}, | 324 {true, ui::DomKey::Constant<'I'>::Character, ui::VKEY_I}}, |
331 {ui::DomCode::KEY_J, | 325 {ui::DomCode::KEY_J, |
332 {true, ui::DomKey::CHARACTER, 'j', ui::VKEY_J}, | 326 {true, ui::DomKey::Constant<'j'>::Character, ui::VKEY_J}, |
333 {true, ui::DomKey::CHARACTER, 'J', ui::VKEY_J}}, | 327 {true, ui::DomKey::Constant<'J'>::Character, ui::VKEY_J}}, |
334 {ui::DomCode::KEY_K, | 328 {ui::DomCode::KEY_K, |
335 {true, ui::DomKey::CHARACTER, 'k', ui::VKEY_K}, | 329 {true, ui::DomKey::Constant<'k'>::Character, ui::VKEY_K}, |
336 {true, ui::DomKey::CHARACTER, 'K', ui::VKEY_K}}, | 330 {true, ui::DomKey::Constant<'K'>::Character, ui::VKEY_K}}, |
337 {ui::DomCode::KEY_L, | 331 {ui::DomCode::KEY_L, |
338 {true, ui::DomKey::CHARACTER, 'l', ui::VKEY_L}, | 332 {true, ui::DomKey::Constant<'l'>::Character, ui::VKEY_L}, |
339 {true, ui::DomKey::CHARACTER, 'L', ui::VKEY_L}}, | 333 {true, ui::DomKey::Constant<'L'>::Character, ui::VKEY_L}}, |
340 {ui::DomCode::KEY_M, | 334 {ui::DomCode::KEY_M, |
341 {true, ui::DomKey::CHARACTER, 'm', ui::VKEY_M}, | 335 {true, ui::DomKey::Constant<'m'>::Character, ui::VKEY_M}, |
342 {true, ui::DomKey::CHARACTER, 'M', ui::VKEY_M}}, | 336 {true, ui::DomKey::Constant<'M'>::Character, ui::VKEY_M}}, |
343 {ui::DomCode::KEY_N, | 337 {ui::DomCode::KEY_N, |
344 {true, ui::DomKey::CHARACTER, 'n', ui::VKEY_N}, | 338 {true, ui::DomKey::Constant<'n'>::Character, ui::VKEY_N}, |
345 {true, ui::DomKey::CHARACTER, 'N', ui::VKEY_N}}, | 339 {true, ui::DomKey::Constant<'N'>::Character, ui::VKEY_N}}, |
346 {ui::DomCode::KEY_O, | 340 {ui::DomCode::KEY_O, |
347 {true, ui::DomKey::CHARACTER, 'o', ui::VKEY_O}, | 341 {true, ui::DomKey::Constant<'o'>::Character, ui::VKEY_O}, |
348 {true, ui::DomKey::CHARACTER, 'O', ui::VKEY_O}}, | 342 {true, ui::DomKey::Constant<'O'>::Character, ui::VKEY_O}}, |
349 {ui::DomCode::KEY_P, | 343 {ui::DomCode::KEY_P, |
350 {true, ui::DomKey::CHARACTER, 'p', ui::VKEY_P}, | 344 {true, ui::DomKey::Constant<'p'>::Character, ui::VKEY_P}, |
351 {true, ui::DomKey::CHARACTER, 'P', ui::VKEY_P}}, | 345 {true, ui::DomKey::Constant<'P'>::Character, ui::VKEY_P}}, |
352 {ui::DomCode::KEY_Q, | 346 {ui::DomCode::KEY_Q, |
353 {true, ui::DomKey::CHARACTER, 'q', ui::VKEY_Q}, | 347 {true, ui::DomKey::Constant<'q'>::Character, ui::VKEY_Q}, |
354 {true, ui::DomKey::CHARACTER, 'Q', ui::VKEY_Q}}, | 348 {true, ui::DomKey::Constant<'Q'>::Character, ui::VKEY_Q}}, |
355 {ui::DomCode::KEY_R, | 349 {ui::DomCode::KEY_R, |
356 {true, ui::DomKey::CHARACTER, 'r', ui::VKEY_R}, | 350 {true, ui::DomKey::Constant<'r'>::Character, ui::VKEY_R}, |
357 {true, ui::DomKey::CHARACTER, 'R', ui::VKEY_R}}, | 351 {true, ui::DomKey::Constant<'R'>::Character, ui::VKEY_R}}, |
358 {ui::DomCode::KEY_S, | 352 {ui::DomCode::KEY_S, |
359 {true, ui::DomKey::CHARACTER, 's', ui::VKEY_S}, | 353 {true, ui::DomKey::Constant<'s'>::Character, ui::VKEY_S}, |
360 {true, ui::DomKey::CHARACTER, 'S', ui::VKEY_S}}, | 354 {true, ui::DomKey::Constant<'S'>::Character, ui::VKEY_S}}, |
361 {ui::DomCode::KEY_T, | 355 {ui::DomCode::KEY_T, |
362 {true, ui::DomKey::CHARACTER, 't', ui::VKEY_T}, | 356 {true, ui::DomKey::Constant<'t'>::Character, ui::VKEY_T}, |
363 {true, ui::DomKey::CHARACTER, 'T', ui::VKEY_T}}, | 357 {true, ui::DomKey::Constant<'T'>::Character, ui::VKEY_T}}, |
364 {ui::DomCode::KEY_U, | 358 {ui::DomCode::KEY_U, |
365 {true, ui::DomKey::CHARACTER, 'u', ui::VKEY_U}, | 359 {true, ui::DomKey::Constant<'u'>::Character, ui::VKEY_U}, |
366 {true, ui::DomKey::CHARACTER, 'U', ui::VKEY_U}}, | 360 {true, ui::DomKey::Constant<'U'>::Character, ui::VKEY_U}}, |
367 {ui::DomCode::KEY_V, | 361 {ui::DomCode::KEY_V, |
368 {true, ui::DomKey::CHARACTER, 'v', ui::VKEY_V}, | 362 {true, ui::DomKey::Constant<'v'>::Character, ui::VKEY_V}, |
369 {true, ui::DomKey::CHARACTER, 'V', ui::VKEY_V}}, | 363 {true, ui::DomKey::Constant<'V'>::Character, ui::VKEY_V}}, |
370 {ui::DomCode::KEY_W, | 364 {ui::DomCode::KEY_W, |
371 {true, ui::DomKey::CHARACTER, 'w', ui::VKEY_W}, | 365 {true, ui::DomKey::Constant<'w'>::Character, ui::VKEY_W}, |
372 {true, ui::DomKey::CHARACTER, 'W', ui::VKEY_W}}, | 366 {true, ui::DomKey::Constant<'W'>::Character, ui::VKEY_W}}, |
373 {ui::DomCode::KEY_X, | 367 {ui::DomCode::KEY_X, |
374 {true, ui::DomKey::CHARACTER, 'x', ui::VKEY_X}, | 368 {true, ui::DomKey::Constant<'x'>::Character, ui::VKEY_X}, |
375 {true, ui::DomKey::CHARACTER, 'X', ui::VKEY_X}}, | 369 {true, ui::DomKey::Constant<'X'>::Character, ui::VKEY_X}}, |
376 {ui::DomCode::KEY_Y, | 370 {ui::DomCode::KEY_Y, |
377 {true, ui::DomKey::CHARACTER, 'y', ui::VKEY_Y}, | 371 {true, ui::DomKey::Constant<'y'>::Character, ui::VKEY_Y}, |
378 {true, ui::DomKey::CHARACTER, 'Y', ui::VKEY_Y}}, | 372 {true, ui::DomKey::Constant<'Y'>::Character, ui::VKEY_Y}}, |
379 {ui::DomCode::KEY_Z, | 373 {ui::DomCode::KEY_Z, |
380 {true, ui::DomKey::CHARACTER, 'z', ui::VKEY_Z}, | 374 {true, ui::DomKey::Constant<'z'>::Character, ui::VKEY_Z}, |
381 {true, ui::DomKey::CHARACTER, 'Z', ui::VKEY_Z}}, | 375 {true, ui::DomKey::Constant<'Z'>::Character, ui::VKEY_Z}}, |
382 {ui::DomCode::DIGIT1, | 376 {ui::DomCode::DIGIT1, |
383 {true, ui::DomKey::CHARACTER, '1', ui::VKEY_1}, | 377 {true, ui::DomKey::Constant<'1'>::Character, ui::VKEY_1}, |
384 {true, ui::DomKey::CHARACTER, '!', ui::VKEY_1}}, | 378 {true, ui::DomKey::Constant<'!'>::Character, ui::VKEY_1}}, |
385 {ui::DomCode::DIGIT2, | 379 {ui::DomCode::DIGIT2, |
386 {true, ui::DomKey::CHARACTER, '2', ui::VKEY_2}, | 380 {true, ui::DomKey::Constant<'2'>::Character, ui::VKEY_2}, |
387 {true, ui::DomKey::CHARACTER, '@', ui::VKEY_2}}, | 381 {true, ui::DomKey::Constant<'@'>::Character, ui::VKEY_2}}, |
388 {ui::DomCode::DIGIT3, | 382 {ui::DomCode::DIGIT3, |
389 {true, ui::DomKey::CHARACTER, '3', ui::VKEY_3}, | 383 {true, ui::DomKey::Constant<'3'>::Character, ui::VKEY_3}, |
390 {true, ui::DomKey::CHARACTER, '#', ui::VKEY_3}}, | 384 {true, ui::DomKey::Constant<'#'>::Character, ui::VKEY_3}}, |
391 {ui::DomCode::DIGIT4, | 385 {ui::DomCode::DIGIT4, |
392 {true, ui::DomKey::CHARACTER, '4', ui::VKEY_4}, | 386 {true, ui::DomKey::Constant<'4'>::Character, ui::VKEY_4}, |
393 {true, ui::DomKey::CHARACTER, '$', ui::VKEY_4}}, | 387 {true, ui::DomKey::Constant<'$'>::Character, ui::VKEY_4}}, |
394 {ui::DomCode::DIGIT5, | 388 {ui::DomCode::DIGIT5, |
395 {true, ui::DomKey::CHARACTER, '5', ui::VKEY_5}, | 389 {true, ui::DomKey::Constant<'5'>::Character, ui::VKEY_5}, |
396 {true, ui::DomKey::CHARACTER, '%', ui::VKEY_5}}, | 390 {true, ui::DomKey::Constant<'%'>::Character, ui::VKEY_5}}, |
397 {ui::DomCode::DIGIT6, | 391 {ui::DomCode::DIGIT6, |
398 {true, ui::DomKey::CHARACTER, '6', ui::VKEY_6}, | 392 {true, ui::DomKey::Constant<'6'>::Character, ui::VKEY_6}, |
399 {true, ui::DomKey::CHARACTER, '^', ui::VKEY_6}}, | 393 {true, ui::DomKey::Constant<'^'>::Character, ui::VKEY_6}}, |
400 {ui::DomCode::DIGIT7, | 394 {ui::DomCode::DIGIT7, |
401 {true, ui::DomKey::CHARACTER, '7', ui::VKEY_7}, | 395 {true, ui::DomKey::Constant<'7'>::Character, ui::VKEY_7}, |
402 {true, ui::DomKey::CHARACTER, '&', ui::VKEY_7}}, | 396 {true, ui::DomKey::Constant<'&'>::Character, ui::VKEY_7}}, |
403 {ui::DomCode::DIGIT8, | 397 {ui::DomCode::DIGIT8, |
404 {true, ui::DomKey::CHARACTER, '8', ui::VKEY_8}, | 398 {true, ui::DomKey::Constant<'8'>::Character, ui::VKEY_8}, |
405 {true, ui::DomKey::CHARACTER, '*', ui::VKEY_8}}, | 399 {true, ui::DomKey::Constant<'*'>::Character, ui::VKEY_8}}, |
406 {ui::DomCode::DIGIT9, | 400 {ui::DomCode::DIGIT9, |
407 {true, ui::DomKey::CHARACTER, '9', ui::VKEY_9}, | 401 {true, ui::DomKey::Constant<'9'>::Character, ui::VKEY_9}, |
408 {true, ui::DomKey::CHARACTER, '(', ui::VKEY_9}}, | 402 {true, ui::DomKey::Constant<'('>::Character, ui::VKEY_9}}, |
409 {ui::DomCode::DIGIT0, | 403 {ui::DomCode::DIGIT0, |
410 {true, ui::DomKey::CHARACTER, '0', ui::VKEY_0}, | 404 {true, ui::DomKey::Constant<'0'>::Character, ui::VKEY_0}, |
411 {true, ui::DomKey::CHARACTER, ')', ui::VKEY_0}}, | 405 {true, ui::DomKey::Constant<')'>::Character, ui::VKEY_0}}, |
412 {ui::DomCode::SPACE, | 406 {ui::DomCode::SPACE, |
413 {true, ui::DomKey::CHARACTER, ' ', ui::VKEY_SPACE}, | 407 {true, ui::DomKey::Constant<' '>::Character, ui::VKEY_SPACE}, |
414 {true, ui::DomKey::CHARACTER, ' ', ui::VKEY_SPACE}}, | 408 {true, ui::DomKey::Constant<' '>::Character, ui::VKEY_SPACE}}, |
415 {ui::DomCode::MINUS, | 409 {ui::DomCode::MINUS, |
416 {true, ui::DomKey::CHARACTER, '-', ui::VKEY_OEM_MINUS}, | 410 {true, ui::DomKey::Constant<'-'>::Character, ui::VKEY_OEM_MINUS}, |
417 {true, ui::DomKey::CHARACTER, '_', ui::VKEY_OEM_MINUS}}, | 411 {true, ui::DomKey::Constant<'_'>::Character, ui::VKEY_OEM_MINUS}}, |
418 {ui::DomCode::EQUAL, | 412 {ui::DomCode::EQUAL, |
419 {true, ui::DomKey::CHARACTER, '=', ui::VKEY_OEM_PLUS}, | 413 {true, ui::DomKey::Constant<'='>::Character, ui::VKEY_OEM_PLUS}, |
420 {true, ui::DomKey::CHARACTER, '+', ui::VKEY_OEM_PLUS}}, | 414 {true, ui::DomKey::Constant<'+'>::Character, ui::VKEY_OEM_PLUS}}, |
421 {ui::DomCode::BRACKET_LEFT, | 415 {ui::DomCode::BRACKET_LEFT, |
422 {true, ui::DomKey::CHARACTER, '[', ui::VKEY_OEM_4}, | 416 {true, ui::DomKey::Constant<'['>::Character, ui::VKEY_OEM_4}, |
423 {true, ui::DomKey::CHARACTER, '{', ui::VKEY_OEM_4}}, | 417 {true, ui::DomKey::Constant<'{'>::Character, ui::VKEY_OEM_4}}, |
424 {ui::DomCode::BRACKET_RIGHT, | 418 {ui::DomCode::BRACKET_RIGHT, |
425 {true, ui::DomKey::CHARACTER, ']', ui::VKEY_OEM_6}, | 419 {true, ui::DomKey::Constant<']'>::Character, ui::VKEY_OEM_6}, |
426 {true, ui::DomKey::CHARACTER, '}', ui::VKEY_OEM_6}}, | 420 {true, ui::DomKey::Constant<'}'>::Character, ui::VKEY_OEM_6}}, |
427 {ui::DomCode::BACKSLASH, | 421 {ui::DomCode::BACKSLASH, |
428 {true, ui::DomKey::CHARACTER, '\\', ui::VKEY_OEM_5}, | 422 {true, ui::DomKey::Constant<'\\'>::Character, ui::VKEY_OEM_5}, |
429 {true, ui::DomKey::CHARACTER, '|', ui::VKEY_OEM_5}}, | 423 {true, ui::DomKey::Constant<'|'>::Character, ui::VKEY_OEM_5}}, |
430 {ui::DomCode::SEMICOLON, | 424 {ui::DomCode::SEMICOLON, |
431 {true, ui::DomKey::CHARACTER, ';', ui::VKEY_OEM_1}, | 425 {true, ui::DomKey::Constant<';'>::Character, ui::VKEY_OEM_1}, |
432 {true, ui::DomKey::CHARACTER, ':', ui::VKEY_OEM_1}}, | 426 {true, ui::DomKey::Constant<':'>::Character, ui::VKEY_OEM_1}}, |
433 {ui::DomCode::QUOTE, | 427 {ui::DomCode::QUOTE, |
434 {true, ui::DomKey::CHARACTER, '\'', ui::VKEY_OEM_7}, | 428 {true, ui::DomKey::Constant<'\''>::Character, ui::VKEY_OEM_7}, |
435 {true, ui::DomKey::CHARACTER, '"', ui::VKEY_OEM_7}}, | 429 {true, ui::DomKey::Constant<'"'>::Character, ui::VKEY_OEM_7}}, |
436 {ui::DomCode::BACKQUOTE, | 430 {ui::DomCode::BACKQUOTE, |
437 {true, ui::DomKey::CHARACTER, '`', ui::VKEY_OEM_3}, | 431 {true, ui::DomKey::Constant<'`'>::Character, ui::VKEY_OEM_3}, |
438 {true, ui::DomKey::CHARACTER, '~', ui::VKEY_OEM_3}}, | 432 {true, ui::DomKey::Constant<'~'>::Character, ui::VKEY_OEM_3}}, |
439 {ui::DomCode::COMMA, | 433 {ui::DomCode::COMMA, |
440 {true, ui::DomKey::CHARACTER, ',', ui::VKEY_OEM_COMMA}, | 434 {true, ui::DomKey::Constant<','>::Character, ui::VKEY_OEM_COMMA}, |
441 {true, ui::DomKey::CHARACTER, '<', ui::VKEY_OEM_COMMA}}, | 435 {true, ui::DomKey::Constant<'<'>::Character, ui::VKEY_OEM_COMMA}}, |
442 {ui::DomCode::PERIOD, | 436 {ui::DomCode::PERIOD, |
443 {true, ui::DomKey::CHARACTER, '.', ui::VKEY_OEM_PERIOD}, | 437 {true, ui::DomKey::Constant<'.'>::Character, ui::VKEY_OEM_PERIOD}, |
444 {true, ui::DomKey::CHARACTER, '>', ui::VKEY_OEM_PERIOD}}, | 438 {true, ui::DomKey::Constant<'>'>::Character, ui::VKEY_OEM_PERIOD}}, |
445 {ui::DomCode::SLASH, | 439 {ui::DomCode::SLASH, |
446 {true, ui::DomKey::CHARACTER, '/', ui::VKEY_OEM_2}, | 440 {true, ui::DomKey::Constant<'/'>::Character, ui::VKEY_OEM_2}, |
447 {true, ui::DomKey::CHARACTER, '?', ui::VKEY_OEM_2}}, | 441 {true, ui::DomKey::Constant<'?'>::Character, ui::VKEY_OEM_2}}, |
448 {ui::DomCode::INTL_BACKSLASH, | 442 {ui::DomCode::INTL_BACKSLASH, |
449 {true, ui::DomKey::CHARACTER, '<', ui::VKEY_OEM_102}, | 443 {true, ui::DomKey::Constant<'<'>::Character, ui::VKEY_OEM_102}, |
450 {true, ui::DomKey::CHARACTER, '>', ui::VKEY_OEM_102}}, | 444 {true, ui::DomKey::Constant<'>'>::Character, ui::VKEY_OEM_102}}, |
451 {ui::DomCode::INTL_YEN, | 445 {ui::DomCode::INTL_YEN, |
452 {true, ui::DomKey::CHARACTER, 0x00A5, ui::VKEY_OEM_5}, | 446 {true, ui::DomKey::Constant<0x00A5>::Character, ui::VKEY_OEM_5}, |
453 {true, ui::DomKey::CHARACTER, '|', ui::VKEY_OEM_5}}, | 447 {true, ui::DomKey::Constant<'|'>::Character, ui::VKEY_OEM_5}}, |
454 {ui::DomCode::NUMPAD_DIVIDE, | 448 {ui::DomCode::NUMPAD_DIVIDE, |
455 {true, ui::DomKey::CHARACTER, '/', ui::VKEY_DIVIDE}, | 449 {true, ui::DomKey::Constant<'/'>::Character, ui::VKEY_DIVIDE}, |
456 {true, ui::DomKey::CHARACTER, '/', ui::VKEY_DIVIDE}}, | 450 {true, ui::DomKey::Constant<'/'>::Character, ui::VKEY_DIVIDE}}, |
457 {ui::DomCode::NUMPAD_MULTIPLY, | 451 {ui::DomCode::NUMPAD_MULTIPLY, |
458 {true, ui::DomKey::CHARACTER, '*', ui::VKEY_MULTIPLY}, | 452 {true, ui::DomKey::Constant<'*'>::Character, ui::VKEY_MULTIPLY}, |
459 {true, ui::DomKey::CHARACTER, '*', ui::VKEY_MULTIPLY}}, | 453 {true, ui::DomKey::Constant<'*'>::Character, ui::VKEY_MULTIPLY}}, |
460 {ui::DomCode::NUMPAD_SUBTRACT, | 454 {ui::DomCode::NUMPAD_SUBTRACT, |
461 {true, ui::DomKey::CHARACTER, '-', ui::VKEY_SUBTRACT}, | 455 {true, ui::DomKey::Constant<'-'>::Character, ui::VKEY_SUBTRACT}, |
462 {true, ui::DomKey::CHARACTER, '-', ui::VKEY_SUBTRACT}}, | 456 {true, ui::DomKey::Constant<'-'>::Character, ui::VKEY_SUBTRACT}}, |
463 {ui::DomCode::NUMPAD_ADD, | 457 {ui::DomCode::NUMPAD_ADD, |
464 {true, ui::DomKey::CHARACTER, '+', ui::VKEY_ADD}, | 458 {true, ui::DomKey::Constant<'+'>::Character, ui::VKEY_ADD}, |
465 {true, ui::DomKey::CHARACTER, '+', ui::VKEY_ADD}}, | 459 {true, ui::DomKey::Constant<'+'>::Character, ui::VKEY_ADD}}, |
466 {ui::DomCode::NUMPAD1, | 460 {ui::DomCode::NUMPAD1, |
467 {true, ui::DomKey::CHARACTER, '1', ui::VKEY_1}, | 461 {true, ui::DomKey::Constant<'1'>::Character, ui::VKEY_1}, |
468 {true, ui::DomKey::CHARACTER, '1', ui::VKEY_1}}, | 462 {true, ui::DomKey::Constant<'1'>::Character, ui::VKEY_1}}, |
469 {ui::DomCode::NUMPAD2, | 463 {ui::DomCode::NUMPAD2, |
470 {true, ui::DomKey::CHARACTER, '2', ui::VKEY_2}, | 464 {true, ui::DomKey::Constant<'2'>::Character, ui::VKEY_2}, |
471 {true, ui::DomKey::CHARACTER, '2', ui::VKEY_2}}, | 465 {true, ui::DomKey::Constant<'2'>::Character, ui::VKEY_2}}, |
472 {ui::DomCode::NUMPAD3, | 466 {ui::DomCode::NUMPAD3, |
473 {true, ui::DomKey::CHARACTER, '3', ui::VKEY_3}, | 467 {true, ui::DomKey::Constant<'3'>::Character, ui::VKEY_3}, |
474 {true, ui::DomKey::CHARACTER, '3', ui::VKEY_3}}, | 468 {true, ui::DomKey::Constant<'3'>::Character, ui::VKEY_3}}, |
475 {ui::DomCode::NUMPAD4, | 469 {ui::DomCode::NUMPAD4, |
476 {true, ui::DomKey::CHARACTER, '4', ui::VKEY_4}, | 470 {true, ui::DomKey::Constant<'4'>::Character, ui::VKEY_4}, |
477 {true, ui::DomKey::CHARACTER, '4', ui::VKEY_4}}, | 471 {true, ui::DomKey::Constant<'4'>::Character, ui::VKEY_4}}, |
478 {ui::DomCode::NUMPAD5, | 472 {ui::DomCode::NUMPAD5, |
479 {true, ui::DomKey::CHARACTER, '5', ui::VKEY_5}, | 473 {true, ui::DomKey::Constant<'5'>::Character, ui::VKEY_5}, |
480 {true, ui::DomKey::CHARACTER, '5', ui::VKEY_5}}, | 474 {true, ui::DomKey::Constant<'5'>::Character, ui::VKEY_5}}, |
481 {ui::DomCode::NUMPAD6, | 475 {ui::DomCode::NUMPAD6, |
482 {true, ui::DomKey::CHARACTER, '6', ui::VKEY_6}, | 476 {true, ui::DomKey::Constant<'6'>::Character, ui::VKEY_6}, |
483 {true, ui::DomKey::CHARACTER, '6', ui::VKEY_6}}, | 477 {true, ui::DomKey::Constant<'6'>::Character, ui::VKEY_6}}, |
484 {ui::DomCode::NUMPAD7, | 478 {ui::DomCode::NUMPAD7, |
485 {true, ui::DomKey::CHARACTER, '7', ui::VKEY_7}, | 479 {true, ui::DomKey::Constant<'7'>::Character, ui::VKEY_7}, |
486 {true, ui::DomKey::CHARACTER, '7', ui::VKEY_7}}, | 480 {true, ui::DomKey::Constant<'7'>::Character, ui::VKEY_7}}, |
487 {ui::DomCode::NUMPAD8, | 481 {ui::DomCode::NUMPAD8, |
488 {true, ui::DomKey::CHARACTER, '8', ui::VKEY_8}, | 482 {true, ui::DomKey::Constant<'8'>::Character, ui::VKEY_8}, |
489 {true, ui::DomKey::CHARACTER, '8', ui::VKEY_8}}, | 483 {true, ui::DomKey::Constant<'8'>::Character, ui::VKEY_8}}, |
490 {ui::DomCode::NUMPAD9, | 484 {ui::DomCode::NUMPAD9, |
491 {true, ui::DomKey::CHARACTER, '9', ui::VKEY_9}, | 485 {true, ui::DomKey::Constant<'9'>::Character, ui::VKEY_9}, |
492 {true, ui::DomKey::CHARACTER, '9', ui::VKEY_9}}, | 486 {true, ui::DomKey::Constant<'9'>::Character, ui::VKEY_9}}, |
493 {ui::DomCode::NUMPAD0, | 487 {ui::DomCode::NUMPAD0, |
494 {true, ui::DomKey::CHARACTER, '0', ui::VKEY_0}, | 488 {true, ui::DomKey::Constant<'0'>::Character, ui::VKEY_0}, |
495 {true, ui::DomKey::CHARACTER, '0', ui::VKEY_0}}, | 489 {true, ui::DomKey::Constant<'0'>::Character, ui::VKEY_0}}, |
496 {ui::DomCode::NUMPAD_DECIMAL, | 490 {ui::DomCode::NUMPAD_DECIMAL, |
497 {true, ui::DomKey::CHARACTER, '.', ui::VKEY_DECIMAL}, | 491 {true, ui::DomKey::Constant<'.'>::Character, ui::VKEY_DECIMAL}, |
498 {true, ui::DomKey::CHARACTER, '.', ui::VKEY_DECIMAL}}, | 492 {true, ui::DomKey::Constant<'.'>::Character, ui::VKEY_DECIMAL}}, |
499 {ui::DomCode::NUMPAD_EQUAL, | 493 {ui::DomCode::NUMPAD_EQUAL, |
500 {true, ui::DomKey::CHARACTER, '=', ui::VKEY_UNKNOWN}, | 494 {true, ui::DomKey::Constant<'='>::Character, ui::VKEY_UNKNOWN}, |
501 {true, ui::DomKey::CHARACTER, '=', ui::VKEY_UNKNOWN}}, | 495 {true, ui::DomKey::Constant<'='>::Character, ui::VKEY_UNKNOWN}}, |
502 {ui::DomCode::NUMPAD_COMMA, | 496 {ui::DomCode::NUMPAD_COMMA, |
503 {true, ui::DomKey::CHARACTER, ',', ui::VKEY_OEM_COMMA}, | 497 {true, ui::DomKey::Constant<','>::Character, ui::VKEY_OEM_COMMA}, |
504 {true, ui::DomKey::CHARACTER, ',', ui::VKEY_OEM_COMMA}}, | 498 {true, ui::DomKey::Constant<','>::Character, ui::VKEY_OEM_COMMA}}, |
505 {ui::DomCode::NUMPAD_PAREN_LEFT, | 499 {ui::DomCode::NUMPAD_PAREN_LEFT, |
506 {true, ui::DomKey::CHARACTER, '(', ui::VKEY_UNKNOWN}, | 500 {true, ui::DomKey::Constant<'('>::Character, ui::VKEY_UNKNOWN}, |
507 {true, ui::DomKey::CHARACTER, '(', ui::VKEY_UNKNOWN}}, | 501 {true, ui::DomKey::Constant<'('>::Character, ui::VKEY_UNKNOWN}}, |
508 {ui::DomCode::NUMPAD_PAREN_RIGHT, | 502 {ui::DomCode::NUMPAD_PAREN_RIGHT, |
509 {true, ui::DomKey::CHARACTER, ')', ui::VKEY_UNKNOWN}, | 503 {true, ui::DomKey::Constant<')'>::Character, ui::VKEY_UNKNOWN}, |
510 {true, ui::DomKey::CHARACTER, ')', ui::VKEY_UNKNOWN}}, | 504 {true, ui::DomKey::Constant<')'>::Character, ui::VKEY_UNKNOWN}}, |
511 {ui::DomCode::NUMPAD_SIGN_CHANGE, | 505 {ui::DomCode::NUMPAD_SIGN_CHANGE, |
512 {true, ui::DomKey::CHARACTER, 0xB1, ui::VKEY_UNKNOWN}, | 506 {true, ui::DomKey::Constant<0xB1>::Character, ui::VKEY_UNKNOWN}, |
513 {true, ui::DomKey::CHARACTER, 0xB1, ui::VKEY_UNKNOWN}}, | 507 {true, ui::DomKey::Constant<0xB1>::Character, ui::VKEY_UNKNOWN}}, |
514 }; | 508 }; |
515 | 509 |
516 for (const auto& it : kPrintableUsLayout) { | 510 for (const auto& it : kPrintableUsLayout) { |
517 CheckDomCodeToMeaning("p_us_n", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 511 CheckDomCodeToMeaning("p_us_n", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
518 ui::EF_NONE, it.normal); | 512 ui::EF_NONE, it.normal); |
519 CheckDomCodeToMeaning("p_us_s", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 513 CheckDomCodeToMeaning("p_us_s", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
520 ui::EF_SHIFT_DOWN, it.shift); | 514 ui::EF_SHIFT_DOWN, it.shift); |
521 CheckDomCodeToMeaning("p_us_a", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 515 CheckDomCodeToMeaning("p_us_a", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
522 ui::EF_ALTGR_DOWN, it.normal); | 516 ui::EF_ALTGR_DOWN, it.normal); |
523 CheckDomCodeToMeaning("p_us_a", ui::DomCodeToUsLayoutMeaning, it.dom_code, | 517 CheckDomCodeToMeaning("p_us_a", ui::DomCodeToUsLayoutDomKey, it.dom_code, |
524 ui::EF_ALTGR_DOWN|ui::EF_SHIFT_DOWN, it.shift); | 518 ui::EF_ALTGR_DOWN|ui::EF_SHIFT_DOWN, it.shift); |
525 } | 519 } |
526 } | 520 } |
527 | 521 |
528 TEST(KeyboardCodeConversion, Tables) { | 522 TEST(KeyboardCodeConversion, Tables) { |
529 // Verify that kDomCodeToKeyboardCodeMap is ordered by DomCode value. | 523 // Verify that kDomCodeToKeyboardCodeMap is ordered by DomCode value. |
530 uint32_t previous = 0; | 524 uint32_t previous = 0; |
531 for (const auto& it : ui::kDomCodeToKeyboardCodeMap) { | 525 for (const auto& it : ui::kDomCodeToKeyboardCodeMap) { |
532 uint32_t current = static_cast<uint32_t>(it.dom_code); | 526 uint32_t current = static_cast<uint32_t>(it.dom_code); |
533 EXPECT_LT(previous, current); | 527 EXPECT_LT(previous, current); |
534 previous = current; | 528 previous = current; |
535 } | 529 } |
536 } | 530 } |
537 | 531 |
538 } // namespace | 532 } // namespace |
OLD | NEW |