2016-05-20 12 views
1

ウィンドウを作成せずにSDLを使用してシステム内のイベントをリスンすることはできますか? 私は自分のアプリがシステム内のイベントを聴きたいと思っています。特定のショートカットを押すと、実際のUIでウィンドウを作成します。これが不可能な場合ヘッドレスSDLイベント処理

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") } 
     } 
    } 
} 

、グローバルショートカットをリッスンするためのクロスプラットフォームな方法はありますか私はすべてのプラットフォームに自分のためにそれを再実装する必要がありますか?

+0

なぜsdl-2が必要ですか?また、ビルドしたいものが重要なロガーとして誤用される可能性があります。 – llogiq

+0

システム全体のショートカットイベントを購読するのに何かを使うのはうれしいでしょう。私もobvioulyより新しいので、私はsdl2をchoseしかし、私はsdl1で欲しいものを行う方法があれば私は喜んで交換するだろう –

答えて

1

私は同様の状況(ウィンドウを作成せずにイベントをポンピング/処理する必要があります)と、私がSDL2ソースを勉強して理解したことから、ビデオシステムを初期化することなくイベントをポンピングすることは現在不可能です。 4)。

http://hg.libsdl.org/SDL/file/e12c38730512/src/events/SDL_events.c(私はSDL 2.0.4を使用)、機能SDL_PumpEvents、行397-402を参照してください。そのコードは、ビデオシステムが初期化されているかどうかをチェックし、そのウィンドウシステムのPumpEventsメソッドを呼び出したかどうかをチェックします(X11/Wayland /などの適切な実装を呼び出すと仮定します)。

+0

そして、私はビデオサブシステムを作成する場合でも、私はイベントを聞くことができる関連するウィンドウに属しているのでしょうか? –

+0

@YurySolovyov SDLソースのより徹底的な勉強が必要なので、私は今話すことができません。 – user2207361