2011-08-08 59 views
1

所以我有以下的代碼,偵聽keydown事件,然後只要它接受一個退出:SDL左控制鍵被釋放時keydown事件被觸發

int main(int argc, char** argv) { 
    SDL_Init(SDL_INIT_VIDEO); 
    SDL_Surface* screen = SDL_SetVideoMode(640, 480, 32, SDL_DOUBLEBUF); 
    SDL_Event _event; 
    while (1) { 
     while (SDL_PollEvent(&_event)) { 
      if (_event.type == SDL_KEYDOWN) { 
       return 0; 
      } 
     } 
     SDL_GL_SwapBuffers(); 
    } 
} 

當我運行它,我可以按任意箭頭鍵,字母,數字,F1-F12 ...除了左側控制鍵外,幾乎可以使用任何按鍵,程序將立即退出。
但是當我按下左控制鍵,程序不會退出,直到我發佈的關鍵。

雖然示例沒有顯示它,但在按住左控制按鈕時(例如ctrl + s)按下另一個按鍵會導致丟失控件keydown事件(以及第二個事件「 s'被按下)。

有什麼辦法可以禁用左控制鍵這種奇怪的行爲?

順便說一句,這是在Windows上使用mingw。我還沒有用任何其他編譯器/操作系統測試過這種行爲。

+0

您是否試過[SDL_WM_GrabInput](http://sdl.beuc.net/sdl.wiki/SDL_WM_GrabInput)? –

+0

@Banthar我試過了,但它所做的只是捕捉鼠標。 – Ponkadoodle

回答

1

所以事實證明,我忘記把sdl.dll放到與我的可執行文件相同的目錄中。它正在加載一些其他的sdl.dll,碰巧在路徑環境變量上。我將與我編譯版本(1.2.14)匹配的sdl.dll放到我的應用程序目錄中,現在它工作正常。