Remove KeyboardDevice which was essentially useless

Refactor InputDevice to simplify it
This commit is contained in:
Silent 2019-06-29 00:55:45 +02:00
parent 1acaec2494
commit 0b5458f759
No known key found for this signature in database
GPG key ID: AE53149BB0C45AF1
13 changed files with 127 additions and 182 deletions

View file

@ -1874,8 +1874,6 @@ set(WindowsFiles
Windows/InputBox.h
Windows/InputDevice.cpp
Windows/InputDevice.h
Windows/KeyboardDevice.cpp
Windows/KeyboardDevice.h
Windows/W32Util/DialogManager.cpp
Windows/W32Util/DialogManager.h
Windows/W32Util/Misc.cpp

View file

@ -38,7 +38,7 @@
UWPHost::UWPHost() {
// add first XInput device to respond
input.push_back(std::shared_ptr<InputDevice>(new XinputDevice()));
input.push_back(std::make_unique<XinputDevice>());
}
UWPHost::~UWPHost() {
@ -86,14 +86,10 @@ void UWPHost::SetDebugMode(bool mode) {
}
void UWPHost::PollControllers() {
bool doPad = true;
for (auto iter = this->input.begin(); iter != this->input.end(); iter++)
for (const auto& device : this->input)
{
auto device = *iter;
if (!doPad && device->IsPad())
continue;
if (device->UpdateState() == InputDevice::UPDATESTATE_SKIP_PAD)
doPad = false;
break;
}
/*

View file

@ -45,5 +45,5 @@ private:
void SetConsolePosition();
void UpdateConsolePosition();
std::list<std::shared_ptr<InputDevice>> input;
std::list<std::unique_ptr<InputDevice>> input;
};

View file

@ -24,7 +24,7 @@
#include "InputDevice.h"
#include "dinput.h"
class DinputDevice :
class DinputDevice final :
public InputDevice
{
public:
@ -32,8 +32,7 @@ public:
//getDevices(), enumerates all devices if not done yet
DinputDevice(int devnum);
~DinputDevice();
virtual int UpdateState();
virtual bool IsPad() { return true; }
virtual int UpdateState() override;
static size_t getNumPads();
static void CheckDevices() {
needsCheck_ = true;

View file

@ -26,7 +26,6 @@ class InputDevice {
public:
enum { UPDATESTATE_SKIP_PAD = 0x1234};
virtual int UpdateState() = 0;
virtual bool IsPad() = 0;
static void BeginPolling();
static void StopPolling();

View file

@ -1,126 +0,0 @@
#include "base/NativeApp.h"
#include "input/input_state.h"
#include "input/keycodes.h"
#include "util/const_map.h"
#include "KeyMap.h"
#include "KeyboardDevice.h"
#include "../Common/CommonTypes.h"
#include "../Common/CommonWindows.h"
// TODO: More keys need to be added, but this is more than
// a fair start.
std::map<int, int> windowsTransTable = InitConstMap<int, int>
('A', NKCODE_A)
('B', NKCODE_B)
('C', NKCODE_C)
('D', NKCODE_D)
('E', NKCODE_E)
('F', NKCODE_F)
('G', NKCODE_G)
('H', NKCODE_H)
('I', NKCODE_I)
('J', NKCODE_J)
('K', NKCODE_K)
('L', NKCODE_L)
('M', NKCODE_M)
('N', NKCODE_N)
('O', NKCODE_O)
('P', NKCODE_P)
('Q', NKCODE_Q)
('R', NKCODE_R)
('S', NKCODE_S)
('T', NKCODE_T)
('U', NKCODE_U)
('V', NKCODE_V)
('W', NKCODE_W)
('X', NKCODE_X)
('Y', NKCODE_Y)
('Z', NKCODE_Z)
('0', NKCODE_0)
('1', NKCODE_1)
('2', NKCODE_2)
('3', NKCODE_3)
('4', NKCODE_4)
('5', NKCODE_5)
('6', NKCODE_6)
('7', NKCODE_7)
('8', NKCODE_8)
('9', NKCODE_9)
(VK_OEM_PERIOD, NKCODE_PERIOD)
(VK_OEM_COMMA, NKCODE_COMMA)
(VK_NUMPAD0, NKCODE_NUMPAD_0)
(VK_NUMPAD1, NKCODE_NUMPAD_1)
(VK_NUMPAD2, NKCODE_NUMPAD_2)
(VK_NUMPAD3, NKCODE_NUMPAD_3)
(VK_NUMPAD4, NKCODE_NUMPAD_4)
(VK_NUMPAD5, NKCODE_NUMPAD_5)
(VK_NUMPAD6, NKCODE_NUMPAD_6)
(VK_NUMPAD7, NKCODE_NUMPAD_7)
(VK_NUMPAD8, NKCODE_NUMPAD_8)
(VK_NUMPAD9, NKCODE_NUMPAD_9)
(VK_DECIMAL, NKCODE_NUMPAD_DOT)
(VK_DIVIDE, NKCODE_NUMPAD_DIVIDE)
(VK_MULTIPLY, NKCODE_NUMPAD_MULTIPLY)
(VK_SUBTRACT, NKCODE_NUMPAD_SUBTRACT)
(VK_ADD, NKCODE_NUMPAD_ADD)
(VK_SEPARATOR, NKCODE_NUMPAD_COMMA)
(VK_OEM_MINUS, NKCODE_MINUS)
(VK_OEM_PLUS, NKCODE_PLUS)
(VK_LCONTROL, NKCODE_CTRL_LEFT)
(VK_RCONTROL, NKCODE_CTRL_RIGHT)
(VK_LSHIFT, NKCODE_SHIFT_LEFT)
(VK_RSHIFT, NKCODE_SHIFT_RIGHT)
(VK_LMENU, NKCODE_ALT_LEFT)
(VK_RMENU, NKCODE_ALT_RIGHT)
(VK_BACK, NKCODE_DEL) // yes! http://stackoverflow.com/questions/4886858/android-edittext-deletebackspace-key-event
(VK_SPACE, NKCODE_SPACE)
(VK_ESCAPE, NKCODE_ESCAPE)
(VK_UP, NKCODE_DPAD_UP)
(VK_INSERT, NKCODE_INSERT)
(VK_HOME, NKCODE_MOVE_HOME)
(VK_PRIOR, NKCODE_PAGE_UP)
(VK_NEXT, NKCODE_PAGE_DOWN)
(VK_DELETE, NKCODE_FORWARD_DEL)
(VK_END, NKCODE_MOVE_END)
(VK_TAB, NKCODE_TAB)
(VK_DOWN, NKCODE_DPAD_DOWN)
(VK_LEFT, NKCODE_DPAD_LEFT)
(VK_RIGHT, NKCODE_DPAD_RIGHT)
(VK_CAPITAL, NKCODE_CAPS_LOCK)
(VK_CLEAR, NKCODE_CLEAR)
(VK_SNAPSHOT, NKCODE_SYSRQ)
(VK_SCROLL, NKCODE_SCROLL_LOCK)
(VK_OEM_1, NKCODE_SEMICOLON)
(VK_OEM_2, NKCODE_SLASH)
(VK_OEM_3, NKCODE_GRAVE)
(VK_OEM_4, NKCODE_LEFT_BRACKET)
(VK_OEM_5, NKCODE_BACKSLASH)
(VK_OEM_6, NKCODE_RIGHT_BRACKET)
(VK_OEM_7, NKCODE_APOSTROPHE)
(VK_RETURN, NKCODE_ENTER)
(VK_APPS, NKCODE_MENU) // Context menu key, let's call this "menu".
(VK_PAUSE, NKCODE_BREAK)
(VK_F1, NKCODE_F1)
(VK_F2, NKCODE_F2)
(VK_F3, NKCODE_F3)
(VK_F4, NKCODE_F4)
(VK_F5, NKCODE_F5)
(VK_F6, NKCODE_F6)
(VK_F7, NKCODE_F7)
(VK_F8, NKCODE_F8)
(VK_F9, NKCODE_F9)
(VK_F10, NKCODE_F10)
(VK_F11, NKCODE_F11)
(VK_F12, NKCODE_F12)
(VK_OEM_102, NKCODE_EXT_PIPE)
(VK_LBUTTON, NKCODE_EXT_MOUSEBUTTON_1)
(VK_RBUTTON, NKCODE_EXT_MOUSEBUTTON_2)
(VK_MBUTTON, NKCODE_EXT_MOUSEBUTTON_3)
(VK_XBUTTON1, NKCODE_EXT_MOUSEBUTTON_4)
(VK_XBUTTON2, NKCODE_EXT_MOUSEBUTTON_5);
int KeyboardDevice::UpdateState() {
// Nothing to do, all done in WM_INPUT
return 0;
}

View file

@ -1,14 +0,0 @@
#pragma once
#include <map>
#include "InputDevice.h"
extern std::map<int, int> windowsTransTable;
class KeyboardDevice : public InputDevice {
public:
virtual int UpdateState();
virtual bool IsPad() { return false; }
private:
};

View file

@ -1,4 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<?xml version="1.0" encoding="utf-8"?>
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup Label="ProjectConfigurations">
<ProjectConfiguration Include="Debug|ARM">
@ -740,7 +740,6 @@
<ExcludedFromBuild Condition="'$(Configuration)|$(Platform)'=='Release|ARM'">true</ExcludedFromBuild>
</ClCompile>
<ClCompile Include="InputDevice.cpp" />
<ClCompile Include="KeyboardDevice.cpp" />
<ClCompile Include="MainWindowMenu.cpp" />
<ClCompile Include="RawInput.cpp" />
<ClCompile Include="TouchInputHandler.cpp" />
@ -926,7 +925,6 @@
</ClInclude>
<ClInclude Include="GPU\WindowsGraphicsContext.h" />
<ClInclude Include="InputDevice.h" />
<ClInclude Include="KeyboardDevice.h" />
<ClInclude Include="MainWindowMenu.h" />
<ClInclude Include="RawInput.h" />
<ClInclude Include="TouchInputHandler.h" />

View file

@ -82,9 +82,6 @@
<ClCompile Include="XinputDevice.cpp">
<Filter>Windows\Input</Filter>
</ClCompile>
<ClCompile Include="KeyboardDevice.cpp">
<Filter>Windows\Input</Filter>
</ClCompile>
<ClCompile Include="InputDevice.cpp">
<Filter>Windows\Input</Filter>
</ClCompile>
@ -246,9 +243,6 @@
<ClInclude Include="XinputDevice.h">
<Filter>Windows\Input</Filter>
</ClInclude>
<ClInclude Include="KeyboardDevice.h">
<Filter>Windows\Input</Filter>
</ClInclude>
<ClInclude Include="stdafx.h" />
<ClInclude Include="..\android\jni\ArmEmitterTest.h">
<Filter>Other Platforms</Filter>

View file

@ -24,7 +24,6 @@
#include "input/input_state.h"
#include "Common/Log.h"
#include "Windows/RawInput.h"
#include "Windows/KeyboardDevice.h"
#include "Windows/MainWindow.h"
#include "Windows/WindowsHost.h"
#include "Common/CommonFuncs.h"
@ -65,6 +64,119 @@ namespace WindowsRawInput {
static float mouseX = 0.0f;
static float mouseY = 0.0f;
// TODO: More keys need to be added, but this is more than
// a fair start.
static std::map<int, int> windowsTransTable = {
{ 'A', NKCODE_A },
{ 'B', NKCODE_B },
{ 'C', NKCODE_C },
{ 'D', NKCODE_D },
{ 'E', NKCODE_E },
{ 'F', NKCODE_F },
{ 'G', NKCODE_G },
{ 'H', NKCODE_H },
{ 'I', NKCODE_I },
{ 'J', NKCODE_J },
{ 'K', NKCODE_K },
{ 'L', NKCODE_L },
{ 'M', NKCODE_M },
{ 'N', NKCODE_N },
{ 'O', NKCODE_O },
{ 'P', NKCODE_P },
{ 'Q', NKCODE_Q },
{ 'R', NKCODE_R },
{ 'S', NKCODE_S },
{ 'T', NKCODE_T },
{ 'U', NKCODE_U },
{ 'V', NKCODE_V },
{ 'W', NKCODE_W },
{ 'X', NKCODE_X },
{ 'Y', NKCODE_Y },
{ 'Z', NKCODE_Z },
{ '0', NKCODE_0 },
{ '1', NKCODE_1 },
{ '2', NKCODE_2 },
{ '3', NKCODE_3 },
{ '4', NKCODE_4 },
{ '5', NKCODE_5 },
{ '6', NKCODE_6 },
{ '7', NKCODE_7 },
{ '8', NKCODE_8 },
{ '9', NKCODE_9 },
{ VK_OEM_PERIOD, NKCODE_PERIOD },
{ VK_OEM_COMMA, NKCODE_COMMA },
{ VK_NUMPAD0, NKCODE_NUMPAD_0 },
{ VK_NUMPAD1, NKCODE_NUMPAD_1 },
{ VK_NUMPAD2, NKCODE_NUMPAD_2 },
{ VK_NUMPAD3, NKCODE_NUMPAD_3 },
{ VK_NUMPAD4, NKCODE_NUMPAD_4 },
{ VK_NUMPAD5, NKCODE_NUMPAD_5 },
{ VK_NUMPAD6, NKCODE_NUMPAD_6 },
{ VK_NUMPAD7, NKCODE_NUMPAD_7 },
{ VK_NUMPAD8, NKCODE_NUMPAD_8 },
{ VK_NUMPAD9, NKCODE_NUMPAD_9 },
{ VK_DECIMAL, NKCODE_NUMPAD_DOT },
{ VK_DIVIDE, NKCODE_NUMPAD_DIVIDE },
{ VK_MULTIPLY, NKCODE_NUMPAD_MULTIPLY },
{ VK_SUBTRACT, NKCODE_NUMPAD_SUBTRACT },
{ VK_ADD, NKCODE_NUMPAD_ADD },
{ VK_SEPARATOR, NKCODE_NUMPAD_COMMA },
{ VK_OEM_MINUS, NKCODE_MINUS },
{ VK_OEM_PLUS, NKCODE_PLUS },
{ VK_LCONTROL, NKCODE_CTRL_LEFT },
{ VK_RCONTROL, NKCODE_CTRL_RIGHT },
{ VK_LSHIFT, NKCODE_SHIFT_LEFT },
{ VK_RSHIFT, NKCODE_SHIFT_RIGHT },
{ VK_LMENU, NKCODE_ALT_LEFT },
{ VK_RMENU, NKCODE_ALT_RIGHT },
{ VK_BACK, NKCODE_DEL }, // yes! http://stackoverflow.com/questions/4886858/android-edittext-deletebackspace-key-event
{ VK_SPACE, NKCODE_SPACE },
{ VK_ESCAPE, NKCODE_ESCAPE },
{ VK_UP, NKCODE_DPAD_UP },
{ VK_INSERT, NKCODE_INSERT },
{ VK_HOME, NKCODE_MOVE_HOME },
{ VK_PRIOR, NKCODE_PAGE_UP },
{ VK_NEXT, NKCODE_PAGE_DOWN },
{ VK_DELETE, NKCODE_FORWARD_DEL },
{ VK_END, NKCODE_MOVE_END },
{ VK_TAB, NKCODE_TAB },
{ VK_DOWN, NKCODE_DPAD_DOWN },
{ VK_LEFT, NKCODE_DPAD_LEFT },
{ VK_RIGHT, NKCODE_DPAD_RIGHT },
{ VK_CAPITAL, NKCODE_CAPS_LOCK },
{ VK_CLEAR, NKCODE_CLEAR },
{ VK_SNAPSHOT, NKCODE_SYSRQ },
{ VK_SCROLL, NKCODE_SCROLL_LOCK },
{ VK_OEM_1, NKCODE_SEMICOLON },
{ VK_OEM_2, NKCODE_SLASH },
{ VK_OEM_3, NKCODE_GRAVE },
{ VK_OEM_4, NKCODE_LEFT_BRACKET },
{ VK_OEM_5, NKCODE_BACKSLASH },
{ VK_OEM_6, NKCODE_RIGHT_BRACKET },
{ VK_OEM_7, NKCODE_APOSTROPHE },
{ VK_RETURN, NKCODE_ENTER },
{ VK_APPS, NKCODE_MENU }, // Context menu key, let's call this "menu".
{ VK_PAUSE, NKCODE_BREAK },
{ VK_F1, NKCODE_F1 },
{ VK_F2, NKCODE_F2 },
{ VK_F3, NKCODE_F3 },
{ VK_F4, NKCODE_F4 },
{ VK_F5, NKCODE_F5 },
{ VK_F6, NKCODE_F6 },
{ VK_F7, NKCODE_F7 },
{ VK_F8, NKCODE_F8 },
{ VK_F9, NKCODE_F9 },
{ VK_F10, NKCODE_F10 },
{ VK_F11, NKCODE_F11 },
{ VK_F12, NKCODE_F12 },
{ VK_OEM_102, NKCODE_EXT_PIPE },
{ VK_LBUTTON, NKCODE_EXT_MOUSEBUTTON_1 },
{ VK_RBUTTON, NKCODE_EXT_MOUSEBUTTON_2 },
{ VK_MBUTTON, NKCODE_EXT_MOUSEBUTTON_3 },
{ VK_XBUTTON1, NKCODE_EXT_MOUSEBUTTON_4 },
{ VK_XBUTTON2, NKCODE_EXT_MOUSEBUTTON_5 },
};
void Init() {
RAWINPUTDEVICE dev[3];
memset(dev, 0, sizeof(dev));

View file

@ -66,7 +66,6 @@
#include "Windows/DinputDevice.h"
#endif
#include "Windows/XinputDevice.h"
#include "Windows/KeyboardDevice.h"
#include "Windows/main.h"
#include "UI/OnScreenDisplay.h"
@ -89,17 +88,14 @@ WindowsHost::WindowsHost(HINSTANCE hInstance, HWND mainWindow, HWND displayWindo
g_mouseDeltaY = 0;
//add first XInput device to respond
input.push_back(std::shared_ptr<InputDevice>(new XinputDevice()));
input.push_back(std::make_unique<XinputDevice>());
#ifndef _M_ARM
//find all connected DInput devices of class GamePad
numDinputDevices_ = DinputDevice::getNumPads();
for (size_t i = 0; i < numDinputDevices_; i++) {
input.push_back(std::shared_ptr<InputDevice>(new DinputDevice(static_cast<int>(i))));
input.push_back(std::make_unique<DinputDevice>(static_cast<int>(i)));
}
#endif
keyboard = std::shared_ptr<KeyboardDevice>(new KeyboardDevice());
input.push_back(keyboard);
SetConsolePosition();
}
@ -221,7 +217,7 @@ void WindowsHost::PollControllers() {
if (newCount > numDinputDevices_) {
INFO_LOG(SYSTEM, "New controller device detected");
for (size_t i = numDinputDevices_; i < newCount; i++) {
input.push_back(std::shared_ptr<InputDevice>(new DinputDevice(static_cast<int>(i))));
input.push_back(std::make_unique<DinputDevice>(static_cast<int>(i)));
}
numDinputDevices_ = newCount;
}
@ -229,12 +225,9 @@ void WindowsHost::PollControllers() {
checkCounter = 0;
}
bool doPad = true;
for (const auto &device : input) {
if (!doPad && device->IsPad())
continue;
if (device->UpdateState() == InputDevice::UPDATESTATE_SKIP_PAD)
doPad = false;
break;
}
// Disabled by default, needs a workaround to map to psp keys.

View file

@ -17,7 +17,6 @@
#include "../Core/Host.h"
#include "InputDevice.h"
#include "KeyboardDevice.h"
#include "Common/CommonWindows.h"
#include <list>
#include <memory>
@ -63,8 +62,6 @@ public:
void NotifyUserMessage(const std::string &message, float duration = 1.0f, u32 color = 0x00FFFFFF, const char *id = nullptr) override;
void SendUIMessage(const std::string &message, const std::string &value) override;
std::shared_ptr<KeyboardDevice> keyboard;
GraphicsContext *GetGraphicsContext() { return gfx_; }
private:
@ -77,5 +74,5 @@ private:
GraphicsContext *gfx_ = nullptr;
size_t numDinputDevices_ = 0;
std::list<std::shared_ptr<InputDevice>> input;
std::list<std::unique_ptr<InputDevice>> input;
};

View file

@ -4,12 +4,11 @@
#include "Xinput.h"
class XinputDevice : public InputDevice {
class XinputDevice final : public InputDevice {
public:
XinputDevice();
~XinputDevice();
virtual int UpdateState();
virtual bool IsPad() { return true; }
virtual int UpdateState() override;
private:
void UpdatePad(int pad, const XINPUT_STATE &state);