Started implementing modifier keys
This commit is contained in:
parent
138c54d75c
commit
50a46e4c42
10
Client.md
10
Client.md
@ -75,11 +75,11 @@ if string(authResponse) == "authenticated" {
|
|||||||
|
|
||||||
--- load connection URL from second CLI argument --- noWeave
|
--- load connection URL from second CLI argument --- noWeave
|
||||||
|
|
||||||
if len(os.Args) < 3 {
|
if len(os.Args) < 2 {
|
||||||
log.Fatal("missing connection URL")
|
log.Fatal("missing connection URL")
|
||||||
}
|
}
|
||||||
|
|
||||||
connectionURL := os.Args[2]
|
connectionURL := os.Args[1]
|
||||||
|
|
||||||
if !strings.HasPrefix(connectionURL, "ws://") && !strings.HasPrefix(connectionURL, "wss://") {
|
if !strings.HasPrefix(connectionURL, "ws://") && !strings.HasPrefix(connectionURL, "wss://") {
|
||||||
log.Fatal("connection URL must start with ws:// or wss://")
|
log.Fatal("connection URL must start with ws:// or wss://")
|
||||||
@ -122,7 +122,10 @@ for {
|
|||||||
## Sending keys from stdin
|
## Sending keys from stdin
|
||||||
|
|
||||||
|
|
||||||
We read keys from stdin and send them to the server until we get EOF
|
We read keys from stdin and send them to the server until we get EOF.
|
||||||
|
|
||||||
|
We specify xdotool if the key is not a QWERTY key or if KEYBOARD_ALWAYS_XDOTOOL is set to true.
|
||||||
|
|
||||||
|
|
||||||
``` go
|
``` go
|
||||||
|
|
||||||
@ -159,6 +162,7 @@ for {
|
|||||||
|
|
||||||
--- add xdotool if non qwerty function --- noWeave
|
--- add xdotool if non qwerty function --- noWeave
|
||||||
addXDoToolIfNonQWERTY := func(message string)(string) {
|
addXDoToolIfNonQWERTY := func(message string)(string) {
|
||||||
|
|
||||||
if strings.HasPrefix(message, "{kb_cmd:xdotool}:") {
|
if strings.HasPrefix(message, "{kb_cmd:xdotool}:") {
|
||||||
return message
|
return message
|
||||||
}
|
}
|
||||||
|
@ -1,6 +1,17 @@
|
|||||||
# GoSmartKeyboard Environment Variables
|
# GoSmartKeyboard Environment Variables
|
||||||
|
|
||||||
|
|
||||||
|
## Always use xdotool
|
||||||
|
|
||||||
|
Some users may always want xdotool, see the [Streaming.md](Streaming.md) file for more information.
|
||||||
|
|
||||||
|
--- always use xdotool environment variable
|
||||||
|
|
||||||
|
alwaysUseXdotool, alwaysUseXdotoolExists := os.LookupEnv("KEYBOARD_ALWAYS_USE_XDOTOOL")
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
|
||||||
## Authentication token file
|
## Authentication token file
|
||||||
|
|
||||||
The authentication token configuration file is set by the environment variable `KEYBOARD_AUTH_TOKEN_FILE`, but defaults to
|
The authentication token configuration file is set by the environment variable `KEYBOARD_AUTH_TOKEN_FILE`, but defaults to
|
||||||
|
@ -81,14 +81,7 @@ Then we can start the web server and listen for websocket connections.
|
|||||||
package main
|
package main
|
||||||
|
|
||||||
import(
|
import(
|
||||||
"os"
|
|
||||||
"fmt"
|
"fmt"
|
||||||
"io"
|
|
||||||
"strings"
|
|
||||||
"bufio"
|
|
||||||
"io/ioutil"
|
|
||||||
"log"
|
|
||||||
@{gorilla/websocket import string}
|
|
||||||
"keyboard.voidnet.tech/server"
|
"keyboard.voidnet.tech/server"
|
||||||
"keyboard.voidnet.tech/auth"
|
"keyboard.voidnet.tech/auth"
|
||||||
)
|
)
|
||||||
|
27
Streaming.md
27
Streaming.md
@ -110,6 +110,33 @@ if strings.HasPrefix(message_string, "{kb_cmd:xdotool}:") {
|
|||||||
doXDoTool("type", message_string)
|
doXDoTool("type", message_string)
|
||||||
}
|
}
|
||||||
continue
|
continue
|
||||||
|
} else if strings.HasPrefix(message_string, "{kb_cmd:xdotoolk}:") {
|
||||||
|
message_string = strings.TrimPrefix(message_string, "{kb_cmd:xdotoolk}:")
|
||||||
|
if message_string == "" {
|
||||||
|
message_string = "\n"
|
||||||
|
}
|
||||||
|
if characterRegex.MatchString(message_string) {
|
||||||
|
for _, character := range message_string {
|
||||||
|
charString := string(character)
|
||||||
|
if charString == "\n" {
|
||||||
|
charString = "Enter"
|
||||||
|
} else if charString == "\t" {
|
||||||
|
charString = "Tab"
|
||||||
|
} else if charString == "\b" {
|
||||||
|
charString = "BackSpace"
|
||||||
|
} else{
|
||||||
|
doXDoTool("key", charString)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
// key is required for special characters
|
||||||
|
err = doXDoTool("key", charString)
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
continue
|
||||||
|
} else {
|
||||||
|
doXDoTool("key", message_string)
|
||||||
|
}
|
||||||
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
if characterRegex.MatchString(message_string) {
|
if characterRegex.MatchString(message_string) {
|
||||||
|
Loading…
Reference in New Issue
Block a user