rust - headless SDL 事件处理

标签 rust sdl sdl-2

是否可以在不创建窗口的情况下使用 SDL 监听系统中的事件? 我希望我的应用监听系统中的事件,当按下某些快捷方式时,我将创建一个具有实际 UI 的窗口。

extern crate sdl2;

fn main() {
    let ctx = sdl2::init().unwrap();

    let mut event_pump = ctx.event_pump().unwrap();

    event_pump.pump_events();

    for event in event_pump.wait_iter() {
        match event {
            _ => { print!("event") }
        }
    }
}

如果这不可能,是否有一种跨平台的方式来监听全局快捷方式,或者我必须自己为每个平台重新实现它?

最佳答案

我有类似的情况(需要在不创建窗口的情况下抽取/处理事件)并且根据我从研究 SDL2 源代码中了解到的情况,目前无法在没有初始化视频系统的情况下抽取事件(至少在版本 2.0.4 中) ).

请参阅http://hg.libsdl.org/SDL/file/e12c38730512/src/events/SDL_events.c (我使用的是 SDL 2.0.4),函数 SDL_PumpEvents,第 397-402 行。该代码检查视频系统是否已初始化,以及它是否为该窗口系统调用了 PumpEvents 方法(我想它为 X11/Wayland/etc 调用了适当的实现)。

关于rust - headless SDL 事件处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37350854/

相关文章:

c++ - SDL 混合导致不正确的帧插值

c - 如何使用 SDL 在乘法模式下位图传输图像?

c++ - Sprite 旋转偏移不会停留在它所属的位置。 (SDL)

rust - 在 sdl2 0.31.0 中找不到函数 `get_platform`

C++ 和 SDL 2 - 创建一个仅包含常量的 header :对 Constants::window 的 undefined reference

c - SDL 物理键码和 SDL 虚拟键码有什么区别?

rust - 从 Rust 中的元组内的自有盒子中借用

rust - 如何在 Wasm (Rust) 中访问 JS 对象属性?

regex - RE2 (Rust) 正则表达式不能按预期工作

rust - 如何为我不拥有的类型实现我不拥有的特征?