diff --git a/loader/src/ui/mods/ModsLayer.cpp b/loader/src/ui/mods/ModsLayer.cpp
index 7a96804e..b2552c11 100644
--- a/loader/src/ui/mods/ModsLayer.cpp
+++ b/loader/src/ui/mods/ModsLayer.cpp
@@ -559,6 +559,27 @@ void ModsLayer::gotoTab(ModListSource* src) {
     m_lists.at(m_currentSource)->updateState();
 }
 
+void ModsLayer::keyDown(enumKeyCodes key) {
+    auto list = m_lists.at(m_currentSource);
+
+    switch(key) {
+        case KEY_Left:
+        case CONTROLLER_Left:
+            if (m_currentSource->getPageCount() && list->getPage() > 0) {
+                list->gotoPage(list->getPage() - 1);
+            }
+            break;
+        case KEY_Right:
+        case CONTROLLER_Right:
+            if (m_currentSource->getPageCount() && list->getPage() < m_currentSource->getPageCount().value() - 1) {
+                list->gotoPage(list->getPage() + 1);
+            }
+            break;
+        default:
+            CCLayer::keyDown(key);
+    }
+}
+
 void ModsLayer::keyBackClicked() {
     this->onBack(nullptr);
 }
diff --git a/loader/src/ui/mods/ModsLayer.hpp b/loader/src/ui/mods/ModsLayer.hpp
index cb310033..f6fa57cb 100644
--- a/loader/src/ui/mods/ModsLayer.hpp
+++ b/loader/src/ui/mods/ModsLayer.hpp
@@ -57,6 +57,7 @@ protected:
 
     bool init();
 
+    void keyDown(enumKeyCodes key) override;
     void keyBackClicked() override;
     void setIDPopupClosed(SetIDPopup*, int value) override;