Update README.md

This commit is contained in:
RunasSudo 2019-11-21 23:48:56 +11:00
parent d4255d81d0
commit fbf47153f3
Signed by: RunasSudo
GPG Key ID: 7234E476BF21C61A

View File

@ -1,3 +1,37 @@
# input-over-ssh # input-over-ssh
Mouse and keyboard forwarding over SSH, using *xinput* and *xdotool*, with relative mouse movement. A useful adjunct to VNC in situations where relative mouse movement is important, e.g. 3D video games. Mouse and keyboard forwarding over SSH, using *xinput* and *xdotool*, with relative mouse movement. A useful adjunct to VNC in situations where relative mouse movement is important, e.g. 3D video games.
## Dependencies
* Client (sending the mouse and keyboard of this device)
* *xinput* – to monitor mouse and keyboard
* *unclutter* from *unclutter-xfixes-git* – to hide cursor
* Server (mouse and keyboard sent to this device)
* *xdotool* – to send mouse and keyboard events
## Configuration
In *forward.py*, `MOUSEHOLD_X` and `MOUSEHOLD_Y` define the location at which the mouse cursor will be centered. Each frame, the client-side cursor will be reset to this position to measure relative movement. If `MOUSEHOLD_W` and `MOUSEHOLD_H` are non-zero, a Tkinter window of the given dimensions will be drawn around that location to prevent clicks interfering with other applications.
`DEVICE_MOUSE` and `DEVICE_KEYBOARD` give the names of the keyboard and mouse devices to monitor, as shown in the output of `xinput list`.
## Usage
To run the script, pipe the output to SSH, ensuring that Python output is unbuffered using the `-u` flag:
```
python -u forward.py | ssh hostname.example.com bash
```
To exit, simply press Ctrl+Q.
## Combining with VNC
This setup is easily combined with VNC in view-only mode to provide a full GUI experience.
On the host, disable the CursorPosUpdates/CursorShapeUpdates VNC extensions to force the server to directly render the cursor. For *x11vnc*, simply pass the `-nocursorpos -nocursorshape` flags.
On the client, enable view-only mode to prevent conflict between the VNC client and input-over-ssh. For TigerVNC *vncviewer*, simply pass the `ViewOnly=1` flag.
Then run input-over-ssh as usual, and you should be able to control the remote cursor. This provides a lightweight, open-source alternative to services like Steam Remote Play.