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

Side by Side Diff: ui/base/keycodes/keyboard_code_conversion_x.cc

Issue 8380033: aura: Fix shift/ctrl/alt keyevents with RWHVA and X11. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: . Created 9 years, 1 month 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 | « ui/base/keycodes/keyboard_code_conversion_x.h ('k') | views/events/event_x.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "ui/base/keycodes/keyboard_code_conversion_x.h" 5 #include "ui/base/keycodes/keyboard_code_conversion_x.h"
6 6
7 #include <X11/keysym.h> 7 #include <X11/keysym.h>
8 #include <X11/Xlib.h> 8 #include <X11/Xlib.h>
9 #include <X11/Xutil.h>
9 10
10 #include "base/basictypes.h" 11 #include "base/basictypes.h"
11 #include "base/logging.h" 12 #include "base/logging.h"
13 #include "base/utf_string_conversions.h"
12 14
13 namespace ui { 15 namespace ui {
14 16
15 // Get an ui::KeyboardCode from an X keyevent 17 // Get an ui::KeyboardCode from an X keyevent
16 KeyboardCode KeyboardCodeFromXKeyEvent(XEvent* xev) { 18 KeyboardCode KeyboardCodeFromXKeyEvent(XEvent* xev) {
17 KeySym keysym = XLookupKeysym(&xev->xkey, 0); 19 KeySym keysym = XLookupKeysym(&xev->xkey, 0);
18 20
19 KeyboardCode keycode = KeyboardCodeFromXKeysym(keysym); 21 KeyboardCode keycode = KeyboardCodeFromXKeysym(keysym);
20 if (keycode == VKEY_UNKNOWN) { 22 if (keycode == VKEY_UNKNOWN) {
21 keysym = DefaultXKeysymFromHardwareKeycode(xev->xkey.keycode); 23 keysym = DefaultXKeysymFromHardwareKeycode(xev->xkey.keycode);
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 case XK_F24: 284 case XK_F24:
283 return static_cast<KeyboardCode>(VKEY_F1 + (keysym - XK_F1)); 285 return static_cast<KeyboardCode>(VKEY_F1 + (keysym - XK_F1));
284 286
285 // TODO(sad): some keycodes are still missing. 287 // TODO(sad): some keycodes are still missing.
286 } 288 }
287 289
288 DLOG(WARNING) << "Unknown keycode: " << keysym; 290 DLOG(WARNING) << "Unknown keycode: " << keysym;
289 return VKEY_UNKNOWN; 291 return VKEY_UNKNOWN;
290 } 292 }
291 293
294 unsigned int DefaultSymbolFromXEvent(XEvent* xev) {
295 char buf[6];
296 int bytes_written = XLookupString(&xev->xkey, buf, 6, NULL, NULL);
297 DCHECK_LE(bytes_written, 6);
298
299 string16 result;
300 return (bytes_written > 0 && UTF8ToUTF16(buf, bytes_written, &result) &&
301 result.length() == 1) ? result[0] : 0;
302 }
303
292 unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int hardware_code) { 304 unsigned int DefaultXKeysymFromHardwareKeycode(unsigned int hardware_code) {
293 static const unsigned int kHardwareKeycodeMap[] = { 305 static const unsigned int kHardwareKeycodeMap[] = {
294 0, // 0x00: 306 0, // 0x00:
295 0, // 0x01: 307 0, // 0x01:
296 0, // 0x02: 308 0, // 0x02:
297 0, // 0x03: 309 0, // 0x03:
298 0, // 0x04: 310 0, // 0x04:
299 0, // 0x05: 311 0, // 0x05:
300 0, // 0x06: 312 0, // 0x06:
301 0, // 0x07: 313 0, // 0x07:
(...skipping 68 matching lines...) Expand 10 before | Expand all | Expand 10 after
370 XK_F10, // 0x4C: XK_F10 382 XK_F10, // 0x4C: XK_F10
371 XK_Num_Lock, // 0x4D: XK_Num_Lock 383 XK_Num_Lock, // 0x4D: XK_Num_Lock
372 XK_Scroll_Lock, // 0x4E: XK_Scroll_Lock 384 XK_Scroll_Lock, // 0x4E: XK_Scroll_Lock
373 }; 385 };
374 386
375 return hardware_code < arraysize(kHardwareKeycodeMap) ? 387 return hardware_code < arraysize(kHardwareKeycodeMap) ?
376 kHardwareKeycodeMap[hardware_code] : 0; 388 kHardwareKeycodeMap[hardware_code] : 0;
377 } 389 }
378 390
379 } // namespace ui 391 } // namespace ui
OLDNEW
« no previous file with comments | « ui/base/keycodes/keyboard_code_conversion_x.h ('k') | views/events/event_x.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698