2016-11-04 4 views
0

두 개의 마우 즈를 SDL 2를 통해으로 처리 할 수 ​​있습니까?SDL2로 두 대 이상의 마우스를 추적 할 수 있습니까?

SDL_MOUSEBUTTONDOWN -event에서 어떤 마우스를 사용하든 event.button.which은 0입니다. (USB를 통해 OpenSuse maschine에 두 개의 마우스가 연결되어 있습니다.)

그렇다면 어떻게 할 수 있습니까?

+0

'event.which'를 의미합니까? event.button은 객체가 아닌 uint8 인 것으로 보입니다. – jhbh

+1

[SDL 위키] (http://wiki.libsdl.org/CategoryMouse)는 다음과 같이 말합니다. _ 여기에는 "마우스"에 대해 데스크탑 GUI 개념 만 설명합니다. 일반적으로 시스템 커서는 하나이며, OS는 하드웨어 정보를 숨 깁니다. ** 10 개의 마우스를 연결하면 모든 커서가 하나의 커서를 움직입니다. ** 많은 응용 프로그램과 게임에서이 API는 완벽하며이 API는 출생 이후 수백 개의 SDL 프로그램을 지원해 왔습니다 ._ 운이 좋지 않은 것처럼 보입니다. . – mindriot

+0

mindriot 고맙습니다. 원하는 경우 답변으로 게시 할 수 있습니다. – user1511417

답변

2

The SDL wiki는 말한다 :

이 만 데스크톱 GUI의 개념으로 "마우스"를 설명 있습니다. 일반적으로 시스템 커서는 하나이며, OS는 하드웨어 정보를 숨 깁니다. 10 마리의 마우스를 연결하면 모든 10 명이 하나의 커서를 움직입니다. 많은 응용 프로그램과 게임에서 이것이 완벽합니다.이 API는 탄생 이후 수백 개의 SDL 프로그램을 제공했습니다.

적어도 평범한 SDL을 사용하면 운이 좋지 않은 것처럼 보입니다. 리눅스를 사용하고 있기 때문에 Xorg를 사용하고 있기 때문에 xinput이 다중 입력을 처리하는 방법을 살펴볼 수 있습니다. source code for testing XI2 events이 특히 유용 할 수 있습니다.

$ xinput 
⎡ Virtual core pointer      id=2 [master pointer (3)] 
⎜ ↳ Virtual core XTEST pointer    id=4 [slave pointer (2)] 
⎜ ↳ Logitech USB-PS/2 Optical Mouse   id=11 [slave pointer (2)] 
⎜ ↳ SynPS/2 Synaptics TouchPad    id=14 [slave pointer (2)] 
⎜ ↳ TPPS/2 IBM TrackPoint      id=16 [slave pointer (2)] 
⎣ Virtual core keyboard      id=3 [master keyboard (2)] 
    ↳ Virtual core XTEST keyboard    id=5 [slave keyboard (3)] 
    ↳ Power Button        id=6 [slave keyboard (3)] 
    ↳ Video Bus         id=7 [slave keyboard (3)] 
    ↳ Video Bus         id=8 [slave keyboard (3)] 
    ↳ Sleep Button        id=9 [slave keyboard (3)] 
    ↳ Integrated Camera       id=10 [slave keyboard (3)] 
    ↳ HID 046a:0011        id=12 [slave keyboard (3)] 
    ↳ AT Translated Set 2 keyboard    id=13 [slave keyboard (3)] 
    ↳ ThinkPad Extra Buttons     id=15 [slave keyboard (3)] 

내가 다음 (예 : 내 USB 마우스) 하나의 장치에 대한 이벤트를 얻기 위해 test-xi2 명령을 사용할 수 있습니다 같은 : 예를 들어

, 내 컴퓨터에 xinput는 장치의 전체 무리를 보여줍니다

$ xinput test-xi2 11 
... 
EVENT type 17 (RawMotion) 
device: 11 (11) 
detail: 0 
valuators: 
flags: 
     0: -5.25 (-3.00) 
     1: 12.75 (8.00) 
... 

이렇게하면 내 마우스로 인한 포인터 이동 만 출력되지만 예를 들어 발생하는 포인터 움직임은 출력되지 않습니다. 트랙 패드로. xinput이 옵션 인 경우, source code은 올바른 방법으로 자신의 메커니즘을 구현할 수 있습니다.