From 2ce4c2beff75773514796542e422ff9c1edffa04 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Tue, 30 Jan 2024 13:27:22 -0500 Subject: Start on Web UI for identifying & printing connected keyboards --- virtual-programs/keyboard.folk | 6 +---- virtual-programs/web-keyboards.folk | 52 +++++++++++++++++++++++++++++++++++++ 2 files changed, 53 insertions(+), 5 deletions(-) create mode 100644 virtual-programs/web-keyboards.folk (limited to 'virtual-programs') diff --git a/virtual-programs/keyboard.folk b/virtual-programs/keyboard.folk index 9746af91..fe1730e5 100644 --- a/virtual-programs/keyboard.folk +++ b/virtual-programs/keyboard.folk @@ -1,9 +1,5 @@ set ::debug_keyboard true -proc udevadmProperties {device} { - return [exec udevadm info --query=property --name=$device] -} - proc establishKeyPressListener {keyboard} { set kb [open $keyboard r] fconfigure $kb -translation binary @@ -12,7 +8,7 @@ proc establishKeyPressListener {keyboard} { # Function to check if the device is a keyboard proc isKeyboard {device} { - set properties [udevadmProperties $device] + set properties [exec udevadm info --query=property --name=$device] if {$properties eq ""} { return false } diff --git a/virtual-programs/web-keyboards.folk b/virtual-programs/web-keyboards.folk new file mode 100644 index 00000000..a3a4435d --- /dev/null +++ b/virtual-programs/web-keyboards.folk @@ -0,0 +1,52 @@ +When the keyboards are /keyboards/ { + Wish the web server handles route "/keyboards$" with handler [list apply {{keyboards} { + upvar ^html ^html + html [subst { + + + Status +
+ [join [lmap kb $keyboards { subst { +
$kb
+
+

+ +
+ } }] "\n"] +
+ + + + + }] + }} $keyboards] +} -- cgit v1.2.3 From 7ee527f792c6a6c11fa257d0c66633de13f6a5b3 Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Tue, 30 Jan 2024 13:40:15 -0500 Subject: web-keyboards: Niceties Spaces between keypresses. Don't show keypresses from before page render. Don't double up keypresses (only count keydowns). --- virtual-programs/web-keyboards.folk | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) (limited to 'virtual-programs') diff --git a/virtual-programs/web-keyboards.folk b/virtual-programs/web-keyboards.folk index a3a4435d..560186e7 100644 --- a/virtual-programs/web-keyboards.folk +++ b/virtual-programs/web-keyboards.folk @@ -9,7 +9,7 @@ When the keyboards are /keyboards/ { [join [lmap kb $keyboards { subst {
$kb
-

+
} }] "\n"] @@ -23,14 +23,16 @@ When the keyboards are /keyboards/ { ws.onopen = () => { document.getElementById('status').innerHTML = "Connnected"; send(` - Assert when keyboard /kb/ claims key /k/ is /t/ with modifiers /m/ timestamp /ts/ {{chan kb k t m ts} { - ::websocket::send \$chan text "\$kb||\$k" + Assert when keyboard /kb/ claims key /k/ is down with modifiers /m/ timestamp /ts/ {{chan kb k m ts} { + if {\$ts > [clock milliseconds]} { + ::websocket::send \$chan text "\$kb||\$k" + } }} with environment \[list \$chan] `); }; ws.onclose = window.onbeforeunload = () => { document.getElementById('status').innerHTML = "Disconnnected"; - send(`Retract when keyboard /kb/ claims key /k/ is /t/ with modifiers /m/ timestamp /ts/ /anything/ with environment \[list \$chan]`) + send(`Retract when keyboard /kb/ claims key /k/ is down with modifiers /m/ timestamp /ts/ /anything/ with environment \[list \$chan]`) setTimeout(() => { wsConnect(); }, 1000); }; ws.onerror = (err) => { @@ -40,7 +42,7 @@ When the keyboards are /keyboards/ { } ws.onmessage = (msg) => { const \[kb, key] = msg.data.split("||"); - document.getElementById(kb + "-presses").innerText += key; + document.getElementById(kb + "-presses").innerText += key + " "; } }; wsConnect(); -- cgit v1.2.3 From 50c9d12686003806e6f43a63d58b4e41efd68d8b Mon Sep 17 00:00:00 2001 From: Omar Rizwan Date: Tue, 30 Jan 2024 13:44:48 -0500 Subject: web-keyboards: Print works --- virtual-programs/web-keyboards.folk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'virtual-programs') diff --git a/virtual-programs/web-keyboards.folk b/virtual-programs/web-keyboards.folk index 560186e7..6f18d962 100644 --- a/virtual-programs/web-keyboards.folk +++ b/virtual-programs/web-keyboards.folk @@ -10,7 +10,7 @@ When the keyboards are /keyboards/ {
$kb

- +
} }] "\n"] -- cgit v1.2.3