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).
reviewable/pr9710/r1
NiLuJe 2 years ago
parent 9b2201a438
commit b523c2e8b9

@ -463,9 +463,9 @@ function FileManager:setupLayout()
} }
if Device:hasKeys() then 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 -- 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 if not Device:hasFewKeys() then
-- Also remove the handler assigned to the "Back" key by menu.lua -- Also remove the handler assigned to the "Back" key by menu.lua
self.file_chooser.key_events.Close = nil self.file_chooser.key_events.Close = nil

@ -49,9 +49,7 @@ function FileManagerMenu:init()
self.registered_widgets = {} self.registered_widgets = {}
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.ShowMenu = { { "Menu" } }
ShowMenu = { { "Menu" }, doc = "show menu" },
}
end end
self.activation_menu = G_reader_settings:readSetting("activate_menu") self.activation_menu = G_reader_settings:readSetting("activate_menu")
if self.activation_menu == nil then if self.activation_menu == nil then

@ -21,7 +21,7 @@ local ReaderBack = EventListener:extend{
function ReaderBack:init() function ReaderBack:init()
if Device:hasKeys() then 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 end
-- Regular function wrapping our method, to avoid re-creating -- Regular function wrapping our method, to avoid re-creating
-- an anonymous function at each page turn -- an anonymous function at each page turn

@ -38,11 +38,7 @@ local ReaderBookmark = InputContainer:extend{
function ReaderBookmark:init() function ReaderBookmark:init()
if Device:hasKeyboard() then if Device:hasKeyboard() then
self.key_events = { self.key_events.ShowBookmark = { { "B" } }
ShowBookmark = {
{ "B" },
doc = "show bookmarks" },
}
end end
if G_reader_settings:hasNot("bookmarks_items_per_page") then if G_reader_settings:hasNot("bookmarks_items_per_page") then

@ -20,9 +20,7 @@ function ReaderConfig:init()
self.configurable:loadDefaults(self.options) self.configurable:loadDefaults(self.options)
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.ShowConfigMenu = { { { "Press", "AA" } } }
ShowConfigMenu = { {{"Press","AA"}}, doc = "show config dialog" },
}
end end
self:initGesListener() self:initGesListener()
if G_reader_settings:has("activate_menu") then if G_reader_settings:has("activate_menu") then

@ -34,15 +34,17 @@ function ReaderFont:init()
if Device:hasKeyboard() then if Device:hasKeyboard() then
-- add shortcut for keyboard -- add shortcut for keyboard
self.key_events = { self.key_events = {
ShowFontMenu = { {"F"}, doc = "show font menu" }, ShowFontMenu = { { "F" } },
IncreaseSize = { IncreaseSize = {
{ "Shift", Input.group.PgFwd }, { "Shift", Input.group.PgFwd },
doc = "increase font size", event = "ChangeSize",
event = "ChangeSize", args = 0.5 }, args = 0.5
},
DecreaseSize = { DecreaseSize = {
{ "Shift", Input.group.PgBack }, { "Shift", Input.group.PgBack },
doc = "decrease font size", event = "ChangeSize",
event = "ChangeSize", args = -0.5 }, args = -0.5
},
} }
end end
-- Build face_table for menu -- Build face_table for menu

@ -55,19 +55,19 @@ function ReaderHighlight:init()
if Device:hasDPad() then if Device:hasDPad() then
-- Used for text selection with dpad/keys -- Used for text selection with dpad/keys
local QUICK_INDICTOR_MOVE = true 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.StopHighlightIndicator = { { Device.input.group.Back }, args = true } -- true: clear highlight selection
self.key_events.UpHighlightIndicator = { {"Up"}, doc = "move indicator up", event = "MoveHighlightIndicator", args = {0, -1} } self.key_events.UpHighlightIndicator = { { "Up" }, event = "MoveHighlightIndicator", args = {0, -1} }
self.key_events.DownHighlightIndicator = { {"Down"}, doc = "move indicator down", event = "MoveHighlightIndicator", args = {0, 1} } self.key_events.DownHighlightIndicator = { { "Down" }, event = "MoveHighlightIndicator", args = {0, 1} }
-- let FewKeys device can move indicator left -- let FewKeys device can move indicator left
self.key_events.LeftHighlightIndicator = { {"Left"}, doc = "move indicator left", event = "MoveHighlightIndicator", args = {-1, 0} } self.key_events.LeftHighlightIndicator = { { "Left" }, event = "MoveHighlightIndicator", args = {-1, 0} }
self.key_events.RightHighlightIndicator = { {"Right"}, doc = "move indicator right", event = "MoveHighlightIndicator", args = {1, 0} } self.key_events.RightHighlightIndicator = { { "Right" }, event = "MoveHighlightIndicator", args = {1, 0} }
self.key_events.HighlightPress = { {"Press"}, doc = "highlight start or end" } self.key_events.HighlightPress = { { "Press" } }
if Device:hasKeys() then 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.QuickUpHighlightIndicator = { { "Shift", "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.QuickDownHighlightIndicator = { { "Shift", "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.QuickLeftHighlightIndicator = { { "Shift", "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.QuickRightHighlightIndicator = { { "Shift", "Right" }, event = "MoveHighlightIndicator", args = {1, 0, QUICK_INDICTOR_MOVE} }
self.key_events.StartHighlightIndicator = { {"H"}, doc = "start non-touch highlight" } self.key_events.StartHighlightIndicator = { { "H" } }
end end
end end
@ -233,8 +233,8 @@ function ReaderHighlight:init()
end end
function ReaderHighlight:setupTouchZones() function ReaderHighlight:setupTouchZones()
-- deligate gesture listener to readerui -- delegate gesture listener to readerui
self.ges_events = {} self.ges_events = nil
self.onGesture = nil self.onGesture = nil
if not Device:isTouchDevice() then return end if not Device:isTouchDevice() then return end

@ -27,24 +27,23 @@ local ReaderLink = InputContainer:extend{
function ReaderLink:init() function ReaderLink:init()
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.SelectNextPageLink = { self.key_events = {
{"Tab" }, SelectNextPageLink = {
doc = "select next page link", { "Tab" },
event = "SelectNextPageLink", event = "SelectNextPageLink",
} },
self.key_events.SelectPrevPageLink = { SelectPrevPageLink = {
{"Shift", "Tab" }, { "Shift", "Tab" },
{"Sym", "Tab" }, -- Right Shift + Tab { "Sym", "Tab" }, -- Shift or Sym + Tab
doc = "select previous page link", event = "SelectPrevPageLink",
event = "SelectPrevPageLink", },
} GotoSelectedPageLink = {
self.key_events.GotoSelectedPageLink = { { "Press" },
{ "Press" }, event = "GotoSelectedPageLink",
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"
} }
-- "Back" is handled by ReaderBack, which will call our onGoBackLink()
-- when G_reader_settings:readSetting("back_in_reader") == "previous_location"
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ui:registerTouchZones({ self.ui:registerTouchZones({

@ -58,16 +58,16 @@ function ReaderMenu:init()
if Device:hasKeys() then if Device:hasKeys() then
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.key_events.TapShowMenu = { { "Menu" }, doc = "show menu", } self.key_events.TapShowMenu = { { "Menu" } }
if Device:hasFewKeys() then if Device:hasFewKeys() then
self.key_events.TapShowMenu = { { { "Menu", "Right" } }, doc = "show menu", } self.key_events.TapShowMenu = { { { "Menu", "Right" } } }
end end
else else
-- map menu key to only top menu because bottom menu is only -- map menu key to only top menu because bottom menu is only
-- designed for touch devices -- designed for touch devices
self.key_events.ShowMenu = { { "Menu" }, doc = "show menu", } self.key_events.ShowMenu = { { "Menu" } }
if Device:hasFewKeys() then if Device:hasFewKeys() then
self.key_events.ShowMenu = { { { "Menu", "Right" } }, doc = "show menu", } self.key_events.ShowMenu = { { { "Menu", "Right" } } }
end end
end end
end end
@ -83,8 +83,8 @@ function ReaderMenu:getPreviousFile()
end end
function ReaderMenu:onReaderReady() function ReaderMenu:onReaderReady()
-- deligate gesture listener to readerui -- delegate gesture listener to readerui
self.ges_events = {} self.ges_events = nil
self.onGesture = nil self.onGesture = nil
if not Device:isTouchDevice() then return end if not Device:isTouchDevice() then return end

@ -41,60 +41,79 @@ local ReaderPaging = InputContainer:extend{
} }
function ReaderPaging:init() function ReaderPaging:init()
self.key_events = {}
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.GotoNextPage = { self.key_events.GotoNextPage = {
{ {"RPgFwd", "LPgFwd", "Right" } }, doc = "go to next page", { { "RPgFwd", "LPgFwd", not Device:hasFewKeys() and "Right" } },
event = "GotoViewRel", args = 1, event = "GotoViewRel",
args = 1,
} }
self.key_events.GotoPrevPage = { self.key_events.GotoPrevPage = {
{ { "RPgBack", "LPgBack", "Left" } }, doc = "go to previous page", { { "RPgBack", "LPgBack", not Device:hasFewKeys() and "Left" } },
event = "GotoViewRel", args = -1, 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 = { self.key_events.GotoNextPos = {
{ {"Down" } }, doc = "go to next position", { "Down" },
event = "GotoPosRel", args = 1, event = "GotoPosRel",
args = 1,
} }
self.key_events.GotoPrevPos = { self.key_events.GotoPrevPos = {
{ { "Up" } }, doc = "go to previous position", { "Up" },
event = "GotoPosRel", args = -1, event = "GotoPosRel",
args = -1,
} }
end end
if Device:hasKeyboard() then if Device:hasKeyboard() then
self.key_events.GotoFirst = { self.key_events.GotoFirst = {
{"1"}, doc = "go to start", event = "GotoPercent", args = 0, { "1" },
event = "GotoPercent",
args = 0,
} }
self.key_events.Goto11 = { self.key_events.Goto11 = {
{"2"}, doc = "go to 11%", event = "GotoPercent", args = 11, { "2" },
event = "GotoPercent",
args = 11,
} }
self.key_events.Goto22 = { self.key_events.Goto22 = {
{"3"}, doc = "go to 22%", event = "GotoPercent", args = 22, { "3" },
event = "GotoPercent",
args = 22,
} }
self.key_events.Goto33 = { self.key_events.Goto33 = {
{"4"}, doc = "go to 33%", event = "GotoPercent", args = 33, { "4" },
event = "GotoPercent",
args = 33,
} }
self.key_events.Goto44 = { self.key_events.Goto44 = {
{"5"}, doc = "go to 44%", event = "GotoPercent", args = 44, { "5" },
event = "GotoPercent",
args = 44,
} }
self.key_events.Goto55 = { self.key_events.Goto55 = {
{"6"}, doc = "go to 55%", event = "GotoPercent", args = 55, { "6" },
event = "GotoPercent",
args = 55,
} }
self.key_events.Goto66 = { self.key_events.Goto66 = {
{"7"}, doc = "go to 66%", event = "GotoPercent", args = 66, { "7" },
event = "GotoPercent",
args = 66,
} }
self.key_events.Goto77 = { self.key_events.Goto77 = {
{"8"}, doc = "go to 77%", event = "GotoPercent", args = 77, { "8" },
event = "GotoPercent",
args = 77,
} }
self.key_events.Goto88 = { self.key_events.Goto88 = {
{"9"}, doc = "go to 88%", event = "GotoPercent", args = 88, { "9" },
event = "GotoPercent",
args = 88,
} }
self.key_events.GotoLast = { self.key_events.GotoLast = {
{"0"}, doc = "go to end", event = "GotoPercent", args = 100, { "0" },
event = "GotoPercent",
args = 100,
} }
end end
self.pan_interval = time.s(1 / self.pan_rate) self.pan_interval = time.s(1 / self.pan_rate)
@ -106,7 +125,8 @@ function ReaderPaging:onReaderReady()
end end
function ReaderPaging:setupTouchZones() function ReaderPaging:setupTouchZones()
self.ges_events = {} -- delegate gesture listener to readerui
self.ges_events = nil
self.onGesture = nil self.onGesture = nil
if not Device:isTouchDevice() then return end if not Device:isTouchDevice() then return end

@ -17,17 +17,25 @@ function ReaderPanning:init()
self.key_events = { self.key_events = {
-- these will all generate the same event, just with different arguments -- these will all generate the same event, just with different arguments
MoveUp = { MoveUp = {
{ "Up" }, doc = "move visible area up", { "Up" },
event = "Panning", args = {0, -1} }, event = "Panning",
args = {0, -1}
},
MoveDown = { MoveDown = {
{ "Down" }, doc = "move visible area down", { "Down" },
event = "Panning", args = {0, 1} }, event = "Panning",
args = {0, 1}
},
MoveLeft = { MoveLeft = {
{ "Left" }, doc = "move visible area left", { "Left" },
event = "Panning", args = {-1, 0} }, event = "Panning",
args = {-1, 0}
},
MoveRight = { MoveRight = {
{ "Right" }, doc = "move visible area right", { "Right" },
event = "Panning", args = {1, 0} }, event = "Panning",
args = {1, 0}
},
} }
end end
end end

@ -60,58 +60,78 @@ function ReaderRolling:init()
self.key_events = {} self.key_events = {}
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.GotoNextView = { self.key_events.GotoNextView = {
{ {"RPgFwd", "LPgFwd", "Right" } }, { { "RPgFwd", "LPgFwd", "Right" } },
doc = "go to next view", event = "GotoViewRel",
event = "GotoViewRel", args = 1, args = 1,
} }
self.key_events.GotoPrevView = { self.key_events.GotoPrevView = {
{ { "RPgBack", "LPgBack", "Left" } }, { { "RPgBack", "LPgBack", "Left" } },
doc = "go to previous view", event = "GotoViewRel",
event = "GotoViewRel", args = -1, args = -1,
} }
end end
if Device:hasDPad() then if Device:hasDPad() then
self.key_events.MoveUp = { self.key_events.MoveUp = {
{ "Up" }, { "Up" },
doc = "move view up", event = "Panning",
event = "Panning", args = {0, -1}, args = {0, -1},
} }
self.key_events.MoveDown = { self.key_events.MoveDown = {
{ "Down" }, { "Down" },
doc = "move view down", event = "Panning",
event = "Panning", args = {0, 1}, args = {0, 1},
} }
end end
if Device:hasKeyboard() then if Device:hasKeyboard() then
self.key_events.GotoFirst = { self.key_events.GotoFirst = {
{"1"}, doc = "go to start", event = "GotoPercent", args = 0, { "1" },
event = "GotoPercent",
args = 0,
} }
self.key_events.Goto11 = { self.key_events.Goto11 = {
{"2"}, doc = "go to 11%", event = "GotoPercent", args = 11, { "2" },
event = "GotoPercent",
args = 11,
} }
self.key_events.Goto22 = { self.key_events.Goto22 = {
{"3"}, doc = "go to 22%", event = "GotoPercent", args = 22, { "3" },
event = "GotoPercent",
args = 22,
} }
self.key_events.Goto33 = { self.key_events.Goto33 = {
{"4"}, doc = "go to 33%", event = "GotoPercent", args = 33, { "4" },
event = "GotoPercent",
args = 33,
} }
self.key_events.Goto44 = { self.key_events.Goto44 = {
{"5"}, doc = "go to 44%", event = "GotoPercent", args = 44, { "5" },
event = "GotoPercent",
args = 44,
} }
self.key_events.Goto55 = { self.key_events.Goto55 = {
{"6"}, doc = "go to 55%", event = "GotoPercent", args = 55, { "6" },
event = "GotoPercent",
args = 55,
} }
self.key_events.Goto66 = { self.key_events.Goto66 = {
{"7"}, doc = "go to 66%", event = "GotoPercent", args = 66, { "7" },
event = "GotoPercent",
args = 66,
} }
self.key_events.Goto77 = { self.key_events.Goto77 = {
{"8"}, doc = "go to 77%", event = "GotoPercent", args = 77, { "8" },
event = "GotoPercent",
args = 77,
} }
self.key_events.Goto88 = { self.key_events.Goto88 = {
{"9"}, doc = "go to 88%", event = "GotoPercent", args = 88, { "9" },
event = "GotoPercent",
args = 88,
} }
self.key_events.GotoLast = { self.key_events.GotoLast = {
{"0"}, doc = "go to end", event = "GotoPercent", args = 100, { "0" },
event = "GotoPercent",
args = 100,
} }
end end
self.pan_interval = time.s(1 / self.pan_rate) self.pan_interval = time.s(1 / self.pan_rate)
@ -311,7 +331,8 @@ function ReaderRolling:onReaderReady()
end end
function ReaderRolling:setupTouchZones() function ReaderRolling:setupTouchZones()
self.ges_events = {} -- delegate gesture listener to readerui
self.ges_events = nil
self.onGesture = nil self.onGesture = nil
if not Device:isTouchDevice() then return end if not Device:isTouchDevice() then return end

@ -12,13 +12,15 @@ function ReaderRotation:init()
self.key_events = { self.key_events = {
-- these will all generate the same event, just with different arguments -- these will all generate the same event, just with different arguments
RotateLeft = { RotateLeft = {
{"J"}, { "J" },
doc = "rotate left by 90 degrees", event = "Rotate",
event = "Rotate", args = -90 }, args = -90
},
RotateRight = { RotateRight = {
{"K"}, { "K" },
doc = "rotate right by 90 degrees", event = "Rotate",
event = "Rotate", args = 90 }, args = 90
},
} }
end end
end end

@ -51,9 +51,7 @@ function TweakInfoWidget:init()
} }
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.Close = { { Device.input.group.Back } }
Close = { {Device.input.group.Back}, doc = "cancel" }
}
end end
local content = VerticalGroup:new{ local content = VerticalGroup:new{

@ -36,11 +36,7 @@ local ReaderToc = InputContainer:extend{
function ReaderToc:init() function ReaderToc:init()
if Device:hasKeyboard() then if Device:hasKeyboard() then
self.key_events = { self.key_events.ShowToc = { { "T" } }
ShowToc = {
{ "T" },
doc = "show Table of Content menu" },
}
end end
if G_reader_settings:hasNot("toc_items_per_page") then if G_reader_settings:hasNot("toc_items_per_page") then

@ -95,48 +95,48 @@ function ReaderZooming:init()
self.key_events = { self.key_events = {
ZoomIn = { ZoomIn = {
{ "Shift", Input.group.PgFwd }, { "Shift", Input.group.PgFwd },
doc = "zoom in", event = "Zoom",
event = "Zoom", args = "in" args = "in",
}, },
ZoomOut = { ZoomOut = {
{ "Shift", Input.group.PgBack }, { "Shift", Input.group.PgBack },
doc = "zoom out", event = "Zoom",
event = "Zoom", args = "out" args = "out",
}, },
ZoomToFitPage = { ZoomToFitPage = {
{ "A" }, { "A" },
doc = "zoom to fit page", event = "SetZoomMode",
event = "SetZoomMode", args = "page" args = "page",
}, },
ZoomToFitContent = { ZoomToFitContent = {
{ "Shift", "A" }, { "Shift", "A" },
doc = "zoom to fit content", event = "SetZoomMode",
event = "SetZoomMode", args = "content" args = "content",
}, },
ZoomToFitPageWidth = { ZoomToFitPageWidth = {
{ "S" }, { "S" },
doc = "zoom to fit page width", event = "SetZoomMode",
event = "SetZoomMode", args = "pagewidth" args = "pagewidth",
}, },
ZoomToFitContentWidth = { ZoomToFitContentWidth = {
{ "Shift", "S" }, { "Shift", "S" },
doc = "zoom to fit content width", event = "SetZoomMode",
event = "SetZoomMode", args = "contentwidth" args = "contentwidth",
}, },
ZoomToFitPageHeight = { ZoomToFitPageHeight = {
{ "D" }, { "D" },
doc = "zoom to fit page height", event = "SetZoomMode",
event = "SetZoomMode", args = "pageheight" args = "pageheight",
}, },
ZoomToFitContentHeight = { ZoomToFitContentHeight = {
{ "Shift", "D" }, { "Shift", "D" },
doc = "zoom to fit content height", event = "SetZoomMode",
event = "SetZoomMode", args = "contentheight" args = "contentheight",
}, },
ZoomManual = { ZoomManual = {
{ "Shift", "M" }, { "Shift", "M" },
doc = "manual zoom mode", event = "SetZoomMode",
event = "SetZoomMode", args = "manual" args = "manual",
}, },
} }
end end

@ -123,8 +123,8 @@ function ReaderUI:init()
SettingsMigration:migrateSettings(self.doc_settings) SettingsMigration:migrateSettings(self.doc_settings)
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Home = { {"Home"}, doc = "open file browser" } self.key_events.Home = { { "Home" } }
self.key_events.Reload = { {"F5"}, doc = "reload document" } self.key_events.Reload = { { "F5" } }
end end
-- a view container (so it must be child #1!) -- a view container (so it must be child #1!)

@ -51,8 +51,10 @@ least one key in this table must match.
E.g.: E.g.:
Key:match({ "Alt", "K" }) -- match Alt-K Key:match({ "K" }) -- match K
Key:match({ "Alt", { "K", "L" }}) -- match Alt-K _or_ Alt-L 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) function Key:match(sequence)
local mod_keys = {} -- a hash table for checked modifiers local mod_keys = {} -- a hash table for checked modifiers

@ -51,14 +51,14 @@ function BBoxWidget:init()
} }
else else
self._confirm_stage = 1 -- 1 for left-top, 2 for right-bottom 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.MoveIndicatorUp = { { "Up" }, event="MoveIndicator", args = { 0, -1 } }
self.key_events.MoveIndicatorDown = { { "Down" }, doc="Move indicator down", event="MoveIndicator", args = { 0, 1 } } self.key_events.MoveIndicatorDown = { { "Down" }, event="MoveIndicator", args = { 0, 1 } }
self.key_events.MoveIndicatorLeft = { { "Left" }, doc="Move indicator left", event="MoveIndicator", args = { -1, 0 } } self.key_events.MoveIndicatorLeft = { { "Left" }, event="MoveIndicator", args = { -1, 0 } }
self.key_events.MoveIndicatorRight = { { "Right" }, doc="Move indicator right", event="MoveIndicator", args = { 1, 0 } } self.key_events.MoveIndicatorRight = { { "Right" }, event="MoveIndicator", args = { 1, 0 } }
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { {Device.input.group.Back}, doc = "close windows" } self.key_events.Close = { { Device.input.group.Back } }
self.key_events.Select = { {"Press"}, doc = "confirm adjust" } self.key_events.Select = { { "Press" } }
end end
end end

@ -548,43 +548,45 @@ function BookMapWidget:init()
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events = {
Close = { {Input.group.Back}, doc = "close page" }, Close = { { Input.group.Back } },
ScrollRowUp = {{"Up"}, doc = "scroll up"}, ScrollRowUp = { { "Up" } },
ScrollRowDown = {{"Down"}, doc = "scrol down"}, ScrollRowDown = { { "Down" } },
ScrollPageUp = {{Input.group.PgBack}, doc = "prev page"}, ScrollPageUp = { { Input.group.PgBack } },
ScrollPageDown = {{Input.group.PgFwd}, doc = "next page"}, ScrollPageDown = { { Input.group.PgFwd } },
} }
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Swipe = { self.ges_events = {
GestureRange:new{ Swipe = {
ges = "swipe", GestureRange:new{
range = self.dimen, ges = "swipe",
} range = self.dimen,
} }
self.ges_events.MultiSwipe = { },
GestureRange:new{ MultiSwipe = {
ges = "multiswipe", GestureRange:new{
range = self.dimen, ges = "multiswipe",
} range = self.dimen,
} }
self.ges_events.Tap = { },
GestureRange:new{ Tap = {
ges = "tap", GestureRange:new{
range = self.dimen, ges = "tap",
} range = self.dimen,
} }
self.ges_events.Pinch = { },
GestureRange:new{ Pinch = {
ges = "pinch", GestureRange:new{
range = self.dimen, ges = "pinch",
} range = self.dimen,
} }
self.ges_events.Spread = { },
GestureRange:new{ Spread = {
ges = "spread", GestureRange:new{
range = self.dimen, ges = "spread",
} range = self.dimen,
}
},
} }
-- No need for any long-press handler: page slots may be small and we can't -- 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... -- really target a precise page slot with our fat finger above it...

@ -98,7 +98,7 @@ function BookStatusWidget:init()
} }
if Device:hasKeys() 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 end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Swipe = { self.ges_events.Swipe = {

@ -190,14 +190,12 @@ function Button:init()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Tap Button",
}, },
HoldSelectButton = { HoldSelectButton = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Button",
}, },
-- Safe-guard for when used inside a MovableContainer -- Safe-guard for when used inside a MovableContainer
HoldReleaseSelectButton = { HoldReleaseSelectButton = {

@ -62,9 +62,7 @@ local ButtonDialog = InputContainer:extend{
function ButtonDialog:init() function ButtonDialog:init()
if Device:hasKeys() then if Device:hasKeys() then
local close_keys = Device:hasFewKeys() and { "Back", "Left" } or Device.input.group.Back local close_keys = Device:hasFewKeys() and { "Back", "Left" } or Device.input.group.Back
self.key_events = { self.key_events.Close = { { close_keys } }
Close = { { close_keys }, doc = "close button dialog" }
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.TapClose = { self.ges_events.TapClose = {

@ -45,9 +45,7 @@ function ButtonDialogTitle:init()
if self.dismissable then if self.dismissable then
if Device:hasKeys() then if Device:hasKeys() then
local close_keys = Device:hasFewKeys() and { "Back", "Left" } or Device.input.group.Back local close_keys = Device:hasFewKeys() and { "Back", "Left" } or Device.input.group.Back
self.key_events = { self.key_events.Close = { { close_keys } }
Close = { { close_keys }, doc = "close button dialog" }
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.TapClose = { self.ges_events.TapClose = {

@ -103,14 +103,12 @@ function CheckButton:initCheckButton(checked)
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Tap Button",
}, },
HoldCheckButton = { HoldCheckButton = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Button",
}, },
-- Safe-guard for when used inside a MovableContainer -- Safe-guard for when used inside a MovableContainer
HoldReleaseCheckButton = { HoldReleaseCheckButton = {
@ -118,7 +116,6 @@ function CheckButton:initCheckButton(checked)
ges = "hold_release", ges = "hold_release",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Release Button",
} }
} }
end end

@ -57,7 +57,6 @@ function CloseButton:init()
-- drawn. so use callback to get range at runtime. -- drawn. so use callback to get range at runtime.
range = function() return self.dimen end, range = function() return self.dimen end,
}, },
doc = "Tap on close button",
} }
self.ges_events.HoldClose = { self.ges_events.HoldClose = {
@ -65,7 +64,6 @@ function CloseButton:init()
ges = "hold_release", ges = "hold_release",
range = function() return self.dimen end, range = function() return self.dimen end,
}, },
doc = "Hold on close button",
} }
end end

@ -60,14 +60,12 @@ function OptionTextItem:init()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Select Option Item",
}, },
HoldSelect = { HoldSelect = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Option Item",
}, },
} }
end end
@ -134,14 +132,12 @@ function OptionIconItem:init()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Select Option Item",
}, },
HoldSelect = { HoldSelect = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Option Item",
}, },
} }
@ -898,7 +894,7 @@ function ConfigDialog:init()
if Device:hasKeys() then if Device:hasKeys() then
-- set up keyboard events -- set up keyboard events
local close_keys = Device:hasFewKeys() and { "Back", "Left" } or Device.input.group.Back 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
end end

