Loading .idea/.idea.SwitchSlidePresenter/.idea/workspace.xml +4 −0 Original line number Diff line number Diff line Loading @@ -37,11 +37,15 @@ <setting file="file://$PROJECT_DIR$/SlidePresenter/Program.cs" root0="FORCE_HIGHLIGHTING" /> </component> <component name="MetaFilesCheckinStateConfiguration" checkMetaFiles="true" /> <component name="ProblemsViewState"> <option name="selectedTabId" value="Toolset" /> </component> <component name="ProjectColorInfo">{ "associatedIndex": 6 }</component> <component name="ProjectId" id="2htCW7BWCLo4IJC4dn1HIEGkg1I" /> <component name="ProjectLevelVcsManager" settingsEditedManually="true"> <OptionsSetting value="false" id="Update" /> <ConfirmationsSetting value="2" id="Add" /> </component> <component name="ProjectViewState"> Loading SlidePresenter/InputSender/IInputSender.cs 0 → 100644 +6 −0 Original line number Diff line number Diff line namespace SwitchSlidePresenter.InputSender; public interface IInputSender { void NextSlide(); void PreviousSlide(); } No newline at end of file SlidePresenter/InputSender/WindowsInputSender.cs 0 → 100644 +47 −0 Original line number Diff line number Diff line using System.Runtime.InteropServices; using Win32Api; namespace SwitchSlidePresenter.InputSender; public class WindowsInputSender : IInputSender { private const uint INPUT_KEYBOARD = 1; private const ushort VK_NEXT = 0x22; private const ushort VK_PRIOR = 0x21; private const uint KEYEVENTF_KEYDOWN = 0x0000; private const uint KEYEVENTF_KEYUP = 0x0002; public void NextSlide() => SimulateKeyPress(VK_NEXT); public void PreviousSlide() => SimulateKeyPress(VK_PRIOR); private static void SimulateKeyPress(ushort keyCode) { Input[] inputs = new Input[2]; inputs[0] = new Input { type = INPUT_KEYBOARD, u = new InputUnion { ki = new KeyboardInput { wVk = keyCode, wScan = 0, dwFlags = KEYEVENTF_KEYDOWN, time = 0, dwExtraInfo = IntPtr.Zero } } }; inputs[1] = new Input { type = INPUT_KEYBOARD, u = new InputUnion { ki = new KeyboardInput { wVk = keyCode, wScan = 0, dwFlags = KEYEVENTF_KEYUP, time = 0, dwExtraInfo = IntPtr.Zero } } }; Win32Api.Win32Api.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(Input))); } } No newline at end of file SlidePresenter/SlideSwitcher.cs +4 −47 Original line number Diff line number Diff line using System.Runtime.InteropServices; using Win32Api; using SwitchSlidePresenter.InputSender; namespace SwitchSlidePresenter; public class SlideSwitcher : IDisposable { private readonly IGamepadReader? _reader; private const uint INPUT_KEYBOARD = 1; private const ushort VK_NEXT = 0x22; private const ushort VK_PRIOR = 0x21; private const uint KEYEVENTF_KEYDOWN = 0x0000; private const uint KEYEVENTF_KEYUP = 0x0002; private readonly IInputSender _inputSender = new WindowsInputSender(); public SlideSwitcher(IGamepadReader? reader) { _reader = reader; Loading @@ -23,43 +17,6 @@ public class SlideSwitcher : IDisposable { _reader.PrevSlide -= PreviousSlide; } private static void NextSlide() { SimulateKeyPress(VK_NEXT); } private static void PreviousSlide() { SimulateKeyPress(VK_PRIOR); } private static void SimulateKeyPress(ushort keyCode) { Input[] inputs = new Input[2]; inputs[0] = new Input { type = INPUT_KEYBOARD, u = new InputUnion { ki = new KeyboardInput { wVk = keyCode, wScan = 0, dwFlags = KEYEVENTF_KEYDOWN, time = 0, dwExtraInfo = IntPtr.Zero } } }; inputs[1] = new Input { type = INPUT_KEYBOARD, u = new InputUnion { ki = new KeyboardInput { wVk = keyCode, wScan = 0, dwFlags = KEYEVENTF_KEYUP, time = 0, dwExtraInfo = IntPtr.Zero } } }; Win32Api.Win32Api.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(Input))); } private void NextSlide() => _inputSender.NextSlide(); private void PreviousSlide() => _inputSender.PreviousSlide(); } No newline at end of file Loading
.idea/.idea.SwitchSlidePresenter/.idea/workspace.xml +4 −0 Original line number Diff line number Diff line Loading @@ -37,11 +37,15 @@ <setting file="file://$PROJECT_DIR$/SlidePresenter/Program.cs" root0="FORCE_HIGHLIGHTING" /> </component> <component name="MetaFilesCheckinStateConfiguration" checkMetaFiles="true" /> <component name="ProblemsViewState"> <option name="selectedTabId" value="Toolset" /> </component> <component name="ProjectColorInfo">{ "associatedIndex": 6 }</component> <component name="ProjectId" id="2htCW7BWCLo4IJC4dn1HIEGkg1I" /> <component name="ProjectLevelVcsManager" settingsEditedManually="true"> <OptionsSetting value="false" id="Update" /> <ConfirmationsSetting value="2" id="Add" /> </component> <component name="ProjectViewState"> Loading
SlidePresenter/InputSender/IInputSender.cs 0 → 100644 +6 −0 Original line number Diff line number Diff line namespace SwitchSlidePresenter.InputSender; public interface IInputSender { void NextSlide(); void PreviousSlide(); } No newline at end of file
SlidePresenter/InputSender/WindowsInputSender.cs 0 → 100644 +47 −0 Original line number Diff line number Diff line using System.Runtime.InteropServices; using Win32Api; namespace SwitchSlidePresenter.InputSender; public class WindowsInputSender : IInputSender { private const uint INPUT_KEYBOARD = 1; private const ushort VK_NEXT = 0x22; private const ushort VK_PRIOR = 0x21; private const uint KEYEVENTF_KEYDOWN = 0x0000; private const uint KEYEVENTF_KEYUP = 0x0002; public void NextSlide() => SimulateKeyPress(VK_NEXT); public void PreviousSlide() => SimulateKeyPress(VK_PRIOR); private static void SimulateKeyPress(ushort keyCode) { Input[] inputs = new Input[2]; inputs[0] = new Input { type = INPUT_KEYBOARD, u = new InputUnion { ki = new KeyboardInput { wVk = keyCode, wScan = 0, dwFlags = KEYEVENTF_KEYDOWN, time = 0, dwExtraInfo = IntPtr.Zero } } }; inputs[1] = new Input { type = INPUT_KEYBOARD, u = new InputUnion { ki = new KeyboardInput { wVk = keyCode, wScan = 0, dwFlags = KEYEVENTF_KEYUP, time = 0, dwExtraInfo = IntPtr.Zero } } }; Win32Api.Win32Api.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(Input))); } } No newline at end of file
SlidePresenter/SlideSwitcher.cs +4 −47 Original line number Diff line number Diff line using System.Runtime.InteropServices; using Win32Api; using SwitchSlidePresenter.InputSender; namespace SwitchSlidePresenter; public class SlideSwitcher : IDisposable { private readonly IGamepadReader? _reader; private const uint INPUT_KEYBOARD = 1; private const ushort VK_NEXT = 0x22; private const ushort VK_PRIOR = 0x21; private const uint KEYEVENTF_KEYDOWN = 0x0000; private const uint KEYEVENTF_KEYUP = 0x0002; private readonly IInputSender _inputSender = new WindowsInputSender(); public SlideSwitcher(IGamepadReader? reader) { _reader = reader; Loading @@ -23,43 +17,6 @@ public class SlideSwitcher : IDisposable { _reader.PrevSlide -= PreviousSlide; } private static void NextSlide() { SimulateKeyPress(VK_NEXT); } private static void PreviousSlide() { SimulateKeyPress(VK_PRIOR); } private static void SimulateKeyPress(ushort keyCode) { Input[] inputs = new Input[2]; inputs[0] = new Input { type = INPUT_KEYBOARD, u = new InputUnion { ki = new KeyboardInput { wVk = keyCode, wScan = 0, dwFlags = KEYEVENTF_KEYDOWN, time = 0, dwExtraInfo = IntPtr.Zero } } }; inputs[1] = new Input { type = INPUT_KEYBOARD, u = new InputUnion { ki = new KeyboardInput { wVk = keyCode, wScan = 0, dwFlags = KEYEVENTF_KEYUP, time = 0, dwExtraInfo = IntPtr.Zero } } }; Win32Api.Win32Api.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(typeof(Input))); } private void NextSlide() => _inputSender.NextSlide(); private void PreviousSlide() => _inputSender.PreviousSlide(); } No newline at end of file