mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
ReaderUI: Refresh key_events handlers on keyboard hotplug
This commit is contained in:
@@ -20,9 +20,7 @@ local ReaderBack = EventListener:extend{
|
||||
}
|
||||
|
||||
function ReaderBack:init()
|
||||
if Device:hasKeys() then
|
||||
self.ui.key_events.Back = { { Device.input.group.Back } }
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
-- Regular function wrapping our method, to avoid re-creating
|
||||
-- an anonymous function at each page turn
|
||||
self._addPreviousLocationToStackCallback = function()
|
||||
@@ -30,6 +28,17 @@ function ReaderBack:init()
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderBack:registerKeyEvents(init)
|
||||
if Device:hasKeys() then
|
||||
self.ui.key_events.Back = { { Device.input.group.Back } }
|
||||
elseif not init then
|
||||
self.ui.key_events.Back = nil
|
||||
end
|
||||
end
|
||||
|
||||
ReaderBack.onPhysicalKeyboardConnected = ReaderBack.registerKeyEvents
|
||||
ReaderBack.onPhysicalKeyboardDisconnected = ReaderBack.registerKeyEvents
|
||||
|
||||
function ReaderBack:_getCurrentLocation()
|
||||
if self.ui.document.info.has_pages then
|
||||
return self.ui.paging:getBookLocation()
|
||||
|
||||
@@ -37,9 +37,7 @@ local ReaderBookmark = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderBookmark:init()
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events.ShowBookmark = { { "B" } }
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
|
||||
if G_reader_settings:hasNot("bookmarks_items_per_page") then
|
||||
-- The Bookmarks items per page and items' font size can now be
|
||||
@@ -62,6 +60,17 @@ end
|
||||
|
||||
function ReaderBookmark:onGesture() end
|
||||
|
||||
function ReaderBookmark:registerKeyEvents(init)
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events.ShowBookmark = { { "B" } }
|
||||
elseif not init then
|
||||
self.key_events.ShowBookmark = nil
|
||||
end
|
||||
end
|
||||
|
||||
ReaderBookmark.onPhysicalKeyboardConnected = ReaderBookmark.registerKeyEvents
|
||||
ReaderBookmark.onPhysicalKeyboardDisconnected = ReaderBookmark.registerKeyEvents
|
||||
|
||||
function ReaderBookmark:addToMainMenu(menu_items)
|
||||
menu_items.bookmarks = {
|
||||
text = _("Bookmarks"),
|
||||
|
||||
@@ -19,9 +19,7 @@ function ReaderConfig:init()
|
||||
end
|
||||
self.configurable:loadDefaults(self.options)
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.ShowConfigMenu = { { { "Press", "AA" } } }
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
self:initGesListener()
|
||||
if G_reader_settings:has("activate_menu") then
|
||||
self.activation_menu = G_reader_settings:readSetting("activate_menu")
|
||||
@@ -35,6 +33,17 @@ end
|
||||
|
||||
function ReaderConfig:onGesture() end
|
||||
|
||||
function ReaderConfig:registerKeyEvents(init)
|
||||
if Device:hasKeys() then
|
||||
self.key_events.ShowConfigMenu = { { { "Press", "AA" } } }
|
||||
elseif not init then
|
||||
self.key_events.ShowConfigMenu = nil
|
||||
end
|
||||
end
|
||||
|
||||
ReaderConfig.onPhysicalKeyboardConnected = ReaderConfig.registerKeyEvents
|
||||
ReaderConfig.onPhysicalKeyboardDisconnected = ReaderConfig.registerKeyEvents
|
||||
|
||||
function ReaderConfig:initGesListener()
|
||||
if not Device:isTouchDevice() then return end
|
||||
|
||||
|
||||
@@ -31,22 +31,7 @@ local ReaderFont = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderFont:init()
|
||||
if Device:hasKeyboard() then
|
||||
-- add shortcut for keyboard
|
||||
self.key_events = {
|
||||
ShowFontMenu = { { "F" } },
|
||||
IncreaseSize = {
|
||||
{ "Shift", Input.group.PgFwd },
|
||||
event = "ChangeSize",
|
||||
args = 0.5
|
||||
},
|
||||
DecreaseSize = {
|
||||
{ "Shift", Input.group.PgBack },
|
||||
event = "ChangeSize",
|
||||
args = -0.5
|
||||
},
|
||||
}
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
-- Build face_table for menu
|
||||
self.face_table = {}
|
||||
-- Font settings
|
||||
@@ -133,6 +118,30 @@ end
|
||||
|
||||
function ReaderFont:onGesture() end
|
||||
|
||||
function ReaderFont:registerKeyEvents(init)
|
||||
if Device:hasKeyboard() then
|
||||
-- add shortcut for keyboard
|
||||
self.key_events = {
|
||||
ShowFontMenu = { { "F" } },
|
||||
IncreaseSize = {
|
||||
{ "Shift", Input.group.PgFwd },
|
||||
event = "ChangeSize",
|
||||
args = 0.5
|
||||
},
|
||||
DecreaseSize = {
|
||||
{ "Shift", Input.group.PgBack },
|
||||
event = "ChangeSize",
|
||||
args = -0.5
|
||||
},
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events = {}
|
||||
end
|
||||
end
|
||||
|
||||
ReaderFont.onPhysicalKeyboardConnected = ReaderFont.registerKeyEvents
|
||||
ReaderFont.onPhysicalKeyboardDisconnected = ReaderFont.registerKeyEvents
|
||||
|
||||
function ReaderFont:onSetDimensions(dimen)
|
||||
self.dimen = dimen
|
||||
end
|
||||
|
||||
@@ -52,24 +52,7 @@ function ReaderHighlight:init()
|
||||
self._previous_indicator_pos = nil
|
||||
self._last_indicator_move_args = {dx = 0, dy = 0, distance = 0, time = time:now()}
|
||||
|
||||
if Device:hasDPad() then
|
||||
-- Used for text selection with dpad/keys
|
||||
local QUICK_INDICTOR_MOVE = true
|
||||
self.key_events.StopHighlightIndicator = { { Device.input.group.Back }, args = true } -- true: clear highlight selection
|
||||
self.key_events.UpHighlightIndicator = { { "Up" }, event = "MoveHighlightIndicator", args = {0, -1} }
|
||||
self.key_events.DownHighlightIndicator = { { "Down" }, event = "MoveHighlightIndicator", args = {0, 1} }
|
||||
-- let FewKeys device can move indicator left
|
||||
self.key_events.LeftHighlightIndicator = { { "Left" }, event = "MoveHighlightIndicator", args = {-1, 0} }
|
||||
self.key_events.RightHighlightIndicator = { { "Right" }, event = "MoveHighlightIndicator", args = {1, 0} }
|
||||
self.key_events.HighlightPress = { { "Press" } }
|
||||
if Device:hasKeys() then
|
||||
self.key_events.QuickUpHighlightIndicator = { { "Shift", "Up" }, event = "MoveHighlightIndicator", args = {0, -1, QUICK_INDICTOR_MOVE} }
|
||||
self.key_events.QuickDownHighlightIndicator = { { "Shift", "Down" }, event = "MoveHighlightIndicator", args = {0, 1, QUICK_INDICTOR_MOVE} }
|
||||
self.key_events.QuickLeftHighlightIndicator = { { "Shift", "Left" }, event = "MoveHighlightIndicator", args = {-1, 0, QUICK_INDICTOR_MOVE} }
|
||||
self.key_events.QuickRightHighlightIndicator = { { "Shift", "Right" }, event = "MoveHighlightIndicator", args = {1, 0, QUICK_INDICTOR_MOVE} }
|
||||
self.key_events.StartHighlightIndicator = { { "H" } }
|
||||
end
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
|
||||
self._highlight_buttons = {
|
||||
-- highlight and add_note are for the document itself,
|
||||
@@ -237,6 +220,42 @@ end
|
||||
|
||||
function ReaderHighlight:onGesture() end
|
||||
|
||||
function ReaderHighlight:registerKeyEvents(init)
|
||||
if Device:hasDPad() then
|
||||
-- Used for text selection with dpad/keys
|
||||
local QUICK_INDICATOR_MOVE = true
|
||||
self.key_events.StopHighlightIndicator = { { Device.input.group.Back }, args = true } -- true: clear highlight selection
|
||||
self.key_events.UpHighlightIndicator = { { "Up" }, event = "MoveHighlightIndicator", args = {0, -1} }
|
||||
self.key_events.DownHighlightIndicator = { { "Down" }, event = "MoveHighlightIndicator", args = {0, 1} }
|
||||
-- let FewKeys device can move indicator left
|
||||
self.key_events.LeftHighlightIndicator = { { "Left" }, event = "MoveHighlightIndicator", args = {-1, 0} }
|
||||
self.key_events.RightHighlightIndicator = { { "Right" }, event = "MoveHighlightIndicator", args = {1, 0} }
|
||||
self.key_events.HighlightPress = { { "Press" } }
|
||||
if Device:hasKeys() then
|
||||
self.key_events.QuickUpHighlightIndicator = { { "Shift", "Up" }, event = "MoveHighlightIndicator", args = {0, -1, QUICK_INDICATOR_MOVE} }
|
||||
self.key_events.QuickDownHighlightIndicator = { { "Shift", "Down" }, event = "MoveHighlightIndicator", args = {0, 1, QUICK_INDICATOR_MOVE} }
|
||||
self.key_events.QuickLeftHighlightIndicator = { { "Shift", "Left" }, event = "MoveHighlightIndicator", args = {-1, 0, QUICK_INDICATOR_MOVE} }
|
||||
self.key_events.QuickRightHighlightIndicator = { { "Shift", "Right" }, event = "MoveHighlightIndicator", args = {1, 0, QUICK_INDICATOR_MOVE} }
|
||||
self.key_events.StartHighlightIndicator = { { "H" } }
|
||||
end
|
||||
elseif not init then
|
||||
self.key_events.StopHighlightIndicator = nil
|
||||
self.key_events.UpHighlightIndicator = nil
|
||||
self.key_events.DownHighlightIndicator = nil
|
||||
self.key_events.LeftHighlightIndicator = nil
|
||||
self.key_events.RightHighlightIndicator = nil
|
||||
self.key_events.HighlightPress = nil
|
||||
self.key_events.QuickUpHighlightIndicator = nil
|
||||
self.key_events.QuickDownHighlightIndicator = nil
|
||||
self.key_events.QuickLeftHighlightIndicator = nil
|
||||
self.key_events.QuickRightHighlightIndicator = nil
|
||||
self.key_events.StartHighlightIndicator = nil
|
||||
end
|
||||
end
|
||||
|
||||
ReaderHighlight.onPhysicalKeyboardConnected = ReaderHighlight.registerKeyEvents
|
||||
ReaderHighlight.onPhysicalKeyboardDisconnected = ReaderHighlight.registerKeyEvents
|
||||
|
||||
function ReaderHighlight:setupTouchZones()
|
||||
if not Device:isTouchDevice() then return end
|
||||
local hold_pan_rate = G_reader_settings:readSetting("hold_pan_rate")
|
||||
|
||||
@@ -26,25 +26,7 @@ local ReaderLink = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderLink:init()
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
SelectNextPageLink = {
|
||||
{ "Tab" },
|
||||
event = "SelectNextPageLink",
|
||||
},
|
||||
SelectPrevPageLink = {
|
||||
{ "Shift", "Tab" },
|
||||
{ "Sym", "Tab" }, -- Shift or Sym + Tab
|
||||
event = "SelectPrevPageLink",
|
||||
},
|
||||
GotoSelectedPageLink = {
|
||||
{ "Press" },
|
||||
event = "GotoSelectedPageLink",
|
||||
},
|
||||
-- "Back" is handled by ReaderBack, which will call our onGoBackLink()
|
||||
-- when G_reader_settings:readSetting("back_in_reader") == "previous_location"
|
||||
}
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
if Device:isTouchDevice() then
|
||||
self.ui:registerTouchZones({
|
||||
{
|
||||
@@ -113,6 +95,33 @@ end
|
||||
|
||||
function ReaderLink:onGesture() end
|
||||
|
||||
function ReaderLink:registerKeyEvents(init)
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
SelectNextPageLink = {
|
||||
{ "Tab" },
|
||||
event = "SelectNextPageLink",
|
||||
},
|
||||
SelectPrevPageLink = {
|
||||
{ "Shift", "Tab" },
|
||||
{ "Sym", "Tab" }, -- Shift or Sym + Tab
|
||||
event = "SelectPrevPageLink",
|
||||
},
|
||||
GotoSelectedPageLink = {
|
||||
{ "Press" },
|
||||
event = "GotoSelectedPageLink",
|
||||
},
|
||||
-- "Back" is handled by ReaderBack, which will call our onGoBackLink()
|
||||
-- when G_reader_settings:readSetting("back_in_reader") == "previous_location"
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events = {}
|
||||
end
|
||||
end
|
||||
|
||||
ReaderLink.onPhysicalKeyboardConnected = ReaderLink.registerKeyEvents
|
||||
ReaderLink.onPhysicalKeyboardDisconnected = ReaderLink.registerKeyEvents
|
||||
|
||||
function ReaderLink:onReadSettings(config)
|
||||
-- called when loading new document
|
||||
self.location_stack = {}
|
||||
|
||||
@@ -56,6 +56,21 @@ function ReaderMenu:init()
|
||||
|
||||
self.registered_widgets = {}
|
||||
|
||||
self:registerKeyEvents(true)
|
||||
|
||||
if G_reader_settings:has("activate_menu") then
|
||||
self.activation_menu = G_reader_settings:readSetting("activate_menu")
|
||||
else
|
||||
self.activation_menu = "swipe_tap"
|
||||
end
|
||||
|
||||
-- delegate gesture listener to readerui, NOP our own
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderMenu:onGesture() end
|
||||
|
||||
function ReaderMenu:registerKeyEvents(init)
|
||||
if Device:hasKeys() then
|
||||
if Device:isTouchDevice() then
|
||||
self.key_events.TapShowMenu = { { "Menu" } }
|
||||
@@ -70,18 +85,14 @@ function ReaderMenu:init()
|
||||
self.key_events.ShowMenu = { { { "Menu", "Right" } } }
|
||||
end
|
||||
end
|
||||
elseif not init then
|
||||
self.key_events.TapShowMenu = nil
|
||||
self.key_events.ShowMenu = nil
|
||||
end
|
||||
if G_reader_settings:has("activate_menu") then
|
||||
self.activation_menu = G_reader_settings:readSetting("activate_menu")
|
||||
else
|
||||
self.activation_menu = "swipe_tap"
|
||||
end
|
||||
|
||||
-- delegate gesture listener to readerui, NOP our own
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderMenu:onGesture() end
|
||||
ReaderMenu.onPhysicalKeyboardConnected = ReaderMenu.registerKeyEvents
|
||||
ReaderMenu.onPhysicalKeyboardDisconnected = ReaderMenu.registerKeyEvents
|
||||
|
||||
function ReaderMenu:getPreviousFile()
|
||||
return require("readhistory"):getPreviousFile(self.ui.document.file)
|
||||
|
||||
@@ -41,6 +41,17 @@ local ReaderPaging = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderPaging:init()
|
||||
self:registerKeyEvents(true)
|
||||
self.pan_interval = time.s(1 / self.pan_rate)
|
||||
self.number_of_pages = self.ui.document.info.number_of_pages
|
||||
|
||||
-- delegate gesture listener to readerui, NOP our own
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderPaging:onGesture() end
|
||||
|
||||
function ReaderPaging:registerKeyEvents(init)
|
||||
if Device:hasKeys() then
|
||||
self.key_events.GotoNextPage = {
|
||||
{ { "RPgFwd", "LPgFwd", not Device:hasFewKeys() and "Right" } },
|
||||
@@ -62,7 +73,11 @@ function ReaderPaging:init()
|
||||
event = "GotoPosRel",
|
||||
args = -1,
|
||||
}
|
||||
|
||||
elseif not init then
|
||||
self.key_events.GotoNextPage = nil
|
||||
self.key_events.GotoPrevPage = nil
|
||||
self.key_events.GotoNextPos = nil
|
||||
self.key_events.GotoPrevPos = nil
|
||||
end
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events.GotoFirst = {
|
||||
@@ -115,15 +130,22 @@ function ReaderPaging:init()
|
||||
event = "GotoPercent",
|
||||
args = 100,
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events.GotoFirst = nil
|
||||
self.key_events.Goto11 = nil
|
||||
self.key_events.Goto22 = nil
|
||||
self.key_events.Goto33 = nil
|
||||
self.key_events.Goto44 = nil
|
||||
self.key_events.Goto55 = nil
|
||||
self.key_events.Goto66 = nil
|
||||
self.key_events.Goto77 = nil
|
||||
self.key_events.Goto88 = nil
|
||||
self.key_events.GotoLast = nil
|
||||
end
|
||||
self.pan_interval = time.s(1 / self.pan_rate)
|
||||
self.number_of_pages = self.ui.document.info.number_of_pages
|
||||
|
||||
-- delegate gesture listener to readerui, NOP our own
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderPaging:onGesture() end
|
||||
ReaderPaging.onPhysicalKeyboardConnected = ReaderPaging.registerKeyEvents
|
||||
ReaderPaging.onPhysicalKeyboardDisconnected = ReaderPaging.registerKeyEvents
|
||||
|
||||
function ReaderPaging:onReaderReady()
|
||||
self:setupTouchZones()
|
||||
|
||||
@@ -13,6 +13,14 @@ local ReaderPanning = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderPanning:init()
|
||||
self:registerKeyEvents(true)
|
||||
-- NOP our own gesture handling
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderPanning:onGesture() end
|
||||
|
||||
function ReaderPanning:registerKeyEvents(init)
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events = {
|
||||
-- these will all generate the same event, just with different arguments
|
||||
@@ -37,12 +45,13 @@ function ReaderPanning:init()
|
||||
args = {1, 0}
|
||||
},
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events = {}
|
||||
end
|
||||
-- NOP our own gesture handling
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderPanning:onGesture() end
|
||||
ReaderPanning.onPhysicalKeyboardConnected = ReaderPanning.registerKeyEvents
|
||||
ReaderPanning.onPhysicalKeyboardDisconnected = ReaderPanning.registerKeyEvents
|
||||
|
||||
function ReaderPanning:onPanning(args, _)
|
||||
local dx, dy = unpack(args)
|
||||
|
||||
@@ -57,7 +57,29 @@ local ReaderRolling = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderRolling:init()
|
||||
self.key_events = {}
|
||||
self:registerKeyEvents(true)
|
||||
self.pan_interval = time.s(1 / self.pan_rate)
|
||||
|
||||
table.insert(self.ui.postInitCallback, function()
|
||||
self.rendering_hash = self.ui.document:getDocumentRenderingHash()
|
||||
self.ui.document:_readMetadata()
|
||||
end)
|
||||
table.insert(self.ui.postReaderCallback, function()
|
||||
self:updatePos()
|
||||
-- Disable crengine internal history, with required redraw
|
||||
self.ui.document:enableInternalHistory(false)
|
||||
self:onRedrawCurrentView()
|
||||
end)
|
||||
self.ui.menu:registerToMainMenu(self)
|
||||
self.batched_update_count = 0
|
||||
|
||||
-- delegate gesture listener to readerui, NOP our own
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderRolling:onGesture() end
|
||||
|
||||
function ReaderRolling:registerKeyEvents(init)
|
||||
if Device:hasKeys() then
|
||||
self.key_events.GotoNextView = {
|
||||
{ { "RPgFwd", "LPgFwd", "Right" } },
|
||||
@@ -69,6 +91,9 @@ function ReaderRolling:init()
|
||||
event = "GotoViewRel",
|
||||
args = -1,
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events.GotoNextView = nil
|
||||
self.key_events.GotoPrevView = nil
|
||||
end
|
||||
if Device:hasDPad() then
|
||||
self.key_events.MoveUp = {
|
||||
@@ -81,6 +106,9 @@ function ReaderRolling:init()
|
||||
event = "Panning",
|
||||
args = {0, 1},
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events.MoveUp = nil
|
||||
self.key_events.MoveDown = nil
|
||||
end
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events.GotoFirst = {
|
||||
@@ -133,27 +161,22 @@ function ReaderRolling:init()
|
||||
event = "GotoPercent",
|
||||
args = 100,
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events.GotoFirst = nil
|
||||
self.key_events.Goto11 = nil
|
||||
self.key_events.Goto22 = nil
|
||||
self.key_events.Goto33 = nil
|
||||
self.key_events.Goto44 = nil
|
||||
self.key_events.Goto55 = nil
|
||||
self.key_events.Goto66 = nil
|
||||
self.key_events.Goto77 = nil
|
||||
self.key_events.Goto88 = nil
|
||||
self.key_events.GotoLast = nil
|
||||
end
|
||||
self.pan_interval = time.s(1 / self.pan_rate)
|
||||
|
||||
table.insert(self.ui.postInitCallback, function()
|
||||
self.rendering_hash = self.ui.document:getDocumentRenderingHash()
|
||||
self.ui.document:_readMetadata()
|
||||
end)
|
||||
table.insert(self.ui.postReaderCallback, function()
|
||||
self:updatePos()
|
||||
-- Disable crengine internal history, with required redraw
|
||||
self.ui.document:enableInternalHistory(false)
|
||||
self:onRedrawCurrentView()
|
||||
end)
|
||||
self.ui.menu:registerToMainMenu(self)
|
||||
self.batched_update_count = 0
|
||||
|
||||
-- delegate gesture listener to readerui, NOP our own
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderRolling:onGesture() end
|
||||
ReaderRolling.onPhysicalKeyboardConnected = ReaderRolling.registerKeyEvents
|
||||
ReaderRolling.onPhysicalKeyboardDisconnected = ReaderRolling.registerKeyEvents
|
||||
|
||||
function ReaderRolling:onReadSettings(config)
|
||||
-- 20180503: some fix in crengine has changed the way the DOM is built
|
||||
|
||||
@@ -8,6 +8,14 @@ local ReaderRotation = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderRotation:init()
|
||||
self:registerKeyEvents(true)
|
||||
-- NOP our own gesture handling
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderRotation:onGesture() end
|
||||
|
||||
function ReaderRotation:registerKeyEvents(init)
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events = {
|
||||
-- these will all generate the same event, just with different arguments
|
||||
@@ -22,12 +30,13 @@ function ReaderRotation:init()
|
||||
args = 90
|
||||
},
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events = {}
|
||||
end
|
||||
-- NOP our own gesture handling
|
||||
self.ges_events = nil
|
||||
end
|
||||
|
||||
function ReaderRotation:onGesture() end
|
||||
ReaderRotation.onPhysicalKeyboardConnected = ReaderRotation.registerKeyEvents
|
||||
ReaderRotation.onPhysicalKeyboardDisconnected = ReaderRotation.registerKeyEvents
|
||||
|
||||
--- @todo Reset rotation on new document, maybe on new page?
|
||||
|
||||
|
||||
@@ -50,9 +50,7 @@ function TweakInfoWidget:init()
|
||||
}
|
||||
}
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
|
||||
local content = VerticalGroup:new{
|
||||
TextBoxWidget:new{
|
||||
@@ -168,6 +166,17 @@ function TweakInfoWidget:init()
|
||||
}
|
||||
end
|
||||
|
||||
function TweakInfoWidget:registerKeyEvents(init)
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
elseif not init then
|
||||
self.key_events.Close = nil
|
||||
end
|
||||
end
|
||||
|
||||
TweakInfoWidget.onPhysicalKeyboardConnected = TweakInfoWidget.registerKeyEvents
|
||||
TweakInfoWidget.onPhysicalKeyboardDisconnected = TweakInfoWidget.registerKeyEvents
|
||||
|
||||
function TweakInfoWidget:onShow()
|
||||
UIManager:setDirty(self, function()
|
||||
return "ui", self.movable.dimen
|
||||
|
||||
@@ -35,9 +35,7 @@ local ReaderToc = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderToc:init()
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events.ShowToc = { { "T" } }
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
|
||||
if G_reader_settings:hasNot("toc_items_per_page") then
|
||||
-- The TOC items per page and items' font size can now be
|
||||
@@ -62,6 +60,17 @@ end
|
||||
|
||||
function ReaderToc:onGesture() end
|
||||
|
||||
function ReaderToc:registerKeyEvents(init)
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events.ShowToc = { { "T" } }
|
||||
elseif not init then
|
||||
self.key_events.ShowToc = nil
|
||||
end
|
||||
end
|
||||
|
||||
ReaderToc.onPhysicalKeyboardConnected = ReaderToc.registerKeyEvents
|
||||
ReaderToc.onPhysicalKeyboardDisconnected = ReaderToc.registerKeyEvents
|
||||
|
||||
function ReaderToc:onReadSettings(config)
|
||||
self.toc_ticks_ignored_levels = config:readSetting("toc_ticks_ignored_levels") or {}
|
||||
self.toc_chapter_navigation_bind_to_ticks = config:readSetting("toc_chapter_navigation_bind_to_ticks")
|
||||
|
||||
@@ -91,6 +91,10 @@ local ReaderZooming = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderZooming:init()
|
||||
self:registerKeyEvents(true)
|
||||
end
|
||||
|
||||
function ReaderZooming:registerKeyEvents(init)
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events = {
|
||||
ZoomIn = {
|
||||
@@ -139,9 +143,14 @@ function ReaderZooming:init()
|
||||
args = "manual",
|
||||
},
|
||||
}
|
||||
elseif not init then
|
||||
self.key_events = {}
|
||||
end
|
||||
end
|
||||
|
||||
ReaderZooming.onPhysicalKeyboardConnected = ReaderZooming.registerKeyEvents
|
||||
ReaderZooming.onPhysicalKeyboardDisconnected = ReaderZooming.registerKeyEvents
|
||||
|
||||
-- Conversions between genus/type combos and zoom_mode...
|
||||
function ReaderZooming:mode_to_combo(zoom_mode)
|
||||
if not zoom_mode then
|
||||
|
||||
@@ -122,10 +122,7 @@ function ReaderUI:init()
|
||||
-- Handle local settings migration
|
||||
SettingsMigration:migrateSettings(self.doc_settings)
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Home = { { "Home" } }
|
||||
self.key_events.Reload = { { "F5" } }
|
||||
end
|
||||
self:registerKeyEvents(true)
|
||||
|
||||
-- a view container (so it must be child #1!)
|
||||
-- all paintable widgets need to be a child of reader view
|
||||
@@ -484,6 +481,19 @@ function ReaderUI:init()
|
||||
ReaderUI.instance = self
|
||||
end
|
||||
|
||||
function ReaderUI:registerKeyEvents(init)
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Home = { { "Home" } }
|
||||
self.key_events.Reload = { { "F5" } }
|
||||
elseif not init then
|
||||
self.key_events.Home = nil
|
||||
self.key_events.Reload = nil
|
||||
end
|
||||
end
|
||||
|
||||
ReaderUI.onPhysicalKeyboardConnected = ReaderUI.registerKeyEvents
|
||||
ReaderUI.onPhysicalKeyboardDisconnected = ReaderUI.registerKeyEvents
|
||||
|
||||
function ReaderUI:setLastDirForFileBrowser(dir)
|
||||
if dir and #dir > 1 and dir:sub(-1) == "/" then
|
||||
dir = dir:sub(1, -2)
|
||||
|
||||
Reference in New Issue
Block a user