;;; From the tmux FAQ: should allow some modified keys to pass through ;;; to Emacs (defadvice terminal-init-screen ;; The advice is named `tmux', and is run before `terminal-init-screen' runs. (before tmux activate) ;; Docstring. This describes the advice and is made available inside emacs; ;; for example when doing C-h f terminal-init-screen RET "Apply xterm keymap, allowing use of keys passed through tmux." ;; This is the elisp code that is run before `terminal-init-screen'. (if (getenv "TMUX") (let ((map (copy-keymap xterm-function-map))) (set-keymap-parent map (keymap-parent input-decode-map)) (set-keymap-parent input-decode-map map)))) ;;; From the Emacswiki: should allow some more modified keys to work ;;; in Emacs over ssh via PuTTY (if (eq system-uses-terminfo t) (progn ;; PuTTY hack - needs to be in SCO mode (define-key key-translation-map [\e] [\M]) (define-key input-decode-map "\e[H" [home]) (define-key input-decode-map "\e[F" [end]) (define-key input-decode-map "\e[D" [S-left]) (define-key input-decode-map "\e[C" [S-right]) (define-key input-decode-map "\e[A" [S-up]) (define-key input-decode-map "\e[B" [S-down]) (define-key input-decode-map "\e[C" [S-right]) (define-key input-decode-map "\e[I" [prior]) (define-key input-decode-map "\e[G" [next]) (define-key input-decode-map "\e[M" [f1]) (define-key input-decode-map "\e[Y" [S-f1]) (define-key input-decode-map "\e[k" [C-f1]) (define-key input-decode-map "\e\e[M" [M-f1]) (define-key input-decode-map "\e[N" [f2]) (define-key input-decode-map "\e[Z" [S-f2]) (define-key input-decode-map "\e[l" [C-f2]) (define-key input-decode-map "\e\e[N" [M-f2]) (define-key input-decode-map "\e[O" [f3]) (define-key input-decode-map "\e[a" [S-f3]) (define-key input-decode-map "\e[m" [C-f3]) (define-key input-decode-map "\e\e[O" [M-f3]) (define-key input-decode-map "\e[P" [f4]) (define-key input-decode-map "\e[b" [S-f4]) (define-key input-decode-map "\e[n" [C-f4]) (define-key input-decode-map "\e\e[P" [M-f4]) (define-key input-decode-map "\e[Q" [f5]) (define-key input-decode-map "\e[c" [S-f5]) (define-key input-decode-map "\e[o" [C-f5]) (define-key input-decode-map "\e\e[Q" [M-f5]) (define-key input-decode-map "\e[R" [f6]) (define-key input-decode-map "\e[d" [S-f6]) (define-key input-decode-map "\e[p" [C-f6]) (define-key input-decode-map "\e\e[R" [M-f6]) (define-key input-decode-map "\e[S" [f7]) (define-key input-decode-map "\e[e" [S-f7]) (define-key input-decode-map "\e[q" [C-f7]) (define-key input-decode-map "\e\e[S" [M-f7]) (define-key input-decode-map "\e[T" [f8]) (define-key input-decode-map "\e[f" [S-f8]) (define-key input-decode-map "\e[r" [C-f8]) (define-key input-decode-map "\e\e[T" [M-f8]) (define-key input-decode-map "\e[U" [f9]) (define-key input-decode-map "\e[g" [S-f9]) (define-key input-decode-map "\e[s" [C-f9]) (define-key input-decode-map "\e\e[U" [M-f9]) (define-key input-decode-map "\e[V" [f10]) (define-key input-decode-map "\e[h" [S-f10]) (define-key input-decode-map "\e[_" [C-f10]) (define-key input-decode-map "\e\e[V" [M-f10]) (define-key input-decode-map "\e[W" [f11]) (define-key input-decode-map "\e[i" [S-f11]) (define-key input-decode-map "\e[u" [C-f11]) (define-key input-decode-map "\e\e[W" [M-f11]) (define-key input-decode-map "\e[X" [f12]) (define-key input-decode-map "\e[j" [S-f12]) (define-key input-decode-map "\e[v" [C-f12]) (define-key input-decode-map "\e\e[X" [M-f12])))