ユーザーがマウスボタンを押し、同じ位置で離すと、クリックイベントが発生します。ウィンドウシステムがマウスホイールイベントをどのように報告するかによって、マウスホイールを回すとマウスクリックまたはマウスホイールイベントのいずれかが発生する場合があります。すべてのマウスイベントは共通の形式を持っています:
(event-type position click-count)
これは、どのマウスボタンが使用されたかを示す記号です。mouse-1、mouse-2、…
といった記号の一つで、ボタンには左から右へ番号が振られています。マウスホイールイベントの場合は、wheel-up または wheel-down となります。
また、ファンクションキーと同様に、修飾キー alt、control、hyper、meta、shift、super に対して、接頭辞 ‘A-’、‘C-’、‘H-’、‘M-’、‘S-’ および ‘s-’ を使用することもできます。
このシンボルは、イベントのイベントタイプとしても機能します。キーバインドはイベントをそのタイプで記述するため、mouse-1 のキーバインドがある場合、そのバインドは event-type が mouse-1
であるすべてのイベントに適用されます。
これはマウスイベントが発生した場所を指定するマウス位置リストです。詳細は以下を参照してください。
これは、同一のマウスボタンがこれまでに高速で繰り返し押された回数、またはホイールが繰り返し回転した回数です。リピートイベントを参照してください。
マウスイベントの 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
のいずれかの記号です。
特殊なケースとして、pos-or-area が単なるシンボルではなく、シンボル(上述のシンボルのいずれか)を含むリストとなる場合があります。これは、Emacs によってイベント用の仮想プレフィックスキーが登録された後に発生します。キーシーケンス入力を参照してください。
イベントの相対ピクセル座標。ウィンドウのテキスト領域内で発生するイベントの場合、座標原点 (0
. 0) はテキスト領域の左上隅とされます。ウィンドウサイズ
を参照してください。モードライン、ヘッダーライン、またはタブライン内で発生するイベントの場合、座標原点はウィンドウ自体の左上隅となります。フリンジ、マージン、および垂直ボーダーの場合、x には意味のあるデータがありません。フリンジおよびマージンの場合、y
はヘッダーラインの下端を基準とします。いずれの場合も、x および y 座標はそれぞれ右方向および下方向に増加します。
システム依存の初期時刻からのミリ秒単位の整数値で表される、イベント発生時刻。
バッファテキストでイベントが発生したことを示す nil
か、イベント位置にテキストプロパティの文字列またはオーバーレイが存在する場合の (string . string-pos)
形式のコンスセルのいずれか。
クリックされた文字列(プロパティを含む)。
クリックが発生した文字列上の位置。
余白領域や端部をクリックした場合、これはウィンドウ内の該当行で最初に視認できる文字のバッファ位置となります。モード行、ヘッダー行、またはタブ行をクリックした場合は
nil となります。その他のイベントの場合は、クリック位置に最も近いバッファ位置となります。
これらは、x、y 位置にあるグリフの実際の列および行の座標番号です。x が当該行の実際のテキストの最終列を超える場合、デフォルトの文字幅を持つ仮想的な追加列を加算して col が報告されます。行 0 は、ウィンドウにヘッダー行がある場合はその行、ウィンドウにタブ行もある場合は行 1、それ以外の場合はテキスト領域の最上行とみなされます。列 0 は、ウィンドウのテキスト領域へのクリックの場合はテキスト領域の最左列、それ以外の場合は最左のモード行またはヘッダー行の列とみなされます。フリンジや垂直境界へのクリックについては、意味のあるデータはありません。マージンへのクリックの場合、col はマージン領域の左端から、row はマージン領域の上端から測定されます。
クリック位置に画像がある場合は、find-image
によって返される画像オブジェクトとなります(画像の定義を参照)。そうでない場合は、nil となります。
これらは、クリック位置に最も近いobjectのグリフの左上隅を基準とした、クリック位置のピクセルオフセットです。関連するobjectは、バッファ、文字列、または画像のいずれかとなり得ます(上記参照)。objectがnilまたは文字列である場合、座標はクリックされた文字グリフの左上隅を基準とします。なお、テキストモードフレームにおいてobjectがnilである場合、各グリフの寸法はちょうど1x1ピクセルとみなされるため、オフセットは常に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 object)
内部ボーダー、ツールバー、タブバー、またはメニューバーがクリックされたフレーム。
フレーム内でクリックされた箇所。以下のいずれかになります:
tool-bar ¶フレームにはツールバーがあり、イベントはそのツールバー領域で発生しました。
tab-bar ¶フレームにはタブバーがあり、イベントはタブバー領域で発生しました。
menu-bar ¶このイベントはフレームのメニューバー領域で発生しました。このようなクリックイベントは、テキストのみのフレーム、あるいはツールキット非採用ビルドのEmacsにおけるXフレームでのみ発生し得ます。(ツールキット採用ビルドのEmacsでは、メニューバーのクリックはツールキットによって処理されるため、Emacs側ではクリックイベントとして認識されません。)
left-edgetop-edgeright-edgebottom-edgeクリックは、対応する境界線上の、境界線の最も近い角から少なくとも1文字分の正準文字分離れた位置にあった。
top-left-cornertop-right-cornerbottom-right-cornerbottom-left-cornerカチッという音は、内側の縁の対応する角で鳴った。
nilフレームに内部ボーダーがなく、イベントがタブバーやツールバーで発生しませんでした。これは通常、テキストモードのフレームで発生します。また、内部ボーダーを持つGUIフレームであっても、フレームのdrag-internal-borderパラメータ(マウスドラッグパラメータを参照)がnil以外の値に設定されていない場合にも、同様の現象が発生することがあります。
このメンバはタブバーのクリック時にのみ存在し、クリックされたボタンに関する情報を含むプロパティ付き文字列です。