summaryrefslogtreecommitdiffstats
path: root/remoting/client
diff options
context:
space:
mode:
authorgarykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-28 01:49:12 +0000
committergarykac@chromium.org <garykac@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2012-02-28 01:49:12 +0000
commitf6232ddeb071f8052cb4db9d84fc709648bc2d9f (patch)
tree30bdcaa85dddd1cb9416d30de50d8e0c5cf17108 /remoting/client
parent9e190ed52ae6a4932fbf9759137f4dd769e8b289 (diff)
downloadchromium_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.cc17
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;