diff --git a/frontend/apps/reader/modules/readergesture.lua b/frontend/apps/reader/modules/readergesture.lua index b62702891..200cf4483 100644 --- a/frontend/apps/reader/modules/readergesture.lua +++ b/frontend/apps/reader/modules/readergesture.lua @@ -948,7 +948,7 @@ function ReaderGesture:gestureAction(action, ges) self:onShowFLOnOff() elseif action == "toggle_gsensor" then G_reader_settings:flipNilOrFalse("input_ignore_gsensor") - Device:toggleGSensor() + Device:toggleGSensor(not G_reader_settings:isTrue("input_ignore_gsensor")) self:onGSensorToggle() elseif action == "toggle_page_flipping" then if not self.ui.document.info.has_pages then diff --git a/frontend/device/generic/device.lua b/frontend/device/generic/device.lua index 4915e444c..39d521fa1 100644 --- a/frontend/device/generic/device.lua +++ b/frontend/device/generic/device.lua @@ -283,7 +283,7 @@ function Device:setDateTime(year, month, day, hour, min, sec) end function Device:saveSettings() end -- Device specific method for toggling the GSensor -function Device:toggleGSensor() end +function Device:toggleGSensor(toggle) end --[[ prepare for application shutdown diff --git a/frontend/device/input.lua b/frontend/device/input.lua index f0857f253..089293b0f 100755 --- a/frontend/device/input.lua +++ b/frontend/device/input.lua @@ -696,14 +696,29 @@ function Input:handleMiscEvNTX(ev) end -- Allow toggling it at runtime -function Input:toggleMiscEvNTX() - if self.isNTXAccelHooked then - self.handleMiscEv = function() end +function Input:toggleMiscEvNTX(toggle) + if toggle and toggle == true then + -- Honor Gyro events + if not self.isNTXAccelHooked then + self.handleMiscEv = self.handleMiscEvNTX + self.isNTXAccelHooked = true + end + elseif toggle and toggle == false then + -- Ignore Gyro events + if self.isNTXAccelHooked then + self.handleMiscEv = function() end + self.isNTXAccelHooked = false + end else - self.handleMiscEv = self.handleMiscEvNTX - end + -- Toggle it + if self.isNTXAccelHooked then + self.handleMiscEv = function() end + else + self.handleMiscEv = self.handleMiscEvNTX + end - self.isNTXAccelHooked = not self.isNTXAccelHooked + self.isNTXAccelHooked = not self.isNTXAccelHooked + end end -- helpers for touch event data management: diff --git a/frontend/device/kobo/device.lua b/frontend/device/kobo/device.lua index ea62b90b9..aa78c15e5 100644 --- a/frontend/device/kobo/device.lua +++ b/frontend/device/kobo/device.lua @@ -716,11 +716,11 @@ function Kobo:reboot() os.execute("reboot") end -function Kobo:toggleGSensor() +function Kobo:toggleGSensor(toggle) if self:canToggleGSensor() and self.input then -- Currently only supported on the Forma if self.misc_ntx_gsensor_protocol then - self.input:toggleMiscEvNTX() + self.input:toggleMiscEvNTX(toggle) end end end diff --git a/frontend/ui/elements/screen_toggle_gsensor.lua b/frontend/ui/elements/screen_toggle_gsensor.lua index b9f236086..92b978737 100644 --- a/frontend/ui/elements/screen_toggle_gsensor.lua +++ b/frontend/ui/elements/screen_toggle_gsensor.lua @@ -8,6 +8,6 @@ return { end, callback = function() G_reader_settings:flipNilOrFalse("input_ignore_gsensor") - Device:toggleGSensor() + Device:toggleGSensor(not G_reader_settings:isTrue("input_ignore_gsensor")) end, } diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 859323be1..f1b1612fd 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -95,7 +95,7 @@ function UIManager:init() self.event_handlers["Suspend"] = function() -- Ignore the accelerometer (if that's not already the case) while we're alseep if G_reader_settings:nilOrFalse("input_ignore_gsensor") then - Device:toggleGSensor() + Device:toggleGSensor(false) end self:_beforeSuspend() Device:onPowerEvent("Suspend") @@ -105,7 +105,7 @@ function UIManager:init() self:_afterResume() -- Stop ignoring the accelerometer (unless requested) when we wakeup if G_reader_settings:nilOrFalse("input_ignore_gsensor") then - Device:toggleGSensor() + Device:toggleGSensor(true) end end self.event_handlers["PowerPress"] = function()