跳至主要內容

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 事件資訊都會傳遞到此回調。由於嚴重影響腳本運行效率,不再需要時請及時反註冊
    • HID 事件中所有觸控座標均以直向 HOME 鍵在下為初始座標系。若需轉換,可使用 screen.rotate_xy

範例

-- 清空消息隊列
proc_queue_clear("xxtouch.hid_event")
--
-- 建立監聽回調
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 秒
--
-- 反註冊回調函數,如果不反註冊監聽,那麼腳本不會在此結束
thread.unregister_event("xxtouch.hid_event", eid)

:上述代碼中使用了非本章函式 sys.toastsys.msleepproc_queue_clearthread.register_eventthread.unregister_event