keypress_sim
A cross-platform keyboard input simulation package for Dart that works on Windows, macOS, and Linux.
Features
- Simulate keyboard input events across major desktop platforms
- Send individual key presses and releases
- Type text strings with configurable delays
- Send complex keyboard shortcuts with proper timing
- Platform-specific support for modifier keys (Control, Alt, Shift, Windows/Command)
Platform Support
Platform | Status |
---|---|
Windows | ✓ |
macOS | ✓ |
Linux | ✓ |
Installation
dependencies:
keypress_sim: ^0.1.0
Usage
import 'package:keypress_sim/keypress_sim.dart';
void main() async {
// Create an instance of KeyEmulator
final keyEmulator = KeyEmulator();
// Press and release a single key
keyEmulator.sendKeyByKey(Key.keyA, press: true);
keyEmulator.sendKeyByKey(Key.keyA, press: false);
// Type text with automatic key presses
await keyEmulator.typeText('Hello World!');
// Send keyboard shortcuts
await keyEmulator.sendCtrlShiftKey(Key.keyP); // Ctrl+Shift+P (Command+Shift+P on macOS)
// Custom shortcuts with flexible timing
await keyEmulator.sendShortcut(
Key.keyS,
[Key.controlLeft, Key.altLeft],
keyPressDuration: Duration(milliseconds: 150),
delayBetweenKeys: Duration(milliseconds: 70),
);
// Clean up resources when done (important for Linux/X11)
keyEmulator.dispose();
}
Platform-Specific Considerations
Windows
Uses the Windows Input API via user32.dll to send virtual key events.
macOS
Uses the CoreGraphics event system to create and post keyboard events.
Linux
Uses X11 and XTest extension to simulate keyboard input. Requires the X11 development libraries to be installed:
# Ubuntu/Debian
sudo apt-get install libx11-dev libxtst-dev
# Fedora
sudo dnf install libX11-devel libXtst-devel
Releasing New Versions
This package uses GitHub Actions for automated publishing to pub.dev. To release a new version:
- Update the version in
pubspec.yaml
- Update
CHANGELOG.md
with the changes in the new version - Commit your changes
- Create and push a new version tag:
git tag -a v0.1.1 -m "Release v0.1.1"
git push origin v0.1.1
This will trigger the GitHub Actions workflow to publish the new version to pub.dev.
Contributing
Contributions are welcome! Feel free to submit a Pull Request.
License
This package is licensed under the MIT License - see the LICENSE file for details.
Libraries
- keypress_sim
- A cross-platform keyboard input simulation package for Dart that works on Windows, macOS, and Linux.