|
|
1.1 root 1: ;; Map s4 function key escape sequences
2: ;; into the standard slots in function-keymap where we can;
3: ;; set up terminal-specific bindings where we must
4: ;;
5: ;; by: Eric S. Raymond == {ihnp4,rutgers,seismo}!cbmvax!snark!eric
6:
7: (require 'keypad)
8:
9: ;; First, map as many keys as possible to terminal-independent keycaps
10:
11: (defvar META-RB-map nil
12: "The META-RB-map maps the ESC-[ function keys on the s4 keyboard.")
13:
14: (if (not META-RB-map)
15: (progn
16: (setq META-RB-map (lookup-key global-map "\e["))
17: (if (not (keymapp META-RB-map))
18: (setq META-RB-map (make-sparse-keymap))) ;; <ESC>[ commands
19:
20: (setup-terminal-keymap META-RB-map
21: '(("A" . ?u) ; up arrow
22: ("B" . ?d) ; down-arrow
23: ("C" . ?r) ; right-arrow
24: ("D" . ?l) ; left-arrow
25: ("U" . ?N) ; 'Page' -> next page
26: ("V" . ?P) ; 'Shift-Page' -> prev page
27: ("H" . ?h) ; 'Home' -> home-key
28: ;; ("J" . ??) ; 'Clear' -> unmapped
29: ))))
30:
31: (defun enable-arrow-keys ()
32: "Enable the use of the s4 arrow keys for cursor motion.
33: Because of the nature of the s4, this unavoidably breaks
34: the standard Emacs command ESC [; therefore, it is not done by default,
35: but only if you give this command in your .emacs."
36: (global-set-key "\e[" META-RB-map))
37:
38: (defvar META-N-map nil
39: "META-N-map maps the ESC-N function keys on the s4 keyboard.")
40:
41: (if (not META-N-map)
42: (progn
43:
44: (setq META-N-map (lookup-key global-map "\eN"))
45: (if (not (keymapp META-N-map))
46: (setq META-N-map (make-sparse-keymap))) ;; <ESC>N commands
47: (setup-terminal-keymap META-N-map '(
48: ("a" . ?C) ; 'Rfrsh' -> redraw screen
49: ;; ("A" . ??) ; 'Clear' -> unmapped
50: ;; ("c" . ??) ; 'Move' -> unmapped
51: ;; ("d" . ??) ; 'Copy' -> unmapped
52: ;; ("B" . ??) ; 'Shift-Beg' -> unmapped
53: ;; ("M" . ??) ; 'Shift-Home' -> unmapped
54: ;; ("N" . ??) ; 'Shift-End' -> unmapped
55: ("e" . ?k) ; 'Dlete' -> generic delete (kill-region)
56: ("f" . ?.) ; 'Dlete Char' -> keypad .
57: ("g" . ?1) ; 'Prev' -> keypad 1 (backward-word)
58: ("h" . ?3) ; 'Next' -> keypad 3 (forward-word)
59: ("i" . ?s) ; 'Mark' -> select
60: ;; ("I" . ??) ; 'Select' -> MAPPED BELOW
61: ;; ("j" . ??) ; 'Input Mode' -> unmapped
62: ))
63:
64: (define-key global-map "\eN" META-N-map)))
65:
66: (defvar META-O-map nil
67: "META-O-map maps the META-O function keys on the s4 keyboard.")
68:
69: (if (not META-O-map)
70: (progn
71:
72: (setq META-O-map (lookup-key global-map "\eO"))
73: (if (not (keymapp META-O-map))
74: (setq META-O-map (make-sparse-keymap))) ;; <ESC>O commands
75: (setup-terminal-keymap META-O-map '(
76: ("a" . ?E) ; 'Clear-Line' -> Clear to EOL
77: ("A" . ?S) ; 'Shift-Clear-Line' -> Clear to EOS
78: ("b" . ?\C-@) ; 'Ref' -> function key 0
79: ("c" . ?\C-a) ; 'F1' -> function key 1
80: ("d" . ?\C-b) ; 'F2' -> function key 2
81: ("e" . ?\C-c) ; 'F3' -> function key 3
82: ("f" . ?\C-d) ; 'F4' -> function key 4
83: ("g" . ?\C-e) ; 'F5' -> function key 5
84: ("h" . ?\C-f) ; 'F6' -> function key 6
85: ("i" . ?\C-g) ; 'F7' -> function key 7
86: ("j" . ?\C-h) ; 'F8' -> function key 8
87: ;; ("k" . ??) ; 'Exit' -> MAPPED BELOW
88: ("m" . ??) ; 'Help' -> help-command
89: ;; ("n" . ??) ; 'Creat' -> unmapped
90: ;; ("o" . ??) ; 'Save' -> MAPPED BELOW
91: ;; ("r" . ??) ; 'Opts' -> unmapped
92: ;; ("s" . ??) ; 'Undo' -> MAPPED BELOW
93: ("t" . ?x) ; 'Redo' -> 'do' key
94: ;; ("u" . ??) ; 'Cmd' -> MAPPED BELOW
95: ;; ("v" . ??) ; 'Open' -> MAPPED BELOW
96: ;; ("V" . ??) ; 'Close' -> unmapped
97: ;; ("w" . ??) ; 'Cancel' -> MAPPED BELOW
98: ("x" . ?f) ; 'Find' -> find/replace
99: ;; ("y" . ??) ; 'Rplac' -> MAPPED BELOW
100: ;; ("z" . ??) ; 'Print' -> MAPPED BELOW
101: ))
102:
103: (define-key global-map "\eO" META-O-map)))
104:
105: (defvar META-P-map nil
106: "META-P-map maps the META-P function keys on the s4 keyboard.")
107:
108: (if (not META-P-map)
109: (progn
110:
111: (setq META-P-map (lookup-key global-map "\eP"))
112: (if (not (keymapp META-P-map))
113: (setq META-P-map (make-sparse-keymap))) ;; <ESC>P commands
114: (setup-terminal-keymap META-P-map '(
115: ("a" . ?1) ; Ctrl-1 -> keypad 1
116: ("b" . ?2) ; Ctrl-2 -> keypad 2
117: ("c" . ?3) ; Ctrl-3 -> keypad 3
118: ("d" . ?4) ; Ctrl-4 -> keypad 4
119: ("e" . ?5) ; Ctrl-5 -> keypad 5
120: ("f" . ?6) ; Ctrl-6 -> keypad 6
121: ("g" . ?7) ; Ctrl-7 -> keypad 7
122: ("h" . ?8) ; Ctrl-8 -> keypad 8
123: ("i" . ?9) ; Ctrl-9 -> keypad 9
124: ("j" . ?0) ; Ctrl-0 -> keypad 0
125: ("k" . ?-) ; Ctrl-- -> keypad -
126: ))
127:
128: (define-key global-map "\eP" META-P-map)))
129:
130: ;; Now do terminal-specific mappings of keys with no standard-keycap equivalent
131:
132: ;;;(define-key esc-map "9" 'beginning-of-buffer) ;'Begin'
133: ;;;(define-key esc-map "0" 'end-of-buffer) ;'End'
134: (define-key META-N-map "I" 'narrow-to-region) ;'Select'
135: (define-key META-O-map "k" 'save-buffers-kill-emacs) ;'Exit'
136: (define-key META-O-map "o" 'save-buffer) ;'Save'
137: (define-key META-O-map "s" 'undo) ;'Undo'
138: (define-key META-O-map "u" 'execute-extended-command) ;'Cmd'
139: (define-key META-O-map "v" 'find-file) ;'Open'
140: (define-key META-O-map "w" 'keyboard-quit) ;'Cancl'
141: (define-key META-O-map "y" 'replace-regexp) ;'Rplac'
142: (define-key META-O-map "z" 'lpr-buffer) ;'Print'
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.