示例#1
0
 static Screen()
 {
     try
     {
         _screenInfoProvider = (IScreenInfoProvider) new ScreenInfoProviderExtensionPoint().CreateExtension();
     }
     catch (Exception e)
     {
         _screenInfoProvider = null;
         Platform.Log(LogLevel.Debug, e, "A valid IScreenInfoProvider extension must exist.");
     }
 }
示例#2
0
        public EvDevSingleTouchScreen(EvDevDevice device, EvDevTouchScreenDeviceDescription description,
                                      IScreenInfoProvider screenInfo) : base(device)
        {
            if (device.AbsX == null || device.AbsY == null)
            {
                throw new ArgumentException("Device is not a touchscreen");
            }
            _screenInfo = screenInfo;

            _calibration = description.CalibrationMatrix;
            _axisX       = device.AbsX.Value;
            _axisY       = device.AbsY.Value;
        }
示例#3
0
        public void Initialize(IScreenInfoProvider info, Action <RawInputEventArgs> onInput)
        {
            _onInput = onInput;
            _epoll   = epoll_create1(0);
            for (var c = 0; c < _deviceDescriptions.Length; c++)
            {
                var description = _deviceDescriptions[c];
                var dev         = EvDevDevice.Open(description.Path);
                EvDevDeviceHandler handler;
                if (description is EvDevTouchScreenDeviceDescription touch)
                {
                    handler = new EvDevSingleTouchScreen(dev, touch, info)
                    {
                        InputRoot = _inputRoot
                    }
                }
                ;
                else
                {
                    throw new Exception("Unknown device description type " + description.GetType().FullName);
                }

                handler.OnEvent += OnRawEvent;
                _handlers.Add(handler);

                var ev = new epoll_event {
                    events = EPOLLIN, data = { u32 = (uint)c }
                };
                epoll_ctl(_epoll, EPOLL_CTL_ADD, dev.Fd, ref ev);
            }

            new Thread(InputThread)
            {
                IsBackground = true
            }.Start();
        }
示例#4
0
 public void Initialize(IScreenInfoProvider screen, Action <RawInputEventArgs> onInput)
 {
     _screen  = screen;
     _onInput = onInput;
 }