feat: switching slides
This commit is contained in:
parent
0ebb7f6459
commit
5f7bb79e56
4 changed files with 45 additions and 2 deletions
|
@ -29,7 +29,6 @@ public class JoyConRead : GamepadReader {
|
|||
await LogDeviceInfo(joycon);
|
||||
|
||||
joycon.ReportReceived += OnJoyConOnReportReceived;
|
||||
Console.WriteLine($"JoyCon ready for presenting.");
|
||||
|
||||
joycon.StoppedOnError += (_, ex) => {
|
||||
Console.WriteLine();
|
||||
|
@ -39,7 +38,9 @@ public class JoyConRead : GamepadReader {
|
|||
return Task.CompletedTask;
|
||||
};
|
||||
|
||||
Console.ReadKey();
|
||||
Console.WriteLine("JoyCon ready for presenting.");
|
||||
Console.WriteLine("Press Enter to exit program.");
|
||||
while (Console.ReadKey().Key != ConsoleKey.Enter) { }
|
||||
joycon.Stop();
|
||||
|
||||
Console.WriteLine();
|
||||
|
|
|
@ -2,7 +2,9 @@
|
|||
class Program {
|
||||
private static async Task Main() {
|
||||
GamepadReader reader = new JoyConRead();
|
||||
SlideSwitcher switcher = new(reader);
|
||||
await reader.Read();
|
||||
switcher.Dispose();
|
||||
}
|
||||
}
|
||||
}
|
26
SlideSwitcher.cs
Normal file
26
SlideSwitcher.cs
Normal file
|
@ -0,0 +1,26 @@
|
|||
namespace SwitchSlidePresenter;
|
||||
|
||||
public class SlideSwitcher : IDisposable {
|
||||
private readonly GamepadReader _reader;
|
||||
|
||||
public SlideSwitcher(GamepadReader reader) {
|
||||
_reader = reader;
|
||||
_reader.NextSlide += NextSlide;
|
||||
_reader.PrevSlide += PreviousSlide;
|
||||
}
|
||||
|
||||
public void Dispose() {
|
||||
_reader.NextSlide -= NextSlide;
|
||||
_reader.PrevSlide -= PreviousSlide;
|
||||
}
|
||||
|
||||
private void NextSlide() {
|
||||
IntPtr handle = Win32Api.GetForegroundWindow();
|
||||
Win32Api.PostMessage(handle, Win32Api.WM_KEYDOWN, Win32Api.VK_NEXT, 0);
|
||||
}
|
||||
|
||||
private void PreviousSlide() {
|
||||
IntPtr handle = Win32Api.GetForegroundWindow();
|
||||
Win32Api.PostMessage(handle, Win32Api.WM_KEYDOWN, Win32Api.VK_PRIOR, 0);
|
||||
}
|
||||
}
|
14
Win32Api.cs
Normal file
14
Win32Api.cs
Normal file
|
@ -0,0 +1,14 @@
|
|||
using System.Runtime.InteropServices;
|
||||
|
||||
namespace SwitchSlidePresenter;
|
||||
|
||||
public static class Win32Api {
|
||||
public const UInt32 WM_KEYDOWN = 0x0100;
|
||||
public const int VK_NEXT = 0x22;
|
||||
public const int VK_PRIOR = 0x21;
|
||||
|
||||
[DllImport("user32.dll")]
|
||||
public static extern bool PostMessage(IntPtr hWnd, UInt32 Msg, int wParam, int lParam);
|
||||
[DllImport("user32.dll")]
|
||||
public static extern IntPtr GetForegroundWindow();
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue