diff --git a/frontend/ui/device.lua b/frontend/ui/device.lua index 997954401..e16e789a6 100644 --- a/frontend/ui/device.lua +++ b/frontend/ui/device.lua @@ -4,6 +4,7 @@ Device = { survive_screen_saver = false, touch_dev = nil, model = nil, + firmware_rev = nil, } function Device:getModel() @@ -37,6 +38,9 @@ function Device:getModel() local std_out = io.popen("/bin/kobo_config.sh", "r") local codename = std_out:read() self.model = "Kobo_" .. codename + local version_file = io.open("/mnt/onboard/.kobo/version", "r") + self.firmware_rev = string.sub(version_file:read(),24,28) + version_file:close() elseif kt_test_fd then self.model = "KindleTouch" else @@ -53,6 +57,13 @@ function Device:getModel() return self.model end +function Device:getFirmVer() + if not self.model then + self.model = self:getModel() + end + return self.firmware_rev +end + function Device:isKindle4() return (self:getModel() == "Kindle4") end diff --git a/frontend/ui/inputevent.lua b/frontend/ui/inputevent.lua index a6bcaee9c..e6c384f9e 100644 --- a/frontend/ui/inputevent.lua +++ b/frontend/ui/inputevent.lua @@ -316,12 +316,14 @@ function Input:init() end print(_("Auto-detected Kindle Touch")) elseif Device:isKobo() then + firm_rev = Device:getFirmVer() input.open("/dev/input/event1") Device:setTouchInputDev("/dev/input/event1") input.open("/dev/input/event0") -- Light button and sleep slider print(_("Auto-detected Kobo")) self:adjustKoboEventMap() - if dev_mod ~= 'Kobo_trilogy' then + if dev_mod ~= 'Kobo_trilogy' and firm_rev == "2.6.1" + or dev_mod == 'Kobo_dragon' then function Input:eventAdjustHook(ev) if ev.type == EV_ABS then if ev.code == ABS_X then @@ -339,6 +341,19 @@ function Input:init() end return ev end + else + function Input:eventAdjustHook(ev) + if ev.code == ABS_X then + -- We always have to substract from the physical x, + -- regardless of the orientation + if (Screen.width