ユーザーが同じ場所でマウスボタンを押してからリリース(release: 離す)すると、clickイベントが生成されます。ウィンドウシステムがマウスホイールイベントを報告する方法に応じて、マウスホイールはマウスクリックかマウスホイールイベントを生成します。すべてのマウスイベントは同じフォーマットを共有します:
(event-type position click-count)
これはマウスボタンが使用されたことを示す。これはシンボルmouse-1
、mouse-2
、…のうちのいずれかで、マウスボタンは左から右に番号が付される。マウスホイールイベントならwheel-up
やwheel-down
かもしれない。
ファンクションキーにたいして行うのと同様にアルト、コントロール、ハイパー、メタ、シフト、スーパーの修飾にたいしてプレフィクス‘A-’、‘C-’、‘H-’、‘M-’、‘S-’、‘s-’も使用できる。
このシンボルはイベントのイベント型としての役割りももつ。イベントのキーバインディングはこれらの型により示される。したがってmouse-1
にたいするキーバインディングが存在すれば、そのバインディングはevent-typeがmouse-1
であるようなすべてのイベントに適用されるだろう。
これはマウスイベントがどこで発生したかを表すマウス位置リスト(mouse position list)である。詳細は以下を参照のこと。
これは同じマウスボタンを素早く繰り返し押下したときの回数、あるいはホイールを繰り返し回した回数である。リピートイベントを参照のこと。
マウスイベントのpositionスロット内にあるマウス位置リストの内容にアクセスするためには、一般的にはマウスイベントへのアクセスに記述された関数を使用するべきです。
このリストの明示的なフォーマットはどこでイベントが発生したかに依存します。テキストエリア、モードライン、ヘッダーライン、タブライン、フリンジ、マージンエリアでのクリックにたいしてマウス位置リストは以下のフォーマットをもちます
(window pos-or-area (x . y) timestamp object text-pos (col . row) image (dx . dy) (width . height))
以下はこれらのリスト要素がもつ意味です:
マウスイベントが発生したウィンドウ。
テキストエリア内でクリックされた文字のバッファー位置。またはテキストエリア外がクリックされたなら、イベントが発生したウィンドウエリア。これはシンボルmode-line
、header-line
、tab-line
、vertical-line
、left-margin
、right-margin
、left-fringe
、right-fringe
のいずれか。
特別なケースの1つとしてpos-or-areaが単なるシンボルではなく、(上記シンボルのいずれか1つの)シンボルを含むリストのような場合がある。これはEmacsにより登録されたイベントにたいする、イマジナリープレフィクスキー(imaginary prefix key)の後に発生する。キーシーケンス入力を参照のこと。
イベントの相対ピクセル座標(relative pixel
coordinates)。あるウィンドウのテキストエリア内でのイベントにたいする座標原点(0
. 0)
は、テキストエリアの左上隅となる。ウィンドウのサイズを参照のこと。モードライン、ヘッダーラインやタブライン内でのイベントにたいする座標原点は、そのウィンドウ自身の左上隅となる。フリンジ、マージン、垂直ボーダー(vertical
border)ではxは有意なデータをもたない。フリンジ、マージンではyはヘッダーラインの最下端からの相対位置である。すべてのケースにおいてxとyの座標はそれぞれ右方向と下方向で増加する。
そのイベントが発生した時刻をシステム依存の初期時刻(initial time)からの経過ミリ秒で表す整数。
nil
(バッファーテキスト上でイベントが発生したことを意味する)、イベント箇所にテキストプロパティやオーバーレイがあれば(string . string-pos)という形式のコンスセル。
クリックされた文字列。すべてのテキストプロパティを含む。
クリックが発生した文字列内の位置。
マージンエリアやフリンジにたいするクリックでは、そのウィンドウ内の対応する行内の最初の可視な文字のバッファー位置となる。モードライン、ヘッダーラインやタブラインにたいするクリックではnil
。他のイベントにたいしてはクリックされたバッファーのクリックされた最寄りの位置となる。
これらはx、yの位置にあるグリフ(gliph)の実際の行と列の座標数値である。行xがその行の実際のテキストの最後の列を超えるなら、colはデフォルトの文字幅をもつ仮想的な追加列数を加えた値が報告される。そのウィンドウがヘッダーラインをもてば行0はヘッダーライン、タブラインももてば行1はタブラインとなり、それ以外ならテキストエリアの上端ラインが行0となる。ウィンドウのテキストエリアのクリックにたいしては、テキストエリアの左端列が列0となり、モードラインまたはヘッダーラインのクリックにたいしてはそのラインの左端が列0となる。フリンジまたは垂直ボーダーのクリックにたいしては、これらは有意なデータをもたない。マージンのクリックにたいしては、colはマージンエリアの左端、rowはマージンエリアの上端から測られる。
クリック箇所にイメージがあればfind-image
がリターンするようなイメージオブジェクト(イメージの定義を参照)、それ以外はnil
。
クリック位置からもっとも近いobjectのグリフ左上隅からクリック位置への相対オフセット(ピクセル)。関係のあるobjectはバッファー、文字列、またはイメージ(上記参照)。objectがnil
か文字列なら、クリックされた文字グリフの左上隅からの相対座標。テキストモードのフレームではすべてのグリフのピクセルサイズは正確に1x1とみなされるので、objectがnil
ならオフセットは常に0になることに注意。
クリックがバッファーテキスト、あるいはオーバーレイ文字列やディスプレイ文字列の文字上の場合には、その文字のグリフのピクセル単位での幅と高さ。それ以外の場合にはクリックされたobjectのサイズ。
スクロールバーへのクリックにたいして、positionは以下の形式をもちます:
(window area (portion . whole) timestamp part)
スクロールバーがクリックされたウィンドウ。
これはシンボルvertical-scroll-bar
である。
スクロールバーの上端からクリック位置までのピクセル数。GTK+を含むいくつかのツールキットでは、Emacsがこれらのデータを抽出できないので値は常に0
。
スクロールバーの全長のピクセル数。GTK+を含むいくつかのツールキットでは、Emacsがこれらのデータを抽出できないので値は常に0
。
イベントが発生したミリ秒時刻。GTK+を含むいくつかのツールキットでは、Emacsがこれらのデータを抽出できないので値は常に0
。
クリックが発生したスクロールバー部分。これはシンボルhandle
(スクロールバーのハンドル)、above-handle
(ハンドルの上側エリア)、below-handle
(ハンドルの下側エリア)、up
(スクロールバー端の上矢印)、down
(スクロールバー端の下矢印)のいずれか。
フレームのインターナルボーダー(フレームのレイアウトを参照)、フレームのツールバー(ツールバーを参照)やタブバーにたいするクリックではpositionは以下の形式をもちます:
(frame part (X . Y) timestamp)
インターナルボーダー、ツールバー、またはタブバーがクリックされたフレーム。
クリックされたフレームの部分。以下のいずれか:
tool-bar
フレームにはツールバーがあり、イベントはツールバー領域。
tab-bar
フレームにはタブバーがあり、イベントはタブバー領域。
left-edge
top-edge
right-edge
bottom-edge
対応するボーダーの直近のコーナーから少なくとも1正規文字の範囲内がクリックされた。
top-left-corner
top-right-corner
bottom-right-corner
bottom-left-corner
インターナルボーダーの対応するコーナーがクリックされた。
nil
フレームにインターナルボーダーがなく、イベントがツールバーやタブバー上ではない。これは通常はテキストモードフレームで発生する。これは非nil
値にセットされたdrag-internal-border
パラメーター(マウスドラッグのパラメーターを参照)をもたないGUIフレームのインターナルボーダーでも発生し得る。