@ -72,7 +72,7 @@ function ConfirmBox:init()
} }
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { {Device.input.group.Back}, doc = "cancel" } self.key_events.Close = { { Device.input.group.Back } }
end end
end end
local text_widget = TextBoxWidget:new{ local text_widget = TextBoxWidget:new{

@ -1,23 +1,33 @@
--[[-- --[[--
An InputContainer is a WidgetContainer that handles user input events including multi touches An InputContainer is a WidgetContainer that handles user input events including multi touches and key presses.
and key presses.
See @{InputContainer:registerTouchZones} for examples of how to listen for multi touch input. 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 = { key_events = {
{ "Shift", Input.group.Cursor }, PanBy20 = {
seqtext = "Shift+Cursor", { "Shift", Input.group.Cursor }, -- Shift + (any member of) Cursor
doc = "pan by 20px", event = "Pan",
event = "Pan", args = 20, is_inactive = true, args = 20,
}, is_inactive = true,
PanNormal = { },
{ Input.group.Cursor }, PanNormal = {
seqtext = "Cursor", { Input.group.Cursor }, -- Any member of Cursor (itself an array)
doc = "pan by 10 px", event = "Pan", args = 10, 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).
},
}, },
Quit = { {"Home"} },
It is recommended to reference configurable sequences from another table It is recommended to reference configurable sequences from another table
and to store that table as a configuration setting. 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 for name, seq in pairs(self.key_events) do
if not seq.is_inactive then if not seq.is_inactive then
for _, oneseq in ipairs(seq) do for _, oneseq in ipairs(seq) do
-- NOTE: key is a device/key object, this isn't string.match!
if key:match(oneseq) then if key:match(oneseq) then
local eventname = seq.event or name local eventname = seq.event or name
return self:handleEvent(Event:new(eventname, seq.args, key)) 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 -- which is somehow nice and gives a kind of magnetic move that
-- stick the widget to some invisible rulers. -- stick the widget to some invisible rulers.
-- (Touch is needed for accurate pan) -- (Touch is needed for accurate pan)
self.ges_events = {} self.ges_events = {
self.ges_events.MovableTouch = not ignore.touch and { GestureRange:new{ ges = "touch", range = range } } or nil 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 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 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 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 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 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 MovablePanRelease = not ignore.pan_release and { GestureRange:new{ ges = "pan_release", range = range } } or nil,
}
end end
end end

@ -79,14 +79,15 @@ function ScrollableContainer:init()
-- Pan happens if he doesn't hold at start, but holds at end -- Pan happens if he doesn't hold at start, but holds at end
-- Swipe happens if he doesn't hold at any moment -- Swipe happens if he doesn't hold at any moment
-- (Touch is needed for accurate pan) -- (Touch is needed for accurate pan)
self.ges_events = {} self.ges_events = {
self.ges_events.ScrollableTouch = not ignore.touch and { GestureRange:new{ ges = "touch", range = range } } or nil 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 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 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 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 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 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 ScrollablePanRelease = not ignore.pan_release and { GestureRange:new{ ges = "pan_release", range = range } } or nil,
}
end end
end end

@ -117,18 +117,16 @@ function DateTimeWidget:init()
end end
self.width = self.width or math.floor(math.min(self.screen_width, self.screen_height) * width_scale_factor) self.width = self.width or math.floor(math.min(self.screen_width, self.screen_height) * width_scale_factor)
if Device:hasKeys() then 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 end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events.TapClose = {
TapClose = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = Geom:new{
range = Geom:new{ w = self.screen_width,
w = self.screen_width, h = self.screen_height,
h = self.screen_height, }
}
},
}, },
} }
end end

@ -96,9 +96,9 @@ function DictQuickLookup:init()
self.image_alt_face = Font:getFace("cfont", font_size_alt) self.image_alt_face = Font:getFace("cfont", font_size_alt)
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events = {
ReadPrevResult = {{Input.group.PgBack}, doc = "read prev result"}, ReadPrevResult = { { Input.group.PgBack } },
ReadNextResult = {{Input.group.PgFwd}, doc = "read next result"}, ReadNextResult = { { Input.group.PgFwd } },
Close = { {Input.group.Back}, doc = "close quick lookup" } Close = { { Input.group.Back } },
} }
end end
if Device:isTouchDevice() then 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) self.width = math.floor(math.min(self.screen_width, self.screen_height) * self.width_factor)
end end
if Device:hasKeys() then 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 end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events.TapClose = {
TapClose = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = Geom:new{
range = Geom:new{ w = self.screen_width,
w = self.screen_width, h = self.screen_height,
h = self.screen_height, }
}
},
}, },
} }
end end

