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 を使用しています