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

22.9 特別イベント

特定の特殊イベントは、読み取られた直後に非常に低いレベルで処理されます。read-event関数はこれらのイベントを自ら処理し、決して返しません。その代わりに、特殊ではない最初のイベントを待ち続け、それを返します。

特殊イベントはエコーされず、キーシーケンスにまとめられることもなく、last-command-event や (this-command-keys) の値に現れることもありません。数値引数を破棄することはなく、unread-command-events で未読に戻すこともできず、キーボードマクロに現れることもなく、またキーボードマクロを定義している最中に記録されることもありません。

ただし、特殊イベントは読み込まれた直後にlast-input-eventに出現し、これによりイベントの定義が実際のイベントを特定する仕組みとなっています。

イベントタイプ iconify-frame、make-frame-visible、delete-frame、drag-n-drop、language-change や、sigusr1 のようなユーザーシグナルは、通常このように処理されます。特殊イベントの処理方法――およびどのイベントが特殊であるか――を定義するキーマップは、変数 special-event-map に格納されています(アクティブキーマップの制御 を参照)。これらやその他の特殊イベントの詳細については、その他のシステムイベント を参照してください。

関数: insert-special-event event

この関数は、入力イベントキューに特殊な event を挿入します。special-event-map キーマップに含まれるイベントタイプのみが受け付けられます。その結果、キーマップで指定されたハンドラが呼び出されます。

この関数は nil を返します。 例:

(defun my-event-handler (event)
  (interactive "e")
  (message "Event arrived: %S" event))
⇒ my-event-handler

(keymap-set special-event-map "<sleep-event>" #'my-event-handler)
⇒ my-event-handler

(insert-special-event '(sleep-event pre-sleep))
⇒ nil
⇒ "Event arrived: (sleep-event pre-sleep)"