@ -46,26 +46,26 @@ local function populateEventMappings()
if Device:hasDPad() then if Device:hasDPad() then
local event_keys = {} local event_keys = {}
-- these will all generate the same event, just with different arguments -- 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, { "FocusUp", { { "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, { "FocusRight", { { "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, { "FocusDown", { { "Down" }, event = "FocusMove", args = {0, 1} } })
table.insert(event_keys, {"Press", { {"Press"}, doc = "tap the widget", event="Press" }}) 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 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 local NORMAL_KEYS_END_INDEX = #event_keys
-- Advanced Feature: following event handlers can be enabled via settings.reader.lua -- 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 -- 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"}, doc = "tap and hold the widget", event="Hold" } }) 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 -- 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, { "HalfFocusUp", { { "Alt", "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, { "HalfFocusRight", { { "Alt", "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, { "HalfFocusDown", { { "Alt", "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, { "HalfFocusLeft", { { "Alt", "Left" }, event = "FocusHalfMove", args = {"left"} } })
-- for PC navigation behavior support -- for PC navigation behavior support
table.insert(event_keys, {"FocusNext", { {"Tab"}, doc = "move focus to next widget", event="FocusNext"} }) table.insert(event_keys, { "FocusNext", { { "Tab" }, event = "FocusNext" } })
table.insert(event_keys, {"FocusPrevious", { {"Shift", "Tab"}, doc = "move focus to previous widget", event="FocusPrevious"} }) table.insert(event_keys, { "FocusPrevious", { { "Shift", "Tab" }, event = "FocusPrevious" } })
for i = 1, FEW_KEYS_END_INDEX do for i = 1, FEW_KEYS_END_INDEX do
local key_name = event_keys[i][1] local key_name = event_keys[i][1]

@ -188,8 +188,8 @@ function FootnoteWidget:init()
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events = {
Close = { {Device.input.group.Back}, doc = "cancel" }, Close = { { Device.input.group.Back } },
Follow = { {"Press"}, doc = "follow link" }, Follow = { { "Press" } },
} }
end end

@ -80,7 +80,7 @@ function FrontLightWidget:init()
-- Input -- Input
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { {Device.input.group.Back}, doc = "close frontlight" } self.key_events.Close = { { Device.input.group.Back } }
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events = {

@ -27,12 +27,10 @@ local HtmlBoxWidget = InputContainer:extend{
function HtmlBoxWidget:init() function HtmlBoxWidget:init()
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events.TapText = {
TapText = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = function() return self.dimen end,
range = function() return self.dimen end,
},
}, },
} }
end end

@ -81,21 +81,18 @@ function IconButton:initGesListener()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Tap IconButton",
}, },
HoldIconButton = { HoldIconButton = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold IconButton",
}, },
HoldReleaseIconButton = { HoldReleaseIconButton = {
GestureRange:new{ GestureRange:new{
ges = "hold_release", ges = "hold_release",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Release IconButton",
} }
} }
end end

