rust Bevy / Winit -无焦点的打开GUI

2cmtqfgy  于 2022-11-12  发布在  其他
关注(0)|答案(1)|浏览(138)

我在Bevy中编写了各种图形测试,每个测试都会生成GUI,运行几秒钟,然后退出应用程序,进入下一个测试。
我喜欢能够直观地检查它在做什么,我认为,但当每一个启动它窃取了VS代码的焦点。这意味着我不能编码,而测试正在运行,或使用一个'热重载'工作流。
我知道Bevy在引擎盖下使用Winit,但是在bevy pluginWinit source中找不到任何关于打开一个没有焦点的窗口,或者一旦打开就放弃焦点的东西。
我的理想解决方案是在WindowDescriptor中进行简单设置:

App::new()
  .insert_resource(WindowDescriptor {

    // this would be awesome
    open_without_focus:true, 

    ..Default::default()
    })
  .run()

注意事项:

  • 我使用的是Windows 11,但如果有一个独立于平台的解决方案,那就太好了。
  • 我已经尝试了各种各样的总是在顶部的解决方案,如PowerToys,但这并不有助于重点。
xzlaal3s

xzlaal3s1#

虽然不是很理想,但我发现用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()
}

相关问题