Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(47)

Side by Side Diff: app/keyboard_code_conversion.cc

Issue 3337006: Revert 58388 - Revert 58215 - Revert 58186 - Move the keyboard files from bas... (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Created 10 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « app/keyboard_code_conversion.h ('k') | app/keyboard_code_conversion_gtk.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #include "app/keyboard_code_conversion.h"
6
7 #include <string.h>
8
9 #include "app/keyboard_codes.h"
10
11 namespace app {
12
13 namespace {
14
15 typedef struct KeyIdentifier {
16 const char* key_name;
17 const char character;
18 const char* unicode_codepoint;
19 const KeyboardCode key_code;
20 } KeyIdentifier;
21
22 // Taken from Section 6.3.3 here:
23 // http://www.w3.org/TR/DOM-Level-3-Events/#keyset-keyidentifiers
24 // TODO(bryeung): keycodes could be wrong: I took the keydown code only
25 static const KeyIdentifier kKeyIdentifiers[] = {
26 { "Accept", '\0', "", VKEY_ACCEPT },
27 { "Add", '\0', "", VKEY_ADD },
28 { "Again", '\0', "", VKEY_UNKNOWN },
29 { "AllCandidates", '\0', "", VKEY_UNKNOWN },
30 { "Alphanumeric", '\0', "", VKEY_UNKNOWN },
31 { "Alt", '\0', "", VKEY_MENU },
32 { "AltGraph", '\0', "", VKEY_UNKNOWN },
33 { "Apps", '\0', "", VKEY_APPS },
34 { "Attn", '\0', "", VKEY_ATTN },
35 { "BrowserBack", '\0', "", VKEY_BROWSER_BACK },
36 { "BrowserFavorites", '\0', "", VKEY_BROWSER_FAVORITES },
37 { "BrowserForward", '\0', "", VKEY_BROWSER_FAVORITES },
38 { "BrowserHome", '\0', "", VKEY_BROWSER_HOME },
39 { "BrowserRefresh", '\0', "", VKEY_BROWSER_REFRESH },
40 { "BrowserSearch", '\0', "", VKEY_BROWSER_SEARCH },
41 { "BrowserStop", '\0', "", VKEY_BROWSER_STOP },
42 { "CapsLock", '\0', "", VKEY_CAPITAL },
43 { "Clear", '\0', "", VKEY_OEM_CLEAR },
44 { "CodeInput", '\0', "", VKEY_UNKNOWN },
45 { "Compose", '\0', "", VKEY_UNKNOWN },
46 { "Control", '\0', "", VKEY_CONTROL },
47 { "Crsel", '\0', "", VKEY_CRSEL },
48 { "Convert", '\0', "", VKEY_CONVERT },
49 { "Copy", '\0', "", VKEY_UNKNOWN },
50 { "Cut", '\0', "", VKEY_UNKNOWN },
51 { "Decimal", '\0', "", VKEY_DECIMAL },
52 { "Divide", '\0', "", VKEY_DIVIDE },
53 { "Down", '\0', "", VKEY_DOWN },
54 { "DownLeft", '\0', "", VKEY_UNKNOWN },
55 { "DownRight", '\0', "", VKEY_UNKNOWN },
56 { "End", '\0', "", VKEY_END },
57 { "Enter", '\0', "", VKEY_RETURN },
58 { "EraseEof", '\0', "", VKEY_EREOF },
59 { "Execute", '\0', "", VKEY_EXECUTE },
60 { "Exsel", '\0', "", VKEY_EXSEL },
61 { "Fn", '\0', "", VKEY_UNKNOWN },
62 { "F1", '\0', "", VKEY_F1 },
63 { "F2", '\0', "", VKEY_F2 },
64 { "F3", '\0', "", VKEY_F3 },
65 { "F4", '\0', "", VKEY_F4 },
66 { "F5", '\0', "", VKEY_F5 },
67 { "F6", '\0', "", VKEY_F6 },
68 { "F7", '\0', "", VKEY_F7 },
69 { "F8", '\0', "", VKEY_F8 },
70 { "F9", '\0', "", VKEY_F9 },
71 { "F10", '\0', "", VKEY_F10 },
72 { "F11", '\0', "", VKEY_F11 },
73 { "F12", '\0', "", VKEY_F12 },
74 { "F13", '\0', "", VKEY_F13 },
75 { "F14", '\0', "", VKEY_F14 },
76 { "F15", '\0', "", VKEY_F15 },
77 { "F16", '\0', "", VKEY_F16 },
78 { "F17", '\0', "", VKEY_F17 },
79 { "F18", '\0', "", VKEY_F18 },
80 { "F19", '\0', "", VKEY_F19 },
81 { "F20", '\0', "", VKEY_F20 },
82 { "F21", '\0', "", VKEY_F21 },
83 { "F22", '\0', "", VKEY_F22 },
84 { "F23", '\0', "", VKEY_F23 },
85 { "F24", '\0', "", VKEY_F24 },
86 { "FinalMode", '\0', "", VKEY_FINAL },
87 { "Find", '\0', "", VKEY_UNKNOWN },
88 { "FullWidth", '\0', "", VKEY_UNKNOWN },
89 { "HalfWidth", '\0', "", VKEY_UNKNOWN },
90 { "HangulMode", '\0', "", VKEY_HANGUL },
91 { "HanjaMode", '\0', "", VKEY_HANJA },
92 { "Help", '\0', "", VKEY_HELP },
93 { "Hiragana", '\0', "", VKEY_UNKNOWN },
94 { "Home", '\0', "", VKEY_HOME },
95 { "Insert", '\0', "", VKEY_INSERT },
96 { "JapaneseHiragana", '\0', "", VKEY_UNKNOWN },
97 { "JapaneseKatakana", '\0', "", VKEY_UNKNOWN },
98 { "JapaneseRomaji", '\0', "", VKEY_UNKNOWN },
99 { "JunjaMode", '\0', "", VKEY_JUNJA },
100 { "KanaMode", '\0', "", VKEY_KANA },
101 { "KanjiMode", '\0', "", VKEY_KANJI },
102 { "Katakana", '\0', "", VKEY_UNKNOWN },
103 { "LaunchApplication1", '\0', "", VKEY_MEDIA_LAUNCH_APP1 },
104 { "LaunchApplication2", '\0', "", VKEY_MEDIA_LAUNCH_APP2 },
105 { "LaunchMail", '\0', "", VKEY_MEDIA_LAUNCH_MAIL },
106 { "Left", '\0', "", VKEY_LEFT },
107 { "Menu", '\0', "", VKEY_MENU },
108 { "Meta", '\0', "", VKEY_UNKNOWN },
109 { "MediaNextTrack", '\0', "", VKEY_MEDIA_NEXT_TRACK },
110 { "MediaPlayPause", '\0', "", VKEY_MEDIA_PLAY_PAUSE },
111 { "MediaPreviousTrack", '\0', "", VKEY_MEDIA_PREV_TRACK },
112 { "MediaStop", '\0', "", VKEY_MEDIA_STOP },
113 { "ModeChange", '\0', "", VKEY_MODECHANGE },
114 { "Multiply", '\0', "", VKEY_MULTIPLY },
115 { "NextCandidate", '\0', "", VKEY_UNKNOWN },
116 { "Nonconvert", '\0', "", VKEY_NONCONVERT },
117 { "NumLock", '\0', "", VKEY_NUMLOCK },
118 { "PageDown", '\0', "", VKEY_NEXT },
119 { "PageUp", '\0', "", VKEY_PRIOR },
120 { "Paste", '\0', "", VKEY_UNKNOWN },
121 { "Pause", '\0', "", VKEY_PAUSE },
122 { "Play", '\0', "", VKEY_PLAY },
123 { "PreviousCandidate", '\0', "", VKEY_UNKNOWN },
124 { "PrintScreen", '\0', "", VKEY_SNAPSHOT },
125 { "Process", '\0', "", VKEY_PROCESSKEY },
126 { "Props", '\0', "", VKEY_UNKNOWN },
127 { "Right", '\0', "", VKEY_RIGHT },
128 { "RomanCharacters", '\0', "", VKEY_UNKNOWN },
129 { "Scroll", '\0', "", VKEY_SCROLL },
130 { "Select", '\0', "", VKEY_SELECT },
131 { "SelectMedia", '\0', "", VKEY_MEDIA_LAUNCH_MEDIA_SELECT },
132 { "Separator", '\0', "", VKEY_SEPARATOR },
133 { "Shift", '\0', "", VKEY_SHIFT },
134 { "Soft1", '\0', "", VKEY_UNKNOWN },
135 { "Soft2", '\0', "", VKEY_UNKNOWN },
136 { "Soft3", '\0', "", VKEY_UNKNOWN },
137 { "Soft4", '\0', "", VKEY_UNKNOWN },
138 { "Stop", '\0', "", VKEY_UNKNOWN },
139 { "Subtract", '\0', "", VKEY_SUBTRACT },
140 { "Up", '\0', "", VKEY_UP },
141 { "UpLeft", '\0', "", VKEY_UNKNOWN },
142 { "UpRight", '\0', "", VKEY_UNKNOWN },
143 { "Undo", '\0', "", VKEY_UNKNOWN },
144 { "VolumeDown", '\0', "", VKEY_VOLUME_DOWN },
145 { "VolumeMute", '\0', "", VKEY_VOLUME_MUTE },
146 { "VolumeUp", '\0', "", VKEY_VOLUME_UP },
147 { "Win", '\0', "", VKEY_LWIN },
148 { "Zoom", '\0', "", VKEY_ZOOM },
149 { "Backspace", '\0', "U+0008", VKEY_BACK },
150 { "Tab", '\0', "U+0009", VKEY_TAB },
151 { "Cancel", '\0', "U+0018", VKEY_UNKNOWN },
152 { "Esc", '\0', "U+001B", VKEY_ESCAPE },
153 { "Spacebar", ' ', "U+0020", VKEY_SPACE },
154 { "Exclamation", '!', "U+0021", VKEY_1 },
155 { "DoubleQuote", '\"', "U+0022", VKEY_OEM_7 },
156 { "Hash", '\0', "U+0023", VKEY_3 },
157 { "Dollar", '$', "U+0024", VKEY_4 },
158 { "Ampersand", '&', "U+0026", VKEY_5 },
159 { "Apostrophe", '\'', "U+0027", VKEY_OEM_7 },
160 { "LeftParen", '(', "U+0028", VKEY_9 },
161 { "RightParen", ')', "U+0029", VKEY_0 },
162 { "Asterisk", '*', "U+002A", VKEY_8 },
163 { "Plus", '+', "U+002B", VKEY_OEM_PLUS },
164 { "Percent", '+', "U+0025", VKEY_5 },
165 { "Comma", ',', "U+002C", VKEY_OEM_COMMA },
166 { "HyphenMinus", '-', "U+002D", VKEY_OEM_MINUS },
167 { "Period", '.', "U+002E", VKEY_OEM_PERIOD },
168 { "Solidus", '/', "U+002F", VKEY_OEM_2 },
169 { "", '0', "U+0030", VKEY_0 },
170 { "", '1', "U+0031", VKEY_1 },
171 { "", '2', "U+0032", VKEY_2 },
172 { "", '3', "U+0033", VKEY_3 },
173 { "", '4', "U+0034", VKEY_4 },
174 { "", '5', "U+0035", VKEY_5 },
175 { "", '6', "U+0036", VKEY_6 },
176 { "", '7', "U+0037", VKEY_7 },
177 { "", '8', "U+0038", VKEY_8 },
178 { "", '9', "U+0039", VKEY_9 },
179 { "Colon", ':', "U+003A", VKEY_OEM_1 },
180 { "Semicolon", ';', "U+003B", VKEY_OEM_1 },
181 { "LessThan", '<', "U+003C", VKEY_OEM_COMMA },
182 { "Equals", '=', "U+003D", VKEY_OEM_PLUS },
183 { "GreaterThan", '>', "U+003E", VKEY_OEM_PERIOD },
184 { "QuestionMark", '?', "U+003F", VKEY_OEM_2 },
185 { "At", '@', "U+0040", VKEY_2 },
186 { "", 'A', "U+0041", VKEY_A },
187 { "", 'B', "U+0042", VKEY_B },
188 { "", 'C', "U+0043", VKEY_C },
189 { "", 'D', "U+0044", VKEY_D },
190 { "", 'E', "U+0045", VKEY_E },
191 { "", 'F', "U+0046", VKEY_F },
192 { "", 'G', "U+0047", VKEY_G },
193 { "", 'H', "U+0048", VKEY_H },
194 { "", 'I', "U+0049", VKEY_I },
195 { "", 'J', "U+004A", VKEY_J },
196 { "", 'K', "U+004B", VKEY_K },
197 { "", 'L', "U+004C", VKEY_L },
198 { "", 'M', "U+004D", VKEY_M },
199 { "", 'N', "U+004E", VKEY_N },
200 { "", 'O', "U+004F", VKEY_O },
201 { "", 'P', "U+0050", VKEY_P },
202 { "", 'Q', "U+0051", VKEY_Q },
203 { "", 'R', "U+0052", VKEY_R },
204 { "", 'S', "U+0053", VKEY_S },
205 { "", 'T', "U+0054", VKEY_T },
206 { "", 'U', "U+0055", VKEY_U },
207 { "", 'V', "U+0056", VKEY_V },
208 { "", 'W', "U+0057", VKEY_W },
209 { "", 'X', "U+0058", VKEY_X },
210 { "", 'Y', "U+0059", VKEY_Y },
211 { "", 'Z', "U+005A", VKEY_Z },
212 { "", 'a', "U+0061", VKEY_A },
213 { "", 'b', "U+0062", VKEY_B },
214 { "", 'c', "U+0063", VKEY_C },
215 { "", 'd', "U+0064", VKEY_D },
216 { "", 'e', "U+0065", VKEY_E },
217 { "", 'f', "U+0066", VKEY_F },
218 { "", 'g', "U+0067", VKEY_G },
219 { "", 'h', "U+0068", VKEY_H },
220 { "", 'i', "U+0069", VKEY_I },
221 { "", 'j', "U+006A", VKEY_J },
222 { "", 'k', "U+006B", VKEY_K },
223 { "", 'l', "U+006C", VKEY_L },
224 { "", 'm', "U+006D", VKEY_M },
225 { "", 'n', "U+006E", VKEY_N },
226 { "", 'o', "U+006F", VKEY_O },
227 { "", 'p', "U+0070", VKEY_P },
228 { "", 'q', "U+0071", VKEY_Q },
229 { "", 'r', "U+0072", VKEY_R },
230 { "", 's', "U+0073", VKEY_S },
231 { "", 't', "U+0074", VKEY_T },
232 { "", 'u', "U+0075", VKEY_U },
233 { "", 'v', "U+0076", VKEY_V },
234 { "", 'w', "U+0077", VKEY_W },
235 { "", 'x', "U+0078", VKEY_X },
236 { "", 'y', "U+0079", VKEY_Y },
237 { "", 'z', "U+007A", VKEY_Z },
238 { "LeftSquareBracket", '[', "U+005B", VKEY_OEM_4 },
239 { "Backslash", '\\', "U+005C", VKEY_OEM_5 },
240 { "RightSquareBracket", ']', "U+005D", VKEY_OEM_6 },
241 { "Circumflex", '^', "U+005E", VKEY_OEM_6 },
242 { "Underscore", '_', "U+005F", VKEY_OEM_MINUS },
243 { "Grave", '`', "U+0060", VKEY_OEM_3 },
244 { "LeftCurlyBracket", '{', "U+007B", VKEY_OEM_4 },
245 { "Pipe", '|', "U+007C", VKEY_OEM_5 },
246 { "RightCurlyBracket", '}', "U+007D", VKEY_OEM_6 },
247 { "Del", '\0', "U+007F", VKEY_DELETE },
248 { "InvertedExclamation", '\0', "U+00A1", VKEY_UNKNOWN },
249 { "DeadGrave", '\0', "U+0300", VKEY_UNKNOWN },
250 { "DeadEacute", '\0', "U+0301", VKEY_UNKNOWN },
251 { "DeadCircumflex", '\0', "U+0302", VKEY_UNKNOWN },
252 { "DeadTilde", '\0', "U+0303", VKEY_UNKNOWN },
253 { "DeadMacron", '\0', "U+0304", VKEY_UNKNOWN },
254 { "DeadBreve", '\0', "U+0306", VKEY_UNKNOWN },
255 { "DeadAboveDot", '\0', "U+0307", VKEY_UNKNOWN },
256 { "DeadUmlaut", '\0', "U+0308", VKEY_UNKNOWN },
257 { "DeadAboveRing", '\0', "U+030A", VKEY_UNKNOWN },
258 { "DeadDoubleacute", '\0', "U+030B", VKEY_UNKNOWN },
259 { "DeadCaron", '\0', "U+030C", VKEY_UNKNOWN },
260 { "DeadCedilla", '\0', "U+0327", VKEY_UNKNOWN },
261 { "DeadOgonek", '\0', "U+0328", VKEY_UNKNOWN },
262 { "DeadIota", '\0', "U+0345", VKEY_UNKNOWN },
263 { "Euro", '\0', "U+20AC", VKEY_UNKNOWN },
264 { "DeadVoicedSound", '\0', "U+3099", VKEY_UNKNOWN },
265 { "DeadSemivoicedSound", '\0', "U+309A", VKEY_UNKNOWN }
266 };
267
268 static const int kNumKeyIdentifiers =
269 sizeof(kKeyIdentifiers)/sizeof(KeyIdentifier);
270
271 static const KeyIdentifier* GetKeyIdentifierData(const std::string& id) {
272 for (int i = 0; i < kNumKeyIdentifiers; ++i) {
273 const KeyIdentifier& key = kKeyIdentifiers[i];
274 if ((key.key_name[0] != '\0' && strcmp(id.c_str(), key.key_name) == 0) ||
275 (id.length() == 1 && id[0] == key.character) ||
276 (key.unicode_codepoint[0] != '\0' &&
277 strcmp(id.c_str(), key.unicode_codepoint) == 0)) {
278 return &key;
279 }
280 }
281
282 return NULL;
283 }
284
285 } // namespace
286
287
288 KeyboardCode KeyCodeFromKeyIdentifier(const std::string& key_identifier) {
289 const KeyIdentifier* id = GetKeyIdentifierData(key_identifier);
290 if (!id) {
291 return VKEY_UNKNOWN;
292 }
293 return id->key_code;
294 }
295
296 } // namespace app
OLDNEW
« no previous file with comments | « app/keyboard_code_conversion.h ('k') | app/keyboard_code_conversion_gtk.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698