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