GNU Emacs 32.0.50 (9008bf64c3) のマニュアルを PLaMo 翻訳で機械翻訳したものです。誤訳を含むことがあります。原文: https://www.gnu.org/software/emacs/manual/html_node/elisp/Click-Events.html ・ emacs-doc.conao3.com

22.7.4 クリックイベント

ユーザーがマウスボタンを押し、同じ位置で離すと、クリックイベントが発生します。ウィンドウシステムがマウスホイールイベントをどのように報告するかによって、マウスホイールを回すとマウスクリックまたはマウスホイールイベントのいずれかが発生する場合があります。すべてのマウスイベントは共通の形式を持っています:

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

これは、どのマウスボタンが使用されたかを示す記号です。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

これはマウスイベントが発生した場所を指定するマウス位置リストです。詳細は以下を参照してください。

click-count

これは、同一のマウスボタンがこれまでに高速で繰り返し押された回数、またはホイールが繰り返し回転した回数です。リピートイベントを参照してください。

マウスイベントの position スロットにあるマウス位置リストの内容にアクセスするには、通常、マウスイベントへのアクセス に記載されている関数を使用します。

リストの明示的な形式は、イベントが発生した場所によって異なります。テキストエリア、モードライン、ヘッダーライン、タブライン、あるいはフリンジやマージン領域でのクリックの場合、マウス位置リストは以下の形式になります。

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

これらのリスト要素の意味は以下の通りです。

window

マウスイベントが発生したウィンドウ。

pos-or-area

テキストエリアでクリックされた文字のバッファ位置、またはイベントがテキストエリア外で発生した場合は、その発生したウィンドウ領域。mode-line、header-line、tab-line、vertical-line、left-margin、right-margin、left-fringe、right-fringe のいずれかの記号です。

特殊なケースとして、pos-or-area が単なるシンボルではなく、シンボル(上述のシンボルのいずれか)を含むリストとなる場合があります。これは、Emacs によってイベント用の仮想プレフィックスキーが登録された後に発生します。キーシーケンス入力を参照してください。

x, y

イベントの相対ピクセル座標。ウィンドウのテキスト領域内で発生するイベントの場合、座標原点 (0 . 0) はテキスト領域の左上隅とされます。ウィンドウサイズ を参照してください。モードライン、ヘッダーライン、またはタブライン内で発生するイベントの場合、座標原点はウィンドウ自体の左上隅となります。フリンジ、マージン、および垂直ボーダーの場合、x には意味のあるデータがありません。フリンジおよびマージンの場合、y はヘッダーラインの下端を基準とします。いずれの場合も、x および y 座標はそれぞれ右方向および下方向に増加します。

timestamp

システム依存の初期時刻からのミリ秒単位の整数値で表される、イベント発生時刻。

object

バッファテキストでイベントが発生したことを示す nil か、イベント位置にテキストプロパティの文字列またはオーバーレイが存在する場合の (string . string-pos) 形式のコンスセルのいずれか。

string

クリックされた文字列(プロパティを含む)。

string-pos

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

text-pos

余白領域や端部をクリックした場合、これはウィンドウ内の該当行で最初に視認できる文字のバッファ位置となります。モード行、ヘッダー行、またはタブ行をクリックした場合は nil となります。その他のイベントの場合は、クリック位置に最も近いバッファ位置となります。

col, row

これらは、x、y 位置にあるグリフの実際の列および行の座標番号です。x が当該行の実際のテキストの最終列を超える場合、デフォルトの文字幅を持つ仮想的な追加列を加算して col が報告されます。行 0 は、ウィンドウにヘッダー行がある場合はその行、ウィンドウにタブ行もある場合は行 1、それ以外の場合はテキスト領域の最上行とみなされます。列 0 は、ウィンドウのテキスト領域へのクリックの場合はテキスト領域の最左列、それ以外の場合は最左のモード行またはヘッダー行の列とみなされます。フリンジや垂直境界へのクリックについては、意味のあるデータはありません。マージンへのクリックの場合、col はマージン領域の左端から、row はマージン領域の上端から測定されます。

image

クリック位置に画像がある場合は、find-image によって返される画像オブジェクトとなります(画像の定義を参照)。そうでない場合は、nil となります。

dx, dy

これらは、クリック位置に最も近いobjectのグリフの左上隅を基準とした、クリック位置のピクセルオフセットです。関連するobjectは、バッファ、文字列、または画像のいずれかとなり得ます(上記参照)。objectがnilまたは文字列である場合、座標はクリックされた文字グリフの左上隅を基準とします。なお、テキストモードフレームにおいてobjectがnilである場合、各グリフの寸法はちょうど1x1ピクセルとみなされるため、オフセットは常に0となります。

width, height

クリック位置がバッファテキスト、オーバーレイ、または表示文字列のいずれかの文字上にある場合、これらはその文字のグリフのピクセル幅と高さとなります。それ以外の場合は、クリックされたobjectの寸法となります。

スクロールバーのクリック時、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(スクロールバーの一端にある下向き矢印)のいずれかの記号です。

フレームの内側の境界線(フレームレイアウトを参照)、フレームのツールバー(ツールバーを参照)、タブバー、またはメニューバーをクリックした場合、positionは以下の形式になります:

 (frame part (X . Y) timestamp object)
frame

内部ボーダー、ツールバー、タブバー、またはメニューバーがクリックされたフレーム。

part

フレーム内でクリックされた箇所。以下のいずれかになります:

tool-bar

フレームにはツールバーがあり、イベントはそのツールバー領域で発生しました。

tab-bar

フレームにはタブバーがあり、イベントはタブバー領域で発生しました。

menu-bar

このイベントはフレームのメニューバー領域で発生しました。このようなクリックイベントは、テキストのみのフレーム、あるいはツールキット非採用ビルドのEmacsにおけるXフレームでのみ発生し得ます。(ツールキット採用ビルドのEmacsでは、メニューバーのクリックはツールキットによって処理されるため、Emacs側ではクリックイベントとして認識されません。)

left-edge
top-edge
right-edge
bottom-edge

クリックは、対応する境界線上の、境界線の最も近い角から少なくとも1文字分の正準文字分離れた位置にあった。

top-left-corner
top-right-corner
bottom-right-corner
bottom-left-corner

カチッという音は、内側の縁の対応する角で鳴った。

nil

フレームに内部ボーダーがなく、イベントがタブバーやツールバーで発生しませんでした。これは通常、テキストモードのフレームで発生します。また、内部ボーダーを持つGUIフレームであっても、フレームのdrag-internal-borderパラメータ(マウスドラッグパラメータを参照)がnil以外の値に設定されていない場合にも、同様の現象が発生することがあります。

object

このメンバはタブバーのクリック時にのみ存在し、クリックされたボタンに関する情報を含むプロパティ付き文字列です。