123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123 |
- (eval-when-compile (require 'cl))
- (defvar tvi970-terminal-map
- (let ((map (make-sparse-keymap)))
-
- (dolist (key-binding
- '(
-
-
-
-
-
- ("\e[H" [home])
- ("\e[Z" [backtab])
- ("\e[i" [print])
- ("\e[@" [insert])
- ("\e[L" [insertline])
- ("\e[M" [deleteline])
- ("\e[U" [next])
-
- ("\eOm" [kp-subtract])
- ("\eOl" [kp-separator])
- ("\eOn" [kp-decimal])
- ("\eOM" [kp-enter])
-
- ("\e[K" [key_eol])
- ("\e[J" [key_eos])
- ("\e[2J" [key_clear])
- ("\e[P" [key_dc])
- ("\e[g" [S-tab])
- ("\e[2N" [clearentry])
- ("\e[2K" [S-clearentry])
- ("\e[E" [?\C-j])
- ("\e[g" [S-backtab])
- ("\e[?1i" [key_sprint])
- ("\e[4h" [key_sic])
- ("\e[4l" [S-delete])
- ("\e[Q" [S-insertline])
- ("\e[1Q" [key_sdl])
- ("\e[19l" [key_seol])
- ("\e[19h" [S-erasepage])
- ("\e[V" [S-page])
- ("\eS" [send])
- ("\e5" [S-send])
- ))
- (define-key map (car key-binding) (nth 1 key-binding)))
-
-
- (dotimes (i 10)
- (define-key map (format "\eO%c" (+ i ?p))
- (vector (intern (format "kp-%d" i)))))
-
- (dotimes (i 16)
- (define-key map (format "\e?%c" (+ i ?a))
- (vector (intern (format "f%d" (1+ i)))))
- (define-key map (format "\e?%c" (+ i ?A))
- (vector (intern (format "S-f%d" (1+ i))))))
- map))
- (defun terminal-init-tvi970 ()
- "Terminal initialization function for tvi970."
-
-
-
- (let ((m (copy-keymap tvi970-terminal-map)))
- (set-keymap-parent m (keymap-parent input-decode-map))
- (set-keymap-parent input-decode-map m))
- (tvi970-set-keypad-mode 1))
- (define-minor-mode tvi970-set-keypad-mode
- "Toggle alternate keypad mode on TVI 970 keypad.
- With a prefix argument ARG, enable the mode if ARG is positive,
- and disable it otherwise. If called from Lisp, enable the mode
- if ARG is omitted or nil.
- In ``alternate keypad mode'', the keys send distinct escape
- sequences, meaning that they can have their own bindings,
- independent of the normal number keys.
- When disabled, the terminal enters ``numeric keypad mode'', in
- which the keypad's keys act as ordinary digits."
- :variable (terminal-parameter nil 'tvi970-keypad-numeric)
- (send-string-to-terminal
- (if (terminal-parameter nil 'tvi970-keypad-numeric) "\e=" "\e>")))
|