public void KeyUp(KeyEventArgs keyEventArgs, DateTime worldTime)
        {
            int symbolActionIndex = PasswordAction.GetPreseedKeyIndex(keyEventArgs.KeyCode, keyEventArgs.Shift);

            if (symbolActionIndex != -1)
            {
                SymbolAction symbolAction = PasswordAction.PressedKeys[symbolActionIndex];
                double       relativeTime = PasswordAction.GetRelativeTime(worldTime);
                symbolAction.KeyUpTime = relativeTime;
                PasswordAction.SetPasswordFunction(PasswordFunctionStates.KeyUp, relativeTime);

                for (int i = symbolActionIndex + 1; i < PasswordAction.PressedKeys.Count(); i++)
                {
                    PasswordAction.PressedKeys[i].OverlayEndingTime = relativeTime;
                    //можно сохранять значения клавиш, на которые была наложена текущая обрабатываемая (в цикле) клавиша
                }
                if (symbolActionIndex != 0)
                {
                    symbolAction.OverlayEndingTime = symbolAction.KeyUpTime;
                }
                PasswordAction.RemovePressedKeyByIndex(symbolActionIndex);
            }
            else
            {
                //throw new Exception("Out of index in PressedKeys error");
            }
        }
 public void NextPasswordAction(string password, DateTime startTime)
 {
     if (InputMode == InputMode.Identify || InputMode == InputMode.Verify)
     {
         password = null;
     }
     PasswordAction = new PasswordAction(startTime, Settings.UserId, password);
     PasswordAction.SetPasswordFunction(PasswordFunctionStates.Start, 0);
 }
        public void KeyDown(KeyEventArgs keyEventArgs, DateTime worldTime)
        {
            if (keyEventArgs.KeyCode == Keys.ShiftKey || keyEventArgs.KeyCode == Keys.Control)
            {
                return;
            }
            double       relativeTime = PasswordAction.GetRelativeTime(worldTime);
            SymbolAction symbolAction = new SymbolAction(keyEventArgs.KeyCode, keyEventArgs.Shift, relativeTime);

            PasswordAction.SymbolActions.Add(symbolAction);
            PasswordAction.PressedKeys.Add(symbolAction);
            PasswordAction.SetPasswordFunction(PasswordFunctionStates.KeyDown, relativeTime);
            if (PasswordAction.PressedKeys.Count > 1)
            {
                PasswordAction.OverlaysCount++;
            }
        }