diff --git a/frontend/ui/device.lua b/frontend/ui/device.lua index 9e63294f9..f75923bb3 100644 --- a/frontend/ui/device.lua +++ b/frontend/ui/device.lua @@ -1,6 +1,8 @@ Device = { screen_saver_mode = false, charging_mode = false, + survive_screen_saver = false, + touch_dev = nil, model = nil, } @@ -79,6 +81,14 @@ function Device:isTouchDevice() return (self.model == "KindlePaperWhite") or (self.model == "KindleTouch") or util.isEmulated() end +function Device:setTouchInputDev(dev) + self.touch_dev = dev +end + +function Device:getTouchInputDev() + return self.touch_dev +end + function Device:intoScreenSaver() --os.execute("echo 'screensaver in' >> /mnt/us/event_test.txt") if self.charging_mode == false and self.screen_saver_mode == false then @@ -102,6 +112,7 @@ function Device:outofScreenSaver() --os.execute("killall -stop cvm") Screen:restoreFromSavedBB() Screen:refresh(0) + self.survive_screen_saver = true end self.screen_saver_mode = false end diff --git a/frontend/ui/inputevent.lua b/frontend/ui/inputevent.lua index 5daec6c61..337a51950 100644 --- a/frontend/ui/inputevent.lua +++ b/frontend/ui/inputevent.lua @@ -275,6 +275,7 @@ function Input:init() local dev_mod = Device:getModel() if dev_mod ~= "KindleTouch" then -- event0 in KindleTouch is "WM8962 Beep Generator" (useless) + Device:setTouchInputDev("/dev/input/event0") input.open("/dev/input/event0") end if dev_mod ~= "KindleTouch" and dev_mod ~= "KindlePaperWhite" then @@ -285,6 +286,7 @@ function Input:init() if dev_mod == "KindlePaperWhite" then print("Auto-detected Kindle PaperWhite") elseif dev_mod == "KindleTouch" then + Device:setTouchInputDev("/dev/input/event3") input.open("/dev/input/event2") -- Home button input.open("/dev/input/event3") -- touchscreen -- KT does have one key! diff --git a/reader.lua b/reader.lua index 28755a2b0..439428c90 100755 --- a/reader.lua +++ b/reader.lua @@ -34,11 +34,22 @@ function exitReader() input.closeAll() - if util.isEmulated() ==0 then + if util.isEmulated() == 0 then if Device:isKindle3() or (Device:getModel() == "KindleDXG") then -- send double menu key press events to trigger screen refresh os.execute("echo 'send 139' > /proc/keypad;echo 'send 139' > /proc/keypad") end + if Device:isTouchDevice() and Device.survive_screen_saver then + -- hack the swipe to unlock screen + local dev = Device:getTouchInputDev() + if dev then + local width, height = Screen:getWidth(), Screen:getHeight() + input.fakeTapInput(dev, + math.min(width, height)/2, + math.max(width, height)-30 + ) + end + end end end