2013-02-03 80 views
0

我正在開發一個代碼以在KeyPress和KeyRelease事件中獲取鍵盤輸入,但是當我運行該程序時什麼都沒有發生,我的代碼出了什麼問題?如何獲得按鍵值?嘗試在Ubuntu Linux中構建全局鍵盤鉤子時出錯

void hook() 
{ 
    forever 
    { 
     XEvent event; 
     Display *dpy = XOpenDisplay(NULL); 
     XNextEvent(dpy, &event); 
     switch (event.type) 
     { 
     case KeyPress: 
      qDebug() << "keypress"; 
      break; 
     case KeyRelease: 
      qDebug() << "keyrelease"; 
      break; 
     } 
    } 
} 

回答

1

瞭解更多關於keyboard X11 events。如果該窗口在其event mask中設置了一些KeyPressMaskKeyReleaseMask位,則只能從某些X11窗口獲取它們。那個窗口應該是createdInputOnlyInputOutput

你顯然是用Qt(這是個好主意)。然後,堅持Qt key事件。

(如果你想趕上所有X11關鍵事件,使用顯示器的根窗口但後來你與你的窗口管理器,這是一個壞主意干擾;瞭解ICCCMEWMH

此外,在終端中運行xev以瞭解有關X11事件的更多信息