diff --git a/src/app.rs b/src/app.rs index ba9b881..cd2d845 100644 --- a/src/app.rs +++ b/src/app.rs @@ -1183,6 +1183,7 @@ impl App { AppCommand::PageRight => self.page.right(), AppCommand::PageUp => self.page.up(), AppCommand::PageDown => self.page.down(), + AppCommand::GoToPage(page) => self.page = page, // Help navigation AppCommand::HelpToggleFocus => help_nav::toggle_focus(&mut self.ui), diff --git a/src/commands.rs b/src/commands.rs index 74e18a5..3955214 100644 --- a/src/commands.rs +++ b/src/commands.rs @@ -1,6 +1,7 @@ use std::path::PathBuf; use crate::model::{LaunchQuantization, PatternSpeed, SyncMode}; +use crate::page::Page; use crate::state::{ColorScheme, DeviceKind, Modal, PatternField, SettingKind}; pub enum AppCommand { @@ -142,6 +143,7 @@ pub enum AppCommand { PageRight, PageUp, PageDown, + GoToPage(Page), // Help navigation HelpToggleFocus, diff --git a/src/input/mod.rs b/src/input/mod.rs index c7e2124..1531d38 100644 --- a/src/input/mod.rs +++ b/src/input/mod.rs @@ -117,6 +117,20 @@ fn handle_normal_input(ctx: &mut InputContext, key: KeyEvent) -> InputResult { } } + if let Some(page) = match key.code { + KeyCode::F(1) => Some(Page::Dict), + KeyCode::F(2) => Some(Page::Patterns), + KeyCode::F(3) => Some(Page::Options), + KeyCode::F(4) => Some(Page::Help), + KeyCode::F(5) => Some(Page::Main), + KeyCode::F(6) => Some(Page::Engine), + _ => None, + } { + ctx.app.ui.minimap_until = Some(Instant::now() + Duration::from_millis(250)); + ctx.dispatch(AppCommand::GoToPage(page)); + return InputResult::Continue; + } + match ctx.app.page { Page::Main => main_page::handle_main_page(ctx, key, ctrl), Page::Patterns => patterns_page::handle_patterns_page(ctx, key), diff --git a/src/views/keybindings.rs b/src/views/keybindings.rs index b719b18..3bde131 100644 --- a/src/views/keybindings.rs +++ b/src/views/keybindings.rs @@ -1,12 +1,12 @@ use crate::page::Page; pub fn bindings_for(page: Page) -> Vec<(&'static str, &'static str, &'static str)> { - let mut bindings = Vec::new(); - - // Global bindings - bindings.push(("Ctrl+←→↑↓", "Navigate", "Switch between views")); - bindings.push(("q", "Quit", "Quit application")); - bindings.push(("?", "Keybindings", "Show this help")); + let mut bindings = vec![ + ("F1–F6", "Go to view", "Dict/Patterns/Options/Help/Sequencer/Engine"), + ("Ctrl+←→↑↓", "Navigate", "Switch between adjacent views"), + ("q", "Quit", "Quit application"), + ("?", "Keybindings", "Show this help"), + ]; // Page-specific bindings match page {