2008-09-24 3 views
5

우선, 나는 약 this question에 대해 알고 있지만, 나는 그 이상의 정보를 찾고 있습니다. 실제로 마우스/키보드/조이스틱에 대한 입력을 캡처 할 수 있어야한다는 점에서 상당히 유사한 문제가 있습니다. 가능하다면 SDL도 피하고 싶습니다. 나는 Linux의 장치에서 입력을 처리 할 때 몇 가지 훌륭한 프라이머를 얻을 수있는 곳을 알고있는 사람이 있는지 궁금해했습니다. SDL은 플랫폼 간 입력 처리에 매우 효과적이지만 SDL의 다른 기능은 사용하지 않을 것이므로 전체를 자르고 싶습니다. 제안, 의견 및 도움은 모두 평가됩니다. 감사! 선명도리눅스에서 입력 캡처

편집 :

포인트는 마우스 동작, 키보드를 눌러/해제, 마우스 클릭을 캡처하고 잠재적으로 게임을 처리 조이스틱하는 것입니다. 당신은 그냥 재미로 (또는 학교 프로젝트를 위해 그것을하지 않는

+0

이 질문은 꽤 광범위하다고 생각합니다. 입력 장치에 직접 이야기 하시겠습니까? (일반적으로 고급 응용 프로그램에는 좋지 않은 아이디어입니다.) X? (X라면 Xlib, XCB, Gtk +, Qt, ...) 콘솔 모드에서 마우스 GPM을 원하십니까? – asveikau

답변

5

무효 kGUISystemX :: 루프 (무효)

이 리눅스에서 X 윈도우를 사용하여 키보드와 마우스를 통해 입력을 받고 내 메인 루프입니다.

if(XPending(m_display)) 
    { 
     XNextEvent(m_display, &m_e); 
     switch(m_e.type) 
     { 
     case MotionNotify: 
      m_mousex=m_e.xmotion.x; 
      m_mousey=m_e.xmotion.y; 
     break; 
     case ButtonPress: 
      switch(m_e.xbutton.button) 
      { 
      case Button1: 
       m_mouseleft=true; 
      break; 
      case Button3: 
       m_mouseright=true; 
      break; 
      case Button4:/* middle mouse wheel moved */ 
       m_mousewheel=1; 
      break; 
      case Button5:/* middle mouse wheel moved */ 
       m_mousewheel=-1; 
      break; 
      } 
     break; 
     case ButtonRelease: 
      switch(m_e.xbutton.button) 
      { 
      case Button1: 
       m_mouseleft=false; 
      break; 
      case Button3: 
       m_mouseright=false; 
      break; 
      } 
     break; 
     case KeyPress: 
     { 
      XKeyEvent *ke; 
      int ks; 
      int key; 

      ke=&m_e.xkey; 
      kGUI::SetKeyShift((ke->state&ShiftMask)!=0); 
      kGUI::SetKeyControl((ke->state&ControlMask)!=0); 
      ks=XLookupKeysym(ke,(ke->state&ShiftMask)?1:0); 
...... 
1

This Tutorial를 읽고 있지만 읽어 시작할 수는는 거의 없습니다 또는 무엇이든)

그래픽 응용 프로그램 (X11 그래픽 환경에서 실행되는 응용 프로그램)을 작성하는 경우 그래픽 툴킷 (또는 원시 X) 입력 드라이버를 사용할 수 있습니다.

텍스트 모드 클라이언트를 작성하는 경우 readline 또는 ncurses을 사용하는 것이 좋습니다.

2

프로젝트가 Linux (Windows 또는 BSD가 아닌)에서만 실행된다는 것을 알고 있다면 Linux 커널의 입력 시스템을 조사해야합니다. kernel source을 다운로드하고 Documentation/input/input.txt, 특히 evdev 시스템의 설명을 읽으십시오.

훨씬 더 높은 수준의 (더 이식 가능한) 솔루션 인 read up on Xlib. 분명히 실행중인 X 서버가 필요하지만 사용자의 키보드 설정을 상속하는 이점이 있습니다. 조이스틱 이벤트는 불행히도 포함되지 않았으므로 아마 커널 조이스틱 API를 사용해야 할 것입니다. 기능 봐 아래의 링크를 사용하여

관련 문제