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

Unified Diff: remoting/host/event_executor_linux.cc

Issue 10894050: Remove support for Windows-style keycodes. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Fix Linux EventExecutor typo. Created 8 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « remoting/host/client_session_unittest.cc ('k') | remoting/host/event_executor_mac.cc » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: remoting/host/event_executor_linux.cc
diff --git a/remoting/host/event_executor_linux.cc b/remoting/host/event_executor_linux.cc
index fe64ad23e446d2c9260b56c8cc66430ab1e1f46a..bbd798546a1756f7d8be1bd772688335b264c322 100644
--- a/remoting/host/event_executor_linux.cc
+++ b/remoting/host/event_executor_linux.cc
@@ -7,8 +7,6 @@
#include <set>
#include <X11/Xlib.h>
-#include <X11/XF86keysym.h>
-#include <X11/keysym.h>
#include <X11/extensions/XTest.h>
#include "base/basictypes.h"
@@ -104,172 +102,6 @@ int VerticalScrollWheelToX11ButtonNumber(int dy) {
return (dy > 0 ? 4 : 5);
}
-// Hard-coded mapping from Virtual Key codes to X11 KeySyms.
-// This mapping is only valid if both client and host are using a
-// US English keyboard layout.
-// Because we're passing VK codes on the wire, with no Scancode,
-// "extended" flag, etc, things like distinguishing left & right
-// Shift keys doesn't work.
-//
-// TODO(wez): Replace this with something more closely tied to what
-// WebInputEventFactory does on Linux/GTK, and which respects the
-// host's keyboard layout (see http://crbug.com/74550 ).
-const int kUsVkeyToKeysym[256] = {
- // 0x00 - 0x07
- -1, -1, -1, XK_Cancel,
- // 0x04 - 0x07
- -1, -1, -1, -1,
- // 0x08 - 0x0B
- XK_BackSpace, XK_Tab, -1, -1,
- // 0x0C - 0x0F
- XK_Clear, XK_Return, -1, -1,
-
- // 0x10 - 0x13
- XK_Shift_L, XK_Control_L, XK_Alt_L, XK_Pause,
- // 0x14 - 0x17
- XK_Caps_Lock, XK_Kana_Shift, -1, XK_Hangul_Jeonja,
- // 0x18 - 0x1B
- XK_Hangul_End, XK_Kanji, -1, XK_Escape,
- // 0x1C - 0x1F
- XK_Henkan, XK_Muhenkan, /* VKEY_ACCEPT */ -1, XK_Mode_switch,
-
- // 0x20 - 0x23
- XK_space, XK_Prior, XK_Next, XK_End,
- // 0x24 - 0x27
- XK_Home, XK_Left, XK_Up, XK_Right,
- // 0x28 - 0x2B
- XK_Down, XK_Select, /* VK_PRINT */ -1, XK_Execute,
- // 0x2C - 0x2F
- XK_Print, XK_Insert, XK_Delete, XK_Help,
-
- // 0x30 - 0x33
- XK_0, XK_1, XK_2, XK_3,
- // 0x34 - 0x37
- XK_4, XK_5, XK_6, XK_7,
- // 0x38 - 0x3B
- XK_8, XK_9, -1, -1,
- // 0x3C - 0x3F
- -1, -1, -1, -1,
-
- // 0x40 - 0x43
- -1, XK_A, XK_B, XK_C,
- // 0x44 - 0x47
- XK_D, XK_E, XK_F, XK_G,
- // 0x48 - 0x4B
- XK_H, XK_I, XK_J, XK_K,
- // 0x4C - 0x4F
- XK_L, XK_M, XK_N, XK_O,
-
- // 0x50 - 0x53
- XK_P, XK_Q, XK_R, XK_S,
- // 0x54 - 0x57
- XK_T, XK_U, XK_V, XK_W,
- // 0x58 - 0x5B
- XK_X, XK_Y, XK_Z, XK_Super_L,
- // 0x5C - 0x5F
- XK_Super_R, XK_Menu, -1, /* VKEY_SLEEP */ -1,
-
- // 0x60 - 0x63
- XK_KP_0, XK_KP_1, XK_KP_2, XK_KP_3,
- // 0x64 - 0x67
- XK_KP_4, XK_KP_5, XK_KP_6, XK_KP_7,
- // 0x68 - 0x6B
- XK_KP_8, XK_KP_9, XK_KP_Multiply, XK_KP_Add,
- // 0x6C - 0x6F
- XK_KP_Separator, XK_KP_Subtract, XK_KP_Decimal, XK_KP_Divide,
-
- // 0x70 - 0x73
- XK_F1, XK_F2, XK_F3, XK_F4,
- // 0x74 - 0x77
- XK_F5, XK_F6, XK_F7, XK_F8,
- // 0x78 - 0x7B
- XK_F9, XK_F10, XK_F11, XK_F12,
- // 0x7C - 0x7F
- XK_F13, XK_F14, XK_F15, XK_F16,
-
- // 0x80 - 0x83
- XK_F17, XK_F18, XK_F19, XK_F20,
- // 0x84 - 0x87
- XK_F21, XK_F22, XK_F23, XK_F24,
- // 0x88 - 0x8B
- -1, -1, -1, -1,
- // 0x8C - 0x8F
- -1, -1, -1, -1,
-
- // 0x90 - 0x93
- XK_Num_Lock, XK_Scroll_Lock, -1, -1,
- // 0x94 - 0x97
- -1, -1, -1, -1,
- // 0x98 - 0x9B
- -1, -1, -1, -1,
- // 0x9C - 0x9F
- -1, -1, -1, -1,
-
- // 0xA0 - 0xA3
- XK_Shift_L, XK_Shift_R, XK_Control_L, XK_Control_R,
- // 0xA4 - 0xA7
- XK_Meta_L, XK_Meta_R, XF86XK_Back, XF86XK_Forward,
- // 0xA8 - 0xAB
- XF86XK_Refresh, XF86XK_Stop, XF86XK_Search, XF86XK_Favorites,
- // 0xAC - 0xAF
- XF86XK_HomePage, XF86XK_AudioMute, XF86XK_AudioLowerVolume,
- XF86XK_AudioRaiseVolume,
-
- // 0xB0 - 0xB3
- XF86XK_AudioNext, XF86XK_AudioPrev, XF86XK_AudioStop, XF86XK_AudioPause,
- // 0xB4 - 0xB7
- XF86XK_Mail, XF86XK_AudioMedia, XF86XK_Launch0, XF86XK_Launch1,
- // 0xB8 - 0xBB
- -1, -1, XK_semicolon, XK_plus,
- // 0xBC - 0xBF
- XK_comma, XK_minus, XK_period, XK_slash,
-
- // 0xC0 - 0xC3
- XK_grave, -1, -1, -1,
- // 0xC4 - 0xC7
- -1, -1, -1, -1,
- // 0xC8 - 0xCB
- -1, -1, -1, -1,
- // 0xCC - 0xCF
- -1, -1, -1, -1,
-
- // 0xD0 - 0xD3
- -1, -1, -1, -1,
- // 0xD4 - 0xD7
- -1, -1, -1, -1,
- // 0xD8 - 0xDB
- -1, -1, -1, XK_bracketleft,
- // 0xDC - 0xDF
- XK_backslash, XK_bracketright, XK_apostrophe,
- /* VKEY_OEM_8 */ -1,
-
- // 0xE0 - 0xE3
- -1, -1, /* VKEY_OEM_102 */ -1, -1,
- // 0xE4 - 0xE7
- -1, /* VKEY_PROCESSKEY */ -1, -1, /* VKEY_PACKET */ -1,
- // 0xE8 - 0xEB
- -1, -1, -1, -1,
- // 0xEC - 0xEF
- -1, -1, -1, -1,
-
- // 0xF0 - 0xF3
- -1, -1, -1, -1,
- // 0xF4 - 0xF7
- -1, -1, /* VKEY_ATTN */ -1, /* VKEY_CRSEL */ -1,
- // 0xF8 - 0xFB
- /* VKEY_EXSEL */ -1, /* VKEY_EREOF */ -1, /* VKEY_PLAY */ -1,
- /* VKEY_ZOOM */ -1,
- // 0xFC - 0xFF
- /* VKEY_NONAME */ -1, /* VKEY_PA1 */ -1, /* VKEY_OEM_CLEAR */ -1, -1
-};
-
-int ChromotocolKeycodeToX11Keysym(int32_t keycode) {
- if (keycode < 0 || keycode > 255)
- return kInvalidKeycode;
-
- return kUsVkeyToKeysym[keycode];
-}
-
EventExecutorLinux::EventExecutorLinux(
scoped_refptr<base::SingleThreadTaskRunner> task_runner)
: task_runner_(task_runner),
@@ -310,6 +142,7 @@ void EventExecutorLinux::InjectClipboardEvent(const ClipboardEvent& event) {
void EventExecutorLinux::InjectKeyEvent(const KeyEvent& event) {
// HostEventDispatcher should filter events missing the pressed field.
DCHECK(event.has_pressed());
+ DCHECK(event.has_usb_keycode());
if (!task_runner_->BelongsToCurrentThread()) {
task_runner_->PostTask(
@@ -319,22 +152,11 @@ void EventExecutorLinux::InjectKeyEvent(const KeyEvent& event) {
return;
}
- int keycode = kInvalidKeycode;
- if (event.has_usb_keycode()) {
- keycode = UsbKeycodeToNativeKeycode(event.usb_keycode());
- VLOG(3) << "Converting USB keycode: " << std::hex << event.usb_keycode()
- << " to keycode: " << keycode << std::dec;
- } else if (event.has_keycode()) {
- // Fall back to keysym translation.
- // TODO(garykac) Remove this once we switch entirely over to USB keycodes.
- int keysym = ChromotocolKeycodeToX11Keysym(event.keycode());
- keycode = XKeysymToKeycode(display_, keysym);
- VLOG(3) << "Converting VKEY: " << std::hex << event.keycode()
- << " to keysym: " << keysym
- << " to keycode: " << keycode << std::dec;
- }
+ int keycode = UsbKeycodeToNativeKeycode(event.usb_keycode());
+ VLOG(3) << "Converting USB keycode: " << std::hex << event.usb_keycode()
+ << " to keycode: " << keycode << std::dec;
- // Ignore events with no VK- or USB-keycode, or which can't be mapped.
+ // Ignore events which can't be mapped.
if (keycode == kInvalidKeycode)
return;
« no previous file with comments | « remoting/host/client_session_unittest.cc ('k') | remoting/host/event_executor_mac.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698