Next: , Previous: , Up: Input Events   [Contents][Index]


20.7.4 クリックイベント

ユーザーが同じ場所でマウスボタンを押してからリリース(release: 離す)すると、clickイベントが生成されます。すべてのマウスクリックイベントは同じフォーマットを共有します:

(event-type position click-count)
event-type

これはマウスボタンが使用されたことを示す。これはシンボルmouse-1mouse-2、…のうちのいずれかで、マウスボタンは左から右に番号が付される。

ファンクションキーにたいして行うのと同様にアルト、コントロール、ハイパー、メタ、シフト、スーパーの修飾にたいしてプレフィクス‘A-’、‘C-’、‘H-’、‘M-’、‘S-’、‘s-’も使用できる。

このシンボルはイベントのイベント型としての役割りももつ。イベントのキーバインディングはこれらの型により示される。したがってmouse-1にたいするキーバインディングが存在すれば、そのバインディングはevent-typemouse-1であるようなすべてのイベントに適用されるだろう。

position

これはマウスクリックがどこで発生したかを表すマウス位置リスト(mouse position list)である。詳細は以下を参照のこと。

click-count

これは同じマウスボタンを素早く繰り返し押下したときの回数である。Repeat Eventsを参照のこと。

クリックイベントのpositionスロット内にあるマウス位置リストの内容にアクセスするためには、一般的にはAccessing Mouseに記述された関数を使用するべきです。このリストの明示的なフォーマットはどこでクリックが発生したかに依存します。テキストエリア、モードライン、ヘッダーライン、フリンジ、マージンエリアでのクリックにたいしてマウス位置リストは以下のフォーマットをもちます

(window pos-or-area (x . y) timestamp
 object text-pos (col . row)
 image (dx . dy) (width . height))

以下はこれらのリスト要素がもつ意味です:

window

クリックが発生したウィンドウ。

pos-or-area

テキストエリア内でクリックされた文字のバッファー位置。またはテキストエリア外がクリックされたなら、クリックが発生したウィンドウエリア。これはシンボルmode-lineheader-linevertical-lineleft-marginright-marginleft-fringeright-fringeのいずれか。

特別なケースの1つとしてpos-or-areaが単なるシンボルではなく、(上記シンボルのいずれか1つの)シンボルを含むリストのような場合がある。これはEmacsにより登録されたイベントにたいする、イマジナリープレフィクスキー(imaginary prefix key)の後に発生する。Key Sequence Inputを参照のこと。

x, y

クリックの相対ピクセル座標(relative pixel coordinates)。あるウィンドウのテキストエリア内でのクリックにたいする座標原点(0 . 0)は、テキストエリアの左上隅となる。Window Sizesを参照のこと。モードラインやヘッダーライン内でのクリックにたいする座標原点は、そのウィンドウ自身の左上隅となる。フリンジ、マージン、垂直ボーダー(vertical border)ではxは有意なデータをもたない。フリンジ、マージンではyはヘッダーラインの最下端からの相対位置である。すべてのケースにおいてxyの座標はそれぞれ右方向と下方向で増加する。

timestamp

そのイベントが発生した時刻をシステム依存の初期時刻(initial time)からの経過ミリ秒で表す整数。

object

クリック位置に文字列タイプのテキストプロパティが存在しなければnil、存在すれば(string . string-pos)形式のコンスセル:

string

クリックされた文字列。すべてのテキストプロパティを含む。

string-pos

クリックが発生した文字列内の位置。

text-pos

マージンエリアまたはフリンジにたいするクリックでは、そのウィンドウ内の対応する行内の最初の可視な文字のバッファー位置となる。他のイベントにたいしては、そのウィンドウ内のカレントバッファーの位置となる。

col, row

これらはxyの位置にあるグリフ(gliph)の実際の行と列の座標数値である。行xがその行の実際のテキストの最後の列を超えるなら、colはデフォルトの文字幅をもつ仮想的な追加列数を加えた値が報告される。そのウィンドウがヘッダーラインをもつなら、行0はヘッダーラインとなり、ヘッダーラインをもたなければテキストエリアの上端ラインが行0となる。ウィンドウのテキストエリアのクリックにたいしては、テキストエリアの左端列が列0となり、モードラインまたはヘッダーラインのクリックにたいしてはそのラインの左端が列0となる。フリンジまたは垂直ボーダーのクリックにたいしては、これらは有意なデータをもたない。マージンのクリックにたいしては、colはマージンエリアの左端、rowはマージンエリアの上端から測られる。

image

これはクリックが発生した場所のイメージオブジェクトである。クリックされた場所にイメージが存在しなければnil、イメージがクリックされたらfind-imageによりリターンされるイメージオブジェクト。

dx, dy

これらはobjectの左上隅(0 . 0)からの相対的ピクセル座標である。objectnilなら、クリックされた文字グリフの左上隅からの相対座標。

width, height

これらはobjectのピクセル幅とピクセル高さであり、objectnilならクリックされた文字グリフのピクセル幅とピクセル高さ。

スクロールバーへのクリックにたいして、positionは以下の形式をもちます:

(window area (portion . whole) timestamp part)
window

スクロールバーがクリックされたウィンドウ。

area

これはシンボルvertical-scroll-barである。

portion

スクロールバーの上端からクリック位置までのピクセル数。GTK+を含むいくつかのツールキットでは、Emacsがこれらのデータを抽出できないので値は常に0

whole

スクロールバーの全長のピクセル数。GTK+を含むいくつかのツールキットでは、Emacsがこれらのデータを抽出できないので値は常に0

timestamp

イベントが発生したミリ秒時刻。GTK+を含むいくつかのツールキットでは、Emacsがこれらのデータを抽出できないので値は常に0

part

クリックが発生したスクロールバー部分。これはシンボルhandle(スクロールバーのハンドル)、above-handle(ハンドルの上側エリア)、below-handle(ハンドルの下側エリア)、up(スクロールバー端の上矢印)、down(スクロールバー端の下矢印)のいずれか。