diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue index 41075df3..32511c5a 100644 --- a/client/components/Reader/Reader.vue +++ b/client/components/Reader/Reader.vue @@ -1102,6 +1102,67 @@ class Reader extends Vue { } } + doAction(opts) { + let result = false; + let {action = '', event = false} = opts; + + if (action == 'loader') { + this.loaderToggle(); + result = true; + } + + if (this.activePage == 'TextPage') { + result = true; + switch (action) { + case 'help': + this.helpToggle(); + break; + case 'settings': + this.settingsToggle(); + break; + case 'undoAction': + this.undoAction(); + break; + case 'redoAction': + this.redoAction(); + break; + case 'fullScreen': + this.fullScreenToggle(); + break; + case 'scrolling': + this.scrollingToggle(); + break; + case 'setPosition': + this.setPositionToggle(); + break; + case 'search': + this.searchToggle(); + break; + case 'copyText': + this.copyTextToggle(); + break; + case 'refresh': + this.refreshBook(); + break; + case 'offlineMode': + this.offlineModeToggle(); + break; + case 'recentBooks': + this.recentBooksToggle(); + break; + default: + result = false; + break; + } + } + + if (result && event) { + event.preventDefault(); + event.stopPropagation(); + } + return result; + } + keyHook(event) { let result = false; if (this.$root.rootRoute() == '/reader') { @@ -1132,63 +1193,7 @@ class Reader extends Vue { if (!handled && event.type == 'keydown') { const action = this.$root.readerActionByKeyEvent(event); - if (action == 'loader') { - this.loaderToggle(); - result = true; - } - - if (this.activePage == 'TextPage') { - result = true; - switch (action) { - case 'help': - this.helpToggle(); - event.preventDefault(); - event.stopPropagation(); - break; - case 'settings': - this.settingsToggle(); - break; - case 'undoAction': - this.undoAction(); - break; - case 'redoAction': - this.redoAction(); - break; - case 'fullScreen': - this.fullScreenToggle(); - break; - case 'scrolling': - this.scrollingToggle(); - break; - case 'setPosition': - this.setPositionToggle(); - break; - case 'search': - this.searchToggle(); - event.preventDefault(); - event.stopPropagation(); - break; - case 'copyText': - this.copyTextToggle(); - event.preventDefault(); - event.stopPropagation(); - break; - case 'refresh': - this.refreshBook(); - break; - case 'offlineMode': - this.offlineModeToggle(); - break; - case 'recentBooks': - this.recentBooksToggle(); - event.preventDefault(); - event.stopPropagation(); - break; - default: - result = false; - break; - } - } + result = this.doAction({action, event}); } } return result; diff --git a/client/store/modules/reader.js b/client/store/modules/reader.js index e1441d0f..ac81658f 100644 --- a/client/store/modules/reader.js +++ b/client/store/modules/reader.js @@ -44,8 +44,8 @@ const hotKeys = [ {name: 'help', codes: ['F1', 'H']}, {name: 'loader', codes: ['Escape']}, {name: 'settings', codes: ['S']}, - {name: 'undoAction', codes: ['Ctrl+Z']}, - {name: 'redoAction', codes: ['Ctrl+X']}, + {name: 'undoAction', codes: ['Ctrl+BracketLeft']}, + {name: 'redoAction', codes: ['Ctrl+BracketRight']}, {name: 'fullScreen', codes: ['Enter', 'Backquote', 'F']}, {name: 'scrolling', codes: ['Z']}, {name: 'setPosition', codes: ['P']},