Androidをマウスで操作したときのMotionEventのメモ

API Level 14 から MotionEvent#getButtonState() でどのボタンが押されたか取得できる。
ボタンを押して、マウスを移動して、ボタンを放したときのイベント。

操作 action buttonState
左ボタンを押す ACTION_DOWN BUTTON_PRIMARY
マウス移動 ACTION_MOVE BUTTON_PRIMARY
左ボタンを放す ACTION_UP 0

2つのボタンを同時に押したときのイベント。2つ押してもACTION_DOWNとACTION_UPは1回だけ。

操作 action buttonState
左ボタンを押す ACTION_DOWN BUTTON_PRIMARY
右ボタンを押す ACTION_MOVE BUTTON_PRIMARY+BUTTON_SECONDARY
マウス移動 ACTION_MOVE BUTTON_PRIMAR+BUTTON_SECONDARY
左ボタンを放す ACTION_MOVE BUTTON_SECONDARY
右ボタンを放す ACTION_UP 0

マウスのhoverなどは API Level 12 から、View#setOnGenericMotionListener() が追加されているのでこれで捕まえられる。