我正在Bevy中编写各种图形测试。每一个都会生成GUI,运行几秒钟,然后退出应用程序并进入下一个应用程序。
我喜欢能够直观地检查它在做我想做的事情,但当每次启动时,它都会从VS代码中窃取焦点。这意味着我不能在测试运行时进行编码,也不能使用"热重新加载"工作流。
我知道Bevy在后台使用Winit,但在Bevy插件或Winit源代码中找不到任何关于打开无焦点窗口或打开后放弃焦点的内容。
我的理想解决方案是在WindowDescriptor
:中进行简单设置
App::new()
.insert_resource(WindowDescriptor {
// this would be awesome
open_without_focus:true,
..Default::default()
})
.run()
几个注意事项:
- 我使用的是Windows 11,但如果有一个与平台无关的解决方案,那就太好了
- 我尝试过各种"永远在顶端"的解决方案,比如PowerToys,但这对集中注意力没有帮助
不理想,但我发现用enigo调用Alt+Escape
总比什么都没有好:
use enigo::*;
pub fn surrender_focus(){
let mut enigo = Enigo::new();
enigo.key_down(Key::Alt);
enigo.key_click(Key::Escape);
enigo.key_up(Key::Alt);
}
fn main(){
App::new()
.add_startup_system(surrender_focus)
.run()
}