mirror of
https://github.com/koreader/koreader.git
synced 2025-12-13 20:36:53 +01:00
InputContainer: Fall cleanup ;).
Get rid of the doc & seqtext fields, as they are not actually used (nor are they particularly useful, the event handler's name should be pretty self-explanatory). Also, tweak the key_events documentation to highlight the quirks of the API, especially as far as array nesting is involved... Random drive-by cleanup of the declarations of key_events & ges_events to re-use the existing instance object (now that we know they're sane ;p) for tables with a single member (less GC pressure).
This commit is contained in:
@@ -463,9 +463,9 @@ function FileManager:setupLayout()
|
||||
}
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Home = { {"Home"}, doc = "go home" }
|
||||
self.key_events.Home = { { "Home" } }
|
||||
-- Override the menu.lua way of handling the back key
|
||||
self.file_chooser.key_events.Back = { {Device.input.group.Back}, doc = "go back" }
|
||||
self.file_chooser.key_events.Back = { { Device.input.group.Back } }
|
||||
if not Device:hasFewKeys() then
|
||||
-- Also remove the handler assigned to the "Back" key by menu.lua
|
||||
self.file_chooser.key_events.Close = nil
|
||||
|
||||
@@ -49,9 +49,7 @@ function FileManagerMenu:init()
|
||||
self.registered_widgets = {}
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
ShowMenu = { { "Menu" }, doc = "show menu" },
|
||||
}
|
||||
self.key_events.ShowMenu = { { "Menu" } }
|
||||
end
|
||||
self.activation_menu = G_reader_settings:readSetting("activate_menu")
|
||||
if self.activation_menu == nil then
|
||||
|
||||
@@ -21,7 +21,7 @@ local ReaderBack = EventListener:extend{
|
||||
|
||||
function ReaderBack:init()
|
||||
if Device:hasKeys() then
|
||||
self.ui.key_events.Back = { {Device.input.group.Back}, doc = "Reader back" }
|
||||
self.ui.key_events.Back = { { Device.input.group.Back } }
|
||||
end
|
||||
-- Regular function wrapping our method, to avoid re-creating
|
||||
-- an anonymous function at each page turn
|
||||
|
||||
@@ -38,11 +38,7 @@ local ReaderBookmark = InputContainer:extend{
|
||||
|
||||
function ReaderBookmark:init()
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events = {
|
||||
ShowBookmark = {
|
||||
{ "B" },
|
||||
doc = "show bookmarks" },
|
||||
}
|
||||
self.key_events.ShowBookmark = { { "B" } }
|
||||
end
|
||||
|
||||
if G_reader_settings:hasNot("bookmarks_items_per_page") then
|
||||
|
||||
@@ -20,9 +20,7 @@ function ReaderConfig:init()
|
||||
self.configurable:loadDefaults(self.options)
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
ShowConfigMenu = { {{"Press","AA"}}, doc = "show config dialog" },
|
||||
}
|
||||
self.key_events.ShowConfigMenu = { { { "Press", "AA" } } }
|
||||
end
|
||||
self:initGesListener()
|
||||
if G_reader_settings:has("activate_menu") then
|
||||
|
||||
@@ -34,15 +34,17 @@ function ReaderFont:init()
|
||||
if Device:hasKeyboard() then
|
||||
-- add shortcut for keyboard
|
||||
self.key_events = {
|
||||
ShowFontMenu = { {"F"}, doc = "show font menu" },
|
||||
ShowFontMenu = { { "F" } },
|
||||
IncreaseSize = {
|
||||
{ "Shift", Input.group.PgFwd },
|
||||
doc = "increase font size",
|
||||
event = "ChangeSize", args = 0.5 },
|
||||
event = "ChangeSize",
|
||||
args = 0.5
|
||||
},
|
||||
DecreaseSize = {
|
||||
{ "Shift", Input.group.PgBack },
|
||||
doc = "decrease font size",
|
||||
event = "ChangeSize", args = -0.5 },
|
||||
event = "ChangeSize",
|
||||
args = -0.5
|
||||
},
|
||||
}
|
||||
end
|
||||
-- Build face_table for menu
|
||||
|
||||
@@ -55,19 +55,19 @@ function ReaderHighlight:init()
|
||||
if Device:hasDPad() then
|
||||
-- Used for text selection with dpad/keys
|
||||
local QUICK_INDICTOR_MOVE = true
|
||||
self.key_events.StopHighlightIndicator = { {Device.input.group.Back}, doc = "Stop non-touch highlight", args = true } -- true: clear highlight selection
|
||||
self.key_events.UpHighlightIndicator = { {"Up"}, doc = "move indicator up", event = "MoveHighlightIndicator", args = {0, -1} }
|
||||
self.key_events.DownHighlightIndicator = { {"Down"}, doc = "move indicator down", event = "MoveHighlightIndicator", args = {0, 1} }
|
||||
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"}, doc = "move indicator left", event = "MoveHighlightIndicator", args = {-1, 0} }
|
||||
self.key_events.RightHighlightIndicator = { {"Right"}, doc = "move indicator right", event = "MoveHighlightIndicator", args = {1, 0} }
|
||||
self.key_events.HighlightPress = { {"Press"}, doc = "highlight start or end" }
|
||||
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"}, doc = "quick move indicator up", event = "MoveHighlightIndicator", args = {0, -1, QUICK_INDICTOR_MOVE} }
|
||||
self.key_events.QuickDownHighlightIndicator = { {"Shift", "Down"}, doc = "quick move indicator down", event = "MoveHighlightIndicator", args = {0, 1, QUICK_INDICTOR_MOVE} }
|
||||
self.key_events.QuickLeftHighlightIndicator = { {"Shift", "Left"}, doc = "quick move indicator left", event = "MoveHighlightIndicator", args = {-1, 0, QUICK_INDICTOR_MOVE} }
|
||||
self.key_events.QuickRightHighlightIndicator = { {"Shift", "Right"}, doc = "quick move indicator right", event = "MoveHighlightIndicator", args = {1, 0, QUICK_INDICTOR_MOVE} }
|
||||
self.key_events.StartHighlightIndicator = { {"H"}, doc = "start non-touch highlight" }
|
||||
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
|
||||
|
||||
@@ -233,8 +233,8 @@ function ReaderHighlight:init()
|
||||
end
|
||||
|
||||
function ReaderHighlight:setupTouchZones()
|
||||
-- deligate gesture listener to readerui
|
||||
self.ges_events = {}
|
||||
-- delegate gesture listener to readerui
|
||||
self.ges_events = nil
|
||||
self.onGesture = nil
|
||||
|
||||
if not Device:isTouchDevice() then return end
|
||||
|
||||
@@ -27,24 +27,23 @@ local ReaderLink = InputContainer:extend{
|
||||
|
||||
function ReaderLink:init()
|
||||
if Device:hasKeys() then
|
||||
self.key_events.SelectNextPageLink = {
|
||||
{"Tab" },
|
||||
doc = "select next page link",
|
||||
event = "SelectNextPageLink",
|
||||
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"
|
||||
}
|
||||
self.key_events.SelectPrevPageLink = {
|
||||
{"Shift", "Tab" },
|
||||
{"Sym", "Tab" }, -- Right Shift + Tab
|
||||
doc = "select previous page link",
|
||||
event = "SelectPrevPageLink",
|
||||
}
|
||||
self.key_events.GotoSelectedPageLink = {
|
||||
{ "Press" },
|
||||
doc = "go to selected page link",
|
||||
event = "GotoSelectedPageLink",
|
||||
}
|
||||
-- "Back" is handled by ReaderBack, which will call our onGoBackLink()
|
||||
-- when G_reader_settings:readSetting("back_in_reader") == "previous_location"
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ui:registerTouchZones({
|
||||
|
||||
@@ -58,16 +58,16 @@ function ReaderMenu:init()
|
||||
|
||||
if Device:hasKeys() then
|
||||
if Device:isTouchDevice() then
|
||||
self.key_events.TapShowMenu = { { "Menu" }, doc = "show menu", }
|
||||
self.key_events.TapShowMenu = { { "Menu" } }
|
||||
if Device:hasFewKeys() then
|
||||
self.key_events.TapShowMenu = { { { "Menu", "Right" } }, doc = "show menu", }
|
||||
self.key_events.TapShowMenu = { { { "Menu", "Right" } } }
|
||||
end
|
||||
else
|
||||
-- map menu key to only top menu because bottom menu is only
|
||||
-- designed for touch devices
|
||||
self.key_events.ShowMenu = { { "Menu" }, doc = "show menu", }
|
||||
self.key_events.ShowMenu = { { "Menu" } }
|
||||
if Device:hasFewKeys() then
|
||||
self.key_events.ShowMenu = { { { "Menu", "Right" } }, doc = "show menu", }
|
||||
self.key_events.ShowMenu = { { { "Menu", "Right" } } }
|
||||
end
|
||||
end
|
||||
end
|
||||
@@ -83,8 +83,8 @@ function ReaderMenu:getPreviousFile()
|
||||
end
|
||||
|
||||
function ReaderMenu:onReaderReady()
|
||||
-- deligate gesture listener to readerui
|
||||
self.ges_events = {}
|
||||
-- delegate gesture listener to readerui
|
||||
self.ges_events = nil
|
||||
self.onGesture = nil
|
||||
if not Device:isTouchDevice() then return end
|
||||
|
||||
|
||||
@@ -41,60 +41,79 @@ local ReaderPaging = InputContainer:extend{
|
||||
}
|
||||
|
||||
function ReaderPaging:init()
|
||||
self.key_events = {}
|
||||
if Device:hasKeys() then
|
||||
self.key_events.GotoNextPage = {
|
||||
{ {"RPgFwd", "LPgFwd", "Right" } }, doc = "go to next page",
|
||||
event = "GotoViewRel", args = 1,
|
||||
{ { "RPgFwd", "LPgFwd", not Device:hasFewKeys() and "Right" } },
|
||||
event = "GotoViewRel",
|
||||
args = 1,
|
||||
}
|
||||
self.key_events.GotoPrevPage = {
|
||||
{ { "RPgBack", "LPgBack", "Left" } }, doc = "go to previous page",
|
||||
event = "GotoViewRel", args = -1,
|
||||
{ { "RPgBack", "LPgBack", not Device:hasFewKeys() and "Left" } },
|
||||
event = "GotoViewRel",
|
||||
args = -1,
|
||||
}
|
||||
if Device:hasFewKeys() then
|
||||
table.remove(self.key_events.GotoNextPage[1][1], 3) -- right
|
||||
table.remove(self.key_events.GotoPrevPage[1][1], 3) -- left
|
||||
end
|
||||
self.key_events.GotoNextPos = {
|
||||
{ {"Down" } }, doc = "go to next position",
|
||||
event = "GotoPosRel", args = 1,
|
||||
{ "Down" },
|
||||
event = "GotoPosRel",
|
||||
args = 1,
|
||||
}
|
||||
self.key_events.GotoPrevPos = {
|
||||
{ { "Up" } }, doc = "go to previous position",
|
||||
event = "GotoPosRel", args = -1,
|
||||
{ "Up" },
|
||||
event = "GotoPosRel",
|
||||
args = -1,
|
||||
}
|
||||
|
||||
end
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events.GotoFirst = {
|
||||
{"1"}, doc = "go to start", event = "GotoPercent", args = 0,
|
||||
{ "1" },
|
||||
event = "GotoPercent",
|
||||
args = 0,
|
||||
}
|
||||
self.key_events.Goto11 = {
|
||||
{"2"}, doc = "go to 11%", event = "GotoPercent", args = 11,
|
||||
{ "2" },
|
||||
event = "GotoPercent",
|
||||
args = 11,
|
||||
}
|
||||
self.key_events.Goto22 = {
|
||||
{"3"}, doc = "go to 22%", event = "GotoPercent", args = 22,
|
||||
{ "3" },
|
||||
event = "GotoPercent",
|
||||
args = 22,
|
||||
}
|
||||
self.key_events.Goto33 = {
|
||||
{"4"}, doc = "go to 33%", event = "GotoPercent", args = 33,
|
||||
{ "4" },
|
||||
event = "GotoPercent",
|
||||
args = 33,
|
||||
}
|
||||
self.key_events.Goto44 = {
|
||||
{"5"}, doc = "go to 44%", event = "GotoPercent", args = 44,
|
||||
{ "5" },
|
||||
event = "GotoPercent",
|
||||
args = 44,
|
||||
}
|
||||
self.key_events.Goto55 = {
|
||||
{"6"}, doc = "go to 55%", event = "GotoPercent", args = 55,
|
||||
{ "6" },
|
||||
event = "GotoPercent",
|
||||
args = 55,
|
||||
}
|
||||
self.key_events.Goto66 = {
|
||||
{"7"}, doc = "go to 66%", event = "GotoPercent", args = 66,
|
||||
{ "7" },
|
||||
event = "GotoPercent",
|
||||
args = 66,
|
||||
}
|
||||
self.key_events.Goto77 = {
|
||||
{"8"}, doc = "go to 77%", event = "GotoPercent", args = 77,
|
||||
{ "8" },
|
||||
event = "GotoPercent",
|
||||
args = 77,
|
||||
}
|
||||
self.key_events.Goto88 = {
|
||||
{"9"}, doc = "go to 88%", event = "GotoPercent", args = 88,
|
||||
{ "9" },
|
||||
event = "GotoPercent",
|
||||
args = 88,
|
||||
}
|
||||
self.key_events.GotoLast = {
|
||||
{"0"}, doc = "go to end", event = "GotoPercent", args = 100,
|
||||
{ "0" },
|
||||
event = "GotoPercent",
|
||||
args = 100,
|
||||
}
|
||||
end
|
||||
self.pan_interval = time.s(1 / self.pan_rate)
|
||||
@@ -106,7 +125,8 @@ function ReaderPaging:onReaderReady()
|
||||
end
|
||||
|
||||
function ReaderPaging:setupTouchZones()
|
||||
self.ges_events = {}
|
||||
-- delegate gesture listener to readerui
|
||||
self.ges_events = nil
|
||||
self.onGesture = nil
|
||||
if not Device:isTouchDevice() then return end
|
||||
|
||||
|
||||
@@ -17,17 +17,25 @@ function ReaderPanning:init()
|
||||
self.key_events = {
|
||||
-- these will all generate the same event, just with different arguments
|
||||
MoveUp = {
|
||||
{ "Up" }, doc = "move visible area up",
|
||||
event = "Panning", args = {0, -1} },
|
||||
{ "Up" },
|
||||
event = "Panning",
|
||||
args = {0, -1}
|
||||
},
|
||||
MoveDown = {
|
||||
{ "Down" }, doc = "move visible area down",
|
||||
event = "Panning", args = {0, 1} },
|
||||
{ "Down" },
|
||||
event = "Panning",
|
||||
args = {0, 1}
|
||||
},
|
||||
MoveLeft = {
|
||||
{ "Left" }, doc = "move visible area left",
|
||||
event = "Panning", args = {-1, 0} },
|
||||
{ "Left" },
|
||||
event = "Panning",
|
||||
args = {-1, 0}
|
||||
},
|
||||
MoveRight = {
|
||||
{ "Right" }, doc = "move visible area right",
|
||||
event = "Panning", args = {1, 0} },
|
||||
{ "Right" },
|
||||
event = "Panning",
|
||||
args = {1, 0}
|
||||
},
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -60,58 +60,78 @@ function ReaderRolling:init()
|
||||
self.key_events = {}
|
||||
if Device:hasKeys() then
|
||||
self.key_events.GotoNextView = {
|
||||
{ {"RPgFwd", "LPgFwd", "Right" } },
|
||||
doc = "go to next view",
|
||||
event = "GotoViewRel", args = 1,
|
||||
{ { "RPgFwd", "LPgFwd", "Right" } },
|
||||
event = "GotoViewRel",
|
||||
args = 1,
|
||||
}
|
||||
self.key_events.GotoPrevView = {
|
||||
{ { "RPgBack", "LPgBack", "Left" } },
|
||||
doc = "go to previous view",
|
||||
event = "GotoViewRel", args = -1,
|
||||
event = "GotoViewRel",
|
||||
args = -1,
|
||||
}
|
||||
end
|
||||
if Device:hasDPad() then
|
||||
self.key_events.MoveUp = {
|
||||
{ "Up" },
|
||||
doc = "move view up",
|
||||
event = "Panning", args = {0, -1},
|
||||
event = "Panning",
|
||||
args = {0, -1},
|
||||
}
|
||||
self.key_events.MoveDown = {
|
||||
{ "Down" },
|
||||
doc = "move view down",
|
||||
event = "Panning", args = {0, 1},
|
||||
event = "Panning",
|
||||
args = {0, 1},
|
||||
}
|
||||
end
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events.GotoFirst = {
|
||||
{"1"}, doc = "go to start", event = "GotoPercent", args = 0,
|
||||
{ "1" },
|
||||
event = "GotoPercent",
|
||||
args = 0,
|
||||
}
|
||||
self.key_events.Goto11 = {
|
||||
{"2"}, doc = "go to 11%", event = "GotoPercent", args = 11,
|
||||
{ "2" },
|
||||
event = "GotoPercent",
|
||||
args = 11,
|
||||
}
|
||||
self.key_events.Goto22 = {
|
||||
{"3"}, doc = "go to 22%", event = "GotoPercent", args = 22,
|
||||
{ "3" },
|
||||
event = "GotoPercent",
|
||||
args = 22,
|
||||
}
|
||||
self.key_events.Goto33 = {
|
||||
{"4"}, doc = "go to 33%", event = "GotoPercent", args = 33,
|
||||
{ "4" },
|
||||
event = "GotoPercent",
|
||||
args = 33,
|
||||
}
|
||||
self.key_events.Goto44 = {
|
||||
{"5"}, doc = "go to 44%", event = "GotoPercent", args = 44,
|
||||
{ "5" },
|
||||
event = "GotoPercent",
|
||||
args = 44,
|
||||
}
|
||||
self.key_events.Goto55 = {
|
||||
{"6"}, doc = "go to 55%", event = "GotoPercent", args = 55,
|
||||
{ "6" },
|
||||
event = "GotoPercent",
|
||||
args = 55,
|
||||
}
|
||||
self.key_events.Goto66 = {
|
||||
{"7"}, doc = "go to 66%", event = "GotoPercent", args = 66,
|
||||
{ "7" },
|
||||
event = "GotoPercent",
|
||||
args = 66,
|
||||
}
|
||||
self.key_events.Goto77 = {
|
||||
{"8"}, doc = "go to 77%", event = "GotoPercent", args = 77,
|
||||
{ "8" },
|
||||
event = "GotoPercent",
|
||||
args = 77,
|
||||
}
|
||||
self.key_events.Goto88 = {
|
||||
{"9"}, doc = "go to 88%", event = "GotoPercent", args = 88,
|
||||
{ "9" },
|
||||
event = "GotoPercent",
|
||||
args = 88,
|
||||
}
|
||||
self.key_events.GotoLast = {
|
||||
{"0"}, doc = "go to end", event = "GotoPercent", args = 100,
|
||||
{ "0" },
|
||||
event = "GotoPercent",
|
||||
args = 100,
|
||||
}
|
||||
end
|
||||
self.pan_interval = time.s(1 / self.pan_rate)
|
||||
@@ -311,7 +331,8 @@ function ReaderRolling:onReaderReady()
|
||||
end
|
||||
|
||||
function ReaderRolling:setupTouchZones()
|
||||
self.ges_events = {}
|
||||
-- delegate gesture listener to readerui
|
||||
self.ges_events = nil
|
||||
self.onGesture = nil
|
||||
if not Device:isTouchDevice() then return end
|
||||
|
||||
|
||||
@@ -12,13 +12,15 @@ function ReaderRotation:init()
|
||||
self.key_events = {
|
||||
-- these will all generate the same event, just with different arguments
|
||||
RotateLeft = {
|
||||
{"J"},
|
||||
doc = "rotate left by 90 degrees",
|
||||
event = "Rotate", args = -90 },
|
||||
{ "J" },
|
||||
event = "Rotate",
|
||||
args = -90
|
||||
},
|
||||
RotateRight = {
|
||||
{"K"},
|
||||
doc = "rotate right by 90 degrees",
|
||||
event = "Rotate", args = 90 },
|
||||
{ "K" },
|
||||
event = "Rotate",
|
||||
args = 90
|
||||
},
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -51,9 +51,7 @@ function TweakInfoWidget:init()
|
||||
}
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
Close = { {Device.input.group.Back}, doc = "cancel" }
|
||||
}
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
|
||||
local content = VerticalGroup:new{
|
||||
|
||||
@@ -36,11 +36,7 @@ local ReaderToc = InputContainer:extend{
|
||||
|
||||
function ReaderToc:init()
|
||||
if Device:hasKeyboard() then
|
||||
self.key_events = {
|
||||
ShowToc = {
|
||||
{ "T" },
|
||||
doc = "show Table of Content menu" },
|
||||
}
|
||||
self.key_events.ShowToc = { { "T" } }
|
||||
end
|
||||
|
||||
if G_reader_settings:hasNot("toc_items_per_page") then
|
||||
|
||||
@@ -95,48 +95,48 @@ function ReaderZooming:init()
|
||||
self.key_events = {
|
||||
ZoomIn = {
|
||||
{ "Shift", Input.group.PgFwd },
|
||||
doc = "zoom in",
|
||||
event = "Zoom", args = "in"
|
||||
event = "Zoom",
|
||||
args = "in",
|
||||
},
|
||||
ZoomOut = {
|
||||
{ "Shift", Input.group.PgBack },
|
||||
doc = "zoom out",
|
||||
event = "Zoom", args = "out"
|
||||
event = "Zoom",
|
||||
args = "out",
|
||||
},
|
||||
ZoomToFitPage = {
|
||||
{ "A" },
|
||||
doc = "zoom to fit page",
|
||||
event = "SetZoomMode", args = "page"
|
||||
event = "SetZoomMode",
|
||||
args = "page",
|
||||
},
|
||||
ZoomToFitContent = {
|
||||
{ "Shift", "A" },
|
||||
doc = "zoom to fit content",
|
||||
event = "SetZoomMode", args = "content"
|
||||
event = "SetZoomMode",
|
||||
args = "content",
|
||||
},
|
||||
ZoomToFitPageWidth = {
|
||||
{ "S" },
|
||||
doc = "zoom to fit page width",
|
||||
event = "SetZoomMode", args = "pagewidth"
|
||||
event = "SetZoomMode",
|
||||
args = "pagewidth",
|
||||
},
|
||||
ZoomToFitContentWidth = {
|
||||
{ "Shift", "S" },
|
||||
doc = "zoom to fit content width",
|
||||
event = "SetZoomMode", args = "contentwidth"
|
||||
event = "SetZoomMode",
|
||||
args = "contentwidth",
|
||||
},
|
||||
ZoomToFitPageHeight = {
|
||||
{ "D" },
|
||||
doc = "zoom to fit page height",
|
||||
event = "SetZoomMode", args = "pageheight"
|
||||
event = "SetZoomMode",
|
||||
args = "pageheight",
|
||||
},
|
||||
ZoomToFitContentHeight = {
|
||||
{ "Shift", "D" },
|
||||
doc = "zoom to fit content height",
|
||||
event = "SetZoomMode", args = "contentheight"
|
||||
event = "SetZoomMode",
|
||||
args = "contentheight",
|
||||
},
|
||||
ZoomManual = {
|
||||
{ "Shift", "M" },
|
||||
doc = "manual zoom mode",
|
||||
event = "SetZoomMode", args = "manual"
|
||||
event = "SetZoomMode",
|
||||
args = "manual",
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@@ -123,8 +123,8 @@ function ReaderUI:init()
|
||||
SettingsMigration:migrateSettings(self.doc_settings)
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Home = { {"Home"}, doc = "open file browser" }
|
||||
self.key_events.Reload = { {"F5"}, doc = "reload document" }
|
||||
self.key_events.Home = { { "Home" } }
|
||||
self.key_events.Reload = { { "F5" } }
|
||||
end
|
||||
|
||||
-- a view container (so it must be child #1!)
|
||||
|
||||
@@ -51,8 +51,10 @@ least one key in this table must match.
|
||||
|
||||
E.g.:
|
||||
|
||||
Key:match({ "Alt", "K" }) -- match Alt-K
|
||||
Key:match({ "Alt", { "K", "L" }}) -- match Alt-K _or_ Alt-L
|
||||
Key:match({ "K" }) -- match K
|
||||
Key:match({ { "K", "L" } }) -- match K _or_ L
|
||||
Key:match({ "Alt", "K" }) -- match Alt+K
|
||||
Key:match({ "Alt", { "K", "L" }}) -- match Alt+K _or_ Alt+L
|
||||
]]
|
||||
function Key:match(sequence)
|
||||
local mod_keys = {} -- a hash table for checked modifiers
|
||||
|
||||
@@ -51,14 +51,14 @@ function BBoxWidget:init()
|
||||
}
|
||||
else
|
||||
self._confirm_stage = 1 -- 1 for left-top, 2 for right-bottom
|
||||
self.key_events.MoveIndicatorUp = { { "Up" }, doc="Move indicator up", event="MoveIndicator", args = { 0, -1 } }
|
||||
self.key_events.MoveIndicatorDown = { { "Down" }, doc="Move indicator down", event="MoveIndicator", args = { 0, 1 } }
|
||||
self.key_events.MoveIndicatorLeft = { { "Left" }, doc="Move indicator left", event="MoveIndicator", args = { -1, 0 } }
|
||||
self.key_events.MoveIndicatorRight = { { "Right" }, doc="Move indicator right", event="MoveIndicator", args = { 1, 0 } }
|
||||
self.key_events.MoveIndicatorUp = { { "Up" }, event="MoveIndicator", args = { 0, -1 } }
|
||||
self.key_events.MoveIndicatorDown = { { "Down" }, event="MoveIndicator", args = { 0, 1 } }
|
||||
self.key_events.MoveIndicatorLeft = { { "Left" }, event="MoveIndicator", args = { -1, 0 } }
|
||||
self.key_events.MoveIndicatorRight = { { "Right" }, event="MoveIndicator", args = { 1, 0 } }
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "close windows" }
|
||||
self.key_events.Select = { {"Press"}, doc = "confirm adjust" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
self.key_events.Select = { { "Press" } }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -548,43 +548,45 @@ function BookMapWidget:init()
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
Close = { {Input.group.Back}, doc = "close page" },
|
||||
ScrollRowUp = {{"Up"}, doc = "scroll up"},
|
||||
ScrollRowDown = {{"Down"}, doc = "scrol down"},
|
||||
ScrollPageUp = {{Input.group.PgBack}, doc = "prev page"},
|
||||
ScrollPageDown = {{Input.group.PgFwd}, doc = "next page"},
|
||||
Close = { { Input.group.Back } },
|
||||
ScrollRowUp = { { "Up" } },
|
||||
ScrollRowDown = { { "Down" } },
|
||||
ScrollPageUp = { { Input.group.PgBack } },
|
||||
ScrollPageDown = { { Input.group.PgFwd } },
|
||||
}
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Swipe = {
|
||||
GestureRange:new{
|
||||
ges = "swipe",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.MultiSwipe = {
|
||||
GestureRange:new{
|
||||
ges = "multiswipe",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.Tap = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.Pinch = {
|
||||
GestureRange:new{
|
||||
ges = "pinch",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.Spread = {
|
||||
GestureRange:new{
|
||||
ges = "spread",
|
||||
range = self.dimen,
|
||||
}
|
||||
self.ges_events = {
|
||||
Swipe = {
|
||||
GestureRange:new{
|
||||
ges = "swipe",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
MultiSwipe = {
|
||||
GestureRange:new{
|
||||
ges = "multiswipe",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
Tap = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
Pinch = {
|
||||
GestureRange:new{
|
||||
ges = "pinch",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
Spread = {
|
||||
GestureRange:new{
|
||||
ges = "spread",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
}
|
||||
-- No need for any long-press handler: page slots may be small and we can't
|
||||
-- really target a precise page slot with our fat finger above it...
|
||||
|
||||
@@ -98,7 +98,7 @@ function BookStatusWidget:init()
|
||||
}
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { { Device.input.group.Back }, doc = "close dialog" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Swipe = {
|
||||
|
||||
@@ -190,14 +190,12 @@ function Button:init()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Tap Button",
|
||||
},
|
||||
HoldSelectButton = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Button",
|
||||
},
|
||||
-- Safe-guard for when used inside a MovableContainer
|
||||
HoldReleaseSelectButton = {
|
||||
|
||||
@@ -62,9 +62,7 @@ local ButtonDialog = InputContainer:extend{
|
||||
function ButtonDialog:init()
|
||||
if Device:hasKeys() then
|
||||
local close_keys = Device:hasFewKeys() and { "Back", "Left" } or Device.input.group.Back
|
||||
self.key_events = {
|
||||
Close = { { close_keys }, doc = "close button dialog" }
|
||||
}
|
||||
self.key_events.Close = { { close_keys } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.TapClose = {
|
||||
|
||||
@@ -45,9 +45,7 @@ function ButtonDialogTitle:init()
|
||||
if self.dismissable then
|
||||
if Device:hasKeys() then
|
||||
local close_keys = Device:hasFewKeys() and { "Back", "Left" } or Device.input.group.Back
|
||||
self.key_events = {
|
||||
Close = { { close_keys }, doc = "close button dialog" }
|
||||
}
|
||||
self.key_events.Close = { { close_keys } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.TapClose = {
|
||||
|
||||
@@ -103,14 +103,12 @@ function CheckButton:initCheckButton(checked)
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Tap Button",
|
||||
},
|
||||
HoldCheckButton = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Button",
|
||||
},
|
||||
-- Safe-guard for when used inside a MovableContainer
|
||||
HoldReleaseCheckButton = {
|
||||
@@ -118,7 +116,6 @@ function CheckButton:initCheckButton(checked)
|
||||
ges = "hold_release",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Release Button",
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
@@ -57,7 +57,6 @@ function CloseButton:init()
|
||||
-- drawn. so use callback to get range at runtime.
|
||||
range = function() return self.dimen end,
|
||||
},
|
||||
doc = "Tap on close button",
|
||||
}
|
||||
|
||||
self.ges_events.HoldClose = {
|
||||
@@ -65,7 +64,6 @@ function CloseButton:init()
|
||||
ges = "hold_release",
|
||||
range = function() return self.dimen end,
|
||||
},
|
||||
doc = "Hold on close button",
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -60,14 +60,12 @@ function OptionTextItem:init()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Select Option Item",
|
||||
},
|
||||
HoldSelect = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Option Item",
|
||||
},
|
||||
}
|
||||
end
|
||||
@@ -134,14 +132,12 @@ function OptionIconItem:init()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Select Option Item",
|
||||
},
|
||||
HoldSelect = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Option Item",
|
||||
},
|
||||
|
||||
}
|
||||
@@ -898,7 +894,7 @@ function ConfigDialog:init()
|
||||
if Device:hasKeys() then
|
||||
-- set up keyboard events
|
||||
local close_keys = Device:hasFewKeys() and { "Back", "Left" } or Device.input.group.Back
|
||||
self.key_events.Close = { { close_keys }, doc = "close config menu" }
|
||||
self.key_events.Close = { { close_keys } }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ function ConfirmBox:init()
|
||||
}
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "cancel" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
end
|
||||
local text_widget = TextBoxWidget:new{
|
||||
|
||||
@@ -1,23 +1,33 @@
|
||||
--[[--
|
||||
An InputContainer is a WidgetContainer that handles user input events including multi touches
|
||||
and key presses.
|
||||
An InputContainer is a WidgetContainer that handles user input events including multi touches and key presses.
|
||||
|
||||
See @{InputContainer:registerTouchZones} for examples of how to listen for multi touch input.
|
||||
|
||||
This example illustrates how to listen for a key press input event:
|
||||
This example illustrates how to listen for a key press input event via the `key_events` hashmap:
|
||||
|
||||
PanBy20 = {
|
||||
{ "Shift", Input.group.Cursor },
|
||||
seqtext = "Shift+Cursor",
|
||||
doc = "pan by 20px",
|
||||
event = "Pan", args = 20, is_inactive = true,
|
||||
key_events = {
|
||||
PanBy20 = {
|
||||
{ "Shift", Input.group.Cursor }, -- Shift + (any member of) Cursor
|
||||
event = "Pan",
|
||||
args = 20,
|
||||
is_inactive = true,
|
||||
},
|
||||
PanNormal = {
|
||||
{ Input.group.Cursor }, -- Any member of Cursor (itself an array)
|
||||
event = "Pan",
|
||||
args = 10,
|
||||
},
|
||||
Exit = {
|
||||
{ "Alt", "F4" }, -- Alt + F4
|
||||
{ "Ctrl", "Q" }, -- Ctrl + Q
|
||||
},
|
||||
Home = {
|
||||
{ { "Home", "H" } }, -- Any of Home or H (note the extra nesting!)
|
||||
},
|
||||
End = {
|
||||
{ "End" }, -- NOTE: For a *single* key, we can forgo the nesting (c.f., match @ device/key).
|
||||
},
|
||||
},
|
||||
PanNormal = {
|
||||
{ Input.group.Cursor },
|
||||
seqtext = "Cursor",
|
||||
doc = "pan by 10 px", event = "Pan", args = 10,
|
||||
},
|
||||
Quit = { {"Home"} },
|
||||
|
||||
It is recommended to reference configurable sequences from another table
|
||||
and to store that table as a configuration setting.
|
||||
@@ -214,6 +224,7 @@ function InputContainer:onKeyPress(key)
|
||||
for name, seq in pairs(self.key_events) do
|
||||
if not seq.is_inactive then
|
||||
for _, oneseq in ipairs(seq) do
|
||||
-- NOTE: key is a device/key object, this isn't string.match!
|
||||
if key:match(oneseq) then
|
||||
local eventname = seq.event or name
|
||||
return self:handleEvent(Event:new(eventname, seq.args, key))
|
||||
|
||||
@@ -74,14 +74,15 @@ function MovableContainer:init()
|
||||
-- which is somehow nice and gives a kind of magnetic move that
|
||||
-- stick the widget to some invisible rulers.
|
||||
-- (Touch is needed for accurate pan)
|
||||
self.ges_events = {}
|
||||
self.ges_events.MovableTouch = not ignore.touch and { GestureRange:new{ ges = "touch", range = range } } or nil
|
||||
self.ges_events.MovableSwipe = not ignore.swipe and { GestureRange:new{ ges = "swipe", range = range } } or nil
|
||||
self.ges_events.MovableHold = not ignore.hold and { GestureRange:new{ ges = "hold", range = range } } or nil
|
||||
self.ges_events.MovableHoldPan = not ignore.hold_pan and { GestureRange:new{ ges = "hold_pan", range = range } } or nil
|
||||
self.ges_events.MovableHoldRelease = not ignore.hold_release and { GestureRange:new{ ges = "hold_release", range = range } } or nil
|
||||
self.ges_events.MovablePan = not ignore.pan and { GestureRange:new{ ges = "pan", range = range } } or nil
|
||||
self.ges_events.MovablePanRelease = not ignore.pan_release and { GestureRange:new{ ges = "pan_release", range = range } } or nil
|
||||
self.ges_events = {
|
||||
MovableTouch = not ignore.touch and { GestureRange:new{ ges = "touch", range = range } } or nil,
|
||||
MovableSwipe = not ignore.swipe and { GestureRange:new{ ges = "swipe", range = range } } or nil,
|
||||
MovableHold = not ignore.hold and { GestureRange:new{ ges = "hold", range = range } } or nil,
|
||||
MovableHoldPan = not ignore.hold_pan and { GestureRange:new{ ges = "hold_pan", range = range } } or nil,
|
||||
MovableHoldRelease = not ignore.hold_release and { GestureRange:new{ ges = "hold_release", range = range } } or nil,
|
||||
MovablePan = not ignore.pan and { GestureRange:new{ ges = "pan", range = range } } or nil,
|
||||
MovablePanRelease = not ignore.pan_release and { GestureRange:new{ ges = "pan_release", range = range } } or nil,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -79,14 +79,15 @@ function ScrollableContainer:init()
|
||||
-- Pan happens if he doesn't hold at start, but holds at end
|
||||
-- Swipe happens if he doesn't hold at any moment
|
||||
-- (Touch is needed for accurate pan)
|
||||
self.ges_events = {}
|
||||
self.ges_events.ScrollableTouch = not ignore.touch and { GestureRange:new{ ges = "touch", range = range } } or nil
|
||||
self.ges_events.ScrollableSwipe = not ignore.swipe and { GestureRange:new{ ges = "swipe", range = range } } or nil
|
||||
self.ges_events.ScrollableHold = not ignore.hold and { GestureRange:new{ ges = "hold", range = range } } or nil
|
||||
self.ges_events.ScrollableHoldPan = not ignore.hold_pan and { GestureRange:new{ ges = "hold_pan", range = range } } or nil
|
||||
self.ges_events.ScrollableHoldRelease = not ignore.hold_release and { GestureRange:new{ ges = "hold_release", range = range } } or nil
|
||||
self.ges_events.ScrollablePan = not ignore.pan and { GestureRange:new{ ges = "pan", range = range } } or nil
|
||||
self.ges_events.ScrollablePanRelease = not ignore.pan_release and { GestureRange:new{ ges = "pan_release", range = range } } or nil
|
||||
self.ges_events = {
|
||||
ScrollableTouch = not ignore.touch and { GestureRange:new{ ges = "touch", range = range } } or nil,
|
||||
ScrollableSwipe = not ignore.swipe and { GestureRange:new{ ges = "swipe", range = range } } or nil,
|
||||
ScrollableHold = not ignore.hold and { GestureRange:new{ ges = "hold", range = range } } or nil,
|
||||
ScrollableHoldPan = not ignore.hold_pan and { GestureRange:new{ ges = "hold_pan", range = range } } or nil,
|
||||
ScrollableHoldRelease = not ignore.hold_release and { GestureRange:new{ ges = "hold_release", range = range } } or nil,
|
||||
ScrollablePan = not ignore.pan and { GestureRange:new{ ges = "pan", range = range } } or nil,
|
||||
ScrollablePanRelease = not ignore.pan_release and { GestureRange:new{ ges = "pan_release", range = range } } or nil,
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -117,18 +117,16 @@ function DateTimeWidget:init()
|
||||
end
|
||||
self.width = self.width or math.floor(math.min(self.screen_width, self.screen_height) * width_scale_factor)
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "close date widget" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {
|
||||
TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
w = self.screen_width,
|
||||
h = self.screen_height,
|
||||
}
|
||||
},
|
||||
self.ges_events.TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
w = self.screen_width,
|
||||
h = self.screen_height,
|
||||
}
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@@ -96,9 +96,9 @@ function DictQuickLookup:init()
|
||||
self.image_alt_face = Font:getFace("cfont", font_size_alt)
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
ReadPrevResult = {{Input.group.PgBack}, doc = "read prev result"},
|
||||
ReadNextResult = {{Input.group.PgFwd}, doc = "read next result"},
|
||||
Close = { {Input.group.Back}, doc = "close quick lookup" }
|
||||
ReadPrevResult = { { Input.group.PgBack } },
|
||||
ReadNextResult = { { Input.group.PgFwd } },
|
||||
Close = { { Input.group.Back } },
|
||||
}
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
|
||||
@@ -67,18 +67,16 @@ function DoubleSpinWidget:init()
|
||||
self.width = math.floor(math.min(self.screen_width, self.screen_height) * self.width_factor)
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "close doublespin widget" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {
|
||||
TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
w = self.screen_width,
|
||||
h = self.screen_height,
|
||||
}
|
||||
},
|
||||
self.ges_events.TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
w = self.screen_width,
|
||||
h = self.screen_height,
|
||||
}
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@@ -46,26 +46,26 @@ local function populateEventMappings()
|
||||
if Device:hasDPad() then
|
||||
local event_keys = {}
|
||||
-- these will all generate the same event, just with different arguments
|
||||
table.insert(event_keys, {"FocusUp", { {"Up"}, doc = "move focus up", event = "FocusMove", args = {0, -1} } })
|
||||
table.insert(event_keys, {"FocusRight", { {"Right"}, doc = "move focus right", event = "FocusMove", args = {1, 0} } })
|
||||
table.insert(event_keys, {"FocusDown", { {"Down"}, doc = "move focus down", event = "FocusMove", args = {0, 1} } })
|
||||
table.insert(event_keys, {"Press", { {"Press"}, doc = "tap the widget", event="Press" }})
|
||||
table.insert(event_keys, { "FocusUp", { { "Up" }, event = "FocusMove", args = {0, -1} } })
|
||||
table.insert(event_keys, { "FocusRight", { { "Right" }, event = "FocusMove", args = {1, 0} } })
|
||||
table.insert(event_keys, { "FocusDown", { { "Down" }, event = "FocusMove", args = {0, 1} } })
|
||||
table.insert(event_keys, { "Press", { { "Press" }, event = "Press" } })
|
||||
local FEW_KEYS_END_INDEX = #event_keys -- Few keys device: only setup up, down, right and press
|
||||
|
||||
table.insert(event_keys, {"FocusLeft", { {"Left"}, doc = "move focus left", event = "FocusMove", args = {-1, 0} } })
|
||||
table.insert(event_keys, { "FocusLeft", { { "Left" }, event = "FocusMove", args = {-1, 0} } })
|
||||
local NORMAL_KEYS_END_INDEX = #event_keys
|
||||
|
||||
-- Advanced Feature: following event handlers can be enabled via settings.reader.lua
|
||||
-- Key combinations (Sym, Alt+Up, Tab, Shift+Tab and so on) are not used but shown as examples here
|
||||
table.insert(event_keys, {"Hold", { {"Sym", "AA"}, doc = "tap and hold the widget", event="Hold" } })
|
||||
-- Key combinations (Sym+AA, Alt+Up, Tab, Shift+Tab and so on) are not used but shown as examples here
|
||||
table.insert(event_keys, { "Hold", { { "Sym", "AA" }, event = "Hold" } })
|
||||
-- half rows/columns move, it is helpful for slow device like Kindle DX to move quickly
|
||||
table.insert(event_keys, {"HalfFocusUp", { {"Alt", "Up"}, doc = "move focus half columns up", event = "FocusHalfMove", args = {"up"} } })
|
||||
table.insert(event_keys, {"HalfFocusRight", { {"Alt", "Right"}, doc = "move focus half rows right", event = "FocusHalfMove", args = {"right"} } })
|
||||
table.insert(event_keys, {"HalfFocusDown", { {"Alt", "Down"}, doc = "move focus half columns down", event = "FocusHalfMove", args = {"down"} } })
|
||||
table.insert(event_keys, {"HalfFocusLeft", { {"Alt", "Left"}, doc = "move focus half rows left", event = "FocusHalfMove", args = {"left"} } })
|
||||
table.insert(event_keys, { "HalfFocusUp", { { "Alt", "Up" }, event = "FocusHalfMove", args = {"up"} } })
|
||||
table.insert(event_keys, { "HalfFocusRight", { { "Alt", "Right" }, event = "FocusHalfMove", args = {"right"} } })
|
||||
table.insert(event_keys, { "HalfFocusDown", { { "Alt", "Down" }, event = "FocusHalfMove", args = {"down"} } })
|
||||
table.insert(event_keys, { "HalfFocusLeft", { { "Alt", "Left" }, event = "FocusHalfMove", args = {"left"} } })
|
||||
-- for PC navigation behavior support
|
||||
table.insert(event_keys, {"FocusNext", { {"Tab"}, doc = "move focus to next widget", event="FocusNext"} })
|
||||
table.insert(event_keys, {"FocusPrevious", { {"Shift", "Tab"}, doc = "move focus to previous widget", event="FocusPrevious"} })
|
||||
table.insert(event_keys, { "FocusNext", { { "Tab" }, event = "FocusNext" } })
|
||||
table.insert(event_keys, { "FocusPrevious", { { "Shift", "Tab" }, event = "FocusPrevious" } })
|
||||
|
||||
for i = 1, FEW_KEYS_END_INDEX do
|
||||
local key_name = event_keys[i][1]
|
||||
|
||||
@@ -188,8 +188,8 @@ function FootnoteWidget:init()
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
Close = { {Device.input.group.Back}, doc = "cancel" },
|
||||
Follow = { {"Press"}, doc = "follow link" },
|
||||
Close = { { Device.input.group.Back } },
|
||||
Follow = { { "Press" } },
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -80,7 +80,7 @@ function FrontLightWidget:init()
|
||||
|
||||
-- Input
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "close frontlight" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {
|
||||
|
||||
@@ -27,12 +27,10 @@ local HtmlBoxWidget = InputContainer:extend{
|
||||
|
||||
function HtmlBoxWidget:init()
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {
|
||||
TapText = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = function() return self.dimen end,
|
||||
},
|
||||
self.ges_events.TapText = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = function() return self.dimen end,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@@ -81,21 +81,18 @@ function IconButton:initGesListener()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Tap IconButton",
|
||||
},
|
||||
HoldIconButton = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold IconButton",
|
||||
},
|
||||
HoldReleaseIconButton = {
|
||||
GestureRange:new{
|
||||
ges = "hold_release",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Release IconButton",
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
@@ -84,16 +84,16 @@ function ImageViewer:init()
|
||||
if type(self.image) == "table" then
|
||||
-- if self.image is a table, then use hardware keys to change image
|
||||
self.key_events = {
|
||||
Close = { {Device.input.group.Back}, doc = "close viewer" },
|
||||
ShowPrevImage = { {Device.input.group.PgBack}, doc = "Previous image" },
|
||||
ShowNextImage = { {Device.input.group.PgFwd}, doc = "Next image" },
|
||||
Close = { { Device.input.group.Back } },
|
||||
ShowPrevImage = { { Device.input.group.PgBack } },
|
||||
ShowNextImage = { { Device.input.group.PgFwd } },
|
||||
}
|
||||
else
|
||||
-- otherwise, use hardware keys to zoom in/out
|
||||
self.key_events = {
|
||||
Close = { {Device.input.group.Back}, doc = "close viewer" },
|
||||
ZoomIn = { {Device.input.group.PgBack}, doc = "Zoom In" },
|
||||
ZoomOut = { {Device.input.group.PgFwd}, doc = "Zoom out" },
|
||||
Close = { { Device.input.group.Back } },
|
||||
ZoomIn = { { Device.input.group.PgBack } },
|
||||
ZoomOut = { { Device.input.group.PgFwd } },
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -79,10 +79,7 @@ local InfoMessage = InputContainer:extend{
|
||||
function InfoMessage:init()
|
||||
if self.dismissable then
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
AnyKeyPressed = { { Input.group.Any },
|
||||
seqtext = "any key", doc = "close dialog" }
|
||||
}
|
||||
self.key_events.AnyKeyPressed = { { Input.group.Any } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.TapClose = {
|
||||
|
||||
@@ -433,17 +433,15 @@ function InputDialog:init()
|
||||
frame
|
||||
}
|
||||
if Device:isTouchDevice() then -- is used to hide the keyboard with a tap outside of inputbox
|
||||
self.ges_events = {
|
||||
Tap = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = self[1].dimen, -- screen above the keyboard
|
||||
},
|
||||
self.ges_events.Tap = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = self[1].dimen, -- screen above the keyboard
|
||||
},
|
||||
}
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events.CloseDialog = { {Device.input.group.Back}, doc = "close dialog" }
|
||||
self.key_events.CloseDialog = { { Device.input.group.Back } }
|
||||
end
|
||||
if self._added_widgets then
|
||||
for _, widget in ipairs(self._added_widgets) do
|
||||
|
||||
@@ -168,7 +168,7 @@ function KeyboardLayoutDialog:init()
|
||||
self.movable,
|
||||
}
|
||||
if Device:hasKeys() then
|
||||
self.key_events.CloseDialog = { {Device.input.group.Back}, doc = "close dialog" }
|
||||
self.key_events.CloseDialog = { { Device.input.group.Back } }
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
@@ -302,9 +302,9 @@ function KeyValuePage:init()
|
||||
end
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = {{Input.group.Back}, doc = "close page" }
|
||||
self.key_events.NextPage = {{Input.group.PgFwd}, doc = "next page"}
|
||||
self.key_events.PrevPage = {{Input.group.PgBack}, doc = "prev page"}
|
||||
self.key_events.Close = { { Input.group.Back } }
|
||||
self.key_events.NextPage = { { Input.group.PgFwd } }
|
||||
self.key_events.PrevPage = { { Input.group.PgBack } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Swipe = {
|
||||
|
||||
@@ -128,14 +128,12 @@ function MenuItem:init()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Select Menu Item",
|
||||
},
|
||||
HoldSelect = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Menu Item",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -923,16 +921,12 @@ function Menu:init()
|
||||
|
||||
if Device:hasKeys() then
|
||||
-- set up keyboard events
|
||||
self.key_events.Close = { {Input.group.Back}, doc = "close menu" }
|
||||
self.key_events.Close = { { Input.group.Back } }
|
||||
if Device:hasFewKeys() then
|
||||
self.key_events.Close = { {"Left"}, doc = "close menu" }
|
||||
self.key_events.Close = { { "Left" } }
|
||||
end
|
||||
self.key_events.NextPage = {
|
||||
{Input.group.PgFwd}, doc = "goto next page of the menu"
|
||||
}
|
||||
self.key_events.PrevPage = {
|
||||
{Input.group.PgBack}, doc = "goto previous page of the menu"
|
||||
}
|
||||
self.key_events.NextPage = { { Input.group.PgFwd } }
|
||||
self.key_events.PrevPage = { { Input.group.PgBack } }
|
||||
end
|
||||
|
||||
if Device:hasDPad() then
|
||||
@@ -940,11 +934,9 @@ function Menu:init()
|
||||
self.key_events.FocusRight = nil
|
||||
-- shortcut icon is not needed for touch device
|
||||
if self.is_enable_shortcut then
|
||||
self.key_events.SelectByShortCut = { {self.item_shortcuts} }
|
||||
self.key_events.SelectByShortCut = { { self.item_shortcuts } }
|
||||
end
|
||||
self.key_events.Right = {
|
||||
{"Right"}, doc = "hold menu item"
|
||||
}
|
||||
self.key_events.Right = { { "Right" } }
|
||||
end
|
||||
|
||||
if #self.item_table > 0 then
|
||||
|
||||
@@ -71,7 +71,7 @@ function MultiConfirmBox:init()
|
||||
}
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "cancel" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
end
|
||||
local content = HorizontalGroup:new{
|
||||
|
||||
@@ -204,12 +204,10 @@ function NetworkItem:init()
|
||||
}
|
||||
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {
|
||||
TapSelect = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
}
|
||||
self.ges_events.TapSelect = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
@@ -71,10 +71,7 @@ function Notification:init()
|
||||
if not self.toast then
|
||||
-- If not toast, closing is handled in here
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
AnyKeyPressed = { { Input.group.Any },
|
||||
seqtext = "any key", doc = "close dialog" }
|
||||
}
|
||||
self.key_events.AnyKeyPressed = { { Input.group.Any } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.TapClose = {
|
||||
|
||||
@@ -52,49 +52,51 @@ function PageBrowserWidget:init()
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
Close = { {Device.input.group.Back}, doc = "close page" },
|
||||
ScrollRowUp = {{"Up"}, doc = "scroll up"},
|
||||
ScrollRowDown = {{"Down"}, doc = "scrol down"},
|
||||
ScrollPageUp = {{Input.group.PgBack}, doc = "prev page"},
|
||||
ScrollPageDown = {{Input.group.PgFwd}, doc = "next page"},
|
||||
Close = { { Device.input.group.Back } },
|
||||
ScrollRowUp = { { "Up" } },
|
||||
ScrollRowDown = { { "Down" } },
|
||||
ScrollPageUp = { { Input.group.PgBack } },
|
||||
ScrollPageDown = { { Input.group.PgFwd } },
|
||||
}
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Swipe = {
|
||||
GestureRange:new{
|
||||
ges = "swipe",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.MultiSwipe = {
|
||||
GestureRange:new{
|
||||
ges = "multiswipe",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.Tap = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.Hold = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.Pinch = {
|
||||
GestureRange:new{
|
||||
ges = "pinch",
|
||||
range = self.dimen,
|
||||
}
|
||||
}
|
||||
self.ges_events.Spread = {
|
||||
GestureRange:new{
|
||||
ges = "spread",
|
||||
range = self.dimen,
|
||||
}
|
||||
self.ges_events = {
|
||||
Swipe = {
|
||||
GestureRange:new{
|
||||
ges = "swipe",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
MultiSwipe = {
|
||||
GestureRange:new{
|
||||
ges = "multiswipe",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
Tap = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
Hold = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
Pinch = {
|
||||
GestureRange:new{
|
||||
ges = "pinch",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
Spread = {
|
||||
GestureRange:new{
|
||||
ges = "spread",
|
||||
range = self.dimen,
|
||||
}
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
|
||||
@@ -83,9 +83,7 @@ function PhysicalKeyboard:init()
|
||||
for _,row in ipairs(Device.keyboard_layout) do
|
||||
util.arrayAppend(all_keys, row)
|
||||
end
|
||||
self.key_events = {
|
||||
KeyPress = { { all_keys }, }
|
||||
}
|
||||
self.key_events.KeyPress = { { all_keys } }
|
||||
|
||||
self.dimen = Geom:new{ x = 0, y = 0, w = 0, h = 0 }
|
||||
|
||||
|
||||
@@ -43,10 +43,7 @@ local QRMessage = InputContainer:extend{
|
||||
|
||||
function QRMessage:init()
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
AnyKeyPressed = { { Input.group.Any },
|
||||
seqtext = "any key", doc = "close dialog" }
|
||||
}
|
||||
self.key_events.AnyKeyPressed = { { Input.group.Any } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.TapClose = {
|
||||
|
||||
@@ -49,19 +49,17 @@ function RadioButtonWidget:init()
|
||||
self.width = math.floor(math.min(self.screen_width, self.screen_height) * self.width_factor)
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "close widget" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
self.ges_events = {
|
||||
TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
w = self.screen_width,
|
||||
h = self.screen_height,
|
||||
}
|
||||
},
|
||||
self.ges_events.TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
w = self.screen_width,
|
||||
h = self.screen_height,
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
self:update()
|
||||
end
|
||||
|
||||
|
||||
@@ -18,12 +18,9 @@ local ScreenSaverWidget = InputContainer:extend{
|
||||
|
||||
function ScreenSaverWidget:init()
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
AnyKeyPressed = { { Device.input.group.Any }, seqtext = "any key", doc = "close widget" },
|
||||
}
|
||||
self.key_events.AnyKeyPressed = { { Device.input.group.Any } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {}
|
||||
if G_reader_settings:readSetting("screensaver_delay") == "gesture" then
|
||||
self:setupGestureEvents()
|
||||
end
|
||||
@@ -34,7 +31,7 @@ function ScreenSaverWidget:init()
|
||||
w = Screen:getWidth(),
|
||||
h = Screen:getHeight(),
|
||||
}
|
||||
self.ges_events["Tap"] = { GestureRange:new{ ges = "tap", range = range } }
|
||||
self.ges_events.Tap = { GestureRange:new{ ges = "tap", range = range } }
|
||||
end
|
||||
end
|
||||
self:update()
|
||||
|
||||
@@ -79,8 +79,8 @@ function ScrollHtmlWidget:init()
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
ScrollDown = {{Input.group.PgFwd}, doc = "scroll down"},
|
||||
ScrollUp = {{Input.group.PgBack}, doc = "scroll up"},
|
||||
ScrollDown = { { Input.group.PgFwd } },
|
||||
ScrollUp = { { Input.group.PgBack } },
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -118,8 +118,8 @@ function ScrollTextWidget:init()
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
ScrollDown = {{Input.group.PgFwd}, doc = "scroll down"},
|
||||
ScrollUp = {{Input.group.PgBack}, doc = "scroll up"},
|
||||
ScrollDown = { { Input.group.PgFwd } },
|
||||
ScrollUp = { { Input.group.PgBack } },
|
||||
}
|
||||
end
|
||||
end
|
||||
|
||||
@@ -27,21 +27,19 @@ function SkimToWidget:init()
|
||||
local screen_height = Screen:getHeight()
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "close skimto page" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {
|
||||
TapProgress = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
x = 0, y = 0,
|
||||
w = screen_width,
|
||||
h = screen_height,
|
||||
}
|
||||
},
|
||||
self.ges_events.TapProgress = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
x = 0, y = 0,
|
||||
w = screen_width,
|
||||
h = screen_height,
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
self.buttons_layout = {}
|
||||
|
||||
@@ -141,9 +141,9 @@ function SortWidget:init()
|
||||
h = self.height or Screen:getHeight(),
|
||||
}
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { { Device.input.group.Back }, doc = "close dialog" }
|
||||
self.key_events.NextPage = { { Device.input.group.PgFwd}, doc = "next page"}
|
||||
self.key_events.PrevPage = { { Device.input.group.PgBack}, doc = "prev page"}
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
self.key_events.NextPage = { { Device.input.group.PgFwd } }
|
||||
self.key_events.PrevPage = { { Device.input.group.PgBack } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Swipe = {
|
||||
|
||||
@@ -65,20 +65,18 @@ function SpinWidget:init()
|
||||
self.width = math.floor(math.min(self.screen_width, self.screen_height) * self.width_factor)
|
||||
end
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "close spin widget" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {
|
||||
TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
w = self.screen_width,
|
||||
h = self.screen_height,
|
||||
}
|
||||
},
|
||||
self.ges_events.TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = Geom:new{
|
||||
w = self.screen_width,
|
||||
h = self.screen_height,
|
||||
}
|
||||
},
|
||||
}
|
||||
}
|
||||
end
|
||||
|
||||
if self.unit and self.unit ~= "" then
|
||||
|
||||
@@ -162,12 +162,10 @@ function TextBoxWidget:init()
|
||||
self.dimen = Geom:new(self:getSize())
|
||||
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events = {
|
||||
TapImage = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = function() return self.dimen end,
|
||||
},
|
||||
self.ges_events.TapImage = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
range = function() return self.dimen end,
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@@ -82,9 +82,7 @@ function TextViewer:init()
|
||||
self._old_virtual_line_num = 1
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
Close = { {Device.input.group.Back}, doc = "close text viewer" }
|
||||
}
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
|
||||
if Device:isTouchDevice() then
|
||||
|
||||
@@ -118,14 +118,12 @@ function ToggleSwitch:init()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Toggle switch",
|
||||
},
|
||||
HoldSelect = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold switch",
|
||||
},
|
||||
}
|
||||
end
|
||||
|
||||
@@ -55,14 +55,12 @@ function TouchMenuItem:init()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Select Menu Item",
|
||||
},
|
||||
HoldSelect = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Menu Item",
|
||||
},
|
||||
}
|
||||
|
||||
@@ -496,12 +494,12 @@ function TouchMenu:init()
|
||||
}
|
||||
}
|
||||
|
||||
self.key_events.Back = { {Input.group.Back}, doc = "back to upper menu or close touchmenu" }
|
||||
self.key_events.Back = { { Input.group.Back } }
|
||||
if Device:hasFewKeys() then
|
||||
self.key_events.Back = { {"Left"}, doc = "back to upper menu or close touchmenu" }
|
||||
self.key_events.Back = { { "Left" } }
|
||||
end
|
||||
self.key_events.NextPage = { {Input.group.PgFwd}, doc = "next page" }
|
||||
self.key_events.PrevPage = { {Input.group.PgBack}, doc = "previous page" }
|
||||
self.key_events.NextPage = { { Input.group.PgFwd } }
|
||||
self.key_events.PrevPage = { { Input.group.PgBack } }
|
||||
|
||||
local icons = {}
|
||||
for _, v in ipairs(self.tab_item_table) do
|
||||
|
||||
@@ -41,20 +41,19 @@ function TrapWidget:init()
|
||||
h = Screen:getHeight(),
|
||||
}
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
AnyKeyPressed = { { Input.group.Any },
|
||||
seqtext = "any key", doc = "dismiss" }
|
||||
}
|
||||
self.key_events.AnyKeyPressed = { { Input.group.Any } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.TapDismiss = {
|
||||
GestureRange:new{ ges = "tap", range = full_screen, }
|
||||
}
|
||||
self.ges_events.HoldDismiss = {
|
||||
GestureRange:new{ ges = "hold", range = full_screen, }
|
||||
}
|
||||
self.ges_events.SwipeDismiss = {
|
||||
GestureRange:new{ ges = "swipe", range = full_screen, }
|
||||
self.ges_events = {
|
||||
TapDismiss = {
|
||||
GestureRange:new{ ges = "tap", range = full_screen, }
|
||||
},
|
||||
HoldDismiss = {
|
||||
GestureRange:new{ ges = "hold", range = full_screen, }
|
||||
},
|
||||
SwipeDismiss = {
|
||||
GestureRange:new{ ges = "swipe", range = full_screen, }
|
||||
},
|
||||
}
|
||||
end
|
||||
if self.text then
|
||||
|
||||
@@ -666,17 +666,15 @@ function VirtualKeyPopup:init()
|
||||
}
|
||||
keyboard_frame.dimen = keyboard_frame:getSize()
|
||||
|
||||
self.ges_events = {
|
||||
TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
}
|
||||
},
|
||||
self.ges_events.TapClose = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
}
|
||||
}
|
||||
self.tap_interval_override = time.ms(G_reader_settings:readSetting("ges_tap_interval_on_keyboard_ms", 0))
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {Device.input.group.Back}, doc = "close keyboard" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
|
||||
local offset_x = 2*keyboard_frame.bordersize + keyboard_frame.padding + parent_key.keyboard.key_padding
|
||||
@@ -801,7 +799,7 @@ function VirtualKeyboard:init()
|
||||
self:initLayer(self.keyboard_layer)
|
||||
self.tap_interval_override = time.ms(G_reader_settings:readSetting("ges_tap_interval_on_keyboard_ms", 0))
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { {"Back"}, doc = "close keyboard" }
|
||||
self.key_events.Close = { { "Back" } }
|
||||
end
|
||||
if keyboard.wrapInputBox then
|
||||
self.uwrap_func = keyboard.wrapInputBox(self.inputbox) or self.uwrap_func
|
||||
|
||||
@@ -141,14 +141,12 @@ function ListMenuItem:init()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Select Menu Item",
|
||||
},
|
||||
HoldSelect = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Menu Item",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -391,14 +391,12 @@ function MosaicMenuItem:init()
|
||||
ges = "tap",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Select Menu Item",
|
||||
},
|
||||
HoldSelect = {
|
||||
GestureRange:new{
|
||||
ges = "hold",
|
||||
range = self.dimen,
|
||||
},
|
||||
doc = "Hold Menu Item",
|
||||
},
|
||||
}
|
||||
|
||||
|
||||
@@ -369,7 +369,6 @@ function Gestures:multiswipeRecorder(touchmenu_instance)
|
||||
w = Screen:getWidth(),
|
||||
h = Screen:getHeight(),
|
||||
},
|
||||
doc = "Multiswipe in gesture creator"
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -396,9 +396,9 @@ function CalendarView:init()
|
||||
end
|
||||
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = {{Input.group.Back}, doc = "close page" }
|
||||
self.key_events.NextMonth = {{Input.group.PgFwd}, doc = "next page"}
|
||||
self.key_events.PrevMonth = {{Input.group.PgBack}, doc = "prev page"}
|
||||
self.key_events.Close = { { Input.group.Back } }
|
||||
self.key_events.NextMonth = { { Input.group.PgFwd } }
|
||||
self.key_events.PrevMonth = { { Input.group.PgBack } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Swipe = {
|
||||
|
||||
@@ -59,11 +59,8 @@ function ReaderProgress:init()
|
||||
return "ui", self.dimen
|
||||
end)
|
||||
if Device:hasKeys() then
|
||||
self.key_events = {
|
||||
--don't get locked in on non touch devices
|
||||
AnyKeyPressed = { { Device.input.group.Any },
|
||||
seqtext = "any key", doc = "close dialog" }
|
||||
}
|
||||
-- don't get locked in on non touch devices
|
||||
self.key_events.AnyKeyPressed = { { Device.input.group.Any } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Swipe = {
|
||||
|
||||
@@ -154,7 +154,7 @@ local MenuDialog = FocusManager:extend{
|
||||
function MenuDialog:init()
|
||||
self.layout = {}
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { { Device.input.group.Back }, doc = "close dialog" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Tap = {
|
||||
@@ -412,7 +412,7 @@ local word_info_dialog_width
|
||||
function WordInfoDialog:init()
|
||||
if self.dismissable then
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { { Device.input.group.Back }, doc = "close dialog" }
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Tap = {
|
||||
@@ -1022,9 +1022,9 @@ function VocabularyBuilderWidget:init()
|
||||
h = self.height or Screen:getHeight(),
|
||||
}
|
||||
if Device:hasKeys() then
|
||||
self.key_events.Close = { { Device.input.group.Back }, doc = "close dialog" }
|
||||
self.key_events.NextPage = { { Device.input.group.PgFwd}, doc = "next page"}
|
||||
self.key_events.PrevPage = { { Device.input.group.PgBack}, doc = "prev page"}
|
||||
self.key_events.Close = { { Device.input.group.Back } }
|
||||
self.key_events.NextPage = { { Device.input.group.PgFwd } }
|
||||
self.key_events.PrevPage = { { Device.input.group.PgBack } }
|
||||
end
|
||||
if Device:isTouchDevice() then
|
||||
self.ges_events.Swipe = {
|
||||
|
||||
@@ -216,8 +216,8 @@ describe("FocusManager module", function()
|
||||
it("alternative key", function()
|
||||
local focusmanager = FocusManager:new{}
|
||||
focusmanager.extra_key_events = {
|
||||
Hold = { {"Sym", "AA"}, doc = "tap and hold the widget", event="Hold" },
|
||||
HalfFocusUp = { {"Alt", "Up"}, doc = "move focus half columns up", event = "FocusHalfMove", args = {"up"} },
|
||||
Hold = { { "Sym", "AA" }, event="Hold" },
|
||||
HalfFocusUp = { { "Alt", "Up" }, event = "FocusHalfMove", args = {"up"} },
|
||||
}
|
||||
local m = Input.modifiers
|
||||
m.Sym = true
|
||||
|
||||
@@ -39,12 +39,10 @@ local TouchProbe = InputContainer:extend{
|
||||
}
|
||||
|
||||
function TouchProbe:init()
|
||||
self.ges_events = {
|
||||
TapProbe = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
}
|
||||
},
|
||||
self.ges_events.TapProbe = {
|
||||
GestureRange:new{
|
||||
ges = "tap",
|
||||
}
|
||||
}
|
||||
self.image_widget = ImageWidget:new{
|
||||
file = "tools/kobo-touch-probe.png",
|
||||
|
||||
@@ -129,7 +129,7 @@ Background = InputContainer:new{
|
||||
key_events = {
|
||||
OpenDialog = { { "Press" } },
|
||||
OpenConfirmBox = { { "Del" } },
|
||||
QuitApplication = { { {"Home","Back"} } }
|
||||
QuitApplication = { { { "Home", "Back" } } },
|
||||
},
|
||||
-- contains a gray rectangular desktop
|
||||
FrameContainer:new{
|
||||
|
||||
Reference in New Issue
Block a user