XEmacs 21.2-b1
[chise/xemacs-chise.git.1] / lisp / term / vt-control.el
1 ;;; vt-control.el --- Common VTxxx control functions
2
3 ;; Copyright (C) 1993, 1994 Free Software Foundation, Inc.
4
5 ;; Author: Rob Riepel <riepel@networking.stanford.edu>
6 ;; Maintainer: Rob Riepel <riepel@networking.stanford.edu>
7 ;; Keywords: terminals
8
9 ;; This file is part of GNU Emacs.
10
11 ;; GNU Emacs is free software; you can redistribute it and/or modify
12 ;; it under the terms of the GNU General Public License as published by
13 ;; the Free Software Foundation; either version 2, or (at your option)
14 ;; any later version.
15
16 ;; GNU Emacs is distributed in the hope that it will be useful,
17 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 ;; GNU General Public License for more details.
20
21 ;; You should have received a copy of the GNU General Public License
22 ;; along with GNU Emacs; see the file COPYING.  If not, write to
23 ;; the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
24
25 ;;; Commentary:
26
27 ;;  The functions contained in this file send various VT control codes
28 ;;  to the terminal where emacs is running.  The following functions are
29 ;;  available.
30
31 ;;    Function           Action
32
33 ;;    vt-wide            set wide screen (132 characters)
34 ;;    vt-narrow          set narrow screen (80 characters)
35 ;;    vt-toggle-screen   toggle wide/narrow screen
36 ;;    vt-keypad-on       set applications keypad on
37 ;;    vt-keypad-off      set applications keypad off
38 ;;    vt-numlock         toggle applications keypad on/off
39
40 ;;; Usage:
41
42 ;;  To use enable these functions, simply load this file.
43
44 ;;  Note: vt-control makes no effort to determine how the terminal is
45 ;;        initially set.  It assumes the terminal starts with a width
46 ;;        of 80 characters and the applications keypad enabled.  Nor
47 ;;        does vt-control try to restore the terminal when emacs is
48 ;;        killed or suspended.
49
50 ;;; Code:
51
52
53 ;;;  Global variables
54
55 (defvar vt-applications-keypad-p t
56   "If non-nil, keypad is in applications mode.")
57
58 (defvar vt-wide-p nil
59   "If non-nil, the screen is 132 characters wide.")
60
61
62 ;;;  Screen width functions.
63
64 (defun vt-wide nil
65   "Set the screen 132 characters wide."
66   (interactive)
67   (send-string-to-terminal "\e[?3h")
68   (set-frame-width (selected-frame) 132)
69   (setq vt-wide-p t))
70
71 (defun vt-narrow nil
72   "Set the screen 80 characters wide."
73   (interactive)
74   (send-string-to-terminal "\e[?3l")
75   (set-frame-width (selected-frame) 80)
76   (setq vt-wide-p nil))
77
78 (defun vt-toggle-screen nil
79   "Toggle between 80 and 132 character screen width."
80   (interactive)
81   (if vt-wide-p (vt-narrow) (vt-wide)))
82
83
84 ;;;  Applications keypad functions.
85
86 (defun vt-keypad-on (&optional tell)
87   "Turn on the VT applications keypad."
88   (interactive)
89   (send-string-to-terminal "\e[\e=")
90   (setq vt-applications-keypad-p t)
91   (if (or tell (interactive-p)) (message "Applications keypad enabled.")))
92
93 (defun vt-keypad-off (&optional tell)
94   "Turn off the VT applications keypad."
95   (interactive "p")
96   (send-string-to-terminal "\e[\e>")
97   (setq vt-applications-keypad-p nil)
98   (if (or tell (interactive-p)) (message "Applications keypad disabled.")))
99
100 (defun vt-numlock nil
101   "Toggle VT application keypad on and off."
102   (interactive)
103   (if vt-applications-keypad-p (vt-keypad-off (interactive-p))
104     (vt-keypad-on (interactive-p))))
105
106 ;;; vt-control.el ends here