ROOT/Canvas 上のマウス・キーボード入力
TCanvas オブジェクト上でのマウスクリックや、キー入力に反応してルーチンを実行させたい。
ProcessedEvent() signal
TCanvas クラスには、マウス入力やキーボード入力に応じて発生する、
ProcessedEvent(Int_t,Int_t,Int_t,TObject*) というシグナルが用意されています。
よって、(Int_t,Int_t,Int_t,TObject*) という引数を持った関数を用意して、TCanvas オブジェクトの ProcessedEvent と Connect することで、Canvas 上で入力があるとその関数が呼び出されるようになります。
一つ目の引数 Int_t event は、イベントの種類を表していて、kButton1Down (クリック)、kButton1Double (ダブルクリック)、kButton3Down (右クリック)、kWheelDown (マウスホイールダウン)、kWheelUp (マウスホイールアップ)、kButton1Shift (Shift + クリック)、kKeyPress (キー入力) などが定義されています。
2つ目、3つ目の引数は、マウスカーソルの位置px, pyを表しています。ただし、これは Canvas 上の pixel 数になっているので、X軸、Y軸の値が欲しい時は注意が必要です。Float_t TPad::AbsPixeltoX(Int_t) を使うなどする必要があります。
event が kKeyPress の場合は、px、py にはキーを表す番号が入ります。
Key | px | py |
A(Capital) | 65 | 65 |
Z(Capital) | 90 | 90 |
a(Small) | 97 | 97 |
z(Small) | 122 | 122 |
0 | 48 | 48 |
9 | 57 | 57 |
space | 32 | 32 |
Ctr + a | 1 | 65 |
Ctr + z | 26 | 90 |
enter | 13 | 4100 |
shift | 0 | 4128 |
ctr | 0 | 4129 |
tab | 0 | 4097 |
← | 0 | 4114 |
↑ | 0 | 4115 |
→ | 0 | 4116 |
↓ | 0 | 4117 |