InputCore Overhaul

This commit is contained in:
Anon
2016-12-16 22:50:33 -06:00
parent 51dd13b8a0
commit 06ef32f450
38 changed files with 1435 additions and 330 deletions

View File

@@ -13,7 +13,12 @@
#include "common/scm_rev.h"
#include "common/string_util.h"
#include "core/core.h"
#include "core/frontend/key_map.h"
#include "core/settings.h"
#include "core/system.h"
#include "input_core/devices/keyboard.h"
#include "input_core/input_core.h"
#include "video_core/debug_utils/debug_utils.h"
#include "video_core/video_core.h"
@@ -104,9 +109,6 @@ GRenderWindow::GRenderWindow(QWidget* parent, EmuThread* emu_thread)
std::string window_title =
Common::StringFromFormat("Citra | %s-%s", Common::g_scm_branch, Common::g_scm_desc);
setWindowTitle(QString::fromStdString(window_title));
keyboard_id = KeyMap::NewDeviceId();
ReloadSetKeymaps();
}
void GRenderWindow::moveContext() {
@@ -196,11 +198,17 @@ void GRenderWindow::closeEvent(QCloseEvent* event) {
}
void GRenderWindow::keyPressEvent(QKeyEvent* event) {
KeyMap::PressKey(*this, {event->key(), keyboard_id});
auto keyboard = InputCore::GetKeyboard();
KeyboardKey param =
KeyboardKey(event->key(), QKeySequence(event->key()).toString().toStdString());
keyboard->KeyPressed(param);
}
void GRenderWindow::keyReleaseEvent(QKeyEvent* event) {
KeyMap::ReleaseKey(*this, {event->key(), keyboard_id});
auto keyboard = InputCore::GetKeyboard();
KeyboardKey param =
KeyboardKey(event->key(), QKeySequence(event->key()).toString().toStdString());
keyboard->KeyReleased(param);
}
void GRenderWindow::mousePressEvent(QMouseEvent* event) {
@@ -224,15 +232,6 @@ void GRenderWindow::mouseReleaseEvent(QMouseEvent* event) {
this->TouchReleased();
}
void GRenderWindow::ReloadSetKeymaps() {
KeyMap::ClearKeyMapping(keyboard_id);
for (int i = 0; i < Settings::NativeInput::NUM_INPUTS; ++i) {
KeyMap::SetKeyMapping(
{Settings::values.input_mappings[Settings::NativeInput::All[i]], keyboard_id},
KeyMap::mapping_targets[i]);
}
}
void GRenderWindow::OnClientAreaResized(unsigned width, unsigned height) {
NotifyClientAreaSizeChanged(std::make_pair(width, height));
}