From 0270a453b8c252cadd88768ba8931f3e42aa442b Mon Sep 17 00:00:00 2001 From: Serge <5920850+seerge@users.noreply.github.com> Date: Mon, 15 Jan 2024 09:06:08 +0100 Subject: [PATCH] Input listener fix https://github.com/seerge/g-helper/issues/1924 --- app/Input/KeyboardListener.cs | 52 ++++++++++++++++------------------- 1 file changed, 24 insertions(+), 28 deletions(-) diff --git a/app/Input/KeyboardListener.cs b/app/Input/KeyboardListener.cs index b7b1468a..aec31600 100644 --- a/app/Input/KeyboardListener.cs +++ b/app/Input/KeyboardListener.cs @@ -12,7 +12,7 @@ namespace GHelper.Input public KeyboardListener(Action KeyHandler) { _handler = KeyHandler; - Listen(); + var task = Task.Run(Listen); } private void Listen () { @@ -23,10 +23,10 @@ namespace GHelper.Input int count = 0; - while (input == null && count++ < 60) + while (input == null && count++ < 5) { Aura.Init(); - Thread.Sleep(1000); + Thread.Sleep(2000); input = AsusHid.FindHidStream(AsusHid.INPUT_ID); } @@ -38,39 +38,35 @@ namespace GHelper.Input Logger.WriteLine($"Input: {input.Device.DevicePath}"); - var task = Task.Run(() => + try { - try + while (!cancellationTokenSource.Token.IsCancellationRequested) { - while (!cancellationTokenSource.Token.IsCancellationRequested) + + // Emergency break + if (input == null || !input.CanRead) { - - // Emergency break - if (input == null || !input.CanRead) - { - Logger.WriteLine("Listener terminated"); - break; - } - - input.ReadTimeout = int.MaxValue; - - var data = input.Read(); - if (data.Length > 1 && data[0] == AsusHid.INPUT_ID && data[1] > 0 && data[1] != 236) - { - Logger.WriteLine($"Key: {data[1]}"); - _handler(data[1]); - } + Logger.WriteLine("Listener terminated"); + break; } - Logger.WriteLine("Listener stopped"); + input.ReadTimeout = int.MaxValue; + var data = input.Read(); + if (data.Length > 1 && data[0] == AsusHid.INPUT_ID && data[1] > 0 && data[1] != 236) + { + Logger.WriteLine($"Key: {data[1]}"); + _handler(data[1]); + } } - catch (Exception ex) - { - Logger.WriteLine(ex.ToString()); - } - }); + Logger.WriteLine("Listener stopped"); + + } + catch (Exception ex) + { + Logger.WriteLine(ex.ToString()); + } }