2016-11-04 5 views
0

SDL 2で個のマウスをに扱うことは可能ですか?複数のマウスをSDL2で追跡できますか?

SDL_MOUSEBUTTONDOWN -eventでは、どのマウスを使用してもはゼロです。 (USBを介して私のOpenSuse maschineに2台のマウスが接続されています)

もしそうなら、どうすればいいですか?

+0

あなたは 'event.which 'を意味しましたか? event.buttonはオブジェクトではなくuint8であると表示されます – jhbh

+1

[SDL wiki](http://wiki.libsdl.org/CategoryMouse)は次のように述べています:これはデスクトップのGUIという概念で "マウス"についてのみ説明しています。あなたは(通常は)1つのシステムカーソルを持ち、OSはハードウェアの詳細を隠します。 ** 10個のマウスを接続すると、すべてのカーソルが1つのカーソルを移動します。**多くのアプリケーションやゲームでは、これは完璧です。このAPIは、生まれてから数百ものSDLプログラムに役立ちました。 。 – mindriot

+0

心配ありがとうございます。あなたがしたい場合は、これを回答として投稿することができます。 – user1511417

答えて

2

The SDL wikiは言う:

これが唯一のデスクトップGUIの概念と「マウス」を論じていることに注意してください。あなたは(通常は)1つのシステムカーソルを持ち、OSはハードウェアの詳細を隠します。 10匹のマウスを接続すると、10匹すべてがその1匹のカーソルを動かす。多くのアプリケーションやゲームではこれが完璧です。このAPIは、誕生以来数百ものSDLプログラムに対応しています。

少なくとも平凡なSDLを使用すると、あなたは運が悪いようです。あなたがLinuxにいるので(おそらくXorgを使用しています)、xinputが複数の入力をどのように処理するかを調べることができます。 source code for testing XI2 eventsが特に有用である可能性がある。例えば

は、私のマシン上でxinputは、デバイスの全体の束を示しています

$ 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 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は、あなた自身の仕組みを実装するための正しい軌道に乗るかもしれません。

関連する問題