;;; xterm.el --- define function key sequences for xterm ;; Author: FSF ;; Keywords: terminals ;; Copyright (C) 1995 Free Software Foundation, Inc. ;; This file is part of SXEmacs. ;; SXEmacs is free software: you can redistribute it and/or modify ;; it under the terms of the GNU General Public License as published by ;; the Free Software Foundation, either version 3 of the License, or ;; (at your option) any later version. ;; SXEmacs is distributed in the hope that it will be useful, ;; but WITHOUT ANY WARRANTY; without even the implied warranty of ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ;; GNU General Public License for more details. ;; You should have received a copy of the GNU General Public License ;; along with this program. If not, see . ;;;; Code: ;; Termcap or terminfo should set these next four. (define-key function-key-map "\eOA" [up]) (define-key function-key-map "\eOB" [down]) (define-key function-key-map "\eOC" [right]) (define-key function-key-map "\eOD" [left]) ;; Termcap or terminfo should set these next four? (define-key function-key-map "\e[A" [up]) (define-key function-key-map "\e[B" [down]) (define-key function-key-map "\e[C" [right]) (define-key function-key-map "\e[D" [left]) (define-key function-key-map "\e[1;2A" [(shift up)]) (define-key function-key-map "\e[1;2B" [(shift down)]) (define-key function-key-map "\e[1;2C" [(shift right)]) (define-key function-key-map "\e[1;2D" [(shift left)]) (define-key function-key-map "\eO2A" [(shift up)]) (define-key function-key-map "\eO2B" [(shift down)]) (define-key function-key-map "\eO2C" [(shift right)]) (define-key function-key-map "\eO2D" [(shift left)]) (define-key function-key-map "\e[1;5A" [(control up)]) (define-key function-key-map "\e[1;5B" [(control down)]) (define-key function-key-map "\e[1;5C" [(control right)]) (define-key function-key-map "\e[1;5D" [(control left)]) (define-key function-key-map "\eO5A" [(control up)]) (define-key function-key-map "\eO5B" [(control down)]) (define-key function-key-map "\eO5C" [(control right)]) (define-key function-key-map "\eO5D" [(control left)]) (define-key function-key-map "\e[1;6A" [(control shift up)]) (define-key function-key-map "\e[1;6B" [(control shift down)]) (define-key function-key-map "\e[1;6C" [(control shift right)]) (define-key function-key-map "\e[1;6D" [(control shift left)]) (define-key function-key-map "\eO\000" [home]) (define-key function-key-map "\eOe" [end]) (define-key function-key-map "\e[1~" [home]) (define-key function-key-map "\eOH" [home]) (define-key function-key-map "\eOF" [end]) (define-key function-key-map "\e[H" [home]) (define-key function-key-map "\e[F" [end]) (define-key function-key-map "\e[1;2H" [(shift home)]) (define-key function-key-map "\e[1;2F" [(shift end)]) (define-key function-key-map "\eO2F" [(shift end)]) (define-key function-key-map "\eO2H" [(shift home)]) (define-key function-key-map "\e[1;5H" [(control home)]) (define-key function-key-map "\e[1;5F" [(control end)]) (define-key function-key-map "\eO5F" [(control end)]) (define-key function-key-map "\eO5H" [(control home)]) (define-key function-key-map "\e[1;6H" [(control shift home)]) (define-key function-key-map "\e[1;6F" [(control shift end)]) (define-key function-key-map "\e[1~" [find]) (define-key function-key-map "\e[4~" [select]) (define-key function-key-map "\e[2~" [insert]) (define-key function-key-map "\e[3~" [delete]) (define-key function-key-map "\e[5~" [prior]) (define-key function-key-map "\e[6~" [next]) (define-key function-key-map "\e[2;2~" [(shift insert)]) (define-key function-key-map "\e[3;2~" [(shift delete)]) (define-key function-key-map "\e[5;2~" [(shift prior)]) (define-key function-key-map "\e[6;2~" [(shift next)]) (define-key function-key-map "\e[2;5~" [(control insert)]) (define-key function-key-map "\e[3;5~" [(control delete)]) (define-key function-key-map "\e[5;5~" [(control prior)]) (define-key function-key-map "\e[6;5~" [(control next)]) (define-key function-key-map "\e[2;6~" [(control shift insert)]) (define-key function-key-map "\e[3;6~" [(control shift delete)]) (define-key function-key-map "\e[5;6~" [(control shift prior)]) (define-key function-key-map "\e[6;6~" [(control shift next)]) (define-key function-key-map "\e[11~" [f1]) (define-key function-key-map "\e[12~" [f2]) (define-key function-key-map "\e[13~" [f3]) (define-key function-key-map "\e[14~" [f4]) (define-key function-key-map "\e[15~" [f5]) (define-key function-key-map "\e[17~" [f6]) (define-key function-key-map "\e[18~" [f7]) (define-key function-key-map "\e[19~" [f8]) (define-key function-key-map "\e[20~" [f9]) (define-key function-key-map "\e[21~" [f10]) (define-key function-key-map "\e[23~" [f11]) (define-key function-key-map "\e[24~" [f12]) (define-key function-key-map "\e[25~" [f13]) (define-key function-key-map "\e[26~" [f14]) (define-key function-key-map "\e[28~" [help]) (define-key function-key-map "\e[29~" [menu]) ; FSF's xterm.el defines this like this: ; (I don't know which one is more correct) ;(define-key function-key-map "\e[29~" [print]) (define-key function-key-map "\e[31~" [f17]) (define-key function-key-map "\e[32~" [f18]) (define-key function-key-map "\e[33~" [f19]) (define-key function-key-map "\e[34~" [f20]) (define-key function-key-map "\eOp" [kp-0]) (define-key function-key-map "\eOq" [kp-1]) (define-key function-key-map "\eOr" [kp-2]) (define-key function-key-map "\eOs" [kp-3]) (define-key function-key-map "\eOt" [kp-4]) (define-key function-key-map "\eOu" [kp-5]) (define-key function-key-map "\eOv" [kp-6]) (define-key function-key-map "\eOw" [kp-7]) (define-key function-key-map "\eOx" [kp-8]) (define-key function-key-map "\eOy" [kp-9]) (define-key function-key-map "\eOk" [kp-add]) (define-key function-key-map "\eOm" [kp-subtract]) (define-key function-key-map "\eOM" [kp-enter]) (define-key function-key-map "\eOj" [kp-multiply]) (define-key function-key-map "\eOo" [kp-divide]) (define-key function-key-map "\eOn" [kp-decimal]) ;; If you use the X resource -- XTerm*sunFunctionKeys: on -- you may ;; need these. (define-key function-key-map "\e[224z" [f1]) (define-key function-key-map "\e[225z" [f2]) (define-key function-key-map "\e[226z" [f3]) (define-key function-key-map "\e[227z" [f4]) (define-key function-key-map "\e[228z" [f5]) (define-key function-key-map "\e[229z" [f6]) (define-key function-key-map "\e[230z" [f7]) (define-key function-key-map "\e[231z" [f8]) (define-key function-key-map "\e[232z" [f9]) (define-key function-key-map "\e[233z" [f10]) (define-key function-key-map "\e[234z" [f11]) (define-key function-key-map "\e[235z" [f12]) (define-key function-key-map "\e[194z" [(shift f1)]) (define-key function-key-map "\e[195z" [(shift f2)]) (define-key function-key-map "\e[196z" [(shift f3)]) (define-key function-key-map "\e[197z" [(shift f4)]) (define-key function-key-map "\e[198z" [(shift f5)]) (define-key function-key-map "\e[199z" [(shift f6)]) (define-key function-key-map "\e[200z" [(shift f7)]) (define-key function-key-map "\e[201z" [(shift f8)]) (define-key function-key-map "\e[208z" [(shift f9)]) (define-key function-key-map "\e[209z" [(shift f10)]) (define-key function-key-map "\e[210z" [(shift f11)]) (define-key function-key-map "\e[211z" [(shift f12)]) (define-key function-key-map "\e[2z" [insert]) (define-key function-key-map "\e[5z" [prior]) (define-key function-key-map "\e[6z" [next]) (define-key function-key-map "\eOP" [f1]) (define-key function-key-map "\eOQ" [f2]) (define-key function-key-map "\eOR" [f3]) (define-key function-key-map "\eOS" [f4]) (define-key function-key-map "\e[15~" [f5]) (define-key function-key-map "\e[17~" [f6]) (define-key function-key-map "\e[18~" [f7]) (define-key function-key-map "\e[19~" [f8]) (define-key function-key-map "\e[20~" [f9]) (define-key function-key-map "\e[21~" [f10]) (define-key function-key-map "\e[23~" [f11]) (define-key function-key-map "\e[24~" [f12]) (define-key function-key-map "\eO2P" [(shift f1)]) (define-key function-key-map "\eO2Q" [(shift f2)]) (define-key function-key-map "\eO2R" [(shift f3)]) (define-key function-key-map "\eO2S" [(shift f4)]) (define-key function-key-map "\e[1;2P" [(shift f1)]) (define-key function-key-map "\e[1;2Q" [(shift f2)]) (define-key function-key-map "\e[1;2R" [(shift f3)]) (define-key function-key-map "\e[1;2S" [(shift f4)]) (define-key function-key-map "\e[15;2~" [(shift f5)]) (define-key function-key-map "\e[17;2~" [(shift f6)]) (define-key function-key-map "\e[18;2~" [(shift f7)]) (define-key function-key-map "\e[19;2~" [(shift f8)]) (define-key function-key-map "\e[20;2~" [(shift f9)]) (define-key function-key-map "\e[21;2~" [(shift f10)]) (define-key function-key-map "\e[23;2~" [(shift f11)]) (define-key function-key-map "\e[24;2~" [(shift f12)]) (define-key function-key-map "\eO5P" [(control f1)]) (define-key function-key-map "\eO5Q" [(control f2)]) (define-key function-key-map "\eO5R" [(control f3)]) (define-key function-key-map "\eO5S" [(control f4)]) (define-key function-key-map "\e[15;5~" [(control f5)]) (define-key function-key-map "\e[17;5~" [(control f6)]) (define-key function-key-map "\e[18;5~" [(control f7)]) (define-key function-key-map "\e[19;5~" [(control f8)]) (define-key function-key-map "\e[20;5~" [(control f9)]) (define-key function-key-map "\e[21;5~" [(control f10)]) (define-key function-key-map "\e[23;5~" [(control f11)]) (define-key function-key-map "\e[24;5~" [(control f12)]) (define-key function-key-map "\eO6P" [(control shift f1)]) (define-key function-key-map "\eO6Q" [(control shift f2)]) (define-key function-key-map "\eO6R" [(control shift f3)]) (define-key function-key-map "\eO6S" [(control shift f4)]) (define-key function-key-map "\e[15;6~" [(control shift f5)]) (define-key function-key-map "\e[17;6~" [(control shift f6)]) (define-key function-key-map "\e[18;6~" [(control shift f7)]) (define-key function-key-map "\e[19;6~" [(control shift f8)]) (define-key function-key-map "\e[20;6~" [(control shift f9)]) (define-key function-key-map "\e[21;6~" [(control shift f10)]) (define-key function-key-map "\e[23;6~" [(control shift f11)]) (define-key function-key-map "\e[24;6~" [(control shift f12)]) ;; These keys are available in xterm starting from version 216 ;; if the modifyOtherKeys resource is set to 1. (define-key function-key-map "\e[27;5;9~" [(control tab)]) (define-key function-key-map "\e[27;5;13~" [(control return)]) (define-key function-key-map "\e[27;5;39~" [(control \')]) (define-key function-key-map "\e[27;5;44~" [(control \,)]) (define-key function-key-map "\e[27;5;45~" [(control \-)]) (define-key function-key-map "\e[27;5;46~" [(control \.)]) (define-key function-key-map "\e[27;5;47~" [(control /)]) (define-key function-key-map "\e[27;5;48~" [(control 0)]) (define-key function-key-map "\e[27;5;49~" [(control 1)]) ;; Not all C-DIGIT keys have a distinct binding. (define-key function-key-map "\e[27;5;57~" [(control 9)]) (define-key function-key-map "\e[27;5;59~" [(control \;)]) (define-key function-key-map "\e[27;5;61~" [(control \=)]) (define-key function-key-map "\e[27;5;92~" [(control \\ )]) (define-key function-key-map "\e[27;6;33~" [(control \!)]) (define-key function-key-map "\e[27;6;34~" [(control \")]) (define-key function-key-map "\e[27;6;35~" [(control \#)]) (define-key function-key-map "\e[27;6;36~" [(control \$)]) (define-key function-key-map "\e[27;6;37~" [(control \%)]) (define-key function-key-map "\e[27;6;38~" [(control \&)]) (define-key function-key-map "\e[27;6;40~" [(control \()]) (define-key function-key-map "\e[27;6;41~" [(control \))]) (define-key function-key-map "\e[27;6;42~" [(control \*)]) (define-key function-key-map "\e[27;6;43~" [(control \+)]) (define-key function-key-map "\e[27;6;58~" [(control \:)]) (define-key function-key-map "\e[27;6;60~" [(control \<)]) (define-key function-key-map "\e[27;6;62~" [(control \>)]) (define-key function-key-map "\e[27;6;63~" [(control \?)]) ;; These are the strings emitted for various C-M- combinations ;; for keyboards that the Meta and Alt modifiers are on the same ;; key (usually labeled "Alt"). (define-key function-key-map "\e[27;13;9~" [(control meta tab)]) (define-key function-key-map "\e[27;13;13~" [(control meta return)]) (define-key function-key-map "\e[27;13;39~" [(control meta \')]) (define-key function-key-map "\e[27;13;44~" [(control meta ,)]) (define-key function-key-map "\e[27;13;45~" [(control meta -)]) (define-key function-key-map "\e[27;13;46~" [(control meta \.)]) (define-key function-key-map "\e[27;13;47~" [(control meta /)]) (define-key function-key-map "\e[27;13;48~" [(control meta 0)]) (define-key function-key-map "\e[27;13;49~" [(control meta 1)]) (define-key function-key-map "\e[27;13;50~" [(control meta 2)]) (define-key function-key-map "\e[27;13;51~" [(control meta 3)]) (define-key function-key-map "\e[27;13;52~" [(control meta 4)]) (define-key function-key-map "\e[27;13;53~" [(control meta 5)]) (define-key function-key-map "\e[27;13;54~" [(control meta 6)]) (define-key function-key-map "\e[27;13;55~" [(control meta 7)]) (define-key function-key-map "\e[27;13;56~" [(control meta 8)]) (define-key function-key-map "\e[27;13;57~" [(control meta 9)]) (define-key function-key-map "\e[27;13;59~" [(control meta \;)]) (define-key function-key-map "\e[27;13;61~" [(control meta =)]) (define-key function-key-map "\e[27;13;92~" [(control meta \\)]) (define-key function-key-map "\e[27;14;33~" [(control meta !)]) (define-key function-key-map "\e[27;14;34~" [(control meta \")]) (define-key function-key-map "\e[27;14;35~" [(control meta \#)]) (define-key function-key-map "\e[27;14;36~" [(control meta $)]) (define-key function-key-map "\e[27;14;37~" [(control meta %)]) (define-key function-key-map "\e[27;14;38~" [(control meta &)]) (define-key function-key-map "\e[27;14;40~" [(control meta \()]) (define-key function-key-map "\e[27;14;41~" [(control meta \))]) (define-key function-key-map "\e[27;14;42~" [(control meta *)]) (define-key function-key-map "\e[27;14;43~" [(control meta +)]) (define-key function-key-map "\e[27;14;58~" [(control meta :)]) (define-key function-key-map "\e[27;14;60~" [(control meta <)]) (define-key function-key-map "\e[27;14;62~" [(control meta >)]) (define-key function-key-map "\e[27;14;63~" [(control meta \?)]) (define-key function-key-map "\e[27;7;9~" [(control meta tab)]) (define-key function-key-map "\e[27;7;13~" [(control meta return)]) (define-key function-key-map "\e[27;7;39~" [(control meta \')]) (define-key function-key-map "\e[27;7;44~" [(control meta ,)]) (define-key function-key-map "\e[27;7;45~" [(control meta -)]) (define-key function-key-map "\e[27;7;46~" [(control meta \.)]) (define-key function-key-map "\e[27;7;47~" [(control meta /)]) (define-key function-key-map "\e[27;7;48~" [(control meta 0)]) (define-key function-key-map "\e[27;7;49~" [(control meta 1)]) (define-key function-key-map "\e[27;7;50~" [(control meta 2)]) (define-key function-key-map "\e[27;7;51~" [(control meta 3)]) (define-key function-key-map "\e[27;7;52~" [(control meta 4)]) (define-key function-key-map "\e[27;7;53~" [(control meta 5)]) (define-key function-key-map "\e[27;7;54~" [(control meta 6)]) (define-key function-key-map "\e[27;7;55~" [(control meta 7)]) (define-key function-key-map "\e[27;7;56~" [(control meta 8)]) (define-key function-key-map "\e[27;7;57~" [(control meta 9)]) (define-key function-key-map "\e[27;7;59~" [(control meta \;)]) (define-key function-key-map "\e[27;7;61~" [(control meta =)]) (define-key function-key-map "\e[27;7;92~" [(control meta \\)]) (define-key function-key-map "\e[27;8;33~" [(control meta !)]) (define-key function-key-map "\e[27;8;34~" [(control meta \")]) (define-key function-key-map "\e[27;8;35~" [(control meta \#)]) (define-key function-key-map "\e[27;8;36~" [(control meta $)]) (define-key function-key-map "\e[27;8;37~" [(control meta %)]) (define-key function-key-map "\e[27;8;38~" [(control meta &)]) (define-key function-key-map "\e[27;8;40~" [(control meta \()]) (define-key function-key-map "\e[27;8;41~" [(control meta \))]) (define-key function-key-map "\e[27;8;42~" [(control meta *)]) (define-key function-key-map "\e[27;8;43~" [(control meta +)]) (define-key function-key-map "\e[27;8;58~" [(control meta :)]) (define-key function-key-map "\e[27;8;60~" [(control meta <)]) (define-key function-key-map "\e[27;8;62~" [(control meta >)]) (define-key function-key-map "\e[27;8;63~" [(control meta \?)]) (define-key function-key-map "\e[27;2;9~" [(shift tab)]) (define-key function-key-map "\e[27;2;13~" [(shift return)]) (define-key function-key-map "\e[27;6;9~" [(control shift tab)]) (define-key function-key-map "\e[27;6;13~" [(control shift return)]) ;;; xterm.el ends here