Rin-memo

Personal Web Site of Rin Yokoyama

ROOT/Canvas 上のマウス・キーボード入力

Memo-ROOTへ戻る

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 にはキーを表す番号が入ります。

kKeyPress イベントの px, py 表
Keypxpy
A(Capital)6565
Z(Capital)9090
a(Small)9797
z(Small)122122
04848
95757
space3232
Ctr + a165
Ctr + z2690
enter134100
shift04128
ctr04129
tab04097
04114
04115
04116
04117

 

Memo-ROOTへ戻る