From 50a46e4c4233701d5afa0511f780fe5fd4758677 Mon Sep 17 00:00:00 2001 From: Kevin F Date: Fri, 27 Jan 2023 17:22:02 -0600 Subject: [PATCH] Started implementing modifier keys --- Client.md | 10 +++++++--- EnvironmentVariables.md | 15 +++++++++++++-- ReadMe.md | 7 ------- Streaming.md | 27 +++++++++++++++++++++++++++ 4 files changed, 47 insertions(+), 12 deletions(-) diff --git a/Client.md b/Client.md index ac68158..9396c40 100644 --- a/Client.md +++ b/Client.md @@ -75,11 +75,11 @@ if string(authResponse) == "authenticated" { --- load connection URL from second CLI argument --- noWeave -if len(os.Args) < 3 { +if len(os.Args) < 2 { log.Fatal("missing connection URL") } -connectionURL := os.Args[2] +connectionURL := os.Args[1] if !strings.HasPrefix(connectionURL, "ws://") && !strings.HasPrefix(connectionURL, "wss://") { log.Fatal("connection URL must start with ws:// or wss://") @@ -122,7 +122,10 @@ for { ## 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 @@ -159,6 +162,7 @@ for { --- add xdotool if non qwerty function --- noWeave addXDoToolIfNonQWERTY := func(message string)(string) { + if strings.HasPrefix(message, "{kb_cmd:xdotool}:") { return message } diff --git a/EnvironmentVariables.md b/EnvironmentVariables.md index c7ce0f4..6256e6c 100644 --- a/EnvironmentVariables.md +++ b/EnvironmentVariables.md @@ -1,6 +1,17 @@ # 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 The authentication token configuration file is set by the environment variable `KEYBOARD_AUTH_TOKEN_FILE`, but defaults to @@ -19,7 +30,7 @@ authTokenFile, authTokenFileIsSet := os.LookupEnv("KEYBOARD_AUTH_TOKEN_FILE") --- get authTokenInput from environment - authTokenInput, authTokenInputExists := os.LookupEnv("KEYBOARD_AUTH") +authTokenInput, authTokenInputExists := os.LookupEnv("KEYBOARD_AUTH") --- @@ -28,7 +39,7 @@ authTokenFile, authTokenFileIsSet := os.LookupEnv("KEYBOARD_AUTH_TOKEN_FILE") --- get client fifo input file from environment - clientFifoInputFile, clientFifoInputFileExists := os.LookupEnv("KEYBOARD_FIFO") +clientFifoInputFile, clientFifoInputFileExists := os.LookupEnv("KEYBOARD_FIFO") --- diff --git a/ReadMe.md b/ReadMe.md index e60c46a..7415349 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -81,14 +81,7 @@ Then we can start the web server and listen for websocket connections. package main import( - "os" "fmt" - "io" - "strings" - "bufio" - "io/ioutil" - "log" - @{gorilla/websocket import string} "keyboard.voidnet.tech/server" "keyboard.voidnet.tech/auth" ) diff --git a/Streaming.md b/Streaming.md index b6a05f1..227e324 100644 --- a/Streaming.md +++ b/Streaming.md @@ -110,6 +110,33 @@ if strings.HasPrefix(message_string, "{kb_cmd:xdotool}:") { doXDoTool("type", message_string) } 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) {