@ -84,16 +84,16 @@ function ImageViewer:init()
if type(self.image) == "table" then if type(self.image) == "table" then
-- if self.image is a table, then use hardware keys to change image -- if self.image is a table, then use hardware keys to change image
self.key_events = { self.key_events = {
Close = { {Device.input.group.Back}, doc = "close viewer" }, Close = { { Device.input.group.Back } },
ShowPrevImage = { {Device.input.group.PgBack}, doc = "Previous image" }, ShowPrevImage = { { Device.input.group.PgBack } },
ShowNextImage = { {Device.input.group.PgFwd}, doc = "Next image" }, ShowNextImage = { { Device.input.group.PgFwd } },
} }
else else
-- otherwise, use hardware keys to zoom in/out -- otherwise, use hardware keys to zoom in/out
self.key_events = { self.key_events = {
Close = { {Device.input.group.Back}, doc = "close viewer" }, Close = { { Device.input.group.Back } },
ZoomIn = { {Device.input.group.PgBack}, doc = "Zoom In" }, ZoomIn = { { Device.input.group.PgBack } },
ZoomOut = { {Device.input.group.PgFwd}, doc = "Zoom out" }, ZoomOut = { { Device.input.group.PgFwd } },
} }
end end
end end

@ -79,10 +79,7 @@ local InfoMessage = InputContainer:extend{
function InfoMessage:init() function InfoMessage:init()
if self.dismissable then if self.dismissable then
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.AnyKeyPressed = { { Input.group.Any } }
AnyKeyPressed = { { Input.group.Any },
seqtext = "any key", doc = "close dialog" }
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.TapClose = { self.ges_events.TapClose = {

@ -433,17 +433,15 @@ function InputDialog:init()
frame frame
} }
if Device:isTouchDevice() then -- is used to hide the keyboard with a tap outside of inputbox if Device:isTouchDevice() then -- is used to hide the keyboard with a tap outside of inputbox
self.ges_events = { self.ges_events.Tap = {
Tap = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = self[1].dimen, -- screen above the keyboard
range = self[1].dimen, -- screen above the keyboard
},
}, },
} }
end end
if Device:hasKeys() then 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
if self._added_widgets then if self._added_widgets then
for _, widget in ipairs(self._added_widgets) do for _, widget in ipairs(self._added_widgets) do

