Changed packet sequence numbers to only apply to mouse movements, and they now reset with every tap.

Switched the JS code to calling fetch() directly.
Minor style changes.
This commit is contained in:
moosecrab 2020-06-18 12:52:20 -07:00
parent 3eb86784b6
commit 5f0d133580
3 changed files with 44 additions and 49 deletions

View File

@ -5,6 +5,7 @@ Public Class main
Dim weblistener As HttpListener Dim weblistener As HttpListener
Dim lastpos As New Point(0, 0) Dim lastpos As New Point(0, 0)
Dim startpos As New Point(0, 0) Dim startpos As New Point(0, 0)
Dim lastmouseseq As Integer = 0
Dim nexttoggleclick As UInteger = MouseEventFlags.MOUSEEVENTF_LEFTDOWN Or MouseEventFlags.MOUSEEVENTF_RIGHTDOWN Or MouseEventFlags.MOUSEEVENTF_MIDDLEDOWN Or MouseEventFlags.MOUSEEVENTF_XDOWN Dim nexttoggleclick As UInteger = MouseEventFlags.MOUSEEVENTF_LEFTDOWN Or MouseEventFlags.MOUSEEVENTF_RIGHTDOWN Or MouseEventFlags.MOUSEEVENTF_MIDDLEDOWN Or MouseEventFlags.MOUSEEVENTF_XDOWN
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles StartButton.Click Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles StartButton.Click
@ -39,8 +40,6 @@ Public Class main
Dim context As HttpListenerContext = Nothing Dim context As HttpListenerContext = Nothing
Dim resp As HttpListenerResponse Dim resp As HttpListenerResponse
Dim respstr As String = String.Empty Dim respstr As String = String.Empty
Dim lastpacket As Long = -1
Dim lastpack As Long
Dim leftclicking As Boolean = False Dim leftclicking As Boolean = False
While weblistener.IsListening While weblistener.IsListening
Try Try
@ -57,13 +56,8 @@ Public Class main
If path = "/" Then If path = "/" Then
respstr = FileIO.FileSystem.ReadAllText("res/page.html") respstr = FileIO.FileSystem.ReadAllText("res/page.html")
lastpacket = 0
Else Else
Dim pack As Long = context.Request.QueryString("seq")
If pack > lastpack Then
respstr = handleinput(context.Request) respstr = handleinput(context.Request)
lastpack = pack
End If
End If End If
If String.IsNullOrEmpty(respstr) Then If String.IsNullOrEmpty(respstr) Then
@ -117,11 +111,16 @@ Public Class main
lastpos.Y = req.QueryString("y") lastpos.Y = req.QueryString("y")
startpos.X = req.QueryString("x") startpos.X = req.QueryString("x")
startpos.Y = req.QueryString("y") startpos.Y = req.QueryString("y")
lastmouseseq = 0
Case "move" 'trackpad touch move Case "move" 'trackpad touch move
Dim seq As Integer = req.QueryString("seq")
If seq > lastmouseseq Then
mouse_event(MouseEventFlags.MOUSEEVENTF_MOVE, req.QueryString("x") - lastpos.X, req.QueryString("y") - lastpos.Y, 0, 0) mouse_event(MouseEventFlags.MOUSEEVENTF_MOVE, req.QueryString("x") - lastpos.X, req.QueryString("y") - lastpos.Y, 0, 0)
lastpos.X = req.QueryString("x") lastpos.X = req.QueryString("x")
lastpos.Y = req.QueryString("y") lastpos.Y = req.QueryString("y")
lastmouseseq = seq
End If
Case "end" Case "end"
Dim tol As Integer = TapInput.Value Dim tol As Integer = TapInput.Value

View File

