phone: third «Пульт» tab with on-glasses cursor; atomic click injection
- shared: VmDisplay (guest 640x480 coordinate space), CursorMove and CursorClick messages (CursorClick replaces the DOWN/UP pair — see below). - glasses: cursor state + Canvas overlay drawn in both eyes, clickCursor injects one atomic tap at the cursor, sendKey for Back/Play/Pause. - phone: RemoteScreen — touchpad (relative drag moves the cursor, tap clicks), «Назад»/«Плей»/«Пауза» buttons, «Клавиатура» stub (TODO). - The old CursorButton(DOWN)/CursorButton(UP) pair was removed: the two messages were injected concurrently and could arrive out of order, breaking the guest's touch stream so clicks worked only once. - tests: CursorMove/CursorClick roundtrips.
This commit is contained in:
@@ -32,6 +32,8 @@ import pw.binom.rayneovm.shared.VmProtocol
|
||||
import pw.binom.rayneovm.shared.GetAppList
|
||||
import pw.binom.rayneovm.shared.AppEntry
|
||||
import pw.binom.rayneovm.shared.AppListResponse
|
||||
import pw.binom.rayneovm.shared.CursorClick
|
||||
import pw.binom.rayneovm.shared.CursorMove
|
||||
|
||||
/**
|
||||
* Foreground service на стороне очков.
|
||||
@@ -119,7 +121,18 @@ class VmService : LifecycleService() {
|
||||
controller.launchGuest(msg.packageName)
|
||||
}
|
||||
is TouchEvent -> Log.d(TAG, "Touch: ${msg.actions.size}")
|
||||
is VmKeyEvent -> Log.d(TAG, "Key: ${msg.keyCode}")
|
||||
is CursorMove -> {
|
||||
Log.d(TAG, "CursorMove: ${msg.x},${msg.y}")
|
||||
controller.moveCursor(msg.x, msg.y)
|
||||
}
|
||||
is CursorClick -> {
|
||||
Log.d(TAG, "CursorClick")
|
||||
controller.clickCursor()
|
||||
}
|
||||
is VmKeyEvent -> {
|
||||
Log.d(TAG, "Key: ${msg.keyCode} action=${msg.action}")
|
||||
controller.sendKey(msg.keyCode, msg.action)
|
||||
}
|
||||
is SetAudioMode -> Log.d(TAG, "SetAudioMode: ${msg.mode}")
|
||||
is Shutdown -> {
|
||||
Log.i(TAG, "Shutdown")
|
||||
|
||||
Reference in New Issue
Block a user