public override bool OnKeyDown(KeyboardKeyEventArgs e) { switch (e.Key) { case Key.Right: if (e.Control) { var nextBookmark = project.MainBeatmap.Bookmarks.FirstOrDefault(bookmark => bookmark > Math.Round(timeline.Value * 1000) + 50); if (nextBookmark != 0) { timeline.Value = nextBookmark * 0.001f; } } else { timeline.Scroll(e.Shift ? 4 : 1); } return(true); case Key.Left: if (e.Control) { var prevBookmark = project.MainBeatmap.Bookmarks.LastOrDefault(bookmark => bookmark < Math.Round(timeline.Value * 1000) - 500); if (prevBookmark != 0) { timeline.Value = prevBookmark * 0.001f; } } else { timeline.Scroll(e.Shift ? -4 : -1); } return(true); } if (!e.IsRepeat) { switch (e.Key) { case Key.Space: playPauseButton.Click(); return(true); case Key.O: withSavePrompt(() => Manager.ShowOpenProject()); return(true); case Key.S: if (e.Control) { saveProject(); return(true); } break; case Key.C: if (e.Control) { if (e.Shift) { ClipboardHelper.SetText(new TimeSpan(0, 0, 0, 0, (int)(timeSource.Current * 1000)).ToString(Program.Settings.TimeCopyFormat)); } else { ClipboardHelper.SetText(((int)(timeSource.Current * 1000)).ToString()); } return(true); } break; } } return(base.OnKeyDown(e)); }