Skip to content

Commit 8bd4c87

Browse files
committed
fix(Target Device): Combine all xbox devices into a single target
- Combines the xb360, xbox-series, and xbox-elite targets into a single unified target device. Matching on the controller name determines the capabilities, exposed evdev events, and device info. Signed-off-by: Derek J. Clark <derekjohn.clark@gmail.com>
1 parent 731b71e commit 8bd4c87

File tree

4 files changed

+110
-770
lines changed

4 files changed

+110
-770
lines changed

src/input/target/mod.rs

Lines changed: 16 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,13 @@ use thiserror::Error;
1515
use tokio::sync::mpsc::{self, error::TryRecvError};
1616
use unified_gamepad::UnifiedGamepadDevice;
1717

18-
use crate::dbus::interface::{
19-
performance::PerformanceInterface,
20-
target::{gamepad::TargetGamepadInterface, TargetInterface},
21-
DBusInterfaceManager,
18+
use crate::{
19+
dbus::interface::{
20+
performance::PerformanceInterface,
21+
target::{gamepad::TargetGamepadInterface, TargetInterface},
22+
DBusInterfaceManager,
23+
},
24+
input::target::xpad::XBoxController,
2225
};
2326

2427
use super::{
@@ -44,9 +47,6 @@ use self::mouse::MouseDevice;
4447
use self::steam_deck::SteamDeckDevice;
4548
use self::touchpad::TouchpadDevice;
4649
use self::touchscreen::TouchscreenDevice;
47-
use self::xb360::XBox360Controller;
48-
use self::xbox_elite::XboxEliteController;
49-
use self::xbox_series::XboxSeriesController;
5050

5151
pub mod client;
5252
pub mod command;
@@ -61,9 +61,7 @@ pub mod steam_deck_uhid;
6161
pub mod touchpad;
6262
pub mod touchscreen;
6363
pub mod unified_gamepad;
64-
pub mod xb360;
65-
pub mod xbox_elite;
66-
pub mod xbox_series;
64+
pub mod xpad;
6765

6866
/// Possible errors for a target device client
6967
#[derive(Error, Debug)]
@@ -234,7 +232,7 @@ impl TargetDeviceTypeId {
234232
},
235233
TargetDeviceTypeId {
236234
id: "xbox-series",
237-
name: "Microsoft Xbox Series S|X Controller",
235+
name: "Microsoft XBox Series S|X Controller",
238236
device_class: TargetDeviceClass::Gamepad,
239237
},
240238
TargetDeviceTypeId {
@@ -740,9 +738,7 @@ pub enum TargetDevice {
740738
SteamDeckUhid(TargetDriver<SteamDeckUhidDevice>),
741739
Touchpad(TargetDriver<TouchpadDevice>),
742740
Touchscreen(TargetDriver<TouchscreenDevice>),
743-
XBox360(TargetDriver<XBox360Controller>),
744-
XBoxElite(TargetDriver<XboxEliteController>),
745-
XBoxSeries(TargetDriver<XboxSeriesController>),
741+
XBoxController(TargetDriver<XBoxController>),
746742
UnifiedGamepad(TargetDriver<UnifiedGamepadDevice>),
747743
}
748744

@@ -849,20 +845,10 @@ impl TargetDevice {
849845
let driver = TargetDriver::new_with_options(id, device, dbus, options);
850846
Ok(Self::Touchscreen(driver))
851847
}
852-
"xb360" | "gamepad" => {
853-
let device = XBox360Controller::new()?;
854-
let driver = TargetDriver::new(id, device, dbus);
855-
Ok(Self::XBox360(driver))
856-
}
857-
"xbox-elite" => {
858-
let device = XboxEliteController::new()?;
859-
let driver = TargetDriver::new(id, device, dbus);
860-
Ok(Self::XBoxElite(driver))
861-
}
862-
"xbox-series" => {
863-
let device = XboxSeriesController::new()?;
848+
"xb360" | "gamepad" | "xbox-elite" | "xbox-series" => {
849+
let device = XBoxController::new(id.as_str())?;
864850
let driver = TargetDriver::new(id, device, dbus);
865-
Ok(Self::XBoxSeries(driver))
851+
Ok(Self::XBoxController(driver))
866852
}
867853
"unified-gamepad" => {
868854
let device = UnifiedGamepadDevice::new()?;
@@ -897,11 +883,9 @@ impl TargetDevice {
897883
TargetDevice::SteamDeckUhid(_) => vec!["deck-uhid".try_into().unwrap()],
898884
TargetDevice::Touchpad(_) => vec!["touchpad".try_into().unwrap()],
899885
TargetDevice::Touchscreen(_) => vec!["touchscreen".try_into().unwrap()],
900-
TargetDevice::XBox360(_) => {
886+
TargetDevice::XBoxController(_) => {
901887
vec!["xb360".try_into().unwrap(), "gamepad".try_into().unwrap()]
902888
}
903-
TargetDevice::XBoxElite(_) => vec!["xbox-elite".try_into().unwrap()],
904-
TargetDevice::XBoxSeries(_) => vec!["xbox-series".try_into().unwrap()],
905889
TargetDevice::UnifiedGamepad(_) => vec!["unified-gamepad".try_into().unwrap()],
906890
}
907891
}
@@ -920,9 +904,7 @@ impl TargetDevice {
920904
TargetDevice::SteamDeckUhid(device) => Some(device.client()),
921905
TargetDevice::Touchpad(device) => Some(device.client()),
922906
TargetDevice::Touchscreen(device) => Some(device.client()),
923-
TargetDevice::XBox360(device) => Some(device.client()),
924-
TargetDevice::XBoxElite(device) => Some(device.client()),
925-
TargetDevice::XBoxSeries(device) => Some(device.client()),
907+
TargetDevice::XBoxController(device) => Some(device.client()),
926908
TargetDevice::UnifiedGamepad(device) => Some(device.client()),
927909
}
928910
}
@@ -941,9 +923,7 @@ impl TargetDevice {
941923
TargetDevice::SteamDeckUhid(device) => device.run().await,
942924
TargetDevice::Touchpad(device) => device.run().await,
943925
TargetDevice::Touchscreen(device) => device.run().await,
944-
TargetDevice::XBox360(device) => device.run().await,
945-
TargetDevice::XBoxElite(device) => device.run().await,
946-
TargetDevice::XBoxSeries(device) => device.run().await,
926+
TargetDevice::XBoxController(device) => device.run().await,
947927
TargetDevice::UnifiedGamepad(device) => device.run().await,
948928
}
949929
}

0 commit comments

Comments
 (0)