@ -168,7 +168,7 @@ function KeyboardLayoutDialog:init()
self.movable, self.movable,
} }
if Device:hasKeys() then 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
end end

@ -302,9 +302,9 @@ function KeyValuePage:init()
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = {{Input.group.Back}, doc = "close page" } self.key_events.Close = { { Input.group.Back } }
self.key_events.NextPage = {{Input.group.PgFwd}, doc = "next page"} self.key_events.NextPage = { { Input.group.PgFwd } }
self.key_events.PrevPage = {{Input.group.PgBack}, doc = "prev page"} self.key_events.PrevPage = { { Input.group.PgBack } }
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Swipe = { self.ges_events.Swipe = {

@ -128,14 +128,12 @@ function MenuItem:init()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Select Menu Item",
}, },
HoldSelect = { HoldSelect = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Menu Item",
}, },
} }
@ -923,16 +921,12 @@ function Menu:init()
if Device:hasKeys() then if Device:hasKeys() then
-- set up keyboard events -- 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 if Device:hasFewKeys() then
self.key_events.Close = { {"Left"}, doc = "close menu" } self.key_events.Close = { { "Left" } }
end end
self.key_events.NextPage = { self.key_events.NextPage = { { Input.group.PgFwd } }
{Input.group.PgFwd}, doc = "goto next page of the menu" self.key_events.PrevPage = { { Input.group.PgBack } }
}
self.key_events.PrevPage = {
{Input.group.PgBack}, doc = "goto previous page of the menu"
}
end end
if Device:hasDPad() then if Device:hasDPad() then
@ -940,11 +934,9 @@ function Menu:init()
self.key_events.FocusRight = nil self.key_events.FocusRight = nil
-- shortcut icon is not needed for touch device -- shortcut icon is not needed for touch device
if self.is_enable_shortcut then if self.is_enable_shortcut then
self.key_events.SelectByShortCut = { {self.item_shortcuts} } self.key_events.SelectByShortCut = { { self.item_shortcuts } }
end end
self.key_events.Right = { self.key_events.Right = { { "Right" } }
{"Right"}, doc = "hold menu item"
}
end end
if #self.item_table > 0 then if #self.item_table > 0 then

