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; }