@ -36,7 +36,6 @@ button:active {
#canvas { #canvas {
width: 100%; width: 100%;
background-color: #111; background-color: #111;
outline: gray solid 1px;
} }
div{ div{
display: flex; display: flex;
@ -44,7 +43,7 @@ div{
input{ input{
background-color: #111; background-color: #111;
color: gray; color: gray;
outline: gray solid 1px; border: 1px solid gray;
border: none; border: none;
} }
@ -53,40 +52,40 @@ input{
<body> <body>
<div style="flex:2"> <div style="flex:2">
<button style="flex:1">menu</button> <button style="flex:1">menu</button>
<button onclick="sendmessage('key', 'code=46')" style="flex:1">del</button> <button onclick="fetch('/key?code=46')" style="flex:1">del</button>
<button onclick="sendmessage('key', 'code=8')" style="flex:1">bksp</button> <button onclick="fetch('/key?code=8')" style="flex:1">bksp</button>
<button onclick="sendmessage('key', 'code=13')" style="flex:1">enter</button> <button onclick="fetch('/key?code=13')" style="flex:1">enter</button>
<input id="typebox" placeholder="type here" size=8 style="flex:2"> <input id="typebox" placeholder="type here" size=8 style="flex:2">
</div> </div>
<div style="flex:1"> <div style="flex:1">
<button onclick="sendmessage('sendkeys', 'keys=j')" style="flex:1">j</button> <button onclick="fetch('/sendkeys?keys=j')" style="flex:1">j</button>
<button onclick="sendmessage('sendkeys', 'keys={LEFT}')" style="flex:1">&larr;</button> <button onclick="fetch('/sendkeys?keys={LEFT}')" style="flex:1">&larr;</button>
<button onclick="sendmessage('sendkeys', 'keys=k')" style="flex:1">k</button> <button onclick="fetch('/sendkeys?keys=k')" style="flex:1">k</button>
<button onclick="sendmessage('sendkeys', 'keys={RIGHT}')" style="flex:1">&rarr;</button> <button onclick="fetch('/sendkeys?keys={RIGHT}')" style="flex:1">&rarr;</button>
<button onclick="sendmessage('sendkeys', 'keys=l')" style="flex:1">l</button> <button onclick="fetch('/sendkeys?keys=l')" style="flex:1">l</button>
</div> </div>
<div style="flex:12"> <div style="flex:12">
<span id="canvas"></span> <span id="canvas"></span>
</div> </div>
<div style="flex:2"> <div style="flex:2">
<button onclick="sendmessage('toggle', 'button=left')" style="flex:2">left (toggle)</button> <button onclick="fetch('/toggle?button=left')" style="flex:2">left (toggle)</button>
<button onclick="sendmessage('wheel', 'axis=vert&delta=120')" style="flex:1">up</button> <button onclick="fetch('/wheel?axis=vert&delta=120')" style="flex:1">up</button>
<button onclick="sendmessage('click', 'button=middle')" style="flex:1">mid</button> <button onclick="fetch('/click?button=middle')" style="flex:1">mid</button>
<button onclick="sendmessage('wheel', 'axis=vert&delta=-120')" style="flex:1">dn</button> <button onclick="fetch('/wheel?axis=vert&delta=-120')" style="flex:1">dn</button>
<button onclick="sendmessage('click', 'button=right')" style="flex:2">right</button> <button onclick="fetch('/click?button=right')" style="flex:2">right</button>
</div> </div>
<div style="flex:2"> <div style="flex:2">
<button onclick="sendmessage('key', 'code=174')" style="flex:2">vol -</button> <button onclick="fetch('/key?code=174')" style="flex:2">vol -</button>
<button onclick="sendmessage('key', 'code=173')" style="flex:1">mute</button> <button onclick="fetch('/key?code=173')" style="flex:1">mute</button>
<button onclick="sendmessage('key', 'code=175')" style="flex:2">vol +</button> <button onclick="fetch('/key?code=175')" style="flex:2">vol +</button>
</div> </div>
<div style="flex:2"> <div style="flex:2">
<button onclick="sendmessage('key', 'code=178')" style="flex:1">stop</button> <button onclick="fetch('/key?code=178')" style="flex:1">stop</button>
<button onclick="sendmessage('key', 'code=177')" style="flex:1">prev</button> <button onclick="fetch('/key?code=177')" style="flex:1">prev</button>
<button onclick="sendmessage('key', 'code=179')" style="flex:1">play/pause</button> <button onclick="fetch('/key?code=179')" style="flex:1">play/pause</button>
<button onclick="sendmessage('key', 'code=176')" style="flex:1">next</button> <button onclick="fetch('/key?code=176')" style="flex:1">next</button>
</div> </div>
<script> <script type="text/javascript">
function startup() { function startup() {
var el = document.getElementById("canvas"); var el = document.getElementById("canvas");
el.addEventListener("touchstart", handleStart, false); el.addEventListener("touchstart", handleStart, false);
@ -108,7 +107,8 @@ var packetnum = 0;
function handleStart(evt) { function handleStart(evt) {
if (currenttouch == null) { if (currenttouch == null) {
currenttouch = evt.changedTouches[0]; currenttouch = evt.changedTouches[0];
sendmessage("start", "x=" + currenttouch.pageX + "&y=" + currenttouch.pageY) packetnum = 0;
fetch("/start?x=" + currenttouch.pageX + "&y=" + currenttouch.pageY);
} }
} }
@ -120,7 +120,8 @@ function handleMove(evt) {
for (var i = 0; i < touches.length; i++) { for (var i = 0; i < touches.length; i++) {
if (touches[i].identifier == currenttouch.identifier) { if (touches[i].identifier == currenttouch.identifier) {
currenttouch = evt.changedTouches[0]; currenttouch = evt.changedTouches[0];
sendmessage("move", "x=" + currenttouch.pageX + "&y=" + currenttouch.pageY) packetnum++;
fetch("/move?x=" + currenttouch.pageX + "&y=" + currenttouch.pageY + "&seq=" + packetnum);
} }
} }
} }
@ -130,7 +131,7 @@ function handleEnd(evt) {
for (var i = 0; i < touches.length; i++) { for (var i = 0; i < touches.length; i++) {
if (touches[i].identifier == currenttouch.identifier) { if (touches[i].identifier == currenttouch.identifier) {
currenttouch = evt.changedTouches[0]; currenttouch = evt.changedTouches[0];
sendmessage("end", "x=" + currenttouch.pageX + "&y=" + currenttouch.pageY) fetch("/end?x=" + currenttouch.pageX + "&y=" + currenttouch.pageY)
currenttouch = null; currenttouch = null;
} }
} }
@ -141,7 +142,7 @@ function handleCancel(evt) {
for (var i = 0; i < touches.length; i++) { for (var i = 0; i < touches.length; i++) {
if (touches[i].identifier == currenttouch.identifier) { if (touches[i].identifier == currenttouch.identifier) {
currenttouch = evt.changedTouches[0]; currenttouch = evt.changedTouches[0];
sendmessage("end", "x=" + currenttouch.pageX + "&y=" + currenttouch.pageY) fetch("/end?x=" + currenttouch.pageX + "&y=" + currenttouch.pageY)
currenttouch = null; currenttouch = null;
} }
} }
@ -149,17 +150,10 @@ function handleCancel(evt) {
function handlekeypress(evt) { function handlekeypress(evt) {
evt.preventDefault(); evt.preventDefault();
sendmessage("text", "text=" + encodeURIComponent(evt.target.value)); fetch("/text?text=" + encodeURIComponent(evt.target.value));
evt.target.value = ""; evt.target.value = "";
} }
function sendmessage(opt, q) {
fetch("/" + opt + "/?" + q + "&seq=" + packetnum);
packetnum++;
}
</script> </script>
</body> </body>

View File

@ -153,7 +153,9 @@
<Content Include="res\page.html"> <Content Include="res\page.html">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content> </Content>
<Content Include="res\readme.txt" /> <Content Include="res\readme.txt">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup> </ItemGroup>
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" /> <Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it. <!-- To modify your build process, add your task inside one of the targets below and uncomment it.