@ -71,7 +71,7 @@ function MultiConfirmBox:init()
} }
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { {Device.input.group.Back}, doc = "cancel" } self.key_events.Close = { { Device.input.group.Back } }
end end
end end
local content = HorizontalGroup:new{ local content = HorizontalGroup:new{

@ -204,12 +204,10 @@ function NetworkItem:init()
} }
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events.TapSelect = {
TapSelect = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = self.dimen,
range = self.dimen,
}
} }
} }
end end

@ -71,10 +71,7 @@ function Notification:init()
if not self.toast then if not self.toast then
-- If not toast, closing is handled in here -- If not toast, closing is handled in here
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.AnyKeyPressed = { { Input.group.Any } }
AnyKeyPressed = { { Input.group.Any },
seqtext = "any key", doc = "close dialog" }
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.TapClose = { self.ges_events.TapClose = {

@ -52,49 +52,51 @@ function PageBrowserWidget:init()
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events = {
Close = { {Device.input.group.Back}, doc = "close page" }, Close = { { Device.input.group.Back } },
ScrollRowUp = {{"Up"}, doc = "scroll up"}, ScrollRowUp = { { "Up" } },
ScrollRowDown = {{"Down"}, doc = "scrol down"}, ScrollRowDown = { { "Down" } },
ScrollPageUp = {{Input.group.PgBack}, doc = "prev page"}, ScrollPageUp = { { Input.group.PgBack } },
ScrollPageDown = {{Input.group.PgFwd}, doc = "next page"}, ScrollPageDown = { { Input.group.PgFwd } },
} }
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Swipe = { self.ges_events = {
GestureRange:new{ Swipe = {
ges = "swipe", GestureRange:new{
range = self.dimen, ges = "swipe",
} range = self.dimen,
} }
self.ges_events.MultiSwipe = { },
GestureRange:new{ MultiSwipe = {
ges = "multiswipe", GestureRange:new{
range = self.dimen, ges = "multiswipe",
} range = self.dimen,
} }
self.ges_events.Tap = { },
GestureRange:new{ Tap = {
ges = "tap", GestureRange:new{
range = self.dimen, ges = "tap",
} range = self.dimen,
} }
self.ges_events.Hold = { },
GestureRange:new{ Hold = {
ges = "hold", GestureRange:new{
range = self.dimen, ges = "hold",
} range = self.dimen,
} }
self.ges_events.Pinch = { },
GestureRange:new{ Pinch = {
ges = "pinch", GestureRange:new{
range = self.dimen, ges = "pinch",
} range = self.dimen,
} }
self.ges_events.Spread = { },
GestureRange:new{ Spread = {
ges = "spread", GestureRange:new{
range = self.dimen, ges = "spread",
} range = self.dimen,
}
},
} }
end end

@ -83,9 +83,7 @@ function PhysicalKeyboard:init()
for _,row in ipairs(Device.keyboard_layout) do for _,row in ipairs(Device.keyboard_layout) do
util.arrayAppend(all_keys, row) util.arrayAppend(all_keys, row)
end end
self.key_events = { self.key_events.KeyPress = { { all_keys } }
KeyPress = { { all_keys }, }
}
self.dimen = Geom:new{ x = 0, y = 0, w = 0, h = 0 } self.dimen = Geom:new{ x = 0, y = 0, w = 0, h = 0 }

@ -43,10 +43,7 @@ local QRMessage = InputContainer:extend{
function QRMessage:init() function QRMessage:init()
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.AnyKeyPressed = { { Input.group.Any } }
AnyKeyPressed = { { Input.group.Any },
seqtext = "any key", doc = "close dialog" }
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.TapClose = { 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) self.width = math.floor(math.min(self.screen_width, self.screen_height) * self.width_factor)
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { {Device.input.group.Back}, doc = "close widget" } self.key_events.Close = { { Device.input.group.Back } }
end end
self.ges_events = { self.ges_events.TapClose = {
TapClose = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = Geom:new{
range = Geom:new{ w = self.screen_width,
w = self.screen_width, h = self.screen_height,
h = self.screen_height, }
}
},
}, },
} }
self:update() self:update()
end end

