diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt index c451f92bc5..5ef5da0350 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/ReaderActivity.kt @@ -402,14 +402,41 @@ class ReaderActivity : } override fun onKeyUp(keyCode: Int, event: KeyEvent?): Boolean { - if (keyCode == KeyEvent.KEYCODE_N) { - presenter.loadNextChapter() - return true - } else if (keyCode == KeyEvent.KEYCODE_P) { - presenter.loadPreviousChapter() - return true + when (keyCode) { + KeyEvent.KEYCODE_N -> { + if (viewer is R2LPagerViewer) { + binding.readerNav.leftChapter.performClick() + } else { + binding.readerNav.rightChapter.performClick() + } + return true + } + KeyEvent.KEYCODE_P -> { + if (viewer !is R2LPagerViewer) { + binding.readerNav.leftChapter.performClick() + } else { + binding.readerNav.rightChapter.performClick() + } + return true + } + KeyEvent.KEYCODE_L -> { + binding.readerNav.leftChapter.performClick() + return true + } + KeyEvent.KEYCODE_R -> { + binding.readerNav.rightChapter.performClick() + return true + } + KeyEvent.KEYCODE_E -> { + viewer?.moveToNext() + return true + } + KeyEvent.KEYCODE_Q -> { + viewer?.moveToPrevious() + return true + } + else -> return super.onKeyUp(keyCode, event) } - return super.onKeyUp(keyCode, event) } /** diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt index 223cb087f5..905e12dc7b 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/BaseViewer.kt @@ -31,6 +31,16 @@ interface BaseViewer { */ fun moveToPage(page: ReaderPage) + /** + * Moves to the next page. + */ + fun moveToNext() + + /** + * Moves to the previous page. + */ + fun moveToPrevious() + /** * Called from the containing activity when a key [event] is received. It should return true * if the event was handled, false otherwise. diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt index 07b60752a8..d2e027ff52 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/pager/PagerViewer.kt @@ -288,17 +288,11 @@ abstract class PagerViewer(val activity: ReaderActivity) : BaseViewer { } } - /** - * Moves to the next page. - */ - open fun moveToNext() { + override fun moveToNext() { moveRight() } - /** - * Moves to the previous page. - */ - open fun moveToPrevious() { + override fun moveToPrevious() { moveLeft() } diff --git a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt index c26738b7e1..e74af67517 100644 --- a/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt +++ b/app/src/main/java/eu/kanade/tachiyomi/ui/reader/viewer/webtoon/WebtoonViewer.kt @@ -109,8 +109,8 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals val navigator = config.navigator when (navigator.getAction(pos)) { ViewerNavigation.NavigationRegion.MENU -> activity.toggleMenu() - ViewerNavigation.NavigationRegion.NEXT, ViewerNavigation.NavigationRegion.RIGHT -> scrollDown() - ViewerNavigation.NavigationRegion.PREV, ViewerNavigation.NavigationRegion.LEFT -> scrollUp() + ViewerNavigation.NavigationRegion.NEXT, ViewerNavigation.NavigationRegion.RIGHT -> moveToNext() + ViewerNavigation.NavigationRegion.PREV, ViewerNavigation.NavigationRegion.LEFT -> moveToPrevious() } } } @@ -252,14 +252,14 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals /** * Scrolls up by [scrollDistance]. */ - private fun scrollUp() { + override fun moveToNext() { recycler.smoothScrollBy(0, -scrollDistance) } /** * Scrolls down by [scrollDistance]. */ - private fun scrollDown() { + override fun moveToPrevious() { recycler.smoothScrollBy(0, scrollDistance) } @@ -275,25 +275,25 @@ class WebtoonViewer(val activity: ReaderActivity, val hasMargins: Boolean = fals if (!config.volumeKeysEnabled || activity.menuVisible) { return false } else if (isUp) { - if (!config.volumeKeysInverted) scrollDown() else scrollUp() + if (!config.volumeKeysInverted) moveToNext() else moveToPrevious() } } KeyEvent.KEYCODE_VOLUME_UP -> { if (!config.volumeKeysEnabled || activity.menuVisible) { return false } else if (isUp) { - if (!config.volumeKeysInverted) scrollUp() else scrollDown() + if (!config.volumeKeysInverted) moveToPrevious() else moveToNext() } } KeyEvent.KEYCODE_MENU -> if (isUp) activity.toggleMenu() KeyEvent.KEYCODE_DPAD_RIGHT, KeyEvent.KEYCODE_DPAD_UP, - KeyEvent.KEYCODE_PAGE_UP -> if (isUp) scrollUp() + KeyEvent.KEYCODE_PAGE_UP -> if (isUp) moveToPrevious() KeyEvent.KEYCODE_DPAD_LEFT, KeyEvent.KEYCODE_DPAD_DOWN, - KeyEvent.KEYCODE_PAGE_DOWN -> if (isUp) scrollDown() + KeyEvent.KEYCODE_PAGE_DOWN -> if (isUp) moveToNext() else -> return false } return true diff --git a/app/src/main/res/xml/s_pen_actions.xml b/app/src/main/res/xml/s_pen_actions.xml index 27fe573620..5f7bf60267 100644 --- a/app/src/main/res/xml/s_pen_actions.xml +++ b/app/src/main/res/xml/s_pen_actions.xml @@ -8,7 +8,7 @@ priority="1" repeatable="true" repeatable_interval="short" - trigger_key="CTRL_LEFT+DPAD_RIGHT"> + trigger_key="E"> @@ -19,7 +19,7 @@ priority="2" repeatable="true" repeatable_interval="short" - trigger_key="CTRL_LEFT+DPAD_LEFT"> + trigger_key="Q"> @@ -41,7 +41,7 @@ priority="4" repeatable="true" repeatable_interval="short" - trigger_key="N"> + trigger_key="R"> @@ -52,7 +52,7 @@ priority="5" repeatable="true" repeatable_interval="short" - trigger_key="P"> + trigger_key="L">