diff --git a/src/background/key-queue.js b/src/background/key-queue.js index 8bd3158..3c1ffbb 100644 --- a/src/background/key-queue.js +++ b/src/background/key-queue.js @@ -7,6 +7,12 @@ const DEFAULT_KEYMAP = [ { keys: [{ code: KeyboardEvent.DOM_VK_O, shift: true }], action: [ actions.CMD_TABS_OPEN, true ]}, { keys: [{ code: KeyboardEvent.DOM_VK_K }], action: [ actions.SCROLL_LINES, -1 ]}, { keys: [{ code: KeyboardEvent.DOM_VK_J }], action: [ actions.SCROLL_LINES, 1 ]}, + { keys: [{ code: KeyboardEvent.DOM_VK_E, ctrl: true }], action: [ actions.SCROLL_LINES, -1 ]}, + { keys: [{ code: KeyboardEvent.DOM_VK_Y, ctrl: true }], action: [ actions.SCROLL_LINES, 1 ]}, + { keys: [{ code: KeyboardEvent.DOM_VK_U, ctrl: true }], action: [ actions.SCROLL_PAGES, -0.5 ]}, + { keys: [{ code: KeyboardEvent.DOM_VK_D, ctrl: true }], action: [ actions.SCROLL_PAGES, 0.5 ]}, + { keys: [{ code: KeyboardEvent.DOM_VK_B, ctrl: true }], action: [ actions.SCROLL_PAGES, -1 ]}, + { keys: [{ code: KeyboardEvent.DOM_VK_F, ctrl: true }], action: [ actions.SCROLL_PAGES, 1 ]}, { keys: [{ code: KeyboardEvent.DOM_VK_G }, { code: KeyboardEvent.DOM_VK_G }], action: [ actions.SCROLL_TOP ]}, { keys: [{ code: KeyboardEvent.DOM_VK_G, shift: true }], action: [ actions.SCROLL_BOTTOM ]}, { keys: [{ code: KeyboardEvent.DOM_VK_D }], action: [ actions.TABS_CLOSE ]}, diff --git a/src/content/index.js b/src/content/index.js index b233e27..feb169f 100644 --- a/src/content/index.js +++ b/src/content/index.js @@ -45,6 +45,9 @@ const invokeEvent = (action) => { case actions.SCROLL_LINES: scrolls.scrollLines(window, action[1]); break; + case actions.SCROLL_PAGES: + scrolls.scrollPages(window, action[1]); + break; case actions.SCROLL_TOP: scrolls.scrollTop(window, action[1]); break; diff --git a/src/content/scrolls.js b/src/content/scrolls.js index ef112a4..540703e 100644 --- a/src/content/scrolls.js +++ b/src/content/scrolls.js @@ -6,6 +6,13 @@ const scrollLines = (page, count) => { page.scrollTo(x, y); }; +const scrollPages = (page, count) => { + let height = page.innerHeight; + let x = page.scrollX; + let y = page.scrollY + height * count; + page.scrollTo(x, y); +}; + const scrollTop = (page) => { let x = page.scrollX; let y = 0; @@ -18,4 +25,4 @@ const scrollBottom = (page) => { page.scrollTo(x, y); }; -export { scrollLines, scrollTop, scrollBottom } +export { scrollLines, scrollPages, scrollTop, scrollBottom } diff --git a/src/shared/actions.js b/src/shared/actions.js index 379a236..b987026 100644 --- a/src/shared/actions.js +++ b/src/shared/actions.js @@ -6,6 +6,7 @@ export const TABS_PREV = 'tabs.prev'; export const TABS_NEXT = 'tabs.next'; export const TABS_RELOAD = 'tabs.reload'; export const SCROLL_LINES = 'scroll.lines'; +export const SCROLL_PAGES = 'scroll.pages'; export const SCROLL_TOP = 'scroll.top'; export const SCROLL_BOTTOM = 'scroll.bottom'; export const FOLLOW_START = 'follow.start'; @@ -30,6 +31,7 @@ const CONTENT_ACTION_SET = new Set([ CMD_OPEN, CMD_TABS_OPEN, SCROLL_LINES, + SCROLL_PAGES, SCROLL_TOP, SCROLL_BOTTOM, FOLLOW_START,