enigo tries to make it easy for developers to simulate key presses or mouse movements on Linux, Windows and macOS. I try to hide the differences between operating systems and make it as simple as possible. It is the most popular crate to do so according to crates.io, but there are still a number of issues.
A number of cool project use it such as - plock: Query and stream the output of an LLM from anywhere you can type [2] - RustDesk: Remote Access and Support Software (forked enigo) [3]
I'm close to running integration tests in the CI to prevent regressions and find platform differences, but it's not fully working yet. If someone could get it over the finish line, that would be great.
For Linux there is X11 but also basic Wayland implementation and a libei one, but they only work properly for US keyboards.
[1] https://github.com/enigo-rs/enigo [2] https://github.com/jasonjmcghee/plock [3] https://rustdesk.com/