blob: 55b28e44b24811b17271ddaa5955513dd17d42e0 [file] [log] [blame]
// Copyright 2017 The Chromium Authors. All rights reserved.
// Use of this source code is governed by a BSD-style license that can be
// found in the LICENSE file.
#include "remoting/client/input/keyboard_interpreter.h"
#include "base/logging.h"
#include "remoting/client/input/text_keyboard_input_strategy.h"
#include "ui/events/keycodes/dom/dom_code.h"
namespace remoting {
KeyboardInterpreter::KeyboardInterpreter(ClientInputInjector* input_injector) {
// TODO(nicholss): This should be configurable.
input_strategy_.reset(new TextKeyboardInputStrategy(input_injector));
}
KeyboardInterpreter::~KeyboardInterpreter() {}
void KeyboardInterpreter::HandleTextEvent(const std::string& text,
uint8_t modifiers) {
input_strategy_->HandleTextEvent(text, modifiers);
}
void KeyboardInterpreter::HandleDeleteEvent(uint8_t modifiers) {
std::queue<KeyEvent> keys;
// TODO(nicholss): Handle modifers.
// Key press.
keys.push({static_cast<uint32_t>(ui::DomCode::BACKSPACE), true});
// Key release.
keys.push({static_cast<uint32_t>(ui::DomCode::BACKSPACE), false});
input_strategy_->HandleKeysEvent(keys);
}
void KeyboardInterpreter::HandleCtrlAltDeleteEvent() {
std::queue<KeyEvent> keys;
// Key press.
keys.push({static_cast<uint32_t>(ui::DomCode::CONTROL_LEFT), true});
keys.push({static_cast<uint32_t>(ui::DomCode::ALT_LEFT), true});
keys.push({static_cast<uint32_t>(ui::DomCode::DEL), true});
// Key release.
keys.push({static_cast<uint32_t>(ui::DomCode::DEL), false});
keys.push({static_cast<uint32_t>(ui::DomCode::ALT_LEFT), false});
keys.push({static_cast<uint32_t>(ui::DomCode::CONTROL_LEFT), false});
input_strategy_->HandleKeysEvent(keys);
}
void KeyboardInterpreter::HandlePrintScreenEvent() {
std::queue<KeyEvent> keys;
// Key press.
keys.push({static_cast<uint32_t>(ui::DomCode::PRINT_SCREEN), true});
// Key release.
keys.push({static_cast<uint32_t>(ui::DomCode::PRINT_SCREEN), false});
input_strategy_->HandleKeysEvent(keys);
}
} // namespace remoting