3 个版本
使用旧的 Rust 2015
0.1.2 | 2019 年 8 月 11 日 |
---|---|
0.1.1 | 2019 年 8 月 10 日 |
0.1.0 | 2019 年 8 月 10 日 |
#363 in 模拟
每月 40 次下载
41KB
589 行
在 Rust 中模拟 Linux、Windows 和 Mac OS 上的键盘
在下一个示例中,该库模拟按键 A 和 Z 被按下。
计算机上的键盘布局很重要!
如果您使用的是美国键盘布局,您将有相应的按键,但如果您使用的是,例如,法语布局,您将得到另一个结果。
extern crate keybd_event;
#[cfg(target_os = "linux")]
use std::thread::sleep;
#[cfg(target_os = "linux")]
use std::time::Duration;
use keybd_event::KeyboardKey::{KeyA,KeyZ};
use keybd_event::KeyBondingInstance;
fn main() {
let mut kb = KeyBondingInstance::new().unwrap();
#[cfg(target_os = "linux")]
sleep(Duration::from_secs(2));
kb.has_shift(true);
kb.add_keys(&[KeyA, KeyZ]);
kb.launching();
}
Linux
在 Linux 上,此库使用 uinput,但通常 uinput 只适用于 root 用户。
简单的解决方案是在 root 用户下执行或通过 chmod
修改权限,但这并不好。
您可以遵循以下示例,以获得更高的安全性。
sudo groupadd uinput
sudo usermod -a -G uinput my_username
sudo udevadm control --reload-rules
echo "SUBSYSTEM==\"misc\", KERNEL==\"uinput\", GROUP=\"uinput\", MODE=\"0660\"" | sudo tee /etc/udev/rules.d/uinput.rules
echo uinput | sudo tee /etc/modules-load.d/uinput.conf
Linux 上的另一个微妙之处,在创建 KeyBondingInstance 之后,需要在运行第一个键盘动作之前等待 2 秒。
Darwin (MAC OS)
此库依赖于 Apple 的框架,我没有找到交叉编译的解决方案。
依赖项
~0–410KB