Initial commit: Better-Seewo EN5 plugin v1.0.1
This commit is contained in:
185
Better-EN5/Services/TouchFixService.cs
Normal file
185
Better-EN5/Services/TouchFixService.cs
Normal file
@@ -0,0 +1,185 @@
|
||||
using System;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace BetterEN5.Services
|
||||
{
|
||||
public static class TouchFixService
|
||||
{
|
||||
private static bool _fixApplied = false;
|
||||
|
||||
public static async Task ApplyFixAsync()
|
||||
{
|
||||
if (_fixApplied) return;
|
||||
|
||||
try
|
||||
{
|
||||
await Task.Run(() =>
|
||||
{
|
||||
ForceIWBMode();
|
||||
PatchTouchConfig();
|
||||
SuppressTouchErrors();
|
||||
|
||||
_fixApplied = true;
|
||||
});
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
Debug.WriteLine($"[Better-EN5] TouchFix failed: {ex.Message}");
|
||||
}
|
||||
}
|
||||
|
||||
public static bool IsTouchWorkingCorrectly()
|
||||
{
|
||||
try
|
||||
{
|
||||
return TryDetectIWB();
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
public static async Task<bool> ForceTouchEnableAsync()
|
||||
{
|
||||
return await Task.Run(() =>
|
||||
{
|
||||
try
|
||||
{
|
||||
ForceIWBMode();
|
||||
return true;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
private static bool TryDetectIWB()
|
||||
{
|
||||
try
|
||||
{
|
||||
using var key = Microsoft.Win32.Registry.CurrentUser.OpenSubKey(@"SOFTWARE\Seewo\EasiNote5");
|
||||
if (key != null)
|
||||
{
|
||||
var val = key.GetValue("ForceIWB");
|
||||
if (val != null && val.ToString() == "1")
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
|
||||
try
|
||||
{
|
||||
var localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
|
||||
var configFile = Path.Combine(localAppData, "Seewo", "EasiNote5", "Config", "IWBConfig.json");
|
||||
if (File.Exists(configFile))
|
||||
{
|
||||
var json = File.ReadAllText(configFile);
|
||||
if (json.Contains("\"ForceIWB\": true") || json.Contains("\"ForceIWB\":true"))
|
||||
return true;
|
||||
}
|
||||
}
|
||||
catch { }
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
private static void ForceIWBMode()
|
||||
{
|
||||
try
|
||||
{
|
||||
var localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
|
||||
var configDir = Path.Combine(localAppData, "Seewo", "EasiNote5", "Config");
|
||||
var configFile = Path.Combine(configDir, "IWBConfig.json");
|
||||
|
||||
if (!Directory.Exists(configDir))
|
||||
Directory.CreateDirectory(configDir);
|
||||
|
||||
var config = new
|
||||
{
|
||||
ForceIWB = true,
|
||||
TouchDriverType = "WindowsTouch",
|
||||
SkipTouchCheck = true,
|
||||
EnableMultiTouch = true,
|
||||
LastFixTime = DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss")
|
||||
};
|
||||
|
||||
var json = System.Text.Json.JsonSerializer.Serialize(config, new System.Text.Json.JsonSerializerOptions
|
||||
{
|
||||
WriteIndented = true
|
||||
});
|
||||
|
||||
File.WriteAllText(configFile, json);
|
||||
|
||||
Microsoft.Win32.Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Seewo\EasiNote5", "ForceIWB", 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
Microsoft.Win32.Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Seewo\EasiNote5", "SkipTouchCheck", 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
Microsoft.Win32.Registry.SetValue(@"HKEY_CURRENT_USER\SOFTWARE\Seewo\EasiNote5", "EnableMultiTouch", 1, Microsoft.Win32.RegistryValueKind.DWord);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
private static void PatchTouchConfig()
|
||||
{
|
||||
try
|
||||
{
|
||||
var configDir = Path.Combine(
|
||||
Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),
|
||||
"Seewo", "EasiNote5", "Config");
|
||||
|
||||
var cfgFile = Path.Combine(configDir, "TouchConfig.ini");
|
||||
if (!Directory.Exists(configDir))
|
||||
Directory.CreateDirectory(configDir);
|
||||
|
||||
var lines = new[]
|
||||
{
|
||||
"[Touch]",
|
||||
"Enable=1",
|
||||
"Driver=Auto",
|
||||
"ForceEnable=1",
|
||||
"SuppressErrors=1",
|
||||
"SkipDetection=1",
|
||||
"FallbackToMouse=1",
|
||||
"",
|
||||
"[Calibration]",
|
||||
"Enabled=0",
|
||||
"",
|
||||
"[MultiTouch]",
|
||||
"MaxPoints=10",
|
||||
"EnableGesture=1",
|
||||
};
|
||||
|
||||
File.WriteAllLines(cfgFile, lines);
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
|
||||
private static void SuppressTouchErrors()
|
||||
{
|
||||
try
|
||||
{
|
||||
var localAppData = Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData);
|
||||
var logDir = Path.Combine(localAppData, "Seewo", "EasiNote5", "Logs", "Touch");
|
||||
|
||||
if (Directory.Exists(logDir))
|
||||
{
|
||||
foreach (var logFile in Directory.GetFiles(logDir, "*.log"))
|
||||
{
|
||||
try { File.Delete(logFile); } catch { }
|
||||
}
|
||||
}
|
||||
|
||||
var seewoRegPath = @"HKEY_LOCAL_MACHINE\SOFTWARE\WOW6432Node\Seewo\EasiNote5";
|
||||
try
|
||||
{
|
||||
Microsoft.Win32.Registry.SetValue(seewoRegPath, "SkipTouchCheck", "1");
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
catch { }
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user