Сообщения о событиях HID
Объявление
thread.register_event("xxtouch.hid_event", function(val)
local event = json.decode(val)
if event.event_type=="touch" then
if event.event_name=="touch.on" then
sys.toast("触摸接触位置: ("..event.x..", "..event.y..")\n"..event.time)
elseif event.event_name=="touch.move" then
sys.toast("触摸移动到位置: ("..event.x..", "..event.y..")\n"..event.time)
elseif event.event_name=="touch.off" then
sys.toast("触摸从位置: ("..event.x..", "..event.y..") 离开屏幕\n"..event.time)
end
else
if event.event_name=="key.down" then
sys.toast("按下按键: "..event.key_name.."\n"..event.time)
elseif event.event_name=="key.up" then
sys.toast("抬起按键: "..event.key_name.."\n"..event.time)
end
end
end)
Состояние
- val
- После регистрации обработчика сведения обо всех событиях HID передаются в этот callback. Поскольку это существенно влияет на производительность скрипта, своевременно отменяйте регистрацию, когда обработчик больше не нужен.
- Все координаты касаний в событиях HID используют книжную ориентацию с кнопкой HOME внизу как исходную систему координат. Для преобразования используйте screen.rotate_xy.
Пример
-- Очищает очередь сообщений.
proc_queue_clear("xxtouch.hid_event")
--
-- Регистрирует callback-наблюдатель.
local eid = thread.register_event("xxtouch.hid_event", function(val)
local event = json.decode(val)
if event.event_type=="touch" then
if event.event_name=="touch.on" then
sys.toast("触摸接触位置: ("..event.x..", "..event.y..")\n"..event.time)
elseif event.event_name=="touch.move" then
sys.toast("触摸移动到位置: ("..event.x..", "..event.y..")\n"..event.time)
elseif event.event_name=="touch.off" then
sys.toast("触摸从位置: ("..event.x..", "..event.y..") 离开屏幕\n"..event.time)
end
else
if event.event_name=="key.down" then
sys.toast("按下按键: "..event.key_name.."\n"..event.time)
elseif event.event_name=="key.up" then
sys.toast("抬起按键: "..event.key_name.."\n"..event.time)
end
end
end)
--
touch.on(100, 100):off()
sys.msleep(1000)
key.press('homebutton')
--
sys.msleep(20000) -- Ждёт 20 секунд.
--
-- Отменяет регистрацию callback; без этого скрипт не завершится здесь.
thread.unregister_event("xxtouch.hid_event", eid)
Примечание: в приведённом коде используются функции из других глав: sys.toast, sys.msleep, proc_queue_clear, thread.register_event и thread.unregister_event.