Next: How do I tell what characters or symbols my function or arrow keys emit?, Previous: Why does Emacs say ‘Key sequence XXX uses invalid prefix characters’?, Up: Key bindings [Contents][Index]
During startup, Emacs initializes itself according to a given code/file order. If some of the code executed in your init file (see How do I set up an init file properly?) needs to be postponed until the initial terminal or window-system setup code has been executed but is not, then you will experience this problem (this code/file execution order is not enforced after startup).
To postpone the execution of Emacs Lisp code until after terminal or
window-system setup, treat the code as a lambda list and add it to
emacs-startup-hook
(or tty-setup-hook
in Emacs 24.4 and
newer). For example,
(add-hook 'emacs-startup-hook (lambda () (when (string-match "\\`vt220" (or (getenv "TERM") "")) ;; Make vt220's "Do" key behave like M-x: (global-set-key [do] 'execute-extended-command))))
For information on what Emacs does every time it is started, see the lisp/startup.el file.