SDL2 没有在终端按键上触发?

问题描述 投票:0回答:1

我目前在 Rust 应用程序中使用 sdl2 (0.35.2) 来检测关键事件,但它似乎只触发 Event::Quit 而没有其他。我有一个像这样的非常简单的例子

use sdl2;
use sdl2::event::Event;
use sdl2::keyboard::Keycode;

fn main() {

    let sdl_context = sdl2::init().unwrap();
    let mut event_pump = sdl_context.event_pump().unwrap();

    'event_loop:loop {
        for event in event_pump.poll_iter() {
            match event {
                Event::Quit { .. } => {
                    println!("Quit"); break 'event_loop;
                },
                Event::KeyDown { keycode:Some(Keycode::Escape), .. } => {
                    println!("Escape"); break 'event_loop;
                },
                Event::KeyDown { .. } => {
                    println!("KeyDown Triggered");
                },
                _ => {}
            }
        }
    }

}

但是两个 Event:KeyDown 匹配都不会触发,只能通过

Ctrl+C
获取 Event::Quit 来触发。我正在 Debian 的基本终端中执行此操作。

rust sdl-2 keyboard-events
1个回答
0
投票

所有SDL2后端需要创建一个

SDL_Window
来接收输入事件;他们不处理控制台/终端输入。

SDL 1.2 有 back-endsAAliblibcaca 但看起来他们没有将它移植到 SDL2 :(

选项:

  • 创建一个窗口。
  • 回到 SDL 1.2.
  • 将 SDL 1.2 的 AAlib/libcaca 后端移植到 SDL2。
© www.soinside.com 2019 - 2024. All rights reserved.