We have created a command line interface which allows you to send mouse and keyboard commands to your RelayKeys hardware.
To run it access
relaykeys-cli.exe command:data
or if running it in pure python
python relaykeys-cli.py command:data
and the non-verbose, non-windowed version
python relaykeys-cli-win.py command:data
Where 'command' and 'data' are provided below.
Remember to change your application accordingly We regularly use the term for command line application 'relaykeys-cli' in this documentation. Often though you will want to use the 'relaykeys-cli-win.exe' application that will run a little quicker and has no printed output. Use this for your default call to relaykeys from other applications. If you want to see any errors use 'relaykeys-cli.exe'
If you are developing with the code You must make sure the server is running when you call the cli files. The server (aka Daemon) is the code that turns these commands into the correct AT syntax and access the com port
Keymap files are located in cli_keymap folder. You can choose which keymap file the CLI is going to use in the cfg by assigning file name to keymap_file variable (see here)
By default the us_keymap.json is loaded. To run relaykeys-cli with other keymap either change the cfg setting or use the -c flag on the cli application. E.g.
relaykeys-cli.exe -c .\relaykeys-example.cfg type:@
See more info on the format here
This takes the pasteboard of the computer (i.e. when you copy some text) and pastes the resulting string to RelayKeys
i.e.
relaykeys-cli.exe paste
Types the string following the :. Note you will need to escape spaces etc
relaykeys-cli.exe type:Hello\ World
You can send special characters, ones that are usually shifted, by sending the key and the shift modifier (see keyevent below). But for the type and paste commands we have some other characters that are hardcoded and it will do the conversion on the fly.
So for example, to send the @ symbol:
relaykeys-cli.exe type:@
All codes which are converted can be seen below. NB: \t = Tab \r\n are line breaks~
Sends the KEY and any modifier, For example:
relaykeys-cli.exe keypress:A
Will emulate pressing and releasing the letter A
. What about a shift?
relaykeys-cli.exe keypress:A,LSHIFT
Will emulate pressing the A with Left Shift. i.e. Upper casing the A.
relaykeys-cliexe keypress:RIGHTARROW,LSHIFT,LCTRL
Will press the right arrow, left shit and left control (would select the next word in programs like word)
Left Control/CTRL: LCTRL
Left Shift : LSHIFT
Left Alt/Alt: LALT
(Left) Meta/Windows Key/Mac Key/Command Key: LMETA
Note: On Windows there is generally only one Windows key. So use LMETA to emulate pressing the Windows key
Right Control/CTRL:: LCTRL
Right Shift : RSHIFT
(Right) Meta/Windows Key/Mac Key/Command Key: RMETA
If you are wanting to send two keys with a modifier - send the key - then modifier. E.g. keypress:C,LCTRL
- not the other way round!
If you are sending to iOS or a Mac - remember that they use the Command (LMETA) key - often where windows uses the CTRL key read here for more examples
We also have a limited number of consumer keys - namely volume related (if you need others do let us know)
Volume Up: VOLUP
Volume Down: VOLDOWN
Mute: MUTE
So all the other keys are defined below. We will try and explain what these are when its ambiguous
Emulates holding or releasing one key with a modifer. For example:
relaykeys-cli.exe keyevent:A,LSHIFT,1
Emulates pressing a A
with Shift
Down. To release:
relaykeys-cli.exe keyevent:A,LSHIFT,0
So a classic example is to emulate pressing the Alt key and Tab key. Commonly used to switch applications. To do this you would need to send two commands.
Releases any keys that may have been held down, e.g. a modifier Particularly useful if you need to type on one the receiving device with a different keyboard.
Sends the command to move the mouse x Pixels Right and x Pixels Down. To go in the other direction send negative numbers. Eg. To go Right by 10 and Down by 10
relaykeys-cli.exe mousemove:10,10
and Left by 10, Up by 10:
relaykeys-cli.exe mousemove:-10,-10
Straight up:
relaykeys-cli.exe mousemove:0,-10
Straight down:
relaykeys-cli.exe mousemove:0,10
Straight right:
relaykeys-cli.exe mousemove:10,0
Straight left:
relaykeys-cli.exe mousemove:-10,0
Want a way of repeating a mousemove for a while?
Run the application called mouserepeat.exe which uou will find in the RelayKeys install folder. Run it with mouserepeat.exe -x 10 -y 10
- where that is your mouse direction to move it in. It will then repeat that until you quit the application. To do this run a powershell script:
Stop-Process -Name "mouserepeat"
Sends the Mouse button press. Mouse buttons available:
L: Left
R: Right
M: Middle
F: Scroll Forward
B: Scroll Backward
Behaviours:
click
doubleclick
Note: If you don't provide a behaviour it will hold and release the button for 0 Seconds.
Send a doubleclick:
relaykeys-cli.exe mousebutton:L,doubleclick
Send a right click:
relaykeys-cli.exe mousebutton:R,click
What about dragging?
Activate Drag Start button
relaykeys-cli mousebutton:L,press
User moves mouse
relaykeys-cli mousemove:x,y
User moves mouse some more
relaykeys-cli mousemove:x,y
user activates Drag Stop button
relaykeys-cli mousebutton:0
Adds a delay. Particularly useful when writing a macro and you need to wait for something to happen on the client operating system.
relaykeys-cli delay:1000
Puts in a a delay of 1 second.
On the following commands you can provide a --notify
flag. If so your Operating System will return a system notification. Useful if you dont have access to view the command line. Or if you wish provide a --copy
flag. This will return the results to your pasteboard for you to paste the data back. Be careful with this. It will overwrite any copy/paste functions you may already have.
relaykeys-cli.exe ble_cmd:devname
Returns the currently connected device
relaykeys-cli.exe ble_cmd:devlist
Gets a list of devices that the device has in memory
relaykeys-cli.exe ble_cmd:devadd
Put the device into a pairing state
relaykeys-cli.exe ble_cmd:devreset
Reset the entire stored devices (its like wiping the volatile memory)
relaykeys-cli.exe ble_cmd:switch
Switch the current connected device to the next one in RelayKeys memory
relaykeys-cli.exe ble_cmd:switch:"Name" --notify
Switches BLE device by the name of a device.
relaykeys-cli.exe ble_cmd:devremove=DEVNAME
Remove just one named device from the memory.
relaykeys-cli.exe ble_cmd:reconnect
Tells the daemon/server to try and reconnect to the serial port.
relaykeys-cli.exe daemon:switch_mode
Tells the daemon/server to try and switch between wired
relaykeys-cli.exe daemon:get_mode
Returns current mode
relaykeys-cli.exe daemon:dongle_status
Returns whether it is connected or not
relaykeys-cli.exe ble_cmd:get_mode
Gets the current mode - wired or wireless
relaykeys-cli.exe ble_cmd:switch_mode
Switches mode from Wired -> Wireless and Wireless-> Wired.
Provide a macro file - where each line in a text file is a cli command. For example ios_open_notes.txt found in the macros directory of the installation folder (i.e at C:\Program Files (x86)\Ace Centre\RelayKeys\maccros)
relaykeys-cli.exe -f ios_open_notes.txt
or like this
relaykeys-cli.exe -f Documents/open_ios_notes.txt
where it reads the file from a file path.. or..
relaykeys-cli.exe -f ./open_ios_notes.txt
where it reads the file in folder where current exe is run from\
where ios_open_notes.txt is:
Warning: There is no syntax checking of this document.
Want to send a long string of mouse commands and want to record your movements for a script? Use the RelayKeys-QT app and use the record macro function!