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