diff --git a/libxenia.vcxproj b/libxenia.vcxproj
index efc72cbe9..b35bf68c2 100644
--- a/libxenia.vcxproj
+++ b/libxenia.vcxproj
@@ -392,7 +392,6 @@
-
diff --git a/libxenia.vcxproj.filters b/libxenia.vcxproj.filters
index 1606185fd..3c13b56b4 100644
--- a/libxenia.vcxproj.filters
+++ b/libxenia.vcxproj.filters
@@ -1125,9 +1125,6 @@
src\xenia\gpu\gl4
-
- src\xenia\hid
-
src\xenia\hid
diff --git a/src/xenia/emulator.cc b/src/xenia/emulator.cc
index 9ecc8c95d..921455742 100644
--- a/src/xenia/emulator.cc
+++ b/src/xenia/emulator.cc
@@ -16,7 +16,7 @@
#include "xenia/base/clock.h"
#include "xenia/base/string.h"
#include "xenia/gpu/graphics_system.h"
-#include "xenia/hid/hid.h"
+#include "xenia/hid/input_system.h"
#include "xenia/kernel/kernel.h"
#include "xenia/kernel/kernel_state.h"
#include "xenia/kernel/modules.h"
@@ -127,7 +127,7 @@ X_STATUS Emulator::Setup() {
}
// Initialize the HID.
- input_system_ = std::move(xe::hid::Create(this));
+ input_system_ = std::move(xe::hid::InputSystem::Create(this));
if (!input_system_) {
return X_STATUS_NOT_IMPLEMENTED;
}
diff --git a/src/xenia/hid/hid.cc b/src/xenia/hid/hid.cc
index c7fcfade8..d9491ea34 100644
--- a/src/xenia/hid/hid.cc
+++ b/src/xenia/hid/hid.cc
@@ -7,57 +7,6 @@
******************************************************************************
*/
-#include "xenia/hid/hid.h"
#include "xenia/hid/hid-private.h"
-#include "xenia/hid/input_driver.h"
-
-using namespace xe;
-using namespace xe::hid;
DEFINE_string(hid, "any", "Input system. Use: [any, nop, winkey, xinput]");
-
-#include "xenia/hid/nop/nop_hid.h"
-#if XE_PLATFORM_WIN32
-#include "xenia/hid/winkey/winkey_hid.h"
-#include "xenia/hid/xinput/xinput_hid.h"
-#endif // WIN32
-
-std::unique_ptr xe::hid::Create(Emulator* emulator) {
- std::unique_ptr input_system =
- std::make_unique(emulator);
-
- if (FLAGS_hid.compare("nop") == 0) {
- input_system->AddDriver(xe::hid::nop::Create(input_system.get()));
-#if XE_PLATFORM_WIN32
- } else if (FLAGS_hid.compare("winkey") == 0) {
- input_system->AddDriver(xe::hid::winkey::Create(input_system.get()));
- } else if (FLAGS_hid.compare("xinput") == 0) {
- input_system->AddDriver(xe::hid::xinput::Create(input_system.get()));
-#endif // WIN32
- } else {
- // Create all available.
- bool any_created = false;
-
-// NOTE: in any mode we create as many as we can, falling back to nop.
-
-#if XE_PLATFORM_WIN32
- auto xinput_driver = xe::hid::xinput::Create(input_system.get());
- if (xinput_driver) {
- input_system->AddDriver(std::move(xinput_driver));
- any_created = true;
- }
- auto winkey_driver = xe::hid::winkey::Create(input_system.get());
- if (winkey_driver) {
- input_system->AddDriver(std::move(winkey_driver));
- any_created = true;
- }
-#endif // WIN32
-
- // Fallback to nop if none created.
- if (!any_created) {
- input_system->AddDriver(xe::hid::nop::Create(input_system.get()));
- }
- }
-
- return input_system;
-}
diff --git a/src/xenia/hid/hid.h b/src/xenia/hid/hid.h
deleted file mode 100644
index 597ad0540..000000000
--- a/src/xenia/hid/hid.h
+++ /dev/null
@@ -1,29 +0,0 @@
-/**
- ******************************************************************************
- * Xenia : Xbox 360 Emulator Research Project *
- ******************************************************************************
- * Copyright 2013 Ben Vanik. All rights reserved. *
- * Released under the BSD license - see LICENSE in the root for more details. *
- ******************************************************************************
- */
-
-#ifndef XENIA_HID_HID_H_
-#define XENIA_HID_HID_H_
-
-#include
-
-#include "xenia/hid/input_system.h"
-
-namespace xe {
-class Emulator;
-} // namespace xe
-
-namespace xe {
-namespace hid {
-
-std::unique_ptr Create(Emulator* emulator);
-
-} // namespace hid
-} // namespace xe
-
-#endif // XENIA_HID_HID_H_
diff --git a/src/xenia/hid/input_system.cc b/src/xenia/hid/input_system.cc
index cf5b945e8..9d0ad33ad 100644
--- a/src/xenia/hid/input_system.cc
+++ b/src/xenia/hid/input_system.cc
@@ -12,11 +12,57 @@
#include "xenia/emulator.h"
#include "xenia/cpu/processor.h"
#include "xenia/hid/input_driver.h"
+#include "xenia/hid/hid-private.h"
#include "xenia/profiling.h"
+#include "xenia/hid/nop/nop_hid.h"
+#if XE_PLATFORM_WIN32
+#include "xenia/hid/winkey/winkey_hid.h"
+#include "xenia/hid/xinput/xinput_hid.h"
+#endif // WIN32
+
namespace xe {
namespace hid {
+std::unique_ptr InputSystem::Create(Emulator* emulator) {
+ auto input_system = std::make_unique(emulator);
+
+ if (FLAGS_hid.compare("nop") == 0) {
+ input_system->AddDriver(xe::hid::nop::Create(input_system.get()));
+#if XE_PLATFORM_WIN32
+ } else if (FLAGS_hid.compare("winkey") == 0) {
+ input_system->AddDriver(xe::hid::winkey::Create(input_system.get()));
+ } else if (FLAGS_hid.compare("xinput") == 0) {
+ input_system->AddDriver(xe::hid::xinput::Create(input_system.get()));
+#endif // WIN32
+ } else {
+ // Create all available.
+ bool any_created = false;
+
+// NOTE: in any mode we create as many as we can, falling back to nop.
+
+#if XE_PLATFORM_WIN32
+ auto xinput_driver = xe::hid::xinput::Create(input_system.get());
+ if (xinput_driver) {
+ input_system->AddDriver(std::move(xinput_driver));
+ any_created = true;
+ }
+ auto winkey_driver = xe::hid::winkey::Create(input_system.get());
+ if (winkey_driver) {
+ input_system->AddDriver(std::move(winkey_driver));
+ any_created = true;
+ }
+#endif // WIN32
+
+ // Fallback to nop if none created.
+ if (!any_created) {
+ input_system->AddDriver(xe::hid::nop::Create(input_system.get()));
+ }
+ }
+
+ return input_system;
+}
+
InputSystem::InputSystem(Emulator* emulator)
: emulator_(emulator), memory_(emulator->memory()) {}
diff --git a/src/xenia/hid/input_system.h b/src/xenia/hid/input_system.h
index 7d1016c1e..9a1bb6cf9 100644
--- a/src/xenia/hid/input_system.h
+++ b/src/xenia/hid/input_system.h
@@ -13,9 +13,14 @@
#include
#include
-#include "xenia/emulator.h"
+#include "xenia/cpu/processor.h"
+#include "xenia/memory.h"
#include "xenia/xbox.h"
+namespace xe {
+class Emulator;
+} // namespace xe
+
namespace xe {
namespace hid {
@@ -26,6 +31,8 @@ class InputSystem {
InputSystem(Emulator* emulator);
~InputSystem();
+ static std::unique_ptr Create(Emulator* emulator);
+
Emulator* emulator() const { return emulator_; }
Memory* memory() const { return memory_; }
cpu::Processor* processor() const { return processor_; }
diff --git a/src/xenia/kernel/xam_input.cc b/src/xenia/kernel/xam_input.cc
index ee0824358..09042728a 100644
--- a/src/xenia/kernel/xam_input.cc
+++ b/src/xenia/kernel/xam_input.cc
@@ -9,7 +9,7 @@
#include "xenia/base/logging.h"
#include "xenia/emulator.h"
-#include "xenia/hid/hid.h"
+#include "xenia/hid/input_system.h"
#include "xenia/kernel/kernel_state.h"
#include "xenia/kernel/util/shim_utils.h"
#include "xenia/kernel/xam_private.h"