;;; comint-mode will take care of it. The following example, from shell.el,
;;; is typical:
;;;
+;;; (defvar shell-mode-map '())
+;;; (cond ((not shell-mode-map)
+;;; (setq shell-mode-map (full-copy-sparse-keymap comint-mode-map))
+;;; (define-key shell-mode-map "\C-c\C-f" 'shell-forward-command)
+;;; (define-key shell-mode-map "\C-c\C-b" 'shell-backward-command)
+;;; (define-key shell-mode-map "\t" 'comint-dynamic-complete)
+;;; (define-key shell-mode-map "\M-?"
+;;; 'comint-dynamic-list-filename-completions)))
+;;;
;;; (defun shell-mode ()
;;; (interactive)
;;; (comint-mode)
;;; (setq comint-prompt-regexp shell-prompt-pattern)
;;; (setq major-mode 'shell-mode)
;;; (setq mode-name "Shell")
-;;; (cond ((not shell-mode-map)
-;;; (setq shell-mode-map (full-copy-sparse-keymap comint-mode-map))
-;;; (define-key shell-mode-map "\M-\t" 'comint-dynamic-complete)
-;;; (define-key shell-mode-map "\M-?"
-;;; 'comint-dynamic-list-filename-completions)))
;;; (use-local-map shell-mode-map)
;;; (make-local-variable 'shell-directory-stack)
;;; (setq shell-directory-stack nil)