mirror of
https://github.com/ayufan/steam-deck-tools.git
synced 2025-12-06 07:12:01 +01:00
This adds a Steam Shortcuts, Desktop Mode, and X360 Emulation - Supports all Steam Shortcuts (including on-screen keyboard, and brightness) - Supports Desktop mode (with a scroll on left pad and left stick), and trackpoint (on right stick) - Supports X360 mode: hold Options for 1s to switch between Desktop and X360 - Holding Steam button enables Desktop like controls and stops passing all inputs to X360
66 lines
1.5 KiB
C#
66 lines
1.5 KiB
C#
using hidapi;
|
|
using PowerControl.External;
|
|
using static CommonHelpers.Log;
|
|
|
|
namespace SteamController.Devices
|
|
{
|
|
public partial class SteamController : IDisposable
|
|
{
|
|
public const ushort SteamVendorID = 0x28DE;
|
|
public const ushort SteamProductID = 0x1205;
|
|
public const int ReadTimeout = 50;
|
|
|
|
private hidapi.HidDevice neptuneDevice;
|
|
|
|
public SteamController()
|
|
{
|
|
InitializeButtons();
|
|
InitializeActions();
|
|
|
|
neptuneDevice = new hidapi.HidDevice(SteamVendorID, SteamProductID, 64);
|
|
neptuneDevice.OpenDevice();
|
|
}
|
|
|
|
public void Dispose()
|
|
{
|
|
}
|
|
|
|
public bool Updated { get; private set; }
|
|
|
|
internal void Reset()
|
|
{
|
|
foreach (var action in AllActions)
|
|
action.Reset();
|
|
}
|
|
|
|
private void BeforeUpdate(byte[] buffer)
|
|
{
|
|
foreach (var action in AllActions)
|
|
action.BeforeUpdate(buffer, this);
|
|
}
|
|
|
|
internal void BeforeUpdate()
|
|
{
|
|
byte[] data = neptuneDevice.Read(ReadTimeout);
|
|
if (data == null)
|
|
{
|
|
Reset();
|
|
Updated = false;
|
|
return;
|
|
}
|
|
|
|
BeforeUpdate(data);
|
|
Updated = true;
|
|
}
|
|
|
|
internal void Update()
|
|
{
|
|
foreach (var action in AllActions)
|
|
action.Update();
|
|
|
|
UpdateLizardButtons();
|
|
UpdateLizardMouse();
|
|
}
|
|
}
|
|
}
|