Mouse Interface - Soju06/Input GitHub Wiki
๋ง์ฐ์ค ์ธํฐํ์ด์ค
Input.IMouseHook
๋ง์ฐ์ค ํํฌ ์ธํฐํ์ด์ค
-
์์
using Input; using Input.Platforms.Windows; using System.Diagnostics; Debug.WriteLine("Hello, World!"); // ํค๋ณด๋ํ์ปค๋ฅผ ๋ง๋ญ๋๋ค. // ๋ง์ฝ ์ง์ํ์ง ์๋ ํ๋ซํผ์ธ ๊ฒฝ์ฐ NotSupportedException ์์ธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. var hook = Inputs.Use<IKeyboardHook>(); // ๋๋ฒ๊ทธ๋ฅผ ํ์ฑํ ํฉ๋๋ค. // ๋ค์ดํฐ๋ธ ์ค๋ฅ๋ฅผ ๋๋ฒ๊ทธ ์ถ๋ ฅ ์ฐฝ์์ ํ์ธํ ์ ์์ต๋๋ค. hook.Debug = true; // ํค๋ณด๋ ๋ชจ๋ธ์ ๋๋ค. var model = hook.KeyboardModel; // ํค๋ณด๋๊ฐ ๋๋ ธ์๋ ๋ฐ์ํฉ๋๋ค. model.KeyDown += (sender, key, state) => { // Console์ ์ฐ๊ธฐ ์ง์ฐ์ด ๋ฐ์ํ๋ฏ๋ก ์ถ์ฒํ์ง ์์ต๋๋ค. Debug.WriteLine($"KeyDown: {key} {state}"); // ๋ฐํ ๊ฐ์ด false์ด๋ฉด ์ ๋ ฅ์ ๋ฌด์ํฉ๋๋ค. return true; }; // ํค๋ณด๋๊ฐ ๋ผ์ก์๋ ๋ฐ์ํฉ๋๋ค. model.KeyUp += (sender, key, state) => { // Console์ ์ฐ๊ธฐ ์ง์ฐ์ด ๋ฐ์ํ๋ฏ๋ก ์ถ์ฒํ์ง ์์ต๋๋ค. Debug.WriteLine($"KeyDown: {key} {state}"); // ๋ฐํ ๊ฐ์ด false์ด๋ฉด ์ ๋ ฅ์ ๋ฌด์ํฉ๋๋ค. return true; }; // ํํน์ ์์ํฉ๋๋ค. hook.HookStart(); // ํ๋ซํผ์ด ์๋์ฐ์ธ ๊ฒฝ์ฐ ์๋์ฐ ๋ฉ์์ง๋ฅผ ํํํด์ผํฉ๋๋ค. if (Platform.IsWindows) { while (WindowsMessagePump.Pumping()) { Debug.WriteLine("message pump"); } } Console.ReadLine();
์๋ณธ ์์ ๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.
Input.IMouseSimulation
๋ง์ฐ์ค ์๋ฎฌ๋ ์ด์ ์ธํฐํ์ด์ค
-
์์
using Input; using System.Diagnostics; Debug.WriteLine("Hello, World!"); // ๋ง์ฐ์ค ์๋ฎฌ๋ ์ด์ ๋ฅผ ๋ง๋ญ๋๋ค. // ๋ง์ฝ ์ง์ํ์ง ์๋ ํ๋ซํผ์ธ ๊ฒฝ์ฐ NotSupportedException ์์ธ๊ฐ ๋ฐ์ํ ์ ์์ต๋๋ค. var simulation = Inputs.Use<IMouseSimulation>(); // ๋๋ฒ๊ทธ๋ฅผ ํ์ฑํ ํฉ๋๋ค. // ๋ค์ดํฐ๋ธ ์ค๋ฅ๋ฅผ ๋๋ฒ๊ทธ ์ถ๋ ฅ ์ฐฝ์์ ํ์ธํ ์ ์์ต๋๋ค. simulation.Debug = true; // 1.1 Click // ํ์ฌ ๋ง์ฐ์ค ์์น์ ํด๋ฆญํฉ๋๋ค. simulation.Click(); // ํ์ฌ ๋ง์ฐ์ค ์์น์์ x + 10, y + 10 ์์น์ ํด๋ฆญํฉ๋๋ค. simulation.Click(10, 10); // ํ์ฌ ๋ง์ฐ์ค ์์น์ ์ฐํด๋ฆญํฉ๋๋ค. simulation.Click(InputMouseButtons.Right); // ํ์ฌ ๋ง์ฐ์ค ์์น์์ x + 10, y + 10 ์์น์ ํด๋ฆญํฉ๋๋ค. simulation.Click(InputMouseButtons.Right, 10, 10); // ํ๋ฉด ๊ธฐ์ค ์์น์์ x = 100, y = 100 ์์น์ ํด๋ฆญํฉ๋๋ค. simulation.AbsoluteClick(100, 100); // ํ๋ฉด ๊ธฐ์ค ์์น์์ x = 100, y = 100 ์์น์ ์ฐํด๋ฆญํฉ๋๋ค. simulation.AbsoluteClick(InputMouseButtons.Right, 100, 100); // 1.2 Down // ์ผ์ชฝ ๋ง์ฐ์ค๋ฅผ ๋๋ฆ ๋๋ค. simulation.Down(InputMouseButtons.Left); // ํ์ฌ ๋ง์ฐ์ค ์์น์์ x + 10, y + 10 ์์น์์ ์ผ์ชฝ ๋ง์ฐ์ค๋ฅผ ๋๋ฆ ๋๋ค. simulation.Down(InputMouseButtons.Left, 10, 10); // ํ๋ฉด ๊ธฐ์ค ์์น์์ x = 100, y = 100 ์์น์ ๋๋ฆ ๋๋ค. simulation.AbsoluteDown(InputMouseButtons.Left, 100, 100); // 1.3 Up // ์ผ์ชฝ ๋ง์ฐ์ค๋ฅผ ๋๋๋ค. simulation.Up(InputMouseButtons.Left); // ํ์ฌ ๋ง์ฐ์ค ์์น์์ x + 10, y + 10 ์์น์์ ์ผ์ชฝ ๋ง์ฐ์ค๋ฅผ ๋๋๋ค. simulation.Up(InputMouseButtons.Left, 10, 10); // ํ๋ฉด ๊ธฐ์ค ์์น์์ x = 100, y = 100 ์์น์์ ๋๋๋ค. simulation.AbsoluteUp(InputMouseButtons.Left, 100, 100); // 1.4 Move // ํ์ฌ ๋ง์ฐ์ค ์์น์์ x + 10, y + 10 ์์น๋ก ์ด๋ํฉ๋๋ค. simulation.Move(10, 10); // ํ๋ฉด ๊ธฐ์ค ์์น์์ x = 100, y = 100 ์์น๋ก ์ด๋ํฉ๋๋ค. //simulation.AbsoluteMove(100, 100); // 1.5 Scroll // ์คํฌ๋กค์ ๋ง์ฐ์ค ์คํฌ๋กค 1 ๋งํผ ์ฌ๋ฆฝ๋๋ค. simulation.Scroll(1); simulation.ScrollUp(1); // ์คํฌ๋กค์ ๋ง์ฐ์ค ์คํฌ๋กค 1 ๋งํผ ๋ด๋ฆฝ๋๋ค. simulation.Scroll(-1); simulation.ScrollDown(1); // 1.6 Mouse State // ํ์ฌ ๋ง์ฐ์ค์ x, y ์ขํ๋ฅผ ๊ฐ์ ธ์ต๋๋ค. simulation.GetMousePosition(out var x, out var y); // ํ์ฌ ๋ง์ฐ์ค ์ผ์ชฝ ๋ฒํผ์ด ๋๋ ค์๋์ง ๊ฐ์ ธ์ต๋๋ค. simulation.IsMouseDown(InputMouseButtons.Left);
์๋ณธ ์์ ๋ ์ฌ๊ธฐ์์ ํ์ธํ ์ ์์ต๋๋ค.