13个不稳定版本
0.7.0 | 2024年1月16日 |
---|---|
0.6.2 | 2022年11月7日 |
0.6.1 | 2022年5月7日 |
0.6.0 | 2021年7月2日 |
0.5.2 | 2021年2月28日 |
#124 在 Unix API
每月21次下载
用于 3 crates
200KB
4.5K SLoC
胖控制器
TFC是一个模拟鼠标和键盘事件的库。这个库是为TFC-server(一个允许通过手机应用远程控制PC的服务器)开发的。
特性
- 鼠标点击
- 鼠标移动(相对和绝对)
- 鼠标滚动(支持平滑滚动的场合)
- 按键
- 将Unicode字符转换为按键
- 输入任意Unicode字符串
- 获取鼠标位置
- 获取屏幕大小
平台
- Linux - 与X11一起
- Linux - 不使用X11
- macOS
- Windows
用法
将以下内容添加到您的Cargo.toml
[dependencies]
tfc = "0.7"
Linux
Linux有两种实现,一种使用X11,另一种仅依赖于Linux内核。不使用X11的实现缺少一些功能。它旨在用于Wayland,但与X11相比,Wayland更受限制,因此缺少一些功能。
默认情况下(启用check-x11
功能),将进行构建时X11检测以确定使用哪个实现。禁用默认功能将禁用此检查,并无条件使用Wayland实现。可以使用x11
功能无条件选择X11实现。
使用X11
在使用X11实现之前,需要安装X11、XTest和xkbcommon开发库。使用apt
,可以使用以下片段。
sudo apt install libx11-dev libxtst-dev libxkbcommon-dev
不使用X11
非X11实现(在代码库中称为Wayland)使用/dev/uinput
。在可以使用它之前,TFC需要权限写入设备。要临时授予权限(直到下一次重启),请使用以下片段。
sudo chmod +0666 /dev/uinput
要永久授予权限,请使用以下片段。
# Create a group
sudo groupadd -r uinput
# Add yourself to the group
sudo usermod -aG uinput $USER
# Give the group permissions to use the uinput kernel module
echo 'KERNEL=="uinput", MODE="0660", GROUP="uinput", OPTIONS+="static_node=uinput"' \
| sudo tee /etc/udev/rules.d/60-tfc.rules
如果立即没有效果,请使用以下片段。如果所有其他方法都失败,请重启。
udevadm control --reload-rules && udevadm trigger
要撤销权限,请使用以下代码片段。
sudo rm /etc/udev/rules.d/60-tfc.rules
示例
use tfc::{Context, Error, traits::*};
use std::{f64::consts::PI, thread, time::Duration};
fn main() -> Result<(), Error> {
let radius = 100.0;
let steps = 200;
let revolutions = 3;
let delay = Duration::from_millis(10);
let mut ctx = Context::new()?;
let center = ctx.cursor_location()?;
let center = (center.0 as f64 - radius, center.1 as f64);
for step in 0..steps * revolutions {
thread::sleep(delay);
let angle = step as f64 * 2.0 * PI / steps as f64;
let x = (center.0 + radius * angle.cos()).round() as i32;
let y = (center.1 + radius * angle.sin()).round() as i32;
ctx.mouse_move_abs(x, y)?;
}
Ok(())
}
依赖项
~0–1.5MB
~26K SLoC