2015-10-17 16:12:06 +00:00
|
|
|
-- touch probe utility
|
2015-10-17 16:30:29 +00:00
|
|
|
-- usage: ./luajit util/kobo_touch_probe.lua
|
2015-10-17 16:12:06 +00:00
|
|
|
|
|
|
|
require "defaults"
|
|
|
|
package.path = "common/?.lua;rocks/share/lua/5.1/?.lua;frontend/?.lua;" .. package.path
|
|
|
|
package.cpath = "common/?.so;common/?.dll;/usr/lib/lua/?.so;rocks/lib/lua/5.1/?.so;" .. package.cpath
|
|
|
|
|
|
|
|
local DocSettings = require("docsettings")
|
|
|
|
local _ = require("gettext")
|
|
|
|
|
|
|
|
-- read settings and check for language override
|
|
|
|
-- has to be done before requiring other files because
|
|
|
|
-- they might call gettext on load
|
|
|
|
G_reader_settings = DocSettings:open(".reader")
|
|
|
|
local lang_locale = G_reader_settings:readSetting("language")
|
|
|
|
if lang_locale then
|
|
|
|
_.changeLang(lang_locale)
|
|
|
|
end
|
|
|
|
local InputContainer = require("ui/widget/container/inputcontainer")
|
|
|
|
local CenterContainer = require("ui/widget/container/centercontainer")
|
|
|
|
local RightContainer = require("ui/widget/container/rightcontainer")
|
|
|
|
local OverlapGroup = require("ui/widget/overlapgroup")
|
|
|
|
local ImageWidget = require("ui/widget/imagewidget")
|
|
|
|
local TextWidget = require("ui/widget/textwidget")
|
|
|
|
local GestureRange = require("ui/gesturerange")
|
|
|
|
local UIManager = require("ui/uimanager")
|
|
|
|
local Blitbuffer = require("ffi/blitbuffer")
|
|
|
|
local Geom = require("ui/geometry")
|
|
|
|
local Device = require("device")
|
|
|
|
local Screen = require("device").screen
|
|
|
|
local Input = require("device").input
|
|
|
|
local Font = require("ui/font")
|
|
|
|
local DEBUG = require("dbg")
|
|
|
|
--DEBUG:turnOn()
|
|
|
|
|
|
|
|
local TouchProbe = InputContainer:new{
|
|
|
|
}
|
|
|
|
|
|
|
|
function TouchProbe:init()
|
|
|
|
self.ges_events = {
|
|
|
|
TapProbe = {
|
|
|
|
GestureRange:new{
|
|
|
|
ges = "tap",
|
|
|
|
range = Geom:new{
|
|
|
|
x = 0, y = 0,
|
|
|
|
w = Screen:getWidth(),
|
|
|
|
h = Screen:getHeight(),
|
|
|
|
},
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}
|
|
|
|
local image_widget = ImageWidget:new{
|
|
|
|
file = "resources/kobo-touch-probe.png",
|
|
|
|
}
|
|
|
|
self[1] = OverlapGroup:new{
|
|
|
|
dimen = Screen:getSize(),
|
|
|
|
CenterContainer:new{
|
|
|
|
dimen = Screen:getSize(),
|
|
|
|
TextWidget:new{
|
|
|
|
text = _("Tap the upper right corner"),
|
|
|
|
face = Font:getFace("cfont", 30),
|
|
|
|
},
|
|
|
|
},
|
|
|
|
RightContainer:new{
|
|
|
|
dimen = {
|
|
|
|
h = image_widget:getSize().h,
|
|
|
|
w = Screen:getSize().w,
|
|
|
|
},
|
|
|
|
image_widget,
|
|
|
|
},
|
|
|
|
}
|
|
|
|
end
|
|
|
|
|
|
|
|
function TouchProbe:onTapProbe(arg, ges)
|
|
|
|
--DEBUG("onTapProbe", ges)
|
|
|
|
local need_to_switch_xy = ges.pos.x < ges.pos.y
|
|
|
|
--DEBUG("Need to switch xy", need_to_switch_xy)
|
|
|
|
G_reader_settings:saveSetting("kobo_touch_switch_xy", need_to_switch_xy)
|
|
|
|
G_reader_settings:close()
|
|
|
|
if need_to_switch_xy then
|
|
|
|
Input:registerEventAdjustHook(Input.adjustTouchSwitchXY)
|
|
|
|
end
|
|
|
|
UIManager:quit()
|
|
|
|
end
|
|
|
|
|
|
|
|
-- if user has not set KOBO_TOUCH_MIRRORED yet
|
|
|
|
if KOBO_TOUCH_MIRRORED == nil then
|
|
|
|
local switch_xy = G_reader_settings:readSetting("kobo_touch_switch_xy")
|
|
|
|
-- and has no probe before
|
|
|
|
if switch_xy == nil then
|
|
|
|
UIManager:show(TouchProbe:new{})
|
|
|
|
UIManager:run()
|
|
|
|
-- otherwise, we will use probed result
|
2015-10-21 14:51:15 +00:00
|
|
|
elseif switch_xy then
|
|
|
|
Input:registerEventAdjustHook(Input.adjustTouchSwitchXY)
|
2015-10-17 16:12:06 +00:00
|
|
|
end
|
|
|
|
end
|