public KeyboardManager(D3DEngine engine) { _engine = engine; IsRunning = false; KeyBuffer = new CharKey[255]; for (int i = 0; i < KeyBuffer.Length; i++) { KeyBuffer[i] = new CharKey(); } }
private void AddCharacterToDisplay(CharKey Key) { //handle not char keys if (Key.isChar == false) { _showCaret = true; switch (Key.Key) { case Keys.Left: if (_carretPositionInString > 0) { _carretPositionInString--; } break; case Keys.Right: if (_carretPositionInString < _stringBuilder.Length) { _carretPositionInString++; } break; case Keys.Delete: if (_stringBuilder.Length > 0 && (_carretPositionInString < _stringBuilder.Length)) { _stringBuilder.Remove(_carretPositionInString, 1); } break; case Keys.Home: _carretPositionInString = 0; break; case Keys.End: _carretPositionInString = _stringBuilder.Length; break; default: break; } } else { switch (Key.Char) { case (char)Keys.Back: if (_stringBuilder.Length > 0) { _stringBuilder.Remove(_carretPositionInString - 1, 1); _carretPositionInString--; _showCaret = true; } return; default: if (IsMultiline == false && (Key.Char == '\n' || Key.Char == '\r')) { return; } //Pure char character ! if (_carretPositionInString == _stringBuilder.Length) { _stringBuilder.Append(Key.Char); } else { _stringBuilder.Insert(_carretPositionInString, Key.Char); } _carretPositionInString++; break; } } }