From afb33e85187f639f6fa463391627d2ed8c00c9e6 Mon Sep 17 00:00:00 2001 From: hius07 <62179190+hius07@users.noreply.github.com> Date: Sun, 6 Apr 2025 12:47:00 +0300 Subject: [PATCH] Key press handlers to show upper menu (#13511) --- frontend/apps/filemanager/filemanagermenu.lua | 9 ++++++++- frontend/apps/reader/modules/readermenu.lua | 10 ++++++---- plugins/hotkeys.koplugin/main.lua | 2 +- 3 files changed, 15 insertions(+), 6 deletions(-) diff --git a/frontend/apps/filemanager/filemanagermenu.lua b/frontend/apps/filemanager/filemanagermenu.lua index c7f9e3aa8..b6f21f356 100644 --- a/frontend/apps/filemanager/filemanagermenu.lua +++ b/frontend/apps/filemanager/filemanagermenu.lua @@ -62,7 +62,10 @@ end function FileManagerMenu:registerKeyEvents() if Device:hasKeys() then - self.key_events.ShowMenu = { { "Menu" } } + self.key_events.KeyPressShowMenu = { { "Menu" } } + if Device:hasFewKeys() then + self.key_events.KeyPressShowMenu = { { { "Menu", "Right" } } } + end if Device:hasScreenKB() then self.key_events.OpenLastDoc = { { "ScreenKB", "Back" } } end @@ -1104,6 +1107,10 @@ function FileManagerMenu:onSwipeShowMenu(ges) end end +function FileManagerMenu:onKeyPressShowMenu(_, key_ev) + return self:onShowMenu() +end + function FileManagerMenu:onSetDimensions(dimen) -- This widget doesn't support in-place layout updates, so, close & reopen if self.menu_container then diff --git a/frontend/apps/reader/modules/readermenu.lua b/frontend/apps/reader/modules/readermenu.lua index 49b381edd..0281a0dfd 100644 --- a/frontend/apps/reader/modules/readermenu.lua +++ b/frontend/apps/reader/modules/readermenu.lua @@ -81,11 +81,9 @@ function ReaderMenu:registerKeyEvents() end else -- Map Menu key to top menu only, because the bottom menu is only designed for touch devices. - --- @fixme: Is this still the case? - --- (Swapping between top and bottom might not be implemented, though, so it might still be a good idea). - self.key_events.ShowMenu = { { "Menu" } } + self.key_events.KeyPressShowMenu = { { "Menu" } } if Device:hasFewKeys() then - self.key_events.ShowMenu = { { { "Menu", "Right" } } } + self.key_events.KeyPressShowMenu = { { { "Menu", "Right" } } } end end end @@ -497,6 +495,10 @@ function ReaderMenu:onPressMenu() return true end +function ReaderMenu:onKeyPressShowMenu(_, key_ev) + return self:onShowMenu() +end + function ReaderMenu:onTapCloseMenu() self:onCloseReaderMenu() self.ui:handleEvent(Event:new("CloseConfigMenu")) diff --git a/plugins/hotkeys.koplugin/main.lua b/plugins/hotkeys.koplugin/main.lua index c5b0cd52e..6f72cf662 100644 --- a/plugins/hotkeys.koplugin/main.lua +++ b/plugins/hotkeys.koplugin/main.lua @@ -514,7 +514,7 @@ function HotKeys:overrideConflictingKeyEvents() if self.is_docless then local filemanagermenu = self.ui.menu filemanagermenu.key_events = {} -- reset it. - filemanagermenu.key_events.ShowMenu = { { "Menu" } } + filemanagermenu.key_events.KeyPressShowMenu = { { "Menu" } } logger.dbg("Hotkey FileManagerMenu:registerKeyEvents() overridden.") end end -- overrideConflictingKeyEvents()