>>327
どういうものが良いのかよくわからないけど、minor-mode を適当に作ってみたよ。

(defvar hoge-orig-map nil)
(make-variable-buffer-local 'hoge-orig-map)

(define-minor-mode hoge-mode
"hoge minor mode"
:init-value nil
:lighter " Hoge"
:group 'hoge
(if hoge-mode
(condition-case err
(use-local-map
(progn
(push (current-local-map) hoge-orig-map)
(symbol-value
(intern
(completing-read
"Keymap: " obarray
(lambda (m) (and (boundp m) (keymapp (symbol-value m))))
t nil)))))
((error quit)
(setq hoge-orig-map nil
hoge-mode nil)))
(use-local-map (pop hoge-orig-map))))