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.toast, sys.msleep, proc_queue_clear, thread.register_event, thread.unregister_event를 사용합니다.