VICREO Listener

made with python repo size current release

Hotkey listener for windows & Mac

Latest Windows release Latest OSX release Go to VICREO releases for download.

VICREO Listener is a small program that sits on your machine waiting for incomming TCP connection/commands. It uses pre-defined commands to simulate keypresses on your machine. You can use this program to preform hotkey actions from remote

Controllable by Companion


Download the right software package for your operating system and launch the program on the machine you would like to control (host).

On your client machine (the one you are sending commands from), send TCP string to the right IP-address from the host, to port 10001


Below you’ll find a table of pre-installed commands that the listener will accept. First tell the program what kind of key you are going to send and than the key itself.

Action Description Example
<SK> Single key <SK>n
<SPK> Special key (modifier) <SKP>enter
<KCOMBO> <AND> Key combination <KCOMBO>alt<AND>tab
<KTRIO> <AND> <AND2> Key trio combination <KCOMBO>ctrl<AND>shift<AND2>d
<KPRESS> Simulates key down <KPRESS>n
<KRELEASE> Simulates key up <KRELEASE>n
<MSG> Send message <MSG>Hello World (only string message)
<FILE> Open file (complete path) <FILE>c:\user\test\test.bat
<SKE> <PROCESS> <AND> <AND2> (MacOS ONLY) - Send KeyPress Event to Process with optional modifiers <SKE>0x12<PROCESS>propresenter<AND>cmd<AND2>none

The <KPRESS> and <KRELEASE> can be used for special cases, Example;

but above is the same as <KCOMBO>ctrl<AND>c

<SKE> (MacOS Only) - Notes

The <SKE>keyCode<PROCESS>processSearchString<AND>optionalModifierKey1<AND2>optionalModifierKey2 command (MacOS only) will send a keyboard keypress event directly to a specific process found by searching for any process matching *processSearchString* with up to two optional modifiers: none|alt|ctrl|cmd|shift.

Tip: You can find an applications exact process name by checking the list in the CPU pane of MacOS Activity Monitor.

Please note that this works through a very different mechanism than the other commands in VICREO-Listener and it is MacOS only. You won’t often need this command - as the other commands to type Keys are likely to do what you need. However, this command can help if you need to send keystrokes to an application running in the background.

Please also note that you will need to add the VICREO Listener application to the list of “Allow the app below to control your computer” in the Privacy section of Security & Privacy MacOS system settings.

This command is virtually sending physical keyboard events with the keys identified by a KeyCode. You must send the keyboard keycode - not the character/letter being typed.

For example, if you send keycode 0x00 and your computer is setup to use a US keyboard as your current input, that will be like pressing the key with the letter A on it. If however, your keyboard is Greek, then sending KeyCode 0x00 will be like typing the letter α. Think of it as pressing a physical key in a specific location on a keyboard. You can lookup MacOS keyboard keycodes online or refer to the map of the US keyboard below: KeyCodes The US language keyboad map above shows the hex keycodes in green (you can also send the decimal equivalent if you prefer). Generally, keyboards for other languages will have the same KeyCodes for physical keys in the same locations on a keyboard - they just have different letters printed on them. This means you can “overlay” any other language keyboard on the US keyboard to find the right keycode you want for other languages.

Also, note that the events are directed at the running process itself (Not the foreground application, Window or Text Control). This means it is possible to send these keyboard events to applications running in the background on MacOS. However, depending on how the application is processing keyboard input, this only works in very limited cases. It will most likely work for application-wide hotkeys. See how your application responds - your mileage may vary.

Be aware there is a limit of 160 bytes to receive, this because of the <MSG> function

Make sure you use the backslash in the file open command


The following modifier are supported:

alt ctrl tab shift cmd alt_gr delete backspace space caps_lock end enter esc f1 f2 f3 f4 f5 f6 f7 f8 f9 f10 f11 f12 home insert (only windows) left right up down num_lock (only windows) page_up page_down


For mac, when you need the path of a file, right-click on the file and when you see the menu, press and hold Alt to be able to copy the full path.

Want to run it yourself? build it with PyInstaller and use the spec file.

For additional actions, please raise a feature request on GitHub.