private void MainWindow_KeyDown(object sender, KeyEventArgs e) { void Handled() { e.Handled = true; e.SuppressKeyPress = true; Invalidate(); } void SetCol(int i) { SpriteEditor.SetPixelAtCursor(i); ColorPicker.SelectedColor = i; e.Handled = true; e.SuppressKeyPress = true; Invalidate(); } switch (e.KeyCode) { case Keys.Up: SpriteEditor.MoveCursor(0, -1); Handled(); break; case Keys.Down: SpriteEditor.MoveCursor(0, 1); Handled(); break; case Keys.Left: SpriteEditor.MoveCursor(CurrentSprite.Multicolor ? -2 : -1, 0); Handled(); break; case Keys.Right: SpriteEditor.MoveCursor(CurrentSprite.Multicolor ? 2 : 1, 0); Handled(); break; case Keys.Enter: SpriteEditor.MoveCursor(0, 1); SpriteEditor.SetCursorX(0); Handled(); break; case Keys.Home: SpriteEditor.SetCursorX(0); Handled(); break; case Keys.End: SpriteEditor.SetCursorX(CurrentSprite.Multicolor ? 22 : 23); Handled(); break; case Keys.PageUp: SpriteEditor.SetCursorY(0); Handled(); break; case Keys.PageDown: SpriteEditor.SetCursorY(20); Handled(); break; case Keys.D1: switch (Configuration.InputMethod) { case InputMethod.KeyboardInputMethod: PushUndoState(); SetCol(0); break; case InputMethod.MouseInputMethod: ColorPicker.SelectedColor = 0; Invalidate(); break; } break; case Keys.D2: switch (Configuration.InputMethod) { case InputMethod.KeyboardInputMethod: PushUndoState(); SetCol(1); break; case InputMethod.MouseInputMethod: ColorPicker.SelectedColor = 1; Invalidate(); break; } break; case Keys.D3: if (!CurrentSprite.Multicolor) { return; } switch (Configuration.InputMethod) { case InputMethod.KeyboardInputMethod: PushUndoState(); SetCol(2); break; case InputMethod.MouseInputMethod: ColorPicker.SelectedColor = 2; Invalidate(); break; } break; case Keys.D4: if (!CurrentSprite.Multicolor) { return; } switch (Configuration.InputMethod) { case InputMethod.KeyboardInputMethod: PushUndoState(); SetCol(3); break; case InputMethod.MouseInputMethod: ColorPicker.SelectedColor = 3; Invalidate(); break; } break; } }