Mouse

class psychopy.event.Mouse(visible=True, newPos=None, win=None)

マウスの状態を取得するクラスである。これはクラスである必要はないが、ジョイスティックはクラスとした方が良いので統一するためにクラスとした。

Mouseオブジェクトを作成する前にWindowオブジェクトを作成しておくこと。

パラメータ 解説
visible TrueかFalse。マウスカーソルを表示するか否かを指定する。
newPos NoneまたはX座標,Y座標を並べたシーケンス。初期化時のマウスカーソル位置を指定する。 (訳注:原文ではpygameバックエンドのみと書かれているがpygletに対応済みである)
win マウスを割り当てるWindowオブジェクトを指定する。Noneならば最初に見つかったPsychoPy Window に割り当てる。

clickReset(buttons=(0, 1, 2))

各ボタンに割り当てられたストップウォッチをリセットする。

引数として、リセットするボタンを表すインデックス(0, 1, 2)を並べたシーケンスを渡すことが出来る。省略すると全てリセットされる。

getPos()

現在のマウスカーソルの座標を返す。単位はWindowオブジェクトに設定されたものに従う。(0, 0)がウィンドウの中心である。

getPressed(getTime=False)

ボタン0, 1, 2が押されているか否かを要素数3のリストとして返す。

引数getTime=Trueが渡された場合、ボタン押しの状態を表すリストに加えて、clickResetを実行した時点を0.0秒として各ボタンが最後に押されたタイムスタンプを並べたリストを返す。

buttons = mouse.getPressed()
buttons, times = mouse.getPressed(getTime=True)

刺激のオンセット時にclickReset()を実行しておくと、この刺激に対するボタン押し反応がおこなわれた時、この戻り値から反応時間を得ることが出来る。この値はいつgetPressed()を実行するかに関わらず、実際の反応時間を表している。

(訳注:この部分はかなり「意訳」している。ここで述べられているのは、引数getTime=Trueを指定したときに得られるタイムスタンプが「リセットしてからgetPressed()を実行するまでの時間」ではなく、実際に「リセットしてからボタンが押されるまでの時間」だということである。この値はMouseオブジェクトの内部で保持されていて、getPressedは保持されている値を得るだけである。したがって、getPressedの実行が実際にボタンが押された時刻よりかなり後であったとしても、正しい反応時間が得られる。自前でpsychopy.core.Clockオブジェクトを作成して、getPressedでボタン押しを検出した直後にClockオブジェクトのgetTimeを実行して反応時間を測ろうとするコードと比べてみると良い。)

getRel()

最後にgetRel()またはgetPos()を実行した時点からの相対的なマウスカーソルの位置を返す。単位はWindowオブジェクトに設定されたものに従う。

getVisible()

マウスカーソルを表示するように設定されているか否かを返す。表示なら1、非表示なら0である。

getWheelRel()

最後にgetWheelRel()が実行された時点からの相対的なホイールの回転量を返す。戻り値は要素数2のNumPyのarrayオブジェクトだが、2軸の回転を取得できるのはその機能を持つマウスのみに限る。

isPressedIn(shape, buttons=(0, 1, 2))

引数shapeに指定した視覚刺激オブジェクトにマウスカーソルが重なった状態でボタンが押されていればTrue、いなければFalseを返す。デフォルトでは3ボタンのいずれかが押されていればTrueとなる。ボタンを制限する場合は引数buttonsを用いて指定する。

if mouse.isPressedIn(shape):
if mouse.isPressedIn(shape, buttons=[0]):  # 左ボタンのみ確認

視覚刺激オブジェクトはcontains()メソッドも持つものであればよい。

(訳注:原文では内容が古くてImageStimでテストされていないなどと書かれているが、現在のバージョンはcontains()を持つ視覚刺激オブジェクトすべてで問題なく動作するはずである)

mouseMoveTime()

(訳注:原文ではこの項目は空欄である。mouseMoved()参照。)

mouseMoved(distance=None, reset=False)

マウスカーソルが動いたか、どれだけ大きく動いたかを判定する。

引数が省略された場合、最後にgetPos()が実行されてからマウスカーソルが動いていればTrueを返す。 引数distanceに整数または浮動小数点数が指定された場合、最後にgetPos()を実行した位置から指定した距離だけマウスカーソルが離れていればTrueを返す(訳注:X, Y方向の距離を別々に指定することも可能だが、符号の扱いに疑問があるので興味がある方はソースコードを読んでいただきたい。ここでは原文のこの指定法に関する訳は省略する)。

最後の動きの時間はself.mouseClock.getTime()から得られる(訳注:恐らく間違いと思われる。mouseMoveTime()がここで述べられている動作に近いと訳者は思うが、mouseMoveTime()で正しいかは確証がない)。

resetは’here’または座標(X,Y)のいずれかで、その位置から移動したかどうかを計測することが出来る。引数resetに座標(X,Y)を指定して引数distanceを指定した場合、(X,Y)の位置を動き判定の基準点として登録した後に、現在のマウスカーソル位置との距離が判定される(訳注:原文のこの段落の後半はMouseオブジェクトの内部変数に言及するなど、ユーザー向けというよりは開発者向けのメモと言うべき内容と思われる。なお、ソースコードを読むとresetにTrueを指定することも可能で、この場合はmouseMoveTime()で得られる時刻を0.0にリセットする)。

setExclusive(exclusivity)

マウスカーソルの移動範囲を割り当てられたウィンドウに制限する。Pygletバックエンドでのみ有効である。

マルチモニター環境や、(フルスクリーンウィンドウではない)通常のウィンドウでは、マウスカーソルはウィンドウ外へ移動可能である。ウィンドウ外にカーソルがあると、PsychoPyのウィンドウはイベントを受け取れなくなる。setExclusive(True)とするとこれらの状況でマウスカーソルがウィンドウ外へ出ないようにすることが出来る。

マウスカーソル移動範囲をウィンドウ内に制限することによってカーソルが消失し、絶対位置は意味を成さなくなる点に注意。この場合、getPos()は[0,0]を返す。

setPos(newPos=(0, 0))

マウスカーソルの位置を指定する。単位はWindowオブジェクトのものに従う。(0, 0)が中心である。

setVisible(visible)

マウスカーソルを表示するか否かを指定する。表示するならvisible=1、しないなら0である。

マウスカーソルが非表示のときは、マウスカーソルが画面外へ移動して見失われてしまわないように絶対位置は(0, 0)に保たれる。このような場合でもgetRel()は有効である。

units

Mouseオブジェクトが使用する単位である。割り当てられたWindowオブジェクトの単位と一致する。