@ -18,12 +18,9 @@ local ScreenSaverWidget = InputContainer:extend{
function ScreenSaverWidget:init() function ScreenSaverWidget:init()
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.AnyKeyPressed = { { Device.input.group.Any } }
AnyKeyPressed = { { Device.input.group.Any }, seqtext = "any key", doc = "close widget" },
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = {}
if G_reader_settings:readSetting("screensaver_delay") == "gesture" then if G_reader_settings:readSetting("screensaver_delay") == "gesture" then
self:setupGestureEvents() self:setupGestureEvents()
end end
@ -34,7 +31,7 @@ function ScreenSaverWidget:init()
w = Screen:getWidth(), w = Screen:getWidth(),
h = Screen:getHeight(), 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
end end
self:update() self:update()

@ -79,8 +79,8 @@ function ScrollHtmlWidget:init()
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events = {
ScrollDown = {{Input.group.PgFwd}, doc = "scroll down"}, ScrollDown = { { Input.group.PgFwd } },
ScrollUp = {{Input.group.PgBack}, doc = "scroll up"}, ScrollUp = { { Input.group.PgBack } },
} }
end end
end end

@ -118,8 +118,8 @@ function ScrollTextWidget:init()
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events = {
ScrollDown = {{Input.group.PgFwd}, doc = "scroll down"}, ScrollDown = { { Input.group.PgFwd } },
ScrollUp = {{Input.group.PgBack}, doc = "scroll up"}, ScrollUp = { { Input.group.PgBack } },
} }
end end
end end

@ -27,21 +27,19 @@ function SkimToWidget:init()
local screen_height = Screen:getHeight() local screen_height = Screen:getHeight()
if Device:hasKeys() then 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 end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events.TapProgress = {
TapProgress = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = Geom:new{
range = Geom:new{ x = 0, y = 0,
x = 0, y = 0, w = screen_width,
w = screen_width, h = screen_height,
h = screen_height, }
}
},
}, },
} }
end end
self.buttons_layout = {} self.buttons_layout = {}

@ -141,9 +141,9 @@ function SortWidget:init()
h = self.height or Screen:getHeight(), h = self.height or Screen:getHeight(),
} }
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { { Device.input.group.Back }, doc = "close dialog" } self.key_events.Close = { { Device.input.group.Back } }
self.key_events.NextPage = { { Device.input.group.PgFwd}, doc = "next page"} self.key_events.NextPage = { { Device.input.group.PgFwd } }
self.key_events.PrevPage = { { Device.input.group.PgBack}, doc = "prev page"} self.key_events.PrevPage = { { Device.input.group.PgBack } }
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Swipe = { 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) self.width = math.floor(math.min(self.screen_width, self.screen_height) * self.width_factor)
end end
if Device:hasKeys() then 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 end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events.TapClose = {
TapClose = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = Geom:new{
range = Geom:new{ w = self.screen_width,
w = self.screen_width, h = self.screen_height,
h = self.screen_height, }
}
},
}, },
} }
end end
if self.unit and self.unit ~= "" then if self.unit and self.unit ~= "" then

@ -162,12 +162,10 @@ function TextBoxWidget:init()
self.dimen = Geom:new(self:getSize()) self.dimen = Geom:new(self:getSize())
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events = { self.ges_events.TapImage = {
TapImage = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", range = function() return self.dimen end,
range = function() return self.dimen end,
},
}, },
} }
end end

@ -82,9 +82,7 @@ function TextViewer:init()
self._old_virtual_line_num = 1 self._old_virtual_line_num = 1
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.Close = { { Device.input.group.Back } }
Close = { {Device.input.group.Back}, doc = "close text viewer" }
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then

@ -118,14 +118,12 @@ function ToggleSwitch:init()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Toggle switch",
}, },
HoldSelect = { HoldSelect = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold switch",
}, },
} }
end end

