feat: add d/u shortcuts for half page navigation, closes #62 (#437)

This commit is contained in:
Huang Xin
2025-02-23 15:56:00 +01:00
committed by GitHub
parent 1d5b189185
commit 4c7b7881c8
3 changed files with 25 additions and 3 deletions
@@ -61,6 +61,22 @@ const useBookShortcuts = ({ sideBarBookKey, bookKeys }: UseBookShortcutsProps) =
getView(sideBarBookKey)?.history.back();
};
const goHalfPageDown = () => {
const view = getView(sideBarBookKey);
const viewSettings = getViewSettings(sideBarBookKey ?? '');
if (view && viewSettings && viewSettings.scrolled) {
view.next(view.renderer.size / 2);
}
};
const goHalfPageUp = () => {
const view = getView(sideBarBookKey);
const viewSettings = getViewSettings(sideBarBookKey ?? '');
if (view && viewSettings && viewSettings.scrolled) {
view.prev(view.renderer.size / 2);
}
};
const goForward = () => {
getView(sideBarBookKey)?.history.forward();
};
@@ -123,6 +139,8 @@ const useBookShortcuts = ({ sideBarBookKey, bookKeys }: UseBookShortcutsProps) =
onGoRight: goRight,
onGoPrev: goPrev,
onGoNext: goNext,
onGoHalfPageDown: goHalfPageDown,
onGoHalfPageUp: goHalfPageUp,
onGoBack: goBack,
onGoForward: goForward,
onZoomIn: zoomIn,
+5 -1
View File
@@ -11,6 +11,8 @@ export interface ShortcutConfig {
onGoRight: string[];
onGoNext: string[];
onGoPrev: string[];
onGoHalfPageDown: string[];
onGoHalfPageUp: string[];
onGoBack: string[];
onGoForward: string[];
onZoomIn: string[];
@@ -33,13 +35,15 @@ const DEFAULT_SHORTCUTS: ShortcutConfig = {
onGoRight: ['ArrowRight', 'PageDown', 'l', ' '],
onGoNext: ['ArrowDown', 'j'],
onGoPrev: ['ArrowUp', 'k'],
onGoHalfPageDown: ['shift+ArrowDown', 'd'],
onGoHalfPageUp: ['shift+ArrowUp', 'u'],
onGoBack: ['shift+ArrowLeft', 'shift+h'],
onGoForward: ['shift+ArrowRight', 'shift+l'],
onZoomIn: ['ctrl+=', 'cmd+=', 'shift+='],
onZoomOut: ['ctrl+-', 'cmd+-', 'shift+-'],
onResetZoom: ['ctrl+0', 'cmd+0'],
onSaveNote: ['ctrl+Enter'],
onCloseNote: ['Escape']
onCloseNote: ['Escape'],
};
// Load shortcuts from localStorage or fallback to defaults
+2 -2
View File
@@ -36,8 +36,8 @@ export interface FoliateView extends HTMLElement {
};
renderer: {
scrolled?: boolean;
size: number;
viewSize: number;
size: number; // current page height
viewSize: number; // whole document view height
start: number;
end: number;
setAttribute: (name: string, value: string | number) => void;