Exemple #1
0
        public override bool Poll()
        {
            bool returnStatus = false;

            KeyStateEventData[] eventDataArray;

            lock (_keyEventData)
            {
                eventDataArray = _keyEventData.ToArray();
                _keyEventData.Clear();
            }

            if (eventDataArray.Length == 0)
            {
                return(returnStatus);
            }

            Key[] currentstate = GetKeyState(_keyStateArray, GetPressedKeys(eventDataArray), GetRelasedKeys(eventDataArray));
            Key[] pressedKeys  = GetNewItems(_keyStateArray, currentstate);
            Key[] releasedKeys = GetMissingItems(_keyStateArray, currentstate);


            _keyStateArray = currentstate;

            KeyEventData eventData = new KeyEventData(currentstate, pressedKeys, releasedKeys);

            if (pressedKeys.Length != 0 || releasedKeys.Length != 0 || currentstate.Length != 0)
            {
                KeyboardEvent?.Invoke(new KeyEventArgs(eventData));
                returnStatus = true;
            }

            if (pressedKeys.Length != 0)
            {
                KeyboardKeyPressEvent?.Invoke(new KeyEventArgs(eventData));
            }

            if (releasedKeys.Length != 0)
            {
                KeyboardKeyReleaseEvent?.Invoke(new KeyEventArgs(eventData));
            }

            return(returnStatus);
        }
 public KeyEventArgs(KeyEventData args)
 {
     EventData = args;
 }