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

22.7.14 イベントの分類

すべてのイベントにはイベントタイプがあり、キーバインドの目的でイベントを分類します。キーボードイベントの場合、イベントタイプはイベント値と一致します。したがって、文字のイベントタイプはその文字となり、ファンクションキー記号のイベントタイプはその記号自体となります。リスト形式のイベントの場合、イベントタイプはリストのCARにある記号となります。このように、イベントタイプは常に記号または文字となります。

同一種類の2つのイベントは、キーバインドに関しては等価であり、したがって常に同じコマンドが実行されます。ただし、一部のコマンドはイベント全体を参照して動作を決定するため、必ずしも同じ処理が行われるとは限りません。例えば、マウスイベントの位置を利用して、バッファ内のどこで動作させるかを決定するコマンドもあります。

場合によっては、イベントをより広範に分類することが有用なこともあります。例えば、他にどのキーやマウスボタンが使用されたかにかかわらず、そのイベントにMETAキーが関与していたかどうかを確認したい場合などが考えられます。

こうした情報を手軽に取得できるよう、関数 event-modifiers と event-basic-type が用意されています。

関数: event-modifiers event

この関数は、event が持つモディファイアのリストを返します。モディファイアはシンボルであり、shift、control、meta、alt、hyper、super が含まれます。さらに、マウスイベントシンボルのモディファイアリストには、常に click、drag、down のいずれかが含まれます。ダブルまたはトリプルイベントの場合は、double または triple も含まれます。

引数 event は、イベントオブジェクト全体である場合もあれば、単にイベントタイプである場合もあります。現在の Emacs セッションで入力として読み込まれたイベントにおいて、event が一度も使用されたことのないシンボルである場合、event に実際に修飾子が付いていても、event-modifiers は nil を返すことができます。

以下にいくつか例を挙げます。

(event-modifiers ?a)
     ⇒ nil
(event-modifiers ?A)
     ⇒ (shift)
(event-modifiers ?\C-a)
     ⇒ (control)
(event-modifiers ?\C-%)
     ⇒ (control)
(event-modifiers ?\C-\S-a)
     ⇒ (control shift)
(event-modifiers 'f5)
     ⇒ nil
(event-modifiers 's-f5)
     ⇒ (super)
(event-modifiers 'M-S-f5)
     ⇒ (meta shift)
(event-modifiers 'mouse-1)
     ⇒ (click)
(event-modifiers 'down-mouse-1)
     ⇒ (down)

クリックイベントの修飾子リストには明示的に click が含まれていますが、イベントシンボル名自体には ‘click’ は含まれていません。同様に、‘C-a’ のような ASCII 制御文字の修飾子リストには control が含まれていますが、このようなイベントを read-char 経由で読み取ると、制御修飾子ビットが除去された値 1 が返されます。

関数: event-basic-type event

この関数は、event が指定するキーまたはマウスボタンから、すべての修飾子を取り除いたものを返します。引数 event は event-modifiers と同様です。例えば:

(event-basic-type ?a)
     ⇒ 97
(event-basic-type ?A)
     ⇒ 97
(event-basic-type ?\C-a)
     ⇒ 97
(event-basic-type ?\C-\S-a)
     ⇒ 97
(event-basic-type 'f5)
     ⇒ f5
(event-basic-type 's-f5)
     ⇒ f5
(event-basic-type 'M-S-f5)
     ⇒ f5
(event-basic-type 'down-mouse-1)
     ⇒ mouse-1
関数: mouse-movement-p object

この関数は、object がマウス移動イベントである場合に non-nil を返します。モーションイベントを参照してください。