This repository has been archived on 2022-07-17. You can view files and clone it, but cannot push or open issues or pull requests.
arsenm-dev-site/content/docs/kbdemu/usage.md

281 lines
4.6 KiB
Markdown
Raw Normal View History

2021-01-31 08:54:37 +00:00
---
title: "Usage"
draft: false
description: "Using kbdemu"
---
{{< appveyor-ci project="kbdemu" projectID="km2f1wiy7enuh6il" >}}
{{< minio-s3 project="kbdemu" >}}
2021-03-09 04:19:31 +00:00
This page assumes you have already installed KbdEmu. If not, follow the installation instructions on the installation page:
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
{{< button text="Installation" bgcolor="#357edd" fgcolor="white" link="../installation" >}}
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
## Scripts
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
KbdEmu uses [scpt](https://gitea.arsenm.dev/Arsen6331/scpt) as its scripting language. The example script for kbdemu looks like this:
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
```
set testKey to "x"
keystroke $testKey with action "hold"
sleep "1s"
keystroke $testKey with action "release"
type "AaBbCcDdEeFfGgHhIiJjKkLlMmNnOoPpQqRrSsTtUuVvWwXxYyZz"
scroll 5 with direction "up"
click "right"
move-mouse [0, 0]
send-notification "Test"
beep
open-location "https://www.arsenm.dev/"
set showDetails to (display-dialog "Show details?" with type "yesno")
if $showDetails {
display-dialog {"Color: " + (pixel-color [100, 100]) + ", Mouse: " + (str (mouse-position))} with title "Details"
}
print {"\n" + (user-choice "test" with items ["Hello", "World", 3.1415926535, $GOOS, $GOARCH, true, false, (numcpu)])}
log "Complete!"
```
By default, the `kbdemu` command will look for and execute a file called `kbdemu.scpt`, but that can be changed using the `--file` flag.
---
## Builtins
KbdEmu comes with some extra functions for automation
---
### `numcpu`
Returns the amount of available CPUs as a number.
Example:
```
print (numcpu)
```
---
### `sleep`
Sleeps for a duration as specified by an unnamed string argument formatted according to the specification of golang's `time.ParseDuration()`:
{{< button text="Godoc" bgcolor="#00ACD7" fgcolor="white" icon="cib:go" link="https://golang.org/pkg/time#ParseDuration" >}}
Examples:
```
sleep "1s"
sleep "1h2m"
```
---
### `display-dialog`
Displays a dialog window with the specified parameters.
Examples:
```
display-dialog "Test1"
display-dialog "Test2" with title "Title Test"
print (display-dialog "Test3" with title "Entry Test" with type "entry")
```
These are all the supported dialog types:
- info
- warning
- error
- entry
- yesno
Default dialog type is info.
---
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
### `send-notification`
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
Sends a notification according to the specified parameters
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
Examples:
```
send-notification "Test"
send-notification "Test" with title "Title"
send-notification "Test" with title "Title" with icon "test.png"
```
---
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
### `beep`
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
Creates a beep sound, if impossible, falls back to sending bell character.
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
Examples:
```
beep
beep "3s"
```
---
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
### `click`
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
Emulates a mouse click
2021-01-31 08:54:37 +00:00
2021-03-09 04:19:31 +00:00
Example:
```
click "right"
```
---
### `scroll`
Scrolls the specifed amount in the specified direction
Example:
```
scroll 5 with direction "up"
2021-01-31 08:54:37 +00:00
```
2021-03-09 04:19:31 +00:00
---
### `move-mouse`
Moves the cursor to the specified coordinates
Example:
```
move-mouse [100, 200]
```
---
### `keystroke`
Emulates a key event
Examples:
```
keystroke "y" with action "hold"
sleep "2s"
keystroke "y" with action "release"
keystroke "x"
```
Default action is `tap` which presses and releases the key.
---
### `type`
Types a string using the keyboard
Example:
```
type "Hello, World"
```
---
### `mouse-position`
Returns the current mouse position in the form of an array containing two number elements.
Example:
```
print (mouse-position) # [0 0]
```
---
### `pixel-color`
Returns a string containing the hex color of the given coordinates.
Example:
```
print (pixel-color [100, 100]) # ffffff
```
---
### `log`
Logs the provided message at the given level.
Examples:
```
log "Complete"
log "Error" with level "fatal"
```
The available levels are:
- info
- debug
- warn
- fatal
Default log level is info
---
### `user-choice`
Displays a user choice dialog window with provided items, returns selected item.
Example:
```
user-choice "Choose an option" with items ["Hello", "World", 1, 3.14159, 6.28318]
```
---
### `open-location`
Opens given URL in the default application set to open it.
Examples:
```
open-location "https://www.arsenm.dev"
open-location "/home"
```
---
## Variables
KbdEmu exposes some variables for use in scripts.
---
### `$GOOS`
The value from golang's `runtime.GOOS`
{{< button text="Godoc" bgcolor="#00ACD7" fgcolor="white" icon="cib:go" link="https://golang.org/pkg/runtime#GOOS" >}}
---
### `$GOARCH`
The value from golang's `runtime.GOARCH`
{{< button text="Godoc" bgcolor="#00ACD7" fgcolor="white" icon="cib:go" link="https://golang.org/pkg/runtime#GOARCH" >}}
---
### `$arguments`
Non-flag command line arguments provided to KbdEmu
Example:
Command:
```bash
kbdemu --file script.scpt "Hello, World"
```
Contents of `script.scpt`:
```
print $arguments[0] # Hello, World
```