diff options
author | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-28 01:49:12 +0000 |
---|---|---|
committer | garykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2012-02-28 01:49:12 +0000 |
commit | f6232ddeb071f8052cb4db9d84fc709648bc2d9f (patch) | |
tree | 30bdcaa85dddd1cb9416d30de50d8e0c5cf17108 /remoting/client | |
parent | 9e190ed52ae6a4932fbf9759137f4dd769e8b289 (diff) | |
download | chromium_src-f6232ddeb071f8052cb4db9d84fc709648bc2d9f.zip chromium_src-f6232ddeb071f8052cb4db9d84fc709648bc2d9f.tar.gz chromium_src-f6232ddeb071f8052cb4db9d84fc709648bc2d9f.tar.bz2 |
Add usb_key_code to Chromotocol key events.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/9446001
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@123856 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'remoting/client')
-rw-r--r-- | remoting/client/plugin/pepper_input_handler.cc | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/remoting/client/plugin/pepper_input_handler.cc b/remoting/client/plugin/pepper_input_handler.cc index e555f06..4457817 100644 --- a/remoting/client/plugin/pepper_input_handler.cc +++ b/remoting/client/plugin/pepper_input_handler.cc @@ -5,7 +5,9 @@ #include "remoting/client/plugin/pepper_input_handler.h" #include "base/logging.h" +#include "ppapi/c/dev/ppb_keyboard_input_event_dev.h" #include "ppapi/cpp/input_event.h" +#include "ppapi/cpp/module_impl.h" #include "ppapi/cpp/point.h" #include "remoting/proto/event.pb.h" @@ -19,6 +21,17 @@ PepperInputHandler::PepperInputHandler(protocol::InputStub* input_stub) PepperInputHandler::~PepperInputHandler() { } +// Helper function to get the USB key code using the Dev InputEvent interface. +uint32_t GetUsbKeyCode(pp::KeyboardInputEvent pp_key_event) { + const PPB_KeyboardInputEvent_Dev* key_event_interface = + reinterpret_cast<const PPB_KeyboardInputEvent_Dev*>( + pp::Module::Get()->GetBrowserInterface( + PPB_KEYBOARD_INPUT_EVENT_DEV_INTERFACE)); + if (!key_event_interface) + return 0; + return key_event_interface->GetUsbKeyCode(pp_key_event.pp_resource()); +} + bool PepperInputHandler::HandleInputEvent(const pp::InputEvent& event) { switch (event.GetType()) { case PP_INPUTEVENT_TYPE_CONTEXTMENU: { @@ -32,6 +45,10 @@ bool PepperInputHandler::HandleInputEvent(const pp::InputEvent& event) { pp::KeyboardInputEvent pp_key_event(event); protocol::KeyEvent key_event; key_event.set_keycode(pp_key_event.GetKeyCode()); + uint32 keycode = GetUsbKeyCode(pp_key_event); + if (keycode != 0) + key_event.set_usb_key_code(keycode); + LOG(INFO) << "keycode: " << std::hex << keycode << std::dec; key_event.set_pressed(event.GetType() == PP_INPUTEVENT_TYPE_KEYDOWN); input_stub_->InjectKeyEvent(key_event); return true; |