key-binding
現在アクティブなキーマップのキーを調べます。ミニバッファのようなキーマップやisearch-mode-map
、定義されたキーの限られたセット以外のキーをユーザーが押すとすぐに制限的で非アクティブになるキーマップの場合、key-binding
それらのキーマップを非アクティブ化せずに呼び出すことはできません。
方法:
ソース コードの分析を伴わない方法で、特定のコマンドを呼び出した後に有効になるキーマップを決定します (たとえば、
isearch-mode-map
によってオーバーライド ローカル マップとして設定されます)。isearch-forward-regexp
変数の状態を追跡/記録するために使用できるフックはありますか?これらのキーマップのキーをプローブします。たとえば、何に
RET
バインドされていisearch-mode-map
ますか?
私の最も近い解決策は、この関数をバインドすることでした:
(defun probe_keybinding ()
(interactive)
(message (prin1-to-string (key-binding (read-key-sequence-vector "Enter key to probe"))))
)
'S-f9' のような珍しいキーに変更し、関心のあるキーマップがアクティブなときに呼び出します (たとえば、ミニバッファーの afind-file
や aの途中eval-expression
)。これは常に機能するとは限りません。たとえば、isearch-forward-regexp
認識されないキーが入力されるとすぐに終了します。