-
-
Notifications
You must be signed in to change notification settings - Fork 283
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
active stylus position defects #302
Comments
Thanks for the report! Do these defects also occur when you disable the video stream? Specifically, how does the debug overlay from Android compare to the blue lines from Weylus? You could also inspect how the pointer events that arrive at your computer look like using: $ WEYLUS_LOG_LEVEL=TRACE ./weylus 2>&1 | rg "PointerEvent.+x: (\\d.\\d+), y: (\\d.\\d+)" -or '$1 $2' > data &
# run once the first pointer events have been recorded
$ gnuplot -p -e "while (1) { pause 0.5; plot 'data' using 1:2 with linespoints lc rgb 'black' ps 1 title '' }" Also, make sure to use builds from latest master (or build Weylus yourself): https://github.com/H-M-H/Weylus/actions/runs/11405365806 Finally, please attach the log output of
I suspect a native app could work better as browsers tend to be quirky, especially around pens. Actually, I am looking into writing such an app, but no promises :). |
Which programming language are you planning to use? |
I am considering flutter + native code (Kotlin) where necessary. But I am not sure if I can justify working on this without getting paid. Therefore, said app probably won't be open source for now. |
Below is a stroke. I'll make more stroke to have more data. I plotted the Weylus log with my program. 2024-11-05T22:52:32.533177Z DEBUG weylus::config: Failed to read configuration file: No such file or directory (os error 2)
2024-11-05T22:52:35.592282Z DEBUG weylus::web: Client connected. address=127.0.0.1:53424
2024-11-05T22:52:35.594578Z DEBUG weylus::web: Got request: Request { method: GET, uri: /?access_code=0f39b781, version: HTTP/1.1, headers: {"host": "192.168.59.1:1701", "connection": "keep-alive", "cache-control": "max-age=0", "sec-ch-ua": "\"Chromium\";v=\"130\", \"Google Chrome\";v=\"130\", \"Not?A_Brand\";v=\"99\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Android\"", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "sec-fetch-site": "same-origin", "sec-fetch-mode": "navigate", "sec-fetch-user": "?1", "sec-fetch-dest": "document", "referer": "https://192.168.59.1:1701/?access_code=09bdfe22", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "uk-UA,uk;q=0.9,en-US;q=0.8,en;q=0.7,ru-UA;q=0.6,ru;q=0.5,ja-JP;q=0.4,ja;q=0.3,de-DE;q=0.2,de;q=0.1"}, body: Body(Empty) }
2024-11-05T22:52:35.655016Z DEBUG weylus::web: Got request: Request { method: GET, uri: /style.css, version: HTTP/1.1, headers: {"host": "192.168.59.1:1701", "connection": "keep-alive", "sec-ch-ua-platform": "\"Android\"", "user-agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "sec-ch-ua": "\"Chromium\";v=\"130\", \"Google Chrome\";v=\"130\", \"Not?A_Brand\";v=\"99\"", "sec-ch-ua-mobile": "?0", "accept": "text/css,*/*;q=0.1", "sec-fetch-site": "same-origin", "sec-fetch-mode": "no-cors", "sec-fetch-dest": "style", "referer": "https://192.168.59.1:1701/?access_code=0f39b781", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "uk-UA,uk;q=0.9,en-US;q=0.8,en;q=0.7,ru-UA;q=0.6,ru;q=0.5,ja-JP;q=0.4,ja;q=0.3,de-DE;q=0.2,de;q=0.1"}, body: Body(Empty) }
2024-11-05T22:52:52.353011Z DEBUG weylus::web: Got request: Request { method: GET, uri: /?access_code=dfc35c78, version: HTTP/1.1, headers: {"host": "192.168.59.1:1701", "connection": "keep-alive", "sec-ch-ua": "\"Chromium\";v=\"130\", \"Google Chrome\";v=\"130\", \"Not?A_Brand\";v=\"99\"", "sec-ch-ua-mobile": "?0", "sec-ch-ua-platform": "\"Android\"", "upgrade-insecure-requests": "1", "user-agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7", "sec-fetch-site": "same-origin", "sec-fetch-mode": "navigate", "sec-fetch-user": "?1", "sec-fetch-dest": "document", "referer": "https://192.168.59.1:1701/?access_code=0f39b781", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "uk-UA,uk;q=0.9,en-US;q=0.8,en;q=0.7,ru-UA;q=0.6,ru;q=0.5,ja-JP;q=0.4,ja;q=0.3,de-DE;q=0.2,de;q=0.1"}, body: Body(Empty) }
2024-11-05T22:52:52.353242Z DEBUG weylus::web: Web-Client authenticated. address=127.0.0.1:53424
2024-11-05T22:52:52.402559Z DEBUG weylus::web: Got request: Request { method: GET, uri: /style.css, version: HTTP/1.1, headers: {"host": "192.168.59.1:1701", "connection": "keep-alive", "sec-ch-ua-platform": "\"Android\"", "user-agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "sec-ch-ua": "\"Chromium\";v=\"130\", \"Google Chrome\";v=\"130\", \"Not?A_Brand\";v=\"99\"", "sec-ch-ua-mobile": "?0", "accept": "text/css,*/*;q=0.1", "sec-fetch-site": "same-origin", "sec-fetch-mode": "no-cors", "sec-fetch-dest": "style", "referer": "https://192.168.59.1:1701/?access_code=dfc35c78", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "uk-UA,uk;q=0.9,en-US;q=0.8,en;q=0.7,ru-UA;q=0.6,ru;q=0.5,ja-JP;q=0.4,ja;q=0.3,de-DE;q=0.2,de;q=0.1"}, body: Body(Empty) }
2024-11-05T22:52:52.415464Z DEBUG weylus::web: Got request: Request { method: GET, uri: /lib.js, version: HTTP/1.1, headers: {"host": "192.168.59.1:1701", "connection": "keep-alive", "sec-ch-ua-platform": "\"Android\"", "user-agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "sec-ch-ua": "\"Chromium\";v=\"130\", \"Google Chrome\";v=\"130\", \"Not?A_Brand\";v=\"99\"", "sec-ch-ua-mobile": "?0", "accept": "*/*", "sec-fetch-site": "same-origin", "sec-fetch-mode": "no-cors", "sec-fetch-dest": "script", "referer": "https://192.168.59.1:1701/?access_code=dfc35c78", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "uk-UA,uk;q=0.9,en-US;q=0.8,en;q=0.7,ru-UA;q=0.6,ru;q=0.5,ja-JP;q=0.4,ja;q=0.3,de-DE;q=0.2,de;q=0.1"}, body: Body(Empty) }
2024-11-05T22:52:52.617739Z DEBUG weylus::web: Client connected. address=127.0.0.1:40030
2024-11-05T22:52:52.618430Z DEBUG weylus::web: Got request: Request { method: GET, uri: /ws?access_code=dfc35c78, version: HTTP/1.1, headers: {"host": "192.168.59.1:1701", "connection": "Upgrade", "pragma": "no-cache", "cache-control": "no-cache", "user-agent": "Mozilla/5.0 (Linux; Android 10; K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/130.0.0.0 Safari/537.36", "upgrade": "websocket", "origin": "https://192.168.59.1:1701", "sec-websocket-version": "13", "accept-encoding": "gzip, deflate, br, zstd", "accept-language": "uk-UA,uk;q=0.9,en-US;q=0.8,en;q=0.7,ru-UA;q=0.6,ru;q=0.5,ja-JP;q=0.4,ja;q=0.3,de-DE;q=0.2,de;q=0.1", "sec-websocket-key": "HU1Ru+Q/aE4yTjnp/dvX5A==", "sec-websocket-extensions": "permessage-deflate; client_max_window_bits"}, body: Body(Empty) }
2024-11-05T22:52:52.618609Z DEBUG weylus::web: Web-Client authenticated. address=127.0.0.1:40030
2024-11-05T22:52:52.625770Z TRACE weylus::websocket: Received message: GetCapturableList
2024-11-05T22:52:52.629239Z DEBUG weylus::capturable::pipewire: Response from DBus: response: OrgFreedesktopPortalRequestResponse { response: 0, results: {"session_handle": Variant("/org/freedesktop/portal/desktop/session/1_18/weylus14315882587227825134")} }, message: Message { Type: Signal, Path: "/org/freedesktop/portal/desktop/request/1_18/weylus2308099861250551618", Interface: "org.freedesktop.portal.Request", Member: "Response", Sender: ":1.10", Destination: ":1.18", Serial: 93, Args: [0, {"session_handle": Variant("/org/freedesktop/portal/desktop/session/1_18/weylus14315882587227825134")}] }
2024-11-05T22:52:52.629419Z DEBUG weylus::capturable::pipewire: on_create_session_response
2024-11-05T22:52:52.629469Z DEBUG weylus::capturable::pipewire: select_sources
2024-11-05T22:52:52.629849Z DEBUG weylus::capturable::pipewire: Available source types: 1.
2024-11-05T22:52:54.799582Z DEBUG weylus::capturable::pipewire: Response from DBus: response: OrgFreedesktopPortalRequestResponse { response: 1, results: {} }, message: Message { Type: Signal, Path: "/org/freedesktop/portal/desktop/request/1_18/weylus17050432315288973656", Interface: "org.freedesktop.portal.Request", Member: "Response", Sender: ":1.10", Destination: ":1.18", Serial: 101, Args: [1, {}] }
2024-11-05T22:52:54.799746Z WARN weylus::capturable::pipewire: DBus response: User cancelled interaction.
2024-11-05T22:52:54.799829Z WARN weylus::capturable: Failed to get list of capturables via dbus/pipewire: Failed to obtain screen capture.
2024-11-05T22:52:54.801423Z TRACE weylus::websocket: Sent message: CapturableList(["Desktop", "Monitor: DP-2", "[Без имени]-2.0 (Цвета RGB 8 бит, нелинейное целочисленное, GIMP built-in sRGB, 1 сло", "Test Source 200x200", "Test Source 800x600", "Test Source 1080x720", "Test Source 1920x1080", "Test Source 3840x2160", "Test Source 15360x2160"])
2024-11-05T22:52:54.801609Z TRACE weylus::websocket: Received message: Config(ClientConfiguration { uinput_support: true, capturable_id: None, capture_cursor: false, max_width: 3456, max_height: 1609, client_name: None, frame_rate: 2.1002247498779743 })
2024-11-05T22:52:54.801659Z INFO weylus::websocket: No capturable is selected
2024-11-05T22:52:54.801698Z TRACE weylus::websocket: Received message: Config(ClientConfiguration { uinput_support: true, capturable_id: None, capture_cursor: false, max_width: 3456, max_height: 1609, client_name: None, frame_rate: 2.1002247498779743 })
2024-11-05T22:52:54.801732Z INFO weylus::websocket: No capturable is selected
2024-11-05T22:53:03.665530Z TRACE weylus::websocket: Received message: Config(ClientConfiguration { uinput_support: true, capturable_id: Some(2), capture_cursor: false, max_width: 3456, max_height: 1609, client_name: None, frame_rate: 2.1002247498779743 })
2024-11-05T22:53:04.165996Z INFO weylus::log: using cpu capabilities: MMX2 SSE2Fast SSSE3 SSE4.2 AVX FMA3 BMI2 AVX2
2024-11-05T22:53:04.194982Z INFO weylus::log: profile Constrained Baseline, level 6.1, 4:2:0, 8-bit
2024-11-05T22:53:04.195733Z INFO weylus::log: 264 - core 164 r3108 31e19f9 - H.264/MPEG-4 AVC codec - Copyleft 2003-2023 - http://www.videolan.org/x264.html - options: cabac=0 ref=1 deblock=0:0:0 analyse=0:0 me=dia subme=0 psy=1 psy_rd=1.00:0.00 mixed_ref=0 me_range=16 chroma_me=1 trellis=0 8x8dct=0 cqm=0 deadzone=21,11 fast_pskip=1 chroma_qp_offset=0 threads=4 lookahead_threads=4 sliced_threads=1 slices=4 nr=0 decimate=1 interlaced=0 bluray_compat=0 constrained_intra=0 bframes=0 weightp=0 keyint=12 keyint_min=1 scenecut=0 intra_refresh=0 rc=crf mbtree=0 crf=23.0 qcomp=0.60 qpmin=0 qpmax=69 qpstep=4 ip_ratio=1.40 aq=0
2024-11-05T22:53:04.195867Z DEBUG weylus::log: Empty MOOV enabled; disabling automatic bitstream filtering
2024-11-05T22:53:04.197448Z INFO weylus::log: Video: 1676x1014@libx264 pix_fmt: yuv420p
2024-11-05T22:53:04.213173Z TRACE weylus::log: frame= 0 QP=20.00 NAL=3 Slice:I Poc:0 I:6720 P:0 SKIP:0 size=62721 bytes
2024-11-05T22:53:04.642735Z TRACE weylus::log: frame= 1 QP=25.00 NAL=2 Slice:P Poc:2 I:0 P:0 SKIP:6720 size=49 bytes
2024-11-05T22:53:05.110714Z TRACE weylus::log: frame= 2 QP=23.00 NAL=2 Slice:P Poc:4 I:0 P:2 SKIP:6718 size=55 bytes
2024-11-05T22:53:05.586983Z TRACE weylus::log: frame= 3 QP=21.00 NAL=2 Slice:P Poc:6 I:0 P:33 SKIP:6687 size=177 bytes
2024-11-05T22:53:06.062961Z TRACE weylus::log: frame= 4 QP=19.00 NAL=2 Slice:P Poc:8 I:0 P:98 SKIP:6622 size=400 bytes
2024-11-05T22:53:06.539479Z TRACE weylus::log: frame= 5 QP=18.00 NAL=2 Slice:P Poc:10 I:1 P:68 SKIP:6651 size=407 bytes
2024-11-05T22:53:07.016339Z TRACE weylus::log: frame= 6 QP=18.00 NAL=2 Slice:P Poc:12 I:1 P:0 SKIP:6719 size=58 bytes
2024-11-05T22:53:07.491843Z TRACE weylus::log: frame= 7 QP=18.00 NAL=2 Slice:P Poc:14 I:1 P:0 SKIP:6719 size=58 bytes
2024-11-05T22:53:07.969876Z TRACE weylus::log: frame= 8 QP=17.00 NAL=2 Slice:P Poc:16 I:259 P:663 SKIP:5798 size=5958 bytes
2024-11-05T22:53:08.443966Z TRACE weylus::log: frame= 9 QP=17.00 NAL=2 Slice:P Poc:18 I:0 P:1 SKIP:6719 size=54 bytes
2024-11-05T22:53:08.449416Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: OVER, pointer_id: 4, timestamp: 16095000, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.3292102163080258, y: 0.6547231386000175, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.450310Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: ENTER, pointer_id: 4, timestamp: 16095000, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.3292102163080258, y: 0.6547231386000175, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.450932Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16095000, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.3292102163080258, y: 0.6547231386000175, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.532450Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16188600, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.33123942582214233, y: 0.6603114349383903, movement_x: 2, movement_y: 3, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.667819Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16325500, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.3332685940308766, y: 0.6793115878703138, movement_x: 1, movement_y: 8, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.752214Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16408400, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.33259221839642594, y: 0.6781939559119112, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.752587Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16422700, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.3298866332478587, y: 0.6714879593419558, movement_x: -2, movement_y: -3, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.754692Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: DOWN, pointer_id: 4, timestamp: 16426300, is_primary: true, pointer_type: Pen, button: Button(PRIMARY), buttons: Button(PRIMARY), x: 0.32109350216770643, y: 0.6435465459232719, movement_x: 0, movement_y: 0, pressure: 0.5588666200637817, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.774489Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16430000, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.32109350216770643, y: 0.6312523895613038, movement_x: 0, movement_y: -5, pressure: 0.5583781003952026, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.803430Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16444300, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.331915801456593, y: 0.5597223739404003, movement_x: 8, movement_y: -32, pressure: 0.5637518167495728, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.805847Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16465700, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.34882568798244684, y: 0.5060748110198374, movement_x: 13, movement_y: -24, pressure: 0.5710796117782593, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.837425Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16480100, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.3785870833113038, y: 0.4434860558856943, movement_x: 22, movement_y: -28, pressure: 0.5808500051498413, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.852576Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16495000, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.4272875333747488, y: 0.3708384083063882, movement_x: 36, movement_y: -33, pressure: 0.6243282556533813, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.869566Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16512500, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.47869352728137887, y: 0.32613217414576595, movement_x: 38, movement_y: -20, pressure: 0.6697606444358826, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.886409Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16530800, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.5158952611161045, y: 0.318308545617408, movement_x: 27, movement_y: -3, pressure: 0.7132388949394226, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.902594Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16546300, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.5530969949508301, y: 0.35295588733286726, movement_x: 28, movement_y: 15, pressure: 0.7278944849967957, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.919061Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16570000, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.5645957524849318, y: 0.3998974536834746, movement_x: 8, movement_y: 21, pressure: 0.8080117106437683, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.922188Z TRACE weylus::log: frame= 10 QP=21.00 NAL=2 Slice:P Poc:20 I:34 P:74 SKIP:6612 size=7553 bytes
2024-11-05T22:53:08.937473Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16584400, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.563242918605266, y: 0.45466264856243993, movement_x: -1, movement_y: 25, pressure: 0.8177821040153503, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.955859Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16595400, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.5429510712963942, y: 0.5261926641833435, movement_x: -15, movement_y: 32, pressure: 0.8275524973869324, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.972647Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16613000, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.5010145841043672, y: 0.5898990512758892, movement_x: -31, movement_y: 28, pressure: 0.7933561205863953, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.976319Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 4, timestamp: 16631700, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(PRIMARY), x: 0.45163771710108913, y: 0.6312523895613038, movement_x: -36, movement_y: 19, pressure: 0.0004885197849944234, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0, height: 0.0 })
2024-11-05T22:53:08.978137Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: UP, pointer_id: 4, timestamp: 16649500, is_primary: true, pointer_type: Pen, button: Button(PRIMARY), buttons: Button(0x0), x: 0.45163771710108913, y: 0.6312523895613038, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.978861Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: OUT, pointer_id: 4, timestamp: 16649500, is_primary: true, pointer_type: Pen, button: Button(PRIMARY), buttons: Button(0x0), x: 0.45163771710108913, y: 0.6312523895613038, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:08.979550Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: LEAVE, pointer_id: 4, timestamp: 16649500, is_primary: true, pointer_type: Pen, button: Button(PRIMARY), buttons: Button(0x0), x: 0.45163771710108913, y: 0.6312523895613038, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:09.006894Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: OVER, pointer_id: 5, timestamp: 16660500, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.41984715356349794, y: 0.6312523895613038, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:09.007371Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: ENTER, pointer_id: 5, timestamp: 16660500, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.41984715356349794, y: 0.6312523895613038, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:09.008093Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 5, timestamp: 16660500, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.41984715356349794, y: 0.6312523895613038, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:09.010285Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: OVER, pointer_id: 1, timestamp: 16689500, is_primary: true, pointer_type: Mouse, button: Button(0x0), buttons: Button(0x0), x: 0.41984715356349794, y: 0.6312523895613038, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:09.011124Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: ENTER, pointer_id: 1, timestamp: 16689500, is_primary: true, pointer_type: Mouse, button: Button(0x0), buttons: Button(0x0), x: 0.41984715356349794, y: 0.6312523895613038, movement_x: 0, movement_y: 0, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:09.021051Z TRACE weylus::websocket: Received message: PointerEvent(PointerEvent { event_type: MOVE, pointer_id: 5, timestamp: 16664000, is_primary: true, pointer_type: Pen, button: Button(0x0), buttons: Button(0x0), x: 0.4151124002061965, y: 0.6301346893297213, movement_x: -3, movement_y: -1, pressure: 0.0, tilt_x: 0, tilt_y: 0, twist: 0, width: 0.0011580490422968997, height: 0.0011580490422968997 })
2024-11-05T22:53:09.401090Z TRACE weylus::log: frame= 11 QP=22.00 NAL=2 Slice:P Poc:22 I:27 P:34 SKIP:6659 size=3070 bytes
2024-11-05T22:53:09.873463Z TRACE weylus::log: frame= 12 QP=17.00 NAL=3 Slice:I Poc:0 I:6720 P:0 SKIP:0 size=82724 bytes
2024-11-05T22:53:10.355268Z TRACE weylus::log: frame= 13 QP=25.00 NAL=2 Slice:P Poc:2 I:0 P:0 SKIP:6720 size=49 bytes
2024-11-05T22:53:10.826246Z TRACE weylus::log: frame= 14 QP=23.00 NAL=2 Slice:P Poc:4 I:0 P:0 SKIP:6720 size=46 bytes
2024-11-05T22:53:11.301168Z TRACE weylus::log: frame= 15 QP=21.00 NAL=2 Slice:P Poc:6 I:0 P:0 SKIP:6720 size=49 bytes
2024-11-05T22:53:11.778534Z TRACE weylus::log: frame= 16 QP=20.00 NAL=2 Slice:P Poc:8 I:0 P:1 SKIP:6719 size=53 bytes
2024-11-05T22:53:12.252898Z TRACE weylus::log: frame= 17 QP=19.00 NAL=2 Slice:P Poc:10 I:0 P:22 SKIP:6698 size=130 bytes
2024-11-05T22:53:12.729576Z TRACE weylus::log: frame= 18 QP=18.00 NAL=2 Slice:P Poc:12 I:0 P:9 SKIP:6711 size=85 bytes
2024-11-05T22:53:13.205234Z TRACE weylus::log: frame= 19 QP=18.00 NAL=2 Slice:P Poc:14 I:0 P:0 SKIP:6720 size=50 bytes
2024-11-05T22:53:13.681285Z TRACE weylus::log: frame= 20 QP=17.00 NAL=2 Slice:P Poc:16 I:0 P:148 SKIP:6572 size=579 bytes
2024-11-05T22:53:14.162748Z TRACE weylus::log: frame= 21 QP=18.00 NAL=2 Slice:P Poc:18 I:5 P:12 SKIP:6703 size=644 bytes
2024-11-05T22:53:14.634913Z TRACE weylus::log: frame= 22 QP=18.00 NAL=2 Slice:P Poc:20 I:65 P:14 SKIP:6641 size=1405 bytes
2024-11-05T22:53:15.113424Z TRACE weylus::log: frame= 23 QP=18.00 NAL=2 Slice:P Poc:22 I:0 P:0 SKIP:6720 size=50 bytes
2024-11-05T22:53:15.591552Z TRACE weylus::log: frame= 24 QP=17.00 NAL=3 Slice:I Poc:0 I:6720 P:0 SKIP:0 size=76996 bytes
2024-11-05T22:53:16.068054Z TRACE weylus::log: frame= 25 QP=25.00 NAL=2 Slice:P Poc:2 I:0 P:0 SKIP:6720 size=49 bytes
2024-11-05T22:53:16.539701Z TRACE weylus::log: frame= 26 QP=23.00 NAL=2 Slice:P Poc:4 I:0 P:0 SKIP:6720 size=46 bytes
2024-11-05T22:53:17.016001Z TRACE weylus::log: frame= 27 QP=21.00 NAL=2 Slice:P Poc:6 I:0 P:1 SKIP:6719 size=54 bytes
^C I slightly modified the capturables list feature, added printing of additional log messages, and compiled Weylus in the debug mode. |
What would an android app need to do? I just started using Weylus and I'm absolutely loving it. If possible I would like to contribute. |
Does this have the potential for lower latency? i.e. does Browser overhead naturally result in higher latency that a dedicated app would reduce? |
First it would need to connect to Weylus via websockets, request a window or a screen to record and send input events to, see https://github.com/H-M-H/Weylus/blob/master/src/protocol.rs for the protocol. Then Weylus will start sending a video stream.
There are several things that introduce latency. Most importantly:
For the latter two points there is little customization that can be done with browsers and leaves not much room for improvement. It is possible that a dedicated app could result in lower latency. If there are more questions about an app, please see #136 or open a discussion here: https://github.com/H-M-H/Weylus/discussions. |
More strokes.
|
|
|
When an active HUAWEI M-Pen lite stylus is used on a HUAWEI MediaPad M5 lite tablet in the Chrome webbrowser, stylus positions are transmitted with defects shown in the screenshots below. The blue line with the red dots was produced by Android when the option Settings, System, Developer options, Input, Pointer location is enabled. The black line is what was drawn in GIMP on the desktop where the Weylus executable was running.
There are no such defects when drawing with a capacitive stylus as shown in the screenshots below.
There are no such defects when drawing in the Squid application on the tablet (without Weylus).
Would such defects occur with a native Android application communicating with the Weylus executable?
The text was updated successfully, but these errors were encountered: