protected override void DefaultInputOverride(WndWindowMessage message, ControlCallbackContext context) { // TODO: Capture input on mouse down. // TODO: Only fire click event when mouse was pressed and released inside same button. switch (message.MessageType) { case WndWindowMessageType.MouseUp: context.WindowManager.Focus(this); Click?.Invoke(this, EventArgs.Empty); break; case WndWindowMessageType.MouseEnter: case WndWindowMessageType.MouseMove: case WndWindowMessageType.MouseExit: case WndWindowMessageType.MouseDown: break; case WndWindowMessageType.KeyDown: if (!IsReadOnly) { var character = KeyMap.GetCharacter(message.Key); // Not a printable character if (character == '\0') { switch (message.Key) { case Veldrid.Key.BackSpace: if (Text.Length > 0) { Text = Text.Remove(Text.Length - 1, 1); } break; } } else { if (message.Modifiers.HasFlag(Veldrid.ModifierKeys.Shift)) { Text += char.ToUpperInvariant(character); } else { Text += char.ToLowerInvariant(character); } } } break; default: logger.Info($"Unhandled event: {message.MessageType} {message.Element} {message.MousePosition} {message.Key}"); break; } }