diff --git a/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue b/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue
index 0886b393..b6078c70 100644
--- a/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue
+++ b/client/components/Reader/HelpPage/HotkeysHelpPage/HotkeysHelpPage.vue
@@ -2,26 +2,6 @@
Управление с помощью горячих клавиш:
- - F1, H - открыть справку
- - Escape - показать/скрыть страницу загрузки
- - Tab, Q - показать/скрыть панель управления
- - PageUp, Left, Shift+Space, Backspace - страницу назад
- - PageDown, Right, Space - страницу вперед
- - Home - в начало книги
- - End - в конец книги
- - Up - строчку назад
- - Down - строчку вперёд
- - A, Shift+A - изменить размер шрифта
- - Enter, F, F11, ` (апостроф) - вкл./выкл. полный экран
- - Z - вкл./выкл. плавный скроллинг текста
- - Shift+Down/Shift+Up - увеличить/уменьшить скорость скроллинга
-
- P - установить страницу
- - Ctrl+F - найти в тексте
- - Ctrl+C - скопировать текст со страницы
- - R - принудительно обновить книгу в обход кэша
- - X - открыть недавние
- - O - автономный режим
- - S - открыть окно настроек
diff --git a/client/components/Reader/Reader.vue b/client/components/Reader/Reader.vue
index 53a8c8b8..41075df3 100644
--- a/client/components/Reader/Reader.vue
+++ b/client/components/Reader/Reader.vue
@@ -1160,39 +1160,32 @@ class Reader extends Vue {
case 'scrolling':
this.scrollingToggle();
break;
- default:
- result = false;
- break;
- }
-
- switch (event.code) {
- case 'KeyP':
+ case 'setPosition':
this.setPositionToggle();
break;
- case 'KeyF':
- if (event.ctrlKey) {
- this.searchToggle();
- event.preventDefault();
- event.stopPropagation();
- }
+ case 'search':
+ this.searchToggle();
+ event.preventDefault();
+ event.stopPropagation();
break;
- case 'KeyC':
- if (event.ctrlKey) {
- this.copyTextToggle();
- event.preventDefault();
- event.stopPropagation();
- }
+ case 'copyText':
+ this.copyTextToggle();
+ event.preventDefault();
+ event.stopPropagation();
break;
- case 'KeyR':
+ case 'refresh':
this.refreshBook();
break;
- case 'KeyX':
+ case 'offlineMode':
+ this.offlineModeToggle();
+ break;
+ case 'recentBooks':
this.recentBooksToggle();
event.preventDefault();
event.stopPropagation();
break;
- case 'KeyO':
- this.offlineModeToggle();
+ default:
+ result = false;
break;
}
}
diff --git a/client/components/Reader/SettingsPage/UserHotKeys/UserHotKeys.vue b/client/components/Reader/SettingsPage/UserHotKeys/UserHotKeys.vue
index 9340a343..969f7d06 100644
--- a/client/components/Reader/SettingsPage/UserHotKeys/UserHotKeys.vue
+++ b/client/components/Reader/SettingsPage/UserHotKeys/UserHotKeys.vue
@@ -146,7 +146,8 @@ class UserHotKeys extends UserHotKeysProps {
collisionWarning(code) {
if (this.collisions[code]) {
const descs = this.collisions[code].map(action => `${rstore.readerActions[action]}`);
- this.$root.stdDialog.alert(`Сочетание '${code}' одновременно назначено
следующим действиям:
${descs.join('
')}`, 'Предупреждение');
+ this.$root.stdDialog.alert(`Сочетание '${code}' одновременно назначено
следующим действиям:
${descs.join('
')}
+Возможно неожиданное поведение.`, 'Предупреждение');
}
}
@@ -183,7 +184,7 @@ class UserHotKeys extends UserHotKeysProps {
async defaultHotKey(action) {
try {
- if (await this.$root.stdDialog.confirm(`Подтвердите установку клавиш по умолчанию для:
${rstore.readerActions[action]}`, ' ')) {
+ if (await this.$root.stdDialog.confirm(`Подтвердите сброс сочетаний клавиш
в значения по умолчанию для действия:
${rstore.readerActions[action]}`, ' ')) {
const codes = Array.from(rstore.settingDefaults.userHotKeys[action]);
const newValue = Object.assign({}, this.value, {[action]: codes});
this.$emit('input', newValue);
@@ -195,7 +196,7 @@ class UserHotKeys extends UserHotKeysProps {
async defaultHotKeyAll() {
try {
- if (await this.$root.stdDialog.confirm('Подтвердите установку ВСЕХ
сочетаний клавиш по умолчанию:', ' ')) {
+ if (await this.$root.stdDialog.confirm('Подтвердите сброс ВСЕХ сочетаний
клавиш в значения по умолчанию:', ' ')) {
const newValue = Object.assign({}, rstore.settingDefaults.userHotKeys);
this.$emit('input', newValue);
}
@@ -218,8 +219,19 @@ class UserHotKeys extends UserHotKeysProps {
border-bottom: 1px solid grey;
}
+.table-row:nth-child(even) {
+ background-color: #f7f7f7;
+}
+
+.table-row:hover {
+ background-color: #f0f0f0;
+}
+
.desc {
- width: 100px;
+ width: 130px;
+ overflow-wrap: break-word;
+ word-wrap: break-word;
+ white-space: normal;
}
.hotKeys {
diff --git a/client/components/Reader/TextPage/TextPage.vue b/client/components/Reader/TextPage/TextPage.vue
index 6ad0920c..6463bb84 100644
--- a/client/components/Reader/TextPage/TextPage.vue
+++ b/client/components/Reader/TextPage/TextPage.vue
@@ -899,7 +899,7 @@ class TextPage extends Vue {
async doFontSizeInc() {
if (!this.settingsChanging) {
this.settingsChanging = true;
- const newSize = (this.settings.fontSize + 1 < 100 ? this.settings.fontSize + 1 : 100);
+ const newSize = (this.settings.fontSize + 1 < 200 ? this.settings.fontSize + 1 : 100);
const newSettings = Object.assign({}, this.settings, {fontSize: newSize});
this.commit('reader/setSettings', newSettings);
await sleep(50);
@@ -947,57 +947,41 @@ class TextPage extends Vue {
const action = this.$root.readerActionByKeyEvent(event);
switch (action) {
- default:
- result = false;
- break;
- }
-
- switch (event.code) {
- case 'ArrowDown':
- if (event.shiftKey)
- this.doScrollingSpeedUp();
- else
- this.doDown();
- break;
- case 'ArrowUp':
- if (event.shiftKey)
- this.doScrollingSpeedDown();
- else
- this.doUp();
- break;
- case 'PageDown':
- case 'ArrowRight':
- this.doPageDown();
- break;
- case 'Space':
- if (event.shiftKey)
- this.doPageUp();
- else
- this.doPageDown();
- break;
- case 'PageUp':
- case 'ArrowLeft':
- case 'Backspace':
- this.doPageUp();
- break;
- case 'Home':
- this.doHome();
- break;
- case 'End':
- this.doEnd();
- break;
- case 'KeyA':
- if (event.shiftKey)
- this.doFontSizeDec();
- else
- this.doFontSizeInc();
- break;
- case 'Tab':
- case 'KeyQ':
+ case 'switchToolbar':
this.doToolBarToggle();
event.preventDefault();
event.stopPropagation();
break;
+ case 'bookBegin':
+ this.doHome();
+ break;
+ case 'bookEnd':
+ this.doEnd();
+ break;
+ case 'pageBack':
+ this.doPageUp();
+ break;
+ case 'pageForward':
+ this.doPageDown();
+ break;
+ case 'lineBack':
+ this.doUp();
+ break;
+ case 'lineForward':
+ this.doDown();
+ break;
+ case 'incFontSize':
+ this.doFontSizeInc();
+ break;
+ case 'decFontSize':
+ this.doFontSizeDec();
+ break;
+ case 'scrollingSpeedUp':
+ this.doScrollingSpeedUp();
+ break;
+ case 'scrollingSpeedDown':
+ this.doScrollingSpeedDown();
+ break;
default:
result = false;
break;
diff --git a/client/components/Reader/versionHistory.js b/client/components/Reader/versionHistory.js
index 98286bd0..a1f177fb 100644
--- a/client/components/Reader/versionHistory.js
+++ b/client/components/Reader/versionHistory.js
@@ -5,6 +5,8 @@ export const versionHistory = [
content:
`
+ - в настройки добавлена возможность назначать сочетания клавиш для действий читалки
+ - в настройки добавлена возможность назначать действия на области экрана при управлении кликом
- переход на Service Worker вместо AppCache для автономного режима работы
`
diff --git a/client/store/modules/reader.js b/client/store/modules/reader.js
index e59929bc..ffff91ce 100644
--- a/client/store/modules/reader.js
+++ b/client/store/modules/reader.js
@@ -12,6 +12,17 @@ const readerActions = {
'refresh': 'Принудительно обновить книгу',
'offlineMode': 'Автономный режим (без интернета)',
'recentBooks': 'Открыть недавние',
+ 'switchToolbar': 'Показать/скрыть панель управления',
+ 'bookBegin': 'В начало книги',
+ 'bookEnd': 'В конец книги',
+ 'pageBack': 'Страницу назад',
+ 'pageForward': 'Страницу вперед',
+ 'lineBack': 'Строчку назад',
+ 'lineForward': 'Строчку вперед',
+ 'incFontSize': 'Увеличить размер шрифта',
+ 'decFontSize': 'Уменьшить размер шрифта',
+ 'scrollingSpeedUp': 'Увеличить скорость скроллинга',
+ 'scrollingSpeedDown': 'Уменьшить скорость скроллинга',
};
//readerActions[name]
@@ -37,7 +48,24 @@ const hotKeys = [
{name: 'redoAction', codes: ['Ctrl+X']},
{name: 'fullScreen', codes: ['Enter', 'Backquote', 'F']},
{name: 'scrolling', codes: ['Z']},
+ {name: 'setPosition', codes: ['P']},
+ {name: 'search', codes: ['Ctrl+F']},
+ {name: 'copyText', codes: ['Ctrl+C']},
+ {name: 'refresh', codes: ['R']},
+ {name: 'offlineMode', codes: ['O']},
+ {name: 'recentBooks', codes: ['X']},
+ {name: 'switchToolbar', codes: ['Tab', 'Q']},
+ {name: 'bookBegin', codes: ['Home']},
+ {name: 'bookEnd', codes: ['End']},
+ {name: 'pageBack', codes: ['PageUp', 'ArrowLeft', 'Backspace', 'Shift+Space']},
+ {name: 'pageForward', codes: ['PageDown', 'ArrowRight', 'Space']},
+ {name: 'lineBack', codes: ['ArrowUp']},
+ {name: 'lineForward', codes: ['ArrowDown']},
+ {name: 'incFontSize', codes: ['A']},
+ {name: 'decFontSize', codes: ['Shift+A']},
+ {name: 'scrollingSpeedUp', codes: ['Shift+ArrowDown']},
+ {name: 'scrollingSpeedDown', codes: ['Shift+ArrowUp']},
];
const fonts = [