@ -55,14 +55,12 @@ function TouchMenuItem:init()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Select Menu Item",
}, },
HoldSelect = { HoldSelect = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, 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 if Device:hasFewKeys() then
self.key_events.Back = { {"Left"}, doc = "back to upper menu or close touchmenu" } self.key_events.Back = { { "Left" } }
end end
self.key_events.NextPage = { {Input.group.PgFwd}, doc = "next page" } self.key_events.NextPage = { { Input.group.PgFwd } }
self.key_events.PrevPage = { {Input.group.PgBack}, doc = "previous page" } self.key_events.PrevPage = { { Input.group.PgBack } }
local icons = {} local icons = {}
for _, v in ipairs(self.tab_item_table) do for _, v in ipairs(self.tab_item_table) do

@ -41,20 +41,19 @@ function TrapWidget:init()
h = Screen:getHeight(), h = Screen:getHeight(),
} }
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { self.key_events.AnyKeyPressed = { { Input.group.Any } }
AnyKeyPressed = { { Input.group.Any },
seqtext = "any key", doc = "dismiss" }
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.TapDismiss = { self.ges_events = {
GestureRange:new{ ges = "tap", range = full_screen, } TapDismiss = {
} GestureRange:new{ ges = "tap", range = full_screen, }
self.ges_events.HoldDismiss = { },
GestureRange:new{ ges = "hold", range = full_screen, } HoldDismiss = {
} GestureRange:new{ ges = "hold", range = full_screen, }
self.ges_events.SwipeDismiss = { },
GestureRange:new{ ges = "swipe", range = full_screen, } SwipeDismiss = {
GestureRange:new{ ges = "swipe", range = full_screen, }
},
} }
end end
if self.text then if self.text then

@ -666,17 +666,15 @@ function VirtualKeyPopup:init()
} }
keyboard_frame.dimen = keyboard_frame:getSize() keyboard_frame.dimen = keyboard_frame:getSize()
self.ges_events = { self.ges_events.TapClose = {
TapClose = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", }
}
},
} }
self.tap_interval_override = time.ms(G_reader_settings:readSetting("ges_tap_interval_on_keyboard_ms", 0)) self.tap_interval_override = time.ms(G_reader_settings:readSetting("ges_tap_interval_on_keyboard_ms", 0))
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { {Device.input.group.Back}, doc = "close keyboard" } self.key_events.Close = { { Device.input.group.Back } }
end end
local offset_x = 2*keyboard_frame.bordersize + keyboard_frame.padding + parent_key.keyboard.key_padding 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:initLayer(self.keyboard_layer)
self.tap_interval_override = time.ms(G_reader_settings:readSetting("ges_tap_interval_on_keyboard_ms", 0)) self.tap_interval_override = time.ms(G_reader_settings:readSetting("ges_tap_interval_on_keyboard_ms", 0))
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { {"Back"}, doc = "close keyboard" } self.key_events.Close = { { "Back" } }
end end
if keyboard.wrapInputBox then if keyboard.wrapInputBox then
self.uwrap_func = keyboard.wrapInputBox(self.inputbox) or self.uwrap_func self.uwrap_func = keyboard.wrapInputBox(self.inputbox) or self.uwrap_func

@ -141,14 +141,12 @@ function ListMenuItem:init()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Select Menu Item",
}, },
HoldSelect = { HoldSelect = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Menu Item",
}, },
} }

@ -391,14 +391,12 @@ function MosaicMenuItem:init()
ges = "tap", ges = "tap",
range = self.dimen, range = self.dimen,
}, },
doc = "Select Menu Item",
}, },
HoldSelect = { HoldSelect = {
GestureRange:new{ GestureRange:new{
ges = "hold", ges = "hold",
range = self.dimen, range = self.dimen,
}, },
doc = "Hold Menu Item",
}, },
} }

@ -369,7 +369,6 @@ function Gestures:multiswipeRecorder(touchmenu_instance)
w = Screen:getWidth(), w = Screen:getWidth(),
h = Screen:getHeight(), h = Screen:getHeight(),
}, },
doc = "Multiswipe in gesture creator"
} }
} }

@ -396,9 +396,9 @@ function CalendarView:init()
end end
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = {{Input.group.Back}, doc = "close page" } self.key_events.Close = { { Input.group.Back } }
self.key_events.NextMonth = {{Input.group.PgFwd}, doc = "next page"} self.key_events.NextMonth = { { Input.group.PgFwd } }
self.key_events.PrevMonth = {{Input.group.PgBack}, doc = "prev page"} self.key_events.PrevMonth = { { Input.group.PgBack } }
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Swipe = { self.ges_events.Swipe = {

@ -59,11 +59,8 @@ function ReaderProgress:init()
return "ui", self.dimen return "ui", self.dimen
end) end)
if Device:hasKeys() then if Device:hasKeys() then
self.key_events = { -- don't get locked in on non touch devices
--don't get locked in on non touch devices self.key_events.AnyKeyPressed = { { Device.input.group.Any } }
AnyKeyPressed = { { Device.input.group.Any },
seqtext = "any key", doc = "close dialog" }
}
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Swipe = { self.ges_events.Swipe = {

@ -154,7 +154,7 @@ local MenuDialog = FocusManager:extend{
function MenuDialog:init() function MenuDialog:init()
self.layout = {} self.layout = {}
if Device:hasKeys() 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 end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Tap = { self.ges_events.Tap = {
@ -412,7 +412,7 @@ local word_info_dialog_width
function WordInfoDialog:init() function WordInfoDialog:init()
if self.dismissable then if self.dismissable then
if Device:hasKeys() 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 end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Tap = { self.ges_events.Tap = {
@ -1022,9 +1022,9 @@ function VocabularyBuilderWidget:init()
h = self.height or Screen:getHeight(), h = self.height or Screen:getHeight(),
} }
if Device:hasKeys() then if Device:hasKeys() then
self.key_events.Close = { { Device.input.group.Back }, doc = "close dialog" } self.key_events.Close = { { Device.input.group.Back } }
self.key_events.NextPage = { { Device.input.group.PgFwd}, doc = "next page"} self.key_events.NextPage = { { Device.input.group.PgFwd } }
self.key_events.PrevPage = { { Device.input.group.PgBack}, doc = "prev page"} self.key_events.PrevPage = { { Device.input.group.PgBack } }
end end
if Device:isTouchDevice() then if Device:isTouchDevice() then
self.ges_events.Swipe = { self.ges_events.Swipe = {

@ -216,8 +216,8 @@ describe("FocusManager module", function()
it("alternative key", function() it("alternative key", function()
local focusmanager = FocusManager:new{} local focusmanager = FocusManager:new{}
focusmanager.extra_key_events = { focusmanager.extra_key_events = {
Hold = { {"Sym", "AA"}, doc = "tap and hold the widget", event="Hold" }, Hold = { { "Sym", "AA" }, event="Hold" },
HalfFocusUp = { {"Alt", "Up"}, doc = "move focus half columns up", event = "FocusHalfMove", args = {"up"} }, HalfFocusUp = { { "Alt", "Up" }, event = "FocusHalfMove", args = {"up"} },
} }
local m = Input.modifiers local m = Input.modifiers
m.Sym = true m.Sym = true

@ -39,12 +39,10 @@ local TouchProbe = InputContainer:extend{
} }
function TouchProbe:init() function TouchProbe:init()
self.ges_events = { self.ges_events.TapProbe = {
TapProbe = { GestureRange:new{
GestureRange:new{ ges = "tap",
ges = "tap", }
}
},
} }
self.image_widget = ImageWidget:new{ self.image_widget = ImageWidget:new{
file = "tools/kobo-touch-probe.png", file = "tools/kobo-touch-probe.png",

@ -129,7 +129,7 @@ Background = InputContainer:new{
key_events = { key_events = {
OpenDialog = { { "Press" } }, OpenDialog = { { "Press" } },
OpenConfirmBox = { { "Del" } }, OpenConfirmBox = { { "Del" } },
QuitApplication = { { {"Home","Back"} } } QuitApplication = { { { "Home", "Back" } } },
}, },
-- contains a gray rectangular desktop -- contains a gray rectangular desktop
FrameContainer:new{ FrameContainer:new{

Loading…
Cancel
Save