diff --git a/tui/web_templates/app_index.html b/tui/web_templates/app_index.html index cbaf7a5..37e66f8 100644 --- a/tui/web_templates/app_index.html +++ b/tui/web_templates/app_index.html @@ -163,6 +163,38 @@ window.location.replace(url.toString()); } })(); + + // Touch-to-scroll: translate swipe gestures into wheel events for xterm + (function() { + var touchStartY = null; + var THRESHOLD = 5; + + document.addEventListener("touchstart", function(e) { + if (e.touches.length === 1) { + touchStartY = e.touches[0].clientY; + } + }, { passive: true }); + + document.addEventListener("touchmove", function(e) { + if (touchStartY === null || e.touches.length !== 1) return; + var dy = touchStartY - e.touches[0].clientY; + if (Math.abs(dy) < THRESHOLD) return; + touchStartY = e.touches[0].clientY; + + var target = document.querySelector(".xterm-screen") || document.querySelector("#terminal"); + if (!target) return; + target.dispatchEvent(new WheelEvent("wheel", { + deltaY: dy > 0 ? 3 : -3, + deltaMode: 0, + bubbles: true, + cancelable: true + })); + }, { passive: false }); + + document.addEventListener("touchend", function() { + touchStartY = null; + }, { passive: true }); + })();