0
+ − 1 ;;; vt100-led.el --- functions for LED control on VT-100 terminals & clones.
+ − 2
+ − 3 ;; Copyright (C) 1988 Free Software Foundation, Inc.
+ − 4
+ − 5 ;; Author: Howard Gayle
+ − 6 ;; Maintainer: FSF
+ − 7 ;; Keywords: hardware
+ − 8
+ − 9 ;; This file is part of XEmacs.
+ − 10
+ − 11 ;; XEmacs is free software; you can redistribute it and/or modify it
+ − 12 ;; 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 ;; XEmacs is distributed in the hope that it will be useful, but
+ − 17 ;; WITHOUT ANY WARRANTY; without even the implied warranty of
+ − 18 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ − 19 ;; General Public License for more details.
+ − 20
+ − 21 ;; You should have received a copy of the GNU General Public License
+ − 22 ;; along with XEmacs; see the file COPYING. If not, write to the Free
+ − 23 ;; Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
+ − 24
+ − 25 ;;; Code:
+ − 26
+ − 27 (defvar led-state (make-vector 5 nil)
+ − 28 "The internal state of the LEDs. Choices are nil, t, `flash.
+ − 29 Element 0 is not used.")
+ − 30
+ − 31 (defun led-flash (l)
+ − 32 "Flash LED l."
+ − 33 (aset led-state l 'flash)
+ − 34 (led-update))
+ − 35
+ − 36 (defun led-off (&optional l)
+ − 37 "Turn off vt100 led number L. With no argument, turn them all off."
+ − 38 (interactive "P")
+ − 39 (if l
+ − 40 (aset led-state (prefix-numeric-value l) nil)
+ − 41 (fillarray led-state nil))
+ − 42 (led-update))
+ − 43
+ − 44 (defun led-on (l)
+ − 45 "Turn on LED l."
+ − 46 (aset led-state l t)
+ − 47 (led-update))
+ − 48
+ − 49 (defun led-update ()
+ − 50 "Update the terminal's LEDs to reflect the internal state."
+ − 51 (let ((f "\e[?0") ; String to flash.
+ − 52 (o "\e[0") ; String for steady on.
+ − 53 (l 1)) ; Current LED number.
+ − 54 (while (/= l 5)
+ − 55 (let ((s (aref led-state l)))
+ − 56 (cond
+ − 57 ((eq s 'flash)
+ − 58 (setq f (concat f ";" (int-to-string l))))
+ − 59 (s
+ − 60 (setq o (concat o ";" (int-to-string l))))))
+ − 61 (setq l (1+ l)))
+ − 62 (setq o (concat o "q" f "t"))
+ − 63 (send-string-to-terminal o)))
+ − 64
+ − 65 (provide 'vt100-led)
+ − 66
+ − 67 ;;; vt100-led.el ends here