diff --git a/src/renderer/components/layout/AppShell.tsx b/src/renderer/components/layout/AppShell.tsx index 629c71a..5c13b2f 100644 --- a/src/renderer/components/layout/AppShell.tsx +++ b/src/renderer/components/layout/AppShell.tsx @@ -8,8 +8,10 @@ import { PreviewPane } from '@/components/preview/PreviewPane'; import { Sidebar } from '@/components/sidebar/Sidebar'; import { useAppStore } from '@/stores/app-store'; import { ResizablePanelGroup, ResizablePanel, ResizableHandle } from '@/components/ui/resizable'; +import { useFileShortcuts } from '@/hooks/use-file-shortcuts'; export function AppShell() { + useFileShortcuts(); const { sidebarVisible, previewVisible, paneSizes, setPaneSizes } = useAppStore(); return ( diff --git a/src/renderer/hooks/use-file-shortcuts.ts b/src/renderer/hooks/use-file-shortcuts.ts new file mode 100644 index 0000000..f9cdbc2 --- /dev/null +++ b/src/renderer/hooks/use-file-shortcuts.ts @@ -0,0 +1,72 @@ +import { useEffect } from 'react'; +import { useFileStore } from '@/stores/file-store'; + +/** + * Global keyboard shortcuts for file operations. + * + * - Cmd/Ctrl+O: open file + * - Cmd/Ctrl+Shift+O: open folder + * - Cmd/Ctrl+S: save active buffer + * - Cmd/Ctrl+W: close active tab + * - Cmd/Ctrl+Tab / Cmd/Ctrl+Shift+Tab: next/previous tab (wraps) + * + * Suppressed when an ,