Bevy/Winit-无焦点打开GUI



我正在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()
}

相关内容

  • 没有找到相关文章

最新更新