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">