private void ProcessNewStates(byte[] newStates)
 {
     for (int i = 0; i < numOfKeys; i++)
     {
         if (keyStates[i] != newStates[i])
         {
             KeyStateChanged?.Invoke(this, new KeyEventArgs(i, newStates[i] != 0));
             keyStates[i] = newStates[i];
         }
     }
 }
        public void ProcessKeys()
        {
            var newStates = deckHid.ReadReport();

            for (int i = 0; i < keyStates.Length; i++)
            {
                if (keyStates[i] != newStates[i])
                {
                    var externalKeyId = hardwareInformation.HardwareKeyIdToExtKeyId(i);
                    KeyStateChanged?.Invoke(this, new KeyEventArgs(externalKeyId, newStates[i] != 0));
                    keyStates[i] = newStates[i];
                }
            }
        }
        private void ProcessKeys(byte[] newStates)
        {
            for (var i = 0; i < keyStates.Length; i++)
            {
                var newStatePos = i + HardwareInfo.KeyReportOffset;

                if (keyStates[i] != newStates[newStatePos])
                {
                    var externalKeyId = HardwareInfo.HardwareKeyIdToExtKeyId(i);
                    KeyStateChanged?.Invoke(this, new KeyEventArgs(externalKeyId, newStates[newStatePos] != 0));
                    keyStates[i] = newStates[newStatePos];
                }
            }
        }
 /// <summary>
 /// Virtual KeyStateChanged event handler.
 /// </summary>
 /// <param name="sender">The sender of the original event.</param>
 /// <param name="e">The event arguments.</param>
 protected virtual void OnKeyStateChanged(object sender, KeyEventArgs e)
 {
     KeyStateChanged?.Invoke(this, e);
 }