Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- using Nefarius.ViGEm.Client;
- using Nefarius.ViGEm.Client.Targets;
- using Nefarius.ViGEm.Client.Targets.DualShock4;
- using System;
- using System.Collections.ObjectModel;
- using System.Drawing;
- using System.Windows.Forms;
- using System.Windows.Input;
- namespace TestPS4
- {
- public partial class Form1 : Form
- {
- private ViGEmClient client = new ViGEmClient();
- private ObservableCollection<DualShock4Controller> controllers;
- private DualShock4Controller ds4;
- private DualShock4Report report;
- public Form1()
- {
- InitializeComponent();
- }
- private void Form1_Load(object sender, EventArgs e)
- {
- controllers = new ObservableCollection<DualShock4Controller>();
- ds4 = new DualShock4Controller(client);
- ds4.Connect();
- lock (controllers) controllers.Add(ds4);
- report = new DualShock4Report();
- timer1.Enabled = true;
- }
- private void Form1_FormClosed(object sender, FormClosedEventArgs e)
- {
- ds4.Disconnect();
- lock (controllers) controllers.Remove(ds4);
- }
- private void timer1_Tick(object sender, EventArgs e)
- {
- UpdatePS4fromKM();
- }
- private byte XtoP(float v)
- {
- if (v == 0) return 128;
- if (v > 0)
- return (byte)(v * 127 + 128);
- else
- return (byte)(v * 128 + 128);
- }
- private void UpdatePS4fromKM()
- {
- if ((Keyboard.IsKeyDown(Key.NumPad0))) report.SetAxis(DualShock4Axes.RightTrigger, 255);
- if ((Keyboard.IsKeyDown(Key.NumPad1))) report.SetAxis(DualShock4Axes.RightTrigger, 0);
- Point p = new Point();
- if ((Keyboard.IsKeyDown(Key.W))) p.Y = 1;
- if ((Keyboard.IsKeyDown(Key.S))) p.Y = -1;
- if ((Keyboard.IsKeyDown(Key.A))) p.X = -1;
- if ((Keyboard.IsKeyDown(Key.D))) p.X = 1;
- report.LeftThumbX = XtoP(p.X);
- report.LeftThumbY = XtoP(-p.Y);
- if ((Keyboard.IsKeyDown(Key.Space)))
- report.SetButtonState(DualShock4Buttons.Cross, true);
- else
- report.SetButtonState(DualShock4Buttons.Cross, false);
- ds4.SendReport(report);
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement