我正在使用inputbot编写一个程序,为我的计算机提供一些全局宏.例如,当我按下h键时,它应该执行宏输入
你好,世界
进入当前的应用程序.我试图像这样实现它:
extern crate inputbot;
fn main() {
let mut callback = || {
inputbot::KeySequence("Hello World").send();
};
inputbot::KeybdKey::HKey.bind(callback);
inputbot::handle_input_events();
}
Run Code Online (Sandbox Code Playgroud)
然而,当我按下h键时我实际得到的是:
hHHHHHHHHHHHHHHHHHHHHHHHHHEHEHhEhEEHHhEhEhEHhEHHEHHEEHhEHlhEHEHHEHLEHLHeeleleelelelllelelleelehlhehlleeheehelheelleeleelhllllllellelolelellelleoleloloelellololol olollollelllolllol lloo醇○◎升LO lolooloooloo厕所LOWOLO OL OLW WOWO大号WLLOLOW LOOOOöWOWW低öoOow WWW WOW wowooWWWO oOWRWOoorW¯¯行oOWorororWRRWLR rLROwoRWLWOworo WorrrRWl流öWRLR OLWöOWLDol rollWWLDWowDLlroWWořoWDWOL dorRrwrolrdrrorlrLWDRdodRLowdllrllolrdlrddolrdlrldowldorowlrdlrorloLDLWDLoddlrddlrdldldldrrdordldrlrddrodlrrldoldlrlddldlrdlldlrdlddrlddldddlddlddd
每次发送h密钥事件时,宏都会触发它自己.
如何Fn在另一个实例仍在运行时阻止再次调用?这是小型应用程序的主要功能,因此没有什么可以真正担心兼容性.
我天真地尝试修复此问题是添加一个mut running变量main,在运行时callback设置为true,或者immediately如果已经为真则返回:
extern crate inputbot;
use std::time::Duration;
use std::thread::sleep;
fn main() {
let mut running = false;
let …Run Code Online (Sandbox Code Playgroud)