From 2b39ba8b83e9190e981cef648bb3b505a780ce9b Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 11 Jun 2012 23:50:11 +0800 Subject: [PATCH 01/22] register all the supported formats for crengine --- frontend/document/credocument.lua | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 7cf24ae3d..848e176c2 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -76,4 +76,17 @@ end function CreDocument:renderPage(pageno, rect, zoom, rotation) end + DocumentRegistry:addProvider("txt", "application/txt", CreDocument) +DocumentRegistry:addProvider("epub", "application/epub", CreDocument) +DocumentRegistry:addProvider("html", "application/html", CreDocument) +DocumentRegistry:addProvider("htm", "application/htm", CreDocument) +DocumentRegistry:addProvider("zip", "application/zip", CreDocument) +DocumentRegistry:addProvider("rtf", "application/rtf", CreDocument) +DocumentRegistry:addProvider("mobi", "application/mobi", CreDocument) +DocumentRegistry:addProvider("prc", "application/prc", CreDocument) +DocumentRegistry:addProvider("azw", "application/azw", CreDocument) +DocumentRegistry:addProvider("chm", "application/chm", CreDocument) +DocumentRegistry:addProvider("pdb", "application/pdb", CreDocument) +DocumentRegistry:addProvider("doc", "application/doc", CreDocument) +DocumentRegistry:addProvider("tcr", "application/tcr", CreDocument) From 4fb2c9d2e3fa4c528579db0bbb08c7454ee25826 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 00:34:30 +0800 Subject: [PATCH 02/22] add gotoPercent for readerrolling.lua --- frontend/ui/reader/readerrolling.lua | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/frontend/ui/reader/readerrolling.lua b/frontend/ui/reader/readerrolling.lua index 33025df7d..234f382a3 100644 --- a/frontend/ui/reader/readerrolling.lua +++ b/frontend/ui/reader/readerrolling.lua @@ -40,9 +40,13 @@ function ReaderRolling:gotoPos(new_pos) self.ui:handleEvent(Event:new("PosUpdate", new_pos)) end +function ReaderRolling:gotoPercent(new_percent) + self:gotoPos(new_percent * self.length / 10000) +end + function ReaderRolling:onGotoPercent(percent) DEBUG("goto document offset in percent:", percent) - self:gotoPos(percent * self.length / 10000) + self:gotoPercent(percent) return true end From 348891c242389848ed0ed42386ff8c64d09e75a2 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 00:35:13 +0800 Subject: [PATCH 03/22] add start_pos and password for readerui.lua --- frontend/ui/readerui.lua | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index 9a618e0a5..c1efabe09 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -27,6 +27,11 @@ ReaderUI = InputContainer:new{ -- the document interface document = nil, + + -- initial page or percent inside document on opening + start_pos = nil, + -- password for document unlock + password = nil, } function ReaderUI:init() @@ -80,7 +85,10 @@ function ReaderUI:init() ui = self } table.insert(self, pager) - pager:gotoPage(1) + if not self.start_pos then + self.start_pos = 1 + end + pager:gotoPage(self.start_pos) else local roller = ReaderRolling:new{ dialog = self.dialog, @@ -88,7 +96,10 @@ function ReaderUI:init() ui = self } table.insert(self, roller) - roller:gotoPos(0) + if not self.start_pos then + self.start_pos = 0 + end + roller:gotoPercent(self.start_pos) end -- notify childs of dimensions self:handleEvent(Event:new("SetDimensions", self.dimen)) From bb450c81d4d2a0df0f7b4eff713e5709f45225e9 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 00:37:58 +0800 Subject: [PATCH 04/22] read arguemtns in reader.lua --- reader.lua | 86 +++++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 82 insertions(+), 4 deletions(-) diff --git a/reader.lua b/reader.lua index 0d49706d5..06dc40722 100644 --- a/reader.lua +++ b/reader.lua @@ -1,11 +1,15 @@ +#!./kpdfview + package.path = "./frontend/?.lua" require "ui/ui" require "ui/readerui" require "ui/filechooser" require "ui/infomessage" require "document/document" +require "alt_getopt" -function showReader(file) + +function showReader(file, pass) local document = DocumentRegistry:getProvider(file) if not document then UIManager:show(InfoMessage:new{ text = "No reader engine for this file" }) @@ -22,8 +26,10 @@ function showReader(file) local reader = ReaderUI:new{ dialog = readerwindow, dimen = Screen:getSize(), - document = document + document = document, + password = pass } + readerwindow[1] = reader UIManager:show(readerwindow) @@ -49,6 +55,78 @@ function showFileManager(path) UIManager:show(FileManager) end -showFileManager(".") -UIManager:run() + +-- option parsing: +longopts = { + password = "p", + goto = "g", + gamma = "G", + debug = "d", + help = "h" +} + +function showusage() + print("usage: ./reader.lua [OPTION] ... path") + print("Read all the books on your E-Ink reader") + print("") + print("-p, --password=PASSWORD set password for reading PDF document") + print("-G, --gamma=GAMMA set gamma correction") + print(" (floating point notation, e.g. \"1.5\")") + print("-d, --debug start in debug mode") + print("-h, --help show this usage help") + print("") + print("If you give the name of a directory instead of a file path, a file") + print("chooser will show up and let you select a file") + print("") + print("If you don't pass any path, the last viewed document will be opened") + print("") + print("This software is licensed under the GPLv3.") + print("See http://github.com/hwhw/kindlepdfviewer for more info.") + return +end + +optarg, optind = alt_getopt.get_opts(ARGV, "p:G:hg:dg:", longopts) + +if optarg["h"] then + return showusage() +end + +if not optarg["d"] then + DEBUG = function() end +end + +if optarg["G"] ~= nil then + globalgamma = optarg["G"] +end + +Screen:updateRotationMode() +Screen.native_rotation_mode = Screen.cur_rotation_mode + + + +if ARGV[optind] then + if lfs.attributes(ARGV[optind], "mode") == "directory" then + showFileManager(ARGV[optind]) + elseif lfs.attributes(ARGV[optind], "mode") == "file" then + showReader(ARGV[optind], optarg["p"]) + end + UIManager:run() +elseif last_file and lfs.attributes(last_file, "mode") == "file" then + --@TODO get last_file from settings 12.06 2012 (houqp) + showReader(last_file, optarg["p"]) + UIManager:run() +else + return showusage() +end + + + +-- @TODO dirty workaround, find a way to force native system poll +-- screen orientation and upside down mode 09.03 2012 +fb:setOrientation(Screen.native_rotation_mode) + +if util.isEmulated()==0 then + os.execute("killall -cont cvm") + os.execute('echo "send '..KEY_MENU..'" > /proc/keypad;echo "send '..KEY_MENU..'" > /proc/keypad') +end From 379d6216a06dac42ba2da34b30181ae314995d8a Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 12:10:44 +0800 Subject: [PATCH 05/22] read reader settings in reader.lua --- reader.lua | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) mode change 100644 => 100755 reader.lua diff --git a/reader.lua b/reader.lua old mode 100644 new mode 100755 index 06dc40722..53593b115 --- a/reader.lua +++ b/reader.lua @@ -100,6 +100,15 @@ if optarg["G"] ~= nil then globalgamma = optarg["G"] end +-- set up reader's setting: font +G_reader_settings = DocSettings:open(".reader") +fontmap = G_reader_settings:readSetting("fontmap") +DEBUG(fontmap) +if fontmap ~= nil then + Font.fontmap = fontmap +end +local last_file = G_reader_settings:readSetting("lastfile") + Screen:updateRotationMode() Screen.native_rotation_mode = Screen.cur_rotation_mode @@ -113,7 +122,6 @@ if ARGV[optind] then end UIManager:run() elseif last_file and lfs.attributes(last_file, "mode") == "file" then - --@TODO get last_file from settings 12.06 2012 (houqp) showReader(last_file, optarg["p"]) UIManager:run() else From 07d6f665653d8a4be85bd36913b30710614351e1 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 12:13:51 +0800 Subject: [PATCH 06/22] fix screen rotation mode restore for native system --- frontend/ui/screen.lua | 4 ++++ reader.lua | 3 +-- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/frontend/ui/screen.lua b/frontend/ui/screen.lua index dc3e721d6..e37f3433f 100644 --- a/frontend/ui/screen.lua +++ b/frontend/ui/screen.lua @@ -88,6 +88,10 @@ function Screen:updateRotationMode() self.cur_rotation_mode = self.fb:getOrientation() end +function Screen:setRotationMode(mode) + self.fb:setOrientation(Screen.native_rotation_mode) +end + function Screen:saveCurrentBB() local width, height = self:getWidth(), self.getHeight() diff --git a/reader.lua b/reader.lua index 53593b115..76c70c90e 100755 --- a/reader.lua +++ b/reader.lua @@ -103,7 +103,6 @@ end -- set up reader's setting: font G_reader_settings = DocSettings:open(".reader") fontmap = G_reader_settings:readSetting("fontmap") -DEBUG(fontmap) if fontmap ~= nil then Font.fontmap = fontmap end @@ -132,7 +131,7 @@ end -- @TODO dirty workaround, find a way to force native system poll -- screen orientation and upside down mode 09.03 2012 -fb:setOrientation(Screen.native_rotation_mode) +Screen:setRotationMode(Screen.native_rotation_mode) if util.isEmulated()==0 then os.execute("killall -cont cvm") From d89cbc43f97b2925660a33a514218333d18b95d3 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 14:38:00 +0800 Subject: [PATCH 07/22] replace getProvider with openDocument now getProvider only returns the provider --- frontend/document/document.lua | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/frontend/document/document.lua b/frontend/document/document.lua index 80c5c6c99..3f8874b2c 100644 --- a/frontend/document/document.lua +++ b/frontend/document/document.lua @@ -9,16 +9,21 @@ function DocumentRegistry:addProvider(extension, mimetype, provider) table.insert(self.providers, { extension = extension, mimetype = mimetype, provider = provider }) end +function DocumentRegistry:openDocument(file) + return self:getProvider(file):new{file = file} +end + function DocumentRegistry:getProvider(file) -- TODO: some implementation based on mime types? local extension = string.lower(string.match(file, ".+%.([^.]+)")) for _, provider in ipairs(self.providers) do if extension == provider.extension then - return provider.provider:new{file = file} + return provider.provider end end end + --[[ This is an abstract interface to a document ]]-- From 84c435ebdcad653835acc2971e03675239e77da7 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 14:38:52 +0800 Subject: [PATCH 08/22] use getProvider and openDocument in reader.lua we use getProvider for file extension filter --- reader.lua | 9 +++++++-- wtest.lua | 6 +++--- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/reader.lua b/reader.lua index 76c70c90e..6601b512a 100755 --- a/reader.lua +++ b/reader.lua @@ -10,7 +10,7 @@ require "alt_getopt" function showReader(file, pass) - local document = DocumentRegistry:getProvider(file) + local document = DocumentRegistry:openDocument(file) if not document then UIManager:show(InfoMessage:new{ text = "No reader engine for this file" }) return @@ -39,7 +39,12 @@ function showFileManager(path) local FileManager = FileChooser:new{ path = path, dimen = Screen:getSize(), - is_borderless = true + is_borderless = true, + filter = function(filename) + if DocumentRegistry:getProvider(filename) then + return true + end + end } function FileManager:onFileSelect(file) diff --git a/wtest.lua b/wtest.lua index dd18eb9c3..caeefaf2a 100644 --- a/wtest.lua +++ b/wtest.lua @@ -145,9 +145,9 @@ readerwindow = CenterContainer:new{ reader = ReaderUI:new{ dialog = readerwindow, dimen = Geom:new{ w = Screen:getWidth() - 100, h = Screen:getHeight() - 100 }, - document = DocumentRegistry:getProvider("test/2col.pdf") - --document = DocumentRegistry:getProvider("test/djvu3spec.djvu") - --document = DocumentRegistry:getProvider("./README.TXT") + document = DocumentRegistry:openDocument("test/2col.pdf") + --document = DocumentRegistry:openDocument("test/djvu3spec.djvu") + --document = DocumentRegistry:openDocument("./README.TXT") } readerwindow[1][1] = reader From 77761554d954f95fcc55b77d4ed1be1f98622e87 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 14:52:35 +0800 Subject: [PATCH 09/22] add CreDocument:engineInit() method --- frontend/document/credocument.lua | 37 +++++++++++++++++++------------ frontend/document/document.lua | 8 +++---- 2 files changed, 27 insertions(+), 18 deletions(-) diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 848e176c2..f9c4c637f 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -1,10 +1,11 @@ -require "cache" require "ui/geometry" CreDocument = Document:new{ _document = false, + engine_initilized = false, + line_space_percent = 100, - --dc_null = DrawContext.new() + default_font = "Droid Sans Fallback", } -- NuPogodi, 20.05.12: inspect the zipfile content @@ -22,20 +23,28 @@ function CreDocument:zipContentExt(fname) return string.lower(string.match(s, ".+%.([^.]+)")) end -function CreDocument:init() - -- we need to initialize the CRE font list - local fonts = Font:getFontList() - for _k, _v in ipairs(fonts) do - local ok, err = pcall(cre.registerFont, Font.fontdir..'/'.._v) - if not ok then - DEBUG(err) +function CreDocument:engineInit() + if not engine_initilized then + -- we need to initialize the CRE font list + local fonts = Font:getFontList() + for _k, _v in ipairs(fonts) do + local ok, err = pcall(cre.registerFont, Font.fontdir..'/'.._v) + if not ok then + DEBUG(err) + end end - end - --local default_font = G_reader_settings:readSetting("cre_font") - --if default_font then - --self.default_font = default_font - --end + local default_font = G_reader_settings:readSetting("cre_font") + if default_font then + self.default_font = default_font + end + + engine_initilized = true + end +end + +function CreDocument:init() + self:engineInit() local ok local file_type = string.lower(string.match(self.file, ".+%.([^.]+)")) diff --git a/frontend/document/document.lua b/frontend/document/document.lua index 3f8874b2c..9d2ddef3f 100644 --- a/frontend/document/document.lua +++ b/frontend/document/document.lua @@ -9,10 +9,6 @@ function DocumentRegistry:addProvider(extension, mimetype, provider) table.insert(self.providers, { extension = extension, mimetype = mimetype, provider = provider }) end -function DocumentRegistry:openDocument(file) - return self:getProvider(file):new{file = file} -end - function DocumentRegistry:getProvider(file) -- TODO: some implementation based on mime types? local extension = string.lower(string.match(file, ".+%.([^.]+)")) @@ -23,6 +19,10 @@ function DocumentRegistry:getProvider(file) end end +function DocumentRegistry:openDocument(file) + return self:getProvider(file):new{file = file} +end + --[[ This is an abstract interface to a document From 7d008bf622049da69d55ac71f6f534900b980047 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 15:59:35 +0800 Subject: [PATCH 10/22] fix end_position calculation in Menu:onNextPage --- frontend/ui/menu.lua | 3 +++ 1 file changed, 3 insertions(+) diff --git a/frontend/ui/menu.lua b/frontend/ui/menu.lua index dce6565bd..2e7ca6fdf 100644 --- a/frontend/ui/menu.lua +++ b/frontend/ui/menu.lua @@ -357,6 +357,9 @@ function Menu:onNextPage() elseif self.page == self.page_num then -- on the last page, we check if we're on the last item local end_position = #self.item_table % self.perpage + if end_position == 0 then + end_position = self.perpage + end if end_position ~= self.selected.y then self:updateItems(end_position) end From f8f188ff897d1f6b736d81b5015b574ff8995db0 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 16:02:08 +0800 Subject: [PATCH 11/22] jump to first menu item if pagebck is pressed in first page --- frontend/ui/menu.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/frontend/ui/menu.lua b/frontend/ui/menu.lua index 2e7ca6fdf..9afd5b1f8 100644 --- a/frontend/ui/menu.lua +++ b/frontend/ui/menu.lua @@ -370,8 +370,8 @@ end function Menu:onPrevPage() if self.page > 1 then self.page = self.page - 1 - self:updateItems(1) end + self:updateItems(1) return true end From acaf8d660e9d3df83e04ce79e5186b69f6fcc0f1 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 17:42:02 +0800 Subject: [PATCH 12/22] font menu for readerui --- frontend/document/credocument.lua | 7 +++++++ frontend/document/document.lua | 4 ++-- frontend/ui/reader/readerrolling.lua | 28 +++++++++++++++++++++++----- frontend/ui/reader/readertoc.lua | 3 +-- frontend/ui/reader/readerview.lua | 9 +++++++++ frontend/ui/readerui.lua | 9 +++++++++ 6 files changed, 51 insertions(+), 9 deletions(-) diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index f9c4c637f..96042e588 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -85,6 +85,13 @@ end function CreDocument:renderPage(pageno, rect, zoom, rotation) end +function CreDocument:setFont(new_font_face) + if new_font_face and self.font_face ~= new_font_face then + self._document:setFontFace(new_font_face) + self.font_face = new_font_face + end +end + DocumentRegistry:addProvider("txt", "application/txt", CreDocument) DocumentRegistry:addProvider("epub", "application/epub", CreDocument) diff --git a/frontend/document/document.lua b/frontend/document/document.lua index 9d2ddef3f..abb434d49 100644 --- a/frontend/document/document.lua +++ b/frontend/document/document.lua @@ -46,7 +46,7 @@ Document = { number_of_pages = 0, -- if not pageable, length of the document in pixels - length = 0, + doc_height = 0, -- other metadata title = "", @@ -103,7 +103,7 @@ function Document:_readMetadata() if self.info.has_pages then self.info.number_of_pages = self._document:getPages() else - self.info.length = self._document:getFullHeight() + self.info.doc_height = self._document:getFullHeight() end return true end diff --git a/frontend/ui/reader/readerrolling.lua b/frontend/ui/reader/readerrolling.lua index 234f382a3..9784d7317 100644 --- a/frontend/ui/reader/readerrolling.lua +++ b/frontend/ui/reader/readerrolling.lua @@ -20,13 +20,15 @@ ReaderRolling = InputContainer:new{ GotoLast = { {"0"}, doc = "go to end", event = "GotoPercent", args = 100}, }, + old_doc_height = nil, current_pos = 0, - length = nil, + doc_height = nil, panning_steps = ReaderPanning.panning_steps, } function ReaderRolling:init() - self.length = self.ui.document.info.length + self.doc_height = self.ui.document.info.doc_height + self.old_doc_height = self.doc_height end function ReaderRolling:onPosUpdate(new_pos) @@ -36,12 +38,27 @@ end function ReaderRolling:gotoPos(new_pos) if new_pos == self.current_pos then return end if new_pos < 0 then new_pos = 0 end - if new_pos > self.length then new_pos = self.length end + if new_pos > self.doc_height then new_pos = self.doc_height end self.ui:handleEvent(Event:new("PosUpdate", new_pos)) end function ReaderRolling:gotoPercent(new_percent) - self:gotoPos(new_percent * self.length / 10000) + self:gotoPos(new_percent * self.doc_height / 10000) +end + +-- remember to signal this event the document has been zoomed, +-- font has been changed, or line height has been changed. +function ReaderRolling:onUpdatePos() + -- reread document height + self.ui.document:_readMetadata() + -- update self.current_pos if the height of document has been changed. + if self.old_doc_height ~= self.ui.document.info.doc_height then + self:gotoPos(self.current_pos * + (self.ui.document.info.doc_height - self.dialog.dimen.h) / + (self.old_doc_height - self.dialog.dimen.h)) + self.old_doc_height = self.ui.document.info.doc_height + end + return true end function ReaderRolling:onGotoPercent(percent) @@ -64,5 +81,6 @@ function ReaderRolling:onPanning(args, key) end function ReaderRolling:onZoom() - --@TODO re-read length info after font or lineheight changes 05.06 2012 (houqp) + --@TODO re-read doc_height info after font or lineheight changes 05.06 2012 (houqp) + self:onUpdatePos() end diff --git a/frontend/ui/reader/readertoc.lua b/frontend/ui/reader/readertoc.lua index 2722870ab..586811e5c 100644 --- a/frontend/ui/reader/readertoc.lua +++ b/frontend/ui/reader/readertoc.lua @@ -59,8 +59,7 @@ function ReaderToc:onShowToc() local toc_menu = Menu:new{ title = "Table of Contents", item_table = items, - width = self.dimen.w, - height = self.dimen.h, + dimen = self.dimen, ui = self.ui } function toc_menu:onMenuChoice(item) diff --git a/frontend/ui/reader/readerview.lua b/frontend/ui/reader/readerview.lua index 20c23a202..b239446fa 100644 --- a/frontend/ui/reader/readerview.lua +++ b/frontend/ui/reader/readerview.lua @@ -107,3 +107,12 @@ function ReaderView:onRotationUpdate(rotation) self:recalculate() end +function ReaderView:onFontChange(font_face) + msg = InfoMessage:new{ text = "Redrawing with "..font_face} + UIManager:show(msg) + self.ui.document:setFont(font_face) + -- signal readerrolling to update pos in new height + self.ui:handleEvent(Event:new("UpdatePos")) + UIManager:close(msg) +end + diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index c1efabe09..8a9114b50 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -6,6 +6,7 @@ require "ui/reader/readerrotation" require "ui/reader/readerpaging" require "ui/reader/readerrolling" require "ui/reader/readertoc" +require "ui/reader/readerfont" require "ui/reader/readermenu" --[[ @@ -90,6 +91,7 @@ function ReaderUI:init() end pager:gotoPage(self.start_pos) else + -- rolling controller local roller = ReaderRolling:new{ dialog = self.dialog, view = self[1], @@ -100,6 +102,13 @@ function ReaderUI:init() self.start_pos = 0 end roller:gotoPercent(self.start_pos) + -- font menu + local font_menu = ReaderFont:new{ + dialog = self.dialog, + view = self[1], + ui = self + } + table.insert(self, font_menu) end -- notify childs of dimensions self:handleEvent(Event:new("SetDimensions", self.dimen)) From 0ddc9f6e99a4ca2e7784006e54eb90733b599bdc Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 18:04:08 +0800 Subject: [PATCH 13/22] add back readerfont.lua --- frontend/ui/reader/readerfont.lua | 47 +++++++++++++++++++++++++++++++ frontend/ui/reader/readerview.lua | 9 ------ 2 files changed, 47 insertions(+), 9 deletions(-) create mode 100644 frontend/ui/reader/readerfont.lua diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua new file mode 100644 index 000000000..5a728fb6f --- /dev/null +++ b/frontend/ui/reader/readerfont.lua @@ -0,0 +1,47 @@ +ReaderFont = InputContainer:new{ + key_events = { + ShowFontMenu = { {"F"}, doc = "show font menu"}, + IncreaseSize = { { "Shift", Input.group.PgFwd }, doc = "increase font size", event = "ChangeSize", args = "increase" }, + DecreaseSize = { { "Shift", Input.group.PgBack }, doc = "decrease font size", event = "ChangeSize", args = "decrease" }, + }, + dimen = Geom:new{ w = Screen:getWidth()-20, h = Screen:getHeight()-20}, +} + +function ReaderFont:onShowFontMenu() + -- build menu item_table + local face_list = cre.getFontFaces() + for k,v in ipairs(face_list) do + face_list[k] = {text = v} + end + + -- NuPogodi, 18.05.12: define the number of the current font in face_list + --local item_no = 0 + --while face_list[item_no] ~= self.font_face and item_no < #face_list do + --item_no = item_no + 1 + --end + --local fonts_menu = Menu:new{ + --menu_title = "Fonts Menu", + --item_array = face_list, + --current_entry = item_no - 1, + --} + + local font_menu = Menu:new{ + title = "Font Menu", + item_table = face_list, + dimen = self.dimen, + ui = self.ui + } + + function font_menu:onMenuChoice(item) + msg = InfoMessage:new{ text = "Redrawing with "..item.text} + UIManager:show(msg) + self.ui.document:setFont(item.text) + -- signal readerrolling to update pos in new height + self.ui:handleEvent(Event:new("UpdatePos")) + UIManager:close(msg) + end + + UIManager:show(font_menu) +end + + diff --git a/frontend/ui/reader/readerview.lua b/frontend/ui/reader/readerview.lua index b239446fa..20c23a202 100644 --- a/frontend/ui/reader/readerview.lua +++ b/frontend/ui/reader/readerview.lua @@ -107,12 +107,3 @@ function ReaderView:onRotationUpdate(rotation) self:recalculate() end -function ReaderView:onFontChange(font_face) - msg = InfoMessage:new{ text = "Redrawing with "..font_face} - UIManager:show(msg) - self.ui.document:setFont(font_face) - -- signal readerrolling to update pos in new height - self.ui:handleEvent(Event:new("UpdatePos")) - UIManager:close(msg) -end - From 845aae3e372969cefbf1aa5e0e37731c053044ca Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 20:27:12 +0800 Subject: [PATCH 14/22] rename getXPointer to getCurrentXPointer in cre.cpp --- cre.cpp | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/cre.cpp b/cre.cpp index a60bbae83..e88ff0b05 100644 --- a/cre.cpp +++ b/cre.cpp @@ -149,7 +149,7 @@ static int getCurrentPercent(lua_State *L) { return 1; } -static int getXPointer(lua_State *L) { +static int getCurrentXPointer(lua_State *L) { CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); ldomXPointer xp = doc->text_view->getBookmark(); @@ -444,7 +444,7 @@ static const struct luaL_Reg credocument_meth[] = { {"getPosFromXPointer", getPosFromXPointer}, {"getCurrentPos", getCurrentPos}, {"getCurrentPercent", getCurrentPercent}, - {"getXPointer", getXPointer}, + {"getCurrentXPointer", getCurrentXPointer}, {"getFullHeight", getFullHeight}, {"getToc", getTableOfContent}, /*--- set methods ---*/ From 62f73c177b539c32a373e46ee2a2a743c6f31154 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 20:40:39 +0800 Subject: [PATCH 15/22] add getFontSize in cre.cpp --- cre.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cre.cpp b/cre.cpp index e88ff0b05..e994638a4 100644 --- a/cre.cpp +++ b/cre.cpp @@ -166,6 +166,14 @@ static int getFullHeight(lua_State *L) { return 1; } +static int getFontSize(lua_State *L) { + CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); + + lua_pushinteger(L, doc->text_view->getFontSize()); + + return 1; +} + /* * helper function for getTableOfContent() */ @@ -446,6 +454,7 @@ static const struct luaL_Reg credocument_meth[] = { {"getCurrentPercent", getCurrentPercent}, {"getCurrentXPointer", getCurrentXPointer}, {"getFullHeight", getFullHeight}, + {"getFontSize", getFontSize}, {"getToc", getTableOfContent}, /*--- set methods ---*/ {"setFontFace", setFontFace}, From 9e6940621b58a68929e508c529301bc347db9f66 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 20:48:39 +0800 Subject: [PATCH 16/22] add getFontFace in cre.cpp and credocument.lua also move self.font_face to readerfont module --- cre.cpp | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/cre.cpp b/cre.cpp index e994638a4..c2fe620da 100644 --- a/cre.cpp +++ b/cre.cpp @@ -174,6 +174,14 @@ static int getFontSize(lua_State *L) { return 1; } +static int getFontFace(lua_State *L) { + CreDocument *doc = (CreDocument*) luaL_checkudata(L, 1, "credocument"); + + lua_pushstring(L, doc->text_view->getDefaultFontFace().c_str()); + + return 1; +} + /* * helper function for getTableOfContent() */ @@ -455,6 +463,7 @@ static const struct luaL_Reg credocument_meth[] = { {"getCurrentXPointer", getCurrentXPointer}, {"getFullHeight", getFullHeight}, {"getFontSize", getFontSize}, + {"getFontFace", getFontFace}, {"getToc", getTableOfContent}, /*--- set methods ---*/ {"setFontFace", setFontFace}, From b3cdbeee19b321c91b4d147303dc922b2338fe64 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 20:58:15 +0800 Subject: [PATCH 17/22] add font size control feature for credocument also rename getFont to getFontFace --- frontend/document/credocument.lua | 16 ++++++++++--- frontend/ui/reader/readerfont.lua | 39 ++++++++++++++++++++++++++----- 2 files changed, 46 insertions(+), 9 deletions(-) diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 96042e588..56edc8f6b 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -85,13 +85,23 @@ end function CreDocument:renderPage(pageno, rect, zoom, rotation) end -function CreDocument:setFont(new_font_face) - if new_font_face and self.font_face ~= new_font_face then +function CreDocument:getFontFace() + return self._document:getFontFace() +end + +function CreDocument:setFontFace(new_font_face) + if new_font_face then self._document:setFontFace(new_font_face) - self.font_face = new_font_face end end +function CreDocument:getFontSize() + return self._document:getFontSize() +end + +function CreDocument:zoomFont(delta) + self._document:zoomFont(delta) +end DocumentRegistry:addProvider("txt", "application/txt", CreDocument) DocumentRegistry:addProvider("epub", "application/epub", CreDocument) diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index 5a728fb6f..6b283f575 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -5,8 +5,16 @@ ReaderFont = InputContainer:new{ DecreaseSize = { { "Shift", Input.group.PgBack }, doc = "decrease font size", event = "ChangeSize", args = "decrease" }, }, dimen = Geom:new{ w = Screen:getWidth()-20, h = Screen:getHeight()-20}, + + font_face = nil, + font_size = nil, } +function ReaderFont:init() + self.font_face = self.ui.document:getFontFace() + self.font_size = self.ui.document:getFontSize() +end + function ReaderFont:onShowFontMenu() -- build menu item_table local face_list = cre.getFontFaces() @@ -33,15 +41,34 @@ function ReaderFont:onShowFontMenu() } function font_menu:onMenuChoice(item) - msg = InfoMessage:new{ text = "Redrawing with "..item.text} - UIManager:show(msg) - self.ui.document:setFont(item.text) - -- signal readerrolling to update pos in new height - self.ui:handleEvent(Event:new("UpdatePos")) - UIManager:close(msg) + if item.text and self.font_face ~= item.text then + self.font_face = item.text + msg = InfoMessage:new{ text = "Redrawing with "..item.text} + UIManager:show(msg) + self.ui.document:setFontFace(item.text) + -- signal readerrolling to update pos in new height + self.ui:handleEvent(Event:new("UpdatePos")) + UIManager:close(msg) + end end UIManager:show(font_menu) + return true +end + +function ReaderFont:onChangeSize(direction) + local delta = 1 + if direction == "decrease" then + delta = -1 + end + self.font_size = self.font_size + delta + msg = InfoMessage:new{text = direction.." font size to "..self.font_size} + UIManager:show(msg) + self.ui.document:zoomFont(delta) + self.ui:handleEvent(Event:new("UpdatePos")) + UIManager:close(msg) + + return true end From bad329811d1bb6ecfb55bb2aff135375cbd64764 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 21:12:04 +0800 Subject: [PATCH 18/22] add line space control feature for credocument --- frontend/document/credocument.lua | 7 ++++++- frontend/ui/reader/readerfont.lua | 35 +++++++++++++++++++++++++++++-- 2 files changed, 39 insertions(+), 3 deletions(-) diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 56edc8f6b..8f9e0b48a 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -73,7 +73,8 @@ function CreDocument:init() self.info.has_pages = false self:_readMetadata() - self._document:setDefaultInterlineSpace(self.line_space_percent) + -- @TODO read line_space_percent from setting file 12.06 2012 (houqp) + --self._document:setDefaultInterlineSpace(self.line_space_percent) end function CreDocument:hintPage(pageno, zoom, rotation) @@ -103,6 +104,10 @@ function CreDocument:zoomFont(delta) self._document:zoomFont(delta) end +function CreDocument:setInterlineSpacePercent(percent) + self._document:setDefaultInterlineSpace(percent) +end + DocumentRegistry:addProvider("txt", "application/txt", CreDocument) DocumentRegistry:addProvider("epub", "application/epub", CreDocument) DocumentRegistry:addProvider("html", "application/html", CreDocument) diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index 6b283f575..ea48e904a 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -1,13 +1,28 @@ ReaderFont = InputContainer:new{ key_events = { ShowFontMenu = { {"F"}, doc = "show font menu"}, - IncreaseSize = { { "Shift", Input.group.PgFwd }, doc = "increase font size", event = "ChangeSize", args = "increase" }, - DecreaseSize = { { "Shift", Input.group.PgBack }, doc = "decrease font size", event = "ChangeSize", args = "decrease" }, + IncreaseSize = { + { "Shift", Input.group.PgFwd }, + doc = "increase font size", + event = "ChangeSize", args = "increase" }, + DecreaseSize = { + { "Shift", Input.group.PgBack }, + doc = "decrease font size", + event = "ChangeSize", args = "decrease" }, + IncreaseLineSpace = { + { "Alt", Input.group.PgFwd }, + doc = "increase line space", + event = "ChangeLineSpace", args = "increase" }, + DecreaseLineSpace = { + { "Alt", Input.group.PgBack }, + doc = "decrease line space", + event = "ChangeLineSpace", args = "decrease" }, }, dimen = Geom:new{ w = Screen:getWidth()-20, h = Screen:getHeight()-20}, font_face = nil, font_size = nil, + line_space_percent = 100, } function ReaderFont:init() @@ -71,4 +86,20 @@ function ReaderFont:onChangeSize(direction) return true end +function ReaderFont:onChangeLineSpace(direction) + if direction == "decrease" then + self.line_space_percent = self.line_space_percent - 10 + -- NuPogodi, 15.05.12: reduce lowest space_percent to 80 + self.line_space_percent = math.max(self.line_space_percent, 80) + else + self.line_space_percent = self.line_space_percent + 10 + self.line_space_percent = math.min(self.line_space_percent, 200) + end + msg = InfoMessage:new{"line spacing "..self.line_space_percent.."%"} + self.ui.document:setInterlineSpacePercent(self.line_space_percent) + self.ui:handleEvent(Event:new("UpdatePos")) + + return true +end + From b71ac38d3b87eb7ea1d9db22d6110144e70135ce Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 21:18:39 +0800 Subject: [PATCH 19/22] exit KPV on Ctrl+C --- frontend/ui/inputevent.lua | 2 ++ 1 file changed, 2 insertions(+) diff --git a/frontend/ui/inputevent.lua b/frontend/ui/inputevent.lua index f9984eb55..898ef64bf 100644 --- a/frontend/ui/inputevent.lua +++ b/frontend/ui/inputevent.lua @@ -247,6 +247,8 @@ function Input:waitEvent(timeout_us, timeout_s) -- don't report an error on timeout ev = nil break + elseif ev == "application forced to quit" then + os.exit(0) end DEBUG("got error waiting for events:", ev) if ev ~= "Waiting for input failed: 4\n" then From 4c71c628d336ddf18a2c8f94d730c9433889903b Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 12 Jun 2012 22:48:57 +0800 Subject: [PATCH 20/22] release input devices on reader exit --- reader.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/reader.lua b/reader.lua index 6601b512a..c641d6e75 100755 --- a/reader.lua +++ b/reader.lua @@ -138,7 +138,9 @@ end -- screen orientation and upside down mode 09.03 2012 Screen:setRotationMode(Screen.native_rotation_mode) +input.closeAll() if util.isEmulated()==0 then os.execute("killall -cont cvm") - os.execute('echo "send '..KEY_MENU..'" > /proc/keypad;echo "send '..KEY_MENU..'" > /proc/keypad') + -- send double menu key press events to trigger screen refresh + os.execute("echo 'send 139' > /proc/keypad;echo 'send 139' > /proc/keypad") end From 51ed793d14cf4ed3232c4d1e9ca09979cddca2c4 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 13 Jun 2012 00:14:23 +0800 Subject: [PATCH 21/22] add screen rotate support --- frontend/ui/reader/readerfont.lua | 4 +++ frontend/ui/reader/readermenu.lua | 41 ++++++++++++++++++++++++++++--- frontend/ui/reader/readertoc.lua | 4 +++ frontend/ui/reader/readerview.lua | 15 +++++------ frontend/ui/readerui.lua | 5 ++++ frontend/ui/screen.lua | 1 + 6 files changed, 60 insertions(+), 10 deletions(-) diff --git a/frontend/ui/reader/readerfont.lua b/frontend/ui/reader/readerfont.lua index ea48e904a..c5563a17e 100644 --- a/frontend/ui/reader/readerfont.lua +++ b/frontend/ui/reader/readerfont.lua @@ -30,6 +30,10 @@ function ReaderFont:init() self.font_size = self.ui.document:getFontSize() end +function ReaderFont:onSetDimensions(dimen) + self.dimen = dimen +end + function ReaderFont:onShowFontMenu() -- build menu item_table local face_list = cre.getFontFaces() diff --git a/frontend/ui/reader/readermenu.lua b/frontend/ui/reader/readermenu.lua index 833f8f04b..0c778cd9a 100644 --- a/frontend/ui/reader/readermenu.lua +++ b/frontend/ui/reader/readermenu.lua @@ -8,17 +8,46 @@ function ReaderMenu:onShowMenu() local item_table = {} table.insert(item_table, { - text = "Switch zoom mode", + text = "Screen rotate", sub_item_table = { { - text = "Zoom to fit content width", + text = "rotate 90 degree clockwise", + callback = function() + Screen:screenRotate("clockwise") + self.ui:handleEvent(Event:new("SetDimensions", Screen:getSize())) + end }, { - text = "Zoom to fit content height", + text = "rotate 90 degree anticlockwise", + callback = function() + Screen:screenRotate("anticlockwise") + self.ui:handleEvent(Event:new("SetDimensions", Screen:getSize())) + end }, } }) + if self.ui.document.info.has_pages then + table.insert(item_table, { + text = "Switch zoom mode", + sub_item_table = { + { + text = "Zoom to fit content width", + }, + { + text = "Zoom to fit content height", + }, + } + }) + else + table.insert(item_table, { + text = "Font menu", + callback = function() + self.ui:handleEvent(Event:new("ShowFontMenu")) + end + }) + end + table.insert(item_table, { text = "Return to file browser" }) @@ -30,6 +59,12 @@ function ReaderMenu:onShowMenu() height = #item_table + 3 * 28 } + function main_menu:onMenuChoice(item) + if item.callback then + item.callback() + end + end + UIManager:show(main_menu) return true diff --git a/frontend/ui/reader/readertoc.lua b/frontend/ui/reader/readertoc.lua index 586811e5c..8528891dd 100644 --- a/frontend/ui/reader/readertoc.lua +++ b/frontend/ui/reader/readertoc.lua @@ -69,6 +69,10 @@ function ReaderToc:onShowToc() UIManager:show(toc_menu) end +function ReaderToc:onSetDimensions(dimen) + self.dimen = dimen +end + function ReaderToc:onPageUpdate(new_page_no) self.current_page = new_page_no end diff --git a/frontend/ui/reader/readerview.lua b/frontend/ui/reader/readerview.lua index 20c23a202..1beaf1581 100644 --- a/frontend/ui/reader/readerview.lua +++ b/frontend/ui/reader/readerview.lua @@ -59,21 +59,16 @@ function ReaderView:recalculate() self.page_area = page_size -- reset our size - self.visible_area:setSizeTo(self.ui.dimen) + self.visible_area:setSizeTo(self.dimen) -- and recalculate it according to page size self.visible_area:offsetWithin(self.page_area, 0, 0) else - self.visible_area:setSizeTo(self.ui.dimen) + self.visible_area:setSizeTo(self.dimen) end -- flag a repaint UIManager:setDirty(self.dialog) end -function ReaderView:onSetDimensions(dimensions) - -- recalculate view - self:recalculate() -end - function ReaderView:PanningUpdate(dx, dy) DEBUG("pan by", dx, dy) local old = self.visible_area:copy() @@ -87,6 +82,12 @@ function ReaderView:PanningUpdate(dx, dy) return true end +function ReaderView:onSetDimensions(dimensions) + self.dimen = dimensions + -- recalculate view + self:recalculate() +end + function ReaderView:onPageUpdate(new_page_no) self.state.page = new_page_no self:recalculate() diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index 8a9114b50..0f6c96bd3 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -43,6 +43,7 @@ function ReaderUI:init() -- a view container (so it must be child #1!) self[1] = ReaderView:new{ dialog = self.dialog, + dimen = self.dimen, ui = self } -- rotation controller @@ -114,6 +115,10 @@ function ReaderUI:init() self:handleEvent(Event:new("SetDimensions", self.dimen)) end +function ReaderUI:onSetDimensions(dimen) + self.dimen = dimen +end + function ReaderUI:onClose() DEBUG("closing reader") if self.document then diff --git a/frontend/ui/screen.lua b/frontend/ui/screen.lua index e37f3433f..dc0b1d9c6 100644 --- a/frontend/ui/screen.lua +++ b/frontend/ui/screen.lua @@ -66,6 +66,7 @@ function Screen:screenRotate(orien) self.fb:setOrientation(self.cur_rotation_mode) self.fb:close() self.fb = einkfb.open("/dev/fb0") + Input.rotation = self.cur_rotation_mode end function Screen:getSize() From 2d104d7792de160c2ca6465bd04b67132ec72697 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Wed, 13 Jun 2012 21:27:38 +0800 Subject: [PATCH 22/22] adjust keycodes for k4 & add device.lua --- frontend/ui/device.lua | 26 ++++++++++++++++++++++++++ frontend/ui/inputevent.lua | 28 +++++++++++++++++++++------- frontend/ui/ui.lua | 1 + 3 files changed, 48 insertions(+), 7 deletions(-) create mode 100644 frontend/ui/device.lua diff --git a/frontend/ui/device.lua b/frontend/ui/device.lua new file mode 100644 index 000000000..2aacc05de --- /dev/null +++ b/frontend/ui/device.lua @@ -0,0 +1,26 @@ +function util.isKindle4() + re_val = os.execute("cat /proc/cpuinfo | grep MX50") + if re_val == 0 then + return true + else + return false + end +end + +function util.isKindle3() + re_val = os.execute("cat /proc/cpuinfo | grep MX35") + if re_val == 0 then + return true + else + return false + end +end + +function util.isKindle2() + re_val = os.execute("cat /proc/cpuinfo | grep MX3") + if re_val == 0 then + return true + else + return false + end +end diff --git a/frontend/ui/inputevent.lua b/frontend/ui/inputevent.lua index 898ef64bf..125344e54 100644 --- a/frontend/ui/inputevent.lua +++ b/frontend/ui/inputevent.lua @@ -1,4 +1,5 @@ require "ui/event" +require "ui/device" -- constants from EV_KEY = 1 @@ -110,6 +111,7 @@ Input = { [44] = "Z", [45] = "X", [46] = "C", [47] = "V", [48] = "B", [49] = "N", [50] = "M", [52] = ".", [53] = "/", -- only KDX [28] = "Enter", + [29] = "ScreenKB", -- K[4] [42] = "Shift", [56] = "Alt", [57] = " ", @@ -118,12 +120,12 @@ Input = { [92] = "Press", -- KDX [94] = "Sym", -- KDX [98] = "Home", -- KDX - [102] = "Home", -- K[3] + [102] = "Home", -- K[3] & k[4] [104] = "LPgBack", -- K[3] only - [103] = "Up", -- K[3] + [103] = "Up", -- K[3] & k[4] [105] = "Left", [106] = "Right", - [108] = "Down", -- K[3] + [108] = "Down", -- K[3] & k[4] [109] = "RPgBack", [114] = "VMinus", [115] = "VPlus", @@ -132,11 +134,11 @@ Input = { [124] = "RPgFwd", -- KDX [126] = "Sym", -- K[3] [139] = "Menu", - [158] = "Back", -- K[3] + [158] = "Back", -- K[3] & K[4] [190] = "AA", -- K[3] - [191] = "RPgFwd", -- K[3] + [191] = "RPgFwd", -- K[3] & k[4] [193] = "LPgFwd", -- K[3] only - [194] = "Press", -- K[3] + [194] = "Press", -- K[3] & k[4] }, sdl_event_map = { [10] = "1", [11] = "2", [12] = "3", [13] = "4", [14] = "5", [15] = "6", [16] = "7", [17] = "8", [18] = "9", [19] = "0", @@ -229,12 +231,24 @@ function Input:init() -- check if we are running on Kindle 3 (additional volume input) local f=lfs.attributes("/dev/input/event2") if f then - print("Auto-detected Kindle 3") input.open("/dev/input/event2") + if util.isKindle3() then + print("Auto-detected Kindle 3") + end + end + + if util.isKindle4() then + print("Auto-detected Kindle 4") + self:adjustKindle4EventMap() end end end +function Input:adjustKindle4EventMap() + self.event_map[193] = "LPgBack" + self.event_map[104] = "LPgFwd" +end + function Input:waitEvent(timeout_us, timeout_s) -- wrapper for input.waitForEvents that will retry for some cases local ok, ev diff --git a/frontend/ui/ui.lua b/frontend/ui/ui.lua index d7de574d4..44e5732da 100644 --- a/frontend/ui/ui.lua +++ b/frontend/ui/ui.lua @@ -1,4 +1,5 @@ require "ui/geometry" +require "ui/device" require "ui/inputevent" require "ui/widget" require "ui/screen"