[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

keyboards



    Date: Wed, 12 Aug 87 18:14 EDT
    From: Brad Miller <miller at DOUGHNUT.CS.ROCHESTER.EDU>

        Date: Wed 12 Aug 87 00:03:01-CDT
        From: CMP.LADAI@R20.UTEXAS.EDU

        (An aside: with compliments to Symbolics for their much improved keyboard
         that I now have with my 3620, what exactly IS the philosophy behind
         the extremely unique design of a Symbolics keyboard?)

What is "extremely unique?"

Well, the bucky keys on the new keyboards are too small.  Jeeze, what
do they think, that we've never seen a TV?

    The only complaint I can imagine is the position of the {} keys, which for TeX
    are pretty inaccessible, vs. the pretty accessible and less useful : and
    <backspace> keys... Maybe there's a way to move them? (are there hardware maps
    for such things?)

Ah.  I finally got tired of the altmode being in the stratosphere and
swapped it with the completely useless TAB key (I use c-I).  Here's
how it's done.  At the end are the forms to swap {} with the unshifted
() keys.

;;;	-*- Mode: LISP; Package: USER; Syntax: Common-lisp; -*-

;;;; Move some keys around

(defun set-kbd-hardware-table (hardware-character software-character)
  "Change HARDWARE-CHARACTER to generate SOFTWARE-CHARACTER.  Unfortunately, you
   have to know the index into the hardware kbd array; this is kbd-specific (sorry!).
   SOFTWARE-CHARACTER can be either a single character or a list of the
   symbol-shift permutations.
   This transformation can be undone via (SETQ KBD-NEW-TABLE (KBD-MAKE-NEW-TABLE))"
  ;; Bugs to Gumby@AI.AI.MIT.EDU
  (dotimes (shift 4)
    (setf (aref si:kbd-new-table shift hardware-character)
	  (typecase software-character
	    (character (char-int software-character))
	    (list (if (nth shift software-character)
		      (char-int (nth shift software-character))
		    #o140000))
	    (integer software-character)	; mainly for shifts
	    (t (error "Can't make keyboard entry for ~S" software-character))))))

;;; Make tab into a useful key:
(set-kbd-hardware-table #o70 '(#\escape #\ #\ #\))
(set-kbd-hardware-table #o120 #\tab)

;;; Sometimes I forget and type shift:
(set-kbd-hardware-table #o24 '(#\. #\> #\ #\))
(set-kbd-hardware-table #o34 '(#\, #\< #\ #\))
(set-kbd-hardware-table #o116 '(#\` #\~ #\ #\))

;;; Swap the ( and {, ) and }.  () are the non-numeric (unshifted) ones
(set-kbd-hardware-table #o76  '(#\{ #\[))
(set-kbd-hardware-table #o66  '(#\} #\]))
(set-kbd-hardware-table #o107 '(#\\ #\())
(set-kbd-hardware-table #o117 '(#\| #\)))