A cross-platform UI framework for .NET
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 

38 lines
1.1 KiB

using System;
using System.Linq;
namespace Avalonia.LinuxFramebuffer.Input.EvDev
{
public abstract class EvDevDeviceDescription
{
protected internal EvDevDeviceDescription()
{
}
public string Path { get; set; }
internal static EvDevDeviceDescription ParseFromEnv(string env)
{
var formatEx = new ArgumentException(
"Invalid device format, expected `(path):type=(touchscreen):[calibration=m11,m12,m21,m22,m31,m32]");
var items = env.Split(new[] { ':' }, StringSplitOptions.RemoveEmptyEntries);
if (items.Length < 2)
throw formatEx;
var path = items[0];
var dic = items.Skip(1)
.Select(i => i.Split(new[] { '=' }, 2))
.ToDictionary(x => x[0], x => x[1]);
if (!dic.TryGetValue("type", out var type))
throw formatEx;
if (type == "touchscreen")
return EvDevTouchScreenDeviceDescription.ParseFromEnv(path, dic);
throw formatEx;
}
}
}