diff --git a/src/input_common/CMakeLists.txt b/src/input_common/CMakeLists.txt
index 8cdcd315b..d4fa69a77 100644
--- a/src/input_common/CMakeLists.txt
+++ b/src/input_common/CMakeLists.txt
@@ -27,10 +27,6 @@ add_library(input_common STATIC
     input_poller.h
     main.cpp
     main.h
-    motion_from_button.cpp
-    motion_from_button.h
-    motion_input.cpp
-    motion_input.h
 )
 
 if (MSVC)
diff --git a/src/input_common/motion_from_button.cpp b/src/input_common/motion_from_button.cpp
deleted file mode 100644
index 29045a673..000000000
--- a/src/input_common/motion_from_button.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-// Copyright 2020 yuzu Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#include "input_common/motion_from_button.h"
-#include "input_common/motion_input.h"
-
-namespace InputCommon {
-
-class MotionKey final : public Input::MotionDevice {
-public:
-    using Button = std::unique_ptr<Input::ButtonDevice>;
-
-    explicit MotionKey(Button key_) : key(std::move(key_)) {}
-
-    Input::MotionStatus GetStatus() const override {
-
-        if (key->GetStatus()) {
-            return motion.GetRandomMotion(2, 6);
-        }
-        return motion.GetRandomMotion(0, 0);
-    }
-
-private:
-    Button key;
-    InputCommon::MotionInput motion{0.0f, 0.0f, 0.0f};
-};
-
-std::unique_ptr<Input::MotionDevice> MotionFromButton::Create(const Common::ParamPackage& params) {
-    auto key = Input::CreateDevice<Input::ButtonDevice>(params.Serialize());
-    return std::make_unique<MotionKey>(std::move(key));
-}
-
-} // namespace InputCommon
diff --git a/src/input_common/motion_from_button.h b/src/input_common/motion_from_button.h
deleted file mode 100644
index a959046fb..000000000
--- a/src/input_common/motion_from_button.h
+++ /dev/null
@@ -1,25 +0,0 @@
-// Copyright 2020 yuzu Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included.
-
-#pragma once
-
-#include "core/frontend/input.h"
-
-namespace InputCommon {
-
-/**
- * An motion device factory that takes a keyboard button and uses it as a random
- * motion device.
- */
-class MotionFromButton final : public Input::Factory<Input::MotionDevice> {
-public:
-    /**
-     * Creates an motion device from button devices
-     * @param params contains parameters for creating the device:
-     *     - "key": a serialized ParamPackage for creating a button device
-     */
-    std::unique_ptr<Input::MotionDevice> Create(const Common::ParamPackage& params) override;
-};
-
-} // namespace InputCommon
diff --git a/src/input_common/motion_input.cpp b/src/input_common/motion_input.cpp
deleted file mode 100644
index 1c9d561c0..000000000
--- a/src/input_common/motion_input.cpp
+++ /dev/null
@@ -1,307 +0,0 @@
-// Copyright 2020 yuzu Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included
-
-#include <random>
-#include "common/math_util.h"
-#include "input_common/motion_input.h"
-
-namespace InputCommon {
-
-MotionInput::MotionInput(f32 new_kp, f32 new_ki, f32 new_kd) : kp(new_kp), ki(new_ki), kd(new_kd) {}
-
-void MotionInput::SetAcceleration(const Common::Vec3f& acceleration) {
-    accel = acceleration;
-}
-
-void MotionInput::SetGyroscope(const Common::Vec3f& gyroscope) {
-    gyro = gyroscope - gyro_drift;
-
-    // Auto adjust drift to minimize drift
-    if (!IsMoving(0.1f)) {
-        gyro_drift = (gyro_drift * 0.9999f) + (gyroscope * 0.0001f);
-    }
-
-    if (gyro.Length2() < gyro_threshold) {
-        gyro = {};
-    } else {
-        only_accelerometer = false;
-    }
-}
-
-void MotionInput::SetQuaternion(const Common::Quaternion<f32>& quaternion) {
-    quat = quaternion;
-}
-
-void MotionInput::SetGyroDrift(const Common::Vec3f& drift) {
-    gyro_drift = drift;
-}
-
-void MotionInput::SetGyroThreshold(f32 threshold) {
-    gyro_threshold = threshold;
-}
-
-void MotionInput::EnableReset(bool reset) {
-    reset_enabled = reset;
-}
-
-void MotionInput::ResetRotations() {
-    rotations = {};
-}
-
-bool MotionInput::IsMoving(f32 sensitivity) const {
-    return gyro.Length() >= sensitivity || accel.Length() <= 0.9f || accel.Length() >= 1.1f;
-}
-
-bool MotionInput::IsCalibrated(f32 sensitivity) const {
-    return real_error.Length() < sensitivity;
-}
-
-void MotionInput::UpdateRotation(u64 elapsed_time) {
-    const auto sample_period = static_cast<f32>(elapsed_time) / 1000000.0f;
-    if (sample_period > 0.1f) {
-        return;
-    }
-    rotations += gyro * sample_period;
-}
-
-void MotionInput::UpdateOrientation(u64 elapsed_time) {
-    if (!IsCalibrated(0.1f)) {
-        ResetOrientation();
-    }
-    // Short name local variable for readability
-    f32 q1 = quat.w;
-    f32 q2 = quat.xyz[0];
-    f32 q3 = quat.xyz[1];
-    f32 q4 = quat.xyz[2];
-    const auto sample_period = static_cast<f32>(elapsed_time) / 1000000.0f;
-
-    // Ignore invalid elapsed time
-    if (sample_period > 0.1f) {
-        return;
-    }
-
-    const auto normal_accel = accel.Normalized();
-    auto rad_gyro = gyro * Common::PI * 2;
-    const f32 swap = rad_gyro.x;
-    rad_gyro.x = rad_gyro.y;
-    rad_gyro.y = -swap;
-    rad_gyro.z = -rad_gyro.z;
-
-    // Clear gyro values if there is no gyro present
-    if (only_accelerometer) {
-        rad_gyro.x = 0;
-        rad_gyro.y = 0;
-        rad_gyro.z = 0;
-    }
-
-    // Ignore drift correction if acceleration is not reliable
-    if (accel.Length() >= 0.75f && accel.Length() <= 1.25f) {
-        const f32 ax = -normal_accel.x;
-        const f32 ay = normal_accel.y;
-        const f32 az = -normal_accel.z;
-
-        // Estimated direction of gravity
-        const f32 vx = 2.0f * (q2 * q4 - q1 * q3);
-        const f32 vy = 2.0f * (q1 * q2 + q3 * q4);
-        const f32 vz = q1 * q1 - q2 * q2 - q3 * q3 + q4 * q4;
-
-        // Error is cross product between estimated direction and measured direction of gravity
-        const Common::Vec3f new_real_error = {
-            az * vx - ax * vz,
-            ay * vz - az * vy,
-            ax * vy - ay * vx,
-        };
-
-        derivative_error = new_real_error - real_error;
-        real_error = new_real_error;
-
-        // Prevent integral windup
-        if (ki != 0.0f && !IsCalibrated(0.05f)) {
-            integral_error += real_error;
-        } else {
-            integral_error = {};
-        }
-
-        // Apply feedback terms
-        if (!only_accelerometer) {
-            rad_gyro += kp * real_error;
-            rad_gyro += ki * integral_error;
-            rad_gyro += kd * derivative_error;
-        } else {
-            // Give more weight to accelerometer values to compensate for the lack of gyro
-            rad_gyro += 35.0f * kp * real_error;
-            rad_gyro += 10.0f * ki * integral_error;
-            rad_gyro += 10.0f * kd * derivative_error;
-
-            // Emulate gyro values for games that need them
-            gyro.x = -rad_gyro.y;
-            gyro.y = rad_gyro.x;
-            gyro.z = -rad_gyro.z;
-            UpdateRotation(elapsed_time);
-        }
-    }
-
-    const f32 gx = rad_gyro.y;
-    const f32 gy = rad_gyro.x;
-    const f32 gz = rad_gyro.z;
-
-    // Integrate rate of change of quaternion
-    const f32 pa = q2;
-    const f32 pb = q3;
-    const f32 pc = q4;
-    q1 = q1 + (-q2 * gx - q3 * gy - q4 * gz) * (0.5f * sample_period);
-    q2 = pa + (q1 * gx + pb * gz - pc * gy) * (0.5f * sample_period);
-    q3 = pb + (q1 * gy - pa * gz + pc * gx) * (0.5f * sample_period);
-    q4 = pc + (q1 * gz + pa * gy - pb * gx) * (0.5f * sample_period);
-
-    quat.w = q1;
-    quat.xyz[0] = q2;
-    quat.xyz[1] = q3;
-    quat.xyz[2] = q4;
-    quat = quat.Normalized();
-}
-
-std::array<Common::Vec3f, 3> MotionInput::GetOrientation() const {
-    const Common::Quaternion<float> quad{
-        .xyz = {-quat.xyz[1], -quat.xyz[0], -quat.w},
-        .w = -quat.xyz[2],
-    };
-    const std::array<float, 16> matrix4x4 = quad.ToMatrix();
-
-    return {Common::Vec3f(matrix4x4[0], matrix4x4[1], -matrix4x4[2]),
-            Common::Vec3f(matrix4x4[4], matrix4x4[5], -matrix4x4[6]),
-            Common::Vec3f(-matrix4x4[8], -matrix4x4[9], matrix4x4[10])};
-}
-
-Common::Vec3f MotionInput::GetAcceleration() const {
-    return accel;
-}
-
-Common::Vec3f MotionInput::GetGyroscope() const {
-    return gyro;
-}
-
-Common::Quaternion<f32> MotionInput::GetQuaternion() const {
-    return quat;
-}
-
-Common::Vec3f MotionInput::GetRotations() const {
-    return rotations;
-}
-
-Input::MotionStatus MotionInput::GetMotion() const {
-    const Common::Vec3f gyroscope = GetGyroscope();
-    const Common::Vec3f accelerometer = GetAcceleration();
-    const Common::Vec3f rotation = GetRotations();
-    const std::array<Common::Vec3f, 3> orientation = GetOrientation();
-    const Common::Quaternion<f32> quaternion = GetQuaternion();
-    return {accelerometer, gyroscope, rotation, orientation, quaternion};
-}
-
-Input::MotionStatus MotionInput::GetRandomMotion(int accel_magnitude, int gyro_magnitude) const {
-    std::random_device device;
-    std::mt19937 gen(device());
-    std::uniform_int_distribution<s16> distribution(-1000, 1000);
-    const Common::Vec3f gyroscope{
-        static_cast<f32>(distribution(gen)) * 0.001f,
-        static_cast<f32>(distribution(gen)) * 0.001f,
-        static_cast<f32>(distribution(gen)) * 0.001f,
-    };
-    const Common::Vec3f accelerometer{
-        static_cast<f32>(distribution(gen)) * 0.001f,
-        static_cast<f32>(distribution(gen)) * 0.001f,
-        static_cast<f32>(distribution(gen)) * 0.001f,
-    };
-    constexpr Common::Vec3f rotation;
-    constexpr std::array orientation{
-        Common::Vec3f{1.0f, 0.0f, 0.0f},
-        Common::Vec3f{0.0f, 1.0f, 0.0f},
-        Common::Vec3f{0.0f, 0.0f, 1.0f},
-    };
-    constexpr Common::Quaternion<f32> quaternion{
-        {0.0f, 0.0f, 0.0f},
-        1.0f,
-    };
-    return {accelerometer * accel_magnitude, gyroscope * gyro_magnitude, rotation, orientation,
-            quaternion};
-}
-
-void MotionInput::ResetOrientation() {
-    if (!reset_enabled || only_accelerometer) {
-        return;
-    }
-    if (!IsMoving(0.5f) && accel.z <= -0.9f) {
-        ++reset_counter;
-        if (reset_counter > 900) {
-            quat.w = 0;
-            quat.xyz[0] = 0;
-            quat.xyz[1] = 0;
-            quat.xyz[2] = -1;
-            SetOrientationFromAccelerometer();
-            integral_error = {};
-            reset_counter = 0;
-        }
-    } else {
-        reset_counter = 0;
-    }
-}
-
-void MotionInput::SetOrientationFromAccelerometer() {
-    int iterations = 0;
-    const f32 sample_period = 0.015f;
-
-    const auto normal_accel = accel.Normalized();
-
-    while (!IsCalibrated(0.01f) && ++iterations < 100) {
-        // Short name local variable for readability
-        f32 q1 = quat.w;
-        f32 q2 = quat.xyz[0];
-        f32 q3 = quat.xyz[1];
-        f32 q4 = quat.xyz[2];
-
-        Common::Vec3f rad_gyro;
-        const f32 ax = -normal_accel.x;
-        const f32 ay = normal_accel.y;
-        const f32 az = -normal_accel.z;
-
-        // Estimated direction of gravity
-        const f32 vx = 2.0f * (q2 * q4 - q1 * q3);
-        const f32 vy = 2.0f * (q1 * q2 + q3 * q4);
-        const f32 vz = q1 * q1 - q2 * q2 - q3 * q3 + q4 * q4;
-
-        // Error is cross product between estimated direction and measured direction of gravity
-        const Common::Vec3f new_real_error = {
-            az * vx - ax * vz,
-            ay * vz - az * vy,
-            ax * vy - ay * vx,
-        };
-
-        derivative_error = new_real_error - real_error;
-        real_error = new_real_error;
-
-        rad_gyro += 10.0f * kp * real_error;
-        rad_gyro += 5.0f * ki * integral_error;
-        rad_gyro += 10.0f * kd * derivative_error;
-
-        const f32 gx = rad_gyro.y;
-        const f32 gy = rad_gyro.x;
-        const f32 gz = rad_gyro.z;
-
-        // Integrate rate of change of quaternion
-        const f32 pa = q2;
-        const f32 pb = q3;
-        const f32 pc = q4;
-        q1 = q1 + (-q2 * gx - q3 * gy - q4 * gz) * (0.5f * sample_period);
-        q2 = pa + (q1 * gx + pb * gz - pc * gy) * (0.5f * sample_period);
-        q3 = pb + (q1 * gy - pa * gz + pc * gx) * (0.5f * sample_period);
-        q4 = pc + (q1 * gz + pa * gy - pb * gx) * (0.5f * sample_period);
-
-        quat.w = q1;
-        quat.xyz[0] = q2;
-        quat.xyz[1] = q3;
-        quat.xyz[2] = q4;
-        quat = quat.Normalized();
-    }
-}
-} // namespace InputCommon
diff --git a/src/input_common/motion_input.h b/src/input_common/motion_input.h
deleted file mode 100644
index efe74cf19..000000000
--- a/src/input_common/motion_input.h
+++ /dev/null
@@ -1,74 +0,0 @@
-// Copyright 2020 yuzu Emulator Project
-// Licensed under GPLv2 or any later version
-// Refer to the license.txt file included
-
-#pragma once
-
-#include "common/common_types.h"
-#include "common/quaternion.h"
-#include "common/vector_math.h"
-#include "core/frontend/input.h"
-
-namespace InputCommon {
-
-class MotionInput {
-public:
-    explicit MotionInput(f32 new_kp, f32 new_ki, f32 new_kd);
-
-    MotionInput(const MotionInput&) = default;
-    MotionInput& operator=(const MotionInput&) = default;
-
-    MotionInput(MotionInput&&) = default;
-    MotionInput& operator=(MotionInput&&) = default;
-
-    void SetAcceleration(const Common::Vec3f& acceleration);
-    void SetGyroscope(const Common::Vec3f& gyroscope);
-    void SetQuaternion(const Common::Quaternion<f32>& quaternion);
-    void SetGyroDrift(const Common::Vec3f& drift);
-    void SetGyroThreshold(f32 threshold);
-
-    void EnableReset(bool reset);
-    void ResetRotations();
-
-    void UpdateRotation(u64 elapsed_time);
-    void UpdateOrientation(u64 elapsed_time);
-
-    [[nodiscard]] std::array<Common::Vec3f, 3> GetOrientation() const;
-    [[nodiscard]] Common::Vec3f GetAcceleration() const;
-    [[nodiscard]] Common::Vec3f GetGyroscope() const;
-    [[nodiscard]] Common::Vec3f GetRotations() const;
-    [[nodiscard]] Common::Quaternion<f32> GetQuaternion() const;
-    [[nodiscard]] Input::MotionStatus GetMotion() const;
-    [[nodiscard]] Input::MotionStatus GetRandomMotion(int accel_magnitude,
-                                                      int gyro_magnitude) const;
-
-    [[nodiscard]] bool IsMoving(f32 sensitivity) const;
-    [[nodiscard]] bool IsCalibrated(f32 sensitivity) const;
-
-private:
-    void ResetOrientation();
-    void SetOrientationFromAccelerometer();
-
-    // PID constants
-    f32 kp;
-    f32 ki;
-    f32 kd;
-
-    // PID errors
-    Common::Vec3f real_error;
-    Common::Vec3f integral_error;
-    Common::Vec3f derivative_error;
-
-    Common::Quaternion<f32> quat{{0.0f, 0.0f, -1.0f}, 0.0f};
-    Common::Vec3f rotations;
-    Common::Vec3f accel;
-    Common::Vec3f gyro;
-    Common::Vec3f gyro_drift;
-
-    f32 gyro_threshold = 0.0f;
-    u32 reset_counter = 0;
-    bool reset_enabled = true;
-    bool only_accelerometer = true;
-};
-
-} // namespace InputCommon