Compare commits

..

No commits in common. "master" and "v1.0" have entirely different histories.
master ... v1.0

4 changed files with 53 additions and 47 deletions

View File

@ -5,7 +5,6 @@ Public Class main
Dim weblistener As HttpListener
Dim lastpos 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
Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles StartButton.Click
@ -40,6 +39,8 @@ Public Class main
Dim context As HttpListenerContext = Nothing
Dim resp As HttpListenerResponse
Dim respstr As String = String.Empty
Dim lastpacket As Long = -1
Dim lastpack As Long
Dim leftclicking As Boolean = False
While weblistener.IsListening
Try
@ -56,8 +57,13 @@ Public Class main
If path = "/" Then
respstr = FileIO.FileSystem.ReadAllText("res/page.html")
lastpacket = 0
Else
Dim pack As Long = context.Request.QueryString("seq")
If pack > lastpack Then
respstr = handleinput(context.Request)
lastpack = pack
End If
End If
If String.IsNullOrEmpty(respstr) Then
@ -111,16 +117,11 @@ Public Class main
lastpos.Y = req.QueryString("y")
startpos.X = req.QueryString("x")
startpos.Y = req.QueryString("y")
lastmouseseq = 0
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)
lastpos.X = req.QueryString("x")
lastpos.Y = req.QueryString("y")
lastmouseseq = seq
End If
Case "end"
Dim tol As Integer = TapInput.Value
@ -190,9 +191,10 @@ Public Class main
End Try
Case "text"
Dim text As String = req.QueryString("text")
Dim encodedtext As String = req.QueryString("text")
Dim decodedtext As String = Uri.UnescapeDataString(encodedtext)
Try
SendKeysEscaped(text)
SendKeysEscaped(decodedtext)
Catch ex As Exception
log(ex.ToString)
End Try

View File

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

View File

@ -8,7 +8,6 @@ Mouse messages are:
move - continue a trackpad movement
end - end a trackpad movement
All of the above take 2 arguments: x and y.
Each touch has a "seq" argument that starts at 0 and increments with each move, to avoid out-of-order movements.
Mouse movement is relative so don't worry about the absolute values.
X is positive left, and Y is positive down.

View File

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